mirror of
https://github.com/NixOS/nixos-hardware.git
synced 2025-11-04 17:27:14 +08:00
85 lines
1.6 KiB
Nix
85 lines
1.6 KiB
Nix
{
|
|
pkgs,
|
|
lib,
|
|
fetchurl,
|
|
buildLinux,
|
|
linuxPackagesFor,
|
|
repos,
|
|
}:
|
|
|
|
let
|
|
inherit (builtins) elem;
|
|
inherit (lib) recurseIntoAttrs types versions;
|
|
|
|
linuxPackage =
|
|
{
|
|
url ? "mirror://kernel/linux/kernel/v${versions.major version}.x/linux-${version}.tar.xz",
|
|
sha256 ? null,
|
|
src ? (fetchurl { inherit url sha256; }),
|
|
version,
|
|
modDirVersion ? (versions.pad 3 version),
|
|
kernelPatches ? [ ],
|
|
...
|
|
}@args:
|
|
let
|
|
inherit (builtins) removeAttrs;
|
|
|
|
args' =
|
|
{
|
|
inherit
|
|
src
|
|
version
|
|
modDirVersion
|
|
kernelPatches
|
|
;
|
|
}
|
|
// removeAttrs args [
|
|
"url"
|
|
"sha256"
|
|
];
|
|
linuxPackage = buildLinux args';
|
|
linuxPackages' = recurseIntoAttrs (linuxPackagesFor linuxPackage);
|
|
in
|
|
linuxPackages';
|
|
|
|
surfacePatches =
|
|
{
|
|
patchSrc,
|
|
version,
|
|
patchFn,
|
|
}:
|
|
pkgs.callPackage patchFn {
|
|
inherit (lib) kernel;
|
|
inherit version patchSrc;
|
|
};
|
|
|
|
versionsOf =
|
|
version:
|
|
# Provides a list of versions that can be used as an enum option for this full version:
|
|
[
|
|
version
|
|
(versions.majorMinor version)
|
|
];
|
|
|
|
versionsOfEnum =
|
|
version:
|
|
# Provide an enum option for versions of this kernel:
|
|
types.enum (versionsOf version);
|
|
|
|
isVersionOf =
|
|
kernelVersion: version:
|
|
# Test if the provided version is considered one of the list of versions from above:
|
|
elem kernelVersion (versionsOf version);
|
|
|
|
in
|
|
{
|
|
inherit
|
|
linuxPackage
|
|
repos
|
|
surfacePatches
|
|
versionsOf
|
|
isVersionOf
|
|
versionsOfEnum
|
|
;
|
|
}
|