[bug#78461] gnu: font-iosevka: Update to 33.2.2, switch to "Super TTCs".

Message ID 00f7c1cd9c14f7f0ad23a390095ec424be9aba3e.1747456422.git.wongandj@icloud.com
State New
Headers
Series [bug#78461] gnu: font-iosevka: Update to 33.2.2, switch to "Super TTCs". |

Commit Message

Andrew Wong May 17, 2025, 4:33 a.m. UTC
  * gnu/packages/fonts.scm(make-font-iosevka): New procedure.
  (font-iosevka, font-iosevka-aile, font-iosevka-curly, font-iosevka-curly-slab)
  (font-iosevka-etoile, font-iosevka-slab, font-iosevka-ss01, font-iosevka-ss02)
  (font-iosevka-ss03, font-iosevka-ss04, font-iosevka-ss05, font-iosevka-ss06)
  (font-iosevka-ss07, font-iosevka-ss08, font-iosevka-ss09, font-iosevka-ss10)
  (font-iosevka-ss11, font-iosevka-ss12, font-iosevka-ss13, font-iosevka-ss14)
  (font-iosevka-ss15, font-iosevka-ss16, font-iosevka-ss17, font-iosevka-ss18)
  (font-iosevka-term, font-iosevka-term-slab): Update to 33.2.2, use Super TTCs.

Change-Id: I37df4b694e9392a07b30a0b4b570d27ec60ce796
---
 gnu/packages/fonts.scm | 439 +++++++++++------------------------------
 1 file changed, 115 insertions(+), 324 deletions(-)


base-commit: 670724edcfe7d71c517d4bb1680132b45accf0b8
  

Comments

Hilton Chain May 17, 2025, 10:32 a.m. UTC | #1
Andrew Wong <wongandj@icloud.com> writes:

> * gnu/packages/fonts.scm(make-font-iosevka): New procedure.
>   (font-iosevka, font-iosevka-aile, font-iosevka-curly, font-iosevka-curly-slab)
>   (font-iosevka-etoile, font-iosevka-slab, font-iosevka-ss01, font-iosevka-ss02)
>   (font-iosevka-ss03, font-iosevka-ss04, font-iosevka-ss05, font-iosevka-ss06)
>   (font-iosevka-ss07, font-iosevka-ss08, font-iosevka-ss09, font-iosevka-ss10)
>   (font-iosevka-ss11, font-iosevka-ss12, font-iosevka-ss13, font-iosevka-ss14)
>   (font-iosevka-ss15, font-iosevka-ss16, font-iosevka-ss17, font-iosevka-ss18)
>   (font-iosevka-term, font-iosevka-term-slab): Update to 33.2.2, use
>   Super TTCs.

Can you clarify why switching to ‘Super TTC’?  I don't think we have
issue managing font files.

> Change-Id: I37df4b694e9392a07b30a0b4b570d27ec60ce796
> ---
>  gnu/packages/fonts.scm | 439 +++++++++++------------------------------
>  1 file changed, 115 insertions(+), 324 deletions(-)
>
> diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
> index 4ac82db29f..f25a7dfde7 100644
> --- a/gnu/packages/fonts.scm
> +++ b/gnu/packages/fonts.scm
> @@ -66,6 +66,7 @@
>  ;;; Copyright © 2023 Santiago Payà Miralta <santiagopim@gmail.com>
>  ;;; Copyright © 2025 Kurome <hunt31999@gmail.com>
>  ;;; Copyright © 2025 Gabriel Santos <gabrielsantosdesouza@disroot.org>
> +;;; Copyright © 2025 Andrew Wong <wongandj@icloud.com>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -2150,391 +2151,181 @@ (define-public font-comic-neue
>              (reverse iosevka-fails)))
>  EOF
>  |#
> +(define make-font-iosevka
> +  (lambda (name-suffix download-suffix description-appendix hash)
> +    (package
> +      (name (string-append "font-iosevka"
> +                           (if (string=? name-suffix "") "" "-") name-suffix))
> +      (version "33.2.2")
> +      (source
> +       (origin (method url-fetch/zipbomb)
> +               (uri (string-append
> +                     "https://github.com/be5invis/Iosevka/releases/download/v"
> +                     version "/SuperTTC-Iosevka" download-suffix
> +                     "-" version ".zip"))
> +               (sha256 (base32 hash))))
> +      (build-system font-build-system)
> +      (home-page "https://be5invis.github.io/Iosevka/")
> +      (synopsis "Coders' typeface, built from code")
> +      (description
> +       (string-append
> +        "Iosevka is a slender monospace sans-serif or slab-serif typeface
> +inspired by Pragmata Pro, M+, and PF DIN Mono, designed to be the ideal font
> +for programming.  Iosevka is completely generated from its source code."
> +        (if (string=? description-appendix "") "" "\n") description-appendix))
> +      (license (list license:silofl1.1  ;build artifacts (i.e., the fonts)
> +                     license:bsd-3)))))
> +

Descriptions will be translated, they must be string literals.[1]

[1]:
https://guix.gnu.org/manual/devel/en/html_node/Synopses-and-Descriptions.html
  

Patch

diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 4ac82db29f..f25a7dfde7 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -66,6 +66,7 @@ 
 ;;; Copyright © 2023 Santiago Payà Miralta <santiagopim@gmail.com>
 ;;; Copyright © 2025 Kurome <hunt31999@gmail.com>
 ;;; Copyright © 2025 Gabriel Santos <gabrielsantosdesouza@disroot.org>
+;;; Copyright © 2025 Andrew Wong <wongandj@icloud.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2150,391 +2151,181 @@  (define-public font-comic-neue
             (reverse iosevka-fails)))
 EOF
 |#
