diff --git a/flake.lock b/flake.lock index 96546a5..e79f8d6 100644 --- a/flake.lock +++ b/flake.lock @@ -25,11 +25,11 @@ ] }, "locked": { - "lastModified": 1741955947, - "narHash": "sha256-2lbURKclgKqBNm7hVRtWh0A7NrdsibD0EaWhahUVhhY=", + "lastModified": 1742670145, + "narHash": "sha256-xQ2F9f+ICAGBp/nNv3ddD2U4ZvzuLOci0u/5lyMXPvk=", "owner": "nix-community", "repo": "home-manager", - "rev": "4e12151c9e014e2449e0beca2c0e9534b96a26b4", + "rev": "63e77d09a133ac641a0c204e7cfb0c97e133706d", "type": "github" }, "original": { @@ -44,11 +44,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1742089599, - "narHash": "sha256-1yBAFE5yEGEjSWZ8BuPt9Yknq+cFwzW6Q86gs5rMkGI=", + "lastModified": 1742607855, + "narHash": "sha256-lUF/tpSON29qNIqhECX/Ue4qVmI3FOvMaW4iUnK49C4=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "bbf6f68ec16cead3c29d5ba33d5c52956dfaefdf", + "rev": "9818734e2117dac703767585d48b805fad3e7a5e", "type": "github" }, "original": { @@ -90,11 +90,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1741862977, - "narHash": "sha256-prZ0M8vE/ghRGGZcflvxCu40ObKaB+ikn74/xQoNrGQ=", + "lastModified": 1742512142, + "narHash": "sha256-8XfURTDxOm6+33swQJu/hx6xw1Tznl8vJJN5HwVqckg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cdd2ef009676ac92b715ff26630164bb88fec4e0", + "rev": "7105ae3957700a9646cc4b766f5815b23ed0c682", "type": "github" }, "original": { diff --git a/hosts/local-packages.nix b/hosts/local-packages.nix index 62f804d..7d89de7 100644 --- a/hosts/local-packages.nix +++ b/hosts/local-packages.nix @@ -1,13 +1,21 @@ -{ - config, - pkgs, - lib, - ... -}: let - customPkgs = import ../pkgs {inherit pkgs lib;}; +{ config, pkgs, lib, ... }: +let + customPkgs = import ../pkgs { inherit pkgs lib; }; in { + imports = [ + ../modules/python.nix + ]; + python.enable = true; environment.systemPackages = with pkgs; [ - # Applications + (python311.withPackages (pyPkgs: with pyPkgs; [ + requests + pip + virtualenv + ipython + ])) + python3Packages.pip + black + ruff brave # TODO: make a module to save browser stuff vesktop git @@ -89,4 +97,7 @@ in { nodePackages.pnpm zlib.dev ]; + environment.shellAliases = { + python = "python3.11"; + }; } diff --git a/modules/python.nix b/modules/python.nix index 240b5ff..d34d709 100644 --- a/modules/python.nix +++ b/modules/python.nix @@ -1,49 +1,49 @@ -{ - config, - pkgs, - lib, - ... -}: -let - customPkgs = import ../pkgs { inherit pkgs lib; }; -in { - options.custom.python = { - enable = lib.mkEnableOption "System Python Env"; - }; +{ config, pkgs, lib, ... }: - config = lib.mkIf config.custom.python.enable { +let + customPkgs = pkgs.callPackage ../pkgs { inherit pkgs lib; }; +in { + options.python = { + enable = lib.mkEnableOption "System Python Environment"; + }; + config = lib.mkIf config.python.enable { environment.systemPackages = with pkgs; [ - (python311.withPackages (ps: with ps; [ - virtualenv - (torch.override { cudaSupport = true; }) - torchvision - torchaudio - ipython + (python311.withPackages (pyPkgs: with pyPkgs; [ + numpy + python-pymatting + python-opencv-headless + python-rembg i3ipc - xlib + pandas + matplotlib + scipy + requests + pip + virtualenv + ipython six psutil pynvml pyqtgraph pyqt6 - numpy - pandas - matplotlib - scipy - requests click typer rich pyyaml pytz - onnxruntime pillow - timm - ] ++ [ customPkgs.python-rembg ])) + ])) python3Packages.pip - uv - ruff black + ruff + uv ]; + environment.variables = { + PIP_PREFIX = "$HOME/.local"; + PYTHONPATH = "$HOME/.local/lib/python3.11/site-packages"; + }; + environment.shellAliases = { + python = "python3.11"; + }; }; } diff --git a/pkgs/default.nix b/pkgs/default.nix index 8e3f6f3..aed9492 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,29 +1,44 @@ { pkgs ? import {}, lib ? pkgs.lib, -}: let - python-opencv-headless = pkgs.callPackage ./python-opencv-headless { - inherit (pkgs) lib fetchurl; - python311Packages = pkgs.python311.pkgs; - }; - - python-pymatting = pkgs.callPackage ./python-pymatting { - inherit (pkgs) lib fetchPypi; - python311Packages = pkgs.python311.pkgs; - }; - - python-rembg = pkgs.callPackage ./python-rembg { - inherit (pkgs) lib fetchPypi; - inherit python-pymatting python-opencv-headless; - python311Packages = pkgs.python311.pkgs; - }; -in { +}: { fish-rust = pkgs.callPackage ./fish-rust {}; - python-pymatting = python-pymatting; - python-opencv-headless = python-opencv-headless; - python-rembg = python-rembg; - + python-pymatting = pkgs.callPackage ./python-pymatting { + inherit lib; + fetchPypi = pkgs.fetchPypi; + python311Packages = pkgs.python311Packages; + }; + python-opencv-headless = pkgs.callPackage ./python-opencv-headless { + inherit lib; + fetchPypi = pkgs.fetchPypi; + cmake = pkgs.cmake; + pkg-config = pkgs.pkg-config; + stdenv = pkgs.stdenv; + makeWrapper = pkgs.makeWrapper; + python311Packages = pkgs.python311Packages; + }; + python-rembg = pkgs.callPackage ./python-rembg { + inherit lib; + fetchPypi = pkgs.fetchPypi; + python-pymatting = pkgs.callPackage ./python-pymatting { + inherit lib; + fetchPypi = pkgs.fetchPypi; + python311Packages = pkgs.python311Packages; + }; + python-opencv-headless = pkgs.callPackage ./python-opencv-headless { + inherit lib; + fetchPypi = pkgs.fetchPypi; + cmake = pkgs.cmake; + pkg-config = pkgs.pkg-config; + stdenv = pkgs.stdenv; + makeWrapper = pkgs.makeWrapper; + python311Packages = pkgs.python311Packages; + }; + python311Packages = pkgs.python311Packages; + }; vivid-icons = pkgs.callPackage ./vivid-icons { - inherit (pkgs) lib stdenv fetchFromGitHub; + inherit lib; + stdenv = pkgs.stdenv; + fetchFromGitHub = pkgs.fetchFromGitHub; }; } diff --git a/pkgs/python-opencv-headless/default.nix b/pkgs/python-opencv-headless/default.nix index 8b19864..3bc9fdf 100644 --- a/pkgs/python-opencv-headless/default.nix +++ b/pkgs/python-opencv-headless/default.nix @@ -1,23 +1,52 @@ -{lib, python311Packages, fetchurl}: +{ lib +, python311Packages +, fetchPypi +, stdenv +, makeWrapper +, cmake +, pkg-config +}: python311Packages.buildPythonPackage rec { pname = "opencv-python-headless"; - version = "4.9.0.80"; - format = "wheel"; + version = "4.11.0.86"; + format = "setuptools"; - src = fetchurl { - url = "https://files.pythonhosted.org/packages/71/19/3c65483a80a1d062d46ae20faf5404712d25cb1dfdcaf371efbd67c38544/opencv_python_headless-4.9.0.80-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"; - sha256 = "976656362d68d9f40a5c66f83901430538002465f7db59142784f3893918f3df"; + src = fetchPypi { + pname = "opencv-python-headless"; + inherit version; + format = "setuptools"; + sha256 = "mW6ygspLQ+xqOXJBTeDiMx9dnNorQQkaSXOcGfuEN5g="; }; + nativeBuildInputs = with python311Packages; [ + cmake + pkg-config + makeWrapper + scikit-build + ]; + + buildInputs = with python311Packages; [ + scikit-build + ]; + propagatedBuildInputs = with python311Packages; [ numpy + setuptools ]; + dontUseCmakeConfigure = true; + doCheck = false; + pythonImportsCheck = [ "cv2" ]; + + postFixup = '' + wrapPythonProgramsIn "$out/lib/python3.11/site-packages" "${stdenv.cc.cc.lib}" + ''; + meta = with lib; { - description = "Wrapper package for OpenCV python bindings"; + description = "Wrapper package for OpenCV python bindings (headless)"; homepage = "https://github.com/opencv/opencv-python"; license = licenses.mit; platforms = platforms.linux; diff --git a/pkgs/python-rembg/default.nix b/pkgs/python-rembg/default.nix index 7cf95c4..2a51257 100644 --- a/pkgs/python-rembg/default.nix +++ b/pkgs/python-rembg/default.nix @@ -1,44 +1,44 @@ -{ lib, -python311Packages, -fetchPypi, -python-pymatting, -python-opencv-headless +{ lib +, python311Packages +, fetchPypi +, python-pymatting +, python-opencv-headless }: python311Packages.buildPythonPackage rec { pname = "rembg"; version = "2.0.50"; format = "pyproject"; - src = fetchPypi { inherit pname version; - hash = "sha256-bMt/GbplRawFZUqoXq37zAq1dribnu/ZlIYTuUIS+DU="; + sha256 = "bMt/GbplRawFZUqoXq37zAq1dribnu/ZlIYTuUIS+DU="; }; - nativeBuildInputs = with python311Packages; [ poetry-core setuptools ]; - propagatedBuildInputs = with python311Packages; [ numpy onnxruntime - python-opencv-headless pillow pooch - python-pymatting scikit-image scipy tqdm aiohttp + pytorch-bin + ] ++ [ + python-opencv-headless + python-pymatting ]; - + pythonRemoveDeps = [ "opencv-python-headless" ]; + dontPrecompilePages = true; + doInstallCheck = false; doCheck = false; - meta = with lib; { description = "Tool to remove image backgrounds"; homepage = "https://github.com/danielgatis/rembg"; license = licenses.mit; platforms = platforms.all; - maintainers = with maintainers; ["Cobray"]; + maintainers = with maintainers; [ "Cobray" ]; }; }