nixos/redmine: symlink /run/redmine dirs in preStart (#483102)

This commit is contained in:
Atemu
2026-01-24 14:31:37 +00:00
committed by GitHub
2 changed files with 39 additions and 10 deletions
+13 -10
View File
@@ -356,16 +356,6 @@ in
"d '${cfg.stateDir}/public/plugin_assets' 0750 ${cfg.user} ${cfg.group} - -"
"d '${cfg.stateDir}/themes' 0750 ${cfg.user} ${cfg.group} - -"
"d '${cfg.stateDir}/tmp' 0750 ${cfg.user} ${cfg.group} - -"
"d /run/redmine/public - - - - -"
"L+ /run/redmine/config - - - - ${cfg.stateDir}/config"
"L+ /run/redmine/files - - - - ${cfg.stateDir}/files"
"L+ /run/redmine/log - - - - ${cfg.stateDir}/log"
"L+ /run/redmine/plugins - - - - ${cfg.stateDir}/plugins"
"L+ /run/redmine/public/assets - - - - ${cfg.stateDir}/public/assets"
"L+ /run/redmine/public/plugin_assets - - - - ${cfg.stateDir}/public/plugin_assets"
"L+ /run/redmine/themes - - - - ${cfg.stateDir}/themes"
"L+ /run/redmine/tmp - - - - ${cfg.stateDir}/tmp"
];
systemd.services.redmine = {
@@ -392,6 +382,19 @@ in
++ lib.optional cfg.components.ghostscript ghostscript;
preStart = ''
# Create symlinks for the basic directory layout the redmine package
# expects. This part must be done in preStart rather than tmpfiles,
# because /run/redmine is re-created when the service is restarted
mkdir /run/redmine/public
ln -s "${cfg.stateDir}/config" /run/redmine/config
ln -s "${cfg.stateDir}/files" /run/redmine/files
ln -s "${cfg.stateDir}/log" /run/redmine/log
ln -s "${cfg.stateDir}/plugins" /run/redmine/plugins
ln -s "${cfg.stateDir}/public/assets" /run/redmine/public/assets
ln -s "${cfg.stateDir}/public/plugin_assets" /run/redmine/public/plugin_assets
ln -s "${cfg.stateDir}/themes" /run/redmine/themes
ln -s "${cfg.stateDir}/tmp" /run/redmine/tmp
rm -rf "${cfg.stateDir}/plugins/"*
rm -rf "${cfg.stateDir}/themes/"*
+26
View File
@@ -46,4 +46,30 @@ in
name = "pgsql";
type = "postgresql";
};
restart = makeTest {
name = "redmine-restart";
nodes.machine =
{ config, pkgs, ... }:
{
services.redmine = {
enable = true;
package = pkgs.redmine;
};
};
testScript = ''
start_all()
machine.wait_for_unit("redmine.service")
machine.wait_for_open_port(3000)
machine.succeed("curl --fail http://localhost:3000/")
machine.systemctl("stop redmine.service")
machine.systemctl("start redmine.service")
machine.wait_for_unit("redmine.service")
machine.wait_for_open_port(3000)
machine.succeed("curl --fail http://localhost:3000/")
'';
};
}