This commit is contained in:
Nicole 2026-04-12 11:59:43 +02:00
parent 0c1be27fe1
commit 47b2e7664a
4 changed files with 312 additions and 0 deletions

View file

@ -0,0 +1,68 @@
{ pkgs ? import <nixpkgs> {} }:
let
lutrisUnwrapped = pkgs.lutris-unwrapped;
lutrisPythonPatched = pkgs.runCommand "lutris-python-patched" {} ''
cp -r ${lutrisUnwrapped}/lib $out
chmod -R +w $out
mkdir -p $out/lib/${pkgs.python3.libPrefix}/site-packages/share
ln -s ${lutrisUnwrapped}/share/lutris $out/lib/${pkgs.python3.libPrefix}/site-packages/share/lutris
'';
pythonEnv = pkgs.python3.withPackages (ps: [
ps.pygobject3
ps.dbus-python
ps.pyyaml
]);
pythonPath = pkgs.lib.concatStringsSep ":" [
"${lutrisPythonPatched}/lib/${pkgs.python3.libPrefix}/site-packages"
"${pythonEnv}/${pythonEnv.sitePackages}"
];
extraPkgsList = with pkgs; [
lutrisUnwrapped
gobject-introspection
glib
gtk3
pango
harfbuzz
gdk-pixbuf
at-spi2-core
pulseaudio
bluez
];
girepositoryPath = pkgs.lib.makeSearchPath "lib/girepository-1.0" extraPkgsList;
pythonWrapper = pkgs.writeShellScriptBin "python3" ''
export PYTHONPATH="${pythonPath}''${PYTHONPATH:+:$PYTHONPATH}"
export GI_TYPELIB_PATH="${girepositoryPath}''${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}"
exec ${pkgs.python3}/bin/python3 "$@"
'';
in pkgs.appimageTools.wrapType2 {
pname = "lutris-gamepad-ui";
version = "0.1.32";
src = pkgs.fetchurl {
url = "https://github.com/andrew-ld/lutris-gamepad-ui/releases/download/v0.1.32/lutris-gamepad-ui-x64.AppImage";
hash = "sha256-68j04sSnDtoNZfCGRmWpq0xcy8F1xBEDPqFIuTwYcEo=";
};
extraPkgs = _: extraPkgsList ++ [ pythonWrapper ];
extraInstallCommands = ''
fhsrootfs=$(grep -o '/nix/store/[^-]*-[^/]*-fhsenv-rootfs' $out/bin/lutris-gamepad-ui | head -1)
typelib_path="${girepositoryPath}:$fhsrootfs/usr/lib/girepository-1.0:$fhsrootfs/usr/lib64/girepository-1.0"
wrapper_bin="${pythonWrapper}/bin"
# Write a preamble script then reconstruct the wrapper
head -n -1 $out/bin/lutris-gamepad-ui > /tmp/wrapper_new.sh
echo "export PATH=\"$wrapper_bin:\$PATH\"" >> /tmp/wrapper_new.sh
echo "export GI_TYPELIB_PATH=\"$typelib_path\"" >> /tmp/wrapper_new.sh
tail -n 1 $out/bin/lutris-gamepad-ui >> /tmp/wrapper_new.sh
chmod +x /tmp/wrapper_new.sh
cp /tmp/wrapper_new.sh $out/bin/lutris-gamepad-ui
'';
}

View file

@ -0,0 +1,113 @@
{ lib, stdenv, fetchzip, fetchurl, autoPatchelfHook, makeBinaryWrapper
, alsa-lib, libjack2, curl, xorg, libGL, freetype, zenity, makeDesktopItem
, copyDesktopItems, libsecret, glib, gnutls, dpkg, nettle, libidn2, nghttp2
, libpsl, zlib, zstd, brotli, openldap, libkrb5, rtmpdump, libssh2, libssh }:
let
icon = fetchurl {
url = "https://vital.audio/images/apple_touch_icon.png";
hash = "sha256-NZ/AQ2gjBXUPUj3ITbowD7HuxRmEDuATOWidLqLNrww=";
};
# Fetch libcurl-gnutls from Ubuntu Noble package
libcurlGnutls = stdenv.mkDerivation {
name = "libcurl-gnutls";
src = fetchurl {
url = "http://security.ubuntu.com/ubuntu/pool/main/c/curl/libcurl3t64-gnutls_8.5.0-2ubuntu10.6_amd64.deb";
sha256 = "38167d8ff4c180eceb0afb1a9bd3f343b07f87308894dd86866c5b1a3c14eebd";
};
nativeBuildInputs = [ dpkg autoPatchelfHook ];
buildInputs = [ gnutls nettle libidn2 nghttp2 libpsl zlib zstd brotli
openldap libkrb5 rtmpdump libssh2 libssh stdenv.cc.cc.lib ];
unpackPhase = ''
dpkg-deb -x $src .
'';
installPhase = ''
mkdir -p $out/lib
cp -P usr/lib/x86_64-linux-gnu/libcurl-gnutls.so* $out/lib/
'';
};
in stdenv.mkDerivation (finalAttrs: {
pname = "vital";
version = "1.0.7";
src = fetchzip {
url =
"https://builds.vital.audio/VitalAudio/vital/${builtins.replaceStrings [ "." ] [ "_" ] finalAttrs.version}/VitalInstaller.zip";
hash = "sha256-qnkyoFRnA78B/5q1oBjOBqqOXG9C3XvICjKspEa+Ids=";
};
desktopItems = [
(makeDesktopItem {
type = "Application";
name = "vital";
desktopName = "Vital";
comment = "Spectral warping wavetable synth";
icon = "Vital";
exec = "Vital";
categories = [ "Audio" "AudioVideo" ];
})
];
nativeBuildInputs =
[ autoPatchelfHook makeBinaryWrapper copyDesktopItems ];
buildInputs = [
alsa-lib
(lib.getLib stdenv.cc.cc)
libGL
xorg.libSM
xorg.libICE
xorg.libX11
freetype
libjack2
libsecret
glib
libcurlGnutls
];
dontBuild = true;
installPhase = ''
runHook preInstall
install -Dm444 ${icon} $out/share/pixmaps/Vital.png
# fetchzip strips the top-level directory, so files are directly accessible
# Install standalone binary
install -Dm755 vital $out/bin/Vital
# Install VST2
mkdir -p $out/lib/vst
cp Vital.so $out/lib/vst/Vital.so
# Install VST3
mkdir -p $out/lib/vst3
cp -r Vital.vst3 $out/lib/vst3/
# Install LV2
mkdir -p $out/lib/lv2
cp -r Vital.lv2 $out/lib/lv2/
wrapProgram $out/bin/Vital \
--prefix LD_LIBRARY_PATH : "${libcurlGnutls}/lib:${
lib.makeLibraryPath [ libjack2 ]
}" \
--prefix PATH : "${lib.makeBinPath [ zenity ]}"
runHook postInstall
'';
meta = {
description = "Spectral warping wavetable synth";
homepage = "https://vital.audio/";
sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
license = lib.licenses.unfree; # https://vital.audio/eula/
platforms = [ "x86_64-linux" ];
maintainers = with lib.maintainers; [ PowerUser64 l1npengtul ];
mainProgram = "Vital";
};
})

