|
3 | 3 |
|
4 | 4 | inputs.flake-utils.url = "github:numtide/flake-utils"; |
5 | 5 |
|
| 6 | + inputs.pyproject-nix = { |
| 7 | + url = "github:pyproject-nix/pyproject.nix"; |
| 8 | + inputs.nixpkgs.follows = "nixpkgs"; |
| 9 | + }; |
| 10 | + |
| 11 | + inputs.uv2nix = { |
| 12 | + url = "github:pyproject-nix/uv2nix"; |
| 13 | + inputs.pyproject-nix.follows = "pyproject-nix"; |
| 14 | + inputs.nixpkgs.follows = "nixpkgs"; |
| 15 | + }; |
| 16 | + |
| 17 | + inputs.pyproject-build-systems = { |
| 18 | + url = "github:pyproject-nix/build-system-pkgs"; |
| 19 | + inputs.pyproject-nix.follows = "pyproject-nix"; |
| 20 | + inputs.uv2nix.follows = "uv2nix"; |
| 21 | + inputs.nixpkgs.follows = "nixpkgs"; |
| 22 | + }; |
| 23 | + |
6 | 24 | # ( printf "~20024642E00202FD33\r"; sleep 1 ) | nc 192.168.10.237 23 |
7 | | - outputs = { self, nixpkgs, flake-utils }: |
| 25 | + outputs = |
| 26 | + { self |
| 27 | + , nixpkgs |
| 28 | + , flake-utils |
| 29 | + , uv2nix |
| 30 | + , pyproject-nix |
| 31 | + , pyproject-build-systems |
| 32 | + , ... |
| 33 | + }: |
8 | 34 | flake-utils.lib.eachDefaultSystem |
9 | 35 | (system: |
10 | | - let |
11 | | - pkgs = import nixpkgs { |
12 | | - inherit system; |
13 | | - config.allowUnfree = true; |
14 | | - }; |
15 | | - in |
16 | | - { |
17 | | - devShells.default = pkgs.mkShell { |
18 | | - nativeBuildInputs = with pkgs.buildPackages; [ |
19 | | - git |
20 | | - socat |
21 | | - poetry |
22 | | - |
23 | | - (python313.withPackages (python-pkgs: [ |
24 | | - python-pkgs.pyserial |
25 | | - python-pkgs.construct |
26 | | - python-pkgs.standard-telnetlib |
27 | | - python-pkgs.rich |
28 | | - ])) |
29 | | - ]; |
30 | | - }; |
31 | | - } |
| 36 | + let |
| 37 | + pkgs = import nixpkgs { |
| 38 | + inherit system; |
| 39 | + config.allowUnfree = true; |
| 40 | + }; |
| 41 | + lib = pkgs.lib; |
| 42 | + workspace = uv2nix.lib.workspace.loadWorkspace { workspaceRoot = ./.; }; |
| 43 | + |
| 44 | + overlay = workspace.mkPyprojectOverlay { |
| 45 | + sourcePreference = "wheel"; # or sourcePreference = "sdist"; |
| 46 | + }; |
| 47 | + |
| 48 | + pyprojectOverrides = _final: _prev: { |
| 49 | + }; |
| 50 | + |
| 51 | + python = pkgs.python313; |
| 52 | + |
| 53 | + pythonSet = |
| 54 | + (pkgs.callPackage pyproject-nix.build.packages { |
| 55 | + inherit python; |
| 56 | + }).overrideScope |
| 57 | + ( |
| 58 | + lib.composeManyExtensions [ |
| 59 | + pyproject-build-systems.overlays.default |
| 60 | + overlay |
| 61 | + pyprojectOverrides |
| 62 | + ] |
| 63 | + ); |
| 64 | + in |
| 65 | + { |
| 66 | + devShells.default = pkgs.mkShell { |
| 67 | + nativeBuildInputs = with pkgs.buildPackages; [ |
| 68 | + git |
| 69 | + socat |
| 70 | + uv |
| 71 | + |
| 72 | + (python313.withPackages (python-pkgs: [ |
| 73 | + python-pkgs.pyserial |
| 74 | + python-pkgs.construct |
| 75 | + python-pkgs.standard-telnetlib |
| 76 | + python-pkgs.rich |
| 77 | + ])) |
| 78 | + ]; |
| 79 | + }; |
| 80 | + |
| 81 | + packages.default = pythonSet.mkVirtualEnv "pylontechpoller-env" workspace.deps.default; |
| 82 | + |
| 83 | + apps.default = { |
| 84 | + type = "app"; |
| 85 | + program = "${self.packages."${system}".default}/bin/poller"; |
| 86 | + }; |
| 87 | + } |
32 | 88 | ); |
| 89 | + |
| 90 | + |
33 | 91 | } |
0 commit comments