at 25.11-pre 1.5 kB view raw
1{ 2 config, 3 lib, 4 pkgs, 5 ... 6}: 7let 8 9 cfg = config.services.slimserver; 10 11in 12{ 13 options = { 14 15 services.slimserver = { 16 17 enable = lib.mkOption { 18 type = lib.types.bool; 19 default = false; 20 description = '' 21 Whether to enable slimserver. 22 ''; 23 }; 24 25 package = lib.mkPackageOption pkgs "slimserver" { }; 26 27 dataDir = lib.mkOption { 28 type = lib.types.path; 29 default = "/var/lib/slimserver"; 30 description = '' 31 The directory where slimserver stores its state, tag cache, 32 playlists etc. 33 ''; 34 }; 35 }; 36 }; 37 38 ###### implementation 39 40 config = lib.mkIf cfg.enable { 41 42 systemd.tmpfiles.rules = [ 43 "d '${cfg.dataDir}' - slimserver slimserver - -" 44 ]; 45 46 systemd.services.slimserver = { 47 after = [ "network.target" ]; 48 description = "Slim Server for Logitech Squeezebox Players"; 49 wantedBy = [ "multi-user.target" ]; 50 51 serviceConfig = { 52 User = "slimserver"; 53 # Issue 40589: Disable broken image/video support (audio still works!) 54 ExecStart = "${lib.getExe cfg.package} --logdir ${cfg.dataDir}/logs --prefsdir ${cfg.dataDir}/prefs --cachedir ${cfg.dataDir}/cache --noimage --novideo"; 55 }; 56 }; 57 58 users = { 59 users.slimserver = { 60 description = "Slimserver daemon user"; 61 home = cfg.dataDir; 62 group = "slimserver"; 63 isSystemUser = true; 64 }; 65 groups.slimserver = { }; 66 }; 67 }; 68 69}