pytrainer: unpin python 3.10
[NixPkgs.git] / pkgs / games / anki / bin.nix
blob8daf97caf56b8c05dd5106202f0eda475f1bee02
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.06.3";
20   sources = {
21     linux = fetchurl {
22       url = "https://github.com/ankitects/anki/releases/download/${version}/anki-${version}-linux-qt6.tar.zst";
23       hash = "sha256-/oyQy4QHU9DCqYplcuINy5y0d2/n+fJCpgwNDURguYU=";
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-UQRdp/GhiRGfsBF+mV6hCKpEQGFv/I9D9KTtc1p776o=";
30     };
31     darwin-aarch64 = fetchurl {
32       url = "https://github.com/ankitects/anki/releases/download/${version}/anki-${version}-mac-apple-qt6.dmg";
33       hash = "sha256-zi9yjJirNxFFD7wGa4++J+mDaE5dYZW+X0UUddGkjTU=";
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           xcb-util-cursor-HEAD
95           krb5
96           zstd
97         ]);
99       runScript = writeShellScript "anki-wrapper.sh" ''
100         exec ${unpacked}/bin/anki ${lib.strings.escapeShellArgs commandLineArgs} "$@"
101       '';
103       extraInstallCommands = ''
104         ln -s ${pname} $out/bin/anki
106         mkdir -p $out/share
107         cp -R ${unpacked}/share/applications \
108           ${unpacked}/share/man \
109           ${unpacked}/share/pixmaps \
110           $out/share/
111       '';
113       inherit meta passthru;
114     }
115   );
118 if stdenv.hostPlatform.isLinux then
119   fhsEnvAnki
120 else
121   stdenv.mkDerivation {
122     inherit pname version passthru;
124     src = if stdenv.hostPlatform.isAarch64 then sources.darwin-aarch64 else sources.darwin-x86_64;
126     nativeBuildInputs = [ undmg ];
127     sourceRoot = ".";
129     installPhase = ''
130       mkdir -p $out/Applications/
131       cp -a Anki.app $out/Applications/
132     '';
134     inherit meta;
135   }