From 7afa349ea8b05e500c37e72e5e70f15e35a242eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Mon, 23 Dec 2024 04:43:33 +0100 Subject: [PATCH] nixos/paperless: mirror upstream admin user creation more closely Closes #249767 Before we only created the admin user when passwordFile was set. Now it is possible to set PAPERLESS_ADMIN_USER and PAPERLESS_ADMIN_PASSWORD directly to create the admin user, like in the upstream Docker image. --- nixos/modules/services/misc/paperless.nix | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/nixos/modules/services/misc/paperless.nix b/nixos/modules/services/misc/paperless.nix index db703ce77883..c1f35526bd9b 100644 --- a/nixos/modules/services/misc/paperless.nix +++ b/nixos/modules/services/misc/paperless.nix @@ -421,8 +421,7 @@ in }; environment = env; - preStart = - '' + preStart = '' # remove old papaerless-manage symlink # TODO: drop with NixOS 25.11 [[ -L '${cfg.dataDir}/paperless-manage' ]] && rm '${cfg.dataDir}/paperless-manage' @@ -448,13 +447,15 @@ in ${cfg.package}/bin/paperless-ngx document_index reindex fi - echo ${cfg.package.version} > "$versionFile" - fi - '' - + lib.optionalString (cfg.passwordFile != null) '' + echo ${cfg.package.version} > "$versionFile" + fi + + if ${lib.boolToString (cfg.passwordFile != null)} || [[ -n $PAPERLESS_ADMIN_PASSWORD ]]; then export PAPERLESS_ADMIN_USER="''${PAPERLESS_ADMIN_USER:-admin}" - PAPERLESS_ADMIN_PASSWORD=$(cat "$CREDENTIALS_DIRECTORY/PAPERLESS_ADMIN_PASSWORD") - export PAPERLESS_ADMIN_PASSWORD + if [[ -e $CREDENTIALS_DIRECTORY/PAPERLESS_ADMIN_PASSWORD ]]; then + PAPERLESS_ADMIN_PASSWORD=$(cat "$CREDENTIALS_DIRECTORY/PAPERLESS_ADMIN_PASSWORD") + export PAPERLESS_ADMIN_PASSWORD + fi superuserState="$PAPERLESS_ADMIN_USER:$PAPERLESS_ADMIN_PASSWORD" superuserStateFile="${cfg.dataDir}/superuser-state" @@ -462,7 +463,8 @@ in ${cfg.package}/bin/paperless-ngx manage_superuser echo "$superuserState" > "$superuserStateFile" fi - ''; + fi + ''; requires = lib.optional cfg.database.createLocally "postgresql.service"; after = lib.optional enableRedis "redis-paperless.service"