diff --git a/packaging/flake.lock b/packaging/flake.lock index a5eb791..7cb5e3d 100644 --- a/packaging/flake.lock +++ b/packaging/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1726560853, - "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -18,34 +18,13 @@ "type": "github" } }, - "nix-github-actions": { - "inputs": { - "nixpkgs": [ - "poetry2nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1720066371, - "narHash": "sha256-uPlLYH2S0ACj0IcgaK9Lsf4spmJoGejR9DotXiXSBZQ=", - "owner": "nix-community", - "repo": "nix-github-actions", - "rev": "622f829f5fe69310a866c8a6cd07e747c44ef820", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nix-github-actions", - "type": "github" - } - }, "nixpkgs": { "locked": { - "lastModified": 1728241625, - "narHash": "sha256-yumd4fBc/hi8a9QgA9IT8vlQuLZ2oqhkJXHPKxH/tRw=", + "lastModified": 1732014248, + "narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c31898adf5a8ed202ce5bea9f347b1c6871f32d1", + "rev": "23e89b7da85c3640bbc2173fe04f4bd114342367", "type": "github" }, "original": { @@ -55,29 +34,49 @@ "type": "github" } }, - "poetry2nix": { + "pyproject-build-systems": { "inputs": { - "flake-utils": [ - "flake-utils" - ], - "nix-github-actions": "nix-github-actions", "nixpkgs": [ "nixpkgs" ], - "systems": "systems_2", - "treefmt-nix": "treefmt-nix" + "pyproject-nix": [ + "pyproject-nix" + ], + "uv2nix": [ + "uv2nix" + ] }, "locked": { - "lastModified": 1728266256, - "narHash": "sha256-RefXB9kqYch6uGT+mo6m3KTbNerfbDYz+EqkLb6YBbs=", + "lastModified": 1732194315, + "narHash": "sha256-EhGGKlxzfdENPwKLGtefqAufw5zAMzRuaARxG2hTPe8=", + "owner": "pyproject-nix", + "repo": "build-system-pkgs", + "rev": "5f38d53e9359e9e191ecbc3b8eb068bf613c713c", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "build-system-pkgs", + "type": "github" + } + }, + "pyproject-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1732109611, + "narHash": "sha256-x78cq+snot+gM+JScQgIV7QeEH5mVcdjdoOgfXVo24w=", "owner": "nix-community", - "repo": "poetry2nix", - "rev": "8e965fd42c0da4357c53d987bc62b54a954424da", + "repo": "pyproject.nix", + "rev": "55201d64687824ffe7dd98b622bfae87d01a568b", "type": "github" }, "original": { "owner": "nix-community", - "repo": "poetry2nix", + "repo": "pyproject.nix", "type": "github" } }, @@ -85,7 +84,9 @@ "inputs": { "flake-utils": "flake-utils", "nixpkgs": "nixpkgs", - "poetry2nix": "poetry2nix" + "pyproject-build-systems": "pyproject-build-systems", + "pyproject-nix": "pyproject-nix", + "uv2nix": "uv2nix" } }, "systems": { @@ -103,38 +104,26 @@ "type": "github" } }, - "systems_2": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "id": "systems", - "type": "indirect" - } - }, - "treefmt-nix": { + "uv2nix": { "inputs": { "nixpkgs": [ - "poetry2nix", "nixpkgs" + ], + "pyproject-nix": [ + "pyproject-nix" ] }, "locked": { - "lastModified": 1727984844, - "narHash": "sha256-xpRqITAoD8rHlXQafYZOLvUXCF6cnZkPfoq67ThN0Hc=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "4446c7a6fc0775df028c5a3f6727945ba8400e64", + "lastModified": 1732109782, + "narHash": "sha256-dYVBUPi/GREuVT1FaZRw6QIyQs8lECv0XW8Fk+LDlac=", + "owner": "adisbladis", + "repo": "uv2nix", + "rev": "07bb1b334e92105ebd525b1f2c5b121f106e6f1b", "type": "github" }, "original": { - "owner": "numtide", - "repo": "treefmt-nix", + "owner": "adisbladis", + "repo": "uv2nix", "type": "github" } } diff --git a/packaging/flake.nix b/packaging/flake.nix index 109fc92..ffc11fe 100644 --- a/packaging/flake.nix +++ b/packaging/flake.nix @@ -1,46 +1,58 @@ { description = "Python program to show your google calendar next meeting"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; - inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - inputs.flake-utils.url = "github:numtide/flake-utils"; - inputs.poetry2nix = { - url = "github:nix-community/poetry2nix"; - inputs.nixpkgs.follows = "nixpkgs"; - inputs.flake-utils.follows = "flake-utils"; + pyproject-nix = { + url = "github:nix-community/pyproject.nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + pyproject-build-systems = { + url = "github:pyproject-nix/build-system-pkgs"; + inputs.pyproject-nix.follows = "pyproject-nix"; + inputs.uv2nix.follows = "uv2nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + uv2nix = { + url = "github:adisbladis/uv2nix"; + inputs.pyproject-nix.follows = "pyproject-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; - outputs = { - self, nixpkgs, flake-utils, - poetry2nix, + uv2nix, + pyproject-nix, + pyproject-build-systems, + ... }: flake-utils.lib.eachDefaultSystem (system: let - p2n = import poetry2nix {inherit pkgs;}; - python = pkgs.python3; - projectDir = ../.; - overrides = p2n.overrides.withDefaults (final: prev: { - # use wheels to build ruff & mypy - ruff = prev.ruff.override { - preferWheel = true; - }; - mypy = prev.mypy.override { - preferWheel = true; - }; - }); - poetry_env = p2n.mkPoetryEnv { - inherit python projectDir overrides; - }; - poetry_app = p2n.mkPoetryApplication { - inherit python projectDir overrides; - }; + inherit (nixpkgs) lib; pkgs = nixpkgs.legacyPackages.${system}; + python = pkgs.python312; + # setup uv2nix workspace & overlay + workspace = uv2nix.lib.workspace.loadWorkspace {workspaceRoot = ../.;}; + overlay = workspace.mkPyprojectOverlay { + # Prefer prebuilt binary wheels as a package source. + sourcePreference = "wheel"; # or sourcePreference = "sdist"; + }; + pythonSet = + # Use base package set from pyproject.nix builders + (pkgs.callPackage pyproject-nix.build.packages { + inherit python; + }) + .overrideScope + ( + lib.composeManyExtensions [ + pyproject-build-systems.overlays.default + overlay + ] + ); in { packages = { - nextmeeting = poetry_app; - default = self.packages.${system}.nextmeeting; + ${system}.default = pythonSet.mkVirtualEnv "nextmeeting" workspace.deps.default; }; - devShells.default = - pkgs.mkShell {packages = [pkgs.poetry poetry_env];}; }); }