{ description = "Pre-built CPU-only OpenCV packages for Python. "; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; pythonPackages = pkgs.python312Packages; ultralytics-thop = pkgs.python3Packages.buildPythonPackage rec { version = "2.0.9"; pname = "ultralytics-htop"; pyproject = true; src = pkgs.fetchFromGitHub { owner = "ultralytics"; repo = "thop"; rev = "d304cebcc81f65a7b0d4304290f2abb100407ec0"; hash = "sha256-FzjxEk6yiG+IWwQEzsHcEAB4iVQT1QsyoGlG4I9lSwU="; fetchSubmodules = true; }; propagatedBuildInputs = [ pythonPackages.numpy pythonPackages.torch ]; nativeBuildInputs = [ pythonPackages.setuptools pythonPackages.setuptools-scm ]; meta = with pkgs.lib; { description = '' THOP offers an intuitive API to profile PyTorch models by calculating the number of MACs and parameters. This functionality is crucial for assessing the computational efficiency and memory footprint of deep learning models. ''; homepage = "https://github.com/ultralytics/thop"; license = pkgs.lib.licenses.mit; maintainers = with maintainers; [ ]; }; }; ultralytics = pkgs.python3Packages.buildPythonPackage rec { # pname = "opencv-python"; # version = "4.10.0.84"; version = "8.3.13"; pname = "ultralytics"; pyproject = true; src = pkgs.fetchFromGitHub { owner = "ultralytics"; repo = "ultralytics"; rev = "15e6133534d82ec6845308f1e258d77c1b9bab36"; hash = "sha256-Wq2pCD0l0AbdQ2IPfEfxPffSxgv/5qFadB4BHAExEbU="; fetchSubmodules = true; }; propagatedBuildInputs = [ pythonPackages.requests pythonPackages.pyyaml pythonPackages.torch pythonPackages.tqdm pythonPackages.psutil pythonPackages.torchvision pythonPackages.pandas pythonPackages.matplotlib pythonPackages.seaborn ultralytics-thop ]; nativeBuildInputs = [ pythonPackages.setuptools pythonPackages.setuptools-scm pythonPackages.pip # pythonPackages.scikit-build # pythonPackages.numpy_2 # pythonPackages.cmake ]; nativeCheckInputs = [ pythonPackages.more-itertools pythonPackages.pytestCheckHook ]; # disabledTests = [ # # creates a file, checks when it was last accessed/modified # # AssertionError: assert 1650036414.0 == 1650036414.960688 # # "test_utime" # ]; # pythonImportsCheck = [ "cv2" ]; meta = with pkgs.lib; { description = "Object-oriented file system path manipulation"; homepage = "https://github.com/jaraco/path"; changelog = "https://github.com/jaraco/path/blob/v${version}/NEWS.rst"; license = pkgs.lib.licenses.mit; maintainers = with maintainers; [ ]; }; }; env = pkgs.python312.withPackages (ps: [ ultralytics ]); in { packages = { default = pkgs.python312Packages.path; env = env; }; devShells.default = pkgs.mkShell { buildInputs = [ env ]; }; }); }