71 lines
1.6 KiB
Nix
71 lines
1.6 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}: {
|
|
options = {
|
|
ezServices = with lib;
|
|
mkOption {
|
|
type = with types; attrsOf str;
|
|
default = {};
|
|
};
|
|
|
|
ezOneShots = with lib;
|
|
mkOption {
|
|
type = with types; attrsOf str;
|
|
default = {};
|
|
};
|
|
ezConf = with lib;
|
|
mkOption {
|
|
type = with types; attrsOf path;
|
|
default = {};
|
|
};
|
|
|
|
# for specifying an additional systemd target
|
|
extraTarget = with lib;
|
|
mkOption {
|
|
type = with types; listOf str;
|
|
default = [];
|
|
};
|
|
};
|
|
|
|
config = rec {
|
|
systemd.user.services = with pkgs;
|
|
builtins.mapAttrs (name: cmd: {
|
|
Unit = {
|
|
Description = "${name}";
|
|
Requires = ["graphical-session.target"] ++ config.extraTarget;
|
|
After = ["graphical-session.target"] ++ config.extraTarget;
|
|
};
|
|
Service = {
|
|
ExecStart = cmd;
|
|
};
|
|
Install = {
|
|
WantedBy = ["graphical-session.target"] ++ config.extraTarget;
|
|
};
|
|
})
|
|
config.ezServices
|
|
// builtins.mapAttrs (name: cmd: {
|
|
Unit = {
|
|
Description = "${name}";
|
|
After = ["graphical-session.target"] ++ config.extraTarget;
|
|
};
|
|
Service = {
|
|
ExecStart = cmd;
|
|
Type = "oneshot";
|
|
};
|
|
Install = {
|
|
WantedBy = ["graphical-session.target"] ++ config.extraTarget;
|
|
};
|
|
})
|
|
config.ezOneShots;
|
|
|
|
xdg.configFile =
|
|
builtins.mapAttrs (name: value: {
|
|
enable = true;
|
|
source = value;
|
|
})
|
|
config.ezConf;
|
|
};
|
|
}
|