From 88e2cc480f588be7514ea3953c42facd34e0f123 Mon Sep 17 00:00:00 2001 From: Moritz Ulrich Date: Thu, 24 Mar 2016 15:27:47 +0100 Subject: [PATCH] systemd.generator-packages: Option to specify packages providing generators. --- nixos/modules/system/boot/systemd.nix | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/nixos/modules/system/boot/systemd.nix b/nixos/modules/system/boot/systemd.nix index a3c83521c35..244a4cd61f0 100644 --- a/nixos/modules/system/boot/systemd.nix +++ b/nixos/modules/system/boot/systemd.nix @@ -472,6 +472,13 @@ in ''; }; + systemd.generator-packages = mkOption { + default = []; + type = types.listOf types.package; + example = literalExample "[ pkgs.systemd-cryptsetup-generator ]"; + description = "Packages providing systemd generators."; + }; + systemd.defaultUnit = mkOption { default = "multi-user.target"; type = types.str; @@ -628,7 +635,13 @@ in environment.systemPackages = [ systemd ]; - environment.etc = { + environment.etc = let + generators = (fold (p: attrs: let path = "${p}/lib/systemd/system-generators"; + in attrs // (mapAttrs' (name: _: nameValuePair name "${path}/${toString name}") + (builtins.readDir "${path}"))) + cfg.generators + cfg.generator-packages); + in ({ "systemd/system".source = generateUnits "system" cfg.units upstreamSystemUnits upstreamSystemWants; "systemd/user".source = generateUnits "user" cfg.user.units upstreamUserUnits []; @@ -667,7 +680,7 @@ in ${concatStringsSep "\n" cfg.tmpfiles.rules} ''; - } // mapAttrs' (n: v: nameValuePair "systemd/system-generators/${n}" {"source"=v;}) cfg.generators; + } // mapAttrs' (n: v: nameValuePair "systemd/system-generators/${n}" {"source"=v;}) generators); system.activationScripts.systemd = stringAfter [ "groups" ] ''