nixpkgs/pkgs/applications/window-managers/i3/status-rust.nix
kilianar 857ac54ad9 i3status-rust: optional icu_calendar support
Recently, upstream has incorporated support for non-Gregorian calendars
using the icu_calendar crate. To manage the substantial increase in
binary size caused by this addition, upstream has made this feature
flag optional. In line with this decision, this commit introduces the
withICUCalendar option, set to a default value of false.
2023-11-25 22:48:51 +01:00

66 lines
1.5 KiB
Nix

{ lib
, rustPlatform
, fetchFromGitHub
, pkg-config
, makeWrapper
, dbus
, libpulseaudio
, notmuch
, openssl
, ethtool
, lm_sensors
, iw
, iproute2
, withICUCalendar ? false
}:
rustPlatform.buildRustPackage rec {
pname = "i3status-rust";
version = "0.32.3";
src = fetchFromGitHub {
owner = "greshake";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-CldVak1BQ4VhRt24hHdog5O3crkQBZBkRWNT7uYUw4Y=";
};
cargoHash = "sha256-gWBmzpgZcsO4u8kXSqtr4FIYvshXpxWbECg/tcyl9Ok=";
nativeBuildInputs = [ pkg-config makeWrapper ];
buildInputs = [ dbus libpulseaudio notmuch openssl lm_sensors ];
buildFeatures = [
"notmuch"
"maildir"
"pulseaudio"
] ++ (lib.optionals withICUCalendar [ "icu_calendar" ]);
prePatch = ''
substituteInPlace src/util.rs \
--replace "/usr/share/i3status-rust" "$out/share"
'';
postInstall = ''
mkdir -p $out/share
cp -R examples files/* $out/share
'';
postFixup = ''
wrapProgram $out/bin/i3status-rs --prefix PATH : ${lib.makeBinPath [ iproute2 ethtool iw ]}
'';
# Currently no tests are implemented, so we avoid building the package twice
doCheck = false;
meta = with lib; {
description = "Very resource-friendly and feature-rich replacement for i3status";
homepage = "https://github.com/greshake/i3status-rust";
license = licenses.gpl3Only;
mainProgram = "i3status-rs";
maintainers = with maintainers; [ backuitist globin ];
platforms = platforms.linux;
};
}