dmenu-rs: refactor to add variant with enabled plugins
Add the dmenu-rs-enable-plugins package. The dmenu-rs-enable-plugins package is identical the dmenu-rs, except that it is built with all plugins available in the dmenu-rs respository (whereas the dmenu-rs package is built with none). The same underlying derivation is use, except a boolean flag is passed to indicate whether or not to enable plugins. See https://github.com/NixOS/nixpkgs/issues/333733 and https://github.com/Shizcow/dmenu-rs
This commit is contained in:
parent
329a9c1d97
commit
79dd55af66
2188
pkgs/by-name/dm/dmenu-rs/enablePlugins.Cargo.lock
generated
Normal file
2188
pkgs/by-name/dm/dmenu-rs/enablePlugins.Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -15,17 +15,27 @@
|
||||
fontconfig,
|
||||
libXft,
|
||||
libXinerama,
|
||||
aspell,
|
||||
xclip,
|
||||
xdg-utils,
|
||||
|
||||
enablePlugins ? false,
|
||||
}:
|
||||
|
||||
# The dmenu-rs package has extensive plugin support. However, only a variant
|
||||
# of dmenu-rs without any plugins is packaged here. This is because the set of
|
||||
# plugins is defined at compile time and the dmenu-rs build uses this set to
|
||||
# dynamically generate a corresponding Cargo.lock file. To work around this
|
||||
# dynamic generation in nixpkgs, the Cargo.lock file has been generated in
|
||||
# advance and then checked in here. If you'd like to further customize
|
||||
# dmenu-rs, either disabling specific plugins or enabling additional plugins,
|
||||
# you'll have to build it from the source.
|
||||
# The dmenu-rs package has extensive plugin support. However, only two
|
||||
# variants of the package are presented here: one with no plugins and one with
|
||||
# all of the plugins that have been checked into the upstream repository. This
|
||||
# is because the set of plugins is defined at compile time and the dmenu-rs
|
||||
# build uses this set to dynamically generate a corresponding Cargo.lock file.
|
||||
# To work around this dynamic generation in nixpkgs, each variant's Cargo.lock
|
||||
# file has been generated in advance and then checked in here. If you'd like
|
||||
# to further customize dmenu-rs, either disabling specific plugins or enabling
|
||||
# additional plugins from outside of the dmenu-rs repository, you'll have to
|
||||
# build it from the source.
|
||||
# See: https://github.com/Shizcow/dmenu-rs#plugins
|
||||
let
|
||||
cargoLockFile = if enablePlugins then ./enablePlugins.Cargo.lock else ./Cargo.lock;
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "dmenu-rs";
|
||||
version = "5.5.4";
|
||||
@ -52,6 +62,11 @@ stdenv.mkDerivation rec {
|
||||
fontconfig
|
||||
libXft
|
||||
libXinerama
|
||||
]
|
||||
++ lib.optionals enablePlugins [
|
||||
aspell
|
||||
xclip
|
||||
xdg-utils
|
||||
];
|
||||
|
||||
# The dmenu-rs repository does not include a Cargo.lock because of its
|
||||
@ -59,12 +74,22 @@ stdenv.mkDerivation rec {
|
||||
# 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;
|
||||
lockFile = cargoLockFile;
|
||||
};
|
||||
|
||||
# Copy the Cargo.lock stored here in nixpkgs into the build directory.
|
||||
postPatch = ''
|
||||
cp ${./Cargo.lock} src/Cargo.lock
|
||||
postPatch =
|
||||
''
|
||||
cp ${cargoLockFile} src/Cargo.lock
|
||||
''
|
||||
+ lib.optionalString enablePlugins ''
|
||||
chmod +w src/Cargo.lock
|
||||
'';
|
||||
|
||||
# Include all plugins in the dmenu-rs repository under src/plugins.
|
||||
# See https://github.com/Shizcow/dmenu-rs/tree/master/src/plugins
|
||||
preBuild = lib.optionalString enablePlugins ''
|
||||
sed -i -E "s/PLUGINS =/PLUGINS = $(find src/plugins/ -mindepth 1 -maxdepth 1 -type d -printf "%f\n" | tr "\n" " ")/" config.mk
|
||||
'';
|
||||
|
||||
cargoRoot = "src";
|
||||
@ -77,7 +102,9 @@ stdenv.mkDerivation rec {
|
||||
doCheck = false;
|
||||
|
||||
meta = {
|
||||
description = "Pixel perfect port of dmenu, rewritten in Rust with extensive plugin support";
|
||||
description =
|
||||
"Pixel perfect port of dmenu, rewritten in Rust with extensive plugin support"
|
||||
+ lib.optionalString enablePlugins ", with all upstream plugins enabled";
|
||||
homepage = "https://github.com/Shizcow/dmenu-rs";
|
||||
license = with lib.licenses; [ gpl3Only ];
|
||||
maintainers = with lib.maintainers; [ benjaminedwardwebb ];
|
||||
|
@ -28585,6 +28585,8 @@ with pkgs;
|
||||
dmenu = callPackage ../applications/misc/dmenu { };
|
||||
dmenu-wayland = callPackage ../applications/misc/dmenu/wayland.nix { };
|
||||
|
||||
dmenu-rs-enable-plugins = dmenu-rs.override { enablePlugins = true; };
|
||||
|
||||
dmensamenu = callPackage ../applications/misc/dmensamenu {
|
||||
inherit (python3Packages) buildPythonApplication requests;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user