diff --git a/configurations/nos/modules/comics/kapowarr/module.nix b/configurations/nos/modules/comics/kapowarr/module.nix index ba4891b5..a2edfe93 100644 --- a/configurations/nos/modules/comics/kapowarr/module.nix +++ b/configurations/nos/modules/comics/kapowarr/module.nix @@ -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; diff --git a/flake.lock b/flake.lock index 2457575b..06092d0e 100644 --- a/flake.lock +++ b/flake.lock @@ -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", diff --git a/flake.nix b/flake.nix index 2ea69d4a..fa9c1ba6 100644 --- a/flake.nix +++ b/flake.nix @@ -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"; diff --git a/inputs/default.nix b/inputs/default.nix index 3ff58904..5613aa24 100644 --- a/inputs/default.nix +++ b/inputs/default.nix @@ -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"; diff --git a/packages/default.nix b/packages/default.nix index 9859f356..25f78151 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -19,7 +19,7 @@ jmusicbot = final.callPackage ./jmusicbot {}; - kapowarr = import ./kapowarr final; + kapowarr = import ./kapowarr (final // inputs); komf = final.callPackage ./komf {}; diff --git a/packages/kapowarr/default.nix b/packages/kapowarr/default.nix index ac60a161..7a698db9 100644 --- a/packages/kapowarr/default.nix +++ b/packages/kapowarr/default.nix @@ -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;} diff --git a/packages/kapowarr/kapowarr/default.nix b/packages/kapowarr/kapowarr/default.nix index e59701cb..e04ef61b 100644 --- a/packages/kapowarr/kapowarr/default.nix +++ b/packages/kapowarr/kapowarr/default.nix @@ -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;