diff --git a/pkgs/by-name/ra/raffi/package.nix b/pkgs/by-name/ra/raffi/package.nix index 9cb051237013..ad21c731f2c4 100644 --- a/pkgs/by-name/ra/raffi/package.nix +++ b/pkgs/by-name/ra/raffi/package.nix @@ -3,32 +3,58 @@ fetchFromGitHub, rustPlatform, makeBinaryWrapper, + pkg-config, fuzzel, + wayland, + libxkbcommon, + writableTmpDirAsHomeHook, additionalPrograms ? [ ], }: rustPlatform.buildRustPackage (finalAttrs: { pname = "raffi"; - version = "0.12.0"; + version = "0.20.0"; src = fetchFromGitHub { owner = "chmouel"; repo = "raffi"; tag = "v${finalAttrs.version}"; - hash = "sha256-v+Y+x9DCxMDn8qtUmsq9c4Zbc5sG7mLX9Y1ZKgXcPEI="; + hash = "sha256-WAYSHQIQRd37xTpOs4EhK0V4wcBLWIRP7KvA7XjIZ0g="; }; - cargoHash = "sha256-uXZ3OWLGrYUzS5eailvMvWpr2eadvG/bIs2ZdO1WCSo="; + cargoHash = "sha256-VPgMavPK6HGKICmGgPIM1YDvsRJrdndfbetAOqMAQ0M="; nativeBuildInputs = [ makeBinaryWrapper + pkg-config + writableTmpDirAsHomeHook ]; - checkFlags = [ "--skip=tests::test_read_config_from_reader" ]; + buildInputs = [ + wayland + libxkbcommon + ]; + + preCheck = '' + # Several tests use `firefox` in their config fixtures. The test parses configs + # via `read_config_from_reader` which validates that referenced binaries exist + # in PATH, filtering out entries with missing binaries. Provide a stub so these + # tests can run in the sandbox. + mkdir -p "$TMPDIR/fake-bin" + touch "$TMPDIR/fake-bin/firefox" + chmod +x "$TMPDIR/fake-bin/firefox" + export PATH="$TMPDIR/fake-bin:$PATH" + ''; postFixup = '' wrapProgram $out/bin/raffi \ - --prefix PATH : ${lib.makeBinPath ([ fuzzel ] ++ additionalPrograms)} + --prefix PATH : ${lib.makeBinPath ([ fuzzel ] ++ additionalPrograms)} \ + --prefix LD_LIBRARY_PATH : ${ + lib.makeLibraryPath [ + wayland + libxkbcommon + ] + } ''; meta = { @@ -36,7 +62,11 @@ rustPlatform.buildRustPackage (finalAttrs: { homepage = "https://github.com/chmouel/raffi"; changelog = "https://github.com/chmouel/raffi/releases/tag/v${finalAttrs.version}"; license = with lib.licenses; [ asl20 ]; - maintainers = with lib.maintainers; [ aos ]; + maintainers = with lib.maintainers; [ + aos + chmouel + vdemeester + ]; mainProgram = "raffi"; platforms = lib.platforms.linux; };