From 2fd655b0beae52894c05e102ea1e4420f2699008 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= Date: Sat, 9 May 2020 19:37:38 +0200 Subject: [PATCH] Revert "gnomeExtensions.volume-mixer: remove" This reverts commit ee5506c430dc2a6b8267c61ec0cd16570db3e25a. Further: * Add it to the gnomeExtensions attrset. (The reason for removing it in the first place was because it wasn't registered there.) * Move from .../volume-mixer.nix to .../volume-mixer/default.nix, to align with the other extensions. * Update to latest version. * Fix the installPhase. * Comment that there is a Makefile for this package, but it requires npm, so keep the buildPhase unchanged. * Add missing deps: pulseaudio and python3 * Add a small patch to find pulseaudio. * Replace maintainer aneeshusa with bjornfor, as aneeshusa doesn't seem interested in this package anymore. --- .../extensions/volume-mixer/default.nix | 47 +++++++++++++++++++ .../volume-mixer/find_libpulse.patch | 19 ++++++++ pkgs/top-level/all-packages.nix | 1 + 3 files changed, 67 insertions(+) create mode 100644 pkgs/desktops/gnome-3/extensions/volume-mixer/default.nix create mode 100644 pkgs/desktops/gnome-3/extensions/volume-mixer/find_libpulse.patch diff --git a/pkgs/desktops/gnome-3/extensions/volume-mixer/default.nix b/pkgs/desktops/gnome-3/extensions/volume-mixer/default.nix new file mode 100644 index 0000000000000..74283b1bf79ea --- /dev/null +++ b/pkgs/desktops/gnome-3/extensions/volume-mixer/default.nix @@ -0,0 +1,47 @@ +{ stdenv, fetchFromGitHub, glib, pulseaudio, python3 }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-volume-mixer"; + version = "3.36.6"; + + src = fetchFromGitHub { + owner = "aleho"; + repo = "gnome-shell-volume-mixer"; + rev = version; + sha256 = "1s80w5csv82hxky33ql734z9df8zkg1r8xmxc9hl759z6rbqml9g"; + }; + + patches = [ + ./find_libpulse.patch + ]; + + buildInputs = [ + glib + pulseaudio + python3 + ]; + + postPatch = '' + substituteInPlace ./shell-volume-mixer@derhofbauer.at/pautils/pa.py \ + --subst-var-by pulseaudio ${pulseaudio} + ''; + + # Could use the Makefile, but it requires npm... + buildPhase = '' + glib-compile-schemas --targetdir=${uuid}/schemas ${uuid}/schemas + ''; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r ${uuid} $out/share/gnome-shell/extensions/ + ''; + + uuid = "shell-volume-mixer@derhofbauer.at"; + + meta = with stdenv.lib; { + description = "GNOME Shell Extension allowing separate configuration of PulseAudio devices"; + license = licenses.gpl2; + maintainers = with maintainers; [ bjornfor ]; + homepage = https://github.com/aleho/gnome-shell-volume-mixer; + }; +} diff --git a/pkgs/desktops/gnome-3/extensions/volume-mixer/find_libpulse.patch b/pkgs/desktops/gnome-3/extensions/volume-mixer/find_libpulse.patch new file mode 100644 index 0000000000000..0e934e1c588aa --- /dev/null +++ b/pkgs/desktops/gnome-3/extensions/volume-mixer/find_libpulse.patch @@ -0,0 +1,19 @@ +Find libpulse.so via direct reference. + +Author: Bjørn Forsman +diff --git a/shell-volume-mixer@derhofbauer.at/pautils/pa.py b/shell-volume-mixer@derhofbauer.at/pautils/pa.py +index 7d058bd..00edd6a 100644 +--- a/shell-volume-mixer@derhofbauer.at/pautils/pa.py ++++ b/shell-volume-mixer@derhofbauer.at/pautils/pa.py +@@ -16,9 +16,9 @@ + from ctypes import * + + try: +- lib = CDLL('libpulse.so.0') ++ lib = CDLL('@pulseaudio@/lib/libpulse.so.0') + except: +- lib = CDLL('libpulse.so') ++ lib = CDLL('@pulseaudio@/lib/libpulse.so') + + STRING = c_char_p + WSTRING = c_wchar_p diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7e32adfa668bd..ba29ede132b6b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -26127,6 +26127,7 @@ in tilingnome = callPackage ../desktops/gnome-3/extensions/tilingnome { }; timepp = callPackage ../desktops/gnome-3/extensions/timepp { }; topicons-plus = callPackage ../desktops/gnome-3/extensions/topicons-plus { }; + volume-mixer = callPackage ../desktops/gnome-3/extensions/volume-mixer { }; window-corner-preview = callPackage ../desktops/gnome-3/extensions/window-corner-preview { }; window-is-ready-remover = callPackage ../desktops/gnome-3/extensions/window-is-ready-remover { }; workspace-matrix = callPackage ../desktops/gnome-3/extensions/workspace-matrix { };