xremap: refactor

This commit is contained in:
Philip Taron
2025-10-24 12:27:38 -07:00
parent dee46cb09b
commit ac527d27ce
+41 -53
View File
@@ -3,83 +3,71 @@
rustPlatform,
fetchFromGitHub,
pkg-config,
xremap,
withVariant ? "wlroots",
}:
let
pname = "xremap";
version = "0.14.2";
src = fetchFromGitHub {
owner = "xremap";
repo = "xremap";
tag = "v${version}";
hash = "sha256-5BHet5kKpmJFpjga7QZoLPydtzs5iPX5glxP4YvsYx0=";
};
cargoHash = "sha256-NZNLO+wmzEdIZPp5Zu81m/ux8Au+8EMq31QpuZN9l5w=";
buildXremap =
{
suffix ? "",
features ? [ ],
descriptionSuffix ? "",
}:
assert descriptionSuffix != "" && features != [ ];
rustPlatform.buildRustPackage {
pname = "${pname}${suffix}";
inherit version src cargoHash;
nativeBuildInputs = [ pkg-config ];
buildNoDefaultFeatures = true;
buildFeatures = features;
meta = {
description =
"Key remapper for X11 and Wayland"
+ lib.optionalString (descriptionSuffix != "") " (${descriptionSuffix} support)";
homepage = "https://github.com/xremap/xremap";
changelog = "https://github.com/xremap/xremap/blob/${src.tag}/CHANGELOG.md";
license = lib.licenses.mit;
mainProgram = "xremap";
maintainers = [ lib.maintainers.hakan-demirli ];
platforms = lib.platforms.linux;
};
};
variants = {
x11 = buildXremap {
x11 = {
features = [ "x11" ];
descriptionSuffix = "X11";
};
gnome = buildXremap {
gnome = {
suffix = "-gnome";
features = [ "gnome" ];
descriptionSuffix = "Gnome";
};
kde = buildXremap {
kde = {
suffix = "-kde";
features = [ "kde" ];
descriptionSuffix = "KDE";
};
wlroots = buildXremap {
wlroots = {
suffix = "-wlroots";
features = [ "wlroots" ];
descriptionSuffix = "wlroots";
};
hyprland = buildXremap {
hyprland = {
suffix = "-hyprland";
features = [ "hypr" ];
descriptionSuffix = "Hyprland";
};
};
variant = variants.${withVariant} or null;
in
variants.wlroots.overrideAttrs (finalAttrs: {
passthru = {
gnome = variants.gnome;
kde = variants.kde;
wlroots = variants.wlroots;
hyprland = variants.hyprland;
x11 = variants.x11;
assert (
lib.assertMsg (variant != null)
"Unknown variant ${withVariant}: expected one of ${lib.concatStringsSep ", " (lib.attrNames variants)}"
);
rustPlatform.buildRustPackage (finalAttrs: {
pname = "xremap${variant.suffix or ""}";
version = "0.14.2";
src = fetchFromGitHub {
owner = "xremap";
repo = "xremap";
tag = "v${finalAttrs.version}";
hash = "sha256-5BHet5kKpmJFpjga7QZoLPydtzs5iPX5glxP4YvsYx0=";
};
nativeBuildInputs = [ pkg-config ];
buildNoDefaultFeatures = true;
buildFeatures = variant.features;
cargoHash = "sha256-NZNLO+wmzEdIZPp5Zu81m/ux8Au+8EMq31QpuZN9l5w=";
passthru = lib.mapAttrs (name: lib.const (xremap.override { withVariant = name; })) variants;
meta = {
description = "Key remapper for X11 and Wayland (${variant.descriptionSuffix} support)";
homepage = "https://github.com/xremap/xremap";
changelog = "https://github.com/xremap/xremap/blob/v${finalAttrs.version}/CHANGELOG.md";
license = lib.licenses.mit;
mainProgram = "xremap";
maintainers = [ lib.maintainers.hakan-demirli ];
platforms = lib.platforms.linux;
};
})