base16-schemes: unstable-2024-06-21 -> unstable-2024-11-12 (#356361)
[NixPkgs.git] / pkgs / tools / graphics / goverlay / default.nix
blob3f935568744f5425e930183cef68e49b1cc16592
1 { lib
2 , writeScriptBin
3 , bash
4 , stdenv
5 , fetchFromGitHub
6 , fpc
7 , lazarus-qt
8 , wrapQtAppsHook
9 , breeze-qt5
10 , libGL
11 , libGLU
12 , libqt5pas
13 , libX11
14 , coreutils
15 , git
16 , gnugrep
17 , libnotify
18 , polkit
19 , procps
20 , systemd
21 , util-linux
22 , vulkan-tools
23 , which
24 , nix-update-script
27 let
28   # Finds data files using the XDG Base Directory Specification
29   # See https://specifications.freedesktop.org/basedir-spec/latest
30   find-xdg-data-files = writeScriptBin "find-xdg-data-files" ''
31     #!${bash}/bin/sh
32     IFS=:
33     for xdg_data_dir in ''${XDG_DATA_HOME:-$HOME/.local/share}:''${XDG_DATA_DIRS:-/usr/local/share:/usr/share}; do
34       if [ -f "$xdg_data_dir/$1" ]; then
35         echo "$xdg_data_dir/$1"
36       fi
37     done
38   '';
39 in stdenv.mkDerivation rec {
40   pname = "goverlay";
41   version = "0.7.1";
43   src = fetchFromGitHub {
44     owner = "benjamimgois";
45     repo = pname;
46     rev = version;
47     sha256 = "sha256-oXkGrMHjs8uui0pzGYW8jnttet/5IX0r8eat0n5saFk=";
48   };
50   outputs = [ "out" "man" ];
52   patches = [
53     # Find MangoHud & vkBasalt Vulkan layers using the XDG Base Directory Specification
54     ./find-xdg-data-files.patch
55   ];
57   postPatch = ''
58     substituteInPlace Makefile \
59       --replace 'prefix = /usr/local' "prefix = $out"
61     substituteInPlace overlayunit.pas \
62       --replace '/usr/share/icons/hicolor/128x128/apps/goverlay.png' "$out/share/icons/hicolor/128x128/apps/goverlay.png"
63   '';
65   nativeBuildInputs = [
66     fpc
67     lazarus-qt
68     wrapQtAppsHook
69   ];
71   buildInputs = [
72     breeze-qt5
73     libGL
74     libGLU
75     libqt5pas
76     libX11
77   ];
79   NIX_LDFLAGS = "-lGLU -rpath ${lib.makeLibraryPath buildInputs}";
81   buildPhase = ''
82     runHook preBuild
83     HOME=$(mktemp -d) lazbuild --lazarusdir=${lazarus-qt}/share/lazarus -B goverlay.lpi
84     runHook postBuild
85   '';
87   qtWrapperArgs = [
88     "--prefix PATH : ${lib.makeBinPath [
89       bash
90       coreutils
91       find-xdg-data-files
92       git
93       gnugrep
94       libnotify
95       polkit
96       procps
97       systemd
98       util-linux.bin
99       vulkan-tools
100       which
101     ]}"
103     # Force xcb since libqt5pas doesn't support Wayland
104     # See https://github.com/benjamimgois/goverlay/issues/107
105     "--set QT_QPA_PLATFORM xcb"
106   ];
108   passthru.updateScript = nix-update-script { };
110   meta = with lib; {
111     description = "Opensource project that aims to create a Graphical UI to help manage Linux overlays";
112     homepage = "https://github.com/benjamimgois/goverlay";
113     license = licenses.gpl3Plus;
114     maintainers = with maintainers; [ ];
115     platforms = platforms.linux;
116     mainProgram = "goverlay";
117   };