refactor(kapowarr): move some code to my fork

This commit is contained in:
matt1432 2025-04-28 16:55:10 -04:00
parent 8193a7db1e
commit 0b20a92ac8
10 changed files with 49 additions and 180 deletions
configurations/nos/modules/comics/kapowarr
flake.lockflake.nix
inputs
packages

View file

@ -1,6 +1,7 @@
{
config,
lib,
kapowarr,
pkgs,
...
}: let
@ -19,7 +20,7 @@
in {
options.services.kapowarr = {
enable = mkEnableOption "kapowarr";
package = mkPackageOption pkgs.selfPackages "kapowarr" {};
package = mkPackageOption pkgs "kapowarr" {};
user = mkOption {
type = types.str;
@ -62,6 +63,10 @@ in {
};
config = mkIf cfg.enable {
nixpkgs.overlays = [
kapowarr.overlays.default
];
systemd.services.kapowarr = {
description = "Kapowarr";
after = ["network.target"];

43
flake.lock generated
View file

@ -1,22 +1,5 @@
{
"nodes": {
"Kapowarr-src": {
"flake": false,
"locked": {
"lastModified": 1745186869,
"narHash": "sha256-zqxKKADZLwwQziWHHNhniG6Z+JgKWvEW2c04Obya8bA=",
"owner": "matt1432",
"repo": "Kapowarr",
"rev": "951d2f34ecd91176a4225e56b9f1d4359cff4bad",
"type": "github"
},
"original": {
"owner": "matt1432",
"ref": "build-system",
"repo": "Kapowarr",
"type": "github"
}
},
"ags": {
"inputs": {
"astal": [
@ -850,6 +833,30 @@
"type": "github"
}
},
"kapowarr": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"systems": [
"systems"
]
},
"locked": {
"lastModified": 1745871889,
"narHash": "sha256-lqwEbN0dIEMJVYGEZhDl/ZP9p2ClZJStdLg6yWM1q/E=",
"owner": "matt1432",
"repo": "Kapowarr",
"rev": "2a54e959f2cbe4f3f0c3ba79ced17dc510c914e9",
"type": "github"
},
"original": {
"owner": "matt1432",
"ref": "build-system",
"repo": "Kapowarr",
"type": "github"
}
},
"kompass": {
"inputs": {
"astal": [
@ -1605,7 +1612,6 @@
},
"root": {
"inputs": {
"Kapowarr-src": "Kapowarr-src",
"ags": "ags",
"astal": "astal",
"bat-theme-src": "bat-theme-src",
@ -1631,6 +1637,7 @@
"hyprland-plugins": "hyprland-plugins",
"hyprpaper": "hyprpaper",
"jovian": "jovian",
"kapowarr": "kapowarr",
"kompass": "kompass",
"lib-aggregate": "lib-aggregate",
"libratbag-src": "libratbag-src",

View file

@ -1,13 +1,6 @@
# Do not modify! This file is generated.
{
inputs = {
Kapowarr-src = {
flake = false;
owner = "matt1432";
ref = "build-system";
repo = "Kapowarr";
type = "github";
};
ags = {
inputs = {
astal.follows = "astal";
@ -190,6 +183,16 @@
repo = "Jovian-NixOS";
type = "github";
};
kapowarr = {
inputs = {
nixpkgs.follows = "nixpkgs";
systems.follows = "systems";
};
owner = "matt1432";
ref = "build-system";
repo = "Kapowarr";
type = "github";
};
kompass = {
inputs = {
astal.follows = "astal";

View file

@ -156,6 +156,14 @@ let
owner = "mateoradman";
repo = "bazarr-bulk";
};
kapowarr = mkInput {
owner = "matt1432";
repo = "Kapowarr";
ref = "build-system";
# type = "path";
# path = "/home/matt/git/Kapowarr";
};
};
desktopInputs = {
@ -329,14 +337,6 @@ let
}
# Overlays & packages
{
name = "Kapowarr-src";
owner = "matt1432";
repo = "Kapowarr";
ref = "build-system";
# type = "path";
# path = "/home/matt/git/Kapowarr";
}
{
type = "gitlab";
owner = "rogs";

View file

@ -12,7 +12,6 @@ This directory contains every derivations for packages exposed by this flake.
| `homepage` | Highly customisable dashboard with Docker and service API integrations. | https://gethomepage.dev |
| `jdownloader-cli` | Command line interface to JDownloader based on jdownloader-go library. | https://github.com/rkosegi/jdownloader-cli |
| `jmusicbot` | Discord music bot that's easy to set up and run yourself | https://github.com/jagrosh/MusicBot |
| `kapowarr` | Kapowarr is a software to build and manage a comic book library, fitting in the \*arr suite of software. | https://casvt.github.io/Kapowarr |
| `komf` | Komf is a tool that fetches metadata and thumbnails for your digital comic book library. | https://github.com/Snd-R/komf |
| `libratbag` | Configuration library for gaming mice | https://github.com/libratbag/libratbag |
| `librespot-auth` | A simple program for populating a credentials.json via Spotify's zeroconf authentication. | https://github.com/dspearson/librespot-auth |

View file

@ -19,8 +19,6 @@
jmusicbot = final.callPackage ./jmusicbot {};
kapowarr = import ./kapowarr (final // inputs);
komf = final.callPackage ./komf {};
libratbag = final.callPackage ./libratbag {

View file

@ -1,17 +0,0 @@
{
# nix build inputs
buildPythonPackage,
fetchPypi,
...
}: let
pname = "bencoding";
version = "0.2.6";
in
buildPythonPackage {
inherit pname version;
src = fetchPypi {
inherit pname version;
hash = "sha256-Q8zjHUhj4p1rxhFVHU6fJlK+KZXp1eFbRtg4PxgNREA=";
};
}

View file

@ -1,14 +0,0 @@
{
# nix build inputs
python3Packages,
Kapowarr-src,
...
}: let
pyPkgs = python3Packages.override {
overrides = pyFinal: pyPrev: {
bencoding = pyFinal.callPackage ./bencoding {};
typing-extensions = pyFinal.callPackage ./typing-extensions {};
};
};
in
pyPkgs.callPackage ./kapowarr {inherit Kapowarr-src;}

View file

@ -1,89 +0,0 @@
{
# nix build inputs
lib,
stdenv,
python,
makeWrapper,
Kapowarr-src,
# deps
rar,
# python deps
aiohttp,
beautifulsoup4,
bencoding, # from overrides
cryptography,
flask,
flask-socketio,
requests,
typing-extensions, # from overrides
waitress,
websocket-client,
...
}: let
inherit (lib) getExe;
inherit (builtins) fromTOML readFile;
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";
version = "${pyproject.project.version}+${Kapowarr-src.shortRev or "dirty"}";
in
stdenv.mkDerivation {
inherit pname version;
src = Kapowarr-src;
nativeBuildInputs = [makeWrapper];
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
substituteInPlace ./backend/implementations/converters.py \
--replace-fail \
"exe = folder_path('backend', 'lib', Constants.RAR_EXECUTABLES[platform])" \
"exe = '${getExe rar}'"
'';
buildPhase = ''
mkdir -p $out/${python.sitePackages}
cp -r ./. $out/${python.sitePackages}
'';
installPhase = ''
makeWrapper ${pythonExe} $out/bin/kapowarr \
--add-flags "$out/${python.sitePackages}/Kapowarr.py"
'';
meta = {
inherit (rar.meta) platforms;
mainProgram = pname;
license = lib.licenses.gpl3Only;
homepage = "https://casvt.github.io/Kapowarr";
description = ''
Kapowarr is a software to build and manage a comic book library,
fitting in the *arr suite of software.
'';
};
}

View file

@ -1,23 +0,0 @@
{
# nix build inputs
buildPythonPackage,
fetchPypi,
# deps
flit-core,
...
}: let
pname = "typing_extensions";
version = "4.12.2";
in
buildPythonPackage {
inherit pname version;
format = "pyproject";
build-system = [flit-core];
dependencies = [flit-core];
src = fetchPypi {
inherit pname version;
hash = "sha256-Gn6tVcflWd1N7ohW46iLQSJav+HOjfV7fBORX+Eh/7g=";
};
}