summaryrefslogtreecommitdiff
path: root/modules/seatd.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/seatd.nix')
-rw-r--r--modules/seatd.nix49
1 files changed, 49 insertions, 0 deletions
diff --git a/modules/seatd.nix b/modules/seatd.nix
new file mode 100644
index 0000000..32fff58
--- /dev/null
+++ b/modules/seatd.nix
@@ -0,0 +1,49 @@
+{ config, lib, pkgs, ... }:
+
+let
+ cfg = config.services.seatd;
+ inherit (lib) mkEnableOption mkOption mdDoc types;
+in
+{
+ meta.maintainers = with lib.maintainers; [ sinanmohd ];
+
+ options.services.seatd = {
+ enable = mkEnableOption (mdDoc "seatd");
+
+ user = mkOption {
+ type = types.str;
+ default = "root";
+ description = mdDoc "User to own the seatd socket";
+ };
+ group = mkOption {
+ type = types.str;
+ default = "seat";
+ description = mdDoc "Group to own the seatd socket";
+ };
+ logLevel = mkOption {
+ type = types.enum [ "debug" "info" "error" "silent" ];
+ default = "info";
+ description = mdDoc "Logging verbosity";
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ environment.systemPackages = with pkgs; [ seatd ];
+ users.groups.seat = lib.mkIf (cfg.group == "seat") {};
+
+ systemd.services.seatd = {
+ description = "Seat management daemon";
+ documentation = [ "man:seatd(1)" ];
+
+ wantedBy = [ "multi-user.target" ];
+ restartIfChanged = false;
+
+ serviceConfig = {
+ Type = "simple";
+ ExecStart = "${pkgs.seatd.bin}/bin/seatd -u ${cfg.user} -g ${cfg.group} -l ${cfg.logLevel}";
+ RestartSec = 1;
+ Restart = "always";
+ };
+ };
+ };
+}