kbd: link compression libs directly (#434001)

Changed files
+68 -64
nixos
modules
config
pkgs
by-name
kb
top-level
-1
nixos/modules/config/console.nix
···
"${config.boot.initrd.systemd.package}/lib/systemd/systemd-vconsole-setup"
"${config.boot.initrd.systemd.package.kbd}/bin/setfont"
"${config.boot.initrd.systemd.package.kbd}/bin/loadkeys"
-
"${config.boot.initrd.systemd.package.kbd.gzip}/bin/gzip" # Fonts and keyboard layouts are compressed
]
++ lib.optionals (cfg.font != null && lib.hasPrefix builtins.storeDir cfg.font) [
"${cfg.font}"
···
"${config.boot.initrd.systemd.package}/lib/systemd/systemd-vconsole-setup"
"${config.boot.initrd.systemd.package.kbd}/bin/setfont"
"${config.boot.initrd.systemd.package.kbd}/bin/loadkeys"
]
++ lib.optionals (cfg.font != null && lib.hasPrefix builtins.storeDir cfg.font) [
"${cfg.font}"
+68 -59
pkgs/by-name/kb/kbd/package.nix
···
{
lib,
stdenv,
-
fetchurl,
nixosTests,
autoreconfHook,
pkg-config,
flex,
check,
pam,
bash,
bashNonInteractive,
coreutils,
-
gzip,
bzip2,
xz,
zstd,
gitUpdater,
withVlock ? true,
-
compress ? false,
}:
-
stdenv.mkDerivation rec {
pname = "kbd";
-
version = "2.8.0";
__structuredAttrs = true;
-
src = fetchurl {
-
url = "mirror://kernel/linux/utils/kbd/${pname}-${version}.tar.xz";
-
hash = "sha256-AfWAbafR009ZS3sqauGrIyFTRM8QZOjtzTqQ/vl3ahE=";
};
# vlock is moved into its own output, since it depends on pam. This
···
"vlock"
];
-
configureFlags = [
-
"--enable-optional-progs"
-
"--enable-libkeymap"
-
"--disable-nls"
-
(lib.enableFeature withVlock "vlock")
-
]
-
++ lib.optionals (!lib.systems.equals stdenv.buildPlatform stdenv.hostPlatform) [
-
"ac_cv_func_malloc_0_nonnull=yes"
-
"ac_cv_func_realloc_0_nonnull=yes"
-
]
-
++ lib.optionals (!compress) [
-
"--disable-compress"
-
];
-
patches = [
./search-paths.patch
];
···
mv fgGIod/trf{,-fgGIod}.map
mv colemak/{en-latin9,colemak}.map
popd
-
sed -i '
-
1i prefix:=$(vlock)
-
1i bindir := $(vlock)/bin' \
-
src/vlock/Makefile.in \
-
src/vlock/Makefile.am
-
''
-
+ lib.optionalString compress ''
-
# Fix paths to decompressors. Trailing space to avoid replacing `xz` in `".xz"`.
-
substituteInPlace src/libkbdfile/kbdfile.c \
-
--replace-fail 'gzip ' '${gzip}/bin/gzip ' \
-
--replace-fail 'bzip2 ' '${bzip2.bin}/bin/bzip2 ' \
-
--replace-fail 'xz ' '${xz.bin}/bin/xz ' \
-
--replace-fail 'zstd ' '${zstd.bin}/bin/zstd '
'';
enableParallelBuilding = true;
-
postInstall = ''
-
for s in unicode_{start,stop}; do
-
substituteInPlace ''${!outputBin}/bin/$s \
-
--replace-fail /usr/bin/tty ${coreutils}/bin/tty
-
moveToOutput "bin/$s" "$scripts"
-
done
-
'';
-
buildInputs = [
check
bash
]
++ lib.optionals withVlock [ pam ];
-
NIX_LDFLAGS = lib.optional stdenv.hostPlatform.isStatic "-laudit";
-
nativeBuildInputs = [
-
autoreconfHook
-
pkg-config
-
flex
-
];
-
strictDeps = true;
-
outputChecks.out.disallowedRequisites = lib.optionals (!compress) [
bash
bashNonInteractive
];
-
passthru.tests = {
-
inherit (nixosTests) keymap kbd-setfont-decompress kbd-update-search-paths-patch;
-
};
passthru = {
-
gzip = gzip;
updateScript = gitUpdater {
# No nicer place to find latest release.
url = "https://github.com/legionus/kbd.git";
rev-prefix = "v";
};
};
-
meta = with lib; {
homepage = "https://kbd-project.org/";
description = "Linux keyboard tools and keyboard maps";
-
platforms = platforms.linux;
-
license = licenses.gpl2Plus;
-
maintainers = with maintainers; [ davidak ];
};
}
···
{
lib,
stdenv,
+
fetchgit,
nixosTests,
autoreconfHook,
pkg-config,
flex,
+
perl,
+
bison,
+
autoPatchelfHook,
check,
pam,
bash,
bashNonInteractive,
coreutils,
+
zlib,
bzip2,
xz,
zstd,
gitUpdater,
+
pkgsCross,
withVlock ? true,
}:
+
stdenv.mkDerivation {
pname = "kbd";
+
version = "2.8.0-unstable-2025-08-12";
__structuredAttrs = true;
+
src = fetchgit {
+
url = "https://git.kernel.org/pub/scm/linux/kernel/git/legion/kbd.git";
+
rev = "46295167a55643e941c8cdcfd2cb76bd138c851c";
+
hash = "sha256-m1aVfsEme/BnyJogOPvGcOrSJfli8B/TrGxOm4POt0w=";
};
# vlock is moved into its own output, since it depends on pam. This
···
"vlock"
];
patches = [
./search-paths.patch
];
···
mv fgGIod/trf{,-fgGIod}.map
mv colemak/{en-latin9,colemak}.map
popd
+
'';
+
preConfigure = ''
+
# Perl and Bash only used during build time
+
patchShebangs --build contrib/
'';
+
configureFlags = [
+
"--enable-optional-progs"
+
"--enable-libkeymap"
+
"--disable-nls"
+
(lib.enableFeature withVlock "vlock")
+
]
+
++ lib.optionals (!lib.systems.equals stdenv.buildPlatform stdenv.hostPlatform) [
+
"ac_cv_func_malloc_0_nonnull=yes"
+
"ac_cv_func_realloc_0_nonnull=yes"
+
];
+
+
strictDeps = true;
enableParallelBuilding = true;
+
nativeBuildInputs = [
+
autoreconfHook
+
pkg-config
+
flex
+
perl
+
bison
+
autoPatchelfHook # for patching dlopen()
+
];
+
nativeCheckInputs = [
check
+
];
+
+
buildInputs = [
+
zlib
+
bzip2
+
xz
+
zstd
bash
]
++ lib.optionals withVlock [ pam ];
+
postInstall = ''
+
substituteInPlace $out/bin/unicode_{start,stop} \
+
--replace-fail /usr/bin/tty ${coreutils}/bin/tty
+
+
moveToOutput bin/unicode_start $scripts
+
moveToOutput bin/unicode_stop $scripts
+
''
+
+ lib.optionalString withVlock ''
+
moveToOutput bin/vlock $vlock
+
moveToOutput etc/pam.d/vlock $vlock
+
'';
+
outputChecks.out.disallowedRequisites = [
bash
bashNonInteractive
];
passthru = {
updateScript = gitUpdater {
# No nicer place to find latest release.
url = "https://github.com/legionus/kbd.git";
rev-prefix = "v";
};
+
tests = {
+
cross =
+
let
+
systemString = if stdenv.buildPlatform.isAarch64 then "gnu64" else "aarch64-multiplatform";
+
in
+
pkgsCross.${systemString}.kbd;
+
inherit (nixosTests) keymap kbd-setfont-decompress kbd-update-search-paths-patch;
+
};
};
+
meta = {
homepage = "https://kbd-project.org/";
description = "Linux keyboard tools and keyboard maps";
+
platforms = lib.platforms.linux;
+
license = lib.licenses.gpl2Plus;
+
maintainers = with lib.maintainers; [ davidak ];
};
}
-4
pkgs/top-level/all-packages.nix
···
kbibtex = libsForQt5.callPackage ../applications/office/kbibtex { };
-
kbdCompressed = callPackage ../by-name/kb/kbd/package.nix {
-
compress = true;
-
};
-
kexi = libsForQt5.callPackage ../applications/office/kexi { };
kiwix = libsForQt5.callPackage ../applications/misc/kiwix { };
···
kbibtex = libsForQt5.callPackage ../applications/office/kbibtex { };
kexi = libsForQt5.callPackage ../applications/office/kexi { };
kiwix = libsForQt5.callPackage ../applications/misc/kiwix { };