+(define make-font-iosevka
+  (lambda (name-suffix download-suffix description-appendix hash)
+    (package
+      (name (string-append "font-iosevka"
+                           (if (string=? name-suffix "") "" "-") name-suffix))
+      (version "33.2.2")
+      (source
+       (origin (method url-fetch/zipbomb)
+               (uri (string-append
+                     "https://github.com/be5invis/Iosevka/releases/download/v"
+                     version "/SuperTTC-Iosevka" download-suffix
+                     "-" version ".zip"))
+               (sha256 (base32 hash))))
+      (build-system font-build-system)
+      (home-page "https://be5invis.github.io/Iosevka/")
+      (synopsis "Coders' typeface, built from code")
+      (description
+       (string-append
+        "Iosevka is a slender monospace sans-serif or slab-serif typeface
+inspired by Pragmata Pro, M+, and PF DIN Mono, designed to be the ideal font
+for programming.  Iosevka is completely generated from its source code."
+        (if (string=? description-appendix "") "" "\n") description-appendix))
+      (license (list license:silofl1.1  ;build artifacts (i.e., the fonts)
+                     license:bsd-3)))))
+
 (define-public font-iosevka
-  (package
-    (name "font-iosevka")
-    (version "32.5.0")
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-Iosevka-" version ".zip"))
-       (sha256
-        (base32 "1w7043q2pxllry2njrk4cpqwvralb0a1d3bxac36y0ai9al3m5w0"))))
-    (build-system font-build-system)
-    (home-page "https://be5invis.github.io/Iosevka/")
-    (synopsis "Coders' typeface, built from code")
-    (description
-     "Iosevka is a slender monospace sans-serif or slab-serif typeface inspired
-by Pragmata Pro, M+, and PF DIN Mono, designed to be the ideal font for
-programming.  Iosevka is completely generated from its source code.")
-    (license (list license:silofl1.1    ;build artifacts (i.e., the fonts)
-                   license:bsd-3))))    ;supporting code
+  (make-font-iosevka "" "" ""
+                     "0dj7d0r5nk1jl7y2a50syn4vnrfi8gcn2aa7rkn8n1nlp4mys2mf"))
 
 (define-public font-iosevka-slab
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-slab")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSlab-" version ".zip"))
-       (sha256
-        (base32 "03r7ldsk3qrvy46ag08fhs3ppxmzycn8gh6xxmi3pw972hn9kgpi"))))))
+  (make-font-iosevka "slab" "Slab" "This variant has slab serifs."
+                     "06a6x3bgqszngc4nlqnwfgk7c0jnnp9ian4rkvbb9h24xar5fzlg"))
 
 (define-public font-iosevka-term
   (package
-    (inherit font-iosevka)
-    (name "font-iosevka-term")
-    (version (package-version font-iosevka))
+    (inherit (make-font-iosevka
+              "term" ""
+              "This variant includes only the ``Terminal'' spacing variant."
+              ""))
     (source
      (origin
        (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTF-IosevkaTerm-" version ".zip"))
+       (uri (string-append
+             "https://github.com/be5invis/Iosevka/releases/download/v"
+             (package-version font-iosevka) "/SuperTTC-SGr-IosevkaTerm-"
+             (package-version font-iosevka) ".zip"))
        (sha256
-        (base32 "13g3czmd36k261ip9l8r94hcq6swbvag80zb9g7i9frjsr97xn2h"))))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'install 'make-files-writable
-           (lambda _
-             (for-each make-file-writable (find-files "." ".*"))
-             #t)))))))
+        (base32 "13lc3zsg9kgdsw1yc0alv2iw8l4s4jwkc2g3d48hf5n5g5azpndi"))))))
 
 (define-public font-iosevka-term-slab
   (package
-    (inherit font-iosevka)
-    (name "font-iosevka-term-slab")
-    (version (package-version font-iosevka))
+    (inherit (make-font-iosevka
+              "term-slab" ""
+              "This variant includes only the ``Terminal'' spacing variant
+with slab serifs."
+              ""))
     (source
      (origin
        (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka/"
-                           "releases/download/v" version
-                           "/PkgTTF-IosevkaTermSlab-" version ".zip"))
+       (uri (string-append
+             "https://github.com/be5invis/Iosevka/releases/download/v"
+             (package-version font-iosevka) "/SuperTTC-SGr-IosevkaTermSlab-"
+             (package-version font-iosevka) ".zip"))
        (sha256
-        (base32 "00dwp06za3i8kyqqk5xqsd9div2ydf0rgdnj3vl5g6g5621asd39"))))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'install 'make-files-writable
-           (lambda _
-             (for-each make-file-writable (find-files "." ".*"))
-             #t)))))))
+        (base32 "01xcvbl6nikjy1arx2i5l474acn3kiafmjgdzlsmjjdfnrmhfify"))))))
 
 (define-public font-iosevka-aile
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-aile")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaAile-" version ".zip"))
-       (sha256
-        (base32 "10sf5q4f3l9z4pai46sszkswnwfnjmyqzs6ark1dlsifxh8c86wb"))))))
+  (make-font-iosevka
+   "aile" "Aile" "This is a quasi-proportional, sans-serif companion font."
+   "0xnc612gkjyl189sh4w79apw5492g9sbfrfm08yifg8sakchxx8a"))
 
 (define-public font-iosevka-curly
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-curly")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka/"
-                           "releases/download/v" version
-                           "/PkgTTC-IosevkaCurly-" version ".zip"))
-       (sha256
-        (base32 "0qg4r8hid50hnjj3gs0xagdymm15z919s0pn6n2dnlmmxvw1c5nv"))))))
+  (make-font-iosevka "curly" "Curly"
+                     "This is a ``curly'' variant."
+                     "1gzka5ab62hpraz6fc5w3fgvx9mhis3nc35rx7hqg5cnr9bpkidz"))
 
 (define-public font-iosevka-curly-slab
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-curly-slab")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka/"
-                           "releases/download/v" version
-                           "/PkgTTC-IosevkaCurlySlab-" version ".zip"))
-       (sha256
-        (base32 "1lkcs3aqxvdlpgbplhpd4i6vza1xyqnim2awak9b310byyf35d0c"))))))
+  (make-font-iosevka "curly-slab" "CurlySlab"
+                     "This is a ``curly'' variant with slab serifs."
+                     "0kmpfk3pm2q8c4ckmv0l2f0p6954n3qn8fvw2wi3j5x6gbs4239k"))
 
 (define-public font-iosevka-etoile
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-etoile")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaEtoile-" version ".zip"))
-       (sha256
-        (base32 "1yh8vlhrcczmsir87f84qr605rf1kp86bvf1c459myc4a6hcqc3z"))))))
+  (make-font-iosevka "etoile" "Etoile"
+                     "This is a quasi-proportional, slab serif companion font."
+                     "0qvxxjnsd2b29431dbwkzl0rra384clkrvkclgq12wgzp9gv0zip"))
 
 (define-public font-iosevka-ss01
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-ss01")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSS01-" version ".zip"))
-       (sha256
-        (base32 "0h1ln3bisbgwd7cc6c9jcmplzvgca42csd5cfxj1jjs4i2vmx2d6"))))))
+  (make-font-iosevka "ss01" "SS01"
+                     "This is an Andale Mono-style variant."
+                     "0wb9xy9ysfk70b03dhfpqim1615v9frzii6jdn4xs8bd2n53795j"))
 
 (define-public font-iosevka-ss02
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-ss02")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSS02-" version ".zip"))
-       (sha256
-        (base32 "0z0b14cwhbb85fjp508cb1ihscxcc75asjmq9fw5rfl3kx85w6h8"))))))
+  (make-font-iosevka "ss02" "SS02"
+                     "This is an Anonymous Pro-style variant."
+                     "17flp3z2lgd6pwvhmhi3cncfjk56vm863kvjpsx1aqq372r74zzq"))
 
 (define-public font-iosevka-ss03
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-ss03")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSS03-" version ".zip"))
-       (sha256
-        (base32 "18gs7h6mb5c9fqmx7ip1a5k3garqbgp640m338h776pcq9mlnndv"))))))
+  (make-font-iosevka "ss03" "SS03"
+                     "This is a Consolas-style variant."
+                     "1lxmjdx7vw2gfj56s27vinacssljsb0bpiklqbjpaf2j5k0im6r2"))
 
 (define-public font-iosevka-ss04
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-ss04")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSS04-" version ".zip"))
-       (sha256
-        (base32 "1yjywm9r390gnagla6g5yjach0ydng0m0q752k39fb2z5rpjzphp"))))))
+  (make-font-iosevka "ss04" "SS04"
+                     "This is a Menlo-style variant."
+                     "1v7d1zxc518ag476g7r1wnic0xs1ngh0yk4hhsdvkqdc3p4hz7v4"))
 
 (define-public font-iosevka-ss05
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-ss05")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSS05-" version ".zip"))
-       (sha256
-        (base32 "1jn8xb7f3hxs4yl54hmiar49wwdl7489xv0f0sqr5c66ip2jar0k"))))))
+  (make-font-iosevka "ss05" "SS05"
+                     "This is a Menlo-style variant."
+                     "049cy35p864m2agaa1lxd64gy7273hyakiz6my9hz64n8k0bianw"))
 
 (define-public font-iosevka-ss06
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-ss06")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSS06-" version ".zip"))
-       (sha256
-        (base32 "0c6wysyg8nzgan39z4w6l41abx2d0gj89mli63ydagqlljk7vs71"))))))
+  (make-font-iosevka "ss06" "SS06"
+                     "This is a Liberation Mono-style variant."
+                     "19v6bn4ydcq4sikw0xsbjyj6brv6c0hpg0x4n78xdlc257rdkz2d"))
 
 (define-public font-iosevka-ss07
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-ss07")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSS07-" version ".zip"))
-       (sha256
-        (base32 "006khr7hh14dcq81mqzn3fkfrpbix1vghrvwff289r7cfy45ijkk"))))))
+  (make-font-iosevka "ss07" "SS07"
+                     "This is a Monaco-style variant."
+                     "151b2vch8ssb29jahadqfbwinkm02ywwb0mdhd3d186qnn7az6v1"))
 
 (define-public font-iosevka-ss08
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-ss08")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSS08-" version ".zip"))
-       (sha256
-        (base32 "1dbnhbljybal9l61iq88h85jkmc16aaw8kxcq3r0ikzv2pq3vslm"))))))
+  (make-font-iosevka "ss08" "SS08"
+                     "This is a Pragmata Pro-style variant."
+                     "0n0r3imjv769rjbmr1bbasjqd3skav1m2mpa762ib17sl34r55wv"))
 
 (define-public font-iosevka-ss09
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-ss09")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSS09-" version ".zip"))
-       (sha256
-        (base32 "0b218h42n5qg920q95ip3mva2xz012ijzgxj8r9m638qar0ba1qi"))))))
+  (make-font-iosevka "ss09" "SS09"
+                     "This is a Source Code Pro-style variant."
+                     "0ypmj5d31pxf6d0r8d2kvqv721wi7c5gq5sq665sr3l43dsykphk"))
 
 (define-public font-iosevka-ss10
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-ss10")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSS10-" version ".zip"))
-       (sha256
-        (base32 "005i3am8amvwg8skq5lh5pisq1ll8hi9nj3imlcvcwj0w2i8b04w"))))))
+  (make-font-iosevka "ss10" "SS10"
+                     "This is an Envy Code R-style variant."
+                     "0a8l7piq86i7sw6bh9pkakj96bw2cvzmjchsxvsv01hpyri2gyq2"))
 
 (define-public font-iosevka-ss11
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-ss11")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSS11-" version ".zip"))
-       (sha256
-        (base32 "0gnk9arz1dfksjx2d7gnb6vx0p0p7hpz4gcnkaj6ppdry9a5lmdn"))))))
+  (make-font-iosevka "ss11" "SS11"
+                     "This is an X Windows Fixed-style variant."
+                     "12jn5i7k20agv3bv540nw5cymilrnrd2gcq37a4v6zirr7vlgfhp"))
 
 (define-public font-iosevka-ss12
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-ss12")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSS12-" version ".zip"))
-       (sha256
-        (base32 "17ri9f2ka7jsb4n3bbb18vxnjxk432f8740hzbjpnvzy16av5nhk"))))))
+  (make-font-iosevka "ss12" "SS12"
+                     "This is an Ubuntu Mono-style variant."
+                     "04pss3k80jmwgnrb3i36w59phr7s51l55rk78kbgvdz9pi2kq77m"))
 
 (define-public font-iosevka-ss13
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-ss13")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSS13-" version ".zip"))
-       (sha256
-        (base32 "1nb3vd7q3xcbijawk9pqznkcfrjdykrc83jl58dnx7jf0znk7j4d"))))))
+  (make-font-iosevka "ss13" "SS13"
+                     "This is a Lucida-style variant."
+                     "1m0gvmw12dfx971kqi363a3ra9v3ag3j10ym2h3grac2rj0hd1xz"))
 
 (define-public font-iosevka-ss14
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-ss14")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSS14-" version ".zip"))
-       (sha256
-        (base32 "0dqkrf86h77ps90rdbsndngzg0l8c4jh8l3f3vcmdy1vlcrycpbi"))))))
+  (make-font-iosevka "ss14" "SS14"
+                     "This is an JetBrains Mono-style variant."
+                     "1ci5g138raaw4xyaqmq6yappi4djbjggiwipjw6c4rimz1n8wfzh"))
 
 (define-public font-iosevka-ss15
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-ss15")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSS15-" version ".zip"))
-       (sha256
-        (base32 "0qd2di4phlxakprm5bqi0kz9yy48wqrhkxidzjswagf6bnm3mk5v"))))))
+  (make-font-iosevka "ss15" "SS15"
+                     "This is an IBM Plex Mono-style variant."
+                     "137jawljhn5zqjqq6is27vvn3jdpxcfq79zdi4g55ck7acmy78ch"))
 
 (define-public font-iosevka-ss16
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-ss16")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSS16-" version ".zip"))
-       (sha256
-        (base32 "15yr94a3faribc19j91q7jna0hx3dsdpz1axkzr5gy56w7hg6bw4"))))))
+  (make-font-iosevka "ss16" "SS16"
+                     "This is a PT Mono-style variant."
+                     "075bw1ypm8d670ayc73giiikcl7k5fqx3rcjpb2yfbjjpb01p86p"))
 
 (define-public font-iosevka-ss17
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-ss17")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSS17-" version ".zip"))
-       (sha256
-        (base32 "0k8blbzymyvwczngafz3vijwdy4iwhxc4lrfqxgddrfi57lbnj5r"))))))
+  (make-font-iosevka "ss17" "SS17"
+                     "This is a Recursive Mono-style variant."
+                     "1mpa7gi1igs24cnzmwjzycp57wwm9qw1n4mfxfyl10kk6pmn5ygh"))
 
 (define-public font-iosevka-ss18
-  (package
-    (inherit font-iosevka)
-    (name "font-iosevka-ss18")
-    (version (package-version font-iosevka))
-    (source
-     (origin
-       (method url-fetch/zipbomb)
-       (uri (string-append "https://github.com/be5invis/Iosevka"
-                           "/releases/download/v" version
-                           "/PkgTTC-IosevkaSS18-" version ".zip"))
-       (sha256
-        (base32 "08ijx9rbcx95yiaiwv6k25xmsi24rdy50mkmmaw94mmwv22mxdra"))))))
+  (make-font-iosevka "ss18" "SS18"
+                     "This is an Input Mono-style variant."
+                     "0hlxqm1cxjc2xjp11nc1zycfbcnlsbqdwq01ibqi3amc6wnmm4w4"))
 
 (define-public font-aporetic
   (package