wip: generate src inputs

This commit is contained in:
puttaalu 2024-10-13 19:17:19 +02:00
parent a8a62dde7f
commit 6a98c96f7a
5 changed files with 141 additions and 30 deletions

View File

@ -8,7 +8,7 @@ This is a WIP Flake that can install SMCs fonts. Currently, the following are su
4. Gayathri
*NOTE* I am not that familiar with nix flakes yet. This repo will see a lot more activity and perhaps significant change in structure in the near future.

## Using with a flakes+home-manager based nixOS setup
In the inputs section

View File

@ -1,7 +1,74 @@
{ pkgs, ... }:
{ 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 ? [ ] }:
{
manjari = pkgs.callPackage ./manjari { };
anjali-old-lipi = pkgs.callPackage ./anjali-old-lipi { };
chilanka = pkgs.callPackage ./chilanka { };
}
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 {
# url = "";
# sha256 = "sha256-abc123...";
# })
# (fetchurl {
# url = "";
# sha256 = "sha256-def456...";
# })
# ]
generateUrls = fontAttrs: fontName:
builtins.map (variant:
let sha = fontAttrs.${variant};
in fetchzip {
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";
# sourceRoot = ".";
buildPhase = ''
echo "selected fonts are ${toString selectedFonts}"
ls *.otf *.ttf
'';
installPhase = ''
find -name \*.otf -exec mkdir -p $out/share/fonts/opentype/ \; -exec mv {} $out/share/fonts/opentype/ \;
find -name \*.ttf -exec mkdir -p $out/share/fonts/truetype/ \; -exec mv {} $out/share/fonts/truetype/ \;
'';
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 ];
};
})

View File

@ -20,11 +20,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1721924956,
"narHash": "sha256-Sb1jlyRO+N8jBXEX9Pg9Z1Qb8Bw9QyOgLDNMEpmjZ2M=",
"lastModified": 1728492678,
"narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5ad6a14c6bf098e98800b091668718c336effc95",
"rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7",
"type": "github"
},
"original": {

View File

@ -11,28 +11,20 @@
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
font-smc-manjari = pkgs.callPackage ./manjari/default.nix { };
font-smc-anjali-old-lipi =
pkgs.callPackage ./anjali-old-lipi/default.nix { };
font-smc-chilanka = pkgs.callPackage ./chilanka/default.nix { };
font-smc-gayathri = pkgs.callPackage ./gayathri/default.nix { };
fonts-smc = pkgs.callPackage ./default.nix { };
# font-smc-manjari = pkgs.callPackage ./manjari/default.nix { };
# font-smc-anjali-old-lipi =
# pkgs.callPackage ./anjali-old-lipi/default.nix { };
# font-smc-chilanka = pkgs.callPackage ./chilanka/default.nix { };
# font-smc-gayathri = pkgs.callPackage ./gayathri/default.nix { };
in rec {
packages = {
smc-anjali-old-lipi = font-smc-anjali-old-lipi;
smc-manjari = font-smc-manjari;
smc-chilanka = font-smc-chilanka;
smc-gayathri = font-smc-gayathri;
all = pkgs.symlinkJoin {
name = "all";
paths = [
font-smc-anjali-old-lipi
font-smc-chilanka
font-smc-manjari
font-smc-gayathri
];
};
default = packages.all;
smc-fonts = fonts-smc;
# smc-anjali-old-lipi = font-smc-anjali-old-lipi;
# smc-manjari = font-smc-manjari;
# smc-chilanka = font-smc-chilanka;
# smc-gayathri = font-smc-gayathri;
default = fonts-smc;
};
});
}

52
shas.nix Normal file
View File

@ -0,0 +1,52 @@
{
# Font name , variant and sha
"anjalioldlipi" = {
"anjalioldlipi" = "sha256-c3ScpdN2h39Q6GLFL97pBBGrsillcMXmhlGilOAdF1w=";
};
"chilanka" = {
"chilanka" = "sha256-z+pRvm/8alA3TbUBuR4oDD/kpvuXJTqOBlzXEKBZvnE=";
};
"dyuthi" = {
"dyuthi" = "sha256-H+2ccvHmlZjtH8KfWBSQKPtMkY/NsydHqFNaTzLS4S8=";
};
"gayathri" = {
"gayathri" = "sha256-p9KZi31Na4hfUuDsKj4OXjc9s6J/8xMeuszlL5oVauQ=";
};
"karumbi" = {
"karumbi" = "sha256-aeKH7CWbJNtkgv1PsaWWxyBZor+UO9q9Cctpc/qnEQU=";
};
"keraleeyam" = {
"keraleeyam" = "sha256-UEhDtBaWof/2C36IapGhtYgdeQInUn+A/UAJIF7+RuA=";
};
"malini" = {
"Malini" = "sha256-LvXf1zAlLvZhn2/peRVjOPjQwG46mMP8Dxuvs4fmK1s=";
};
"manjari" = {
"manjari" = "sha256-Sq/7UOBO54c3id6FMZeOmnZTRceEkMAAN8W+C7v7Mtw=";
};
"meera" = {
"meera" = "sha256-yaqA2gYKc4OJ9YxmvQPUZ3qZFyKj0YciMaUoY1SST4I=";
};
"nupuram" = {
"Nupuram-Arrows-Color" =
"sha256-oFsUCu3mDuHok7BXPnb1VdKmqP7DTw6TXKv6iXDknzA=";
"Nupuram-Calligraphy" =
"sha256-R2fPKe5PZqWu4ftV3/iVZptBhq9rku7EcXQGzGgylns=";
"Nupuram-Color" = "sha256-JwanvoGtI3BrG/DxGreo+gVZNGPjLiQA31nheNcuZWw=";
"Nupuram-Dots" = "sha256-5V09G4PkDnHHd/oIRe3kHX6BOQ5HuVVcFSlae32bdVs=";
};
"rachana" = {
"rachana" = "sha256-csfMs4B6BD+yap/AaWpm4kQDsR/WNMrym6szM5iZNJo=";
};
"raghumalayalamsans" = {
"raghumalayalamsans" =
"sha256-rSM77MiFqRzs67mme8xkJZkw13esB9eG13j8OzytCaA=";
};
"suruma" = {
"suruma" = "sha256-x4ybBr5oCwD5Stu8rRGndOYRzaV6ikE+VnLJ/src+1U=";
};
"uroob" = {
"uroob" = "sha256-IJcKD3cDRMA7G7foKtXtJxOrv6OeOujkq9+uGo+R/dY=";
};
}