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