smc-fonts-flake/default.nix

78 lines
2.2 KiB
Nix
Raw Permalink Normal View History

2024-10-13 17:17:19 +00:00
{ stdenv, fetchzip, lib
# To select only certain fonts, put a list of strings to `fonts`: every key in
# ./shas.nix is an optional font
, fonts ? [ ] }:
2024-07-26 23:58:36 +00:00
2024-10-13 17:17:19 +00:00
let
# both of these files are generated via ./update.sh
version = "version-20241013";
fontsShas = import ./shas.nix;
knownFonts = builtins.attrNames fontsShas;
selectedFonts = if (fonts == [ ]) then
knownFonts
else
let unknown = lib.subtractLists knownFonts fonts;
in if (unknown != [ ]) then
throw "Unknown font(s): ${lib.concatStringsSep " " unknown}"
else
fonts;
# Filter the fonts by selectedFonts list
filteredFonts =
builtins.filter (fontName: builtins.elem fontName selectedFonts)
(builtins.attrNames fontsShas);
# Function to generate a list of srcs that look like
# [
# (fetchurl {
2024-10-13 17:33:49 +00:00
# name = "namezzxs"
2024-10-13 17:17:19 +00:00
# url = "";
# sha256 = "sha256-abc123...";
# })
# (fetchurl {
2024-10-13 17:33:49 +00:00
# name = "namezzxy"
2024-10-13 17:17:19 +00:00
# url = "";
# sha256 = "sha256-def456...";
# })
# ]
generateUrls = fontAttrs: fontName:
builtins.map (variant:
let sha = fontAttrs.${variant};
in fetchzip {
2024-10-13 17:33:49 +00:00
name = "${fontName}-${variant}";
2024-10-13 17:17:19 +00:00
url = "https://smc.org.in/downloads/fonts/${fontName}/${variant}.zip";
sha256 = sha;
stripRoot = false;
}) (builtins.attrNames fontAttrs);
# Generate srcs for the filtered fonts
srcs = builtins.concatLists
(builtins.map (fontName: generateUrls fontsShas.${fontName} fontName)
filteredFonts);
in stdenv.mkDerivation (finalAttrs: {
inherit version;
inherit srcs;
pname = "smc-fonts";
2024-10-13 17:33:49 +00:00
sourceRoot = ".";
2024-10-13 17:17:19 +00:00
buildPhase = ''
echo "selected fonts are ${toString selectedFonts}"
ls *.otf *.ttf
'';
installPhase = ''
2024-10-13 17:33:49 +00:00
find -name \*.otf -exec mkdir -p $out/share/fonts/opentype/SMCFonts \; -exec mv {} $out/share/fonts/opentype/SMCFonts \;
find -name \*.ttf -exec mkdir -p $out/share/fonts/truetype/SMCFonts \; -exec mv {} $out/share/fonts/truetype/SMCFonts \;
2024-10-13 17:17:19 +00:00
'';
meta = with lib; {
description = "SMC typefaces";
longDescription = ''
Swathanthra Malayalam Computing.
'';
homepage = "https://smc.org.in/";
license = licenses.ofl;
platforms = platforms.all;
maintainers = with maintainers; [ aashiks ];
};
})