'';
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 = {
${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
'';
TimeoutSec = 15;
Type = "simple";
WorkingDirectory = cfg.workdir;
+ RuntimeDirectory = cfg.systemdRuntimeDirectory;
+ StateDirectory= cfg.systemdStateDirectory;
PIDFile = cfg.pids.paster;
};
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
- '';
- };
-
};
}