Merge pull request #101132 from deviant/iosevka-variants

iosevka-bin: add support for variants

authored by

WORLDofPEACE and committed by
GitHub
ee9154c4 19c8562d

+79 -10
+27 -10
pkgs/data/fonts/iosevka/bin.nix
··· 1 - { stdenv, fetchzip }: 2 3 let 4 - version = "3.4.6"; 5 - in fetchzip { 6 - name = "iosevka-bin-${version}"; 7 8 - url = "https://github.com/be5invis/Iosevka/releases/download/v${version}/ttc-iosevka-${version}.zip"; 9 10 - postFetch = '' 11 mkdir -p $out/share/fonts 12 - unzip -j $downloadedFile \*.ttc -d $out/share/fonts/truetype 13 ''; 14 15 - sha256 = "1nab49gkpxahwvvw39xcc32q425qkccr7ffmz87jbcdv71qy7pp9"; 16 - 17 - meta = with stdenv.lib; { 18 homepage = "https://be5invis.github.io/Iosevka/"; 19 downloadPage = "https://github.com/be5invis/Iosevka/releases"; 20 description = '' ··· 25 platforms = platforms.all; 26 maintainers = [ maintainers.cstrahan ]; 27 }; 28 }
··· 1 + { stdenv, lib, fetchurl, unzip 2 + , variant ? "" 3 + }: 4 5 let 6 + name = "iosevka" + lib.optionalString (variant != "") "-" + variant; 7 + 8 + variantHashes = import ./variants.nix; 9 + validVariants = map (lib.removePrefix "iosevka-") 10 + (builtins.attrNames (builtins.removeAttrs variantHashes [ "iosevka" ])); 11 + in stdenv.mkDerivation rec { 12 + pname = "${name}-bin"; 13 + version = "3.7.1"; 14 + 15 + src = fetchurl { 16 + url = "https://github.com/be5invis/Iosevka/releases/download/v${version}/ttc-${name}-${version}.zip"; 17 + sha256 = variantHashes.${name} or (throw '' 18 + No such variant "${variant}" for package iosevka-bin. 19 + Valid variants are: ${lib.concatStringsSep ", " validVariants}. 20 + ''); 21 + }; 22 + 23 + nativeBuildInputs = [ unzip ]; 24 25 + phases = [ "unpackPhase" ]; 26 27 + unpackPhase = '' 28 mkdir -p $out/share/fonts 29 + unzip -d $out/share/fonts/truetype $src 30 ''; 31 32 + meta = with lib; { 33 homepage = "https://be5invis.github.io/Iosevka/"; 34 downloadPage = "https://github.com/be5invis/Iosevka/releases"; 35 description = '' ··· 40 platforms = platforms.all; 41 maintainers = [ maintainers.cstrahan ]; 42 }; 43 + 44 + passthru.updateScript = ./update.sh; 45 }
+28
pkgs/data/fonts/iosevka/update.sh
···
··· 1 + #! /usr/bin/env nix-shell 2 + #! nix-shell -i bash -p curl jq 3 + 4 + set -e 5 + 6 + release=$(curl -s https://api.github.com/repos/be5invis/Iosevka/releases/latest) 7 + 8 + oldVersion=$(nix-instantiate --eval -E 'with import ./. {}; lib.getVersion iosevka-bin' | tr -d '"') 9 + version=$(echo "$release" | jq -r .tag_name | tr -d v) 10 + 11 + if test "$oldVersion" = "$version"; then 12 + echo "New version same as old version, nothing to do." >&2 13 + exit 0 14 + fi 15 + 16 + file=$(nix-instantiate --eval -A iosevka-bin.meta.position | sed -r 's/^"(.*):[0-9]+"$/\1/') 17 + sed -i "s/$oldVersion/$version/" "$file" 18 + 19 + { 20 + echo '# This file was autogenerated. DO NOT EDIT!' 21 + echo '{' 22 + for asset in $(echo "$release" | jq -r '.assets[].name | select(startswith("ttc"))'); do 23 + printf ' %s = "%s";\n' \ 24 + $(echo "$asset" | sed -r "s/^ttc-(.*)-$version.zip$/\1/") \ 25 + $(nix-prefetch-url "https://github.com/be5invis/Iosevka/releases/download/v$version/$asset") 26 + done 27 + echo '}' 28 + } >$(dirname "$file")/variants.nix
+24
pkgs/data/fonts/iosevka/variants.nix
···
··· 1 + # This file was autogenerated. DO NOT EDIT! 2 + { 3 + iosevka = "0h226f32nwlqnsdc86bwk2wcdl2hsq5q1s2ln6dsf9m7w8ajn0nr"; 4 + iosevka-aile = "05k3h7n7mkpdsjcxha27vjj503b4129jd90wj8qyk5h0nrgy1rc6"; 5 + iosevka-curly = "0fxcc99n9ghkdjmfxba9mg4fc0dwlvnnxlmc618jv6s3k2xn7sza"; 6 + iosevka-curly-slab = "1qgxyw5v91l4cw3mvqzagk9amyy63iqh72bnsz63daxgss3fpsab"; 7 + iosevka-etoile = "184rjidnjayv5wsrxxxf39mvdcjafdwcvp0h4rfniy9s0ifrwjvf"; 8 + iosevka-slab = "1cbrv5pyhnvwrdaj8r011igw2yjgzzigd82g1r10d348lk64wja1"; 9 + iosevka-sparkle = "124jnjzffnfw58b78svw8rzgal10z5nspwc267pvq7q0f2ak1wpp"; 10 + iosevka-ss01 = "18ckb0ch4za4vgwqz8azx8vhg9v9a922ffbckrbmy8n5bi03dl7w"; 11 + iosevka-ss02 = "0cwm2jdni5m9z0xagpmq9vvjp3yvin7c7bnavsj15yfvpq8b8qsp"; 12 + iosevka-ss03 = "1yzbvkr726f8mm024qzy2hdd7nz4kymgjm0cj5208c57bln0byr2"; 13 + iosevka-ss04 = "1kpz84a1cb39rxc87whw0fh0k9ak2qbcq59hm425da2acf27a648"; 14 + iosevka-ss05 = "1xnnm96jnw90mhwylsw1ad6m8pr4r1bd02l7g82m5hmr7bc4b7dd"; 15 + iosevka-ss06 = "1raw01ijiawaqxfmj0m8z8jrb2ns7vzy68lak63mss8j35xzg1l5"; 16 + iosevka-ss07 = "0bjhjwjif7qw6wyyrzfg2pdvy1b070k053ndmjard6sh1rcln02d"; 17 + iosevka-ss08 = "1qwgk8riff57np4hlmd0kcl9bx511x9zmnlrjq3ilfn6abdwgm7i"; 18 + iosevka-ss09 = "0sfnhmcrsv1v7l756hx70y1mrp35fbs6wrsczw4vxfbbaigs767r"; 19 + iosevka-ss10 = "10n70z7588h8y2z274vjn6hvzc7lg87znibcmkk2brmx2g5bw2wl"; 20 + iosevka-ss11 = "0mnyd04vdqr8jm3syv6ddrn61f27k91kxkdy86pp34xaac2ipmm0"; 21 + iosevka-ss12 = "1f8pn2220s6r566b40ncnqrfmfdhnlr0nkvzj9swgvx66jr8mlhj"; 22 + iosevka-ss13 = "1py5qgfqm9wp9pzcxg83mydvf3r6nhrqi21d0fvmnk04ghk1psd6"; 23 + iosevka-ss14 = "0z47kqicd26x5v94zy97xyl277v0s6856pbllfn1gv92ax2dg5cy"; 24 + }