python312Packages.publicsuffixlist: 1.0.2.20241207 -> 1.0.2.20241213 (#365192)
[NixPkgs.git] / nixos / modules / services / audio / slimserver.nix
blob0f124505addfc014f7c4ec0ac96c13e27b270a91
2   config,
3   lib,
4   pkgs,
5   ...
6 }:
7 let
9   cfg = config.services.slimserver;
13   options = {
15     services.slimserver = {
17       enable = lib.mkOption {
18         type = lib.types.bool;
19         default = false;
20         description = ''
21           Whether to enable slimserver.
22         '';
23       };
25       package = lib.mkPackageOption pkgs "slimserver" { };
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   };
38   ###### implementation
40   config = lib.mkIf cfg.enable {
42     systemd.tmpfiles.rules = [
43       "d '${cfg.dataDir}' - slimserver slimserver - -"
44     ];
46     systemd.services.slimserver = {
47       after = [ "network.target" ];
48       description = "Slim Server for Logitech Squeezebox Players";
49       wantedBy = [ "multi-user.target" ];
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     };
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   };