From 7377d7276b8b712e72161cf7d1801694096e36f4 Mon Sep 17 00:00:00 2001 From: K900 Date: Mon, 13 Dec 2021 17:59:55 +0300 Subject: [PATCH 1/3] maintainers: add myself --- maintainers/maintainer-list.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 48d8973e922..6174f898182 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -6049,6 +6049,13 @@ github = "k4leg"; githubId = 39882583; }; + k900 = { + name = "Ilya K."; + email = "me@0upti.me"; + github = "K900"; + githubId = 386765; + matrix = "@k900:0upti.me"; + }; kaction = { name = "Dmitry Bogatov"; email = "KAction@disroot.org"; From 9972c89fd04d39ed607a10f87aee1d8f702ea6bd Mon Sep 17 00:00:00 2001 From: K900 Date: Mon, 13 Dec 2021 18:00:06 +0300 Subject: [PATCH 2/3] wireplumber: init at 0.4.6 --- .../libraries/pipewire/wireplumber.nix | 82 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 1 + 2 files changed, 83 insertions(+) create mode 100644 pkgs/development/libraries/pipewire/wireplumber.nix diff --git a/pkgs/development/libraries/pipewire/wireplumber.nix b/pkgs/development/libraries/pipewire/wireplumber.nix new file mode 100644 index 00000000000..eba1b210590 --- /dev/null +++ b/pkgs/development/libraries/pipewire/wireplumber.nix @@ -0,0 +1,82 @@ +{ lib +, stdenv +, fetchFromGitLab +, nix-update-script +, # base build deps + meson +, pkg-config +, ninja +, # docs build deps + python3 +, doxygen +, graphviz +, # GI build deps + gobject-introspection +, # runtime deps + glib +, systemd +, lua5_4 +, pipewire +, # options + enableDocs ? true +, enableGI ? stdenv.hostPlatform == stdenv.buildPlatform +}: +let + mesonEnableFeature = b: if b then "enabled" else "disabled"; +in +stdenv.mkDerivation rec { + pname = "wireplumber"; + version = "0.4.6"; + + outputs = [ "out" "dev" ] ++ lib.optional enableDocs "doc"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + owner = "pipewire"; + repo = "wireplumber"; + rev = version; + sha256 = "sha256-y+Gj9EZn67W3U81zXgp+6JAFxZSZTwwT0TB3Kueb/Tw="; + }; + + nativeBuildInputs = [ + meson + pkg-config + ninja + ] ++ lib.optionals enableDocs [ + graphviz + ] ++ lib.optionals enableGI [ + gobject-introspection + ] ++ lib.optionals (enableDocs || enableGI) [ + doxygen + (python3.withPackages (ps: with ps; + lib.optionals enableDocs [ sphinx sphinx_rtd_theme breathe ] ++ + lib.optionals enableGI [ lxml ] + )) + ]; + + buildInputs = [ + glib + systemd + lua5_4 + pipewire + ]; + + mesonFlags = [ + "-Dsystem-lua=true" + "-Delogind=disabled" + "-Ddoc=${mesonEnableFeature enableDocs}" + "-Dintrospection=${mesonEnableFeature enableGI}" + ]; + + passthru.updateScript = nix-update-script { + attrPath = pname; + }; + + meta = with lib; { + description = "A modular session / policy manager for PipeWire"; + homepage = "https://pipewire.org"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ k900 ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 82bd5f88666..9339b4b3357 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -13777,6 +13777,7 @@ with pkgs; pipewire = callPackage ../development/libraries/pipewire {}; pipewire-media-session = callPackage ../development/libraries/pipewire/media-session.nix {}; pipewire_0_2 = callPackage ../development/libraries/pipewire/0.2.nix {}; + wireplumber = callPackage ../development/libraries/pipewire/wireplumber.nix {}; pyradio = callPackage ../applications/audio/pyradio {}; From 4909a1558256bd01dea4dc8f8cd6f2567d2458a7 Mon Sep 17 00:00:00 2001 From: K900 Date: Mon, 13 Dec 2021 18:05:23 +0300 Subject: [PATCH 3/3] nixos/wireplumber: init This is extremely basic for now, but we can add more stuff later --- nixos/modules/module-list.nix | 1 + .../desktops/pipewire/wireplumber.nix | 41 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 nixos/modules/services/desktops/pipewire/wireplumber.nix diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 73a61c4ca0e..1ee4b4e88a9 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -364,6 +364,7 @@ ./services/desktops/malcontent.nix ./services/desktops/pipewire/pipewire.nix ./services/desktops/pipewire/pipewire-media-session.nix + ./services/desktops/pipewire/wireplumber.nix ./services/desktops/gnome/at-spi2-core.nix ./services/desktops/gnome/chrome-gnome-shell.nix ./services/desktops/gnome/evolution-data-server.nix diff --git a/nixos/modules/services/desktops/pipewire/wireplumber.nix b/nixos/modules/services/desktops/pipewire/wireplumber.nix new file mode 100644 index 00000000000..ad96dc1f974 --- /dev/null +++ b/nixos/modules/services/desktops/pipewire/wireplumber.nix @@ -0,0 +1,41 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.services.pipewire.wireplumber; +in +{ + meta.maintainers = [ lib.maintainers.k900 ]; + + options = { + services.pipewire.wireplumber = { + enable = lib.mkEnableOption "A modular session / policy manager for PipeWire"; + + package = lib.mkOption { + type = lib.types.package; + default = pkgs.wireplumber; + defaultText = lib.literalExpression "pkgs.wireplumber"; + description = '' + The wireplumber derivation to use. + ''; + }; + }; + }; + + config = lib.mkIf cfg.enable { + assertions = [ + { + assertion = !config.services.pipewire.media-session.enable; + message = "WirePlumber and pipewire-media-session can't be enabled at the same time."; + } + ]; + + environment.systemPackages = [ cfg.package ]; + systemd.packages = [ cfg.package ]; + + systemd.services.wireplumber.enable = config.services.pipewire.systemWide; + systemd.user.services.wireplumber.enable = !config.services.pipewire.systemWide; + + systemd.services.wireplumber.wantedBy = [ "pipewire.service" ]; + systemd.user.services.wireplumber.wantedBy = [ "pipewire.service" ]; + }; +}