-34
flake.lock
-34
flake.lock
···
1
1
{
2
2
"nodes": {
3
-
"flake-utils": {
4
-
"inputs": {
5
-
"systems": "systems"
6
-
},
7
-
"locked": {
8
-
"lastModified": 1731533236,
9
-
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
10
-
"owner": "numtide",
11
-
"repo": "flake-utils",
12
-
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
13
-
"type": "github"
14
-
},
15
-
"original": {
16
-
"owner": "numtide",
17
-
"repo": "flake-utils",
18
-
"type": "github"
19
-
}
20
-
},
21
3
"nixpkgs": {
22
4
"locked": {
23
5
"lastModified": 1752950548,
···
56
38
},
57
39
"root": {
58
40
"inputs": {
59
-
"flake-utils": "flake-utils",
60
41
"nixpkgs": "nixpkgs",
61
42
"pyproject-nix": "pyproject-nix"
62
-
}
63
-
},
64
-
"systems": {
65
-
"locked": {
66
-
"lastModified": 1681028828,
67
-
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
68
-
"owner": "nix-systems",
69
-
"repo": "default",
70
-
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
71
-
"type": "github"
72
-
},
73
-
"original": {
74
-
"owner": "nix-systems",
75
-
"repo": "default",
76
-
"type": "github"
77
43
}
78
44
}
79
45
},
+65
-53
flake.nix
+65
-53
flake.nix
···
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
}