]> git.immae.eu Git - perso/Immae/Config/Nix.git/commitdiff
Remove some activationScript and move them to preStart scripts
authorIsmaël Bouya <ismael.bouya@normalesup.org>
Sun, 12 May 2019 13:19:46 +0000 (15:19 +0200)
committerIsmaël Bouya <ismael.bouya@normalesup.org>
Sun, 12 May 2019 13:19:46 +0000 (15:19 +0200)
modules/webapps/diaspora.nix
modules/webapps/mastodon.nix
modules/webapps/mediagoblin.nix
modules/webapps/peertube.nix
modules/webapps/webstats/default.nix

index 226633202792a24bb08345a1d07436754a223803..65599b73b228e43333cb13773cd3d33c0b894368 100644 (file)
@@ -141,6 +141,11 @@ in
       path = [ cfg.workdir.gems pkgs.nodejs cfg.workdir.gems.ruby pkgs.curl pkgs.which pkgs.gawk ];
 
       preStart = ''
+        install -m 0755 -d ${cfg.dataDir}/uploads ${cfg.dataDir}/tmp ${cfg.dataDir}/log
+        install -m 0700 -d ${cfg.dataDir}/tmp/pids
+        if [ ! -f ${cfg.dataDir}/schedule.yml ]; then
+          echo "{}" > ${cfg.dataDir}/schedule.yml
+        fi
         ./bin/bundle exec rails db:migrate
       '';
 
@@ -162,18 +167,5 @@ in
 
       unitConfig.RequiresMountsFor = cfg.dataDir;
     };
-
-    system.activationScripts.diaspora = {
-      deps = [ "users" ];
-      text = ''
-      install -m 0755 -o ${cfg.user} -g ${cfg.group} -d ${cfg.dataDir}/uploads \
-        ${cfg.dataDir}/tmp ${cfg.dataDir}/log
-      install -m 0700 -o ${cfg.user} -g ${cfg.group} -d ${cfg.dataDir}/tmp/pids
-      if [ ! -f ${cfg.dataDir}/schedule.yml ]; then
-        echo "{}" | $wrapperDir/sudo -u ${cfg.user} tee ${cfg.dataDir}/schedule.yml
-      fi
-      '';
-    };
-
   };
 }
index f8fbcbaf4e2bec0045297d25a25d2b8c870168cd..6255de91a708be894751ce298c4e67391abbaac5 100644 (file)
@@ -163,6 +163,7 @@ in
       path = [ cfg.workdir.gems cfg.workdir.gems.ruby pkgs.file ];
 
       preStart = ''
+        install -m 0755 -d ${cfg.dataDir}/tmp/cache
         ./bin/bundle exec rails db:migrate
       '';
 
@@ -218,12 +219,5 @@ in
       unitConfig.RequiresMountsFor = cfg.dataDir;
     };
 
-    system.activationScripts.mastodon = {
-      deps = [ "users" ];
-      text = ''
-      install -m 0755 -o ${cfg.user} -g ${cfg.group} -d ${cfg.dataDir}/tmp/cache
-      '';
-    };
-
   };
 }
index 575345758e1e090934d595cf14a5e2578fe45da3..78bbef6fadd139d48e97be7e4ba0efa85044f25f 100644 (file)
@@ -183,6 +183,10 @@ in
           ${paste_local} stop
         '';
       preStart = ''
+        if [ -d ${cfg.dataDir}/plugin_static/ ]; then
+          rm ${cfg.dataDir}/plugin_static/coreplugin_basic_auth
+          ln -sf ${cfg.workdir}/mediagoblin/plugins/basic_auth/static ${cfg.dataDir}/plugin_static/coreplugin_basic_auth
+        fi
         ./bin/gmg -cf ${cfg.configFile} dbupdate
         '';
 
@@ -229,16 +233,5 @@ in
 
       unitConfig.RequiresMountsFor = cfg.dataDir;
     };
