nixpkgs/pkgs/applications/misc/dmenu-rs/default.nix
Benjamin Edward Webb 5765305de2
dmenu-rs: fix issue 222351 and bump to 5.5.2
Fix the dmenu-rs package derivation, which was broken after changes to
the rustPlatform nixpkgs tooling. The issue linked below was
specifically raised on an early version of NixOS 23.05.

This is through no fault of those changes. In fact, the brittle hack in
the dmenu-rs derivation that broke can now be entirely removed because
of the very changes that broke them.

This commit also bumps dmenu-rs from 5.5.1 to 5.5.2. See upstream for
details on the changes.

See https://github.com/NixOS/nixpkgs/issues/222351
See https://github.com/NixOS/nixpkgs/pull/218472
See https://github.com/Shizcow/dmenu-rs
2023-03-29 09:39:09 -04:00

88 lines
2.4 KiB
Nix

{ stdenv
, rustPlatform
, lib
, fetchFromGitHub
, fetchpatch
, cargo
, expat
, fontconfig
, libXft
, libXinerama
, m4
, pkg-config
, python3
}:
# The dmenu-rs package has extensive plugin support. However, this derivation
# only builds the package with the default set of plugins. If you'd like to
# further customize dmenu-rs you can build it from the source.
# See: https://github.com/Shizcow/dmenu-rs#plugins
stdenv.mkDerivation rec {
pname = "dmenu-rs";
version = "5.5.2";
src = fetchFromGitHub {
owner = "Shizcow";
repo = pname;
rev = version;
sha256 = "sha256-6yO2S6j/BD6x/bsuTFKAKvARl1n94KRiPwpmswmUOPU=";
};
nativeBuildInputs = [
cargo
m4
pkg-config
python3
rustPlatform.bindgenHook
rustPlatform.cargoSetupHook
];
buildInputs = [
expat
fontconfig
libXft
libXinerama
];
# The dmenu-rs repository does not include a Cargo.lock because of its
# dynamic build and plugin support. Generating it with make and checking it
# in to nixpkgs here was the easiest way to supply it to rustPlatform.
# See: https://github.com/Shizcow/dmenu-rs/issues/34#issuecomment-757415584
cargoDeps = rustPlatform.importCargoLock {
lockFile = ./Cargo.lock;
};
# Fix a bug in the makefile when installing.
# See https://github.com/Shizcow/dmenu-rs/pull/50
patches = let
fix-broken-make-install-patch = fetchpatch {
url = "https://github.com/Shizcow/dmenu-rs/commit/1f4b3f8a07d73272f8c6f19bfb6ff3de5e042815.patch";
sha256 = "sha256-hmXApWg8qngc1vHkHUnB7Lt7wQUOyCSsBmn4HC1j53M=";
};
in [
fix-broken-make-install-patch
];
# Copy the Cargo.lock stored here in nixpkgs into the build directory.
postPatch = ''
cp ${./Cargo.lock} src/Cargo.lock
'';
cargoRoot = "src";
installFlags = [ "PREFIX=$(out)" ];
# Running make test requires an X11 server. It also runs dmenu, which then
# hangs on user input. It was too hard to figure out how to run these tests
# deterministically. See the original PR for some discussion on this.
doCheck = false;
meta = with lib; {
description = "A pixel perfect port of dmenu, rewritten in Rust with extensive plugin support";
homepage = "https://github.com/Shizcow/dmenu-rs";
license = with licenses; [ gpl3Only ];
maintainers = with maintainers; [ benjaminedwardwebb ];
platforms = platforms.linux;
broken = (stdenv.isLinux && stdenv.isAarch64);
};
}