|
1 | 1 | { config, lib, pkgs, ... }:
|
2 | 2 |
|
3 | 3 | let
|
4 |
| - inherit (lib) mkDefault mkOption types; |
| 4 | + inherit (lib) fetchFromGitHub mkDefault mkOption types versions; |
5 | 5 |
|
6 |
| - shortVersion = config.microsoft-surface.kernelVersion; |
7 |
| - version = if shortVersion == "6.12" then |
| 6 | + # Set the full kernel version and hashes |
| 7 | + version = |
| 8 | + if config.microsoft-surface.kernelVersion == "lts" then |
8 | 9 | "6.12.19"
|
9 |
| - else if shortVersion == "6.13" then |
| 10 | + else if config.microsoft-surface.kernelVersion == "latest" then |
10 | 11 | "6.13.6"
|
11 | 12 | else
|
12 |
| - abort "Invalid kernel version: ${shortVersion}"; |
13 |
| - |
14 |
| - rev = "arch-${version}-1"; |
| 13 | + abort "Invalid kernel version: ${config.microsoft-surface.kernelVersion}"; |
15 | 14 |
|
16 |
| - hash = |
| 15 | + shortVersion = versions.majorMinor version; |
| 16 | + packageHash = |
17 | 17 | if shortVersion == "6.12" then
|
18 | 18 | "sha256-Pv7O8D8ma+MPLhYP3HSGQki+Yczp8b7d63qMb6l4+mY="
|
19 | 19 | else if shortVersion == "6.13" then
|
|
29 | 29 | else
|
30 | 30 | abort "Invalid kernel version: ${shortVersion}";
|
31 | 31 |
|
32 |
| - inherit (pkgs.callPackage ./kernel/linux-package.nix { repos = pkgs.callPackage ./kernel/repos.nix { rev = rev; hash = hash; }; }) linuxPackage surfacePatches; |
| 32 | + # Fetch the release from the linux-surface project |
| 33 | + rev = "arch-${version}-1"; |
| 34 | + repos = pkgs.callPackage ({ fetchFromGitHub, rev, packageHash }: { |
| 35 | + linux-surface = fetchFromGitHub { |
| 36 | + owner = "linux-surface"; |
| 37 | + repo = "linux-surface"; |
| 38 | + rev = rev; |
| 39 | + hash = packageHash; |
| 40 | + }; |
| 41 | + }) { inherit rev packageHash; }; |
33 | 42 |
|
| 43 | + # Build the kernel package |
| 44 | + inherit (pkgs.callPackage ./kernel/linux-package.nix { inherit repos; }) linuxPackage surfacePatches; |
34 | 45 | kernelPatches = surfacePatches {
|
35 | 46 | inherit version;
|
36 | 47 | patchFn = ./kernel/${shortVersion}/patches.nix;
|
37 | 48 | };
|
38 | 49 | kernelPackages = linuxPackage {
|
39 | 50 | inherit version kernelPatches;
|
40 |
| - sha256 = srcHash; |
| 51 | + hash = srcHash; |
41 | 52 | ignoreConfigErrors=true;
|
42 | 53 | };
|
43 | 54 |
|
44 | 55 | in {
|
45 | 56 | options.microsoft-surface.kernelVersion = mkOption {
|
46 | 57 | description = "Kernel Version to use (patched for MS Surface)";
|
47 | 58 | type = types.enum [
|
48 |
| - "6.12" |
49 |
| - "6.13" |
| 59 | + "lts" |
| 60 | + "latest" |
50 | 61 | ];
|
51 |
| - default = "6.12"; |
| 62 | + default = "lts"; |
52 | 63 | };
|
53 | 64 |
|
54 | 65 | config = {
|
55 | 66 | boot = {
|
56 | 67 | inherit kernelPackages;
|
57 | 68 |
|
58 |
| - kernelParams = mkDefault [ "mem_sleep_default=deep" ]; |
59 | 69 | # Seems to be required to properly enable S0ix "Modern Standby":
|
| 70 | + kernelParams = mkDefault [ "mem_sleep_default=deep" ]; |
60 | 71 | };
|
61 | 72 |
|
62 | 73 | # NOTE: Check the README before enabling TLP:
|
63 | 74 | services.tlp.enable = mkDefault false;
|
64 | 75 |
|
65 |
| - # i.e. needed for wifi firmware, see https://github.com/NixOS/nixos-hardware/issues/364 |
| 76 | + # Needed for wifi firmware, see https://github.com/NixOS/nixos-hardware/issues/364 |
66 | 77 | hardware = {
|
67 | 78 | enableRedistributableFirmware = mkDefault true;
|
68 | 79 | sensor.iio.enable = mkDefault true;
|
|
0 commit comments