nyx/modules/flake/lib/services.nix
2025-01-27 14:03:42 +02:00

62 lines
1.4 KiB
Nix

{lib}: let
inherit (lib.types) str;
inherit (lib.options) mkOption mkEnableOption;
inherit (lib.attrsets) recursiveUpdate;
mkGraphicalService = recursiveUpdate {
Unit.PartOf = ["graphical-session.target"];
Unit.After = ["graphical-session.target"];
Install.WantedBy = ["graphical-session.target"];
};
mkHyprlandService = recursiveUpdate {
Unit.PartOf = ["graphical-session.target"];
Unit.After = ["graphical-session.target"];
Install.WantedBy = ["hyprland-session.target"];
};
/*
*
A quick way to use my services abstraction
# Arguments
- [name]: The name of the service
# Type
```
mkServiceOption :: String -> (Int -> String -> String -> AttrSet) -> AttrSet
```
*/
mkServiceOption = name: {
port ? 0,
host ? "127.0.0.1",
domain ? "",
extraConfig ? {},
}:
{
enable = mkEnableOption "Enable the ${name} service";
host = mkOption {
type = str;
default = host;
description = "The host for ${name} service";
};
port = mkOption {
type = lib.types.port;
default = port;
description = "The port for ${name} service";
};
domain = mkOption {
type = str;
default = domain;
description = "Domain name for the ${name} service";
};
}
// extraConfig;
in {
inherit mkGraphicalService mkHyprlandService mkServiceOption;
}