diff --git a/flake.nix b/flake.nix index 446c016..4e6764c 100644 --- a/flake.nix +++ b/flake.nix @@ -3,8 +3,10 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - # pyproject-nix.url = "github:pyproject-nix/pyproject.nix"; - # pyproject-nix.inputs.nixpkgs.follows = "nixpkgs"; + pyproject-nix = { + url = "github:pyproject-nix/pyproject.nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; flake-utils.url = "github:numtide/flake-utils"; }; @@ -13,78 +15,139 @@ nixpkgs, flake-utils, ... - }: - flake-utils.lib.eachDefaultSystem (system: let - pkgs = nixpkgs.legacyPackages.${system}; + }@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; - 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 - ] ++ builtins.map (dep: pkgs.python3Packages.${dep}) project.dependencies; + 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="; }; - editablePackage = pkgs.python3.pkgs.mkPythonEditablePackage { - pname = project.name; - inherit (project) scripts version; - root = "$PWD"; + 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 { - devShells = { - default = pkgs.mkShell { - inputsFrom = [ - package - ]; - - buildInputs = [ - # our package - editablePackage - - ################# - # VARIOUS TOOLS # - ################# - - pkgs.python3Packages.build - pkgs.python3Packages.ipython - - #################### - # 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 - ]; - }; + # inherit inswapperModel; + # "${projectName}" = protestswap; + default = pkgs.symlinkJoin { + name = "${projectName}"; + paths = [inswapperModel protestswap]; }; - - packages = { - "${project.name}" = package; - default = self.packages.${system}.${project.name}; - }; - }); + }; + }; } + + + # 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}; + # }; + # }); diff --git a/pyproject.toml b/pyproject.toml index c67b0fc..78d99e8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "protestswap" -version = "0.1.0" +version = "0.0.1" license-files = ["LICEN[CS]E*"] description = "A minimal pyproject.toml" authors = [ ]