nixos/filesystems: don't silently ignore label when device is set (#361418)
[NixPkgs.git] / pkgs / by-name / lo / looking-glass-client / package.nix
blob8e0f81680b631563d6f624aa1cc86cab0c6428ac
1 { stdenv
2 , lib
3 , fetchpatch
4 , fetchFromGitHub
5 , makeDesktopItem
6 , pkg-config
7 , cmake
8 , freefont_ttf
9 , spice-protocol
10 , nettle
11 , libbfd
12 , fontconfig
13 , libffi
14 , expat
15 , libGL
17 , libX11
18 , libxkbcommon
19 , libXext
20 , libXrandr
21 , libXi
22 , libXScrnSaver
23 , libXinerama
24 , libXcursor
25 , libXpresent
26 , libXdmcp
28 , wayland
29 , wayland-protocols
30 , wayland-scanner
32 , pipewire
33 , pulseaudio
34 , libsamplerate
36 , openGLSupport ? true
37 , xorgSupport ? true
38 , waylandSupport ? true
39 , pipewireSupport ? true
40 , pulseSupport ? true
43 let
44   desktopItem = makeDesktopItem {
45     name = "looking-glass-client";
46     desktopName = "Looking Glass Client";
47     type = "Application";
48     exec = "looking-glass-client";
49     icon = "lg-logo";
50   };
52 stdenv.mkDerivation (finalAttrs: {
53   pname = "looking-glass-client";
54   version = "B7-rc1";
56   src = fetchFromGitHub {
57     owner = "gnif";
58     repo = "LookingGlass";
59     rev = finalAttrs.version;
60     hash = "sha256-ne1Q+67+P8RHcTsqdiSSwkFf0g3pSNT91WN/lsSzssU=";
61     fetchSubmodules = true;
62   };
64   patches = [
65     # Fix failing cmake assertion when disabling X11 whithout explicitly enabling Wayland.
66     (fetchpatch {
67       url = "https://github.com/gnif/LookingGlass/commit/20972cfd9b940fddf9e7f3d2887a271d16398979.patch";
68       hash = "sha256-CqB8AmOZ4YxnEsQkyu/ZEaun6ywpSh4B7PM+MFJF0qU=";
69       stripLen = 1;
70     })
71   ];
73   nativeBuildInputs = [ cmake pkg-config wayland-scanner ];
75   buildInputs = [ libX11 libGL freefont_ttf spice-protocol expat libbfd nettle fontconfig libffi ]
76     ++ lib.optionals xorgSupport [ libxkbcommon libXi libXScrnSaver libXinerama libXcursor libXpresent libXext libXrandr libXdmcp ]
77     ++ lib.optionals waylandSupport [ libxkbcommon wayland wayland-protocols ]
78     ++ lib.optionals pipewireSupport [ pipewire libsamplerate ]
79     ++ lib.optionals pulseSupport [ pulseaudio libsamplerate ];
81   cmakeFlags = [ "-DOPTIMIZE_FOR_NATIVE=OFF" ]
82     ++ lib.optionals (!openGLSupport) [ "-DENABLE_OPENGL=no" ]
83     ++ lib.optionals (!xorgSupport) [ "-DENABLE_X11=no" ]
84     ++ lib.optionals (!waylandSupport) [ "-DENABLE_WAYLAND=no" ]
85     ++ lib.optionals (!pulseSupport) [ "-DENABLE_PULSEAUDIO=no" ]
86     ++ lib.optionals (!pipewireSupport) [ "-DENABLE_PIPEWIRE=no" ];
88   postUnpack = ''
89     echo ${finalAttrs.src.rev} > source/VERSION
90     export sourceRoot="source/client"
91   '';
93   postInstall = ''
94     mkdir -p $out/share/pixmaps
95     ln -s ${desktopItem}/share/applications $out/share/
96     cp $src/resources/lg-logo.png $out/share/pixmaps
97   '';
99   meta = with lib; {
100     description = "KVM Frame Relay (KVMFR) implementation";
101     longDescription = ''
102       Looking Glass is an open source application that allows the use of a KVM
103       (Kernel-based Virtual Machine) configured for VGA PCI Pass-through
104       without an attached physical monitor, keyboard or mouse. This is the final
105       step required to move away from dual booting with other operating systems
106       for legacy programs that require high performance graphics.
107     '';
108     homepage = "https://looking-glass.io/";
109     license = licenses.gpl2Plus;
110     mainProgram = "looking-glass-client";
111     maintainers = with maintainers; [ alexbakker babbaj j-brn ];
112     platforms = [ "x86_64-linux" ];
113   };