| { inputs, system, lib, pkg-config, rustPlatform, libclang, xcb-util-cursor, xorg, musl, makeWrapper }: let |
| src = inputs.xwayland-satellite; |
| libraries = [ |
| xcb-util-cursor |
| xorg.libxcb |
| musl |
| ]; |
| includeArgs = map (library: ''-I"${library.dev}/include"'') libraries; |
| libraryArgs = map (library: ''-L"${library}/lib"'') libraries; |
| extraClangArgs = builtins.concatStringsSep " " (includeArgs ++ libraryArgs); |
| xwayland = inputs.nixpkgs-xwayland-23.legacyPackages.${system}.xwayland; # needed to avoid steam big picture mode failing, see https://github.com/Supreeeme/xwayland-satellite/issues/18 |
| in rustPlatform.buildRustPackage { |
| pname = "xwayland-satellite"; |
| version = "unstable-${src.lastModifiedDate}"; |
| |
| inherit src; |
| |
| cargoLock.lockFile = "${src}/Cargo.lock"; |
| |
| preBuild = '' |
| export LIBCLANG_PATH="${libclang.lib}/lib" |
| export BINDGEN_EXTRA_CLANG_ARGS='${extraClangArgs}' |
| export LIBRARY_PATH="${lib.makeLibraryPath libraries}" |
| ''; |
| |
| doCheck = false; # xwayland-satellite fails checks due to not being wrapped at this point... |
| |
| nativeBuildInputs = libraries ++ [ |
| libclang.lib |
| pkg-config |
| makeWrapper |
| ]; |
| |
| postInstall = '' |
| wrapProgram $out/bin/xwayland-satellite --suffix PATH : ${lib.makeBinPath [ xwayland ]} |
| ''; |
| |
| buildInputs = [ |
| xwayland |
| ]; |
| |
| meta = { |
| description = "Allow rootless xwayland integration for wayland compositors"; |
| homepage = "https://github.com/Supreeeme/xwayland-satellite"; |
| license = lib.licenses.mpl20; |
| maintainers = [ lib.maintainers.minion3665 ]; |
| }; |
| } |