{ lib, stdenv, rustPlatform, fetchFromGitHub, libiconv, openssl, pkg-config, cmake, xclip, nix-update-script, }: rustPlatform.buildRustPackage (finalAttrs: { pname = "gitui"; version = "0.28.1"; src = fetchFromGitHub { owner = "gitui-org"; repo = "gitui"; rev = "v${finalAttrs.version}"; hash = "sha256-IyDms4ke5evtSjFZrWEy0AascA0g9rG/a9RjbBNzZwg="; }; cargoHash = "sha256-LMw5TRNe9OK6ygOOMBpniMsmrK8K3qdkQ+SmaLJa+w0="; nativeBuildInputs = [ pkg-config cmake ]; buildInputs = [ openssl ] ++ lib.optional stdenv.hostPlatform.isLinux xclip ++ lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ]; postPatch = '' # The cargo config overrides linkers for some targets, breaking the build # on e.g. `aarch64-linux`. These overrides are not required in the Nix # environment: delete them. rm .cargo/config.toml # build script tries to get version information from git rm build.rs substituteInPlace Cargo.toml --replace-fail 'build = "build.rs"' "" ''; env = { GITUI_BUILD_NAME = finalAttrs.version; # Needed to get openssl-sys to use pkg-config. OPENSSL_NO_VENDOR = 1; }; # Getting app_config_path fails with a permission denied checkFlags = [ "--skip=keys::key_config::tests::test_symbolic_links" ]; passthru.updateScript = nix-update-script { }; meta = { changelog = "https://github.com/gitui-org/gitui/blob/v${finalAttrs.version}/CHANGELOG.md"; description = "Blazing fast terminal-ui for Git written in Rust"; homepage = "https://github.com/gitui-org/gitui"; license = lib.licenses.mit; mainProgram = "gitui"; maintainers = with lib.maintainers; [ yanganto mfrw ]; }; })