summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoru <u@billy>2022-01-10 17:18:24 -0500
committeru <u@billy>2022-01-10 17:18:24 -0500
commitec32f51b2d7d166b891c30961931984bdefdd32b (patch)
treed447a2798fe53ae882c6ca5bca7f0137b70d3d2a
parent3359c26fa34832ba3fed64b3dd6f7ef2796ec18f (diff)
fix long-standing bug where skel-files did not work
-rw-r--r--fsmgr.hs12
1 files changed, 7 insertions, 5 deletions
diff --git a/fsmgr.hs b/fsmgr.hs
index 1c898e3..ed09669 100644
--- a/fsmgr.hs
+++ b/fsmgr.hs
@@ -176,14 +176,14 @@ buildRoot config@DiskImageConfig{..} finalOut = do
176 forM_ (unpack <$> binaries) go 176 forM_ (unpack <$> binaries) go
177 forM_ (unpack <$> optionalBinaries) $ ignoreErrors . go 177 forM_ (unpack <$> optionalBinaries) $ ignoreErrors . go
178 {- 3.5 skel -} 178 {- 3.5 skel -}
179 let go f = do 179 let go f = when (not $ null f) $ do
180 homeDir <- getHomeDir 180 homeDir <- getHomeDir
181 target <- absPath mountpoint <&> (</> "etc/skel") 181 target <- absPath mountpoint <&> (</> "etc/skel")
182 cmd_ "mkdir -p" [target] 182 cmd_ "mkdir -p" [target]
183 cmd_ (Cwd homeDir) "cp -r --preserve=mode,timestamps -L --parents -t" [target] [f] 183 cmd_ (Cwd homeDir) "cp -r --preserve=mode,timestamps -L --parents -t" [target] f
184 in do 184 in do
185 forM_ (unpack <$> skelFiles) go 185 go $ toList (unpack <$> skelFiles)
186 forM_ (unpack <$> optionalSkelFiles) $ ignoreErrors . go 186 ignoreErrors . go $ toList (unpack <$> optionalSkelFiles)
187 {- 3.6 systemd unit files -} 187 {- 3.6 systemd unit files -}
188 let go s = do 188 let go s = do
189 target <- absPath mountpoint <&> (</> "etc/systemd/system") 189 target <- absPath mountpoint <&> (</> "etc/systemd/system")
@@ -224,8 +224,10 @@ absPath f = do
224 224
225getHomeDir :: Action FilePath 225getHomeDir :: Action FilePath
226getHomeDir = do 226getHomeDir = do
227 Stdout homeDir <- cmd "sh -c" ["if [ \"$SUDO_USER\" ]; then getent passwd \"$SUDO_USER\" | cut -d: -f6; else printf \"%s\n\" \"$HOME\"; fi"] 227 Stdout homeDir <- cmd "sh -c" [script]
228 return homeDir 228 return homeDir
229 where
230 script = "if [ \"$SUDO_USER\" ]; then getent passwd \"$SUDO_USER\" | cut -z -d: -f6; else printf \"%s\\0\" \"$HOME\"; fi | xargs -0 printf %s"
229 231
230readFileOptional :: FilePath -> IO (String) 232readFileOptional :: FilePath -> IO (String)
231readFileOptional f = IO.doesFileExist f >>= \case 233readFileOptional f = IO.doesFileExist f >>= \case