From 34b6b977f64329c74287810941345dc1aff2c3aa Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Mon, 28 Feb 2022 23:35:26 +0100 Subject: [PATCH] [Packages + Hardware] Add aviallon.programs.allowUnfreeList to whitelist unfree packages (and add Nvidia-related things in it) --- hardware/nvidia.nix | 15 ++++++++------- packages.nix | 7 +++++++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/hardware/nvidia.nix b/hardware/nvidia.nix index beb7c2f..62daacf 100644 --- a/hardware/nvidia.nix +++ b/hardware/nvidia.nix @@ -1,7 +1,7 @@ { config, pkgs, lib, ... }: with lib; let - hardwareCfg = config.aviallon.hardware; + cfg = config.aviallon.hardware; in { imports = [ @@ -10,24 +10,25 @@ in options.aviallon.hardware.useProprietary = mkEnableOption "nvidia proprietary drivers"; - config = mkIf (hardwareCfg.gpuVendor == "nvidia") { - boot.initrd.kernelModules = if hardwareCfg.useProprietary then [ + config = mkIf (cfg.gpuVendor == "nvidia") { + boot.initrd.kernelModules = if cfg.useProprietary then [ "nvidia" "nvidia_drm" "nvidia_uvm" "nvidia_modeset" ] else [ "nouveau" ]; - # boot.blacklistedKernelModules = optional hardwareCfg.useProprietary "nouveau"; - services.xserver.videoDrivers = optional hardwareCfg.useProprietary "nvidia"; + # boot.blacklistedKernelModules = optional cfg.useProprietary "nouveau"; + services.xserver.videoDrivers = optional cfg.useProprietary "nvidia"; hardware.opengl.driSupport32Bit = true; hardware.nvidia = { powerManagement.enable = true; modesetting.enable = true; }; - nixpkgs.config.allowUnfreePredicate = mkIf (hardwareCfg.useProprietary) (pkg: builtins.elem (lib.getName pkg) [ + aviallon.programs.allowUnfreeList = mkIf (cfg.useProprietary) [ "nvidia-x11" - ]); + "nvidia-settings" + ]; hardware.opengl.extraPackages = with pkgs; [ libvdpau-va-gl diff --git a/packages.nix b/packages.nix index 845e461..fba9bae 100644 --- a/packages.nix +++ b/packages.nix @@ -33,6 +33,12 @@ in description = "Add specific compile flags"; type = types.listOf types.str; }; + allowUnfreeList = mkOption { + default = [ ]; + example = [ "nvidia-x11" "steam" ]; + description = "Allow specific unfree software to be installed"; + type = types.listOf types.str; + }; }; config = mkIf cfg.enable { @@ -50,6 +56,7 @@ in }; }; + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) cfg.allowUnfreeList; environment.systemPackages = with pkgs; with libsForQt5; [ vim