diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index de2e69d2d231..e93c70f505df 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -5177,6 +5177,11 @@ githubId = 1583484; name = "Andrey Golovizin"; }; + errnoh = { + github = "errnoh"; + githubId = 373946; + name = "Erno Hopearuoho"; + }; ersin = { email = "me@ersinakinci.com"; github = "ersinakinci"; diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 0fff271c8684..c7d76fe2eee9 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -319,6 +319,7 @@ ./services/audio/botamusique.nix ./services/audio/gmediarender.nix ./services/audio/gonic.nix + ./services/audio/goxlr-utility.nix ./services/audio/hqplayerd.nix ./services/audio/icecast.nix ./services/audio/jack.nix diff --git a/nixos/modules/services/audio/goxlr-utility.nix b/nixos/modules/services/audio/goxlr-utility.nix new file mode 100644 index 000000000000..b719de875c7f --- /dev/null +++ b/nixos/modules/services/audio/goxlr-utility.nix @@ -0,0 +1,48 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.services.goxlr-utility; +in + +with lib; +{ + + options = { + services.goxlr-utility = { + enable = mkOption { + default = false; + type = types.bool; + description = lib.mdDoc '' + Whether to enable goxlr-utility for controlling your TC-Helicon GoXLR or GoXLR Mini + ''; + }; + package = mkPackageOptionMD pkgs "goxlr-utility" { }; + autoStart.xdg = mkOption { + default = true; + type = with types; bool; + description = lib.mdDoc '' + Start the daemon automatically using XDG autostart. + Sets `xdg.autostart.enable = true` if not already enabled. + ''; + }; + }; + }; + + config = mkIf config.services.goxlr-utility.enable + { + services.udev.packages = [ cfg.package ]; + + xdg.autostart.enable = mkIf cfg.autoStart.xdg true; + environment.systemPackages = mkIf cfg.autoStart.xdg + [ + cfg.package + (pkgs.makeAutostartItem + { + name = "goxlr-utility"; + package = cfg.package; + }) + ]; + }; + + meta.maintainers = with maintainers; [ errnoh ]; +} diff --git a/pkgs/tools/audio/goxlr-utility/default.nix b/pkgs/tools/audio/goxlr-utility/default.nix new file mode 100644 index 000000000000..58814cb4423e --- /dev/null +++ b/pkgs/tools/audio/goxlr-utility/default.nix @@ -0,0 +1,65 @@ +{ lib +, fetchFromGitHub +, rustPlatform +, installShellFiles +, pkg-config +, libpulseaudio +, dbus +, speechd +}: + +rustPlatform.buildRustPackage rec { + pname = "goxlr-utility"; + version = "0.12.6"; + + src = fetchFromGitHub { + owner = "GoXLR-on-Linux"; + repo = "goxlr-utility"; + rev = "v${version}"; + hash = "sha256-vvaKCsqncRhag8IrS0AIfNqNHGU2WIvFaYISEVfUB2Y="; + }; + + cargoHash = "sha256-Z57H5YeVYqlOaLRLaizVw8xTLstdjyXutnN7OgaUYOE="; + + buildInputs = [ + libpulseaudio + dbus + speechd + ]; + + nativeBuildInputs = [ + pkg-config + installShellFiles + rustPlatform.bindgenHook + ]; + + buildFeatures = [ "tts" ]; + + postInstall = '' + install -Dm644 "50-goxlr.rules" "$out/etc/udev/rules.d/50-goxlr.rules" + + install -Dm644 "daemon/resources/goxlr-utility.png" "$out/share/icons/hicolor/48x48/apps/goxlr-utility.png" + install -Dm644 "daemon/resources/goxlr-utility.svg" "$out/share/icons/hicolor/scalable/apps/goxlr-utility.svg" + install -Dm644 "daemon/resources/goxlr-utility-large.png" "$out/share/pixmaps/goxlr-utility.png" + install -Dm644 "daemon/resources/goxlr-utility.desktop" "$out/share/applications/goxlr-utility.desktop" + substituteInPlace $out/share/applications/goxlr-utility.desktop \ + --replace /usr/bin $out/bin \ + --replace goxlr-launcher goxlr-daemon + + completions_dir=$(dirname $(find target -name 'goxlr-client.bash' | head -n 1)) + installShellCompletion --bash $completions_dir/goxlr-client.bash + installShellCompletion --fish $completions_dir/goxlr-client.fish + installShellCompletion --zsh $completions_dir/_goxlr-client + completions_dir=$(dirname $(find target -name 'goxlr-daemon.bash' | head -n 1)) + installShellCompletion --bash $completions_dir/goxlr-daemon.bash + installShellCompletion --fish $completions_dir/goxlr-daemon.fish + installShellCompletion --zsh $completions_dir/_goxlr-daemon + ''; + + meta = with lib; { + description = "An unofficial GoXLR App replacement for Linux, Windows and MacOS"; + homepage = "https://github.com/GoXLR-on-Linux/goxlr-utility"; + license = licenses.mit; + maintainers = with maintainers; [ errnoh ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7917e035040d..1a9168c0d4cd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16187,6 +16187,8 @@ with pkgs; gox = callPackage ../development/tools/gox { }; + goxlr-utility = callPackage ../tools/audio/goxlr-utility {}; + gprolog = callPackage ../development/compilers/gprolog { }; gwe = callPackage ../tools/misc/gwe {