From ac527d27cee66cce38f24f0d760b5bc9fcd12e34 Mon Sep 17 00:00:00 2001 From: Philip Taron Date: Fri, 24 Oct 2025 12:21:55 -0700 Subject: [PATCH] xremap: refactor --- pkgs/by-name/xr/xremap/package.nix | 94 +++++++++++++----------------- 1 file changed, 41 insertions(+), 53 deletions(-) diff --git a/pkgs/by-name/xr/xremap/package.nix b/pkgs/by-name/xr/xremap/package.nix index f5573c08cc7b..eb7939f9f189 100644 --- a/pkgs/by-name/xr/xremap/package.nix +++ b/pkgs/by-name/xr/xremap/package.nix @@ -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; }; })