refactor(kapowarr): move to approved fork

This commit is contained in:
matt1432 2025-04-15 15:55:45 -04:00
parent 415f8b23e2
commit 1c59ce72e4
5 changed files with 47 additions and 39 deletions
configurations/nos/modules/comics/kapowarr
flake.lockflake.nix
inputs
packages/kapowarr/kapowarr

View file

@ -11,7 +11,7 @@
mkIf mkIf
mkOption mkOption
mkPackageOption mkPackageOption
optionalString # optionalString
types types
; ;
@ -51,13 +51,6 @@ in {
description = "The directory where Kapowarr stores its data files."; description = "The directory where Kapowarr stores its data files.";
}; };
downloadDir = mkOption {
type = types.path;
default = "${cfg.dataDir}/temp_downloads";
defaultText = "/var/lib/kapowarr/temp_downloads";
description = "The directory where Kapowarr stores its downloaded files.";
};
logDir = mkOption { logDir = mkOption {
type = types.path; type = types.path;
default = cfg.dataDir; default = cfg.dataDir;
@ -74,10 +67,6 @@ in {
after = ["network.target"]; after = ["network.target"];
wantedBy = ["multi-user.target"]; wantedBy = ["multi-user.target"];
environment = {
KAPOWARR_LOG_DIR = cfg.logDir;
};
serviceConfig = { serviceConfig = {
Type = "simple"; Type = "simple";
User = cfg.user; User = cfg.user;
@ -86,10 +75,9 @@ in {
ExecStart = toString [ ExecStart = toString [
(getExe cfg.package) (getExe cfg.package)
"-d ${cfg.dataDir}" "-d ${cfg.dataDir}"
"-D ${cfg.downloadDir}"
"-l ${cfg.logDir}" "-l ${cfg.logDir}"
"-p ${toString cfg.port}" # "-p ${toString cfg.port}"
(optionalString (cfg.urlBase != null) "-u ${cfg.urlBase}") # (optionalString (cfg.urlBase != null) "-u ${cfg.urlBase}")
]; ];
# Hardening from komga service # Hardening from komga service

8
flake.lock generated
View file

@ -3,16 +3,16 @@
"Kapowarr-src": { "Kapowarr-src": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1744033989, "lastModified": 1744746361,
"narHash": "sha256-g+ORfY2UhPOk1bBwSTzAZ7zwbY+bgggOas6+9P1gWC4=", "narHash": "sha256-vu0nVGjwQSW5K1WtYeL8ixWQABJG0KgT6erenRK44Zs=",
"owner": "matt1432", "owner": "matt1432",
"repo": "Kapowarr", "repo": "Kapowarr",
"rev": "d797b9d7f3fee4c7ba7e7e9cd33ed78926c981e9", "rev": "d5a170f80b39b8d3477574211bd775291268a129",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "matt1432", "owner": "matt1432",
"ref": "build-system-bak", "ref": "build-system",
"repo": "Kapowarr", "repo": "Kapowarr",
"type": "github" "type": "github"
} }

View file

@ -4,7 +4,7 @@
Kapowarr-src = { Kapowarr-src = {
flake = false; flake = false;
owner = "matt1432"; owner = "matt1432";
ref = "build-system-bak"; ref = "build-system";
repo = "Kapowarr"; repo = "Kapowarr";
type = "github"; type = "github";
}; };

View file

@ -327,7 +327,7 @@ let
name = "Kapowarr-src"; name = "Kapowarr-src";
owner = "matt1432"; owner = "matt1432";
repo = "Kapowarr"; repo = "Kapowarr";
ref = "build-system-bak"; ref = "build-system";
# type = "path"; # type = "path";
# path = "/home/matt/git/Kapowarr"; # path = "/home/matt/git/Kapowarr";
} }

View file

@ -1,7 +1,9 @@
{ {
# nix build inputs # nix build inputs
lib, lib,
buildPythonApplication, stdenv,
python,
makeWrapper,
Kapowarr-src, Kapowarr-src,
# deps # deps
rar, rar,
@ -13,7 +15,6 @@
flask, flask,
flask-socketio, flask-socketio,
requests, requests,
setuptools,
typing-extensions, # from overrides typing-extensions, # from overrides
waitress, waitress,
websocket-client, websocket-client,
@ -24,37 +25,56 @@
pyproject = fromTOML (readFile "${Kapowarr-src}/pyproject.toml"); pyproject = fromTOML (readFile "${Kapowarr-src}/pyproject.toml");
dependencies = [
typing-extensions
requests
beautifulsoup4
flask
waitress
cryptography
bencoding
aiohttp
flask-socketio
websocket-client
];
pythonExe = getExe (python.withPackages (ps: dependencies));
pname = "kapowarr"; pname = "kapowarr";
version = "${pyproject.project.version}+${Kapowarr-src.shortRev or "dirty"}"; version = "${pyproject.project.version}+${Kapowarr-src.shortRev or "dirty"}";
in in
buildPythonApplication { stdenv.mkDerivation {
inherit pname version; inherit pname version;
format = "pyproject";
src = Kapowarr-src; src = Kapowarr-src;
nativeBuildInputs = [makeWrapper];
postPatch = '' postPatch = ''
# Remove shebang
sed -i 1d ./Kapowarr.py
# Disable PWA for now
substituteInPlace ./backend/internals/settings.py \
--replace-fail "with open(filename, 'w') as f:" "" \
--replace-fail "dump(manifest, f, indent=4)" ""
# TODO: makes sure this works # TODO: makes sure this works
substituteInPlace ./src/backend/implementations/converters.py \ substituteInPlace ./backend/implementations/converters.py \
--replace-fail \ --replace-fail \
"exe = folder_path('backend', 'lib', Constants.RAR_EXECUTABLES[platform])" \ "exe = folder_path('backend', 'lib', Constants.RAR_EXECUTABLES[platform])" \
"exe = '${getExe rar}'" "exe = '${getExe rar}'"
''; '';
build-system = [setuptools]; buildPhase = ''
mkdir -p $out/${python.sitePackages}
cp -r ./. $out/${python.sitePackages}
'';
dependencies = [ installPhase = ''
typing-extensions makeWrapper ${pythonExe} $out/bin/kapowarr \
requests --add-flags "$out/${python.sitePackages}/Kapowarr.py"
beautifulsoup4 '';
flask
waitress
cryptography
bencoding
aiohttp
flask-socketio
websocket-client
];
meta = { meta = {
inherit (rar.meta) platforms; inherit (rar.meta) platforms;