Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at fix-function-merge 133 lines 3.4 kB view raw
1{ lib 2, stdenvNoCC 3, fetchurl 4, unzip 5}: 6 7let 8 makeSuperOTC = 9 { family 10 , description 11 , rev 12 , hash 13 , zip ? "" 14 , prefix ? "" 15 }: 16 let 17 Family = 18 lib.toUpper (lib.substring 0 1 family) + 19 lib.substring 1 (lib.stringLength family) family; 20 in 21 stdenvNoCC.mkDerivation rec { 22 pname = "source-han-${family}"; 23 version = lib.removeSuffix "R" rev; 24 25 src = fetchurl { 26 url = "https://github.com/adobe-fonts/source-han-${family}/releases/download/${rev}/${prefix}SourceHan${Family}.ttc${zip}"; 27 inherit hash; 28 }; 29 30 nativeBuildInputs = lib.optionals (zip == ".zip") [ unzip ]; 31 32 unpackPhase = lib.optionalString (zip == "") '' 33 cp $src SourceHan${Family}.ttc${zip} 34 '' + lib.optionalString (zip == ".zip") '' 35 unzip $src 36 ''; 37 38 installPhase = '' 39 runHook preInstall 40 41 install -Dm444 *.ttc -t $out/share/fonts/opentype/${pname} 42 43 runHook postInstall 44 ''; 45 46 meta = { 47 description = "Open source Pan-CJK ${description} typeface"; 48 homepage = "https://github.com/adobe-fonts/source-han-${family}"; 49 license = lib.licenses.ofl; 50 maintainers = with lib.maintainers; [ taku0 emily ]; 51 }; 52 }; 53 54 makeVariable = 55 { family 56 , version 57 , hash 58 , format 59 }: 60 let 61 Family = 62 lib.toUpper (lib.substring 0 1 family) + 63 lib.substring 1 (lib.stringLength family) family; 64 in 65 fetchurl { 66 pname = "source-han-${family}-vf-${format}"; 67 inherit version hash; 68 url = "https://raw.githubusercontent.com/adobe-fonts/source-han-${family}/${version}R/Variable/OTC/SourceHan${Family}-VF.${format}.ttc"; 69 recursiveHash = true; 70 downloadToTemp = true; 71 postFetch = "install -Dm444 $downloadedFile $out/share/fonts/variable/SourceHan${Family}-VF.${format}.ttc"; 72 73 meta = { 74 description = "Open source Pan-CJK ${Family} typeface"; 75 homepage = "https://github.com/adobe-fonts/source-han-${family}"; 76 license = lib.licenses.ofl; 77 maintainers = with lib.maintainers; [ taku0 emily ]; 78 }; 79 }; 80in 81{ 82 sans = makeSuperOTC { 83 family = "sans"; 84 description = "sans-serif"; 85 rev = "2.004R"; 86 hash = "sha256-b1kRiprdpaf+Tp5rtTgwn34dPFQR+anTKvMqeVAbfk8="; 87 zip = ".zip"; 88 }; 89 90 serif = makeSuperOTC { 91 family = "serif"; 92 description = "serif"; 93 rev = "2.001R"; 94 hash = "sha256-ULdrtPLtzsgfZEHWkr4ebC/FSROHBWJJVD+PzdIJ6Og="; 95 zip = ".zip"; 96 prefix = "01_"; 97 }; 98 99 mono = makeSuperOTC { 100 family = "mono"; 101 description = "monospaced"; 102 rev = "1.002"; 103 hash = "sha256-DBkkSN6QhI8R64M2h2iDqaNtxluJZeSJYAz8x6ZzWME="; 104 }; 105 106 sans-vf-otf = makeVariable { 107 family = "sans"; 108 version = "2.004"; 109 hash = "sha256-V7PE09c7h4RDS8Ij4PSI36Gy+LM+PVDi73Rcs+4DfHo="; 110 format = "otf"; 111 }; 112 113 sans-vf-ttf = makeVariable { 114 family = "sans"; 115 version = "2.004"; 116 hash = "sha256-mXTG/d30gUxzxkJpaH4vOawRXMSxxTXlHCvHEsfGqbc="; 117 format = "ttf"; 118 }; 119 120 serif-vf-otf = makeVariable { 121 family = "serif"; 122 version = "2.002"; 123 hash = "sha256-8sD4bU6w7HBm4vBuPAjcjpxN2rtEJugAw+X0bAOcmjA="; 124 format = "otf"; 125 }; 126 127 serif-vf-ttf = makeVariable { 128 family = "serif"; 129 version = "2.002"; 130 hash = "sha256-dmTZFRsD55WCOg2+sqd8bkmTSnSNn5xUYf0PgzIvzww="; 131 format = "ttf"; 132 }; 133}