build-bazel-package: added rm of extra local folders for toolchain configuration...
[NixPkgs.git] / pkgs / games / anki / bin.nix
blob11c03ec3bebe926c1b78bf095da2906b28105128
2   fetchurl,
3   stdenv,
4   lib,
5   buildFHSEnv,
6   appimageTools,
7   writeShellScript,
8   anki,
9   undmg,
10   zstd,
11   cacert,
12   commandLineArgs ? [ ],
15 let
16   pname = "anki-bin";
17   # Update hashes for both Linux and Darwin!
18   version = "24.11";
20   sources = {
21     linux = fetchurl {
22       url = "https://github.com/ankitects/anki/releases/download/${version}/anki-${version}-linux-qt6.tar.zst";
23       hash = "sha256-JXn4oxhRODHh6b5hFFj393xMRlaJRVcbMJ5AyXr+jq8=";
24     };
26     # For some reason anki distributes completely separate dmg-files for the aarch64 version and the x86_64 version
27     darwin-x86_64 = fetchurl {
28       url = "https://github.com/ankitects/anki/releases/download/${version}/anki-${version}-mac-intel-qt6.dmg";
29       hash = "sha256-d94lfk1pUJgxk4Dylw+fC2qt8wfRJ7tJQYm+Chp1J5k=";
30     };
31     darwin-aarch64 = fetchurl {
32       url = "https://github.com/ankitects/anki/releases/download/${version}/anki-${version}-mac-apple-qt6.dmg";
33       hash = "sha256-AEpyrZBQ+0FI9CxwCacGlbMDMZ7eebBRPkQ0Nstubnk=";
34     };
35   };
37   unpacked = stdenv.mkDerivation {
38     inherit pname version;
40     nativeBuildInputs = [ zstd ];
41     src = sources.linux;
43     installPhase = ''
44       runHook preInstall
46       xdg-mime () {
47         echo Stubbed!
48       }
49       export -f xdg-mime
51       PREFIX=$out bash install.sh
53       runHook postInstall
54     '';
55   };
57   meta = with lib; {
58     inherit (anki.meta)
59       license
60       homepage
61       description
62       mainProgram
63       longDescription
64       ;
65     platforms = [
66       "x86_64-linux"
67       "x86_64-darwin"
68       "aarch64-darwin"
69     ];
70     maintainers = with maintainers; [ mahmoudk1000 ];
71   };
73   passthru = {
74     inherit sources;
75   };
77   fhsEnvAnki = buildFHSEnv (
78     appimageTools.defaultFhsEnvArgs
79     // {
80       inherit pname version;
82       profile = ''
83         # anki vendors QT and mixing QT versions usually causes crashes
84         unset QT_PLUGIN_PATH
85         # anki uses the system ssl cert, without it plugins do not download/update
86         export SSL_CERT_FILE="${cacert}/etc/ssl/certs/ca-bundle.crt"
87       '';
89       # Dependencies of anki
90       targetPkgs =
91         pkgs:
92         (with pkgs; [
93           xorg.libxkbfile
94           xorg.libxshmfence
95           xcb-util-cursor-HEAD
96           krb5
97           zstd
98         ]);
100       runScript = writeShellScript "anki-wrapper.sh" ''
101         exec ${unpacked}/bin/anki ${lib.strings.escapeShellArgs commandLineArgs} "$@"
102       '';
104       extraInstallCommands = ''
105         ln -s ${pname} $out/bin/anki
107         mkdir -p $out/share
108         cp -R ${unpacked}/share/applications \
109           ${unpacked}/share/man \
110           ${unpacked}/share/pixmaps \
111           $out/share/
112       '';
114       inherit meta passthru;
115     }
116   );
119 if stdenv.hostPlatform.isLinux then
120   fhsEnvAnki
121 else
122   stdenv.mkDerivation {
123     inherit pname version passthru;
125     src = if stdenv.hostPlatform.isAarch64 then sources.darwin-aarch64 else sources.darwin-x86_64;
127     nativeBuildInputs = [ undmg ];
128     sourceRoot = ".";
130     installPhase = ''
131       mkdir -p $out/Applications/
132       cp -a Anki.app $out/Applications/
133     '';
135     inherit meta;
136   }