83 lines
2.5 KiB
Nix
83 lines
2.5 KiB
Nix
# Based on https://github.com/linyinfeng/dotfiles/blob/ff3e52e30fcc27b8119792aee9b3afe9ce4739b6/nixos/profiles/boot/kernel/sdm845-mainline/default.nix, thank you!
|
|
{
|
|
inputs,
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}: let
|
|
tag = "sdm845-6.16-rc2-4";
|
|
hash = "sha256-Nu7BwSl40Ytm7nCzyctNed7nqwq7NcVVxHLF3KFMKC4=";
|
|
version = lib.elemAt (lib.strings.match "sdm845-([0-9\\.]+(-rc[0-9]+)?)(-[a-zA-Z0-9\\-]+)?" tag) 0;
|
|
major = lib.versions.major version;
|
|
minor = lib.versions.minor version;
|
|
inherit (lib.kernel) yes module;
|
|
structuredExtraConfig =
|
|
import ../lib/adjust-standalone-config.nix (import ./_config.nix {inherit lib;})
|
|
// {
|
|
# for envfs
|
|
EROFS_FS = yes;
|
|
NET_9P = module;
|
|
CONFIG_NET_9P_VIRTIO = module;
|
|
"9P_FS" = module;
|
|
# other
|
|
RUST = yes;
|
|
};
|
|
in {
|
|
#
|
|
passthru.kernel = {
|
|
conf2nix = inputs.conf2nix.lib.conf2nix {
|
|
configFile = "${inputs.pmaports}/device/community/linux-postmarketos-qcom-sdm845/config-postmarketos-qcom-sdm845.aarch64";
|
|
inherit (config.boot.kernelPackages) kernel;
|
|
preset = "standalone";
|
|
};
|
|
};
|
|
boot = {
|
|
kernelPackages = let
|
|
linux_sdm845_fn = {
|
|
buildLinux,
|
|
lib,
|
|
...
|
|
} @ args:
|
|
buildLinux (
|
|
args
|
|
// {
|
|
inherit version;
|
|
modDirVersion = "${lib.versions.pad 3 version}-sdm845";
|
|
extraMeta.branch = lib.versions.majorMinor version;
|
|
src = pkgs.fetchFromGitLab {
|
|
owner = "sdm845-mainline";
|
|
repo = "linux";
|
|
rev = tag;
|
|
inherit hash;
|
|
};
|
|
defconfig = "defconfig sdm845.config";
|
|
enableCommonConfig = false;
|
|
autoModules = false;
|
|
inherit structuredExtraConfig;
|
|
|
|
stdenv = let
|
|
originalPlatform = pkgs.stdenv.hostPlatform;
|
|
hostPlatform = assert pkgs.stdenv.hostPlatform.isAarch64;
|
|
originalPlatform
|
|
// {
|
|
linux-kernel =
|
|
originalPlatform.linux-kernel
|
|
// {
|
|
extraConfig = "";
|
|
};
|
|
};
|
|
in
|
|
pkgs.stdenv // {inherit hostPlatform;};
|
|
}
|
|
// (args.argsOverride or {})
|
|
);
|
|
linux_sdm845 = pkgs.callPackage linux_sdm845_fn {
|
|
kernelPatches = lib.filter (p: !(lib.elem p.name [])) (
|
|
pkgs."linuxPackages_${major}_${minor}".kernel.kernelPatches or []
|
|
);
|
|
};
|
|
in
|
|
pkgs.recurseIntoAttrs (pkgs.linuxPackagesFor linux_sdm845);
|
|
};
|
|
}
|