biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / applications / misc / dmenu-rs / default.nix
blob3340171c2da6c4e1fadfaca9a6d71bbce33762be
1 { stdenv
2 , rustPlatform
3 , lib
4 , fetchFromGitHub
5 , cargo
6 , expat
7 , fontconfig
8 , libXft
9 , libXinerama
10 , m4
11 , pkg-config
12 , python3
15 # The dmenu-rs package has extensive plugin support. However, this derivation
16 # only builds the package with the default set of plugins. If you'd like to
17 # further customize dmenu-rs you can build it from the source.
18 # See: https://github.com/Shizcow/dmenu-rs#plugins
19 stdenv.mkDerivation rec {
20   pname = "dmenu-rs";
21   version = "5.5.3";
23   src = fetchFromGitHub {
24     owner = "Shizcow";
25     repo = "dmenu-rs";
26     rev = version;
27     hash = "sha256-05Ia+GHeL8PzOwR7H+NEVhKJVMPhlIaQLwGfvwOAl0g=";
28   };
30   nativeBuildInputs = [
31     cargo
32     m4
33     pkg-config
34     python3
35     rustPlatform.bindgenHook
36     rustPlatform.cargoSetupHook
37   ];
39   buildInputs = [
40     expat
41     fontconfig
42     libXft
43     libXinerama
44   ];
46   # The dmenu-rs repository does not include a Cargo.lock because of its
47   # dynamic build and plugin support. Generating it with make and checking it
48   # in to nixpkgs here was the easiest way to supply it to rustPlatform.
49   # See: https://github.com/Shizcow/dmenu-rs/issues/34#issuecomment-757415584
50   cargoDeps = rustPlatform.importCargoLock {
51     lockFile = ./Cargo.lock;
52   };
54   # Copy the Cargo.lock stored here in nixpkgs into the build directory.
55   postPatch = ''
56     cp ${./Cargo.lock} src/Cargo.lock
57   '';
59   cargoRoot = "src";
61   installFlags = [ "PREFIX=$(out)" ];
63   # Running make test requires an X11 server. It also runs dmenu, which then
64   # hangs on user input. It was too hard to figure out how to run these tests
65   # deterministically. See the original PR for some discussion on this.
66   doCheck = false;
68   meta = with lib; {
69     description = "A pixel perfect port of dmenu, rewritten in Rust with extensive plugin support";
70     homepage = "https://github.com/Shizcow/dmenu-rs";
71     license = with licenses; [ gpl3Only ];
72     maintainers = with maintainers; [ benjaminedwardwebb ];
73     platforms = platforms.linux;
74     broken = (stdenv.isLinux && stdenv.isAarch64);
75   };