summary refs log tree commit diff
diff options
context:
space:
mode:
authorDomen Kožar <domen@dev.si>2015-03-08 11:53:22 +0100
committerDomen Kožar <domen@dev.si>2015-03-08 11:53:22 +0100
commit370c505850ad894ae308272ecdb543d2066e9b62 (patch)
tree9b8ee9c3f1913aa7b0a9efd30776dd412e195c0a
parent0fd3db4ba1d1d6d3a6108970ef96b24853593414 (diff)
parent581a90bad8799b4b4cd3439953f29420ee2a7eb7 (diff)
downloadnixlib-370c505850ad894ae308272ecdb543d2066e9b62.tar
nixlib-370c505850ad894ae308272ecdb543d2066e9b62.tar.gz
nixlib-370c505850ad894ae308272ecdb543d2066e9b62.tar.bz2
nixlib-370c505850ad894ae308272ecdb543d2066e9b62.tar.lz
nixlib-370c505850ad894ae308272ecdb543d2066e9b62.tar.xz
nixlib-370c505850ad894ae308272ecdb543d2066e9b62.tar.zst
nixlib-370c505850ad894ae308272ecdb543d2066e9b62.zip
Merge pull request #6710 from unaizalakain/master
Optional user and group to run the MPD
-rw-r--r--nixos/modules/services/audio/mpd.nix29
1 files changed, 21 insertions, 8 deletions
diff --git a/nixos/modules/services/audio/mpd.nix b/nixos/modules/services/audio/mpd.nix
index b79052337597..9abfb41087b7 100644
--- a/nixos/modules/services/audio/mpd.nix
+++ b/nixos/modules/services/audio/mpd.nix
@@ -15,6 +15,8 @@ let
     state_file          "${cfg.dataDir}/state"
     sticker_file        "${cfg.dataDir}/sticker.sql"
     log_file            "syslog"
+    user                "${cfg.user}"
+    group               "${cfg.group}"
     ${if cfg.network.host != "any" then
    "bind_to_address     ${cfg.network.host}" else ""}
     ${if cfg.network.port != 6600 then
@@ -40,8 +42,7 @@ in {
       musicDirectory = mkOption {
         default = "${cfg.dataDir}/music";
         description = ''
-          Extra configuration added to the end of MPD's
-          configuration file, mpd.conf.
+          The directory where mpd reads music from.
         '';
       };
 
@@ -62,6 +63,16 @@ in {
         '';
       };
 
+      user = mkOption {
+        default = "mpd";
+        description = "User account under which MPD runs.";
+      };
+
+      group = mkOption {
+        default = "mpd";
+        description = "Group account under which MPD runs.";
+      };
+
       network = {
 
         host = mkOption {
@@ -96,7 +107,7 @@ in {
       description = "Music Player Daemon";
       wantedBy = [ "multi-user.target" ];
       path = [ pkgs.mpd ];
-      preStart = "mkdir -p ${cfg.dataDir} && chown -R mpd:mpd  ${cfg.dataDir}";
+      preStart = "mkdir -p ${cfg.dataDir} && chown -R ${cfg.user}:${cfg.group} ${cfg.dataDir}";
       script = "exec mpd --no-daemon ${mpdConf}";
       serviceConfig = {
         User = "mpd";
@@ -104,16 +115,18 @@ in {
       };
     };
 
-    users.extraUsers.mpd = {
+    users.extraUsers = optionalAttrs (cfg.user == "mpd") (singleton {
       inherit uid;
-      group = "mpd";
+      name = "mpd";
+      group = cfg.group;
       extraGroups = [ "audio" ];
       description = "Music Player Daemon user";
       home = "${cfg.dataDir}";
-    };
-
-    users.extraGroups.mpd.gid = gid;
+    });
 
+    users.extraGroups = optionalAttrs (cfg.group == "mpd") (singleton {
+      gid = gid;
+    });
   };
 
 }