-
-    system.activationScripts.mediagoblin = {
-      deps = [ "users" ];
-      text = ''
-      if [ -d ${cfg.dataDir}/plugin_static/ ]; then
-        rm ${cfg.dataDir}/plugin_static/coreplugin_basic_auth
-        ln -sf ${cfg.workdir}/mediagoblin/plugins/basic_auth/static ${cfg.dataDir}/plugin_static/coreplugin_basic_auth
-      fi
-      '';
-    };
-
   };
 }
index 7c960764f98e8b674a24af34f3395609191dd5d4..89dcc67a4517932381c711d76d325c2b087d3389 100644 (file)
@@ -39,6 +39,17 @@ in
         Peertube package to use.
         '';
     };
+    # Output variables
+    systemdStateDirectory = lib.mkOption {
+      type = lib.types.str;
+      # Use ReadWritePaths= instead if varDir is outside of /var/lib
+      default = assert lib.strings.hasPrefix "/var/lib/" cfg.dataDir;
+        lib.strings.removePrefix "/var/lib/" cfg.dataDir;
+      description = ''
+      Adjusted Peertube data directory for systemd
+      '';
+      readOnly = true;
+    };
   };
 
   config = lib.mkIf cfg.enable {
@@ -68,6 +79,8 @@ in
       path = [ pkgs.nodejs pkgs.bashInteractive pkgs.ffmpeg pkgs.openssl ];
 
       script = ''
+        install -m 0750 -d ${cfg.dataDir}/config
+        ln -sf ${cfg.configFile} ${cfg.dataDir}/config/production.yaml
         exec npm run start
       '';
 
@@ -75,6 +88,8 @@ in
         User = cfg.user;
         Group = cfg.group;
         WorkingDirectory = cfg.package;
+        StateDirectory = cfg.systemdStateDirectory;
+        StateDirectoryMode = 0750;
         PrivateTmp = true;
         ProtectHome = true;
         ProtectControlGroups = true;
@@ -85,16 +100,6 @@ in
 
       unitConfig.RequiresMountsFor = cfg.dataDir;
     };
-
-    system.activationScripts.peertube = {
-      deps = [ "users" ];
-      text = ''
-      install -m 0750 -o ${cfg.user} -g ${cfg.group} -d ${cfg.dataDir}
-      install -m 0750 -o ${cfg.user} -g ${cfg.group} -d ${cfg.dataDir}/config
-      ln -sf ${cfg.configFile} ${cfg.dataDir}/config/production.yaml
-      '';
-    };
-
   };
 }
 
index f4916bd011fc03ceb61e4b037a586937cb00e5cb..feff951c9eeb324b81044b0bc094e5982d7f3e82 100644 (file)
@@ -58,6 +58,7 @@ in {
             TMPFILE=$(mktemp)
             trap "rm -f $TMPFILE" EXIT
 
+            mkdir -p ${cfg.dataDir}/${domain}
             cat /var/log/httpd/access_log-${domain} | sed -n "/\\[$date_regex/ p" > $TMPFILE
             for i in /var/log/httpd/access_log-${domain}*.gz; do
               zcat "$i" | sed -n "/\\[$date_regex/ p" >> $TMPFILE
@@ -68,6 +69,7 @@ in {
         allStats = sites: pkgs.writeScript "stats" ''
           #!${pkgs.stdenv.shell}
 
+          mkdir -p ${cfg.dataDir}
           ${builtins.concatStringsSep "\n" (map (v: stats v.name v.conf) sites)}
           '';
       in
@@ -75,10 +77,5 @@ in {
           "5 0 * * * root ${allStats cfg.sites}"
         ];
     };
-
-    system.activationScripts.goaccess = ''
-      mkdir -p /var/lib/goaccess
-    '' +
-    builtins.concatStringsSep "\n" (map (v: "mkdir -p ${cfg.dataDir}/${v.name}") cfg.sites);
   };
 }