parent
9907e1e019
commit
6a4f471824
7 changed files with 52 additions and 74 deletions
|
@ -68,7 +68,7 @@ in {
|
||||||
wantedBy = ["multi-user.target"];
|
wantedBy = ["multi-user.target"];
|
||||||
|
|
||||||
environment = {
|
environment = {
|
||||||
KAPOWARR_PORT = toString cfg.port;
|
KAPOWARR_DEFAULT_PORT = toString cfg.port;
|
||||||
KAPOWARR_LOG_DIR = cfg.logDir;
|
KAPOWARR_LOG_DIR = cfg.logDir;
|
||||||
KAPOWARR_STATE_DIR = cfg.dataDir;
|
KAPOWARR_STATE_DIR = cfg.dataDir;
|
||||||
KAPOWARR_DOWNLOAD_DIR = cfg.downloadDir;
|
KAPOWARR_DOWNLOAD_DIR = cfg.downloadDir;
|
||||||
|
|
18
flake.lock
generated
18
flake.lock
generated
|
@ -1,5 +1,22 @@
|
||||||
{
|
{
|
||||||
"nodes": {
|
"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": {
|
"ags": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"astal": [
|
"astal": [
|
||||||
|
@ -1567,6 +1584,7 @@
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"Kapowarr-src": "Kapowarr-src",
|
||||||
"ags": "ags",
|
"ags": "ags",
|
||||||
"astal": "astal",
|
"astal": "astal",
|
||||||
"bat-theme-src": "bat-theme-src",
|
"bat-theme-src": "bat-theme-src",
|
||||||
|
|
|
@ -1,6 +1,13 @@
|
||||||
# Do not modify! This file is generated.
|
# Do not modify! This file is generated.
|
||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
|
Kapowarr-src = {
|
||||||
|
flake = false;
|
||||||
|
owner = "matt1432";
|
||||||
|
ref = "build-system";
|
||||||
|
repo = "Kapowarr";
|
||||||
|
type = "github";
|
||||||
|
};
|
||||||
ags = {
|
ags = {
|
||||||
inputs = {
|
inputs = {
|
||||||
astal.follows = "astal";
|
astal.follows = "astal";
|
||||||
|
|
|
@ -321,6 +321,14 @@ let
|
||||||
}
|
}
|
||||||
|
|
||||||
# Overlays & packages
|
# Overlays & packages
|
||||||
|
{
|
||||||
|
name = "Kapowarr-src";
|
||||||
|
owner = "matt1432";
|
||||||
|
repo = "Kapowarr";
|
||||||
|
ref = "build-system";
|
||||||
|
# type = "path";
|
||||||
|
# path = "/home/matt/git/Kapowarr";
|
||||||
|
}
|
||||||
{
|
{
|
||||||
type = "gitlab";
|
type = "gitlab";
|
||||||
owner = "rogs";
|
owner = "rogs";
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
jmusicbot = final.callPackage ./jmusicbot {};
|
jmusicbot = final.callPackage ./jmusicbot {};
|
||||||
|
|
||||||
kapowarr = import ./kapowarr final;
|
kapowarr = import ./kapowarr (final // inputs);
|
||||||
|
|
||||||
komf = final.callPackage ./komf {};
|
komf = final.callPackage ./komf {};
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
# nix build inputs
|
# nix build inputs
|
||||||
python3Packages,
|
python3Packages,
|
||||||
|
Kapowarr-src,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
pyPkgs = python3Packages.override {
|
pyPkgs = python3Packages.override {
|
||||||
|
@ -10,4 +11,4 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
pyPkgs.callPackage ./kapowarr {}
|
pyPkgs.callPackage ./kapowarr {inherit Kapowarr-src;}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# nix build inputs
|
# nix build inputs
|
||||||
lib,
|
lib,
|
||||||
buildPythonApplication,
|
buildPythonApplication,
|
||||||
fetchFromGitHub,
|
Kapowarr-src,
|
||||||
python,
|
python,
|
||||||
# deps
|
# deps
|
||||||
rar,
|
rar,
|
||||||
|
@ -21,51 +21,43 @@
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib) getExe;
|
inherit (lib) getExe;
|
||||||
|
inherit (builtins) fromTOML readFile;
|
||||||
|
|
||||||
|
pyproject = fromTOML (readFile "${Kapowarr-src}/pyproject.toml");
|
||||||
|
|
||||||
pname = "kapowarr";
|
pname = "kapowarr";
|
||||||
version = "1.1.1+pkG4o8O";
|
version = "${pyproject.project.version}+${Kapowarr-src.shortRev or "dirty"}";
|
||||||
in
|
in
|
||||||
buildPythonApplication {
|
buildPythonApplication {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
format = "pyproject";
|
format = "pyproject";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = Kapowarr-src;
|
||||||
owner = "Casvt";
|
|
||||||
repo = "Kapowarr";
|
|
||||||
rev = "a97f907555bf02d5e737812bfa5c189d8cc639ba";
|
|
||||||
hash = "sha256-pkG4o8OfLu02M50JSnbrBDNiwnbYEJNutoutwBcLFwU=";
|
|
||||||
};
|
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
# TODO: makes sure this works
|
# TODO: makes sure this works
|
||||||
substituteInPlace ./backend/implementations/converters.py \
|
substituteInPlace ./src/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}'"
|
||||||
|
|
||||||
# Insert import for following substituteInPlace
|
# 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 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)" \
|
"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 \
|
substituteInPlace ./src/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'))" \
|
|
||||||
--replace-fail \
|
--replace-fail \
|
||||||
"download_folder: str = folder_path('temp_downloads')" \
|
"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];
|
build-system = [setuptools];
|
||||||
|
@ -83,48 +75,6 @@ in
|
||||||
websocket-client
|
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.
|
# 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
|
# 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
|
# But using --run allows setting default vars that are evaluated on run and not during
|
||||||
# build time.
|
# build time.
|
||||||
makeWrapperArgs = [
|
makeWrapperArgs = [
|
||||||
"--set-default KAPOWARR_PORT 5656"
|
|
||||||
''
|
''
|
||||||
--run "OUTDIR=\"$out\""
|
--run "OUTDIR=\"$out\""
|
||||||
--run '
|
--run '
|
||||||
|
@ -149,11 +98,6 @@ in
|
||||||
''
|
''
|
||||||
];
|
];
|
||||||
|
|
||||||
postFixup = ''
|
|
||||||
# I prefer a clean name for the executable
|
|
||||||
mv $out/bin/Kapowarr.py $out/bin/${pname}
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
inherit (rar.meta) platforms;
|
inherit (rar.meta) platforms;
|
||||||
mainProgram = pname;
|
mainProgram = pname;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue