From 8dc12689a0a6e07d9e977e741c04c3a5df240d5f Mon Sep 17 00:00:00 2001 From: June Stepp Date: Sat, 3 May 2025 22:55:54 -0500 Subject: [PATCH] ankiAddons.local-audio-yomichan: init at 0-unstable-2025-04-26 --- pkgs/games/anki/addons/default.nix | 2 + .../addons/local-audio-yomichan/default.nix | 73 +++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 pkgs/games/anki/addons/local-audio-yomichan/default.nix diff --git a/pkgs/games/anki/addons/default.nix b/pkgs/games/anki/addons/default.nix index 7f60c7e29e25..57560aad77c4 100644 --- a/pkgs/games/anki/addons/default.nix +++ b/pkgs/games/anki/addons/default.nix @@ -6,6 +6,8 @@ anki-connect = callPackage ./anki-connect { }; + local-audio-yomichan = callPackage ./local-audio-yomichan { }; + passfail2 = callPackage ./passfail2 { }; reviewer-refocus-card = callPackage ./reviewer-refocus-card { }; diff --git a/pkgs/games/anki/addons/local-audio-yomichan/default.nix b/pkgs/games/anki/addons/local-audio-yomichan/default.nix new file mode 100644 index 000000000000..7ba361c8590c --- /dev/null +++ b/pkgs/games/anki/addons/local-audio-yomichan/default.nix @@ -0,0 +1,73 @@ +{ + lib, + anki-utils, + fetchFromGitHub, + python3, + nix-update-script, +}: +anki-utils.buildAnkiAddon (finalAttrs: { + pname = "local-audio-yomichan"; + version = "0-unstable-2025-04-26"; + src = fetchFromGitHub { + owner = "yomidevs"; + repo = "local-audio-yomichan"; + rev = "34750f1d8ca1cb473128fea7976a4d981e5e78a4"; + sparseCheckout = [ "plugin" ]; + hash = "sha256-2gyggcvxParay+1B7Sg2COKyocoxaRO1WTz+ymdRp4w="; + }; + sourceRoot = "${finalAttrs.src.name}/plugin"; + processUserFiles = '' + # Addon will try to load extra stuff unless Python package name is "plugin". + temp=$(mktemp -d) + ln -s $PWD $temp/plugin + # Addoon expects `user_files` dir at `$XDG_DATA_HOME/local-audio-yomichan` + ln -s $PWD/user_files $temp/local-audio-yomichan + + PYTHONPATH=$temp \ + WO_ANKI=1 \ + XDG_DATA_HOME=$temp \ + ${lib.getExe python3} -c \ + "from plugin import db_utils; \ + db_utils.init_db()" + ''; + passthru.updateScript = nix-update-script { + extraArgs = [ "--version=branch" ]; + }; + meta = { + description = "Run a local audio server for Yomitan"; + longDescription = '' + This add-on must be configured with an audio collection. + + Example: + + ```nix + pkgs.ankiAddons.local-audio-yomichan.withConfig { + userFiles = + let + audio-collection = + pkgs.runCommand "local-yomichan-audio-collection" + { + outputHashMode = "recursive"; + outputHash = "sha256-NxbcXh2SDPfCd+ZHAWT5JdxRecNbT4Xpo0pxX5/DOfo="; + + src = pkgs.requireFile { + name = "local-yomichan-audio-collection-2023-06-11-opus.tar.xz"; + url = "https://github.com/yomidevs/local-audio-yomichan?tab=readme-ov-file#steps"; + sha256 = "1xsxp8iggklv77rj972mqaa1i8f9hvr3ir0r2mwfqcdz4q120hr1"; + }; + } + ''' + mkdir -p $out + cd $out + tar -xf "$src" + '''; + in + "''${audio-collection}/user_files"; + } + ``` + ''; + homepage = "https://github.com/yomidevs/local-audio-yomichan"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ junestepp ]; + }; +})