anchor.diff:    stdenv, lib,
     fetchFromGitHub, fetchurl,
     runCommand, writeText,
  -  nodejs, ttfautohint, otfcc
  +  nodejs, ttfautohint, otfcc,
  +
  +  # Custom font set options.
  +  # See https://github.com/be5invis/Iosevka#build-your-own-style
  +  design ? [], upright ? [], italic ? [], oblique ? [],
  +  # Custom font set name. Required if any custom settings above.
  +  set ? null
   }:
   
  -with lib;
  +assert (design != []) -> set != null;
  +assert (upright != []) -> set != null;
  +assert (italic != []) -> set != null;
  +assert (oblique != []) -> set != null;
   
   let
     installPackageLock = import ./package-lock.nix { inherit fetchurl lib; };
   in
   
  +let pname = if set != null then "iosevka-${set}" else "iosevka"; in
  +
   let
     version = "1.13.3";
  -  name = "iosevka-${version}";
  +  name = "${pname}-${version}";
     src = fetchFromGitHub {
       owner = "be5invis";
       repo ="Iosevka";
  
positive.code:     npm --offline rebuild
    '';
  
    installPhase = ''
      fontdir=$out/share/fonts/iosevka
  
      mkdir -p $fontdir
      cp -v dist/iosevka*/ttf/*.ttf $fontdir
    '';
  
    meta = with stdenv.lib; {
  
negative.code:   };
  in
  
  with lib;
  let unwords = concatStringsSep " "; in
  
  let
    param = name: options:
      if options != [] then "${name}='${unwords options}'" else null;
    config = unwords (lib.filter (x: x != null) [
      (param "design" design)
      (param "upright" upright)
      (param "italic" italic)
      (param "oblique" oblique)
    ]);
    custom = design != [] || upright != [] || italic != [] || oblique != [];
  in
  
  stdenv.mkDerivation {
    inherit name pname version src;
  
    nativeBuildInputs = [ nodejs ttfautohint otfcc ];
  
  