{ description = "Flake using pyproject.toml metadata"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; pyproject-nix = { url = "github:pyproject-nix/pyproject.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils, ... }@inputs: let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; project = inputs.pyproject-nix.lib.project.loadPyproject { projectRoot = ./.; }; projectName = project.pyproject.project.name; python = pkgs.python3; inswapperModel = pkgs.stdenv.mkDerivation { name = "inswapper"; src = pkgs.fetchurl { url = "https://huggingface.co/thebiglaskowski/inswapper_128.onnx/resolve/main/inswapper_128.onnx"; hash = "sha256-5KPwjHU8ty0E4Qqg99vj3uu/OVZ9Tq1tzgjpiqSeFq8="; }; unpackPhase = ''true''; phases = [ # "installPhase" ]; installPhase = let dest = "$out/var/lib/${projectName}"; in /*shell*/'' ls -l "$src" mkdir -p "${dest}" cp $src ${dest}/inswapper_128.onnx ''; }; in { devShells.${system}.default = let arg = project.renderers.withPackages { inherit python;}; pythonEnv = python.withPackages arg; in pkgs.mkShell { packages = [ pythonEnv inswapperModel]; shellHook = '' export FOO=${inswapperModel}/var/lib/${projectName}/inswapper_128.onnx echo "Binary at '$FOO'" ''; }; packages.${system} = let attrs = project.renderers.buildPythonPackage { inherit python; }; protestswap = (python.pkgs.buildPythonPackage ( attrs // { buildInputs = [ inswapperModel ]; } )); in { # inherit inswapperModel; # "${projectName}" = protestswap; default = pkgs.symlinkJoin { name = "${projectName}"; paths = [inswapperModel protestswap]; }; }; }; } # flake-utils.lib.eachDefaultSystem (system: let # pyproject = builtins.fromTOML (builtins.readFile ./pyproject.toml); # project = pyproject.project; # # package = pkgs.python3Packages.buildPythonPackage { # pname = project.name; # inherit (project) version; # format = "pyproject"; # # src = ./.; # # build-system = with pkgs.python3Packages; [ # uv-build # ]; # # # # test dependencies # nativeCheckInputs = with pkgs; [ # # python3Packages.mypy # # python3Packages.pytest # taplo # ]; # # # checkPhase = ''''; # # propagatedBuildInputs = with pkgs; [ # python3Packages.click # python3Packages.insightface # # ] ++ builtins.map (dep: pkgs.python3Packages.${dep}) project.dependencies; # }; # # editablePackage = pkgs.python3.pkgs.mkPythonEditablePackage { # pname = project.name; # inherit (project) scripts version; # root = "$PWD"; # }; # in { # devShells = { # default = pkgs.mkShell { # inputsFrom = [ # package # ]; # # buildInputs = [ # # our package # editablePackage # # ################# # # VARIOUS TOOLS # # ################# # # pkgs.python3Packages.build # pkgs.python3Packages.ipython # pkgs.python3Packages.insightface # inswapperModel # # #################### # # EDITOR/LSP TOOLS # # #################### # # # LSP server: # pkgs.python3Packages.python-lsp-server # # # LSP server plugins of interest: # pkgs.python3Packages.pylsp-mypy # pkgs.python3Packages.pylsp-rope # pkgs.python3Packages.python-lsp-ruff # ]; # }; # }; # # packages = { # "inswapper-model" = inswapperModel; # "${project.name}" = package; # default = self.packages.${system}.${project.name}; # }; # });