parent
6b3629c6ff
commit
eaaa790ab2
4 changed files with 19 additions and 49 deletions
|
@ -4,6 +4,7 @@
|
|||
services.kapowarr = {
|
||||
enable = true;
|
||||
port = 5676;
|
||||
urlBase = "/kapowarr";
|
||||
|
||||
user = mainUser;
|
||||
group = "users";
|
||||
|
|
|
@ -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
6
flake.lock
generated
|
@ -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": {
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue