|
7 | 7 | nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; |
8 | 8 | poetry2nix.url = "github:nix-community/poetry2nix"; |
9 | 9 | poetry2nix.inputs.nixpkgs.follows = "nixpkgs"; |
| 10 | + |
| 11 | + pyproject-nix = { |
| 12 | + url = "github:pyproject-nix/pyproject.nix"; |
| 13 | + inputs.nixpkgs.follows = "nixpkgs"; |
| 14 | + }; |
| 15 | + |
| 16 | + uv2nix = { |
| 17 | + url = "github:pyproject-nix/uv2nix"; |
| 18 | + inputs.pyproject-nix.follows = "pyproject-nix"; |
| 19 | + inputs.nixpkgs.follows = "nixpkgs"; |
| 20 | + }; |
| 21 | + |
| 22 | + pyproject-build-systems = { |
| 23 | + url = "github:pyproject-nix/build-system-pkgs"; |
| 24 | + inputs.pyproject-nix.follows = "pyproject-nix"; |
| 25 | + inputs.uv2nix.follows = "uv2nix"; |
| 26 | + inputs.nixpkgs.follows = "nixpkgs"; |
| 27 | + }; |
10 | 28 | }; |
11 | 29 |
|
12 | 30 | outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } ({ withSystem, flake-parts-lib, ... }: |
|
43 | 61 | ]; |
44 | 62 | perSystem = { config, self', inputs', pkgs, lib, system, ... }: |
45 | 63 | let |
46 | | - python = pkgs.python3; |
| 64 | + workspace = inputs.uv2nix.lib.workspace.loadWorkspace { |
| 65 | + workspaceRoot = ./mkdocs; |
| 66 | + }; |
| 67 | + overlay = workspace.mkPyprojectOverlay { |
| 68 | + sourcePreference = "wheel"; |
| 69 | + }; |
| 70 | + |
| 71 | + pyprojectOverrides = import ./uv-overrides.nix; |
| 72 | + |
| 73 | + python = pkgs.python312; |
| 74 | + |
| 75 | + pythonSet = |
| 76 | + (pkgs.callPackage inputs.pyproject-nix.build.packages { |
| 77 | + inherit python; |
| 78 | + }).overrideScope |
| 79 | + ( |
| 80 | + lib.composeManyExtensions [ |
| 81 | + inputs.pyproject-build-systems.overlays.default |
| 82 | + overlay |
| 83 | + pyprojectOverrides |
| 84 | + ] |
| 85 | + ); |
47 | 86 | in { |
48 | 87 | _module.args.pkgs = import inputs.nixpkgs { |
49 | 88 | inherit system; |
|
55 | 94 |
|
56 | 95 | devShells.default = pkgs.mkShell { |
57 | 96 | nativeBuildInputs = [ |
58 | | - config.packages.default |
59 | | - pkgs.poetry |
60 | 97 | python.pkgs.plantuml-markdown |
61 | 98 | pkgs.fontconfig |
62 | 99 | pkgs.dejavu_fonts |
| 100 | + pkgs.uv |
63 | 101 | ]; |
64 | 102 | }; |
65 | 103 |
|
|
68 | 106 | packages = { |
69 | 107 | default = config.packages.mkdocs; |
70 | 108 |
|
71 | | - mkdocs-python = pkgs.poetry2nix.mkPoetryEnv { |
72 | | - inherit python; |
73 | | - projectDir = ./mkdocs; |
74 | | - overrides = pkgs.poetry2nix.overrides.withDefaults |
75 | | - (import ./python-overrides.nix); |
76 | | - }; |
77 | | - |
| 109 | + mkdocs-python = pythonSet.mkVirtualEnv "mkdocs-env" workspace.deps.default; |
78 | 110 | mkdocs = pkgs.runCommand "mkdocs" { nativeBuildInputs = [ pkgs.makeWrapper ]; } '' |
79 | 111 | makeWrapper ${config.packages.mkdocs-python}/bin/mkdocs $out/bin/mkdocs \ |
80 | 112 | --set PATH ${lib.makeBinPath [ |
|
0 commit comments