From 2da1ad60a8ccc2946cfb6f547453ce2387a06bae Mon Sep 17 00:00:00 2001 From: Matthieu Coudron Date: Sun, 24 Mar 2019 22:04:15 +0900 Subject: [PATCH 1/3] boot.kernelPackages: check for conflicts It's currently possible to set conflicting `boot.kernelPackages` several times which can prove confusing. This is an attempt to warn for this. --- nixos/modules/system/boot/kernel.nix | 1 + pkgs/os-specific/linux/prl-tools/default.nix | 2 -- pkgs/top-level/all-packages.nix | 9 +++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/nixos/modules/system/boot/kernel.nix b/nixos/modules/system/boot/kernel.nix index ee43fe10023..baa8c602a99 100644 --- a/nixos/modules/system/boot/kernel.nix +++ b/nixos/modules/system/boot/kernel.nix @@ -36,6 +36,7 @@ in boot.kernelPackages = mkOption { default = pkgs.linuxPackages; + type = types.unspecified // { merge = mergeEqualOption; }; apply = kernelPackages: kernelPackages.extend (self: super: { kernel = super.kernel.override { inherit randstructSeed; diff --git a/pkgs/os-specific/linux/prl-tools/default.nix b/pkgs/os-specific/linux/prl-tools/default.nix index 1a4919a5d9d..9edf924b32f 100644 --- a/pkgs/os-specific/linux/prl-tools/default.nix +++ b/pkgs/os-specific/linux/prl-tools/default.nix @@ -5,8 +5,6 @@ }: assert (!libsOnly) -> kernel != null; -# Disable for kernels 4.15 and above due to compatibility issues -assert kernel != null -> stdenv.lib.versionOlder kernel.version "4.15"; let xorgFullVer = (builtins.parseDrvName xorg.xorgserver.name).version; xorgVer = lib.concatStringsSep "." (lib.take 2 (lib.splitString "." xorgFullVer)); diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f69d103a7f6..a316e1082df 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15636,7 +15636,7 @@ in ati_drivers_x11 = callPackage ../os-specific/linux/ati-drivers { }; - blcr = callPackage ../os-specific/linux/blcr { }; + blcr = if builtins.compareVersions "3.18" kernel.version == 1 then callPackage ../os-specific/linux/blcr { } else null; chipsec = callPackage ../tools/security/chipsec { inherit kernel; @@ -15657,7 +15657,7 @@ in hyperv-daemons = callPackage ../os-specific/linux/hyperv-daemons { }; - e1000e = callPackage ../os-specific/linux/e1000e {}; + e1000e = if stdenv.lib.versionOlder kernel.version "4.10" then callPackage ../os-specific/linux/e1000e {} else null; ixgbevf = callPackage ../os-specific/linux/ixgbevf {}; @@ -15706,7 +15706,7 @@ in facetimehd = callPackage ../os-specific/linux/facetimehd { }; - jool = callPackage ../os-specific/linux/jool { }; + jool = if stdenv.lib.versionOlder kernel.version "4.18" then callPackage ../os-specific/linux/jool { } else null; mba6x_bl = callPackage ../os-specific/linux/mba6x_bl { }; @@ -15725,7 +15725,8 @@ in phc-intel = callPackage ../os-specific/linux/phc-intel { }; - prl-tools = callPackage ../os-specific/linux/prl-tools { }; + # Disable for kernels 4.15 and above due to compatibility issues + prl-tools = if stdenv.lib.versionOlder kernel.version "4.15" then null else callPackage ../os-specific/linux/prl-tools { }; sch_cake = callPackage ../os-specific/linux/sch_cake { }; From 4e30a2852cf8b80ed9e22ffbeff75320446edd72 Mon Sep 17 00:00:00 2001 From: Matthieu Coudron Date: Fri, 17 May 2019 18:26:39 +0900 Subject: [PATCH 2/3] Addressing review --- pkgs/os-specific/linux/blcr/default.nix | 2 +- pkgs/os-specific/linux/prl-tools/default.nix | 2 ++ pkgs/top-level/all-packages.nix | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/blcr/default.nix b/pkgs/os-specific/linux/blcr/default.nix index 626e978f1f1..e018f4622b4 100644 --- a/pkgs/os-specific/linux/blcr/default.nix +++ b/pkgs/os-specific/linux/blcr/default.nix @@ -2,7 +2,7 @@ # BLCR version 0.8.6 should works with linux kernel up to version 3.17.x -assert builtins.compareVersions "3.18" kernel.version == 1; +assert stdenv.lib.versionOlder "3.18" kernel.version; stdenv.mkDerivation { name = "blcr_${kernel.version}-0.8.6pre4"; diff --git a/pkgs/os-specific/linux/prl-tools/default.nix b/pkgs/os-specific/linux/prl-tools/default.nix index 9edf924b32f..1a4919a5d9d 100644 --- a/pkgs/os-specific/linux/prl-tools/default.nix +++ b/pkgs/os-specific/linux/prl-tools/default.nix @@ -5,6 +5,8 @@ }: assert (!libsOnly) -> kernel != null; +# Disable for kernels 4.15 and above due to compatibility issues +assert kernel != null -> stdenv.lib.versionOlder kernel.version "4.15"; let xorgFullVer = (builtins.parseDrvName xorg.xorgserver.name).version; xorgVer = lib.concatStringsSep "." (lib.take 2 (lib.splitString "." xorgFullVer)); diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a316e1082df..c6e303360ac 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15636,7 +15636,7 @@ in ati_drivers_x11 = callPackage ../os-specific/linux/ati-drivers { }; - blcr = if builtins.compareVersions "3.18" kernel.version == 1 then callPackage ../os-specific/linux/blcr { } else null; + blcr = if stdenv.lib.versionOlder "3.18" kernel.version then callPackage ../os-specific/linux/blcr { } else null; chipsec = callPackage ../tools/security/chipsec { inherit kernel; From 31c3a53dc30942732f67a96cf54b73291e46e3c2 Mon Sep 17 00:00:00 2001 From: Matthieu Coudron Date: Sat, 18 May 2019 18:41:53 +0900 Subject: [PATCH 3/3] Conditionally include nvidia modules --- pkgs/os-specific/linux/nvidia-x11/default.nix | 6 +++++- pkgs/top-level/all-packages.nix | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix index 82ac359158b..2290a7e80a1 100644 --- a/pkgs/os-specific/linux/nvidia-x11/default.nix +++ b/pkgs/os-specific/linux/nvidia-x11/default.nix @@ -1,7 +1,11 @@ { lib, callPackage, fetchurl, stdenv }: let - generic = args: callPackage (import ./generic.nix args) { }; + +generic = args: +if ((!lib.versionOlder args.version "391") + && stdenv.hostPlatform.system != "x86_64-linux") then null + else callPackage (import ./generic.nix args) { }; kernel = callPackage # a hacky way of extracting parameters from callPackage ({ kernel, libsOnly ? false }: if libsOnly then { } else kernel) { }; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c6e303360ac..c81a4f0760d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15706,7 +15706,7 @@ in facetimehd = callPackage ../os-specific/linux/facetimehd { }; - jool = if stdenv.lib.versionOlder kernel.version "4.18" then callPackage ../os-specific/linux/jool { } else null; + jool = callPackage ../os-specific/linux/jool { }; mba6x_bl = callPackage ../os-specific/linux/mba6x_bl { }; @@ -15726,7 +15726,7 @@ in phc-intel = callPackage ../os-specific/linux/phc-intel { }; # Disable for kernels 4.15 and above due to compatibility issues - prl-tools = if stdenv.lib.versionOlder kernel.version "4.15" then null else callPackage ../os-specific/linux/prl-tools { }; + prl-tools = if stdenv.lib.versionOlder kernel.version "4.15" then callPackage ../os-specific/linux/prl-tools { } else null; sch_cake = callPackage ../os-specific/linux/sch_cake { };