diff --git a/flake.lock b/flake.lock deleted file mode 100644 index 8dcbdd4..0000000 --- a/flake.lock +++ /dev/null @@ -1,27 +0,0 @@ -{ - "nodes": { - "nixpkgs": { - "locked": { - "lastModified": 1730785428, - "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "root": { - "inputs": { - "nixpkgs": "nixpkgs" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/flake.nix b/flake.nix index 259269d..b8d048f 100644 --- a/flake.nix +++ b/flake.nix @@ -1,59 +1,54 @@ { description = "Add support for deserialization of pydantic child models"; - inputs = { - nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; - }; - - outputs = { self, nixpkgs }: let + outputs = { self }: let system = "x86_64-linux"; - pkgs = import nixpkgs { inherit system; }; packageName = "pydantic-uuid-model"; version = "1.1.0"; - - pydantic = (ps: ps.buildPythonPackage rec { - pname = "pydantic"; - version = "1.9.1"; - src = ps.fetchPypi { - inherit pname version; - sha256 = "sha256-HtmHw/8p//f9jD6jo+qHetMQquLvmImhGeItPy2waRo="; - }; - }); in { - packages."${system}" = { - "${packageName}" = pkgs.python3Packages.callPackage ./default.nix { - inherit packageName version; - pydantic = (pydantic pkgs.python3Packages); - }; - - default = self.packages."${system}"."${packageName}"; - - overlay = (final: prev: { - pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ + overlays = let + composeExtensions = ( + f: g: final: prev: + let + fApplied = f final prev; + prev' = prev // fApplied; + in + fApplied // g final prev'); + in { + default = builtins.foldl' composeExtensions (final: prev: {}) [ + self.overlays.pydantic + self.overlays."${packageName}" + ]; + pydantic = (pkgs-final: pkgs-prev: { + pythonPackagesExtensions = pkgs-prev.pythonPackagesExtensions ++ [ (final: prev: { - "${packageName}" = self.packages."${system}".default; + pydantic = pkgs-prev.python3Packages.callPackage ./pypi.nix { + pname = "pydantic"; + version = "1.9.1"; + sha256 = "sha256-HtmHw/8p//f9jD6jo+qHetMQquLvmImhGeItPy2waRo="; + }; + }) + ]; + }); + "${packageName}" = (pkgs-final: pkgs-prev: { + pythonPackagesExtensions = pkgs-prev.pythonPackagesExtensions ++ [ + (final: prev: { + "${packageName}" = pkgs-prev.python3Packages.callPackage ./default.nix { + inherit packageName version; + }; }) ]; }); - - dependencies = with pkgs; [ ]; }; - devShell."${system}" = let - pkgs = import nixpkgs { - inherit system; - overlays = [ self.packages."${system}".overlay ]; - }; - - customPython = with pkgs; (pkgs.python3.withPackages (ps: [ - ps."${packageName}" - ])); - - packages = [ customPython ] ++ self.packages."${system}".dependencies; - in pkgs.mkShell { - inherit packages; - }; + #devShell."${system}" = let + # pkgs = import nixpkgs { + # inherit system; + # overlays = [ self.overlays.default ]; + # }; + # packages = [ (pkgs.python3.withPackages (ps: [ ps."${packageName}" ])) ]; + #in pkgs.mkShell { inherit packages; }; }; } diff --git a/pypi.nix b/pypi.nix new file mode 100644 index 0000000..9fdf5e6 --- /dev/null +++ b/pypi.nix @@ -0,0 +1,15 @@ +{ + pname, + version, + sha256, + + buildPythonPackage, + + fetchPypi, +}: +buildPythonPackage rec { + inherit pname version; + src = fetchPypi { + inherit pname version sha256; + }; +}