From 375801cfcba34b1b2d4360cf54817a114e1411f0 Mon Sep 17 00:00:00 2001 From: Philipp Schuster Date: Wed, 3 Apr 2024 16:34:57 +0200 Subject: [PATCH] linux-packages: init at ${linuxHeaders.version} This exports the standalone scripts from the Linux tree as usable package. For example, they are helpful for OS-space developers and virtualization engineers. For the beginning, this includes: `$ extract-vmlinux path/to/bzImage > vmlinux` `$ extract-ikconfig path/to/bzImage > .config` --- pkgs/by-name/li/linux-scripts/package.nix | 64 +++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 pkgs/by-name/li/linux-scripts/package.nix diff --git a/pkgs/by-name/li/linux-scripts/package.nix b/pkgs/by-name/li/linux-scripts/package.nix new file mode 100644 index 000000000000..f317538be7e7 --- /dev/null +++ b/pkgs/by-name/li/linux-scripts/package.nix @@ -0,0 +1,64 @@ +{ lib +, linuxHeaders # Linux source tree +, makeWrapper +, stdenvNoCC + +, binutils +, coreutils +, gnugrep + + # decompressors for possible kernel image formats +, bzip2 +, gzip +, lz4 +, lzop +, xz +, zstd +}: + +let + commonDeps = [ + binutils + coreutils + gnugrep + gzip + xz + bzip2 + lzop + lz4 + zstd + ]; + + toWrapScriptLines = scriptName: '' + install -Dm 0755 scripts/${scriptName} $out/bin/${scriptName} + wrapProgram $out/bin/${scriptName} --prefix PATH : ${lib.makeBinPath commonDeps} + ''; +in +stdenvNoCC.mkDerivation +{ + inherit (linuxHeaders) version; + pname = "linux-scripts"; + + # These scripts will rarely change and are usually not bound to a specific + # version of Linux. So it is okay to just use whatever Linux version comes + # from `linuxHeaders. + src = linuxHeaders.src; + + nativeBuildInputs = [ makeWrapper ]; + + dontConfigure = true; + dontBuild = true; + + installPhase = '' + ${toWrapScriptLines "extract-ikconfig"} + ${toWrapScriptLines "extract-vmlinux"} + ''; + + meta = with lib; { + description = "Standalone scripts from /scripts"; + homepage = "https://www.kernel.org/"; + license = licenses.gpl2Only; + maintainers = [ maintainers.phip1611 ]; + platforms = platforms.all; + }; +}