From 09b0a8ef715d46296e1865adf95cfa9503fd6487 Mon Sep 17 00:00:00 2001 From: Thomas Watson Date: Mon, 11 Mar 2024 21:02:32 -0500 Subject: modules: add hardware.asahi.enable (true by default) --- apple-silicon-support/modules/boot-m1n1/default.nix | 2 +- apple-silicon-support/modules/default.nix | 13 ++++++++++--- apple-silicon-support/modules/kernel/default.nix | 2 +- apple-silicon-support/modules/mesa/default.nix | 4 ++-- .../modules/peripheral-firmware/default.nix | 2 +- apple-silicon-support/modules/sound/default.nix | 8 +++++--- 6 files changed, 20 insertions(+), 11 deletions(-) diff --git a/apple-silicon-support/modules/boot-m1n1/default.nix b/apple-silicon-support/modules/boot-m1n1/default.nix index 39e94c568a3b..ccbd40bddb8c 100644 --- a/apple-silicon-support/modules/boot-m1n1/default.nix +++ b/apple-silicon-support/modules/boot-m1n1/default.nix @@ -23,7 +23,7 @@ let ''; }; in { - config = { + config = lib.mkIf config.hardware.asahi.enable { # install m1n1 with the boot loader boot.loader.grub.extraFiles = bootFiles; boot.loader.systemd-boot.extraFiles = bootFiles; diff --git a/apple-silicon-support/modules/default.nix b/apple-silicon-support/modules/default.nix index d6f397671c72..7990556d46b4 100644 --- a/apple-silicon-support/modules/default.nix +++ b/apple-silicon-support/modules/default.nix @@ -8,10 +8,9 @@ ./sound ]; - config = - let + config = let cfg = config.hardware.asahi; - in { + in lib.mkIf cfg.enable { nixpkgs.overlays = lib.mkBefore [ cfg.overlay ]; hardware.asahi.pkgs = @@ -26,6 +25,14 @@ }; options.hardware.asahi = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = '' + Enable the basic Asahi Linux components, such as kernel and boot setup. + ''; + }; + pkgsSystem = lib.mkOption { type = lib.types.str; default = "aarch64-linux"; diff --git a/apple-silicon-support/modules/kernel/default.nix b/apple-silicon-support/modules/kernel/default.nix index a7b0ea574713..619a02634e93 100644 --- a/apple-silicon-support/modules/kernel/default.nix +++ b/apple-silicon-support/modules/kernel/default.nix @@ -2,7 +2,7 @@ { config, pkgs, lib, ... }: { - config = { + config = lib.mkIf config.hardware.asahi.enable { boot.kernelPackages = let pkgs' = config.hardware.asahi.pkgs; in diff --git a/apple-silicon-support/modules/mesa/default.nix b/apple-silicon-support/modules/mesa/default.nix index 34966d05d7ad..cc3db2b32930 100644 --- a/apple-silicon-support/modules/mesa/default.nix +++ b/apple-silicon-support/modules/mesa/default.nix @@ -3,7 +3,7 @@ config = let isMode = mode: (config.hardware.asahi.useExperimentalGPUDriver && config.hardware.asahi.experimentalGPUInstallMode == mode); - in lib.mkMerge [ + in lib.mkIf config.hardware.asahi.enable (lib.mkMerge [ { # required for proper DRM setup even without GPU driver services.xserver.config = '' @@ -41,7 +41,7 @@ }) ]; }) - ]; + ]); options.hardware.asahi.useExperimentalGPUDriver = lib.mkOption { type = lib.types.bool; diff --git a/apple-silicon-support/modules/peripheral-firmware/default.nix b/apple-silicon-support/modules/peripheral-firmware/default.nix index 2a478e6d9d77..e10632ff2a5e 100644 --- a/apple-silicon-support/modules/peripheral-firmware/default.nix +++ b/apple-silicon-support/modules/peripheral-firmware/default.nix @@ -1,6 +1,6 @@ { config, pkgs, lib, ... }: { - config = { + config = lib.mkIf config.hardware.asahi.enable { assertions = lib.mkIf config.hardware.asahi.extractPeripheralFirmware [ { assertion = config.hardware.asahi.peripheralFirmwareDirectory != null; message = '' diff --git a/apple-silicon-support/modules/sound/default.nix b/apple-silicon-support/modules/sound/default.nix index 38e412b9e174..d76e7138d4c9 100644 --- a/apple-silicon-support/modules/sound/default.nix +++ b/apple-silicon-support/modules/sound/default.nix @@ -5,13 +5,13 @@ # disable pulseaudio as the Asahi sound infrastructure can't use it. # if we disable it only if setupAsahiSound is enabled, then infinite # recursion results as pulseaudio enables config.sound by default. - { config.hardware.pulseaudio.enable = false; } + { config.hardware.pulseaudio.enable = (!config.hardware.asahi.enable); } ]; options.hardware.asahi = { setupAsahiSound = lib.mkOption { type = lib.types.bool; - default = config.sound.enable; + default = config.sound.enable && config.hardware.asahi.enable; description = '' Set up the Asahi DSP components so that the speakers and headphone jack work properly and safely. @@ -20,6 +20,8 @@ }; config = let + cfg = config.hardware.asahi; + asahi-audio = pkgs.asahi-audio; # the asahi-audio we use lsp-plugins = pkgs.lsp-plugins; # the lsp-plugins we use @@ -39,7 +41,7 @@ newHotness = builtins.hasAttr "configPackages" options.services.pipewire; lv2Path = lib.makeSearchPath "lib/lv2" [ lsp-plugins pkgs.bankstown-lv2 ]; - in lib.mkIf config.hardware.asahi.setupAsahiSound (lib.mkMerge [ + in lib.mkIf (cfg.setupAsahiSound && cfg.enable) (lib.mkMerge [ { # enable pipewire to run real-time and avoid audible glitches security.rtkit.enable = true; -- cgit 1.4.1