X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=modules%2Fwebapps%2Fmediagoblin.nix;h=dbc4c2b19043aae5647a60820e987d14e4c9e33b;hb=258dd18bac4bf5dd03cf1098ffa35cb954f9e015;hp=0232aab2efa0e510ecc3c8b71ae9e5845cf979ea;hpb=658822fb4a42be89b2ea47e111532513c4556d87;p=perso%2FImmae%2FConfig%2FNix.git diff --git a/modules/webapps/mediagoblin.nix b/modules/webapps/mediagoblin.nix index 0232aab..dbc4c2b 100644 --- a/modules/webapps/mediagoblin.nix +++ b/modules/webapps/mediagoblin.nix @@ -107,6 +107,26 @@ in ''; readOnly = true; }; + 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 Mediagoblin data directory for systemd + ''; + readOnly = true; + }; + systemdRuntimeDirectory = lib.mkOption { + type = lib.types.str; + # Use ReadWritePaths= instead if socketsDir is outside of /run + default = assert lib.strings.hasPrefix "/run/" cfg.socketsDir; + lib.strings.removePrefix "/run/" cfg.socketsDir; + description = '' + Adjusted Mediagoblin sockets directory for systemd + ''; + readOnly = true; + }; sockets = lib.mkOption { type = lib.types.attrsOf lib.types.path; default = { @@ -131,18 +151,20 @@ in }; config = lib.mkIf cfg.enable { - users.users = lib.optionalAttrs (cfg.user == name) (lib.singleton { - inherit name; - inherit uid; - group = cfg.group; - description = "Mediagoblin user"; - home = cfg.dataDir; - useDefaultShell = true; - }); - users.groups = lib.optionalAttrs (cfg.group == name) (lib.singleton { - inherit name; - inherit gid; - }); + users.users = lib.optionalAttrs (cfg.user == name) { + "${name}" = { + inherit uid; + group = cfg.group; + description = "Mediagoblin user"; + home = cfg.dataDir; + useDefaultShell = true; + }; + }; + users.groups = lib.optionalAttrs (cfg.group == name) { + "${name}" = { + inherit gid; + }; + }; systemd.services.mediagoblin-web = { description = "Mediagoblin service"; @@ -163,6 +185,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 ''; @@ -173,6 +199,8 @@ in TimeoutSec = 15; Type = "simple"; WorkingDirectory = cfg.workdir; + RuntimeDirectory = cfg.systemdRuntimeDirectory; + StateDirectory= cfg.systemdStateDirectory; PIDFile = cfg.pids.paster; }; @@ -200,23 +228,12 @@ in TimeoutSec = 60; Type = "simple"; WorkingDirectory = cfg.workdir; + RuntimeDirectory = cfg.systemdRuntimeDirectory; + StateDirectory= cfg.systemdStateDirectory; PIDFile = cfg.pids.celery; }; unitConfig.RequiresMountsFor = cfg.dataDir; }; - - system.activationScripts.mediagoblin = { - deps = [ "users" ]; - text = '' - install -m 0755 -o ${cfg.user} -g ${cfg.group} -d ${cfg.socketsDir} - install -m 0755 -o ${cfg.user} -g ${cfg.group} -d ${cfg.dataDir} - 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 - ''; - }; - }; }