|
4 | 4 | inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; |
5 | 5 | inputs.pyproject-nix.url = "github:nix-community/pyproject.nix"; |
6 | 6 | inputs.pyproject-nix.inputs.nixpkgs.follows = "nixpkgs"; |
7 | | - inputs.flake-utils.url = "github:numtide/flake-utils"; |
8 | 7 |
|
9 | 8 | outputs = |
10 | 9 | { |
11 | 10 | self, |
12 | 11 | nixpkgs, |
13 | 12 | pyproject-nix, |
14 | | - flake-utils, |
15 | 13 | }: |
16 | | - flake-utils.lib.eachDefaultSystem ( |
17 | | - system: |
18 | | - let |
19 | | - pkgs = nixpkgs.legacyPackages.${system}; |
20 | | - pyproject = pyproject-nix.lib.project.loadPyproject { projectRoot = ./.; }; |
21 | | - python = pkgs.python3; |
22 | | - pyprojectPackage = |
23 | | - args: |
24 | | - python.pkgs.buildPythonApplication ( |
25 | | - args // pyproject.renderers.buildPythonPackage { inherit python; } |
26 | | - ); |
27 | | - pyprojectEnv = |
28 | | - extraPackages: |
29 | | - python.withPackages (pyproject.renderers.withPackages { inherit python extraPackages; }); |
30 | | - in |
31 | | - { |
32 | | - packages.qbpm = pyprojectPackage { |
33 | | - nativeBuildInputs = [ |
34 | | - pkgs.scdoc |
35 | | - pkgs.installShellFiles |
36 | | - ]; |
37 | | - nativeCheckInputs = [ python.pkgs.pytestCheckHook ]; |
38 | | - postInstallCheck = "$out/bin/qbpm --help"; |
39 | | - postInstall = '' |
40 | | - _QBPM_COMPLETE=bash_source $out/bin/qbpm > completions/qbpm.bash |
41 | | - _QBPM_COMPLETE=zsh_source $out/bin/qbpm > completions/qbpm.zsh |
42 | | - installShellCompletion completions/qbpm.{bash,zsh,fish} |
43 | | - scdoc < qbpm.1.scd > qbpm.1 |
44 | | - installManPage qbpm.1 |
45 | | - ''; |
| 14 | + let |
| 15 | + pyproject = pyproject-nix.lib.project.loadPyproject { projectRoot = ./.; }; |
| 16 | + forAllSystems = |
| 17 | + mkOutputs: |
| 18 | + nixpkgs.lib.genAttrs [ |
| 19 | + "aarch64-linux" |
| 20 | + "aarch64-darwin" |
| 21 | + "x86_64-darwin" |
| 22 | + "x86_64-linux" |
| 23 | + ] (system: mkOutputs nixpkgs.legacyPackages.${system}); |
| 24 | + in |
| 25 | + { |
| 26 | + packages = forAllSystems (pkgs: { |
| 27 | + qbpm = pkgs.python3.pkgs.buildPythonApplication ( |
| 28 | + pyproject.renderers.buildPythonPackage { python = pkgs.python3; } |
| 29 | + // { |
| 30 | + nativeBuildInputs = [ |
| 31 | + pkgs.scdoc |
| 32 | + pkgs.installShellFiles |
| 33 | + ]; |
| 34 | + nativeCheckInputs = [ pkgs.python3.pkgs.pytestCheckHook ]; |
| 35 | + postInstallCheck = "$out/bin/qbpm --help"; |
| 36 | + postInstall = '' |
| 37 | + _QBPM_COMPLETE=bash_source $out/bin/qbpm > completions/qbpm.bash |
| 38 | + _QBPM_COMPLETE=zsh_source $out/bin/qbpm > completions/qbpm.zsh |
| 39 | + installShellCompletion completions/qbpm.{bash,zsh,fish} |
| 40 | + scdoc < qbpm.1.scd > qbpm.1 |
| 41 | + installManPage qbpm.1 |
| 42 | + ''; |
46 | 43 |
|
47 | | - meta = { |
48 | | - homepage = "https://github.com/pvsr/qbpm"; |
49 | | - changelog = "https://github.com/pvsr/qbpm/blob/main/CHANGELOG.md"; |
50 | | - description = "A profile manager for qutebrowser"; |
51 | | - license = pkgs.lib.licenses.gpl3Plus; |
52 | | - }; |
| 44 | + meta = { |
| 45 | + homepage = "https://github.com/pvsr/qbpm"; |
| 46 | + changelog = "https://github.com/pvsr/qbpm/blob/main/CHANGELOG.md"; |
| 47 | + description = "A profile manager for qutebrowser"; |
| 48 | + license = pkgs.lib.licenses.gpl3Plus; |
| 49 | + }; |
| 50 | + } |
| 51 | + ); |
| 52 | + default = self.packages.${pkgs.system}.qbpm; |
| 53 | + }); |
| 54 | + |
| 55 | + apps = forAllSystems (pkgs: { |
| 56 | + qbpm = { |
| 57 | + type = "app"; |
| 58 | + program = pkgs.lib.getExe self.packages.${pkgs.system}.qbpm; |
53 | 59 | }; |
54 | | - packages.default = self.packages.${system}.qbpm; |
55 | | - apps.qbpm = flake-utils.lib.mkApp { drv = self.packages.${system}.qbpm; }; |
56 | | - apps.default = self.apps.${system}.qbpm; |
| 60 | + default = self.apps.${pkgs.system}.qbpm; |
| 61 | + }); |
57 | 62 |
|
58 | | - devShells.default = pkgs.mkShell { |
| 63 | + devShells = forAllSystems (pkgs: { |
| 64 | + default = pkgs.mkShell { |
59 | 65 | packages = [ |
60 | 66 | pkgs.ruff |
61 | | - (pyprojectEnv ( |
62 | | - ps: with ps; [ |
63 | | - flit |
64 | | - pytest |
65 | | - mypy |
66 | | - pylsp-mypy |
67 | | - ] |
| 67 | + (pkgs.python3.withPackages ( |
| 68 | + pyproject.renderers.withPackages { |
| 69 | + python = pkgs.python3; |
| 70 | + extraPackages = ps: [ |
| 71 | + ps.flit |
| 72 | + ps.pytest |
| 73 | + ps.mypy |
| 74 | + ps.pylsp-mypy |
| 75 | + ]; |
| 76 | + } |
68 | 77 | )) |
69 | 78 | ]; |
70 | 79 | }; |
| 80 | + }); |
71 | 81 |
|
72 | | - formatter = pkgs.nixfmt-tree.override { |
| 82 | + formatter = forAllSystems ( |
| 83 | + pkgs: |
| 84 | + pkgs.nixfmt-tree.override { |
73 | 85 | runtimeInputs = [ pkgs.ruff ]; |
74 | 86 | settings = { |
75 | 87 | tree-root-file = "flake.nix"; |
|
79 | 91 | includes = [ "*.py" ]; |
80 | 92 | }; |
81 | 93 | }; |
82 | | - }; |
83 | | - } |
84 | | - ); |
| 94 | + } |
| 95 | + ); |
| 96 | + }; |
85 | 97 | } |
0 commit comments