diff --git a/nixos/modules/services/networking/shairport-sync.nix b/nixos/modules/services/networking/shairport-sync.nix index bd24931abb01..eb61663e4d92 100644 --- a/nixos/modules/services/networking/shairport-sync.nix +++ b/nixos/modules/services/networking/shairport-sync.nix @@ -53,6 +53,15 @@ in ''; }; + group = mkOption { + type = types.str; + default = "shairport"; + description = '' + Group account name under which to run shairport-sync. The account + will be created. + ''; + }; + }; }; @@ -66,14 +75,17 @@ in services.avahi.publish.enable = true; services.avahi.publish.userServices = true; - users.users.${cfg.user} = - { description = "Shairport user"; + users = { + users.${cfg.user} = { + description = "Shairport user"; isSystemUser = true; createHome = true; home = "/var/lib/shairport-sync"; + group = cfg.group; extraGroups = [ "audio" ] ++ optional config.hardware.pulseaudio.enable "pulse"; }; - + groups.${cfg.group} = {}; + }; networking.firewall = mkIf cfg.openFirewall { allowedTCPPorts = [ 5000 ]; @@ -87,6 +99,7 @@ in wantedBy = [ "multi-user.target" ]; serviceConfig = { User = cfg.user; + Group = cfg.group; ExecStart = "${pkgs.shairport-sync}/bin/shairport-sync ${cfg.arguments}"; RuntimeDirectory = "shairport-sync"; };