{ description = "DLSite download organizer"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; outputs = { self, nixpkgs }: let pkgs = import nixpkgs { system = "x86_64-linux"; config.allowUnfree = true; }; in { packages.x86_64-linux = with pkgs.python3Packages; rec { lxml5 = buildPythonPackage rec { pname = "lxml"; version = "5.0.1"; format = "setuptools"; src = pkgs.fetchFromGitHub { owner = pname; repo = pname; rev = "refs/tags/lxml-${version}"; hash = "sha256-RAh93UJiBcRxXSARJvD3o91i+MdelwlaCEK2aVu0joc="; }; nativeBuildInputs = with pkgs; [ libxml2.dev libxslt.dev cython_3 ]; buildInputs = with pkgs; [ libxml2 libxslt zlib ]; # tests are meant to be ran "in-place" in the same directory as src doCheck = false; pythonImportsCheck = [ "lxml" "lxml.etree" ]; }; dlsite-async = buildPythonPackage rec { pname = "dlsite_async"; version = "0.3.0"; src = fetchPypi { inherit pname version; sha256 = "sha256-cUhH7eNIoQUKt0nUl+wSGFGbZpKmtwPWyVR2PTJI1co="; }; pyproject = true; nativeBuildInputs = [ pkgs.pdm ]; propagatedBuildInputs = [ lxml5 aiohttp beautifulsoup4 pdm-backend ]; }; dlibrary = buildPythonApplication { pname = "dlibrary"; version = "0.2"; pyproject = true; propagatedBuildInputs = [ pymupdf pillow requests dlsite-async jinja2 importlib-resources setuptools libsixel (rarfile.override { useUnrar = true; }) pyuca ]; src = ./.; }; default = dlibrary; }; }; }