Merge pull request #329823 from ExpidusOS/fix/pkgsllvm/elfutils
[NixPkgs.git] / pkgs / by-name / ge / gearlever / package.nix
blobff238a7b6a7f5d27c5e333368ddf5143efb458f5
2   lib,
3   python3Packages,
4   fetchFromGitHub,
5   stdenv,
6   meson,
7   ninja,
8   pkg-config,
9   gobject-introspection,
10   wrapGAppsHook4,
11   desktop-file-utils,
12   libadwaita,
13   file,
14   p7zip,
15   which,
16   appimage-run,
17   gtk4,
18   bintools,
21 python3Packages.buildPythonApplication rec {
22   pname = "gearlever";
23   version = "2.0.1";
24   pyproject = false; # Built with meson
26   src = fetchFromGitHub {
27     owner = "mijorus";
28     repo = "gearlever";
29     rev = version;
30     hash = "sha256-f4rQXenJCZiDC9MRQkjy0mOiNkWzOPSS05GXHXlhUao=";
31   };
33   postPatch =
34     # https://github.com/NixOS/nixpkgs/issues/302605
35     # But since the author only builds on flatpak, we don't expect much on it...
36     ''
37       substituteInPlace build-aux/meson/postinstall.py \
38         --replace-fail 'gtk-update-icon-cache' 'gtk4-update-icon-cache'
39     ''
40     # Some attempts to overcome flatpak assumptions
41     + ''
42       substituteInPlace src/lib/utils.py \
43         --replace-fail '/run/host/os-release' '/etc/os-release'
45       substituteInPlace src/lib/terminal.py \
46         --replace-fail "cmd = ['flatpak-spawn', '--host', *command]" "cmd = [*command]"
47     ''
48     # Use gtk4 instead of gtk3 to get smaller closure size
49     + ''
50       substituteInPlace src/providers/AppImageProvider.py \
51         --replace-fail "gtk-launch" "gtk4-launch"
52     ''
53     # We don't have `arch` in coreutils, so just return a string in advance
54     + ''
55       substituteInPlace src/AppDetails.py \
56         --replace-fail "sandbox_sh(['arch'])" '"${stdenv.hostPlatform.uname.processor}"'
57     '';
59   nativeBuildInputs = [
60     meson
61     ninja
62     pkg-config
63     gobject-introspection
64     wrapGAppsHook4
65     desktop-file-utils
66   ];
68   buildInputs = [ libadwaita ];
70   dependencies = with python3Packages; [
71     pygobject3
72     dbus-python
73     pyxdg
74     requests
75   ];
77   dontWrapGApps = true;
79   makeWrapperArgs = [
80     "\${gappsWrapperArgs[@]}"
81     "--prefix PATH : ${
82       lib.makeBinPath [
83         file
84         p7zip
85         which
86         appimage-run
87         desktop-file-utils # update-desktop-database
88         gtk4.dev # gtk4-launch
89         bintools # readelf
90       ]
91     }"
92   ];
94   meta = {
95     description = "Manage AppImages with ease";
96     longDescription = ''
97       Features:
99       - Integrate AppImages into your app menu with just one click
100       - Drag and drop files directly from your file manager
101       - Keep all the AppImages organized in a custom folder
102       - Open new AppImages directly with Gear lever
103       - Manage updates: keep older versions installed or replace
104         them with the latest release
105       - Save CLI apps with their executable name automatically
106       - Modern and Fresh UI
107     '';
108     homepage = "https://mijorus.it/projects/gearlever";
109     license = with lib.licenses; [
110       gpl3Plus
111       cc0
112     ];
113     mainProgram = "gearlever";
114     maintainers = with lib.maintainers; [ aleksana ];
115     platforms = lib.platforms.linux;
116   };