From 2e3e941ac25e2bc4531e02fe21c7c02dfa88fd64 Mon Sep 17 00:00:00 2001 From: Dmitriy Kholkin Date: Sat, 7 Jun 2025 17:31:28 +0300 Subject: [PATCH] feat: add sound nixos and home modules --- modules/home/hardware/sound.nix | 26 +++++++++++++++++++ modules/home/roles/default.nix | 40 +++++++++++++++++++++++++++++ modules/nixos/hardware/sound.nix | 44 ++++++++++++++++++++++++++++++++ modules/nixos/roles/default.nix | 4 +-- 4 files changed, 112 insertions(+), 2 deletions(-) create mode 100644 modules/home/hardware/sound.nix create mode 100644 modules/home/roles/default.nix create mode 100644 modules/nixos/hardware/sound.nix diff --git a/modules/home/hardware/sound.nix b/modules/home/hardware/sound.nix new file mode 100644 index 0000000..a0caa54 --- /dev/null +++ b/modules/home/hardware/sound.nix @@ -0,0 +1,26 @@ +{ + config, + lib, + pkgs, + ... +}: +let + inherit (lib) mkEnableOption mkIf; + + cfg = config.ataraxia.defaults.sound; +in +{ + options.ataraxia.defaults.sound = { + enable = mkEnableOption "Default sound settings"; + }; + + config = mkIf cfg.enable { + home.packages = with pkgs; [ + pavucontrol + pulseaudio + ]; + services.easyeffects.enable = true; + + persist.state.directories = [ ".local/state/wireplumber" ]; + }; +} diff --git a/modules/home/roles/default.nix b/modules/home/roles/default.nix new file mode 100644 index 0000000..34a1074 --- /dev/null +++ b/modules/home/roles/default.nix @@ -0,0 +1,40 @@ +{ config, lib, ... }: +let + inherit (lib) + mkDefault + mkIf + mkMerge + mkOption + recursiveUpdate + types + ; + + role = config.ataraxia.defaults.role; +in +{ + options.ataraxia.defaults = { + role = mkOption { + type = types.enum [ + "none" + "base" + "server" + "desktop" + ]; + default = "none"; + }; + }; + + config = + let + baseRole = { }; + serverRole = recursiveUpdate baseRole { }; + desktopRole = recursiveUpdate baseRole { + ataraxia.defaults.sound.enable = mkDefault true; + }; + in + mkMerge [ + (mkIf (role == "base") baseRole) + (mkIf (role == "server") serverRole) + (mkIf (role == "desktop") desktopRole) + ]; +} diff --git a/modules/nixos/hardware/sound.nix b/modules/nixos/hardware/sound.nix new file mode 100644 index 0000000..47cada6 --- /dev/null +++ b/modules/nixos/hardware/sound.nix @@ -0,0 +1,44 @@ +{ config, lib, ... }: +let + inherit (lib) mkEnableOption mkIf; + + cfg = config.ataraxia.defaults.sound; +in +{ + options.ataraxia.defaults.sound = { + enable = mkEnableOption "Default sound settings"; + }; + + config = mkIf cfg.enable { + security.rtkit.enable = true; + services.pulseaudio.enable = false; + + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + wireplumber.enable = true; + wireplumber.extraConfig = { + "monitor.bluez.properties" = { + "bluez5.enable-sbc-xq" = true; + "bluez5.enable-msbc" = true; + "bluez5.enable-hw-volume" = true; + "bluez5.roles" = [ + "hsp_hs" + "hsp_ag" + "hfp_hf" + "hfp_ag" + ]; + }; + }; + extraConfig.client = { + "10-no-resample" = { + "stream.properties" = { + "resample.disable" = true; + }; + }; + }; + }; + }; +} diff --git a/modules/nixos/roles/default.nix b/modules/nixos/roles/default.nix index 5dfd666..4e5d6d1 100644 --- a/modules/nixos/roles/default.nix +++ b/modules/nixos/roles/default.nix @@ -13,7 +13,6 @@ let types ; - defaultUser = config.ataraxia.defaults.users.defaultUser; fs = config.ataraxia.filesystems; fsCompression = fs.zfs.enable || fs.btrfs.enable; role = config.ataraxia.defaults.role; @@ -66,7 +65,8 @@ in time.timeZone = "Etc/UTC"; }; desktopRole = recursiveUpdate baseRole { - services.getty.autologinUser = defaultUser; + ataraxia.defaults.sound.enable = mkDefault true; + location = { provider = "manual"; latitude = 48;