diff --git a/hosts/herugrim/default.nix b/hosts/herugrim/default.nix index 5cc148c..f4f6269 100644 --- a/hosts/herugrim/default.nix +++ b/hosts/herugrim/default.nix @@ -29,9 +29,6 @@ hostname = "herugrim"; username = "itsdrike"; - sound.enable = true; - bluetooth.enable = true; - impermanence = { root = { enable = true; diff --git a/options/system/default.nix b/options/system/default.nix index 25cbfc2..70204e3 100644 --- a/options/system/default.nix +++ b/options/system/default.nix @@ -17,13 +17,5 @@ in type = types.str; description = "Username for the primary admin account for this system"; }; - - sound = { - enable = mkEnableOption "sound related programs and audio-dependent programs"; - }; - - bluetooth = { - enable = mkEnableOption "bluetooth modules, drivers and configuration program(s)"; - }; }; } diff --git a/system/shared/bluetooth.nix b/system/shared/bluetooth.nix deleted file mode 100644 index 4be3b55..0000000 --- a/system/shared/bluetooth.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: let - inherit (lib) mkIf; - - sys = config.myOptions.system.bluetooth; -in { - config = mkIf sys.enable { - modules.system.boot.extraKernelParams = ["btusb"]; - - hardware.bluetooth = { - enable = true; - package = pkgs.bluez5-experimental; - #hsphfpd.enable = true; - powerOnBoot = true; - disabledPlugins = ["sap"]; - settings = { - General = { - JustWorksRepairing = "always"; - MultiProfile = "multiple"; - Experimental = true; - }; - }; - }; - - # https://nixos.wiki/wiki/Bluetooth - services.blueman.enable = true; - }; -} diff --git a/system/shared/default.nix b/system/shared/default.nix index 37a7b12..a93ddac 100644 --- a/system/shared/default.nix +++ b/system/shared/default.nix @@ -7,11 +7,9 @@ _: { ./environment ./impermanence ./security - ./multimedia ./programs.nix ./system.nix ./network.nix - ./bluetooth.nix ./localisation.nix ]; } diff --git a/system/shared/multimedia/default.nix b/system/shared/multimedia/default.nix deleted file mode 100644 index 8da82bb..0000000 --- a/system/shared/multimedia/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -_: { - imports = [ - ./sound - ]; -} diff --git a/system/shared/multimedia/sound/default.nix b/system/shared/multimedia/sound/default.nix deleted file mode 100644 index 9e25e37..0000000 --- a/system/shared/multimedia/sound/default.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - config, - lib, - ... -}: let - inherit (lib) mkIf mkDefault; - cfg = config.myOptions.system.sound; -in { - imports = [ ./pipewire.nix ]; - config = mkIf cfg.enable { - sound = { - enable = mkDefault false; # this just enables ALSA, which we don't really care abouyt - mediaKeys.enable = true; - }; - }; -} - diff --git a/system/shared/multimedia/sound/pipewire.nix b/system/shared/multimedia/sound/pipewire.nix deleted file mode 100644 index 44ea9e6..0000000 --- a/system/shared/multimedia/sound/pipewire.nix +++ /dev/null @@ -1,126 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: let - inherit (lib.modules) mkIf; - inherit (lib.lists) optionals; - inherit (lib.generators) toLua; - - cfg = config.myOptions.system.sound; - cfgBluetooth = config.myOptions.system.bluetooth; -in { - config = mkIf cfg.enable { - # in case pipewire was force disabled for whatever reason, fall - # back to PulseAudio to ensure that we still have audio. I do not - # like PA, but bad audio is better than no audio. Though we should - # always use PipeWire where available - hardware.pulseaudio.enable = !config.services.pipewire.enable; - - # able to change scheduling policies, e.g. to SCHED_RR - # sounds server use RealtimeKit (rtkti) to acquire - # realtime priority - security.rtkit.enable = config.services.pipewire.enable; - - # enable pipewire and configure it for low latency - # the below configuration may not fit every use case - # and you are recommended to experiment with the values - # in order to find the perfect configuration - services = { - pipewire = let - quantum = 64; - rate = 48000; - qr = "${toString quantum}/${toString rate}"; - in { - enable = true; - - # emulation layers - audio.enable = true; - pulse.enable = true; # PA server emulation - jack.enable = true; # JACK audio emulation - alsa.enable = true; # Alsa emulation - - extraConfig.pipewire."99-lowlatency" = { - context = { - properties.default.clock.min-quantum = quantum; - modules = [ - { - name = "libpipewire-module-rtkit"; - flags = ["ifexists" "nofail"]; - args = { - nice.level = -15; - rt = { - prio = 88; - time.soft = 200000; - time.hard = 200000; - }; - }; - } - { - name = "libpipewire-module-protocol-pulse"; - args = { - server.address = ["unix:native"]; - pulse.min = { - req = qr; - quantum = qr; - frag = qr; - }; - }; - } - ]; - - stream.properties = { - node.latency = qr; - resample.quality = 1; - }; - }; - }; - - wireplumber = { - enable = true; - configPackages = let - # generate "matches" section of the rules - matches = toLua { - multiline = false; # looks better while inline - indent = false; - } [[["node.name" "matches" "alsa_output.*"]]]; # nested lists are to produce `{{{ }}}` in the output - - # generate "apply_properties" section of the rules - apply_properties = toLua {} { - "audio.format" = "S32LE"; - "audio.rate" = rate * 2; - "api.alsa.period-size" = 2; - }; - in - [ - (pkgs.writeTextDir "share/lowlatency.lua.d/99-alsa-lowlatency.lua" '' - alsa_monitor.rules = { - { - matches = ${matches}; - apply_properties = ${apply_properties}; - } - } - '') - ] - ++ optionals cfgBluetooth.enable [ - (pkgs.writeTextDir "share/bluetooth.lua.d/51-bluez-config.lua" '' - bluez_monitor.properties = { - ["bluez5.enable-sbc-xq"] = true, - ["bluez5.enable-msbc"] = true, - ["bluez5.enable-hw-volume"] = true, - ["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]" - } - '') - ]; - }; - }; - }; - - systemd.user.services = { - pipewire.wantedBy = ["default.target"]; - pipewire-pulse.wantedBy = ["default.target"]; - }; - }; -} -