From 01f07b2c72d76a3b905b97dd0a5c1e04d863e006 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Tue, 14 Nov 2017 04:41:25 +0100 Subject: [PATCH 1/3] pipewire: init at 0.1.8 --- .../libraries/pipewire/default.nix | 47 +++++++++++++++++++ .../libraries/pipewire/fix-paths.patch | 8 ++++ pkgs/top-level/all-packages.nix | 2 + 3 files changed, 57 insertions(+) create mode 100644 pkgs/development/libraries/pipewire/default.nix create mode 100644 pkgs/development/libraries/pipewire/fix-paths.patch diff --git a/pkgs/development/libraries/pipewire/default.nix b/pkgs/development/libraries/pipewire/default.nix new file mode 100644 index 00000000000..3bd94c977e8 --- /dev/null +++ b/pkgs/development/libraries/pipewire/default.nix @@ -0,0 +1,47 @@ +{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, doxygen, graphviz, valgrind +, glib, dbus, gst_all_1, v4l_utils, alsaLib, ffmpeg, libjack2, libudev, libva, xlibs +, sbc, SDL2 +}: + +let + version = "0.1.8"; +in stdenv.mkDerivation rec { + name = "pipewire-${version}"; + + src = fetchFromGitHub { + owner = "PipeWire"; + repo = "pipewire"; + rev = version; + sha256 = "1nim8d1lsf6yxk97piwmsz686w84b09lk6cagbyjr9m3k2hwybqn"; + }; + + outputs = [ "out" "dev" "doc" ]; + + nativeBuildInputs = [ + meson ninja pkgconfig doxygen graphviz valgrind + ]; + buildInputs = [ + glib dbus gst_all_1.gst-plugins-base gst_all_1.gstreamer v4l_utils + alsaLib ffmpeg libjack2 libudev libva xlibs.libX11 sbc SDL2 + ]; + + patches = [ + ./fix-paths.patch + ]; + + mesonFlags = [ + "-Denable_docs=true" + "-Denable_gstreamer=true" + ]; + + doCheck = true; + checkPhase = "meson test"; + + meta = with stdenv.lib; { + description = "Server and user space API to deal with multimedia pipelines"; + homepage = http://pipewire.org/; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = with maintainers; [ jtojnar ]; + }; +} diff --git a/pkgs/development/libraries/pipewire/fix-paths.patch b/pkgs/development/libraries/pipewire/fix-paths.patch new file mode 100644 index 00000000000..5a07c6271e1 --- /dev/null +++ b/pkgs/development/libraries/pipewire/fix-paths.patch @@ -0,0 +1,8 @@ +--- a/src/daemon/systemd/user/meson.build ++++ b/src/daemon/systemd/user/meson.build +@@ -1,4 +1,4 @@ +-systemd_user_services_dir = systemd.get_pkgconfig_variable('systemduserunitdir') ++systemd_user_services_dir = join_paths(get_option('prefix'), 'etc', 'systemd', 'user') + + install_data(sources : 'pipewire.socket', install_dir : systemd_user_services_dir) + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d89ab305966..d76117daa1d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6975,6 +6975,8 @@ with pkgs; pew = callPackage ../development/tools/pew {}; pipenv = callPackage ../development/tools/pipenv {}; + pipewire = callPackage ../development/libraries/pipewire {}; + pyrex = pyrex095; pyrex095 = callPackage ../development/interpreters/pyrex/0.9.5.nix { }; From 7784e829343da84e84c0a5f0e1811a18d7588a1d Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Tue, 14 Nov 2017 04:50:31 +0100 Subject: [PATCH 2/3] gnome3.mutter: add remote desktop support --- pkgs/desktops/gnome-3/core/mutter/default.nix | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/pkgs/desktops/gnome-3/core/mutter/default.nix b/pkgs/desktops/gnome-3/core/mutter/default.nix index 39b2438a8f0..e1343d9977d 100644 --- a/pkgs/desktops/gnome-3/core/mutter/default.nix +++ b/pkgs/desktops/gnome-3/core/mutter/default.nix @@ -1,7 +1,7 @@ { fetchurl, stdenv, pkgconfig, gnome3, intltool, gobjectIntrospection, upower, cairo , pango, cogl, clutter, libstartup_notification, zenity, libcanberra_gtk3 , libtool, makeWrapper, xkeyboard_config, libxkbfile, libxkbcommon, libXtst, libinput -, libgudev, libwacom, xwayland, autoreconfHook }: +, pipewire, libgudev, libwacom, xwayland, autoreconfHook }: stdenv.mkDerivation rec { inherit (import ./src.nix fetchurl) name src; @@ -9,6 +9,7 @@ stdenv.mkDerivation rec { configureFlags = [ "--with-x" "--disable-static" + "--enable-remote-desktop" "--enable-shape" "--enable-sm" "--enable-startup-notification" @@ -18,6 +19,15 @@ stdenv.mkDerivation rec { "--with-xwayland-path=${xwayland}/bin/Xwayland" ]; + patches = [ + # Pipewire 0.1.8 compatibility + (fetchurl { + name = "mutter-pipewire-0.1.8-compat.patch"; + url = https://bugzilla.gnome.org/attachment.cgi?id=367356; + sha256 = "10bx5zf11wwhhy686w11ggikk56pbxydpbk9fbd947ir385x92cz"; + }) + ]; + propagatedBuildInputs = [ # required for pkgconfig to detect mutter-clutter libXtst @@ -30,7 +40,7 @@ stdenv.mkDerivation rec { gnome_desktop cairo pango cogl clutter zenity libstartup_notification gnome3.geocode_glib libinput libgudev libwacom libcanberra_gtk3 zenity xkeyboard_config libxkbfile - libxkbcommon + libxkbcommon pipewire ]; preFixup = '' From dfe7a54d199173c1fc5037a28ac921049089b9f3 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Tue, 30 Jan 2018 18:58:56 +0100 Subject: [PATCH 3/3] nixos/pipewire: init --- nixos/modules/module-list.nix | 1 + nixos/modules/services/desktops/pipewire.nix | 23 ++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 nixos/modules/services/desktops/pipewire.nix diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 1942cca23d6..6bb12378b3e 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -200,6 +200,7 @@ ./services/desktops/dleyna-renderer.nix ./services/desktops/dleyna-server.nix ./services/desktops/geoclue2.nix + ./services/desktops/pipewire.nix ./services/desktops/gnome3/at-spi2-core.nix ./services/desktops/gnome3/chrome-gnome-shell.nix ./services/desktops/gnome3/evolution-data-server.nix diff --git a/nixos/modules/services/desktops/pipewire.nix b/nixos/modules/services/desktops/pipewire.nix new file mode 100644 index 00000000000..263a06156f8 --- /dev/null +++ b/nixos/modules/services/desktops/pipewire.nix @@ -0,0 +1,23 @@ +# pipewire service. +{ config, lib, pkgs, ... }: + +with lib; + +{ + ###### interface + options = { + services.pipewire = { + enable = mkEnableOption "pipewire service"; + }; + }; + + + ###### implementation + config = mkIf config.services.pipewire.enable { + environment.systemPackages = [ pkgs.pipewire ]; + + systemd.packages = [ pkgs.pipewire ]; + }; + + meta.maintainers = with lib.maintainers; [ jtojnar ]; +}