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