From da4c955eeb534c799b1a7378dc4d5dfaad2d21c2 Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Sun, 28 Feb 2021 07:37:01 -0500 Subject: config option "unit-files:" for systemd unit files --- fsmgr.hs | 7 +++++++ src/ConfigFile.hs | 4 +++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/fsmgr.hs b/fsmgr.hs index 70486a4..837293e 100644 --- a/fsmgr.hs +++ b/fsmgr.hs @@ -178,6 +178,13 @@ buildRoot config@DiskImageConfig{..} finalOut = do in do forM_ (unpack <$> skelFiles) go forM_ (unpack <$> optionalSkelFiles) $ ignoreErrors . go + {- 3.6 systemd unit files -} + let go s = do + target <- absPath mountpoint <&> ( "etc/systemd/system") + cmd_ "mkdir -p" [target] + cmd_ "install --preserve-timestamps -m644 -t" [target] [s] + go :: String -> Action () + in forM_ (unpack <$> unitFiles) go {- 4. custom setup commands -} forM_ chrootCommands $ \c -> do cmd_ "chroot" [mountpoint] "/bin/sh -c" [unpack c] diff --git a/src/ConfigFile.hs b/src/ConfigFile.hs index a5b5989..d7fe60d 100644 --- a/src/ConfigFile.hs +++ b/src/ConfigFile.hs @@ -56,6 +56,7 @@ data DiskImageConfig = DiskImageConfig { , packages :: Set Package , debconfConfig :: Maybe FilePath , unpackOnly :: Bool +, unitFiles :: Vector Text , binaries :: Vector Text , optionalBinaries :: Vector Text , chrootCommands :: Vector Text @@ -75,6 +76,7 @@ diskImageConfigParser = object $ <*> (Set.fromList . toList . fmap parsePackageName <$> defaultField "packages" Vector.empty (array string)) <*> (fmap unpack <$> optField "debconf" string) <*> defaultField "unpack-only" False bool + <*> defaultField "unit-files" Vector.empty (array string) <*> defaultField "binaries" Vector.empty (array string) <*> defaultField "binaries-optional" Vector.empty (array string) <*> defaultField "chroot-commands" Vector.empty (array string) @@ -84,7 +86,7 @@ diskImageConfigParser = object $ <*> defaultField "apt-update" False bool convSeeded :: DiskImageConfig -> DiskImageConfig -convSeeded x@(DiskImageConfig (ParentImageConfigFile f) _ _ _ _ _ _ _ _ (Just size) _) = x { initialImage = SeededImage size f } +convSeeded x@(DiskImageConfig (ParentImageConfigFile f) _ _ _ _ _ _ _ _ _ (Just size) _) = x { initialImage = SeededImage size f } convSeeded x = x readCfg :: FilePath -> Action DiskImageConfig -- cgit v1.2.3