summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorJaka Hudoklin <jakahudoklin@gmail.com>2014-03-10 11:06:48 +0100
committerJaka Hudoklin <jakahudoklin@gmail.com>2014-03-10 11:08:05 +0100
commit993ef8287eaf1fd74fb595446b07eacf455478a3 (patch)
tree65de217b721424a204557ec36eac439e0d14db26 /nixos
parent086afe9161b0763075f8f4e4793c5490648f0ec9 (diff)
downloadnixpkgs-993ef8287eaf1fd74fb595446b07eacf455478a3.tar
nixpkgs-993ef8287eaf1fd74fb595446b07eacf455478a3.tar.gz
nixpkgs-993ef8287eaf1fd74fb595446b07eacf455478a3.tar.bz2
nixpkgs-993ef8287eaf1fd74fb595446b07eacf455478a3.tar.lz
nixpkgs-993ef8287eaf1fd74fb595446b07eacf455478a3.tar.xz
nixpkgs-993ef8287eaf1fd74fb595446b07eacf455478a3.tar.zst
nixpkgs-993ef8287eaf1fd74fb595446b07eacf455478a3.zip
nixos/couchdb: fix stopping of service, by making it non-forking, a few other improvments
Conflicts:
	nixos/modules/services/databases/couchdb.nix
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/services/databases/couchdb.nix33
1 files changed, 9 insertions, 24 deletions
diff --git a/nixos/modules/services/databases/couchdb.nix b/nixos/modules/services/databases/couchdb.nix
index 01631e9879a..b48d3a64767 100644
--- a/nixos/modules/services/databases/couchdb.nix
+++ b/nixos/modules/services/databases/couchdb.nix
@@ -1,9 +1,7 @@
 { config, pkgs, ... }:
-
-with pkgs.lib;
+  with pkgs.lib;
 
 let
-
   cfg = config.services.couchdb;
   configFile = pkgs.writeText "couchdb.ini"
     ''
@@ -19,10 +17,8 @@ let
       [log]
       file = ${cfg.logFile}
     '';
-  configExtraFile = pkgs.writeText "couchdb-extra.ini" cfg.extraConfig;
 
-in
-{
+in {
 
   ###### interface
 
@@ -64,14 +60,6 @@ in
         '';
       };
 
-      pidFile = mkOption {
-        type = types.path;
-        default = "/var/run/couchdb/couchdb.pid";
-        description = ''
-          pid file.
-        '';
-      };
-
       # couchdb options: http://docs.couchdb.org/en/latest/config/index.html
 
       databaseDir = mkOption {
@@ -153,26 +141,23 @@ in
 
       preStart =
         ''
-        mkdir -p `dirname ${cfg.pidFile}`;
         mkdir -p `dirname ${cfg.uriFile}`;
         mkdir -p `dirname ${cfg.logFile}`;
-        touch ${cfg.logFile};
         mkdir -p ${cfg.databaseDir};
         mkdir -p ${cfg.viewIndexDir};
-        chown ${cfg.user}:${cfg.group} `dirname ${cfg.pidFile}`
-        chown ${cfg.user}:${cfg.group} `dirname ${cfg.uriFile}`
-        chown ${cfg.user}:${cfg.group} ${cfg.logFile}
-        chown ${cfg.user}:${cfg.group} ${cfg.databaseDir}
-        chown ${cfg.user}:${cfg.group} ${cfg.viewIndexDir}
+
+        if [ "$(id -u)" = 0 ]; then
+          chown ${cfg.user}:${cfg.group} `dirname ${cfg.uriFile}`
+          chown ${cfg.user}:${cfg.group} ${cfg.databaseDir}
+          chown ${cfg.user}:${cfg.group} ${cfg.viewIndexDir}
+        fi
         '';
 
       serviceConfig = {
         PermissionsStartOnly = true;
         User = cfg.user;
         Group = cfg.group;
-        Type = "forking";
-        ExecStart = "${cfg.package}/bin/couchdb -b -o /dev/null -e /dev/null -p ${cfg.pidFile} -a ${configFile} -a ${configExtraFile}";
-        ExecStop = "${cfg.package}/bin/couchdb -d";
+        ExecStart = "${cfg.package}/bin/couchdb -a ${configFile} -a ${pkgs.writeText "couchdb-extra.ini" cfg.extraConfig}";
       };
     };