diff --git a/default.nix b/default.nix index 33ed76d..afb6fd2 100644 --- a/default.nix +++ b/default.nix @@ -109,13 +109,31 @@ in users.users.sv22900.extraGroups = [ "docker" ]; users.users.hdh20267.extraGroups = [ "docker" ]; + # Create persistent directories and .env file location + systemd.tmpfiles.rules = [ + "d /var/lib/usda-vision 0755 root root -" + "f /var/lib/usda-vision/.env 0644 root root -" + "L+ ${usda-vision-app}/opt/usda-vision/management-dashboard-web-app/.env - - - - /var/lib/usda-vision/.env" + ]; + # Systemd service to manage usda-vision docker compose systemd.services.usda-vision = { description = "USDA Vision Docker Compose Stack"; - after = [ "docker.service" "network-online.target" ]; + after = [ "docker.service" "network-online.target" "systemd-tmpfiles-setup.service" ]; wants = [ "network-online.target" ]; wantedBy = [ "multi-user.target" ]; + preStart = '' + # Ensure .env file exists with defaults if empty + if [ ! -s /var/lib/usda-vision/.env ]; then + if [ -f ${usda-vision-app}/opt/usda-vision/.env.example ]; then + echo "Copying .env.example to /var/lib/usda-vision/.env" + cp ${usda-vision-app}/opt/usda-vision/.env.example /var/lib/usda-vision/.env + echo "Please edit /var/lib/usda-vision/.env with your configuration" + fi + fi + ''; + serviceConfig = { Type = "oneshot"; RemainAfterExit = true;