diff options
Diffstat (limited to 'nixos/modules/apple-silicon-support/packages/linux-asahi/default.nix')
-rw-r--r-- | nixos/modules/apple-silicon-support/packages/linux-asahi/default.nix | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/nixos/modules/apple-silicon-support/packages/linux-asahi/default.nix b/nixos/modules/apple-silicon-support/packages/linux-asahi/default.nix deleted file mode 100644 index 4f00f3b..0000000 --- a/nixos/modules/apple-silicon-support/packages/linux-asahi/default.nix +++ /dev/null @@ -1,118 +0,0 @@ -{ lib -, pkgs -, callPackage -, writeShellScriptBin -, writeText -, linuxPackagesFor -, _4KBuild ? false -, withRust ? false -, kernelPatches ? [ ] -}: - -let - # TODO: use a pure nix regex parser instead of an IFD, and remove this workaround - localPkgs = if builtins ? currentSystem - then import (pkgs.path) { - crossSystem.system = builtins.currentSystem; - localSystem.system = builtins.currentSystem; - } - else pkgs; - - inherit (localPkgs) runCommand; - - parseExtraConfig = cfg: let - lines = builtins.filter (s: s != "") (lib.strings.splitString "\n" cfg); - perLine = line: let - kv = lib.strings.splitString " " line; - in assert (builtins.length kv == 2); - "CONFIG_${builtins.elemAt kv 0}=${builtins.elemAt kv 1}"; - in lib.strings.concatMapStringsSep "\n" perLine lines; - - readConfig = configfile: import (runCommand "config.nix" { } '' - echo "{ } // " > "$out" - while IFS='=' read key val; do - [ "x''${key#CONFIG_}" != "x$key" ] || continue - no_firstquote="''${val#\"}"; - echo '{ "'"$key"'" = "'"''${no_firstquote%\"}"'"; } //' >> "$out" - done < "${configfile}" - echo "{ }" >> $out - '').outPath; - - linux-asahi-pkg = { stdenv, lib, fetchFromGitHub, fetchpatch, linuxKernel, - rustPlatform, rustfmt, rust-bindgen, ... } @ args: - let - configfile = if kernelPatches == [ ] then ./config else - writeText "config" '' - ${builtins.readFile ./config} - - # Patches - ${lib.strings.concatMapStringsSep "\n" ({extraConfig ? "", ...}: parseExtraConfig extraConfig) kernelPatches} - ''; - - _kernelPatches = kernelPatches; - in - (linuxKernel.manualConfig rec { - inherit stdenv lib; - - version = "6.1.0-asahi"; - modDirVersion = version; - - src = fetchFromGitHub { - # tracking: https://github.com/AsahiLinux/PKGBUILDs/blob/stable/linux-asahi/PKGBUILD - owner = "AsahiLinux"; - repo = "linux"; - rev = "asahi-6.1-2"; - hash = "sha256-grQytmYoAlPxRI8mYQjZFduD3BH7PA7rz1hyInJb4JA="; - }; - - kernelPatches = [ - ] ++ lib.optionals _4KBuild [ - # thanks to Sven Peter - # https://lore.kernel.org/linux-iommu/20211019163737.46269-1-sven@svenpeter.dev/ - { name = "sven-iommu-4k"; - patch = ./sven-iommu-4k.patch; - } - ] ++ lib.optionals (!_4KBuild) [ - # patch the kernel to set the default size to 16k instead of modifying - # the config so we don't need to convert our config to the nixos - # infrastructure or patch it and thus introduce a dependency on the host - # system architecture - { name = "default-pagesize-16k"; - patch = ./default-pagesize-16k.patch; - } - ] ++ _kernelPatches; - - inherit configfile; - config = readConfig configfile; - - extraMeta.branch = "6.1"; - } // (args.argsOverride or {})).overrideAttrs (old: if withRust then { - nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ - rust-bindgen - rustfmt - # rustc 1.66.x has problems relating to the sad old aarch64 GCC9. - # we need it to pass -lgcc to gcc through the nix machinery but only when rustc - # is running, so we give the kernel build a rustc that wraps the real rustc - # while setting the appropriate environment variable during its execution. - # https://github.com/NixOS/nixpkgs/pull/209113 - (writeShellScriptBin "rustc" '' - NIX_LDFLAGS=-lgcc ${rustPlatform.rust.rustc}/bin/rustc "$@" - '') - ]; - RUST_LIB_SRC = rustPlatform.rustLibSrc; - - preConfigure = '' - # Fixes for Rust 1.66.x - sed -i -e 's/rustc_allocator_nounwind/rustc_nounwind/g' rust/alloc/alloc.rs - sed -i -e 's/const Unpin/Unpin/' rust/alloc/boxed.rs - sed -i -e '/^pub unsafe trait RawDeviceId/i #[const_trait]' rust/kernel/driver.rs - - # Fixes for rust-bindgen 0.63.0 - sed -i -e 's/blacklist/blocklist/g' rust/Makefile - sed -i -e 's/whitelist/allowlist/g' rust/Makefile - ''; - } else {}); - - linux-asahi = (callPackage linux-asahi-pkg { }); -in lib.recurseIntoAttrs (linuxPackagesFor linux-asahi) - |