diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index de9446fdeb0c..e168e7913842 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -11047,6 +11047,11 @@ githubId = 207392575; name = "Isaac Kabel"; }; + ikci = { + github = "ikcii"; + githubId = 48479629; + name = "ikci"; + }; ikervagyok = { email = "ikervagyok@gmail.com"; github = "ikervagyok"; diff --git a/pkgs/by-name/au/audiosource/package.nix b/pkgs/by-name/au/audiosource/package.nix new file mode 100644 index 000000000000..18aebf5b35fc --- /dev/null +++ b/pkgs/by-name/au/audiosource/package.nix @@ -0,0 +1,80 @@ +{ + lib, + stdenv, + fetchFromGitHub, + fetchurl, + makeWrapper, + installShellFiles, + python3, + android-tools, + pulseaudio, + coreutils, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "audiosource"; + version = "1.4"; + + src = fetchFromGitHub { + owner = "gdzx"; + repo = "audiosource"; + tag = "v${finalAttrs.version}"; + hash = "sha256-SlX8gjs7X5jfoeU6pyk4n8f6oMJgneGVt0pmFs48+mQ="; + }; + + patches = [ + # Removes build-related logic from the script that is unused in the package and fixes a small bug with adb args on new Android versions + ./unused-logic-removal-and-args-fix.patch + ]; + + postPatch = '' + substituteInPlace audiosource \ + --replace-fail "@apkPath@" "$out/share/audiosource/audiosource.apk" + ''; + + nativeBuildInputs = [ + makeWrapper + installShellFiles + ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin $out/share/audiosource + cp ${finalAttrs.passthru.apk} $out/share/audiosource/audiosource.apk + + installBin audiosource + + runHook postInstall + ''; + + postFixup = '' + wrapProgram $out/bin/audiosource \ + --prefix PATH : ${ + lib.makeBinPath [ + python3 + android-tools + pulseaudio + coreutils + ] + } + ''; + + passthru.apk = fetchurl { + url = "https://github.com/gdzx/audiosource/releases/download/v${finalAttrs.version}/audiosource.apk"; + hash = "sha256-vDIF+NZ3JgTT67Dem4qeajWsA5m/MFt2nRDpWUqC9aU="; + }; + + meta = { + description = "Use an Android device as a USB microphone"; + homepage = "https://github.com/gdzx/audiosource"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ ikci ]; + mainProgram = "audiosource"; + platforms = lib.platforms.linux; + sourceProvenance = with lib.sourceTypes; [ + fromSource + binaryBytecode + ]; + }; +}) diff --git a/pkgs/by-name/au/audiosource/unused-logic-removal-and-args-fix.patch b/pkgs/by-name/au/audiosource/unused-logic-removal-and-args-fix.patch new file mode 100644 index 000000000000..3a8b331c432f --- /dev/null +++ b/pkgs/by-name/au/audiosource/unused-logic-removal-and-args-fix.patch @@ -0,0 +1,82 @@ +diff --git a/audiosource b/audiosource +index b06127a..0bccddf 100755 +--- a/audiosource ++++ b/audiosource +@@ -2,15 +2,7 @@ + + set -eu + +-AUDIOSOURCE_PROFILE=${AUDIOSOURCE_PROFILE:-debug} +- +-if [ "$AUDIOSOURCE_PROFILE" = 'release' ]; then +- AUDIOSOURCE_DEFAULT_APK=app/build/outputs/apk/release/app-release.apk +-else +- AUDIOSOURCE_DEFAULT_APK=app/build/outputs/apk/debug/app-debug.apk +-fi +- +-AUDIOSOURCE_APK=${AUDIOSOURCE_APK:-"$AUDIOSOURCE_DEFAULT_APK"} ++AUDIOSOURCE_APK=${AUDIOSOURCE_APK:-"@apkPath@"} + ANDROID_SERIAL=${ANDROID_SERIAL:-} + + PYSOCAT="$(cat < audiosource.apk.sha256 +-} +- + _unload() { + for id in `pactl list modules short | sed -n "/module-pipe-source\tsource_name=$AUDIOSOURCE_NAME/p" | cut -f1`; do + pactl unload-module "$id" +@@ -146,7 +128,7 @@ volume() { + + main_help() { + cat <<-EOF +- Usage: ./audiosource [-s SERIAL] COMMAND [ARGS...] ++ Usage: audiosource [-s SERIAL] COMMAND [ARGS...] + + Options: + +@@ -154,15 +136,13 @@ main_help() { + + Commands: + +- build Build Audio Source APK (default: debug) +- install Install Audio Source to Android device (default: debug) ++ install Install Audio Source to Android device + run Run Audio Source and start forwarding + volume LEVEL Set volume to LEVEL (for example, 250%) + + Environment: + +- AUDIOSOURCE_APK APK path (default: app/build/outputs/apk/\$profile/app-\$profile.apk) +- AUDIOSOURCE_PROFILE Build profile (debug or release, default: build) ++ AUDIOSOURCE_APK APK path (default: @apkPath@) + AUDIOSOURCE_NAME Name of the PulseAudio source (default: android-) + ANDROID_SERIAL Device serial number to connect to (default: unset) + EOF +@@ -200,7 +180,7 @@ main() { + shift + + case "$cmd" in +- build|install|run|volume|_release) ++ install|run|volume) + "$cmd" "$@" + ;; + *)