0
0
Fork 0
flake/pkgs/fonts/nerd-fonts-sf-mono-ligatures.nix

97 lines
2.7 KiB
Nix

{
stdenv,
fetchurl,
fontforge,
unzip,
parallel,
python3,
libarchive,
p7zip,
}: let
sfMono = fetchurl {
url = "https://developer.apple.com/design/downloads/SF-Mono.dmg";
sha256 = "6d4a0b78e3aacd06f913f642cead1c7db4af34ed48856d7171a2e0b55d9a7945";
};
fontPatcher = fetchurl {
url = "https://github.com/ryanoasis/nerd-fonts/releases/download/v3.3.0/FontPatcher.zip";
sha256 = "ce4284e7d1a8816d29bb3a358e33a44e55804792e7925ed0022ba1b3ab1a9d34";
};
ligaturizer = fetchurl {
url = "https://github.com/ToxicFrog/Ligaturizer/archive/refs/tags/v5.tar.gz";
sha256 = "da7c20e7622f7381e6905fbbed736dc50dd8515f412b040adbfe31dfd9b9efb4";
};
firaCode = fetchurl {
url = "https://github.com/tonsky/FiraCode/releases/download/6.2/Fira_Code_v6.2.zip";
sha256 = "0949915ba8eb24d89fd93d10a7ff623f42830d7c5ffc3ecbf960e4ecad3e3e79";
};
in
stdenv.mkDerivation {
pname = "nerd-fonts-sf-mono-ligatures";
version = "3.3.0";
src = sfMono;
buildInputs = [
fontforge
unzip
parallel
python3
libarchive
p7zip
];
unpackPhase = ''
# Extract SF Mono DMG
mkdir extracted
7z x ${sfMono} -oextracted
# Extract package contents
bsdtar xvPf extracted/SFMonoFonts/SF\ Mono\ Fonts.pkg
bsdtar xvPf SFMonoFonts.pkg/Payload
# Unzip FontPatcher
unzip ${fontPatcher}
# Unzip FiraCode
unzip ${firaCode} -d FiraCode
# Extract Ligaturizer
bsdtar xvPf ${ligaturizer}
'';
buildPhase = ''
mkdir -p patched
echo "Patching all fonts"
parallel -j$(nproc) python ./font-patcher -c {} -out patched ::: Library/Fonts/*.otf
mkdir -p otf
for f in FiraCode/ttf/*.ttf; do
file=$(basename "$f")
base=$(echo "$file" | cut -d. -f1)
fontforge -c "import fontforge; from sys import argv; f = fontforge.open(argv[1]); f.generate(argv[2])" "$f" "otf/$base.otf"
done
mkdir -p Ligaturizer-5/fonts/fira/distr/otf
cp otf/FiraCode*.otf Ligaturizer-5/fonts/fira/distr/otf
mkdir -p ligaturized
echo "Ligaturizing all fonts"
cd Ligaturizer-5
parallel -j$(nproc) fontforge -lang py -script ligaturize.py \
--output-dir ../ligaturized --output-name SFMonoNerdFont {} ::: ../patched/*.otf
cd ..
'';
installPhase = ''
mkdir -p $out/share/fonts/apple
cp ligaturized/*.otf $out/share/fonts/apple/
'';
meta = {
description = "Monospaced variant of San Francisco patched with Nerd Fonts and Fira Code ligatures";
license = "proprietary";
maintainers = ["relms"];
platforms = ["x86_64-linux" "aarch64-darwin"];
};
}