nix/home/util/ez.nix
2024-05-08 15:05:43 +10:00

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;
};
}