nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 python3Packages,
4 fetchFromGitHub,
5 gtk3,
6 bash,
7 networkmanager,
8 bluez,
9 brightnessctl,
10 power-profiles-daemon,
11 gammastep,
12 pulseaudio,
13 desktop-file-utils,
14 wrapGAppsHook3,
15 gobject-introspection,
16 upower,
17 nix-update-script,
18}:
19
20python3Packages.buildPythonApplication rec {
21 pname = "better-control";
22 version = "6.12.1";
23 pyproject = false;
24
25 src = fetchFromGitHub {
26 owner = "better-ecosystem";
27 repo = "better-control";
28 tag = "v${version}";
29 hash = "sha256-Dt+se8eOmF8Nzm+/bnYBSIyX0XHSXV9iCPF82qXhzug=";
30 };
31
32 build-system = with python3Packages; [
33 setuptools
34 ];
35
36 nativeBuildInputs = [
37 desktop-file-utils
38 wrapGAppsHook3
39 gobject-introspection
40 ];
41
42 buildInputs = [
43 bash
44 gtk3
45 ];
46
47 # Check src/utils/dependencies.py
48 runtimeDeps = [
49 pulseaudio
50 networkmanager
51 bluez
52 brightnessctl
53 power-profiles-daemon
54 gammastep
55 upower
56 ];
57
58 dependencies = with python3Packages; [
59 pygobject3
60 dbus-python
61 psutil
62 qrcode
63 requests
64 setproctitle
65 pillow
66 pycairo
67 ];
68
69 makeFlags = [ "PREFIX=${placeholder "out"}" ];
70
71 dontWrapGApps = true;
72
73 makeWrapperArgs = [
74 "\${gappsWrapperArgs[@]}"
75 "--prefix PATH : ${lib.makeBinPath runtimeDeps}"
76 ];
77
78 postInstall = ''
79 rm $out/bin/betterctl
80 chmod +x $out/share/better-control/better_control.py
81 substituteInPlace $out/bin/* \
82 --replace-fail "python3 " ""
83 substituteInPlace $out/share/applications/better-control.desktop \
84 --replace-fail "/usr/bin/" ""
85 '';
86
87 # Project has no tests
88 doCheck = false;
89
90 postFixup = ''
91 wrapPythonProgramsIn "$out/share/better-control" "$out $pythonPath"
92 '';
93
94 passthru.updateScript = nix-update-script { };
95
96 meta = {
97 description = "Simple control panel for linux based on GTK";
98 homepage = "https://github.com/better-ecosystem/better-control";
99 license = lib.licenses.gpl3Only;
100 maintainers = with lib.maintainers; [ Rishabh5321 ];
101 platforms = lib.platforms.linux;
102 mainProgram = "control"; # Users use both "control" and "better-control" to launch
103 };
104}