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