about summary refs log tree commit diff
path: root/nixpkgs/pkgs/games/anki/bin.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/games/anki/bin.nix')
-rw-r--r--nixpkgs/pkgs/games/anki/bin.nix93
1 files changed, 93 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/games/anki/bin.nix b/nixpkgs/pkgs/games/anki/bin.nix
new file mode 100644
index 000000000000..2e97bb91d65f
--- /dev/null
+++ b/nixpkgs/pkgs/games/anki/bin.nix
@@ -0,0 +1,93 @@
+{ fetchurl, stdenv, lib, buildFHSEnv, appimageTools, writeShellScript, anki, undmg, zstd, commandLineArgs ? [] }:
+
+let
+  pname = "anki-bin";
+  # Update hashes for both Linux and Darwin!
+  version = "2.1.65";
+
+  sources = {
+    linux = fetchurl {
+      url = "https://github.com/ankitects/anki/releases/download/${version}/anki-${version}-linux-qt6.tar.zst";
+      sha256 = "sha256-JBqW/aCMUyR0H52WMYuVkcE3/t/joLxfvFho64IzvDg=";
+    };
+
+    # For some reason anki distributes completely separate dmg-files for the aarch64 version and the x86_64 version
+    darwin-x86_64 = fetchurl {
+      url = "https://github.com/ankitects/anki/releases/download/${version}/anki-${version}-mac-intel-qt6.dmg";
+      sha256 = "sha256-zmCI77yLdoJm/znUgy+xZ8Jd77F3CPlzq3ceBzckA4U=";
+    };
+    darwin-aarch64 = fetchurl {
+      url = "https://github.com/ankitects/anki/releases/download/${version}/anki-${version}-mac-apple-qt6.dmg";
+      sha256 = "sha256-1owbeL28dnOYD7nR9uZt9EHvFK75GFGRe6S9oV85Eoo=";
+    };
+  };
+
+  unpacked = stdenv.mkDerivation {
+    inherit pname version;
+
+    nativeBuildInputs = [ zstd ];
+    src = sources.linux;
+
+    installPhase = ''
+      runHook preInstall
+
+      xdg-mime () {
+        echo Stubbed!
+      }
+      export -f xdg-mime
+
+      PREFIX=$out bash install.sh
+
+      runHook postInstall
+    '';
+  };
+
+  meta = with lib; {
+    inherit (anki.meta) license homepage description longDescription;
+    platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ];
+    maintainers = with maintainers; [ mahmoudk1000 atemu ];
+  };
+
+  passthru = { inherit sources; };
+
+  fhsEnvAnki = buildFHSEnv (appimageTools.defaultFhsEnvArgs // {
+    inherit pname version;
+    name = null; # Appimage sets it to "appimage-env"
+
+    # Dependencies of anki
+    targetPkgs = pkgs: (with pkgs; [ xorg.libxkbfile xcb-util-cursor-HEAD krb5 ]);
+
+    runScript = writeShellScript "anki-wrapper.sh" ''
+      exec ${unpacked}/bin/anki ${ lib.strings.escapeShellArgs commandLineArgs }
+    '';
+
+    extraInstallCommands = ''
+      ln -s ${pname} $out/bin/anki
+
+      mkdir -p $out/share
+      cp -R ${unpacked}/share/applications \
+        ${unpacked}/share/man \
+        ${unpacked}/share/pixmaps \
+        $out/share/
+    '';
+
+    inherit meta passthru;
+  });
+in
+
+if stdenv.isLinux then fhsEnvAnki
+else stdenv.mkDerivation {
+  inherit pname version passthru;
+
+  src = if stdenv.isAarch64 then sources.darwin-aarch64 else sources.darwin-x86_64;
+
+  nativeBuildInputs = [ undmg ];
+  sourceRoot = ".";
+
+  installPhase = ''
+    mkdir -p $out/Applications/
+    cp -a Anki.app $out/Applications/
+  '';
+
+  inherit meta;
+}