about summary refs log tree commit diff
path: root/nixpkgs/pkgs/data/fonts/iosevka/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/data/fonts/iosevka/default.nix')
-rw-r--r--nixpkgs/pkgs/data/fonts/iosevka/default.nix93
1 files changed, 45 insertions, 48 deletions
diff --git a/nixpkgs/pkgs/data/fonts/iosevka/default.nix b/nixpkgs/pkgs/data/fonts/iosevka/default.nix
index 53e5b4a3db76..0c24c1e5c30e 100644
--- a/nixpkgs/pkgs/data/fonts/iosevka/default.nix
+++ b/nixpkgs/pkgs/data/fonts/iosevka/default.nix
@@ -1,4 +1,9 @@
-{ stdenv, lib, pkgs, fetchFromGitHub, nodejs, remarshal
+{ stdenv
+, lib
+, buildNpmPackage
+, fetchFromGitHub
+, darwin
+, remarshal
 , ttfautohint-nox
   # Custom font set options.
   # See https://typeof.net/Iosevka/customizer
@@ -42,70 +47,63 @@
   # '';
 , extraParameters ? null
   # Custom font set name. Required if any custom settings above.
-, set ? null }:
+, set ? null
+}:
 
 assert (privateBuildPlan != null) -> set != null;
 assert (extraParameters != null) -> set != null;
 
-let
-  # We don't know the attribute name for the Iosevka package as it
-  # changes not when our update script is run (which in turn updates
-  # node-packages.json, but when node-packages/generate.sh is run
-  # (which updates node-packages.nix).
-  #
-  # Doing it this way ensures that the package can always be built,
-  # although possibly an older version than ioseva-bin.
-  nodeIosevka = (import ./node-composition.nix {
-    inherit pkgs nodejs;
-    inherit (stdenv.hostPlatform) system;
-  }).package.override {
-    src = fetchFromGitHub {
-      owner = "be5invis";
-      repo = "Iosevka";
-      rev = "v15.6.3";
-      hash = "sha256-wsFx5sD1CjQTcmwpLSt97OYFI8GtVH54uvKQLU1fWTg=";
-    };
+buildNpmPackage rec {
+  pname = if set != null then "iosevka-${set}" else "iosevka";
+  version = "24.1.1";
+
+  src = fetchFromGitHub {
+    owner = "be5invis";
+    repo = "iosevka";
+    rev = "v${version}";
+    hash = "sha256-kzf/DFks/Ovhl6uMw5Bqhq+j+alrUd4E49jgSmp2E2k=";
   };
 
-in
-stdenv.mkDerivation rec {
-  pname = if set != null then "iosevka-${set}" else "iosevka";
-  inherit (nodeIosevka) version src;
+  npmDepsHash = "sha256-FKA3D05E5A0Z3wdCYLzoTyYKLay25sc3O61rOzkIN2E=";
 
   nativeBuildInputs = [
-    nodejs
     remarshal
     ttfautohint-nox
+  ] ++ lib.optionals stdenv.isDarwin [
+    # libtool
+    darwin.cctools
   ];
 
   buildPlan =
-    if builtins.isAttrs privateBuildPlan
-      then builtins.toJSON { buildPlans.${pname} = privateBuildPlan; }
-    else privateBuildPlan;
+    if builtins.isAttrs privateBuildPlan then
+      builtins.toJSON { buildPlans.${pname} = privateBuildPlan; }
+    else
+      privateBuildPlan;
 
   inherit extraParameters;
-  passAsFile = [
-    "extraParameters"
-  ] ++ lib.optional (! (builtins.isString privateBuildPlan && lib.hasPrefix builtins.storeDir privateBuildPlan)) [
-    "buildPlan"
-  ];
+  passAsFile = [ "extraParameters" ] ++ lib.optionals
+    (
+      !(builtins.isString privateBuildPlan
+        && lib.hasPrefix builtins.storeDir privateBuildPlan)
+    ) [ "buildPlan" ];
 
   configurePhase = ''
     runHook preConfigure
     ${lib.optionalString (builtins.isAttrs privateBuildPlan) ''
       remarshal -i "$buildPlanPath" -o private-build-plans.toml -if json -of toml
     ''}
-    ${lib.optionalString (builtins.isString privateBuildPlan && (!lib.hasPrefix builtins.storeDir privateBuildPlan)) ''
-      cp "$buildPlanPath" private-build-plans.toml
-    ''}
-    ${lib.optionalString (builtins.isString privateBuildPlan && (lib.hasPrefix builtins.storeDir privateBuildPlan)) ''
-      cp "$buildPlan" private-build-plans.toml
-    ''}
+    ${lib.optionalString (builtins.isString privateBuildPlan
+      && (!lib.hasPrefix builtins.storeDir privateBuildPlan)) ''
+        cp "$buildPlanPath" private-build-plans.toml
+      ''}
+    ${lib.optionalString (builtins.isString privateBuildPlan
+      && (lib.hasPrefix builtins.storeDir privateBuildPlan)) ''
+        cp "$buildPlan" private-build-plans.toml
+      ''}
     ${lib.optionalString (extraParameters != null) ''
       echo -e "\n" >> params/parameters.toml
       cat "$extraParametersPath" >> params/parameters.toml
     ''}
-    ln -s ${nodeIosevka}/lib/node_modules/iosevka/node_modules .
     runHook postConfigure
   '';
 
@@ -126,16 +124,14 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  passthru = {
-    updateScript = ./update-default.sh;
-  };
-
   meta = with lib; {
-    homepage = "https://be5invis.github.io/Iosevka";
+    homepage = "https://typeof.net/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.
+    description = "Versatile typeface for code, from code.";
+    longDescription = ''
+      Iosevka is an open-source, sans-serif + slab-serif, monospace +
+      quasi‑proportional typeface family, designed for writing code, using in
+      terminals, and preparing technical documents.
     '';
     license = licenses.ofl;
     platforms = platforms.all;
@@ -146,6 +142,7 @@ stdenv.mkDerivation rec {
       babariviere
       rileyinman
       AluisioASG
+      lunik1
     ];
   };
 }