View file

@ -0,0 +1,64 @@
{ lib
, fetchFromGitHub
, libxcb
, makeBinaryWrapper
, nix-update-script
, pkg-config
, rustPlatform
, xcb-util-cursor
, xwayland
, withSystemd ? true
}:
rustPlatform.buildRustPackage rec {
pname = "xwayland-satellite";
version = "0.8.0-a879e5e0896a326adc79c474bf457b8b99011027";
src = fetchFromGitHub {
owner = "Supreeeme";
repo = "xwayland-satellite";
rev = "a879e5e0896a326adc79c474bf457b8b99011027";
hash = "sha256-wToKwH7IgWdGLMSIWksEDs4eumR6UbbsuPQ42r0oTXQ=";
};
cargoHash = "sha256-jbEihJYcOwFeDiMYlOtaS8GlunvSze80iWahDj1qDrs=";
nativeBuildInputs = [
makeBinaryWrapper
pkg-config
rustPlatform.bindgenHook
];
buildInputs = [
libxcb
xcb-util-cursor
];
buildNoDefaultFeatures = true;
buildFeatures = lib.optional withSystemd "systemd";
doCheck = false;
postInstall = lib.optionalString withSystemd ''
install -Dm0644 resources/xwayland-satellite.service -t $out/lib/systemd/user
'';
postFixup = ''
wrapProgram $out/bin/xwayland-satellite \
--prefix PATH : "${lib.makeBinPath [ xwayland ]}"
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "xwayland-satellite with XSETTINGS crash fix";
longDescription = ''
Grants rootless Xwayland integration to any Wayland compositor implementing xdg_wm_base.
This version includes a fix for XSETTINGS-related crashes with Electron applications.
'';
homepage = "https://github.com/Supreeeme/xwayland-satellite";
license = lib.licenses.mpl20;
mainProgram = "xwayland-satellite";
platforms = lib.platforms.linux;
};
}

View file

@ -0,0 +1,67 @@
{ lib
, fetchFromGitHub
, libxcb
, makeBinaryWrapper
, nix-update-script
, pkg-config
, rustPlatform
, xcb-util-cursor
, xwayland
, withSystemd ? true
}:
rustPlatform.buildRustPackage rec {
pname = "xwayland-satellite";
version = "0.8.0-fix5";
src = fetchFromGitHub {
owner = "myNicole98";
repo = "xwayland-satellite";
# Use 'rev' for a specific commit hash (recommended for reproducibility)
rev = "5791082542687dfc0d5d7cb4df24cb4950ae1579";
# OR use 'tag' if you want to use a git tag
# tag = "v0.8.0-fix";
hash = "sha256-uuyvKzKJrR1E6yxnaUYcdugCO/bkhbrZ2Vkov2L6uBU=";
};
cargoHash = "sha256-16L6gsvze+m7XCJlOA1lsPNELE3D364ef2FTdkh0rVY=";
nativeBuildInputs = [
makeBinaryWrapper
pkg-config
rustPlatform.bindgenHook
];
buildInputs = [
libxcb
xcb-util-cursor
];
buildNoDefaultFeatures = true;
buildFeatures = lib.optional withSystemd "systemd";
doCheck = false;
postInstall = lib.optionalString withSystemd ''
install -Dm0644 resources/xwayland-satellite.service -t $out/lib/systemd/user
'';
postFixup = ''
wrapProgram $out/bin/xwayland-satellite \
--prefix PATH : "${lib.makeBinPath [ xwayland ]}"
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "xwayland-satellite with XSETTINGS crash fix";
longDescription = ''
Grants rootless Xwayland integration to any Wayland compositor implementing xdg_wm_base.
This version includes a fix for XSETTINGS-related crashes with Electron applications.
'';
homepage = "https://github.com/myNicole98/xwayland-satellite";
license = lib.licenses.mpl20;
mainProgram = "xwayland-satellite";
platforms = lib.platforms.linux;
};
}