59 lines
1.4 KiB
Nix
59 lines
1.4 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
...
|
|
}:
|
|
{
|
|
config.hm.options = {
|
|
quickServices =
|
|
with lib;
|
|
mkOption {
|
|
type = with types; attrsOf str;
|
|
default = { };
|
|
};
|
|
|
|
quickOneShots =
|
|
with lib;
|
|
mkOption {
|
|
type = with types; attrsOf str;
|
|
default = { };
|
|
};
|
|
# for specifying an additional systemd target
|
|
extraTarget =
|
|
with lib;
|
|
mkOption {
|
|
type = with types; listOf str;
|
|
default = [ ];
|
|
};
|
|
};
|
|
|
|
config.hm.config = {
|
|
systemd.user.services =
|
|
builtins.mapAttrs (name: cmd: {
|
|
Unit = {
|
|
Description = "${name}";
|
|
Requires = [ "graphical-session.target" ] ++ config.hm.extraTarget;
|
|
After = [ "graphical-session.target" ] ++ config.hm.extraTarget;
|
|
};
|
|
Service = {
|
|
ExecStart = cmd;
|
|
};
|
|
Install = {
|
|
WantedBy = [ "graphical-session.target" ] ++ config.hm.extraTarget;
|
|
};
|
|
}) config.hm.quickServices
|
|
// 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.hm.quickOneShots;
|
|
};
|
|
}
|