From c1da5da112d1e55a952251c0ec983a4a81d9f781 Mon Sep 17 00:00:00 2001 From: Astro Date: Mon, 27 Sep 2021 22:40:27 +0200 Subject: [PATCH] DRY c3d2.audioServer --- hosts/dacbert/default.nix | 24 +------- hosts/pulsebert/default.nix | 48 +--------------- lib/audio-server/default.nix | 56 +++++++++++++++++++ .../audio-server}/generate.sh | 0 .../audio-server}/pipewire-pulse.conf.in.json | 0 .../audio-server}/pipewire-pulse.conf.json | 0 lib/default.nix | 1 + 7 files changed, 59 insertions(+), 70 deletions(-) create mode 100644 lib/audio-server/default.nix rename {hosts/pulsebert => lib/audio-server}/generate.sh (100%) rename {hosts/pulsebert => lib/audio-server}/pipewire-pulse.conf.in.json (100%) rename {hosts/pulsebert => lib/audio-server}/pipewire-pulse.conf.json (100%) diff --git a/hosts/dacbert/default.nix b/hosts/dacbert/default.nix index 76eca944..7ffc55d8 100644 --- a/hosts/dacbert/default.nix +++ b/hosts/dacbert/default.nix @@ -102,29 +102,7 @@ extraGroups = [ "wheel" "audio" ]; }; - hardware.pulseaudio = { - enable = true; - systemWide = true; - tcp.enable = true; - tcp.anonymousClients.allowedIpRanges = [ - "127.0.0.0/8" - "::1/128" - "fd23:42:c3d2:500::/56" - "172.22.99.0/24" - "172.20.72.0/21" - "2a00:8180:2c00:200::/56" - ]; - zeroconf.publish.enable = true; - package = pkgs.pulseaudioFull; - extraModules = [ pkgs.pulseaudio-modules-bt ]; - }; - #services.pipewire = { - # enable = true; - # alsa.enable = true; - # config.pipewire-pulse = lib.importJSON ./pipewire-pulse.conf.json; - # pulse.enable = true; - #}; - security.rtkit.enable = true; + c3d2.audioServer.enable = true; # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions diff --git a/hosts/pulsebert/default.nix b/hosts/pulsebert/default.nix index 7ec992f8..be4f748b 100644 --- a/hosts/pulsebert/default.nix +++ b/hosts/pulsebert/default.nix @@ -87,53 +87,7 @@ in extraGroups = [ "wheel" "audio" ]; }; - # Enable sound. - sound.enable = true; - hardware.bluetooth = { - enable = true; - settings = { - Policy.AutoEnable = true; - General = { - Enable = "Source,Sink,Media,Socket"; - #DiscoverableTimeout = 0; - #Discoverable = true; - }; - }; - }; - - hardware.pulseaudio = { - enable = true; - systemWide = true; - tcp.enable = true; - tcp.anonymousClients.allowedIpRanges = [ - "127.0.0.0/8" - "::1/128" - "fd23:42:c3d2:500::/56" - "172.22.99.0/24" - "172.20.72.0/21" - "2a00:8180:2c00:200::/56" - ]; - zeroconf.publish.enable = true; - package = pkgs.pulseaudioFull; - extraModules = [ pkgs.pulseaudio-modules-bt ]; - }; - #services.pipewire = { - # enable = true; - # alsa.enable = true; - # config.pipewire-pulse = lib.importJSON ./pipewire-pulse.conf.json; - # pulse.enable = true; - #}; - security.rtkit.enable = true; - - # tell Avahi to publish CUPS and PulseAudio - services.avahi = { - enable = true; - publish = { - enable = true; - addresses = true; - userServices = true; - }; - }; + c3d2.audioServer.enable = true; services.nginx = { enable = true; diff --git a/lib/audio-server/default.nix b/lib/audio-server/default.nix new file mode 100644 index 00000000..b170d656 --- /dev/null +++ b/lib/audio-server/default.nix @@ -0,0 +1,56 @@ +{ config, lib, pkgs, ... }: +{ + options.c3d2.audioServer = with lib; { + enable = mkEnableOption "Enable PulseAudio and Bluetooth sinks"; + }; + + config = lib.mkIf config.c3d2.audioServer.enable { + # Enable sound. + sound.enable = true; + hardware.bluetooth = { + enable = lib.mkDefault true; + settings = { + Policy.AutoEnable = true; + General = { + Enable = "Source,Sink,Media,Socket"; + #DiscoverableTimeout = 0; + #Discoverable = true; + }; + }; + }; + + hardware.pulseaudio = { + enable = true; + systemWide = true; + tcp.enable = true; + tcp.anonymousClients.allowedIpRanges = [ + "127.0.0.0/8" + "::1/128" + "fd23:42:c3d2:500::/56" + "172.22.99.0/24" + "172.20.72.0/21" + "2a00:8180:2c00:200::/56" + ]; + zeroconf.publish.enable = true; + package = pkgs.pulseaudioFull; + extraModules = [ pkgs.pulseaudio-modules-bt ]; + }; + #services.pipewire = { + # enable = true; + # alsa.enable = true; + # config.pipewire-pulse = lib.importJSON ./pipewire-pulse.conf.json; + # pulse.enable = true; + #}; + security.rtkit.enable = true; + + # tell Avahi to publish CUPS and PulseAudio + services.avahi = { + enable = true; + publish = { + enable = true; + addresses = true; + userServices = true; + }; + }; + }; +} diff --git a/hosts/pulsebert/generate.sh b/lib/audio-server/generate.sh similarity index 100% rename from hosts/pulsebert/generate.sh rename to lib/audio-server/generate.sh diff --git a/hosts/pulsebert/pipewire-pulse.conf.in.json b/lib/audio-server/pipewire-pulse.conf.in.json similarity index 100% rename from hosts/pulsebert/pipewire-pulse.conf.in.json rename to lib/audio-server/pipewire-pulse.conf.in.json diff --git a/hosts/pulsebert/pipewire-pulse.conf.json b/lib/audio-server/pipewire-pulse.conf.json similarity index 100% rename from hosts/pulsebert/pipewire-pulse.conf.json rename to lib/audio-server/pipewire-pulse.conf.json diff --git a/lib/default.nix b/lib/default.nix index f356301f..9ad321b3 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -31,6 +31,7 @@ in { ./users ./stats.nix ./openwebrx.nix + ./audio-server ]; options.c3d2 = with lib;