chore(kapowarr): chase latest changes

This commit is contained in:
matt1432 2025-04-06 16:16:51 -04:00
parent 6b3629c6ff
commit eaaa790ab2
4 changed files with 19 additions and 49 deletions
configurations/nos/modules/comics/kapowarr
flake.lock
packages/kapowarr/kapowarr

View file

@ -4,6 +4,7 @@
services.kapowarr = {
enable = true;
port = 5676;
urlBase = "/kapowarr";
user = mainUser;
group = "users";

View file

@ -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;

6
flake.lock generated
View file

@ -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": {

View file

@ -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;