diff --git a/pkgs/by-name/pu/pulsemeeter/package.nix b/pkgs/by-name/pu/pulsemeeter/package.nix new file mode 100644 index 000000000000..ad05055892ad --- /dev/null +++ b/pkgs/by-name/pu/pulsemeeter/package.nix @@ -0,0 +1,61 @@ +{ + lib, + python3Packages, + fetchFromGitHub, + libpulseaudio, + libappindicator, + gobject-introspection, + wrapGAppsHook3, + callPackage, + bash, +}: +python3Packages.buildPythonApplication rec { + pname = "pulsemeeter"; + version = "1.2.14"; + + src = fetchFromGitHub { + owner = "theRealCarneiro"; + repo = "pulsemeeter"; + tag = "v${version}"; + hash = "sha256-QTXVE5WvunsjLS8I1rgX34BW1mT1UY+cRxURwXiQp5A="; + }; + + build-system = with python3Packages; [ + setuptools + ]; + + dependencies = with python3Packages; [ + pulsectl + pygobject3 + ]; + + nativeBuildInputs = [ + wrapGAppsHook3 + gobject-introspection + ]; + + buildInputs = [ + libappindicator + libpulseaudio + bash + ]; + + makeWrapperArgs = [ + "\${gappsWrapperArgs[@]}" + ]; + + dontWrapGApps = true; + + passthru.tests.version = callPackage ./version-test.nix { inherit version; }; + + meta = { + description = "Frontend of pulseaudio's routing capabilities, mimicking voicemeeter's workflow"; + license = lib.licenses.mit; + homepage = "https://github.com/theRealCarneiro/pulsemeeter"; + maintainers = with lib.maintainers; [ + therobot2105 + ]; + mainProgram = "pulsemeeter"; + platforms = lib.platforms.linux; + }; +} diff --git a/pkgs/by-name/pu/pulsemeeter/version-test.nix b/pkgs/by-name/pu/pulsemeeter/version-test.nix new file mode 100644 index 000000000000..4561918f144c --- /dev/null +++ b/pkgs/by-name/pu/pulsemeeter/version-test.nix @@ -0,0 +1,33 @@ +{ + pkgs, + version, +}: +pkgs.testers.runNixOSTest { + name = "pulsemeeter-version"; + + nodes.machine = + { config, pkgs, ... }: + { + services.pulseaudio.enable = true; + services.pulseaudio.systemWide = true; + users.users.alice = { + isNormalUser = true; + password = "foo"; + extraGroups = [ + "wheel" + "pulse-access" + ]; + packages = with pkgs; [ + pulsemeeter + ]; + }; + }; + + testScript = '' + machine.wait_for_unit("default.target") + machine.succeed("su -- root -c 'systemctl start pulseaudio'") + machine.succeed("su -- alice -c 'mkdir -p /home/alice/.config/pulsemeeter'") + version = machine.execute("su -- alice -c 'pulsemeeter -s | head -n 4 | tail -n 1'") + assert version == (0, 'Pulsemeeter version: \x1b[1m${version}\x1b[0m\n') + ''; +}