From 68803636acdba905d64d34d8986d5f99f07b6d7a Mon Sep 17 00:00:00 2001 From: bit Date: Sun, 10 Nov 2024 10:50:35 +0100 Subject: [PATCH] nixify --- default.nix | 34 ++++++++++++++++++++++++++++++ flake.lock | 27 ++++++++++++++++++++++++ flake.nix | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++ setup.cfg | 2 +- 4 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 default.nix create mode 100644 flake.lock create mode 100644 flake.nix diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..c1fbe40 --- /dev/null +++ b/default.nix @@ -0,0 +1,34 @@ +{ + packageName, + version, + + buildPythonPackage, + + # build-system + setuptools_scm, + + # dependencies + pydantic, + typing-extensions, +}: + +let + pname = (builtins.replaceStrings ["-"] ["_"] packageName); +in buildPythonPackage rec { + inherit pname version; + pyproject = true; + build-system = [ setuptools_scm ]; + src = ./.; + + propagatedBuildInputs = [ + pydantic + typing-extensions + ]; + + pythonImportsCheck = [ pname ]; + + meta = { + description = "Add support for deserialization of pydantic child models"; + homepage = "https://git.chaosbit.de/bit/pydanticuuidmodel"; + }; +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..8dcbdd4 --- /dev/null +++ b/flake.lock @@ -0,0 +1,27 @@ +{ + "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 new file mode 100644 index 0000000..259269d --- /dev/null +++ b/flake.nix @@ -0,0 +1,59 @@ +{ + description = "Add support for deserialization of pydantic child models"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + }; + + outputs = { self, nixpkgs }: 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 ++ [ + (final: prev: { + "${packageName}" = self.packages."${system}".default; + }) + ]; + }); + + 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; + }; + + }; +} diff --git a/setup.cfg b/setup.cfg index 547d7e2..7d6b8d4 100644 --- a/setup.cfg +++ b/setup.cfg @@ -13,7 +13,7 @@ classifiers = [options] install_requires = - pydantic + pydantic==1.9.1 package_dir= =src packages=find: