From 5acaa980a510f77fce358bdbe93ab5fa388118fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Tue, 21 Jan 2014 00:29:35 +0100 Subject: [PATCH] pull module blacklist from Ubuntu and use it by default People often have serious problems due to bogus modules like *fb. --- nixos/modules/system/boot/modprobe.nix | 24 ++++------------ .../linux/kmod-blacklist-ubuntu/default.nix | 28 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 3 files changed, 36 insertions(+), 18 deletions(-) create mode 100644 pkgs/os-specific/linux/kmod-blacklist-ubuntu/default.nix diff --git a/nixos/modules/system/boot/modprobe.nix b/nixos/modules/system/boot/modprobe.nix index 027a7ac99d51..f694fd29dd04 100644 --- a/nixos/modules/system/boot/modprobe.nix +++ b/nixos/modules/system/boot/modprobe.nix @@ -68,7 +68,10 @@ with pkgs.lib; config = mkIf (!config.boot.isContainer) { - environment.etc = singleton + environment.etc = [ + { source = "${pkgs.kmod-blacklist-ubuntu}/modprobe.conf"; + target = "modprobe.d/ubuntu.conf"; + } { source = pkgs.writeText "modprobe.conf" '' ${flip concatMapStrings config.boot.blacklistedKernelModules (name: '' @@ -77,26 +80,11 @@ with pkgs.lib; ${config.boot.extraModprobeConfig} ''; target = "modprobe.d/nixos.conf"; - }; + } + ]; environment.systemPackages = [ config.system.sbin.modprobe pkgs.kmod ]; - boot.blacklistedKernelModules = - [ # This module is for debugging and generates gigantic amounts - # of log output, so it should never be loaded automatically. - "evbug" - - # This module causes ALSA to occassionally select the wrong - # default sound device, and is little more than an annoyance - # on modern machines. - "snd_pcsp" - - # The cirrusfb module prevents X11 from starting. FIXME: - # Ubuntu blacklists all framebuffer devices because they're - # "buggy" and cause suspend problems. Maybe we should too? - "cirrusfb" - ]; - system.activationScripts.modprobe = '' # Allow the kernel to find our wrapped modprobe (which searches diff --git a/pkgs/os-specific/linux/kmod-blacklist-ubuntu/default.nix b/pkgs/os-specific/linux/kmod-blacklist-ubuntu/default.nix new file mode 100644 index 000000000000..9da50766f929 --- /dev/null +++ b/pkgs/os-specific/linux/kmod-blacklist-ubuntu/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchbzr }: + +stdenv.mkDerivation rec { + name = "blacklist-ubuntu-${builtins.toString src.revision}"; # Saucy + + src = fetchbzr { + url = meta.homepage; + sha256 = "0ci4b5dxzirc27zvgpr3s0pa78gjmfjwprmvyplxhwxb765la9v9"; + revision = 13; + }; + + unpackPhase = "true"; + + installPhase = '' + mkdir "$out" + for f in "$src"/debian/modprobe.d/*.conf; do + echo "''\n''\n## file: "`basename "$f"`"''\n''\n" >> "$out"/modprobe.conf + cat "$f" >> "$out"/modprobe.conf + done + ''; + + #TODO: iwlwifi.conf has some strange references + + meta = { + homepage = https://code.launchpad.net/~ubuntu-branches/ubuntu/saucy/kmod/saucy; + description = "Linux kernel module blacklists from Ubuntu"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9b3c86cd29c2..85ac461732d2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6835,6 +6835,8 @@ let kmod = callPackage ../os-specific/linux/kmod { }; + kmod-blacklist-ubuntu = callPackage ../os-specific/linux/kmod-blacklist-ubuntu { }; + kvm = qemu_kvm; libcap = callPackage ../os-specific/linux/libcap { };