From eaaa790ab297482ab1a0be71f438f269654692d0 Mon Sep 17 00:00:00 2001 From: matt1432 <matt@nelim.org> Date: Sun, 6 Apr 2025 16:16:51 -0400 Subject: [PATCH] chore(kapowarr): chase latest changes --- .../nos/modules/comics/kapowarr/default.nix | 1 + .../nos/modules/comics/kapowarr/module.nix | 19 +++++++-- flake.lock | 6 +-- packages/kapowarr/kapowarr/default.nix | 42 ------------------- 4 files changed, 19 insertions(+), 49 deletions(-) diff --git a/configurations/nos/modules/comics/kapowarr/default.nix b/configurations/nos/modules/comics/kapowarr/default.nix index 4792821a..64bff20a 100644 --- a/configurations/nos/modules/comics/kapowarr/default.nix +++ b/configurations/nos/modules/comics/kapowarr/default.nix @@ -4,6 +4,7 @@ services.kapowarr = { enable = true; port = 5676; + urlBase = "/kapowarr"; user = mainUser; group = "users"; diff --git a/configurations/nos/modules/comics/kapowarr/module.nix b/configurations/nos/modules/comics/kapowarr/module.nix index a2edfe93..9fc2a952 100644 --- a/configurations/nos/modules/comics/kapowarr/module.nix +++ b/configurations/nos/modules/comics/kapowarr/module.nix @@ -11,6 +11,7 @@ mkIf mkOption mkPackageOption + optionalString types ; @@ -38,6 +39,12 @@ in { description = "Port where kapowarr should listen for incoming requests."; }; + urlBase = mkOption { + type = with types; nullOr str; + default = null; + description = "URL base where kapowarr should listen for incoming requests."; + }; + dataDir = mkOption { type = types.path; default = "/var/lib/kapowarr/"; @@ -68,10 +75,7 @@ in { wantedBy = ["multi-user.target"]; environment = { - KAPOWARR_DEFAULT_PORT = toString cfg.port; KAPOWARR_LOG_DIR = cfg.logDir; - KAPOWARR_STATE_DIR = cfg.dataDir; - KAPOWARR_DOWNLOAD_DIR = cfg.downloadDir; }; serviceConfig = { @@ -79,7 +83,14 @@ in { User = cfg.user; Group = cfg.group; StateDirectory = mkIf (cfg.dataDir == "/var/lib/kapowar") "kapowarr"; - ExecStart = "${getExe cfg.package} -d ${cfg.dataDir}"; + ExecStart = toString [ + (getExe cfg.package) + "-d ${cfg.dataDir}" + "-D ${cfg.downloadDir}" + "-l ${cfg.logDir}" + "-p ${toString cfg.port}" + (optionalString (cfg.urlBase != null) "-u ${cfg.urlBase}") + ]; # Hardening from komga service RemoveIPC = true; diff --git a/flake.lock b/flake.lock index d486e17f..f6cd8e81 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "Kapowarr-src": { "flake": false, "locked": { - "lastModified": 1743790432, - "narHash": "sha256-pY7P6Po3GADi4SLTNb6lXtkqgE7OfNe59ZuiFZFuasc=", + "lastModified": 1743968884, + "narHash": "sha256-cfD9cHSYLW4LvnyhjrEsw4PTu9/HjAQIeflRDmNs6dA=", "owner": "matt1432", "repo": "Kapowarr", - "rev": "df8e6ad90654afa2eabb80c4c941cc310044e8c7", + "rev": "8e428559a94f9fb4c3e1c4c13ee07bdf6708985d", "type": "github" }, "original": { diff --git a/packages/kapowarr/kapowarr/default.nix b/packages/kapowarr/kapowarr/default.nix index 49bc0685..158eee84 100644 --- a/packages/kapowarr/kapowarr/default.nix +++ b/packages/kapowarr/kapowarr/default.nix @@ -3,7 +3,6 @@ lib, buildPythonApplication, Kapowarr-src, - python, # deps rar, # python deps @@ -40,24 +39,6 @@ in --replace-fail \ "exe = folder_path('backend', 'lib', Constants.RAR_EXECUTABLES[platform])" \ "exe = '${getExe rar}'" - - # Insert import for following substituteInPlace - sed -i '/# -\*- coding: utf-8 -\*-/a from os import environ' ./src/backend/base/logging.py - - substituteInPlace ./src/backend/base/logging.py --replace-fail \ - "return folder_path(Constants.LOGGER_FILENAME)" \ - "return f\"{environ.get('KAPOWARR_LOG_DIR') or folder_path(*Constants.DB_FOLDER)}/{Constants.LOGGER_FILENAME}\"" - - sed -i '/from __future__ import annotations/a from os import environ' ./src/backend/internals/db.py - - substituteInPlace ./src/backend/internals/db.py --replace-fail \ - "db_folder or folder_path(*Constants.DB_FOLDER)" \ - "environ.get('KAPOWARR_STATE_DIR') or folder_path(*Constants.DB_FOLDER)" - - substituteInPlace ./src/backend/internals/settings.py \ - --replace-fail \ - "download_folder: str = folder_path('temp_downloads')" \ - "download_folder: str = environ.get('KAPOWARR_DOWNLOAD_DIR') or folder_path('temp_downloads')" ''; build-system = [setuptools]; @@ -75,29 +56,6 @@ in websocket-client ]; - # Use XDG-ish dirs for configuration. These would otherwise be in the kapowarr package. - # - # Using --run as `makeWrapper` evaluates variables for --set and --set-default at build - # time and then single quotes the vars in the wrapper, thus they wouldn't get expanded. - # But using --run allows setting default vars that are evaluated on run and not during - # build time. - makeWrapperArgs = [ - '' - --run "OUTDIR=\"$out\"" - --run ' - configDir="''${XDG_CONFIG_HOME:-$HOME/.config}/kapowarr" - export KAPOWARR_STATE_DIR="''${KAPOWARR_STATE_DIR-$configDir}" - export KAPOWARR_LOG_DIR="''${KAPOWARR_LOG_DIR-$configDir}" - export KAPOWARR_DOWNLOAD_DIR="''${KAPOWARR_DOWNLOAD_DIR-$configDir/temp_downloads}" - mkdir -p "$KAPOWARR_STATE_DIR" "$KAPOWARR_LOG_DIR" - - if [ ! -f "$KAPOWARR_STATE_DIR/pwa_manifest.json" ]; then - cat "$OUTDIR/${python.sitePackages}/frontend/static/json/pwa_manifest.json" > "$KAPOWARR_STATE_DIR/pwa_manifest.json" - fi - ' - '' - ]; - meta = { inherit (rar.meta) platforms; mainProgram = pname;