@@ -141,11 +141,36 @@ in {
141141 TimeoutSec = 15 ;
142142 SuccessExitStatus = "0 143" ;
143143
144- ExecStartPre = "+" + pkgs . writeShellScript "jellyfin-setup-config" ''
145- ${ pkgs . coreutils } /bin/install -m 440 -o root -g ${ cfg . group } /etc/jellyfin/network.xml.template '${ cfg . configDir } /network.xml'
146- ${ pkgs . coreutils } /bin/install -m 440 -o root -g ${ cfg . group } /etc/jellyfin/branding.xml.template '${ cfg . configDir } /branding.xml'
147- ${ pkgs . coreutils } /bin/install -m 440 -o root -g ${ cfg . group } /etc/jellyfin/encoding.xml.template '${ cfg . configDir } /encoding.xml'
148- ${ pkgs . coreutils } /bin/install -m 440 -o root -g ${ cfg . group } /etc/jellyfin/system.xml.template '${ cfg . configDir } /system.xml'
144+ ExecStartPre = pkgs . writeShellScript "jellyfin-setup-config" ''
145+ set -eu
146+
147+ ${ pkgs . coreutils } /bin/install -m 640 /etc/jellyfin/network.xml.template '${ cfg . configDir } /network.xml'
148+ ${ pkgs . coreutils } /bin/install -m 640 /etc/jellyfin/branding.xml.template '${ cfg . configDir } /branding.xml'
149+ ${ pkgs . coreutils } /bin/install -m 640 /etc/jellyfin/encoding.xml.template '${ cfg . configDir } /encoding.xml'
150+ ${ pkgs . coreutils } /bin/install -m 640 /etc/jellyfin/system.xml.template '${ cfg . configDir } /system.xml'
151+
152+ ${ optionalString cfg . system . isStartupWizardCompleted ''
153+ if [ ! -f "${ cfg . configDir } /migrations.xml" ]; then
154+ echo "First run detected - generating migrations.xml"
155+ ${ pkgs . xmlstarlet } /bin/xmlstarlet ed -L -u "//IsStartupWizardCompleted" -v "false" '${ cfg . configDir } /system.xml'
156+
157+ ${ getExe cfg . package } --datadir '${ cfg . dataDir } ' --configdir '${ cfg . configDir } ' --cachedir '${ cfg . cacheDir } ' --logdir '${ cfg . logDir } ' &
158+ JELLYFIN_PID=$!
159+
160+ echo "Waiting for migrations.xml to be generated..."
161+ until [ -f "${ cfg . configDir } /migrations.xml" ]; do
162+ sleep 1
163+ done
164+ sleep 3
165+
166+ echo "Stopping temporary Jellyfin instance..."
167+ kill -15 $JELLYFIN_PID || true
168+ wait $JELLYFIN_PID || true
169+
170+ echo "Restoring IsStartupWizardCompleted to true"
171+ ${ pkgs . xmlstarlet } /bin/xmlstarlet ed -L -u "//IsStartupWizardCompleted" -v "true" '${ cfg . configDir } /system.xml'
172+ fi
173+ '' }
149174 '' ;
150175
151176 ExecStart =
0 commit comments