From 987029e6c8010c7d5d3af6e6fdd5fa357248347d Mon Sep 17 00:00:00 2001 From: Olivier Date: Thu, 22 Jan 2026 20:07:40 -0400 Subject: [PATCH] Added looking-glass-client package --- README.md | 2 + default.nix | 1 + pkgs/looking-glass-client/default.nix | 134 ++++++++++++++++++++++++++ 3 files changed, 137 insertions(+) create mode 100644 pkgs/looking-glass-client/default.nix diff --git a/README.md b/README.md index 85b2eb6..73ba418 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ Personal [NUR](https://github.com/nix-community/NUR) repository. - **librepods**: LibrePods Linux app (Qt6) — AirPods controls and battery monitoring. - Upstream: `https://github.com/kavishdevar/librepods` +- **looking-glass-client**: Looking Glass client. + - Upstream: `https://github.com/gnif/LookingGlass` ## Usage diff --git a/default.nix b/default.nix index d07e7ae..b4764a4 100644 --- a/default.nix +++ b/default.nix @@ -17,6 +17,7 @@ # example-package = pkgs.callPackage ./pkgs/example-package { }; librepods = pkgs.callPackage ./pkgs/librepods { }; flow-browser-bin = pkgs.callPackage ./pkgs/flow-browser-bin { }; + looking-glass-client = pkgs.callPackage ./pkgs/looking-glass-client { }; # some-qt5-package = pkgs.libsForQt5.callPackage ./pkgs/some-qt5-package { }; # ... } diff --git a/pkgs/looking-glass-client/default.nix b/pkgs/looking-glass-client/default.nix new file mode 100644 index 0000000..47cb112 --- /dev/null +++ b/pkgs/looking-glass-client/default.nix @@ -0,0 +1,134 @@ +{ + stdenv, + lib, + fetchFromGitHub, + pkg-config, + cmake, + freefont_ttf, + spice-protocol, + nettle, + libbfd, + fontconfig, + libffi, + expat, + libGL, + nanosvg, + libX11, + libxkbcommon, + libXext, + libXrandr, + libXi, + libXScrnSaver, + libXinerama, + libXcursor, + libXpresent, + libXdmcp, + wayland, + wayland-protocols, + wayland-scanner, + pipewire, + pulseaudio, + libsamplerate, + openGLSupport ? true, + xorgSupport ? true, + waylandSupport ? true, + pipewireSupport ? true, + pulseSupport ? true, + rev ? "27fe47cb", + hash ? "sha256-I84oVLeS63mnR19vTalgvLvA5RzCPTXV+tSsw+ImDwQ=", +}: +stdenv.mkDerivation (finalAttrs: { + pname = "looking-glass-client"; + version = rev; + + src = fetchFromGitHub { + owner = "gnif"; + repo = "LookingGlass"; + rev = rev; + hash = hash; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ + cmake + pkg-config + wayland-scanner + ]; + + buildInputs = + [ + libX11 + libGL + freefont_ttf + spice-protocol + expat + libbfd + nettle + fontconfig + libffi + nanosvg + ] + ++ lib.optionals xorgSupport [ + libxkbcommon + libXi + libXScrnSaver + libXinerama + libXcursor + libXpresent + libXext + libXrandr + libXdmcp + ] + ++ lib.optionals waylandSupport [ + libxkbcommon + wayland + wayland-protocols + ] + ++ lib.optionals pipewireSupport [ + pipewire + libsamplerate + ] + ++ lib.optionals pulseSupport [ + pulseaudio + libsamplerate + ]; + + cmakeFlags = + [ + "-DOPTIMIZE_FOR_NATIVE=OFF" + ] + ++ lib.optionals (!openGLSupport) ["-DENABLE_OPENGL=no"] + ++ lib.optionals (!xorgSupport) ["-DENABLE_X11=no"] + ++ lib.optionals (!waylandSupport) ["-DENABLE_WAYLAND=no"] + ++ lib.optionals (!pulseSupport) ["-DENABLE_PULSEAUDIO=no"] + ++ lib.optionals (!pipewireSupport) ["-DENABLE_PIPEWIRE=no"]; + + postUnpack = '' + echo ${finalAttrs.src.rev} > source/VERSION + export sourceRoot="source/client" + ''; + + postInstall = '' + mkdir -p $out/share/pixmaps + cp $src/resources/lg-logo.png $out/share/pixmaps + ''; + + meta = with lib; { + description = "KVM Frame Relay (KVMFR) implementation"; + longDescription = '' + Looking Glass is an open source application that allows the use of a KVM + (Kernel-based Virtual Machine) configured for VGA PCI Pass-through + without an attached physical monitor, keyboard or mouse. This is the final + step required to move away from dual booting with other operating systems + for legacy programs that require high performance graphics. + ''; + homepage = "https://looking-glass.io/"; + downloadPage = "https://github.com/gnif/LookingGlass/releases"; + changelog = "https://github.com/gnif/LookingGlass/commits/${rev}"; + branch = "master"; + license = licenses.gpl2Plus; + sourceProvenance = with sourceTypes; [ fromSource ]; + mainProgram = "looking-glass-client"; + platforms = platforms.linux; + }; +})