mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-11 04:05:40 +03:00
nixos/systemd-lib: Use module composition
This commit is contained in:
parent
fc91cdb5bc
commit
1e5261f31c
2 changed files with 21 additions and 19 deletions
|
@ -291,49 +291,51 @@ in rec {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
mkServiceConfig = path: { name, config, ... }: {
|
serviceConfig = { name, config, ... }: {
|
||||||
config = mkMerge
|
config = mkMerge
|
||||||
[ {
|
[ {
|
||||||
path = mkAfter path;
|
|
||||||
environment.PATH = mkIf (config.path != []) "${makeBinPath config.path}:${makeSearchPathOutput "bin" "sbin" config.path}";
|
environment.PATH = mkIf (config.path != []) "${makeBinPath config.path}:${makeSearchPathOutput "bin" "sbin" config.path}";
|
||||||
}
|
}
|
||||||
(mkIf (config.preStart != "")
|
(mkIf (config ? preStart && config.preStart != "")
|
||||||
{ serviceConfig.ExecStartPre =
|
{ serviceConfig.ExecStartPre =
|
||||||
[ (makeJobScript "${name}-pre-start" config.preStart) ];
|
[ (makeJobScript "${name}-pre-start" config.preStart) ];
|
||||||
})
|
})
|
||||||
(mkIf (config.script != "")
|
(mkIf (config ? script && config.script != "")
|
||||||
{ serviceConfig.ExecStart =
|
{ serviceConfig.ExecStart =
|
||||||
makeJobScript "${name}-start" config.script + " " + config.scriptArgs;
|
makeJobScript "${name}-start" config.script + " " + config.scriptArgs;
|
||||||
})
|
})
|
||||||
(mkIf (config.postStart != "")
|
(mkIf (config ? postStart && config.postStart != "")
|
||||||
{ serviceConfig.ExecStartPost =
|
{ serviceConfig.ExecStartPost =
|
||||||
[ (makeJobScript "${name}-post-start" config.postStart) ];
|
[ (makeJobScript "${name}-post-start" config.postStart) ];
|
||||||
})
|
})
|
||||||
(mkIf (config.reload != "")
|
(mkIf (config ? reload && config.reload != "")
|
||||||
{ serviceConfig.ExecReload =
|
{ serviceConfig.ExecReload =
|
||||||
makeJobScript "${name}-reload" config.reload;
|
makeJobScript "${name}-reload" config.reload;
|
||||||
})
|
})
|
||||||
(mkIf (config.preStop != "")
|
(mkIf (config ? preStop && config.preStop != "")
|
||||||
{ serviceConfig.ExecStop =
|
{ serviceConfig.ExecStop =
|
||||||
makeJobScript "${name}-pre-stop" config.preStop;
|
makeJobScript "${name}-pre-stop" config.preStop;
|
||||||
})
|
})
|
||||||
(mkIf (config.postStop != "")
|
(mkIf (config ? postStart && config.postStop != "")
|
||||||
{ serviceConfig.ExecStopPost =
|
{ serviceConfig.ExecStopPost =
|
||||||
makeJobScript "${name}-post-stop" config.postStop;
|
makeJobScript "${name}-post-stop" config.postStop;
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Default path for systemd services. Should be quite minimal.
|
stage2ServiceConfig = {
|
||||||
serviceConfig = mkServiceConfig [
|
imports = [ serviceConfig ];
|
||||||
pkgs.coreutils
|
# Default path for systemd services. Should be quite minimal.
|
||||||
pkgs.findutils
|
config.path = mkAfter [
|
||||||
pkgs.gnugrep
|
pkgs.coreutils
|
||||||
pkgs.gnused
|
pkgs.findutils
|
||||||
systemd
|
pkgs.gnugrep
|
||||||
];
|
pkgs.gnused
|
||||||
|
systemd
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
initrdServiceConfig = mkServiceConfig [];
|
stage1ServiceConfig = serviceConfig;
|
||||||
|
|
||||||
mountConfig = { config, ... }: {
|
mountConfig = { config, ... }: {
|
||||||
config = {
|
config = {
|
||||||
|
|
|
@ -11,8 +11,8 @@ rec {
|
||||||
config = { unit = mkDefault (systemdUtils.lib.makeUnit name config); };
|
config = { unit = mkDefault (systemdUtils.lib.makeUnit name config); };
|
||||||
}));
|
}));
|
||||||
|
|
||||||
services = with types; attrsOf (submodule [ { options = serviceOptions; } unitConfig serviceConfig ]);
|
services = with types; attrsOf (submodule [ { options = serviceOptions; } unitConfig stage2ServiceConfig ]);
|
||||||
initrdServices = with types; attrsOf (submodule [ { options = serviceOptions; } unitConfig initrdServiceConfig ]);
|
initrdServices = with types; attrsOf (submodule [ { options = serviceOptions; } unitConfig stage1ServiceConfig ]);
|
||||||
|
|
||||||
targets = with types; attrsOf (submodule [ { options = targetOptions; } unitConfig ]);
|
targets = with types; attrsOf (submodule [ { options = targetOptions; } unitConfig ]);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue