98a7d7990e
Although hopefully this can eventually be added to nodePackages, it uses some devDependencies to build custom fonts. Node2nix doesn't currently support enabling devDependencies for a single package. - Got rid of redundant let-in statements. - node-packages.json now only pulls in Iosevka. - generate.sh * Uses a nix-shell shebang to ensure it builds using the current version of node2nix (the old version caused some issues due to the 19.03 release version being 1.6.0 instead of 1.7.0). * Builds in development mode to fix the devDependencies issue. - Use the tree of the built node package as sourceRoot instead of installing node dependencies manually. This means the source will have to be updated in both node-packages.json and default.nix, but to make things easier the derivation inherits the version number. - Disparate build options now all live under privateBuildPlan, which is converted first with builtins.toJSON and then to TOML using remarshal (Unfortunately there is not currently a builtins.toTOML). - Extra parameters can also be provided that will be converted to JSON then TOML. This will overwrite the default parameters.toml file.
79 lines
2.2 KiB
Nix
79 lines
2.2 KiB
Nix
{ stdenv, lib, pkgs
|
|
, nodejs, remarshal, ttfautohint-nox, otfcc
|
|
|
|
# Custom font set options.
|
|
# See https://github.com/be5invis/Iosevka#build-your-own-style
|
|
, privateBuildPlan ? null
|
|
# Extra parameters. Can be used for ligature mapping.
|
|
, extraParameters ? null
|
|
# Custom font set name. Required if any custom settings above.
|
|
, set ? null
|
|
}:
|
|
|
|
assert (privateBuildPlan != null) -> set != null;
|
|
|
|
let
|
|
nodePackages = import ./node-packages.nix {
|
|
inherit pkgs nodejs;
|
|
inherit (stdenv.hostPlatform) system;
|
|
};
|
|
in
|
|
stdenv.mkDerivation rec {
|
|
pname =
|
|
if set != null
|
|
then "iosevka-${set}"
|
|
else "iosevka";
|
|
|
|
inherit (src) version;
|
|
|
|
src = nodePackages."iosevka-https://github.com/be5invis/Iosevka/archive/v2.3.0.tar.gz";
|
|
sourceRoot = "${src.name}/lib/node_modules/iosevka";
|
|
|
|
nativeBuildInputs = [
|
|
nodejs
|
|
remarshal
|
|
otfcc
|
|
ttfautohint-nox
|
|
];
|
|
|
|
privateBuildPlanJSON = builtins.toJSON { buildPlans.${pname} = privateBuildPlan; };
|
|
extraParametersJSON = builtins.toJSON { ${pname} = extraParameters; };
|
|
passAsFile = [ "privateBuildPlanJSON" "extraParametersJSON" ];
|
|
|
|
configurePhase = ''
|
|
runHook preConfigure
|
|
${lib.optionalString (privateBuildPlan != null) ''
|
|
remarshal -i "$privateBuildPlanJSONPath" -o private-build-plans.toml -if json -of toml
|
|
''}
|
|
${lib.optionalString (extraParameters != null) ''
|
|
remarshal -i "$extraParametersJSONPath" -o parameters.toml -if json -of toml
|
|
''}
|
|
runHook postConfigure
|
|
'';
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
npm run build -- ttf::$pname
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
fontdir="$out/share/fonts/$pname"
|
|
install -d "$fontdir"
|
|
install "dist/$pname/ttf"/* "$fontdir"
|
|
'';
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
meta = with stdenv.lib; {
|
|
homepage = https://be5invis.github.io/Iosevka;
|
|
downloadPage = https://github.com/be5invis/Iosevka/releases;
|
|
description = ''
|
|
Slender monospace sans-serif and slab-serif typeface inspired by Pragmata
|
|
Pro, M+ and PF DIN Mono, designed to be the ideal font for programming.
|
|
'';
|
|
license = licenses.ofl;
|
|
platforms = platforms.all;
|
|
maintainers = with maintainers; [ cstrahan jfrankenau ttuegel babariviere ];
|
|
};
|
|
}
|