diff --git a/nixos/home/jahanson/workstation.nix b/nixos/home/jahanson/workstation.nix index 11d629e..b87179c 100644 --- a/nixos/home/jahanson/workstation.nix +++ b/nixos/home/jahanson/workstation.nix @@ -57,6 +57,7 @@ in unstable.talosctl # overlay override unstable.telegram-desktop unstable.tidal-hifi + unstable.xpipe # unstable.vesktop # gpu issues. Using the flatpak version solves this issue. vlc yt-dlp diff --git a/nixos/overlays/default.nix b/nixos/overlays/default.nix index 9e8c5e6..3583710 100644 --- a/nixos/overlays/default.nix +++ b/nixos/overlays/default.nix @@ -28,6 +28,7 @@ in talosctl = final.unstable.callPackage ./talosctl { inherit (final.unstable) lib buildGoModule fetchFromGitHub installShellFiles; }; + xpipe = final.unstable.callPackage ./xpipe/ptb.nix {}; }; }; } diff --git a/nixos/overlays/xpipe/ptb.nix b/nixos/overlays/xpipe/ptb.nix new file mode 100644 index 0000000..52dbe03 --- /dev/null +++ b/nixos/overlays/xpipe/ptb.nix @@ -0,0 +1,135 @@ +{ stdenvNoCC +, lib +, fetchzip +, makeDesktopItem +, autoPatchelfHook +, zlib +, fontconfig +, udev +, gtk3 +, freetype +, alsa-lib +, makeShellWrapper +, libX11 +, libXext +, libXdamage +, libXfixes +, libxcb +, libXcomposite +, libXcursor +, libXi +, libXrender +, libXtst +, libXxf86vm +, util-linux +, socat +, hicolor-icon-theme +}: + +let + inherit (stdenvNoCC.hostPlatform) system; + throwSystem = throw "Unsupported system: ${system}"; + + arch = { + x86_64-linux = "x86_64"; + aarch64-linux = "arm64"; + }.${system} or throwSystem; + + hash = { + x86_64-linux = "sha256-O4gl0WulhDyqL9lDwqR1oxNAzVjHn+3q0UB8KP0/sBk="; + aarch64-linux = ""; + }.${system} or throwSystem; + + displayname = "XPipe PTB"; + +in stdenvNoCC.mkDerivation rec { + pname = "xpipe-ptb"; + version = "13.0-10"; + + src = fetchzip { + url = "https://github.com/xpipe-io/${pname}/releases/download/${version}/xpipe-portable-linux-${arch}.tar.gz"; + inherit hash; + }; + + nativeBuildInputs = [ + autoPatchelfHook + makeShellWrapper + ]; + + # Ignore libavformat dependencies as we don't need them + autoPatchelfIgnoreMissingDeps = true; + + buildInputs = [ + fontconfig + zlib + udev + freetype + gtk3 + alsa-lib + libX11 + libX11 + libXext + libXdamage + libXfixes + libxcb + libXcomposite + libXcursor + libXi + libXrender + libXtst + libXxf86vm + ]; + + desktopItem = makeDesktopItem { + categories = [ "Network" ]; + comment = "XPipe (Public Test Build) releases"; + desktopName = displayname; + exec = "/opt/${pname}/cli/bin/xpipe open %U"; + genericName = "Shell connection hub"; + icon = "/opt/${pname}/logo.png"; + name = displayname; + }; + + installPhase = '' + runHook preInstall + + pkg="${pname}" + mkdir -p $out/opt/$pkg + cp -r ./ $out/opt/$pkg + + mkdir -p "$out/bin" + ln -s "$out/opt/$pkg/cli/bin/xpipe" "$out/bin/$pkg" + + mkdir -p "$out/share/applications" + cp -r "${desktopItem}/share/applications/" "$out/share/" + + mkdir -p "$out/etc/bash_completion.d" + ln -s "$out/opt/$pkg/cli/xpipe_completion" "$out/etc/bash_completion.d/$pkg" + + substituteInPlace "$out/share/applications/${displayname}.desktop" --replace "Exec=" "Exec=$out" + substituteInPlace "$out/share/applications/${displayname}.desktop" --replace "Icon=" "Icon=$out" + + mv "$out/opt/$pkg/app/bin/xpiped" "$out/opt/$pkg/app/bin/xpiped_raw" + mv "$out/opt/$pkg/app/lib/app/xpiped.cfg" "$out/opt/$pkg/app/lib/app/xpiped_raw.cfg" + mv "$out/opt/$pkg/app/scripts/xpiped_debug.sh" "$out/opt/$pkg/app/scripts/xpiped_debug_raw.sh" + + makeShellWrapper "$out/opt/$pkg/app/bin/xpiped_raw" "$out/opt/$pkg/app/bin/xpiped" \ + --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ fontconfig gtk3 udev ]}" + makeShellWrapper "$out/opt/$pkg/app/scripts/xpiped_debug_raw.sh" "$out/opt/$pkg/app/scripts/xpiped_debug.sh" \ + --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ fontconfig gtk3 udev ]}" + + runHook postInstall + ''; + + meta = with lib; { + description = "XPipe (Public Test Build) releases"; + homepage = "https://github.com/xpipe-io/${pname}"; + downloadPage = "https://github.com/xpipe-io/${pname}/releases/latest"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + changelog = "https://github.com/xpipe-io/${pname}/releases/tag/${version}"; + license = [ licenses.asl20 licenses.unfree ]; + maintainers = with maintainers; [ crschnick ]; + platforms = [ "x86_64-linux" "aarch64-linux" ]; + mainProgram = pname; + }; +}