feat(kapowarr): move to my fork

This commit is contained in:
matt1432 2025-03-31 21:44:26 -04:00
parent 9907e1e019
commit 6a4f471824
7 changed files with 52 additions and 74 deletions
configurations/nos/modules/comics/kapowarr
flake.lockflake.nix
inputs
packages

View file

@ -68,7 +68,7 @@ in {
wantedBy = ["multi-user.target"];
environment = {
KAPOWARR_PORT = toString cfg.port;
KAPOWARR_DEFAULT_PORT = toString cfg.port;
KAPOWARR_LOG_DIR = cfg.logDir;
KAPOWARR_STATE_DIR = cfg.dataDir;
KAPOWARR_DOWNLOAD_DIR = cfg.downloadDir;

18
flake.lock generated
View file

@ -1,5 +1,22 @@
{
"nodes": {
"Kapowarr-src": {
"flake": false,
"locked": {
"lastModified": 1743470007,
"narHash": "sha256-BSf3wx789Gg/OwGM9sIrxIsphh06s1x18VRmJ5S5P9w=",
"owner": "matt1432",
"repo": "Kapowarr",
"rev": "08e7eacf410c3141513680688d09b4e51600caf5",
"type": "github"
},
"original": {
"owner": "matt1432",
"ref": "build-system",
"repo": "Kapowarr",
"type": "github"
}
},
"ags": {
"inputs": {
"astal": [
@ -1567,6 +1584,7 @@
},
"root": {
"inputs": {
"Kapowarr-src": "Kapowarr-src",
"ags": "ags",
"astal": "astal",
"bat-theme-src": "bat-theme-src",

View file

@ -1,6 +1,13 @@
# 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";

View file

@ -321,6 +321,14 @@ 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

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

View file

@ -1,6 +1,7 @@
{
# nix build inputs
python3Packages,
Kapowarr-src,
...
}: let
pyPkgs = python3Packages.override {
@ -10,4 +11,4 @@
};
};
in
pyPkgs.callPackage ./kapowarr {}
pyPkgs.callPackage ./kapowarr {inherit Kapowarr-src;}

View file

@ -2,7 +2,7 @@
# nix build inputs
lib,
buildPythonApplication,
fetchFromGitHub,
Kapowarr-src,
python,
# deps
rar,
@ -21,51 +21,43 @@
...
}: let
inherit (lib) getExe;
inherit (builtins) fromTOML readFile;
pyproject = fromTOML (readFile "${Kapowarr-src}/pyproject.toml");
pname = "kapowarr";
version = "1.1.1+pkG4o8O";
version = "${pyproject.project.version}+${Kapowarr-src.shortRev or "dirty"}";
in
buildPythonApplication {
inherit pname version;
format = "pyproject";
src = fetchFromGitHub {
owner = "Casvt";
repo = "Kapowarr";
rev = "a97f907555bf02d5e737812bfa5c189d8cc639ba";
hash = "sha256-pkG4o8OfLu02M50JSnbrBDNiwnbYEJNutoutwBcLFwU=";
};
src = Kapowarr-src;
postPatch = ''
# TODO: makes sure this works
substituteInPlace ./backend/implementations/converters.py \
substituteInPlace ./src/backend/implementations/converters.py \
--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' ./backend/base/logging.py
sed -i '/# -\*- coding: utf-8 -\*-/a from os import environ' ./src/backend/base/logging.py
substituteInPlace ./backend/base/logging.py --replace-fail \
substituteInPlace ./src/backend/base/logging.py --replace-fail \
"return folder_path(Constants.LOGGER_FILENAME)" \
"return f\"{environ.get('KAPOWARR_LOG_DIR')}/{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' ./backend/internals/db.py
sed -i '/from __future__ import annotations/a from os import environ' ./src/backend/internals/db.py
substituteInPlace ./backend/internals/db.py --replace-fail \
substituteInPlace ./src/backend/internals/db.py --replace-fail \
"db_folder or folder_path(*Constants.DB_FOLDER)" \
"environ.get('KAPOWARR_STATE_DIR')"
"environ.get('KAPOWARR_STATE_DIR') or folder_path(*Constants.DB_FOLDER)"
substituteInPlace ./backend/internals/settings.py \
--replace-fail \
"from os import urandom" \
"from os import urandom, environ" \
--replace-fail \
"port: int = 5656" \
"port: int = int(environ.get('KAPOWARR_PORT'))" \
substituteInPlace ./src/backend/internals/settings.py \
--replace-fail \
"download_folder: str = folder_path('temp_downloads')" \
"download_folder: str = environ.get('KAPOWARR_DOWNLOAD_DIR')"
"download_folder: str = environ.get('KAPOWARR_DOWNLOAD_DIR') or folder_path('temp_downloads')"
'';
build-system = [setuptools];
@ -83,48 +75,6 @@ in
websocket-client
];
preBuild = ''
sed -i "s/bs4.*/beautifulsoup4 ~= 4.12.3/" requirements.txt
cat >> pyproject.toml << EOF
[build-system]
build-backend = "setuptools.build_meta"
requires = ["setuptools"]
[project]
name = "${pname}"
version = "${version}"
dynamic = [ "dependencies", "optional-dependencies" ]
[tool.setuptools]
script-files = ["Kapowarr.py"]
py-modules = [
"Kapowarr",
]
packages = [
"frontend",
"frontend.static",
"backend",
"backend.base",
"backend.features",
"backend.implementations",
"backend.implementations.direct_clients",
"backend.implementations.torrent_clients",
"backend.internals",
"backend.lib",
]
package-data."frontend" = [ "templates/*" ]
package-data."frontend.static" = [ "css/*", "img/*", "js/*", "json/*" ]
dynamic."dependencies".file = "requirements.txt"
dynamic."optional-dependencies".dev.file = "requirements-dev.txt"
EOF
'';
# 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
@ -132,7 +82,6 @@ in
# But using --run allows setting default vars that are evaluated on run and not during
# build time.
makeWrapperArgs = [
"--set-default KAPOWARR_PORT 5656"
''
--run "OUTDIR=\"$out\""
--run '
@ -149,11 +98,6 @@ in
''
];
postFixup = ''
# I prefer a clean name for the executable
mv $out/bin/Kapowarr.py $out/bin/${pname}
'';
meta = {
inherit (rar.meta) platforms;
mainProgram = pname;