1let
2 modelSpecs = (builtins.fromJSON (builtins.readFile ./models.json));
3in
4
5{
6 lib,
7 stdenvNoCC,
8 fetchurl,
9}:
10
11let
12 withCodeAsKey = f: { code, ... }@attrs: lib.nameValuePair code (f attrs);
13 mkModelPackage =
14 {
15 name,
16 code,
17 version,
18 url,
19 checksum,
20 }:
21 stdenvNoCC.mkDerivation {
22 pname = "translatelocally-model-${code}";
23 version = toString version;
24
25 src = fetchurl {
26 inherit url;
27 sha256 = checksum;
28 };
29 dontUnpack = true;
30
31 installPhase = ''
32 TARGET="$out/share/translateLocally/models"
33 mkdir -p "$TARGET"
34 tar -xzf "$src" -C "$TARGET"
35
36 # avoid patching shebangs in inconsistently executable extra files
37 find "$out" -type f -exec chmod -x {} +
38 '';
39
40 meta = {
41 description = "TranslateLocally model - ${name}";
42 homepage = "https://translatelocally.com/";
43 # https://github.com/browsermt/students/blob/master/LICENSE.md
44 license = lib.licenses.cc-by-sa-40;
45 };
46 };
47 allModelPkgs = lib.listToAttrs (map (withCodeAsKey mkModelPackage) modelSpecs);
48
49in
50allModelPkgs
51// {
52 passthru.updateScript = ./update.sh;
53}