seth
2025-03-15 12:26:42 -04:00
committed by Seth Flynn
parent a5dcac83df
commit 7bdcfa1db8
+109 -47
View File
@@ -1,58 +1,23 @@
{
lib,
fetchFromGitHub,
nixosTests,
nix-update-script,
python3,
nixosTests,
python3Packages,
}:
let
python = python3.override {
self = python;
packageOverrides = self: super: {
sqlalchemy = super.sqlalchemy_1_4;
};
};
in
python.pkgs.buildPythonApplication rec {
python3Packages.buildPythonApplication rec {
pname = "calibre-web";
version = "0.6.22";
version = "0.6.24";
pyproject = true;
src = fetchFromGitHub {
owner = "janeczku";
repo = "calibre-web";
rev = version;
hash = "sha256-nWZmDasBH+DW/+Cvw510mOv11CXorRnoBwNFpoKPErY=";
tag = version;
hash = "sha256-DYhlD3ly6U/e5cDlsubDyW1uKeCtB+HrpagJlNDJhyI=";
};
propagatedBuildInputs = with python.pkgs; [
advocate
apscheduler
babel
bleach
chardet
flask
flask-babel
flask-limiter
flask-login
flask-principal
flask-simpleldap
flask-wtf
iso-639
jsonschema
lxml
pypdf
python-magic
pytz
regex
requests
sqlalchemy
tornado
unidecode
wand
werkzeug
];
patches = [
# default-logger.patch switches default logger to /dev/stdout. Otherwise calibre-web tries to open a file relative
# to its location, which can't be done as the store is read-only. Log file location can later be configured using UI
@@ -70,12 +35,108 @@ python.pkgs.buildPythonApplication rec {
mv cps.py src/calibreweb/__init__.py
mv cps src/calibreweb
substituteInPlace setup.cfg \
--replace-fail "cps = calibreweb:main" "calibre-web = calibreweb:main"
substituteInPlace pyproject.toml \
--replace-fail 'cps = "calibreweb:main"' 'calibre-web = "calibreweb:main"'
'';
# Upstream repo doesn't provide any tests.
doCheck = false;
build-system = [ python3Packages.setuptools ];
dependencies = with python3Packages; [
apscheduler
babel
bleach
chardet
cryptography
flask
flask-babel
flask-httpauth
flask-limiter
flask-principal
flask-wtf
iso-639
lxml
netifaces-plus
pycountry
pypdf
python-magic
pytz
regex
requests
sqlalchemy
tornado
unidecode
urllib3
wand
];
optional-dependencies = {
comics = with python3Packages; [
comicapi
natsort
];
gdrive = with python3Packages; [
gevent
google-api-python-client
greenlet
httplib2
oauth2client
pyasn1-modules
# https://github.com/NixOS/nixpkgs/commit/bf28e24140352e2e8cb952097febff0e94ea6a1e
# pydrive2
pyyaml
rsa
uritemplate
];
gmail = with python3Packages; [
google-api-python-client
google-auth-oauthlib
];
# We don't support the goodreads feature, as the `goodreads` package is
# archived and depends on other long unmaintained packages (rauth & nose)
# goodreads = [ ];
kobo = with python3Packages; [ jsonschema ];
ldap = with python3Packages; [
flask-simpleldap
python-ldap
];
metadata = with python3Packages; [
faust-cchardet
html2text
markdown2
mutagen
py7zr
pycountry
python-dateutil
rarfile
scholarly
];
oauth = with python3Packages; [
flask-dance
sqlalchemy-utils
];
};
pythonRelaxDeps = [
"apscheduler"
"bleach"
"cryptography"
"flask"
"flask-limiter"
"lxml"
"pypdf"
"regex"
];
nativeCheckInputs = lib.flatten (lib.attrValues optional-dependencies);
pythonImportsCheck = [ "calibreweb" ];
passthru = {
tests.calibre-web = nixosTests.calibre-web;
@@ -85,9 +146,10 @@ python.pkgs.buildPythonApplication rec {
meta = with lib; {
description = "Web app for browsing, reading and downloading eBooks stored in a Calibre database";
homepage = "https://github.com/janeczku/calibre-web";
changelog = "https://github.com/janeczku/calibre-web/releases/tag/${src.tag}";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ pborzenkov ];
platforms = platforms.all;
mainProgram = "calibre-web";
platforms = platforms.all;
};
}