about summary refs log tree commit diff
path: root/nixpkgs/pkgs/data
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/data')
-rw-r--r--nixpkgs/pkgs/data/documentation/anarchism/default.nix43
-rw-r--r--nixpkgs/pkgs/data/documentation/bgnet/default.nix35
-rw-r--r--nixpkgs/pkgs/data/documentation/gnome-user-docs/default.nix41
-rw-r--r--nixpkgs/pkgs/data/documentation/linux-manual/default.nix40
-rw-r--r--nixpkgs/pkgs/data/documentation/man-pages-posix/default.nix27
-rw-r--r--nixpkgs/pkgs/data/documentation/man-pages/default.nix31
-rw-r--r--nixpkgs/pkgs/data/documentation/mustache-spec/default.nix42
-rw-r--r--nixpkgs/pkgs/data/documentation/nginx-doc/default.nix40
-rw-r--r--nixpkgs/pkgs/data/documentation/nginx-doc/exclude-google-analytics.patch29
-rw-r--r--nixpkgs/pkgs/data/documentation/scheme-manpages/default.nix30
-rw-r--r--nixpkgs/pkgs/data/documentation/std-man-pages/default.nix25
-rw-r--r--nixpkgs/pkgs/data/documentation/stdman/default.nix34
-rw-r--r--nixpkgs/pkgs/data/documentation/zeal/default.nix79
-rw-r--r--nixpkgs/pkgs/data/fonts/3270font/default.nix36
-rw-r--r--nixpkgs/pkgs/data/fonts/agave/default.nix37
-rw-r--r--nixpkgs/pkgs/data/fonts/aileron/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/alegreya-sans/default.nix37
-rw-r--r--nixpkgs/pkgs/data/fonts/alegreya/default.nix43
-rw-r--r--nixpkgs/pkgs/data/fonts/alice/default.nix34
-rw-r--r--nixpkgs/pkgs/data/fonts/alkalami/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/amiri/default.nix31
-rw-r--r--nixpkgs/pkgs/data/fonts/andagii/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/andika/default.nix33
-rw-r--r--nixpkgs/pkgs/data/fonts/ankacoder/condensed.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/ankacoder/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/annapurna-sil/default.nix31
-rw-r--r--nixpkgs/pkgs/data/fonts/anonymous-pro/default.nix35
-rw-r--r--nixpkgs/pkgs/data/fonts/apl386/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/arkpandora/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/arphic/default.nix76
-rw-r--r--nixpkgs/pkgs/data/fonts/atkinson-hyperlegible/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/aurulent-sans/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/azeret-mono/default.nix39
-rw-r--r--nixpkgs/pkgs/data/fonts/b612/default.nix44
-rw-r--r--nixpkgs/pkgs/data/fonts/babelstone-han/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/baekmuk-ttf/default.nix26
-rw-r--r--nixpkgs/pkgs/data/fonts/bakoma-ttf/default.nix26
-rw-r--r--nixpkgs/pkgs/data/fonts/barlow/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/behdad-fonts/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/blackout/default.nix36
-rw-r--r--nixpkgs/pkgs/data/fonts/borg-sans-mono/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/bqn386/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/bront/default.nix26
-rw-r--r--nixpkgs/pkgs/data/fonts/cabin/default.nix42
-rw-r--r--nixpkgs/pkgs/data/fonts/caladea/cambria-alias.conf18
-rw-r--r--nixpkgs/pkgs/data/fonts/caladea/default.nix42
-rw-r--r--nixpkgs/pkgs/data/fonts/camingo-code/default.nix27
-rw-r--r--nixpkgs/pkgs/data/fonts/cantarell-fonts/default.nix57
-rw-r--r--nixpkgs/pkgs/data/fonts/cardo/default.nix39
-rw-r--r--nixpkgs/pkgs/data/fonts/carlito/calibri-alias.conf18
-rw-r--r--nixpkgs/pkgs/data/fonts/carlito/default.nix38
-rw-r--r--nixpkgs/pkgs/data/fonts/cascadia-code/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/ccsymbols/default.nix33
-rw-r--r--nixpkgs/pkgs/data/fonts/charis-sil/default.nix33
-rw-r--r--nixpkgs/pkgs/data/fonts/cherry/default.nix37
-rw-r--r--nixpkgs/pkgs/data/fonts/chonburi/default.nix41
-rw-r--r--nixpkgs/pkgs/data/fonts/chunk/default.nix38
-rw-r--r--nixpkgs/pkgs/data/fonts/clearlyU/default.nix34
-rw-r--r--nixpkgs/pkgs/data/fonts/cm-unicode/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/cnstrokeorder/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/comfortaa/default.nix37
-rw-r--r--nixpkgs/pkgs/data/fonts/comic-mono/comic-mono-weight.conf14
-rw-r--r--nixpkgs/pkgs/data/fonts/comic-mono/default.nix39
-rw-r--r--nixpkgs/pkgs/data/fonts/comic-neue/default.nix39
-rw-r--r--nixpkgs/pkgs/data/fonts/comic-relief/comic-sans-ms-alias.conf18
-rw-r--r--nixpkgs/pkgs/data/fonts/comic-relief/default.nix45
-rw-r--r--nixpkgs/pkgs/data/fonts/commit-mono/default.nix35
-rw-r--r--nixpkgs/pkgs/data/fonts/cooper-hewitt/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/corefonts/default.nix105
-rw-r--r--nixpkgs/pkgs/data/fonts/corefonts/no-op.conf9
-rw-r--r--nixpkgs/pkgs/data/fonts/courier-prime/default.nix27
-rw-r--r--nixpkgs/pkgs/data/fonts/cozette/default.nix33
-rw-r--r--nixpkgs/pkgs/data/fonts/creep/default.nix34
-rw-r--r--nixpkgs/pkgs/data/fonts/crimson-pro/default.nix33
-rw-r--r--nixpkgs/pkgs/data/fonts/crimson/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/culmus/default.nix34
-rw-r--r--nixpkgs/pkgs/data/fonts/curie/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/d2coding/default.nix35
-rw-r--r--nixpkgs/pkgs/data/fonts/dancing-script/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/dejavu-fonts/default.nix65
-rw-r--r--nixpkgs/pkgs/data/fonts/dina/default.nix78
-rw-r--r--nixpkgs/pkgs/data/fonts/dm-sans/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/dosemu-fonts/default.nix36
-rw-r--r--nixpkgs/pkgs/data/fonts/dosis/default.nix41
-rw-r--r--nixpkgs/pkgs/data/fonts/dotcolon-fonts/default.nix49
-rw-r--r--nixpkgs/pkgs/data/fonts/doulos-sil/default.nix33
-rw-r--r--nixpkgs/pkgs/data/fonts/eb-garamond/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/edukai/default.nix33
-rw-r--r--nixpkgs/pkgs/data/fonts/eduli/default.nix36
-rw-r--r--nixpkgs/pkgs/data/fonts/edusong/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/edwin/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/efont-unicode/default.nix54
-rw-r--r--nixpkgs/pkgs/data/fonts/emacs-all-the-icons-fonts/default.nix38
-rw-r--r--nixpkgs/pkgs/data/fonts/emojione/default.nix50
-rw-r--r--nixpkgs/pkgs/data/fonts/encode-sans/default.nix36
-rw-r--r--nixpkgs/pkgs/data/fonts/envypn-font/default.nix50
-rw-r--r--nixpkgs/pkgs/data/fonts/et-book/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/eunomia/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/ezra-sil/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/f1_8/default.nix33
-rw-r--r--nixpkgs/pkgs/data/fonts/f5_6/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/fa_1/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/fantasque-sans-mono/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/fanwood/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/ferrum/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/fg-virgil/default.nix31
-rw-r--r--nixpkgs/pkgs/data/fonts/fira-code/default.nix34
-rw-r--r--nixpkgs/pkgs/data/fonts/fira-code/symbols.nix31
-rw-r--r--nixpkgs/pkgs/data/fonts/fira-go/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/fira-mono/default.nix33
-rw-r--r--nixpkgs/pkgs/data/fonts/fira/default.nix37
-rw-r--r--nixpkgs/pkgs/data/fonts/fixedsys-excelsior/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/font-awesome/default.nix54
-rw-r--r--nixpkgs/pkgs/data/fonts/fraunces/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/freefont-ttf/default.nix33
-rw-r--r--nixpkgs/pkgs/data/fonts/galatia-sil/default.nix31
-rw-r--r--nixpkgs/pkgs/data/fonts/gandom-fonts/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/garamond-libre/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/gdouros/default.nix46
-rw-r--r--nixpkgs/pkgs/data/fonts/gelasio/default.nix38
-rw-r--r--nixpkgs/pkgs/data/fonts/gentium-book-basic/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/gentium/default.nix45
-rw-r--r--nixpkgs/pkgs/data/fonts/glasstty-ttf/default.nix18
-rw-r--r--nixpkgs/pkgs/data/fonts/go-font/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/gohufont/default.nix69
-rw-r--r--nixpkgs/pkgs/data/fonts/google-fonts/default.nix73
-rw-r--r--nixpkgs/pkgs/data/fonts/goudy-bookletter-1911/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/gubbi/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/gyre/default.nix36
-rw-r--r--nixpkgs/pkgs/data/fonts/hack/default.nix43
-rw-r--r--nixpkgs/pkgs/data/fonts/hackgen/default.nix27
-rw-r--r--nixpkgs/pkgs/data/fonts/hackgen/nerdfont.nix27
-rw-r--r--nixpkgs/pkgs/data/fonts/hanazono/default.nix42
-rw-r--r--nixpkgs/pkgs/data/fonts/hannom/default.nix38
-rw-r--r--nixpkgs/pkgs/data/fonts/hasklig/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/helvetica-neue-lt-std/default.nix39
-rw-r--r--nixpkgs/pkgs/data/fonts/hermit/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/hubot-sans/default.nix42
-rw-r--r--nixpkgs/pkgs/data/fonts/hyperscrypt/default.nix43
-rw-r--r--nixpkgs/pkgs/data/fonts/i-dot-ming/default.nix49
-rw-r--r--nixpkgs/pkgs/data/fonts/ia-writer-duospace/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/ibm-plex/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/inconsolata/default.nix25
-rw-r--r--nixpkgs/pkgs/data/fonts/inconsolata/lgc.nix52
-rw-r--r--nixpkgs/pkgs/data/fonts/input-fonts/default.nix98
-rw-r--r--nixpkgs/pkgs/data/fonts/inriafonts/default.nix40
-rw-r--r--nixpkgs/pkgs/data/fonts/intel-one-mono/default.nix39
-rw-r--r--nixpkgs/pkgs/data/fonts/inter/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/iosevka/bin.nix41
-rw-r--r--nixpkgs/pkgs/data/fonts/iosevka/comfy.nix67
-rw-r--r--nixpkgs/pkgs/data/fonts/iosevka/default.nix146
-rw-r--r--nixpkgs/pkgs/data/fonts/iosevka/node.nix17
-rwxr-xr-xnixpkgs/pkgs/data/fonts/iosevka/update-bin.sh28
-rw-r--r--nixpkgs/pkgs/data/fonts/iosevka/variants.nix95
-rw-r--r--nixpkgs/pkgs/data/fonts/ipaexfont/default.nix33
-rw-r--r--nixpkgs/pkgs/data/fonts/ipafont/default.nix31
-rw-r--r--nixpkgs/pkgs/data/fonts/ir-standard-fonts/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/iwona/default.nix26
-rw-r--r--nixpkgs/pkgs/data/fonts/jetbrains-mono/default.nix34
-rw-r--r--nixpkgs/pkgs/data/fonts/jost/default.nix26
-rw-r--r--nixpkgs/pkgs/data/fonts/joypixels/default.nix103
-rw-r--r--nixpkgs/pkgs/data/fonts/julia-mono/default.nix36
-rw-r--r--nixpkgs/pkgs/data/fonts/junction/default.nix34
-rw-r--r--nixpkgs/pkgs/data/fonts/junicode/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/kacst/default.nix27
-rw-r--r--nixpkgs/pkgs/data/fonts/kanit/default.nix43
-rw-r--r--nixpkgs/pkgs/data/fonts/kanji-stroke-order-font/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/kawkab-mono/default.nix26
-rw-r--r--nixpkgs/pkgs/data/fonts/khmeros/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/knewave/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/kochi-substitute-naga10/default.nix36
-rw-r--r--nixpkgs/pkgs/data/fonts/kochi-substitute/default.nix48
-rw-r--r--nixpkgs/pkgs/data/fonts/kode-mono/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/kreative-square-fonts/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/lalezar-fonts/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/lao/default.nix27
-rw-r--r--nixpkgs/pkgs/data/fonts/last-resort/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/lato/default.nix45
-rw-r--r--nixpkgs/pkgs/data/fonts/league-gothic/default.nix39
-rw-r--r--nixpkgs/pkgs/data/fonts/league-of-moveable-type/default.nix62
-rw-r--r--nixpkgs/pkgs/data/fonts/league-script-number-one/default.nix35
-rw-r--r--nixpkgs/pkgs/data/fonts/league-spartan/default.nix40
-rw-r--r--nixpkgs/pkgs/data/fonts/lexend/default.nix36
-rw-r--r--nixpkgs/pkgs/data/fonts/liberastika/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/liberation-fonts/default.nix69
-rw-r--r--nixpkgs/pkgs/data/fonts/liberation-sans-narrow/default.nix36
-rw-r--r--nixpkgs/pkgs/data/fonts/libertine/default.nix54
-rw-r--r--nixpkgs/pkgs/data/fonts/libertinus/default.nix33
-rw-r--r--nixpkgs/pkgs/data/fonts/libre-baskerville/default.nix36
-rw-r--r--nixpkgs/pkgs/data/fonts/libre-bodoni/default.nix41
-rw-r--r--nixpkgs/pkgs/data/fonts/libre-caslon/default.nix46
-rw-r--r--nixpkgs/pkgs/data/fonts/libre-franklin/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/linden-hill/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/line-awesome/default.nix36
-rw-r--r--nixpkgs/pkgs/data/fonts/linearicons-free/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/linja-pi-pu-lukin/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/linja-sike/default.nix25
-rw-r--r--nixpkgs/pkgs/data/fonts/lklug-sinhala/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/lmmath/default.nix33
-rw-r--r--nixpkgs/pkgs/data/fonts/lmodern/default.nix27
-rw-r--r--nixpkgs/pkgs/data/fonts/lohit-fonts/default.nix63
-rw-r--r--nixpkgs/pkgs/data/fonts/luculent/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/lxgw-neoxihei/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/lxgw-wenkai/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/manrope/default.nix36
-rw-r--r--nixpkgs/pkgs/data/fonts/maple-font/default.nix77
-rw-r--r--nixpkgs/pkgs/data/fonts/marathi-cursive/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/martian-mono/default.nix35
-rw-r--r--nixpkgs/pkgs/data/fonts/material-design-icons/default.nix39
-rw-r--r--nixpkgs/pkgs/data/fonts/material-icons/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/material-symbols/default.nix39
-rw-r--r--nixpkgs/pkgs/data/fonts/medio/default.nix37
-rw-r--r--nixpkgs/pkgs/data/fonts/melete/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/merriweather-sans/default.nix34
-rw-r--r--nixpkgs/pkgs/data/fonts/merriweather/default.nix35
-rw-r--r--nixpkgs/pkgs/data/fonts/meslo-lg/default.nix45
-rw-r--r--nixpkgs/pkgs/data/fonts/meslo-lgs-nf/default.nix26
-rw-r--r--nixpkgs/pkgs/data/fonts/migmix/default.nix42
-rw-r--r--nixpkgs/pkgs/data/fonts/migu/default.nix42
-rw-r--r--nixpkgs/pkgs/data/fonts/mno16/default.nix23
-rw-r--r--nixpkgs/pkgs/data/fonts/mona-sans/default.nix41
-rw-r--r--nixpkgs/pkgs/data/fonts/monocraft/default.nix41
-rw-r--r--nixpkgs/pkgs/data/fonts/monoid/default.nix43
-rw-r--r--nixpkgs/pkgs/data/fonts/mononoki/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/montserrat/default.nix34
-rw-r--r--nixpkgs/pkgs/data/fonts/mph-2b-damase/default.nix21
-rw-r--r--nixpkgs/pkgs/data/fonts/mplus-outline-fonts/default.nix61
-rw-r--r--nixpkgs/pkgs/data/fonts/mro-unicode/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/myrica/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/nacelle/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/nafees/default.nix62
-rw-r--r--nixpkgs/pkgs/data/fonts/nahid-fonts/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/nanum-gothic-coding/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/nanum/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/nasin-nanpa/default.nix42
-rw-r--r--nixpkgs/pkgs/data/fonts/national-park/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/navilu/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/nerdfonts/default.nix72
-rw-r--r--nixpkgs/pkgs/data/fonts/nerdfonts/shas.nix66
-rwxr-xr-xnixpkgs/pkgs/data/fonts/nerdfonts/update.sh26
-rw-r--r--nixpkgs/pkgs/data/fonts/nerdfonts/version.nix1
-rw-r--r--nixpkgs/pkgs/data/fonts/nika-fonts/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/norwester/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/noto-fonts/default.nix305
-rw-r--r--nixpkgs/pkgs/data/fonts/noto-fonts/noto-emoji.hashes.json7
-rw-r--r--nixpkgs/pkgs/data/fonts/noto-fonts/noto-emoji.json30
-rwxr-xr-xnixpkgs/pkgs/data/fonts/noto-fonts/noto-emoji.py183
-rw-r--r--nixpkgs/pkgs/data/fonts/noto-fonts/tools.nix78
-rw-r--r--nixpkgs/pkgs/data/fonts/ocr-a/default.nix24
-rw-r--r--nixpkgs/pkgs/data/fonts/office-code-pro/default.nix35
-rw-r--r--nixpkgs/pkgs/data/fonts/oldsindhi/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/oldstandard/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/open-dyslexic/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/open-fonts/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/open-sans/default.nix35
-rw-r--r--nixpkgs/pkgs/data/fonts/openmoji/default.nix96
-rw-r--r--nixpkgs/pkgs/data/fonts/orbitron/default.nix48
-rw-r--r--nixpkgs/pkgs/data/fonts/ostrich-sans/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/overpass/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/oxygenfonts/default.nix53
-rw-r--r--nixpkgs/pkgs/data/fonts/parastoo-fonts/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/paratype-pt/mono.nix37
-rw-r--r--nixpkgs/pkgs/data/fonts/paratype-pt/sans.nix37
-rw-r--r--nixpkgs/pkgs/data/fonts/paratype-pt/serif.nix37
-rw-r--r--nixpkgs/pkgs/data/fonts/pecita/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/penna/default.nix37
-rw-r--r--nixpkgs/pkgs/data/fonts/poly/default.nix50
-rw-r--r--nixpkgs/pkgs/data/fonts/powerline-fonts/default.nix36
-rw-r--r--nixpkgs/pkgs/data/fonts/powerline-symbols/default.nix18
-rw-r--r--nixpkgs/pkgs/data/fonts/pretendard/default.nix58
-rw-r--r--nixpkgs/pkgs/data/fonts/prociono/default.nix34
-rw-r--r--nixpkgs/pkgs/data/fonts/profont/default.nix43
-rw-r--r--nixpkgs/pkgs/data/fonts/proggyfonts/default.nix44
-rw-r--r--nixpkgs/pkgs/data/fonts/public-sans/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/quattrocento-sans/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/quattrocento/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/quivira/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/raleway/default.nix40
-rw-r--r--nixpkgs/pkgs/data/fonts/recursive/default.nix25
-rw-r--r--nixpkgs/pkgs/data/fonts/redhat-official/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/rhodium-libre/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/ricty/default.nix37
-rw-r--r--nixpkgs/pkgs/data/fonts/rictydiminished-with-firacode/default.nix49
-rw-r--r--nixpkgs/pkgs/data/fonts/roboto-mono/default.nix88
-rw-r--r--nixpkgs/pkgs/data/fonts/roboto-serif/default.nix42
-rw-r--r--nixpkgs/pkgs/data/fonts/roboto-slab/default.nix41
-rw-r--r--nixpkgs/pkgs/data/fonts/roboto/default.nix33
-rw-r--r--nixpkgs/pkgs/data/fonts/rounded-mgenplus/default.nix31
-rw-r--r--nixpkgs/pkgs/data/fonts/route159/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/rubik/default.nix103
-rw-r--r--nixpkgs/pkgs/data/fonts/ruwudu/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/sahel-fonts/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/samim-fonts/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/sampradaya/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/sarabun/default.nix41
-rw-r--r--nixpkgs/pkgs/data/fonts/sarasa-gothic/default.nix34
-rw-r--r--nixpkgs/pkgs/data/fonts/scheherazade/default.nix54
-rw-r--r--nixpkgs/pkgs/data/fonts/scientifica/default.nix31
-rw-r--r--nixpkgs/pkgs/data/fonts/seshat/default.nix42
-rw-r--r--nixpkgs/pkgs/data/fonts/shabnam-fonts/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/shrikhand/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/signwriting/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/siji/default.nix44
-rw-r--r--nixpkgs/pkgs/data/fonts/sil-abyssinica/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/sil-padauk/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/sitelen-seli-kiwen/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/sketchybar-app-font/default.nix34
-rw-r--r--nixpkgs/pkgs/data/fonts/smiley-sans/default.nix31
-rw-r--r--nixpkgs/pkgs/data/fonts/sniglet/default.nix33
-rw-r--r--nixpkgs/pkgs/data/fonts/sorts-mill-goudy/default.nix36
-rw-r--r--nixpkgs/pkgs/data/fonts/source-code-pro/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/source-han-code-jp/default.nix27
-rw-r--r--nixpkgs/pkgs/data/fonts/source-han/default.nix133
-rw-r--r--nixpkgs/pkgs/data/fonts/source-sans-pro/default.nix34
-rw-r--r--nixpkgs/pkgs/data/fonts/source-sans/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/source-serif-pro/default.nix34
-rw-r--r--nixpkgs/pkgs/data/fonts/source-serif/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/spleen/default.nix36
-rw-r--r--nixpkgs/pkgs/data/fonts/stix-otf/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/stix-two/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/sudo/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/tai-languages/default.nix34
-rw-r--r--nixpkgs/pkgs/data/fonts/takao/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/tamsyn/default.nix50
-rw-r--r--nixpkgs/pkgs/data/fonts/tamzen/default.nix37
-rw-r--r--nixpkgs/pkgs/data/fonts/tempora-lgc/default.nix41
-rw-r--r--nixpkgs/pkgs/data/fonts/tenderness/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/terminus-font-ttf/default.nix35
-rw-r--r--nixpkgs/pkgs/data/fonts/terminus-font/SOURCE_DATE_EPOCH-for-otb.patch83
-rw-r--r--nixpkgs/pkgs/data/fonts/terminus-font/default.nix49
-rw-r--r--nixpkgs/pkgs/data/fonts/termsyn/default.nix26
-rw-r--r--nixpkgs/pkgs/data/fonts/tewi/default.nix59
-rw-r--r--nixpkgs/pkgs/data/fonts/tex-gyre-math/default.nix67
-rw-r--r--nixpkgs/pkgs/data/fonts/tex-gyre/default.nix84
-rw-r--r--nixpkgs/pkgs/data/fonts/the-neue-black/default.nix33
-rw-r--r--nixpkgs/pkgs/data/fonts/theano/default.nix31
-rw-r--r--nixpkgs/pkgs/data/fonts/tibetan-machine/default.nix27
-rw-r--r--nixpkgs/pkgs/data/fonts/times-newer-roman/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/tipa/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/tlwg/default.nix24
-rw-r--r--nixpkgs/pkgs/data/fonts/tt2020/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/ttf-bitstream-vera/default.nix21
-rw-r--r--nixpkgs/pkgs/data/fonts/ttf-envy-code-r/default.nix27
-rw-r--r--nixpkgs/pkgs/data/fonts/ttf-tw-moe/default.nix33
-rw-r--r--nixpkgs/pkgs/data/fonts/twemoji-color-font/default.nix42
-rw-r--r--nixpkgs/pkgs/data/fonts/twitter-color-emoji/default.nix116
-rw-r--r--nixpkgs/pkgs/data/fonts/u001/default.nix40
-rw-r--r--nixpkgs/pkgs/data/fonts/ubuntu-font-family/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/ucs-fonts/default.nix61
-rw-r--r--nixpkgs/pkgs/data/fonts/ultimate-oldschool-pc-font-pack/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/undefined-medium/default.nix31
-rw-r--r--nixpkgs/pkgs/data/fonts/unfonts-core/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/uni-vga/default.nix56
-rw-r--r--nixpkgs/pkgs/data/fonts/unifont/default.nix53
-rw-r--r--nixpkgs/pkgs/data/fonts/unifont_upper/default.nix31
-rw-r--r--nixpkgs/pkgs/data/fonts/unscii/default.nix71
-rw-r--r--nixpkgs/pkgs/data/fonts/uw-ttyp0/default.nix89
-rw-r--r--nixpkgs/pkgs/data/fonts/uw-ttyp0/determinism.patch13
-rw-r--r--nixpkgs/pkgs/data/fonts/vazir-code-font/default.nix29
-rw-r--r--nixpkgs/pkgs/data/fonts/vazir-fonts/default.nix31
-rw-r--r--nixpkgs/pkgs/data/fonts/vdrsymbols/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/vegur/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/victor-mono/default.nix38
-rw-r--r--nixpkgs/pkgs/data/fonts/vista-fonts-chs/default.nix42
-rw-r--r--nixpkgs/pkgs/data/fonts/vista-fonts-chs/no-op.conf9
-rw-r--r--nixpkgs/pkgs/data/fonts/vista-fonts-cht/default.nix41
-rw-r--r--nixpkgs/pkgs/data/fonts/vista-fonts-cht/no-op.conf9
-rw-r--r--nixpkgs/pkgs/data/fonts/vista-fonts/default.nix42
-rw-r--r--nixpkgs/pkgs/data/fonts/vista-fonts/no-op.conf9
-rw-r--r--nixpkgs/pkgs/data/fonts/vollkorn/default.nix33
-rw-r--r--nixpkgs/pkgs/data/fonts/weather-icons/default.nix32
-rw-r--r--nixpkgs/pkgs/data/fonts/work-sans/default.nix27
-rw-r--r--nixpkgs/pkgs/data/fonts/wqy-microhei/default.nix27
-rw-r--r--nixpkgs/pkgs/data/fonts/wqy-zenhei/default.nix27
-rw-r--r--nixpkgs/pkgs/data/fonts/xits-math/default.nix31
-rw-r--r--nixpkgs/pkgs/data/fonts/xkcd-font/default.nix30
-rw-r--r--nixpkgs/pkgs/data/fonts/yanone-kaffeesatz/default.nix28
-rw-r--r--nixpkgs/pkgs/data/fonts/zilla-slab/default.nix39
-rw-r--r--nixpkgs/pkgs/data/icons/apple-cursor/default.nix43
-rw-r--r--nixpkgs/pkgs/data/icons/arc-icon-theme/default.nix38
-rw-r--r--nixpkgs/pkgs/data/icons/banana-cursor/default.nix31
-rw-r--r--nixpkgs/pkgs/data/icons/beauty-line-icon-theme/default.nix64
-rw-r--r--nixpkgs/pkgs/data/icons/bibata-cursors/default.nix44
-rw-r--r--nixpkgs/pkgs/data/icons/bibata-cursors/extra.nix56
-rw-r--r--nixpkgs/pkgs/data/icons/bibata-cursors/translucent.nix26
-rw-r--r--nixpkgs/pkgs/data/icons/capitaine-cursors-themed/default.nix29
-rw-r--r--nixpkgs/pkgs/data/icons/capitaine-cursors/default.nix57
-rw-r--r--nixpkgs/pkgs/data/icons/catppuccin-cursors/default.nix66
-rw-r--r--nixpkgs/pkgs/data/icons/catppuccin-papirus-folders/default.nix54
-rw-r--r--nixpkgs/pkgs/data/icons/colloid-icon-theme/default.nix72
-rw-r--r--nixpkgs/pkgs/data/icons/comixcursors/default.nix105
-rw-r--r--nixpkgs/pkgs/data/icons/comixcursors/makefile-shell-var.patch11
-rw-r--r--nixpkgs/pkgs/data/icons/dracula-icon-theme/default.nix39
-rw-r--r--nixpkgs/pkgs/data/icons/elementary-xfce-icon-theme/default.nix47
-rw-r--r--nixpkgs/pkgs/data/icons/faba-icon-theme/default.nix40
-rw-r--r--nixpkgs/pkgs/data/icons/faba-mono-icons/default.nix42
-rw-r--r--nixpkgs/pkgs/data/icons/flat-remix-icon-theme/default.nix44
-rw-r--r--nixpkgs/pkgs/data/icons/fluent-icon-theme/default.nix63
-rw-r--r--nixpkgs/pkgs/data/icons/gnome-icon-theme/default.nix39
-rw-r--r--nixpkgs/pkgs/data/icons/google-cursor/default.nix51
-rw-r--r--nixpkgs/pkgs/data/icons/graphite-cursors/default.nix32
-rw-r--r--nixpkgs/pkgs/data/icons/gruvbox-dark-icons-gtk/default.nix34
-rw-r--r--nixpkgs/pkgs/data/icons/hackneyed/default.nix46
-rw-r--r--nixpkgs/pkgs/data/icons/hicolor-icon-theme/default.nix20
-rw-r--r--nixpkgs/pkgs/data/icons/hicolor-icon-theme/setup-hook.sh53
-rw-r--r--nixpkgs/pkgs/data/icons/humanity-icon-theme/default.nix44
-rw-r--r--nixpkgs/pkgs/data/icons/iconpack-jade/default.nix36
-rw-r--r--nixpkgs/pkgs/data/icons/iconpack-obsidian/default.nix38
-rw-r--r--nixpkgs/pkgs/data/icons/iso-flags/default.nix45
-rw-r--r--nixpkgs/pkgs/data/icons/kora-icon-theme/default.nix59
-rw-r--r--nixpkgs/pkgs/data/icons/la-capitaine-icon-theme/default.nix52
-rw-r--r--nixpkgs/pkgs/data/icons/luna-icons/default.nix56
-rw-r--r--nixpkgs/pkgs/data/icons/maia-icon-theme/default.nix53
-rw-r--r--nixpkgs/pkgs/data/icons/moka-icon-theme/default.nix50
-rw-r--r--nixpkgs/pkgs/data/icons/nordzy-cursor-theme/default.nix31
-rw-r--r--nixpkgs/pkgs/data/icons/nordzy-icon-theme/default.nix54
-rw-r--r--nixpkgs/pkgs/data/icons/numix-cursor-theme/default.nix33
-rw-r--r--nixpkgs/pkgs/data/icons/numix-icon-theme-circle/default.nix47
-rw-r--r--nixpkgs/pkgs/data/icons/numix-icon-theme-square/default.nix47
-rw-r--r--nixpkgs/pkgs/data/icons/numix-icon-theme/default.nix61
-rw-r--r--nixpkgs/pkgs/data/icons/oranchelo-icon-theme/default.nix46
-rw-r--r--nixpkgs/pkgs/data/icons/paper-icon-theme/default.nix49
-rw-r--r--nixpkgs/pkgs/data/icons/papirus-icon-theme/default.nix63
-rw-r--r--nixpkgs/pkgs/data/icons/papirus-maia-icon-theme/default.nix45
-rw-r--r--nixpkgs/pkgs/data/icons/papirus-nord/default.nix75
-rw-r--r--nixpkgs/pkgs/data/icons/phinger-cursors/default.nix28
-rw-r--r--nixpkgs/pkgs/data/icons/pop-icon-theme/default.nix42
-rw-r--r--nixpkgs/pkgs/data/icons/qogir-icon-theme/default.nix68
-rw-r--r--nixpkgs/pkgs/data/icons/quintom-cursor-theme/default.nix28
-rw-r--r--nixpkgs/pkgs/data/icons/reversal-icon-theme/default.nix77
-rw-r--r--nixpkgs/pkgs/data/icons/rose-pine/default.nix47
-rw-r--r--nixpkgs/pkgs/data/icons/simp1e-cursors/default.nix42
-rw-r--r--nixpkgs/pkgs/data/icons/super-tiny-icons/default.nix34
-rw-r--r--nixpkgs/pkgs/data/icons/tango-icon-theme/default.nix33
-rw-r--r--nixpkgs/pkgs/data/icons/tango-icon-theme/rsvg-convert.patch34
-rw-r--r--nixpkgs/pkgs/data/icons/tau-hydrogen/default.nix36
-rw-r--r--nixpkgs/pkgs/data/icons/tela-circle-icon-theme/default.nix74
-rw-r--r--nixpkgs/pkgs/data/icons/tela-icon-theme/default.nix44
-rw-r--r--nixpkgs/pkgs/data/icons/vanilla-dmz/default.nix61
-rw-r--r--nixpkgs/pkgs/data/icons/vimix-icon-theme/default.nix69
-rw-r--r--nixpkgs/pkgs/data/icons/volantes-cursors/default.nix32
-rw-r--r--nixpkgs/pkgs/data/icons/whitesur-cursors/default.nix31
-rw-r--r--nixpkgs/pkgs/data/icons/whitesur-icon-theme/default.nix75
-rw-r--r--nixpkgs/pkgs/data/icons/zafiro-icons/default.nix76
-rw-r--r--nixpkgs/pkgs/data/machine-learning/mnist/default.nix45
-rw-r--r--nixpkgs/pkgs/data/misc/adapta-backgrounds/default.nix25
-rw-r--r--nixpkgs/pkgs/data/misc/brise/default.nix42
-rw-r--r--nixpkgs/pkgs/data/misc/brise/fetchPackages.nix130
-rw-r--r--nixpkgs/pkgs/data/misc/cacert/default.nix217
-rw-r--r--nixpkgs/pkgs/data/misc/cacert/setup-hook.sh7
-rw-r--r--nixpkgs/pkgs/data/misc/cacert/test-cert-file.crt13
-rwxr-xr-xnixpkgs/pkgs/data/misc/cacert/update.sh39
-rw-r--r--nixpkgs/pkgs/data/misc/clash-geoip/default.nix32
-rw-r--r--nixpkgs/pkgs/data/misc/cldr-annotations/default.nix29
-rw-r--r--nixpkgs/pkgs/data/misc/colemak-dh/default.nix35
-rw-r--r--nixpkgs/pkgs/data/misc/combinatorial_designs/default.nix31
-rw-r--r--nixpkgs/pkgs/data/misc/common-licenses/default.nix28
-rw-r--r--nixpkgs/pkgs/data/misc/conway_polynomials/default.nix41
-rw-r--r--nixpkgs/pkgs/data/misc/dbip-country-lite/default.nix35
-rw-r--r--nixpkgs/pkgs/data/misc/ddccontrol-db/default.nix27
-rw-r--r--nixpkgs/pkgs/data/misc/dns-root-data/default.nix37
-rw-r--r--nixpkgs/pkgs/data/misc/dns-root-data/root.ds1
-rw-r--r--nixpkgs/pkgs/data/misc/dns-root-data/root.key1
-rwxr-xr-xnixpkgs/pkgs/data/misc/dns-root-data/update-root-key.sh10
-rw-r--r--nixpkgs/pkgs/data/misc/dtv-scan-tables/default.nix48
-rw-r--r--nixpkgs/pkgs/data/misc/elliptic_curves/default.nix50
-rw-r--r--nixpkgs/pkgs/data/misc/fedora-backgrounds/default.nix67
-rw-r--r--nixpkgs/pkgs/data/misc/fedora-backgrounds/f33-fix-xfce-path.patch15
-rw-r--r--nixpkgs/pkgs/data/misc/fedora-backgrounds/f34-fix-xfce-path.patch13
-rw-r--r--nixpkgs/pkgs/data/misc/fedora-backgrounds/f35-fix-xfce-path.patch26
-rw-r--r--nixpkgs/pkgs/data/misc/fedora-backgrounds/generic.nix48
-rw-r--r--nixpkgs/pkgs/data/misc/freepats/default.nix25
-rw-r--r--nixpkgs/pkgs/data/misc/geolite-legacy/default.nix34
-rw-r--r--nixpkgs/pkgs/data/misc/graphs/default.nix25
-rw-r--r--nixpkgs/pkgs/data/misc/hackage/default.nix11
-rw-r--r--nixpkgs/pkgs/data/misc/hackage/pin.json6
-rw-r--r--nixpkgs/pkgs/data/misc/iana-etc/default.nix27
-rw-r--r--nixpkgs/pkgs/data/misc/libkkc-data/default.nix32
-rw-r--r--nixpkgs/pkgs/data/misc/mailcap/default.nix32
-rw-r--r--nixpkgs/pkgs/data/misc/media-player-info/default.nix28
-rw-r--r--nixpkgs/pkgs/data/misc/miscfiles/default.nix19
-rw-r--r--nixpkgs/pkgs/data/misc/mobile-broadband-provider-info/default.nix30
-rw-r--r--nixpkgs/pkgs/data/misc/nixos-artwork/default.nix5
-rw-r--r--nixpkgs/pkgs/data/misc/nixos-artwork/grub2-theme.nix5
-rw-r--r--nixpkgs/pkgs/data/misc/nixos-artwork/icons.nix25
-rw-r--r--nixpkgs/pkgs/data/misc/nixos-artwork/wallpapers.nix175
-rw-r--r--nixpkgs/pkgs/data/misc/osinfo-db/default.nix36
-rw-r--r--nixpkgs/pkgs/data/misc/papirus-folders/default.nix35
-rw-r--r--nixpkgs/pkgs/data/misc/pari-galdata/default.nix26
-rw-r--r--nixpkgs/pkgs/data/misc/pari-seadata-small/default.nix26
-rw-r--r--nixpkgs/pkgs/data/misc/polytopes_db/default.nix25
-rw-r--r--nixpkgs/pkgs/data/misc/poppler-data/default.nix30
-rw-r--r--nixpkgs/pkgs/data/misc/publicsuffix-list/default.nix31
-rw-r--r--nixpkgs/pkgs/data/misc/rime-data/default.nix66
-rw-r--r--nixpkgs/pkgs/data/misc/rime-data/fetchSchema.nix137
-rwxr-xr-xnixpkgs/pkgs/data/misc/rime-data/generateFetchSchema.sh43
-rw-r--r--nixpkgs/pkgs/data/misc/scowl/default.nix111
-rw-r--r--nixpkgs/pkgs/data/misc/shared-desktop-ontologies/default.nix26
-rw-r--r--nixpkgs/pkgs/data/misc/shared-mime-info/default.nix62
-rw-r--r--nixpkgs/pkgs/data/misc/shared-mime-info/fix-clang-warnings.patch31
-rw-r--r--nixpkgs/pkgs/data/misc/sing-geoip/default.nix61
-rw-r--r--nixpkgs/pkgs/data/misc/sing-geosite/default.nix50
-rw-r--r--nixpkgs/pkgs/data/misc/sing-geosite/main.go19
-rw-r--r--nixpkgs/pkgs/data/misc/sound-theme-freedesktop/default.nix21
-rw-r--r--nixpkgs/pkgs/data/misc/spdx-license-list-data/default.nix46
-rw-r--r--nixpkgs/pkgs/data/misc/tzdata/0001-Add-exe-extension-for-MS-Windows-binaries.patch15
-rw-r--r--nixpkgs/pkgs/data/misc/tzdata/default.nix79
-rw-r--r--nixpkgs/pkgs/data/misc/tzdata/tzdata-setup-hook.sh5
-rw-r--r--nixpkgs/pkgs/data/misc/unicode-character-database/default.nix36
-rw-r--r--nixpkgs/pkgs/data/misc/unicode-emoji/default.nix61
-rw-r--r--nixpkgs/pkgs/data/misc/unihan-database/default.nix36
-rw-r--r--nixpkgs/pkgs/data/misc/v2ray-domain-list-community/default.nix35
-rw-r--r--nixpkgs/pkgs/data/misc/v2ray-geoip/default.nix69
-rw-r--r--nixpkgs/pkgs/data/misc/wireless-regdb/default.nix26
-rw-r--r--nixpkgs/pkgs/data/misc/xorg-rgb/default.nix22
-rw-r--r--nixpkgs/pkgs/data/sgml+xml/schemas/docbook-5.0/default.nix36
-rw-r--r--nixpkgs/pkgs/data/sgml+xml/schemas/sgml-dtd/docbook/3.1.nix37
-rw-r--r--nixpkgs/pkgs/data/sgml+xml/schemas/sgml-dtd/docbook/4.1.nix37
-rw-r--r--nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook-ebnf/default.nix26
-rw-r--r--nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook-ebnf/docbook-ebnf.cat2
-rw-r--r--nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.1.2.nix22
-rw-r--r--nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.2.nix10
-rw-r--r--nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.3.nix10
-rw-r--r--nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.4.nix10
-rw-r--r--nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.5.nix10
-rw-r--r--nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/generic.nix25
-rw-r--r--nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/xhtml1/default.nix33
-rw-r--r--nixpkgs/pkgs/data/sgml+xml/stylesheets/xslt/docbook-xsl/catalog-legacy-uris.patch10
-rw-r--r--nixpkgs/pkgs/data/sgml+xml/stylesheets/xslt/docbook-xsl/default.nix91
-rw-r--r--nixpkgs/pkgs/data/sgml+xml/stylesheets/xslt/docbook-xsl/fix-man-options-duplication.patch11
-rw-r--r--nixpkgs/pkgs/data/soundfonts/fluid/default.nix25
-rw-r--r--nixpkgs/pkgs/data/soundfonts/generaluser/default.nix25
-rw-r--r--nixpkgs/pkgs/data/soundfonts/ydp-grand/default.nix23
-rw-r--r--nixpkgs/pkgs/data/themes/adapta-kde/default.nix23
-rw-r--r--nixpkgs/pkgs/data/themes/adapta/default.nix49
-rw-r--r--nixpkgs/pkgs/data/themes/adementary/default.nix36
-rw-r--r--nixpkgs/pkgs/data/themes/adi1090x-plymouth-themes/default.nix63
-rw-r--r--nixpkgs/pkgs/data/themes/adi1090x-plymouth-themes/shas.nix322
-rwxr-xr-xnixpkgs/pkgs/data/themes/adi1090x-plymouth-themes/update.sh28
-rw-r--r--nixpkgs/pkgs/data/themes/adw-gtk3/default.nix43
-rw-r--r--nixpkgs/pkgs/data/themes/adwaita-qt/default.nix66
-rw-r--r--nixpkgs/pkgs/data/themes/alacritty-theme/default.nix40
-rw-r--r--nixpkgs/pkgs/data/themes/albatross/default.nix27
-rw-r--r--nixpkgs/pkgs/data/themes/amber/default.nix27
-rw-r--r--nixpkgs/pkgs/data/themes/ant-theme/ant-bloody.nix34
-rw-r--r--nixpkgs/pkgs/data/themes/ant-theme/ant-nebula.nix34
-rw-r--r--nixpkgs/pkgs/data/themes/ant-theme/ant.nix34
-rw-r--r--nixpkgs/pkgs/data/themes/arc-kde/default.nix23
-rw-r--r--nixpkgs/pkgs/data/themes/arc/default.nix68
-rw-r--r--nixpkgs/pkgs/data/themes/artim-dark/default.nix35
-rw-r--r--nixpkgs/pkgs/data/themes/ayu-theme-gtk/default.nix68
-rw-r--r--nixpkgs/pkgs/data/themes/base16-schemes/default.nix29
-rw-r--r--nixpkgs/pkgs/data/themes/blackbird/default.nix25
-rw-r--r--nixpkgs/pkgs/data/themes/breath-theme/default.nix44
-rw-r--r--nixpkgs/pkgs/data/themes/canta/default.nix65
-rw-r--r--nixpkgs/pkgs/data/themes/catppuccin-gtk/default.nix87
-rwxr-xr-xnixpkgs/pkgs/data/themes/catppuccin-kde/color.sh61
-rw-r--r--nixpkgs/pkgs/data/themes/catppuccin-kde/default.nix62
-rw-r--r--nixpkgs/pkgs/data/themes/catppuccin-kvantum/default.nix38
-rw-r--r--nixpkgs/pkgs/data/themes/catppuccin-plymouth/default.nix43
-rw-r--r--nixpkgs/pkgs/data/themes/catppuccin-sddm-corners/default.nix36
-rw-r--r--nixpkgs/pkgs/data/themes/catppuccin/default.nix201
-rw-r--r--nixpkgs/pkgs/data/themes/chili-sddm/default.nix61
-rw-r--r--nixpkgs/pkgs/data/themes/clearlooks-phenix/default.nix33
-rw-r--r--nixpkgs/pkgs/data/themes/colloid-gtk-theme/default.nix73
-rw-r--r--nixpkgs/pkgs/data/themes/colloid-kde/default.nix69
-rw-r--r--nixpkgs/pkgs/data/themes/dracula-theme/default.nix48
-rw-r--r--nixpkgs/pkgs/data/themes/e17gtk/default.nix27
-rw-r--r--nixpkgs/pkgs/data/themes/equilux-theme/default.nix39
-rw-r--r--nixpkgs/pkgs/data/themes/flat-remix-gnome/default.nix45
-rw-r--r--nixpkgs/pkgs/data/themes/flat-remix-gtk/default.nix33
-rw-r--r--nixpkgs/pkgs/data/themes/fluent-gtk-theme/default.nix77
-rw-r--r--nixpkgs/pkgs/data/themes/graphite-gtk-theme/default.nix98
-rw-r--r--nixpkgs/pkgs/data/themes/graphite-kde-theme/default.nix60
-rw-r--r--nixpkgs/pkgs/data/themes/greybird/default.nix50
-rw-r--r--nixpkgs/pkgs/data/themes/gruvbox-dark-gtk/default.nix27
-rw-r--r--nixpkgs/pkgs/data/themes/gruvbox-gtk-theme/default.nix42
-rw-r--r--nixpkgs/pkgs/data/themes/gtk-theme-framework/default.nix36
-rw-r--r--nixpkgs/pkgs/data/themes/jade1/default.nix30
-rw-r--r--nixpkgs/pkgs/data/themes/juno/default.nix45
-rw-r--r--nixpkgs/pkgs/data/themes/kde-gruvbox/default.nix32
-rw-r--r--nixpkgs/pkgs/data/themes/kde2/default.nix30
-rw-r--r--nixpkgs/pkgs/data/themes/kwin-decorations/kde-rounded-corners/default.nix38
-rw-r--r--nixpkgs/pkgs/data/themes/kwin-decorations/sierra-breeze-enhanced/default.nix37
-rw-r--r--nixpkgs/pkgs/data/themes/layan-gtk-theme/default.nix38
-rw-r--r--nixpkgs/pkgs/data/themes/layan-kde/default.nix60
-rw-r--r--nixpkgs/pkgs/data/themes/lightly-boehs/default.nix42
-rw-r--r--nixpkgs/pkgs/data/themes/lightly-qt/default.nix42
-rw-r--r--nixpkgs/pkgs/data/themes/lounge/default.nix35
-rw-r--r--nixpkgs/pkgs/data/themes/marwaita-manjaro/default.nix47
-rw-r--r--nixpkgs/pkgs/data/themes/marwaita-peppermint/default.nix50
-rw-r--r--nixpkgs/pkgs/data/themes/marwaita-pop_os/default.nix50
-rw-r--r--nixpkgs/pkgs/data/themes/marwaita-ubuntu/default.nix50
-rw-r--r--nixpkgs/pkgs/data/themes/marwaita/default.nix50
-rw-r--r--nixpkgs/pkgs/data/themes/matcha/default.nix75
-rw-r--r--nixpkgs/pkgs/data/themes/materia-kde/default.nix23
-rw-r--r--nixpkgs/pkgs/data/themes/materia-theme/default.nix45
-rw-r--r--nixpkgs/pkgs/data/themes/material-kwin-decoration/default.nix59
-rw-r--r--nixpkgs/pkgs/data/themes/mojave/default.nix147
-rw-r--r--nixpkgs/pkgs/data/themes/nixos-bgrt-plymouth/default.nix40
-rw-r--r--nixpkgs/pkgs/data/themes/nordic/default.nix157
-rw-r--r--nixpkgs/pkgs/data/themes/numix-solarized/default.nix47
-rw-r--r--nixpkgs/pkgs/data/themes/numix-sx/default.nix30
-rw-r--r--nixpkgs/pkgs/data/themes/numix/default.nix41
-rw-r--r--nixpkgs/pkgs/data/themes/obsidian2/default.nix48
-rw-r--r--nixpkgs/pkgs/data/themes/omni-gtk-theme/default.nix34
-rw-r--r--nixpkgs/pkgs/data/themes/onestepback/default.nix37
-rw-r--r--nixpkgs/pkgs/data/themes/openzone/default.nix24
-rw-r--r--nixpkgs/pkgs/data/themes/orchis-theme/default.nix67
-rw-r--r--nixpkgs/pkgs/data/themes/orion/default.nix26
-rw-r--r--nixpkgs/pkgs/data/themes/paper-gtk/default.nix31
-rw-r--r--nixpkgs/pkgs/data/themes/pitch-black/default.nix30
-rw-r--r--nixpkgs/pkgs/data/themes/plano/default.nix46
-rw-r--r--nixpkgs/pkgs/data/themes/plasma-overdose-kde-theme/default.nix38
-rw-r--r--nixpkgs/pkgs/data/themes/plata/default.nix88
-rw-r--r--nixpkgs/pkgs/data/themes/pop-gtk/default.nix65
-rw-r--r--nixpkgs/pkgs/data/themes/qogir-kde/default.nix62
-rw-r--r--nixpkgs/pkgs/data/themes/qogir/default.nix86
-rw-r--r--nixpkgs/pkgs/data/themes/qtcurve/default.nix69
-rw-r--r--nixpkgs/pkgs/data/themes/rose-pine-gtk/default.nix53
-rw-r--r--nixpkgs/pkgs/data/themes/shades-of-gray/default.nix30
-rw-r--r--nixpkgs/pkgs/data/themes/sierra/default.nix74
-rw-r--r--nixpkgs/pkgs/data/themes/skeu/default.nix46
-rw-r--r--nixpkgs/pkgs/data/themes/snowblind/default.nix30
-rw-r--r--nixpkgs/pkgs/data/themes/solarc/default.nix31
-rw-r--r--nixpkgs/pkgs/data/themes/stilo/default.nix27
-rw-r--r--nixpkgs/pkgs/data/themes/sweet-nova/default.nix51
-rw-r--r--nixpkgs/pkgs/data/themes/sweet/default.nix51
-rw-r--r--nixpkgs/pkgs/data/themes/tokyo-night-gtk/default.nix38
-rw-r--r--nixpkgs/pkgs/data/themes/tokyo-night-gtk/generic.nix77
-rw-r--r--nixpkgs/pkgs/data/themes/tokyo-night-gtk/variants.json18
-rw-r--r--nixpkgs/pkgs/data/themes/ubuntu-themes/default.nix77
-rw-r--r--nixpkgs/pkgs/data/themes/utterly-nord-plasma/default.nix63
-rw-r--r--nixpkgs/pkgs/data/themes/utterly-round-plasma-style/default.nix40
-rw-r--r--nixpkgs/pkgs/data/themes/venta/default.nix47
-rw-r--r--nixpkgs/pkgs/data/themes/vertex/default.nix37
-rw-r--r--nixpkgs/pkgs/data/themes/vimix/default.nix77
-rw-r--r--nixpkgs/pkgs/data/themes/where-is-my-sddm-theme/default.nix50
-rw-r--r--nixpkgs/pkgs/data/themes/whitesur-kde/default.nix63
-rw-r--r--nixpkgs/pkgs/data/themes/whitesur/default.nix101
-rw-r--r--nixpkgs/pkgs/data/themes/yaru-remix/default.nix28
-rw-r--r--nixpkgs/pkgs/data/themes/yaru/default.nix44
-rw-r--r--nixpkgs/pkgs/data/themes/zuki/default.nix27
643 files changed, 26803 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/data/documentation/anarchism/default.nix b/nixpkgs/pkgs/data/documentation/anarchism/default.nix
new file mode 100644
index 000000000000..b9cedffa1948
--- /dev/null
+++ b/nixpkgs/pkgs/data/documentation/anarchism/default.nix
@@ -0,0 +1,43 @@
+{ lib, stdenv, fetchFromGitLab, xdg-utils }:
+
+stdenv.mkDerivation rec {
+  pname = "anarchism";
+  version = "15.3-1";
+
+  src = fetchFromGitLab {
+    domain = "salsa.debian.org";
+    owner = "debian";
+    repo = pname;
+    rev = "debian/${version}";
+    sha256 = "04ylk0y5b3jml2awmyz7m1hnymni8y1n83m0k6ychdh0px8frhm5";
+  };
+
+  postPatch = ''
+    substituteInPlace debian/anarchism.desktop \
+      --replace "/usr/bin/xdg-open" "${xdg-utils}/bin/xdg-open"
+    substituteInPlace debian/anarchism.desktop \
+      --replace "file:///usr" "file://$out"
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/doc/anarchism $out/share/applications $out/share/icons/hicolor/scalable/apps
+    cp -r {html,markdown} $out/share/doc/anarchism
+    cp debian/anarchism.svg $out/share/icons/hicolor/scalable/apps
+    cp debian/anarchism.desktop $out/share/applications
+  '';
+
+  meta = with lib; {
+    homepage = "http://www.anarchistfaq.org/";
+    changelog = "http://anarchism.pageabode.com/afaq/new.html";
+    description = "Exhaustive exploration of Anarchist theory and practice";
+    longDescription = ''
+      The Anarchist FAQ is an excellent source of information regarding Anarchist
+      (libertarian socialist) theory and practice. It covers all major topics,
+      from the basics of Anarchism to very specific discussions of politics,
+      social organization, and economics.
+    '';
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ davidak ];
+    platforms = with platforms; all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/documentation/bgnet/default.nix b/nixpkgs/pkgs/data/documentation/bgnet/default.nix
new file mode 100644
index 000000000000..a69a2d7a64f9
--- /dev/null
+++ b/nixpkgs/pkgs/data/documentation/bgnet/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, lib, fetchFromGitHub, python3, pandoc }:
+
+stdenv.mkDerivation {
+  pname = "bgnet";
+  # to be found in the Makefile
+  version = "3.1.2";
+
+  src = fetchFromGitHub {
+    owner = "beejjorgensen";
+    repo = "bgnet";
+    rev = "782a785a35d43c355951b8151628d7c64e4d0346";
+    sha256 = "19w0r3zr71ydd29amqwn8q3npgrpy5kkshyshyji2hw5hky6iy92";
+  };
+
+  buildPhase = ''
+    # build scripts need some love
+    patchShebangs bin/preproc
+
+    make -C src bgnet.html
+  '';
+
+  installPhase = ''
+    install -Dm644 src/bgnet.html $out/share/doc/bgnet/html/index.html
+  '';
+
+  nativeBuildInputs = [ python3 pandoc ];
+
+  meta = {
+    description = "Beej’s Guide to Network Programming";
+    homepage = "https://beej.us/guide/bgnet/";
+    license = lib.licenses.unfree;
+
+    maintainers = with lib.maintainers; [ Profpatsch ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/documentation/gnome-user-docs/default.nix b/nixpkgs/pkgs/data/documentation/gnome-user-docs/default.nix
new file mode 100644
index 000000000000..bfe64459f46b
--- /dev/null
+++ b/nixpkgs/pkgs/data/documentation/gnome-user-docs/default.nix
@@ -0,0 +1,41 @@
+{ lib, stdenv
+, fetchurl
+, gettext
+, gnome
+, itstool
+, libxml2
+, yelp-tools
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-user-docs";
+  version = "45.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-user-docs/${lib.versions.major version}/${pname}-${version}.tar.xz";
+    sha256 = "L5DGgntfFgXfLt++orNChwMAqamBvDktyWIU2WfzrfE=";
+  };
+
+  nativeBuildInputs = [
+    gettext
+    itstool
+    libxml2
+    yelp-tools
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = pname;
+    };
+  };
+
+  meta = with lib; {
+    description = "User and system administration help for the GNOME desktop";
+    homepage = "https://help.gnome.org/users/gnome-help/";
+    license = licenses.cc-by-30;
+    maintainers = teams.gnome.members;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/documentation/linux-manual/default.nix b/nixpkgs/pkgs/data/documentation/linux-manual/default.nix
new file mode 100644
index 000000000000..27690f9b99cd
--- /dev/null
+++ b/nixpkgs/pkgs/data/documentation/linux-manual/default.nix
@@ -0,0 +1,40 @@
+{ lib, stdenv, fetchurl, perl, linuxPackages_latest }:
+
+stdenv.mkDerivation rec {
+  pname = "linux-manual";
+  inherit (linuxPackages_latest.kernel) version src;
+
+  nativeBuildInputs = [ perl ];
+
+  dontConfigure = true;
+  dontBuild = true;
+
+  postPatch = ''
+    patchShebangs --build \
+      scripts/kernel-doc \
+      scripts/split-man.pl
+  '';
+
+  installPhase = ''
+    mandir=$out/share/man/man9
+    mkdir -p $mandir
+
+    KBUILD_BUILD_TIMESTAMP=$(stat -c %Y Makefile) \
+    grep -F -l -Z \
+      --exclude-dir Documentation \
+      --exclude-dir tools \
+      -R '/**' \
+      | xargs -0 -n 256 -P $NIX_BUILD_CORES \
+        $SHELL -c '{ scripts/kernel-doc -man "$@" || :; } \
+          | scripts/split-man.pl '$mandir kernel-doc
+
+    test -f $mandir/kmalloc.9
+  '';
+
+  meta = with lib; {
+    homepage = "https://kernel.org/";
+    description = "Linux kernel API manual pages";
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [ mvs ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/documentation/man-pages-posix/default.nix b/nixpkgs/pkgs/data/documentation/man-pages-posix/default.nix
new file mode 100644
index 000000000000..1d9ddda377b9
--- /dev/null
+++ b/nixpkgs/pkgs/data/documentation/man-pages-posix/default.nix
@@ -0,0 +1,27 @@
+{lib, stdenv, fetchurl}:
+
+let
+  year = "2017";
+  minor = "a";
+in
+
+stdenv.mkDerivation rec {
+  pname = "man-pages-posix";
+  version = "${year}${minor}";
+
+  src = fetchurl {
+    url = "mirror://kernel/linux/docs/man-pages/man-pages-posix/${pname}-${year}-${minor}.tar.xz";
+    sha256 = "ce67bb25b5048b20dad772e405a83f4bc70faf051afa289361c81f9660318bc3";
+  };
+
+  makeFlags = [
+    "MANDIR=${placeholder "out"}/share/man"
+  ];
+
+  meta = {
+    description = "POSIX man-pages (0p, 1p, 3p)";
+    homepage = "https://www.kernel.org/doc/man-pages/";
+    platforms = lib.platforms.unix;
+    maintainers = [ lib.maintainers.sternenseemann ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/documentation/man-pages/default.nix b/nixpkgs/pkgs/data/documentation/man-pages/default.nix
new file mode 100644
index 000000000000..5b33714fc258
--- /dev/null
+++ b/nixpkgs/pkgs/data/documentation/man-pages/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "man-pages";
+  version = "5.13";
+
+  src = fetchurl {
+    url = "mirror://kernel/linux/docs/man-pages/${pname}-${version}.tar.xz";
+    sha256 = "sha256-YU2uPv59/UgJhnY6KiqBeSFQMqWkUmwL5eiZol8Ja4s=";
+  };
+
+  makeFlags = [ "prefix=$(out)" ];
+  postInstall = ''
+    # conflict with shadow-utils
+    rm $out/share/man/man5/passwd.5 \
+       $out/share/man/man3/getspnam.3
+
+    # The manpath executable looks up manpages from PATH. And this package won't
+    # appear in PATH unless it has a /bin folder
+    mkdir -p $out/bin
+  '';
+  outputDocdev = "out";
+
+  meta = with lib; {
+    description = "Linux development manual pages";
+    homepage = "https://www.kernel.org/doc/man-pages/";
+    license = licenses.gpl2Plus;
+    platforms = with platforms; unix;
+    priority = 30; # if a package comes with its own man page, prefer it
+  };
+}
diff --git a/nixpkgs/pkgs/data/documentation/mustache-spec/default.nix b/nixpkgs/pkgs/data/documentation/mustache-spec/default.nix
new file mode 100644
index 000000000000..ce611c192f66
--- /dev/null
+++ b/nixpkgs/pkgs/data/documentation/mustache-spec/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, lib, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "mustache-spec";
+  version = "1.0.2";
+
+  src = fetchFromGitHub {
+    owner = "mustache";
+    repo = "mustache";
+    rev = "v${version}";
+    sha256 = "03xrfyjzm5ss6zkdlpl9ypwzcglspcdcnr3f94vj1rjfqm2rxcjw";
+  };
+
+  configurePhase = "";
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/{man/man5,doc/html}
+    cp man/mustache.5 $out/man/man5
+    cp man/mustache.5.html $out/doc/html
+  '';
+
+  meta = rec {
+    description = "Logic-less templates, specification package";
+    longDescription = ''
+      Inspired by ctemplate and et, Mustache is a framework-agnostic way to
+      render logic-free views.
+
+      Provides the specification as man page and html docs.
+
+      As ctemplates says, "It emphasizes separating logic from presentation: it
+      is impossible to embed application logic in this template language."
+
+      For a list of implementations and tips, see ${homepage}.
+    '';
+
+    homepage = "http://mustache.github.io/";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ Profpatsch ];
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/documentation/nginx-doc/default.nix b/nixpkgs/pkgs/data/documentation/nginx-doc/default.nix
new file mode 100644
index 000000000000..c367912d6f98
--- /dev/null
+++ b/nixpkgs/pkgs/data/documentation/nginx-doc/default.nix
@@ -0,0 +1,40 @@
+{ lib, stdenv, libxml2, libxslt, fetchhg }:
+
+# Upstream maintains documentation (sources of https://nginx.org) in separate
+# mercurial repository, which do not correspond to particular git commit, but at
+# least has "introduced in version X.Y" comments.
+#
+# In other words, documentation does not necessary matches capabilities of
+# $out/bin/nginx, but we have no better options.
+stdenv.mkDerivation {
+  pname = "nginx-doc-unstable";
+  version = "2022-05-05";
+  src = fetchhg {
+    url = "https://hg.nginx.org/nginx.org";
+    rev = "a3aee2697d4e";
+    sha256 = "029n4mnmjw94h01qalmjgf1c2h3h7wm798xv5knk3padxiy4m28b";
+  };
+  patches = [ ./exclude-google-analytics.patch ];
+  nativeBuildInputs = [ libxslt libxml2 ];
+
+  # Generated documentation is not local-friendly, since it assumes that link to directory
+  # is the same as link to index.html in that directory, which is not how browsers behave
+  # with local filesystem.
+  #
+  # TODO: patch all relative links that do not end with .html.
+
+  # /en subdirectory must exist, relative links expect it.
+  installPhase = ''
+    mkdir -p $out/share/doc/nginx
+    mv libxslt/en $out/share/doc/nginx
+  '';
+
+  meta = with lib; {
+    description = "A reverse proxy and lightweight webserver (documentation)";
+    homepage    = "https://nginx.org/";
+    license     = licenses.bsd2;
+    platforms   = platforms.all;
+    priority    = 6;
+    maintainers = with maintainers; [ kaction ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/documentation/nginx-doc/exclude-google-analytics.patch b/nixpkgs/pkgs/data/documentation/nginx-doc/exclude-google-analytics.patch
new file mode 100644
index 000000000000..c2f3f520c3d1
--- /dev/null
+++ b/nixpkgs/pkgs/data/documentation/nginx-doc/exclude-google-analytics.patch
@@ -0,0 +1,29 @@
+Kill google analytics from local documentation.
+
+diff -r bb0a2fbdc886 xslt/ga.xslt
+--- a/xslt/ga.xslt	Mon Apr 06 11:17:11 2020 +0100
++++ b/xslt/ga.xslt	Thu Apr 09 10:29:02 2020 -0400
+@@ -6,23 +6,6 @@
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+ 
+ <xsl:template name="ga">
+-
+-    <script>
+-        (function(w, d, s, l, i) {
+-            w[l] = w[l] || [];
+-            w[l].push({
+-                'gtm.start': new Date().getTime(),
+-                event: 'gtm.js'
+-            });
+-            var f = d.getElementsByTagName(s)[0],
+-                j = d.createElement(s),
+-                dl = l != 'dataLayer' ? '&amp;l=' + l : '';
+-            j.async = true;
+-            j.src = '//www.googletagmanager.com/gtm.js?id=' + i + dl;
+-            f.parentNode.insertBefore(j, f);
+-        })(window, document, 'script', 'dataLayer', 'GTM-TPSP33');
+-    </script>
+-
+ </xsl:template>
+ 
+ </xsl:stylesheet>
diff --git a/nixpkgs/pkgs/data/documentation/scheme-manpages/default.nix b/nixpkgs/pkgs/data/documentation/scheme-manpages/default.nix
new file mode 100644
index 000000000000..6eb1e3e74170
--- /dev/null
+++ b/nixpkgs/pkgs/data/documentation/scheme-manpages/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchFromGitHub, unstableGitUpdater }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "scheme-manpages";
+  version = "unstable-2023-08-27";
+
+  src = fetchFromGitHub {
+    owner = "schemedoc";
+    repo = "manpages";
+    rev = "44317b20616699b13b2b6276c86d796f4ae0c8dd";
+    hash = "sha256-qxj9sEQYOZ+me2IhDS5S2GRSho4KWWrEm+5MNxfw1VI=";
+  };
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/share/man
+    cp -r man3/ man7/ $out/share/man/
+  '';
+
+  passthru.updateScript = unstableGitUpdater { };
+
+  meta = with lib; {
+    description = "Unix manual pages for R6RS and R7RS";
+    homepage = "https://github.com/schemedoc/manpages";
+    license = licenses.mit;
+    maintainers = [ maintainers.marsam ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/documentation/std-man-pages/default.nix b/nixpkgs/pkgs/data/documentation/std-man-pages/default.nix
new file mode 100644
index 000000000000..1fd83700f85a
--- /dev/null
+++ b/nixpkgs/pkgs/data/documentation/std-man-pages/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, lib, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "std-man-pages";
+  version = "4.4.0";
+
+  src = fetchurl {
+    url = "mirror://gcc/libstdc++/doxygen/libstdc++-man.${version}.tar.bz2";
+    sha256 = "0153py77ll759jacq41dp2z2ksr08pdcfic0rwjd6pr84dk89y9v";
+  };
+
+  outputDevdoc = "out";
+
+  installPhase = ''
+    mkdir -p $out/share/man
+    cp -R * $out/share/man
+  '';
+
+  meta = with lib; {
+    description = "GCC C++ STD manual pages";
+    homepage = "https://gcc.gnu.org/";
+    license = with licenses; [ fdl13Plus ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/data/documentation/stdman/default.nix b/nixpkgs/pkgs/data/documentation/stdman/default.nix
new file mode 100644
index 000000000000..57e32d864053
--- /dev/null
+++ b/nixpkgs/pkgs/data/documentation/stdman/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenv, curl, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "stdman";
+  version = "2022.07.30";
+
+  src = fetchFromGitHub {
+    owner = "jeaye";
+    repo = "stdman";
+    rev = version;
+    sha256 = "sha256-ABogxVQS6p3wUV8GuB2tp7vMxe63t51dNoclEnYpa/0=";
+  };
+
+  outputDevdoc = "out";
+
+  preConfigure = "
+    patchShebangs ./configure
+    patchShebangs ./do_install
+  ";
+
+  buildInputs = [ curl ];
+
+  meta = with lib; {
+    description = "Formatted C++17 stdlib man pages (cppreference)";
+    longDescription = "stdman is a tool that parses archived HTML
+      files from cppreference and generates groff-formatted manual
+      pages for Unix-based systems. The goal is to provide excellent
+      formatting for easy readability.";
+    homepage = "https://github.com/jeaye/stdman";
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.twey ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/documentation/zeal/default.nix b/nixpkgs/pkgs/data/documentation/zeal/default.nix
new file mode 100644
index 000000000000..18f4d1319739
--- /dev/null
+++ b/nixpkgs/pkgs/data/documentation/zeal/default.nix
@@ -0,0 +1,79 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchpatch2
+, cmake
+, extra-cmake-modules
+, pkg-config
+, qtbase
+, qtimageformats
+, qtwebengine
+, qtx11extras
+, libarchive
+, libXdmcp
+, libpthreadstubs
+, wrapQtAppsHook
+, xcbutilkeysyms
+}:
+
+let
+  isQt5 = lib.versions.major qtbase.version == "5";
+
+in
+stdenv.mkDerivation (finalAttrs: {
+  pname = "zeal";
+  version = "0.7.0";
+
+  src = fetchFromGitHub {
+    owner = "zealdocs";
+    repo = "zeal";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-s1FaazHVtWE697BO0hIOgZVowdkq68R9x327ZnJRnlo=";
+  };
+
+  patches = [
+    # fix build with qt 6.6.0
+    # treewide: replace deprecated qAsConst with std::as_const()
+    # https://github.com/zealdocs/zeal/pull/1565
+    (fetchpatch2 {
+      url = "https://github.com/zealdocs/zeal/commit/d50a0115d58df2b222ede4c3a76b9686f4716465.patch";
+      hash = "sha256-Ub6RCZGpLSOjvK17Jrm+meZuZGXcC4kI3QYl5HbsLWU=";
+    })
+  ];
+
+  postPatch = ''
+    substituteInPlace CMakeLists.txt \
+      --replace 'ZEAL_VERSION_SUFFIX "-dev"' 'ZEAL_VERSION_SUFFIX ""'
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    extra-cmake-modules
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    libXdmcp
+    libarchive
+    libpthreadstubs
+    qtbase
+    qtimageformats
+    qtwebengine
+    xcbutilkeysyms
+  ]
+  ++ lib.optionals isQt5 [ qtx11extras ];
+
+  meta = {
+    description = "A simple offline API documentation browser";
+    longDescription = ''
+      Zeal is a simple offline API documentation browser inspired by Dash (macOS
+      app), available for Linux and Windows.
+    '';
+    homepage = "https://zealdocs.org/";
+    changelog = "https://github.com/zealdocs/zeal/releases";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ peterhoeg AndersonTorres ];
+    inherit (qtbase.meta) platforms;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/3270font/default.nix b/nixpkgs/pkgs/data/fonts/3270font/default.nix
new file mode 100644
index 000000000000..68bdd7e70d40
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/3270font/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "3270font";
+  version = "3.0.1";
+
+  src = fetchzip {
+    url = "https://github.com/rbanffy/3270font/releases/download/v${version}/3270_fonts_d916271.zip";
+    sha256 = "sha256-Zi6Lp5+sqfjIaHmnaaemaw3i+hXq9mqIsK/81lTkwfM=";
+    stripRoot = false;
+  };
+
+  dontPatch = true;
+  dontConfigure = true;
+  dontBuild = true;
+  doCheck = false;
+  dontFixup = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 -t $out/share/fonts/opentype/ *.otf
+    install -Dm644 -t $out/share/fonts/truetype/ *.ttf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Monospaced font based on IBM 3270 terminals";
+    homepage = "https://github.com/rbanffy/3270font";
+    changelog = "https://github.com/rbanffy/3270font/blob/v${version}/CHANGELOG.md";
+    license = [ licenses.bsd3 licenses.ofl ];
+    maintainers = [ maintainers.marsam ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/agave/default.nix b/nixpkgs/pkgs/data/fonts/agave/default.nix
new file mode 100644
index 000000000000..d2ecda3a1118
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/agave/default.nix
@@ -0,0 +1,37 @@
+{ lib, fetchurl, stdenv }:
+
+let
+  pname = "agave";
+  version = "37";
+
+  mkAg = name: hash: fetchurl {
+    url = "https://github.com/agarick/agave/releases/download/v${version}/Agave-${name}.ttf";
+    sha256 = hash;
+    name = "Agave-${name}.ttf";
+  };
+  # There are slashed variants, but with same name so only bundle the default versions for now:
+  fonts = [
+    (mkAg "Regular" "sha256-vX1VhEgqy9rQ7hPmAgBGxKyIs2QSAYqZC/mL/2BIOrA=")
+    (mkAg "Bold" "sha256-Ax/l/RKyc03law0ThiLac/7HHV4+YxibKzcZnjZs6VI=")
+  ];
+
+in stdenv.mkDerivation {
+  inherit pname version;
+  srcs = fonts;
+  sourceRoot = ".";
+
+  dontUnpack = true;
+
+  installPhase = ''
+    install -D $srcs -t $out/share/fonts/truetype/
+  '';
+
+  meta = with lib; {
+    description = "truetype monospaced typeface designed for X environments";
+    homepage = "https://b.agaric.net/page/agave";
+    license = licenses.mit;
+    maintainers = with maintainers; [ dtzWill ];
+    platforms = platforms.all;
+  };
+}
+
diff --git a/nixpkgs/pkgs/data/fonts/aileron/default.nix b/nixpkgs/pkgs/data/fonts/aileron/default.nix
new file mode 100644
index 000000000000..c52824dbe120
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/aileron/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+let
+  majorVersion = "0";
+  minorVersion = "102";
+in
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "aileron";
+  version = "${majorVersion}.${minorVersion}";
+
+  src = fetchzip {
+    url = "https://dotcolon.net/download/fonts/${finalAttrs.pname}_${majorVersion}${minorVersion}.zip";
+    hash = "sha256-Ht48gwJZrn0djo1yl6jHZ4+0b710FVwStiC1Zk5YXME=";
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://dotcolon.net/font/${finalAttrs.pname}/";
+    description = "A helvetica font in nine weights";
+    platforms = platforms.all;
+    maintainers = with maintainers; [ leenaars minijackson ];
+    license = licenses.cc0;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/alegreya-sans/default.nix b/nixpkgs/pkgs/data/fonts/alegreya-sans/default.nix
new file mode 100644
index 000000000000..cc0cd6cac9b9
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/alegreya-sans/default.nix
@@ -0,0 +1,37 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "alegreya-sans";
+  version = "2.008";
+
+  src = fetchFromGitHub {
+    owner = "huertatipografica";
+    repo = "Alegreya-Sans";
+    rev = "v${version}";
+    sha256 = "0xz5lq9fh0pj02ifazhddzh792qkxkz1z6ylj26d93wshc90jl5g";
+  };
+
+  installPhase = ''
+    install -D -m 444 fonts/otf/* -t $out/share/fonts/otf
+    install -D -m 444 fonts/ttf/* -t $out/share/fonts/ttf
+    install -D -m 444 fonts/webfonts/*.woff -t $out/share/fonts/woff
+    install -D -m 444 fonts/webfonts/*.woff2 -t $out/share/fonts/woff2
+  '';
+
+  meta = with lib; {
+    description = "Humanist sans serif family with a calligraphic feeling";
+    longDescription = ''
+Alegreya Sans is a humanist sans serif family with a calligraphic feeling that conveys a dynamic and varied rhythm. This gives a pleasant feeling to readers of long texts.
+
+The family follows humanist proportions and principles, just like the serif version of the family, Alegreya. It achieves a ludic and harmonious paragraph through elements carefully designed in an atmosphere of diversity. The italics bring a strong emphasis to the roman styles, and each have seven weights to bring you a wide typographic palette.
+
+Alegreya Sans supports expert latin, greek and cyrillic character sets and provides advanced typography OpenType features such as small caps, dynamic ligatures and fractions, four set of figures, super and subscript characters, ordinals, localized accent forms for spanish, catalan, guaraní, dutch, turkish, romanian, serbian among others.
+
+The Alegreya type system is a "super family", originally intended for literature, and includes sans and serif sister families.
+    '';
+    homepage = "https://www.huertatipografica.com/en/fonts/alegreya-sans-ht";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ Thra11 ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/alegreya/default.nix b/nixpkgs/pkgs/data/fonts/alegreya/default.nix
new file mode 100644
index 000000000000..b2ec1de0cc89
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/alegreya/default.nix
@@ -0,0 +1,43 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "alegreya";
+  version = "2.008";
+
+  src = fetchFromGitHub {
+    owner = "huertatipografica";
+    repo = "Alegreya";
+    rev = "v${version}";
+    sha256 = "1m5xr95y6qxxv2ryvhfck39d6q5hxsr51f530fshg53x48l2mpwr";
+  };
+
+  installPhase = ''
+    install -D -m 444 fonts/otf/* -t $out/share/fonts/otf
+    install -D -m 444 fonts/ttf/* -t $out/share/fonts/ttf
+    install -D -m 444 fonts/webfonts/*.woff -t $out/share/fonts/woff
+    install -D -m 444 fonts/webfonts/*.woff2 -t $out/share/fonts/woff2
+  '';
+
+  meta = with lib; {
+    description = "An elegant and versatile font family for comfortable reading";
+    longDescription = ''
+Alegreya is a typeface originally intended for literature. Among its crowning characteristics, it conveys a dynamic and varied rhythm which facilitates the reading of long texts. Also, it provides freshness to the page while referring to the calligraphic letter, not as a literal interpretation, but rather in a contemporary typographic language.
+
+The italic has just as much care and attention to detail in the design as the roman. The bold weights are strong, and the Black weights are really experimental for the genre. There is also a Small Caps sister family.
+
+Not only does Alegreya provide great performance, but also achieves a strong and harmonious text by means of elements designed in an atmosphere of diversity.
+
+The Alegreya type system is a "super family", originally intended for literature, and includes serif and sans serif sister families.
+
+It supports expert latin, greek and cyrillic character sets and provides advanced typography OpenType features such as small caps, dynamic ligatures and fractions, four set of figures, super and subscript characters, ordinals, localized accent forms for spanish, catalan, guaraní, dutch, turkish, romanian, serbian among others.
+
+Alegreya was chosen at the ATypI Letter2 competition in September 2011, and one of the top 14 text type systems. It was also selected in the 2nd Bienal Iberoamericana de Diseño, competition held in Madrid in 2010 and Tipos Latinos.
+
+Designed by Juan Pablo del Peral for Huerta Tipográfica.
+    '';
+    homepage = "https://www.huertatipografica.com/en/fonts/alegreya-ht-pro";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ Thra11 ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/alice/default.nix b/nixpkgs/pkgs/data/fonts/alice/default.nix
new file mode 100644
index 000000000000..985ba09926f4
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/alice/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenv, fetchzip }:
+
+stdenv.mkDerivation (attrs: {
+  pname = "Alice";
+  version = "2.003";
+
+  outputs = [ "out" "woff2" ];
+
+  src = fetchzip {
+    url = with attrs; "https://github.com/cyrealtype/${pname}/releases/download/v${version}/${pname}-v${version}.zip";
+    stripRoot = false;
+    hash = "sha256-p+tE3DECfJyBIPyafGZ8jDYQ1lPb+iAnEwLyaUy7DW0=";
+  };
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/truetype fonts/ttf/*.ttf
+    install -m444 -Dt $out/share/fonts/opentype fonts/otf/*.otf
+    install -m444 -Dt $woff2/share/fonts/woff2 fonts/webfonts/*.woff2
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Open-source font by Ksenia Erulevich";
+    homepage = "https://github.com/cyrealtype/Alice";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ ncfavier ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/alkalami/default.nix b/nixpkgs/pkgs/data/fonts/alkalami/default.nix
new file mode 100644
index 000000000000..eb0c3ed79262
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/alkalami/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "alkalami";
+  version = "3.000";
+
+  src = fetchzip {
+    url = "https://software.sil.org/downloads/r/alkalami/Alkalami-${version}.zip";
+    hash = "sha256-ra664VbUKc8XpULCWhLMVnc1mW4pqZvbvwuBvRQRhcY=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/{doc/${pname},fonts/truetype}
+    mv *.ttf $out/share/fonts/truetype/
+    mv *.txt documentation $out/share/doc/${pname}/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://software.sil.org/alkalami/";
+    description = "A font for Arabic-based writing systems in the Kano region of Nigeria and in Niger";
+    license = licenses.ofl;
+    maintainers = [ maintainers.vbgl ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/amiri/default.nix b/nixpkgs/pkgs/data/fonts/amiri/default.nix
new file mode 100644
index 000000000000..bfd7c60bf531
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/amiri/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "amiri";
+  version = "1.000";
+
+  src = fetchzip {
+    url = "https://github.com/alif-type/amiri/releases/download/${version}/Amiri-${version}.zip";
+    hash = "sha256-WXxKLYIIKe01WWZrI1aLOv65wRgn7aqHl6Codf4foVw=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    mv *.ttf $out/share/fonts/truetype/
+    mkdir -p $out/share/doc/${pname}-${version}
+    mv {*.html,*.txt,*.md} $out/share/doc/${pname}-${version}/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A classical Arabic typeface in Naskh style";
+    homepage = "https://www.amirifont.org/";
+    license = licenses.ofl;
+    maintainers = [ maintainers.vbgl ];
+    platforms = platforms.all;
+  };
+}
+
diff --git a/nixpkgs/pkgs/data/fonts/andagii/default.nix b/nixpkgs/pkgs/data/fonts/andagii/default.nix
new file mode 100644
index 000000000000..22b686684f98
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/andagii/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "andagii";
+  version = "1.0.2";
+
+  src = fetchzip {
+    url = "http://www.i18nguy.com/unicode/andagii.zip";
+    curlOpts = "--user-agent 'Mozilla/5.0'";
+    hash = "sha256-U7wC55G8jIvMMyPcEiJQ700A7nkWdgWK1LM0F/wgDCg=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp -v ANDAGII_.TTF $out/share/fonts/truetype/andagii.ttf
+
+    runHook postInstall
+  '';
+
+  # There are multiple claims that the font is GPL, so I include the
+  # package; but I cannot find the original source, so use it on your
+  # own risk Debian claims it is GPL - good enough for me.
+  meta = with lib; {
+    homepage = "http://www.i18nguy.com/unicode/unicode-font.html";
+    description = "Unicode Plane 1 Osmanya script font";
+    maintainers = with maintainers; [ raskin ];
+    license = "unknown";
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/andika/default.nix b/nixpkgs/pkgs/data/fonts/andika/default.nix
new file mode 100644
index 000000000000..22900b4b7fcd
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/andika/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "andika";
+  version = "6.200";
+
+  src = fetchzip {
+    url = "https://software.sil.org/downloads/r/andika/Andika-${version}.zip";
+    hash = "sha256-Ge+Yq3+1IJ+mXhjw7Vtpu5DIWiMfwOdEH/S1RSzYh3A=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+    install -Dm644 OFL.txt OFL-FAQ.txt README.txt FONTLOG.txt -t $out/share/doc/${pname}-${version}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://software.sil.org/andika";
+    description = "A family designed especially for literacy use taking into account the needs of beginning readers";
+    longDescription = ''
+      Andika is a sans serif, Unicode-compliant font designed especially for literacy use, taking into account the needs of beginning readers. The focus is on clear, easy-to-perceive letterforms that will not be readily confused with one another.
+
+      A sans serif font is preferred by some literacy personnel for teaching people to read. Its forms are simpler and less cluttered than those of most serif fonts. For years, literacy workers have had to make do with fonts that were not really suitable for beginning readers and writers. In some cases, literacy specialists have had to tediously assemble letters from a variety of fonts in order to get all of the characters they need for their particular language project, resulting in confusing and unattractive publications. Andika addresses those issues.
+    '';
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.f--t ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/ankacoder/condensed.nix b/nixpkgs/pkgs/data/fonts/ankacoder/condensed.nix
new file mode 100644
index 000000000000..676c3cf85602
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ankacoder/condensed.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "ankacoder-condensed";
+  version = "1.100";
+
+  src = fetchzip {
+    url = "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/anka-coder-fonts/AnkaCoderCondensed.${version}.zip";
+    stripRoot = false;
+    hash = "sha256-NHrkV4Sb7i+DC4e4lToEYzah3pI+sKyYf2rGbhWj7iY=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp *.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Anka/Coder Condensed font";
+    homepage = "https://code.google.com/archive/p/anka-coder-fonts";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ dtzWill ];
+    platforms = platforms.all;
+  };
+}
+
diff --git a/nixpkgs/pkgs/data/fonts/ankacoder/default.nix b/nixpkgs/pkgs/data/fonts/ankacoder/default.nix
new file mode 100644
index 000000000000..c363f025bfd2
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ankacoder/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "ankacoder";
+  version = "1.100";
+
+  src = fetchzip {
+    url = "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/anka-coder-fonts/AnkaCoder.${version}.zip";
+    stripRoot = false;
+    hash = "sha256-14ItaSQ/fO/WDq0O4SXGWnZgiM0kayJrWQgsKb7bsyY=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp *.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Anka/Coder fonts";
+    homepage = "https://code.google.com/archive/p/anka-coder-fonts";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ dtzWill ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/annapurna-sil/default.nix b/nixpkgs/pkgs/data/fonts/annapurna-sil/default.nix
new file mode 100644
index 000000000000..606b0f0161c2
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/annapurna-sil/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "annapurna-sil";
+  version = "2.000";
+
+  src = fetchzip {
+    url = "https://software.sil.org/downloads/r/annapurna/AnnapurnaSIL-${version}.zip";
+    hash = "sha256-tvh1E9uGCikJgjmbn28gD7rUgBdKjtvdwgoRIeccGq8=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+    install -Dm644 OFL.txt OFL-FAQ.txt README.txt FONTLOG.txt -t $out/share/doc/${pname}-${version}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://software.sil.org/annapurna";
+    description = "Unicode-based font family with broad support for writing systems that use the Devanagari script";
+    longDescription = ''
+      Annapurna SIL is a Unicode-based font family with broad support for writing systems that use the Devanagari script. Inspired by traditional calligraphic forms, the design is intended to be highly readable, reasonably compact, and visually attractive.
+    '';
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.kmein ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/anonymous-pro/default.nix b/nixpkgs/pkgs/data/fonts/anonymous-pro/default.nix
new file mode 100644
index 000000000000..f498e2780b3c
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/anonymous-pro/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "anonymouspro";
+  version = "1.002";
+
+  src = fetchzip {
+    url = "https://www.marksimonson.com/assets/content/fonts/AnonymousPro-${lib.replaceStrings ["."] ["_"] version}.zip";
+    hash = "sha256-FhyzV4By8XKN9EyukAknzml/7lUuV6Evnt6Ht3H6TUU=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+    install -Dm644 *.txt -t $out/share/doc/${pname}-${version}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.marksimonson.com/fonts/view/anonymous-pro";
+    description = "TrueType font set intended for source code";
+    longDescription = ''
+      Anonymous Pro (2009) is a family of four fixed-width fonts
+      designed with coding in mind. Anonymous Pro features an
+      international, Unicode-based character set, with support for
+      most Western and Central European Latin-based languages, plus
+      Greek and Cyrillic. It is designed by Mark Simonson.
+    '';
+    maintainers = with maintainers; [ raskin ];
+    license = licenses.ofl;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/apl386/default.nix b/nixpkgs/pkgs/data/fonts/apl386/default.nix
new file mode 100644
index 000000000000..15c61d41aa69
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/apl386/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation {
+  pname = "apl386";
+  version = "unstable-2022-03-07";
+
+  src = fetchFromGitHub {
+    owner = "abrudz";
+    repo = "APL386";
+    rev = "6332c9dbb588946a0e8c9d7984dd0c003eeea266";
+    hash = "sha256-oHk4e7NRgAjGtZzQmZToYz7wCZETaj7/yRwZMeeYF2M=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm444 -t $out/share/fonts/truetype *.ttf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    homepage = "https://abrudz.github.io/APL386/";
+    description = "APL385 Unicode font evolved";
+    license = lib.licenses.unlicense;
+    maintainers = with lib.maintainers; [ ];
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/arkpandora/default.nix b/nixpkgs/pkgs/data/fonts/arkpandora/default.nix
new file mode 100644
index 000000000000..81a175b944b8
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/arkpandora/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "arkpandora";
+  version = "2.04";
+
+  src = fetchurl {
+    urls = [
+      "http://distcache.FreeBSD.org/ports-distfiles/ttf-arkpandora-${version}.tgz"
+      "ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ttf-arkpandora-${version}.tgz"
+      "http://www.users.bigpond.net.au/gavindi/ttf-arkpandora-${version}.tgz"
+    ];
+    hash = "sha256-ofyVPJjQD8w+8WgETF2UcJlfbSsKQgBsH3ob+yjvrpo=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp *.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Font, metrically identical to Arial and Times New Roman";
+    license = lib.licenses.bitstreamVera;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/arphic/default.nix b/nixpkgs/pkgs/data/fonts/arphic/default.nix
new file mode 100644
index 000000000000..ed55855e4347
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/arphic/default.nix
@@ -0,0 +1,76 @@
+{ lib, stdenvNoCC, fetchurl, mkfontdir, mkfontscale }:
+
+let
+  version = "0.2.20080216.2";
+in
+{
+  arphic-ukai = stdenvNoCC.mkDerivation rec {
+    pname = "arphic-ukai";
+    inherit version;
+
+    src = fetchurl {
+      url = "mirror://ubuntu/pool/main/f/fonts-${pname}/fonts-${pname}_${version}.orig.tar.bz2";
+      hash = "sha256-tJaNc1GfT4dH6FVI+4XSG2Zdob8bqQCnxJmXbmqK49I=";
+    };
+
+    nativeBuildInputs = [
+      mkfontscale
+      mkfontdir
+    ];
+
+    installPhase = ''
+      runHook preInstall
+
+      install -D -v ukai.ttc $out/share/fonts/truetype/arphic-ukai.ttc
+      cd $out/share/fonts
+      mkfontdir
+      mkfontscale
+
+      runHook postInstall
+    '';
+
+    meta = with lib; {
+      description = "CJK Unicode font Kai style";
+      homepage = "https://www.freedesktop.org/wiki/Software/CJKUnifonts/";
+
+      license = licenses.arphicpl;
+      maintainers = [ maintainers.changlinli ];
+      platforms = platforms.all;
+    };
+  };
+
+  arphic-uming = stdenvNoCC.mkDerivation rec {
+    pname = "arphic-uming";
+    inherit version;
+
+    src = fetchurl {
+      url = "mirror://ubuntu/pool/main/f/fonts-${pname}/fonts-${pname}_${version}.orig.tar.bz2";
+      hash = "sha256-48GeBOp6VltKz/bx5CSAhNLhB1LjBb991sdugIYNwds=";
+    };
+
+    nativeBuildInputs = [
+      mkfontscale
+      mkfontdir
+    ];
+
+    installPhase = ''
+      runHook preInstall
+
+      install -D -v uming.ttc $out/share/fonts/truetype/arphic-uming.ttc
+      cd $out/share/fonts
+      mkfontdir
+      mkfontscale
+
+      runHook postInstall
+    '';
+
+    meta = with lib; {
+      description = "CJK Unicode font Ming style";
+      homepage = "https://www.freedesktop.org/wiki/Software/CJKUnifonts/";
+
+      license = licenses.arphicpl;
+      maintainers = [ maintainers.changlinli ];
+      platforms = platforms.all;
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/atkinson-hyperlegible/default.nix b/nixpkgs/pkgs/data/fonts/atkinson-hyperlegible/default.nix
new file mode 100644
index 000000000000..e8b09cfb637c
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/atkinson-hyperlegible/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation {
+  pname = "atkinson-hyperlegible";
+  version = "unstable-2021-04-29";
+
+  src = fetchFromGitHub {
+    owner = "googlefonts";
+    repo = "atkinson-hyperlegible";
+    rev = "1cb311624b2ddf88e9e37873999d165a8cd28b46";
+    hash = "sha256-RN4m5gyY2OiPzRXgFVQ3pq6JdkPcMxV4fRlX2EK+gOM=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 -t $out/share/fonts/opentype fonts/otf/*
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Typeface designed to offer greater legibility and readability for low vision readers";
+    homepage = "https://brailleinstitute.org/freefont";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ zhaofengli ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/aurulent-sans/default.nix b/nixpkgs/pkgs/data/fonts/aurulent-sans/default.nix
new file mode 100644
index 000000000000..f1ee19b3b157
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/aurulent-sans/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "aurulent-sans";
+  version = "0.1";
+
+  src = fetchFromGitHub {
+    owner = "deepfire";
+    repo = "hartke-aurulent-sans";
+    rev = "${pname}-${version}";
+    hash = "sha256-M/duhgqxXZJq5su9FrsGjZdm+wtO5B5meoDomde+GwY=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.otf -t $out/share/fonts
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Aurulent Sans";
+    longDescription = "Aurulent Sans is a humanist sans serif intended to be used as an interface font.";
+    homepage = "http://delubrum.org/";
+    maintainers = with lib.maintainers; [ deepfire ];
+    license = lib.licenses.ofl;
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/azeret-mono/default.nix b/nixpkgs/pkgs/data/fonts/azeret-mono/default.nix
new file mode 100644
index 000000000000..dfaf98c965d2
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/azeret-mono/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation {
+  pname = "azeret-mono";
+  version = "1.0";
+
+  src = fetchFromGitHub {
+    owner = "displaay";
+    repo = "Azeret";
+    rev = "3d45a6c3e094f08bfc70551b525bd2037cac51ba";
+    hash = "sha256-WC5a2O+/hdX+lLz81obcmq64wYpX48ZxsYPEaZUbFaY=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 fonts/ttf/*.ttf -t $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Azeret Mono";
+    longDescription = ''
+      The story of the typeface began with a draft that was driven by an exploration of OCR fonts, past and futuristic operating systems, various interfaces and the nineties. The final result is more based on a desire to achieve an appearance of the typeface that could serve in operating systems. Thus the overall character is a conjunction of everything described with details that evoke a specific personality.
+
+      Azeret is a sans-serif typeface with a mono-linear character. Don’t go looking for too much contrast in the strokes! The circular parts of the letters do not have a smooth connection to the stems. The x-height is higher than usual and thus the ascenders and descenders are short. Alternates are also available which open the possibility of creating different moods. A number of them hint at a nineties aesthetic.
+
+      The monospaced sub-family is available for free and is also on Google Fonts. If you would like to explore Azeret more you can do it on our micro-site which we developed with Martin Ehrlich.
+
+      Designer: Martin Vácha, Daniel Quisek
+      Production: Renegade Fonts (Jan Charvát, Zuzana Konečná)
+    '';
+    homepage = "https://displaay.net/typeface/azeret/azeret-mono/";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ _21eleven ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/b612/default.nix b/nixpkgs/pkgs/data/fonts/b612/default.nix
new file mode 100644
index 000000000000..b78f3a9e85bf
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/b612/default.nix
@@ -0,0 +1,44 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "b612";
+  version = "1.008";
+
+  src = fetchFromGitHub {
+    owner = "polarsys";
+    repo = "b612";
+    rev = version;
+    hash = "sha256-uyBC8UNOwztCHXhR9XZuWDwrty0eClbo0E+gI1PmjEg=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    mv fonts/ttf/*.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://b612-font.com/";
+    description = "Highly legible font family for use on aircraft cockpit screens";
+    longDescription = ''
+      B612 is the result of a research project initiated by Airbus. The font
+      was designed by Nicolas Chauveau and Thomas Paillot (intactile DESIGN) with the
+      support of Jean‑Luc Vinot (ENAC). Prior research by Jean‑Luc Vinot (DGAC/DSNA)
+      and Sylvie Athènes (Université de Toulouse III). The challenge for the
+      "Aeronautical Font" was to improve the display of information on the cockpit
+      screens, in particular in terms of legibility and comfort of reading, and to
+      optimize the overall homogeneity of the cockpit.
+
+      Intactile DESIGN was hired to work on the design of eight typographic
+      variants of the font. This one, baptized B612 in reference to the
+      imaginary asteroid of the aviator Saint‑Exupéry, benefited from a complete
+      hinting on all the characters.
+    '';
+    license = with licenses; [ ofl epl10 bsd3 ];
+    maintainers = with maintainers; [ leenaars ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/babelstone-han/default.nix b/nixpkgs/pkgs/data/fonts/babelstone-han/default.nix
new file mode 100644
index 000000000000..9839295653d1
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/babelstone-han/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation {
+  pname = "babelstone-han";
+  version = "13.0.3";
+
+  src = fetchzip {
+    # upstream download links are unversioned, so hash changes
+    url = "https://web.archive.org/web/20200210125314/https://www.babelstone.co.uk/Fonts/Download/BabelStoneHan.zip";
+    hash = "sha256-LLhNtHu2hh5DY2XVSrLuVzzR6OtMdSSHetyA0k1IFs0=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp *.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Unicode CJK font with over 36000 Han characters";
+    homepage = "https://www.babelstone.co.uk/Fonts/Han.html";
+
+    license = licenses.free;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ emily ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/baekmuk-ttf/default.nix b/nixpkgs/pkgs/data/fonts/baekmuk-ttf/default.nix
new file mode 100644
index 000000000000..3777f69fa567
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/baekmuk-ttf/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "baekmuk-ttf";
+  version = "2.2";
+
+  src = fetchurl {
+    url = "http://kldp.net/baekmuk/release/865-${pname}-${version}.tar.gz";
+    hash = "sha256-CKt9/7VdWIfMlCzjcPXjO3VqVfu06vC5DyRAcOjVGII=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts        ttf/*.ttf
+    install -m444 -Dt $out/share/doc/${pname}-${version}  COPYRIGHT*
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Korean font";
+    homepage = "http://kldp.net/projects/baekmuk/";
+    license = "BSD-like";
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/bakoma-ttf/default.nix b/nixpkgs/pkgs/data/fonts/bakoma-ttf/default.nix
new file mode 100644
index 000000000000..1d305674e6aa
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/bakoma-ttf/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "bakoma-ttf";
+  version = "2.2";
+
+  src = fetchurl {
+    name = "${pname}.tar.bz2";
+    url = "http://tarballs.nixos.org/sha256/1j1y3cq6ys30m734axc0brdm2q9n2as4h32jws15r7w5fwr991km";
+    hash = "sha256-dYaUMneFn1yC5lIMSLQSNmFRW16AdUXGqWBobzAbPsg=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp ttf/*.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "TrueType versions of the Computer Modern and AMS TeX Fonts";
+    homepage = "http://www.ctan.org/tex-archive/fonts/cm/ps-type1/bakoma/ttf/";
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/barlow/default.nix b/nixpkgs/pkgs/data/fonts/barlow/default.nix
new file mode 100644
index 000000000000..e9bfa4dee375
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/barlow/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "barlow";
+  version = "1.422";
+
+  src = fetchzip {
+    url = "https://tribby.com/fonts/barlow/download/barlow-${version}.zip";
+    stripRoot = false;
+    hash = "sha256-aHAGPEgBkH41r7HR0D74OGCa7ta7Uo8Mgq4YVtYOwU8=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 fonts/otf/*.otf -t $out/share/fonts/opentype
+    install -Dm644 fonts/ttf/*.ttf fonts/gx/*.ttf -t $out/share/fonts/truetype
+    install -Dm644 fonts/eot/*.eot -t $out/share/fonts/eot
+    install -Dm644 fonts/woff/*.woff -t $out/share/fonts/woff
+    install -Dm644 fonts/woff2/*.woff2 -t $out/share/fonts/woff2
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A grotesk variable font superfamily";
+    homepage = "https://tribby.com/fonts/barlow/";
+    license = licenses.ofl;
+    maintainers = [ maintainers.marsam ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/behdad-fonts/default.nix b/nixpkgs/pkgs/data/fonts/behdad-fonts/default.nix
new file mode 100644
index 000000000000..143975f28db7
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/behdad-fonts/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "behdad-fonts";
+  version = "0.0.3";
+
+  src = fetchFromGitHub {
+    owner = "font-store";
+    repo = "BehdadFont";
+    rev = "v${version}";
+    hash = "sha256-gKfzxo3/bCMKXl2d6SP07ahIiNrUyrk/SN5XLND2lWY=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    find . -name '*.ttf' -exec install -m444 -Dt $out/share/fonts/behrad-fonts {} \;
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/font-store/BehdadFont";
+    description = "A Persian/Arabic Open Source Font";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/blackout/default.nix b/nixpkgs/pkgs/data/fonts/blackout/default.nix
new file mode 100644
index 000000000000..44cb10b408e9
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/blackout/default.nix
@@ -0,0 +1,36 @@
+{ lib, fetchFromGitHub, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "blackout";
+  version = "2014-07-29";
+
+  src = fetchFromGitHub {
+    owner = "theleagueof";
+    repo = finalAttrs.pname;
+    rev = "4864cfc1749590e9f78549c6e57116fe98480c0f";
+    hash = "sha256-UmJVmtuPQYW/w+mdnJw9Ql4R1xf/07l+/Ky1wX9WKqw=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/truetype $src/*.ttf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A bad-ass, unholy-mother-shut-your-mouth stencil sans-serif";
+    longDescription = ''
+      Eats holes for breakfast lunch and dinner. Inspired by filling in
+      sans-serif newspaper headlines. Continually updated with coffee and
+      music. Makes your work louder than the next person’s.
+
+      Comes in three styles: Midnight (solid), 2AM (reversed), & Sunrise
+      (stroked).
+    '';
+    homepage = "https://www.theleagueofmoveabletype.com/blackout";
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ minijackson ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/borg-sans-mono/default.nix b/nixpkgs/pkgs/data/fonts/borg-sans-mono/default.nix
new file mode 100644
index 000000000000..8037e5dc645f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/borg-sans-mono/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation {
+  pname = "borg-sans-mono";
+  version = "0.2.0";
+
+  src = fetchzip {
+    # https://github.com/marnen/borg-sans-mono/issues/19
+    url = "https://github.com/marnen/borg-sans-mono/files/107663/BorgSansMono.ttf.zip";
+    hash = "sha256-nn7TGeVm45t7QI8+eEREBTFg9aShYYKtdEYEwQwO2fQ=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Droid Sans Mono Slashed + Hasklig-style ligatures";
+    homepage = "https://github.com/marnen/borg-sans-mono";
+    license = licenses.asl20;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ atila ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/bqn386/default.nix b/nixpkgs/pkgs/data/fonts/bqn386/default.nix
new file mode 100644
index 000000000000..de1be0cc6f55
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/bqn386/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation {
+  pname = "bqn386";
+  version = "unstable-2022-05-16";
+
+  src = fetchFromGitHub {
+    owner = "dzaima";
+    repo = "BQN386";
+    rev = "81e18d1eb8cb6b66df9e311b3b63ec086d910d18";
+    hash = "sha256-f0MbrxdkEiOqod41U07BvdDFDbFCqJuGyDIcx2Y24D0=";
+  };
+
+  outputs = [ "out" "woff2" ];
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm444 -t $out/share/fonts/truetype *.ttf
+    install -Dm444 -t $woff2/share/fonts/woff2 *.woff2
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "An APL and BQN font extending on APL386";
+    homepage = "https://dzaima.github.io/BQN386/";
+    license = lib.licenses.unlicense;
+    maintainers = with lib.maintainers; [ skykanin ];
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/bront/default.nix b/nixpkgs/pkgs/data/fonts/bront/default.nix
new file mode 100644
index 000000000000..d21c820f127b
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/bront/default.nix
@@ -0,0 +1,26 @@
+{ stdenvNoCC, lib, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation {
+  pname = "bront_fonts";
+  version = "unstable-2015-06-28";
+
+  src = fetchFromGitHub {
+    owner = "chrismwendt";
+    repo = "bront";
+    rev = "aef23d9a11416655a8351230edb3c2377061c077";
+    sha256 = "1sx2gv19pgdyccb38sx3qnwszksmva7pqa1c8m35s6cipgjhhgb4";
+  };
+
+  installPhase = ''
+    install -m444 -Dt $out/share/fonts/truetype *Bront.ttf
+  '';
+
+  meta = with lib; {
+    description = "Bront Fonts";
+    longDescription = "Ubuntu Mono Bront and DejaVu Sans Mono Bront fonts.";
+    homepage = "https://github.com/chrismwendt/bront";
+    license = licenses.free;
+    platforms = platforms.all;
+    maintainers = [ maintainers.grburst ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/cabin/default.nix b/nixpkgs/pkgs/data/fonts/cabin/default.nix
new file mode 100644
index 000000000000..186a5359c44f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/cabin/default.nix
@@ -0,0 +1,42 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "cabin";
+  version = "1.005";
+
+  src = fetchFromGitHub {
+    owner = "impallari";
+    repo = "Cabin";
+    rev = "982839c790e9dc57c343972aa34c51ed3b3677fd";
+    hash = "sha256-9l4QcwCot340Bq41ER68HSZGQ9h0opyzgG3DG/fVZ5s=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/opentype fonts/OTF/*.otf
+    install -m444 -Dt $out/share/doc/${pname}-${version} README.md FONTLOG.txt
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A humanist sans with 4 weights and true italics";
+    longDescription = ''
+      The Cabin font family is a humanist sans with 4 weights and true italics,
+      inspired by Edward Johnston’s and Eric Gill’s typefaces, with a touch of
+      modernism. Cabin incorporates modern proportions, optical adjustments, and
+      some elements of the geometric sans. It remains true to its roots, but has
+      its own personality.
+
+      The weight distribution is almost monotone, although top and bottom curves
+      are slightly thin. Counters of the b, g, p and q are rounded and optically
+      adjusted. The curved stem endings have a 10 degree angle. E and F have
+      shorter center arms. M is splashed.
+    '';
+    homepage = "http://www.impallari.com/cabin";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ cmfwyp ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/caladea/cambria-alias.conf b/nixpkgs/pkgs/data/fonts/caladea/cambria-alias.conf
new file mode 100644
index 000000000000..78452961e8e9
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/caladea/cambria-alias.conf
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+<fontconfig>
+  <!-- Configure Caladea as a metric-compatible alias for the
+       Microsoft Cambria font family. -->
+  <alias binding="same">
+    <family>Cambria</family>
+    <accept>
+      <family>Caladea</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Caladea</family>
+    <default>
+      <family>Cambria</family>
+    </default>
+  </alias>
+</fontconfig>
diff --git a/nixpkgs/pkgs/data/fonts/caladea/default.nix b/nixpkgs/pkgs/data/fonts/caladea/default.nix
new file mode 100644
index 000000000000..bd00e807309a
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/caladea/default.nix
@@ -0,0 +1,42 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "caladea";
+  version = "20130214";
+
+  src = fetchurl {
+    url = "https://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/crosextrafonts-${version}.tar.gz";
+    hash = "sha256-xI0cL9YTycBslZw02nuDiAWeJAjSuxmEXcPtNfduTQk=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/etc/fonts/conf.d
+    mkdir -p $out/share/fonts/truetype
+    cp -v *.ttf $out/share/fonts/truetype
+    cp -v ${./cambria-alias.conf} $out/etc/fonts/conf.d/30-cambria.conf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    # This font doesn't appear to have any official web site but this
+    # one provides some good information and samples.
+    homepage = "http://openfontlibrary.org/en/font/caladea";
+    description = "A serif font metric-compatible with Microsoft Cambria";
+    longDescription = ''
+      Caladea is a free font that is metric-compatible with the
+      Microsoft Cambria font. Developed by Carolina Giovagnoli and
+      Andrés Torresi at Huerta Tipográfica foundry.
+    '';
+    license = licenses.asl20;
+    platforms = platforms.all;
+    maintainers = [ maintainers.rycee ];
+
+    # Reduce the priority of this package. The intent is that if you
+    # also install the `vista-fonts` package, then you probably will
+    # not want to install the font alias of this package.
+    priority = 10;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/camingo-code/default.nix b/nixpkgs/pkgs/data/fonts/camingo-code/default.nix
new file mode 100644
index 000000000000..c852303021d0
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/camingo-code/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "camingo-code";
+  version = "1.0";
+
+  src = fetchzip {
+    url = "https://github.com/chrissimpkins/codeface/releases/download/font-collection/codeface-fonts.zip";
+    hash = "sha256-oo5pWDq6h0bmyGvfF9Bkh7WyjKX4dG8uclfIsWLhDw8=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 camingo-code/*.ttf -t $out/share/fonts/truetype
+    install -Dm644 camingo-code/*.txt -t $out/share/doc/${pname}-${version}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.myfonts.com/fonts/jan-fromm/camingo-code/";
+    description = "A monospaced typeface designed for source-code editors";
+    platforms = platforms.all;
+    license = licenses.cc-by-nd-30;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/cantarell-fonts/default.nix b/nixpkgs/pkgs/data/fonts/cantarell-fonts/default.nix
new file mode 100644
index 000000000000..49b4e6354ca4
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/cantarell-fonts/default.nix
@@ -0,0 +1,57 @@
+{ stdenv
+, lib
+, fetchurl
+, meson
+, ninja
+, python3
+, gettext
+, appstream-glib
+, gnome
+}:
+
+stdenv.mkDerivation rec {
+  pname = "cantarell-fonts";
+  version = "0.303.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "+UY6BlnGPlfjgf3XU88ZKSJTlcW0kTWYlCR2GDBTBBE=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    python3
+    python3.pkgs.psautohint
+    python3.pkgs.cffsubr
+    python3.pkgs.statmake
+    python3.pkgs.ufo2ft
+    python3.pkgs.setuptools
+    python3.pkgs.ufoLib2
+    gettext
+    appstream-glib
+  ];
+
+  # ad-hoc fix for https://github.com/NixOS/nixpkgs/issues/50855
+  # until we fix gettext's envHook
+  preBuild = ''
+    export GETTEXTDATADIRS="$GETTEXTDATADIRS_FOR_BUILD"
+  '';
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "XeqHVdTQ7PTzxkjwfzS/BTR7+k/M69sfUKdRXGOTmZE=";
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = pname;
+    };
+  };
+
+  meta = {
+    description = "Default typeface used in the user interface of GNOME since version 3.0";
+    platforms = lib.platforms.all;
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/cardo/default.nix b/nixpkgs/pkgs/data/fonts/cardo/default.nix
new file mode 100644
index 000000000000..c862ea7ce889
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/cardo/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation {
+  pname = "cardo";
+  version = "1.04";
+
+  src = fetchzip {
+    url = "https://scholarsfonts.net/cardo104.zip";
+    stripRoot = false;
+    hash = "sha256-NU6/H5f0JBlVo3L3uUcl7IvNxPMXD8UQY9k5o2YA5Vo=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    mv *.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Cardo is a large Unicode font specifically designed for the needs of classicists, Biblical scholars, medievalists, and linguists";
+    longDescription = ''
+      Cardo is a large Unicode font specifically designed for the needs of
+      classicists, Biblical scholars, medievalists, and linguists. It also
+      works well for general typesetting in situations where a high-quality Old
+      Style font is appropriate. Its large character set supports many modern
+      languages as well as those needed by scholars. Cardo also contains
+      features that are required for high-quality typography such as ligatures,
+      text figures (also known as old style numerals), true small capitals and
+      a variety of punctuation and space characters.
+    '';
+    homepage = "http://scholarsfonts.net/cardofnt.html";
+    license = licenses.ofl;
+    maintainers = with lib.maintainers; [ kmein ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/carlito/calibri-alias.conf b/nixpkgs/pkgs/data/fonts/carlito/calibri-alias.conf
new file mode 100644
index 000000000000..bbffff23721f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/carlito/calibri-alias.conf
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+<fontconfig>
+  <!-- Configure Carlito as a metric-compatible alias for the
+       Microsoft Calibri font family. -->
+  <alias binding="same">
+    <family>Calibri</family>
+    <accept>
+      <family>Carlito</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Carlito</family>
+    <default>
+      <family>Calibri</family>
+    </default>
+  </alias>
+</fontconfig>
diff --git a/nixpkgs/pkgs/data/fonts/carlito/default.nix b/nixpkgs/pkgs/data/fonts/carlito/default.nix
new file mode 100644
index 000000000000..a8b77e7d91ca
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/carlito/default.nix
@@ -0,0 +1,38 @@
+{ lib, fetchurl, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "carlito";
+  version = "20130920";
+
+  src = fetchurl {
+    url = "https://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/crosextrafonts-carlito-${version}.tar.gz";
+    sha256 = "sha256-S9ErbLwyHBzxbaduLFhcklzpVqCAZ65vbGTv9sz9r1o=";
+  };
+
+  installPhase = ''
+    mkdir -p $out/etc/fonts/conf.d
+    mkdir -p $out/share/fonts/truetype
+    cp -v *.ttf $out/share/fonts/truetype
+    cp -v ${./calibri-alias.conf} $out/etc/fonts/conf.d/30-calibri.conf
+  '';
+
+  meta = with lib; {
+    # This font doesn't appear to have any official web site but this
+    # one provides some good information and samples.
+    homepage = "http://openfontlibrary.org/en/font/carlito";
+    description = "A sans-serif font metric-compatible with Microsoft Calibri";
+    longDescription = ''
+      Carlito is a free font that is metric-compatible with the
+      Microsoft Calibri font. The font is designed by Łukasz Dziedzic
+      of the tyPoland foundry and based upon his Lato font.
+    '';
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ ];
+
+    # Reduce the priority of this package. The intent is that if you
+    # also install the `vista-fonts` package, then you probably will
+    # not want to install the font alias of this package.
+    priority = 10;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/cascadia-code/default.nix b/nixpkgs/pkgs/data/fonts/cascadia-code/default.nix
new file mode 100644
index 000000000000..df1af86d5ce0
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/cascadia-code/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "cascadia-code";
+  version = "2111.01";
+
+  src = fetchzip {
+    url = "https://github.com/microsoft/cascadia-code/releases/download/v${version}/CascadiaCode-${version}.zip";
+    stripRoot = false;
+    hash = "sha256-v9Vm5X80wEvorMhIlRw3MnyuSOdBpTl9ibBPpmm1vig=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 otf/static/*.otf -t $out/share/fonts/opentype
+    install -Dm644 ttf/static/*.ttf -t $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Monospaced font that includes programming ligatures and is designed to enhance the modern look and feel of the Windows Terminal";
+    homepage = "https://github.com/microsoft/cascadia-code";
+    changelog = "https://github.com/microsoft/cascadia-code/raw/v${version}/FONTLOG.txt";
+    license = licenses.ofl;
+    maintainers = [ maintainers.marsam ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/ccsymbols/default.nix b/nixpkgs/pkgs/data/fonts/ccsymbols/default.nix
new file mode 100644
index 000000000000..f31dc65a8a56
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ccsymbols/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenvNoCC, fetchurl, unzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "ccsymbols";
+  version = "2020-04-19";
+
+  src = fetchurl {
+    url = "https://www.ctrl.blog/file/${version}_cc-symbols.zip";
+    hash = "sha256-hkARhb8T6VgGAybYkVuPuebjhuk1dwiBJ1bZMwvYpMY=";
+  };
+
+  sourceRoot = ".";
+
+  nativeBuildInputs = [ unzip ];
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 CCSymbols.* -t $out/share/fonts/ccsymbols
+
+    runHook postInstall
+  '';
+
+  passthru = { inherit pname version; };
+
+  meta = with lib; {
+    description = "Creative Commons symbol font";
+    homepage = "https://www.ctrl.blog/entry/creative-commons-unicode-fallback-font.html";
+    maintainers = with maintainers; [ qyliss ];
+    license = licenses.publicDomain;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/charis-sil/default.nix b/nixpkgs/pkgs/data/fonts/charis-sil/default.nix
new file mode 100644
index 000000000000..b4880fd218de
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/charis-sil/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "charis-sil";
+  version = "6.200";
+
+  src = fetchzip {
+    url = "https://software.sil.org/downloads/r/charis/CharisSIL-${version}.zip";
+    hash = "sha256-q451lec/l13Uanmr8K/C55Cr3avRvqQUkPK/ZZ1kgHo=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+    install -Dm644 OFL.txt OFL-FAQ.txt README.txt FONTLOG.txt -t $out/share/doc/${pname}-${version}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://software.sil.org/charis";
+    description = "A family of highly readable fonts for broad multilingual use";
+    longDescription = ''
+      This Charis SIL font is essentially the same design as the SIL Charis font first released by SIL in 1997. Charis is similar to Bitstream Charter, one of the first fonts designed specifically for laser printers. It is highly readable and holds up well in less-than-ideal reproduction environments. It also has a full set of styles – regular, italic, bold, bold italic. Charis is a serif, proportionally-spaced font optimized for readability in long printed documents.
+
+      The goal for this product was to provide a single Unicode-based font family that would contain a comprehensive inventory of glyphs needed for almost any Roman- or Cyrillic-based writing system, whether used for phonetic or orthographic needs. In addition, there is provision for other characters and symbols useful to linguists. This font makes use of state-of-the-art font technologies to support complex typographic issues, such as the need to position arbitrary combinations of base glyphs and diacritics optimally.
+    '';
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.f--t ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/cherry/default.nix b/nixpkgs/pkgs/data/fonts/cherry/default.nix
new file mode 100644
index 000000000000..2e9577751551
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/cherry/default.nix
@@ -0,0 +1,37 @@
+{ lib, stdenv, fetchFromGitHub, xorg }:
+
+stdenv.mkDerivation rec {
+  pname = "cherry";
+  version = "1.4";
+
+  src = fetchFromGitHub {
+    owner = "turquoise-hexagon";
+    repo = pname;
+    rev = version;
+    sha256 = "13zkxwp6r6kcxv4x459vwscr0n0sik4a3kcz5xnmlpvcdnbxi586";
+  };
+
+  nativeBuildInputs = [ xorg.fonttosfnt xorg.mkfontdir ];
+
+  buildPhase = ''
+    patchShebangs make.sh
+    ./make.sh
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/misc
+    cp *.otb $out/share/fonts/misc
+
+    # create fonts.dir so NixOS xorg module adds to fp
+    mkfontdir $out/share/fonts/misc
+  '';
+
+  meta = with lib; {
+    description = "cherry font";
+    homepage = "https://github.com/turquoise-hexagon/cherry";
+    license = licenses.mit;
+    maintainers = with maintainers; [ dtzWill ];
+    platforms = platforms.all;
+  };
+}
+
diff --git a/nixpkgs/pkgs/data/fonts/chonburi/default.nix b/nixpkgs/pkgs/data/fonts/chonburi/default.nix
new file mode 100644
index 000000000000..4a14368f1f5f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/chonburi/default.nix
@@ -0,0 +1,41 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "chonburi";
+  version = "unstable-2021-09-15";
+
+  src = fetchFromGitHub {
+    owner = "cadsondemak";
+    repo = pname;
+    rev = "daf26bf77d82fba50eaa3aa3fad905cb9f6b5e28";
+    sha256 = "sha256-oC7ZCfNOyvGtqT9+Ap/CfCHzdWNzeCuac2dJ9fctgB8=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/doc/chonburi $out/share/fonts/{opentype,truetype}
+
+    cp $src/OFL.txt $src/BRIEF.md $out/share/doc/chonburi
+    cp $src/fonts/*.otf $out/share/fonts/opentype
+    cp $src/fonts/*.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://cadsondemak.github.io/chonburi/";
+    description = "A Didonic Thai and Latin display typeface";
+    longDescription = ''
+      The objective of this project is to create a Thai and Latin Display
+      typeface. Chonburi is a display typeface with high contrast in a Didone
+      style. This single-weight typeface provides advance typographical support
+      with features such as discretionary ligature. This font can be extended
+      the family to other weights including both narrow and extended version. It
+      is also ready to be matched with other non-Latin script.
+    '';
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.toastal ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/chunk/default.nix b/nixpkgs/pkgs/data/fonts/chunk/default.nix
new file mode 100644
index 000000000000..fec1c043bfa1
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/chunk/default.nix
@@ -0,0 +1,38 @@
+{ lib, fetchFromGitHub, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "chunk";
+  version = "2021-03-03";
+
+  src = fetchFromGitHub {
+    owner = "theleagueof";
+    repo = finalAttrs.pname;
+    rev = "12a243f3fb7c7a68844901023f7d95d6eaf14104";
+    hash = "sha256-NMkRvrUgy9yzOT3a1rN6Ch/p8Cr902CwL4G0w7jVm1E=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/truetype $src/*.ttf
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "An ultra-bold, ultra-awesome slab serif typeface";
+    longDescription = ''
+      Chunk is an ultra-bold slab serif typeface that is reminiscent of old
+      American Western woodcuts, broadsides, and newspaper headlines. Used
+      mainly for display, the fat block lettering is unreserved yet refined for
+      contemporary use.
+
+      In 2014, a new textured style was created by Tyler Finck called Chunk
+      Five Print. It contains the same glyphs as the original.
+    '';
+    homepage = "https://www.theleagueofmoveabletype.com/chunk";
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ minijackson ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/clearlyU/default.nix b/nixpkgs/pkgs/data/fonts/clearlyU/default.nix
new file mode 100644
index 000000000000..9799955d05f3
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/clearlyU/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenv, fetchurl, xorg, libfaketime }:
+
+stdenv.mkDerivation rec {
+  pname = "clearlyU";
+  version = "12-1.9";
+
+  src = fetchurl {
+    url = "https://www.math.nmsu.edu/~mleisher/Software/cu/cu${version}.tgz";
+    sha256 = "1xn14jbv3m1khy7ydvad9ydkn7yygdbhjy9wm1v000jzjwr3lv21";
+  };
+
+  nativeBuildInputs = [ xorg.fonttosfnt xorg.mkfontscale libfaketime ];
+
+  buildPhase = ''
+    # convert bdf fonts to otb
+    for i in *.bdf; do
+      name=$(basename "$i" .bdf)
+      faketime -f "1970-01-01 00:00:01" fonttosfnt -g 2 -m 2 -v -o "$name.otb" "$i"
+    done
+  '';
+
+  installPhase = ''
+    # install otb and bdf fonts
+    fontDir="$out/share/fonts"
+    install -m 644 -D *.bdf *.otb -t "$fontDir"
+    mkfontdir "$fontDir"
+  '';
+
+  meta = with lib; {
+    description = "A Unicode font";
+    license = licenses.mit;
+    maintainers = [ maintainers.raskin ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/cm-unicode/default.nix b/nixpkgs/pkgs/data/fonts/cm-unicode/default.nix
new file mode 100644
index 000000000000..fc59baa5f9d2
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/cm-unicode/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "cm-unicode";
+  version = "0.7.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/cm-unicode/cm-unicode/${version}/${pname}-${version}-otf.tar.xz";
+    hash = "sha256-VIp+vk1IYbEHW15wMrfGVOPqg1zBZDpgFx+jlypOHCg=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/opentype *.otf
+    install -m444 -Dt $out/share/doc/${pname}-${version}    README FontLog.txt
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://cm-unicode.sourceforge.io/";
+    description = "Computer Modern Unicode fonts";
+    maintainers = with maintainers; [ raskin rycee ];
+    license = licenses.ofl;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/cnstrokeorder/default.nix b/nixpkgs/pkgs/data/fonts/cnstrokeorder/default.nix
new file mode 100644
index 000000000000..66803b1b63ff
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/cnstrokeorder/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "cnstrokeorder";
+  version = "0.0.4.7";
+
+  src = fetchurl {
+    url = "http://rtega.be/chmn/CNstrokeorder-${version}.ttf";
+    hash = "sha256-YYtOcUvt1V0DwAs/vf9KltcmYCFJNirvwjGyOK4JpIY=";
+  };
+
+  dontUnpack = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D $src $out/share/fonts/truetype/CNstrokeorder-${version}.ttf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Chinese font that shows stroke order for HSK 1-4";
+    homepage = "http://rtega.be/chmn/index.php?subpage=68";
+    license = [ licenses.arphicpl ];
+    maintainers = with maintainers; [ johnazoidberg ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/comfortaa/default.nix b/nixpkgs/pkgs/data/fonts/comfortaa/default.nix
new file mode 100644
index 000000000000..f47da9fc5306
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/comfortaa/default.nix
@@ -0,0 +1,37 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "comfortaa";
+  version = "unstable-2021-07-29";
+
+  src = fetchFromGitHub {
+    owner = "googlefonts";
+    repo = pname;
+    rev = "2a87ac6f6ea3495150bfa00d0c0fb53dd0a2f11b";
+    postFetch = ''
+      # Remove the OTF fonts as they are not needed and cause a hash mismatch
+      rm -rf $out/fonts/{OTF,otf}
+    '';
+    hash = "sha256-4ZBRaQyYlnt9l4NgBHezuCnR3rKTJ37L41RTbGAhd0M=";
+  };
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype $out/share/doc/comfortaa
+    cp fonts/TTF/*.ttf $out/share/fonts/truetype
+    cp FONTLOG.txt README.md $out/share/doc/comfortaa
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://aajohan.deviantart.com/art/Comfortaa-font-105395949";
+    description = "A clean and modern font suitable for headings and logos";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.rycee ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/comic-mono/comic-mono-weight.conf b/nixpkgs/pkgs/data/fonts/comic-mono/comic-mono-weight.conf
new file mode 100644
index 000000000000..97cfa3d83fdf
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/comic-mono/comic-mono-weight.conf
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+<fontconfig>
+    <!-- Fix missing/incorrect font weight data in Comic Mono. -->
+
+    <match target="scan">
+        <test name="fullname">
+            <string>Comic Mono</string>
+        </test>
+        <edit name="weight">
+            <const>book</const>
+        </edit>
+    </match>
+</fontconfig>
diff --git a/nixpkgs/pkgs/data/fonts/comic-mono/default.nix b/nixpkgs/pkgs/data/fonts/comic-mono/default.nix
new file mode 100644
index 000000000000..fc3b8d6085be
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/comic-mono/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation {
+  pname = "comic-mono-font";
+  version = "2020-12-28";
+
+  src = fetchFromGitHub {
+    owner = "dtinth";
+    repo = "comic-mono-font";
+    rev = "9a96d04cdd2919964169192e7d9de5012ef66de4";
+    hash = "sha256-q8NxrluWuH23FfRlntIS0MDdl3TkkGE7umcU2plS6eU=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts
+    cp *.ttf $out/share/fonts
+
+    mkdir -p $out/etc/fonts/conf.d
+    ln -s ${./comic-mono-weight.conf} $out/etc/fonts/conf.d/30-comic-mono.conf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A legible monospace font that looks like Comic Sans";
+    longDescription = ''
+      A legible monospace font... the very typeface you’ve been trained to
+      recognize since childhood. This font is a fork of Shannon Miwa’s Comic
+      Shanns (version 1).
+    '';
+    homepage = "https://dtinth.github.io/comic-mono-font/";
+
+    license = licenses.mit;
+    maintainers = with maintainers; [ an-empty-string totoroot ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/comic-neue/default.nix b/nixpkgs/pkgs/data/fonts/comic-neue/default.nix
new file mode 100644
index 000000000000..7485d435cb23
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/comic-neue/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenv, fetchzip }:
+
+stdenv.mkDerivation rec {
+  pname = "comic-neue";
+  version = "2.51";
+
+  src = fetchzip {
+    url = "http://comicneue.com/${pname}-${version}.zip";
+    sha256 = "sha256-DjRZtFnJOtZnxhfpgU5ihZFAonRK608/BQztCAExIU0=";
+    stripRoot = false; # because it comes with a __MACOSX directory
+  };
+
+  installPhase = ''
+    mkdir -pv $out/share/{doc/${pname}-${version},fonts/{opentype,truetype,WOFF,WOFF2}}
+    cp -v ${pname}-${version}/{FONTLOG,OFL-FAQ,OFL}.txt $out/share/doc/
+    cp -v ${pname}-${version}/Booklet-ComicNeue.pdf $out/share/doc/
+    cp -v ${pname}-${version}/OTF/ComicNeue-Angular/*.otf $out/share/fonts/opentype
+    cp -v ${pname}-${version}/OTF/ComicNeue/*.otf $out/share/fonts/opentype
+    cp -v ${pname}-${version}/TTF/ComicNeue-Angular/*.ttf $out/share/fonts/truetype
+    cp -v ${pname}-${version}/TTF/ComicNeue/*.ttf $out/share/fonts/truetype
+    cp -v ${pname}-${version}/WebFonts/*.woff $out/share/fonts/WOFF
+    cp -v ${pname}-${version}/WebFonts/*.woff2 $out/share/fonts/WOFF2
+  '';
+
+  meta = with lib; {
+    homepage = "http://comicneue.com/";
+    description = "A casual type face: Make your lemonade stand look like a fortune 500 company";
+    longDescription = ''
+      ComicNeue is inspired by Comic Sans but more regular. It was
+      designed by Craig Rozynski. It is available in two variants:
+      Comic Neue and Comic Neue Angular. The former having round and
+      the latter angular terminals. Both variants come in Light,
+      Regular, and Bold weights with Oblique variants.
+    '';
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.AndersonTorres ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/comic-relief/comic-sans-ms-alias.conf b/nixpkgs/pkgs/data/fonts/comic-relief/comic-sans-ms-alias.conf
new file mode 100644
index 000000000000..e1362ec4f5f7
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/comic-relief/comic-sans-ms-alias.conf
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+<fontconfig>
+  <!-- Configure Comic Relief as a metric-compatible alias for the
+       Microsoft Comic Sans font family. -->
+  <alias binding="same">
+    <family>Comic Sans MS</family>
+    <accept>
+      <family>Comic Relief</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Comic Relief</family>
+    <default>
+      <family>Comic Sans MS</family>
+    </default>
+  </alias>
+</fontconfig>
diff --git a/nixpkgs/pkgs/data/fonts/comic-relief/default.nix b/nixpkgs/pkgs/data/fonts/comic-relief/default.nix
new file mode 100644
index 000000000000..c4c7648acd29
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/comic-relief/default.nix
@@ -0,0 +1,45 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "comic-relief";
+  version = "1.1";
+
+  src = fetchzip {
+    url = "https://fontlibrary.org/assets/downloads/comic-relief/45c456b6db2aaf2f7f69ac66b5ac7239/comic-relief.zip";
+    stripRoot = false;
+    hash = "sha256-lvkMfaQvLMZ8F0Q5JnpmMsIAkR+XfihoHIoS4z5QEvA=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/etc/fonts/conf.d
+    mkdir -p $out/share/doc/${pname}-${version}
+    mkdir -p $out/share/fonts/truetype
+    cp -v ${./comic-sans-ms-alias.conf}     $out/etc/fonts/conf.d/30-comic-sans-ms.conf
+    cp *.ttf      -d $out/share/fonts/truetype
+    cp FONTLOG.txt -d $out/share/doc/${pname}-${version}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://fontlibrary.org/en/font/comic-relief";
+    description = "A font metric-compatible with Microsoft Comic Sans";
+    longDescription = ''
+      Comic Relief is a typeface designed to be metrically equivalent
+      to the popular Comic Sans MS. Comic Relief can be used in place
+      of Comic Sans MS without having to move, resize, or reset any
+      part of the copy. It contains all glyphs and characters
+      available in Comic Sans MS.
+    '';
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.rycee ];
+
+    # Reduce the priority of this package. The intent is that if you
+    # also install the `corefonts` package, then you probably will not
+    # want to install the font alias of this package.
+    priority = 10;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/commit-mono/default.nix b/nixpkgs/pkgs/data/fonts/commit-mono/default.nix
new file mode 100644
index 000000000000..895e70a544b9
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/commit-mono/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, stdenvNoCC
+, fetchzip
+}:
+stdenvNoCC.mkDerivation rec {
+  pname = "commit-mono";
+  version = "1.141";
+
+  src = fetchzip {
+    url = "https://github.com/eigilnikolajsen/commit-mono/releases/download/v${version}/CommitMono-${version}.zip";
+    hash = "sha256-ErC4ZM17rYq+5FRW9m9nIbQOjQGTCCoNhXHxb7Swd84=";
+    stripRoot = false;
+  };
+
+  dontConfigure = true;
+  dontPatch = true;
+  dontBuild = true;
+  dontFixup = true;
+  doCheck = false;
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm644 CommitMono-${version}/*.otf             -t $out/share/fonts/opentype
+    install -Dm644 CommitMono-${version}/ttfautohint/*.ttf -t $out/share/fonts/truetype
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "An anonymous and neutral programming typeface focused on creating a better reading experience";
+    homepage = "https://commitmono.com/";
+    license = licenses.ofl;
+    maintainers = [ maintainers.yoavlavi ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/cooper-hewitt/default.nix b/nixpkgs/pkgs/data/fonts/cooper-hewitt/default.nix
new file mode 100644
index 000000000000..5a3bb59c2519
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/cooper-hewitt/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "cooper-hewitt";
+  version = "unstable-2014-06-09";
+
+  src = fetchzip {
+    url = "https://web.archive.org/web/20221004145117/https://www.cooperhewitt.org/wp-content/uploads/fonts/CooperHewitt-OTF-public.zip";
+    hash = "sha256-bTlEXQeYNNspvnNdvQhJn6CNBrcSKYWuNWF/N6+3Vb0=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/opentype
+    mv *.otf $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.cooperhewitt.org/open-source-at-cooper-hewitt/cooper-hewitt-the-typeface-by-chester-jenkins/";
+    description = "A contemporary sans serif, with characters composed of modified-geometric curves and arches";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.marsam ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/corefonts/default.nix b/nixpkgs/pkgs/data/fonts/corefonts/default.nix
new file mode 100644
index 000000000000..059350da7d4f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/corefonts/default.nix
@@ -0,0 +1,105 @@
+{ lib, stdenv, fetchurl, cabextract }:
+
+let
+  fonts = [
+    { name = "andale";  sha256 = "0w7927hlwayqf3vvanf8f3qp2g1i404jzqvhp1z3mp0sjm1gw905"; }
+    { name = "arial";   sha256 = "1xkqyivbyb3z9dcalzidf8m4npzfpls2g0kldyn8g73f2i6plac5"; }
+    { name = "arialb";  sha256 = "1a60zqrg63kjnykh5hz7dbpzvx7lyivn3vbrp7jyv9d1nvzz09d4"; }
+    { name = "comic";   sha256 = "0ki0rljjc1pxkbsxg515fwx15yc95bdyaksa3pjd89nyxzzg6vcw"; }
+    { name = "courie";  sha256 = "111k3waxki9yyxpjwl2qrdkswvsd2dmvhbjmmrwyipam2s31sldv"; }
+    { name = "georgi";  sha256 = "0083jcpd837j2c06kp1q8glfjn9k7z6vg3wi137savk0lv6psb1c"; }
+    { name = "impact";  sha256 = "1yyc5z7zmm3s418hmrkmc8znc55afsrz5dgxblpn9n81fhxyyqb0"; }
+    { name = "times";   sha256 = "1aq7z3l46vwgqljvq9zfgkii6aivy00z1529qbjkspggqrg5jmnv"; }
+    { name = "trebuc";  sha256 = "1jfsgz80pvyqvpfpaiz5pd8zwlcn67rg2jgynjwf22sip2dhssas"; }
+    { name = "webdin";  sha256 = "0nnp2znmnmx87ijq9zma0vl0hd46npx38p0cc6lgp00hpid5nnb4"; }
+    { name = "verdan";  sha256 = "15mdbbfqbyp25a6ynik3rck3m3mg44plwrj79rwncc9nbqjn3jy1"; }
+    { name = "wd97vwr"; sha256 = "1lmkh3zb6xv47k0z2mcwk3vk8jff9m845c9igxm14bbvs6k2c4gn"; }
+  ];
+
+  eula = fetchurl {
+    url = "https://corefonts.sourceforge.net/eula.htm";
+    sha256 = "1aqbcnl032g2hd7iy56cs022g47scb0jxxp3mm206x1yqc90vs1c";
+  };
+in
+stdenv.mkDerivation {
+  pname = "corefonts";
+  version = "1";
+
+  exes = map ({name, sha256}: fetchurl {
+    url = "mirror://sourceforge/corefonts/${name}32.exe";
+    inherit sha256;
+  }) fonts;
+
+  nativeBuildInputs = [ cabextract ];
+
+  buildCommand = ''
+    for i in $exes; do
+      cabextract --lowercase $i
+    done
+    cabextract --lowercase viewer1.cab
+
+    # rename to more standard names
+    # handle broken macOS file-system
+    mv andalemo.ttf  Andale_Mono.ttf
+    mv ariblk.ttf    Arial_Black.ttf
+    mv arial.ttf     Arial.ttf.tmp
+    mv Arial.ttf.tmp Arial.ttf
+    mv arialbd.ttf   Arial_Bold.ttf
+    mv arialbi.ttf   Arial_Bold_Italic.ttf
+    mv ariali.ttf    Arial_Italic.ttf
+    mv comic.ttf     Comic_Sans_MS.ttf
+    mv comicbd.ttf   Comic_Sans_MS_Bold.ttf
+    mv cour.ttf      Courier_New.ttf
+    mv courbd.ttf    Courier_New_Bold.ttf
+    mv couri.ttf     Courier_New_Italic.ttf
+    mv courbi.ttf    Courier_New_Bold_Italic.ttf
+    mv georgia.ttf   Georgia.ttf.tmp
+    mv Georgia.ttf.tmp   Georgia.ttf
+    mv georgiab.ttf  Georgia_Bold.ttf
+    mv georgiai.ttf  Georgia_Italic.ttf
+    mv georgiaz.ttf  Georgia_Bold_Italic.ttf
+    mv impact.ttf    Impact.ttf.tmp
+    mv Impact.ttf.tmp    Impact.ttf
+    mv tahoma.ttf    Tahoma.ttf.tmp
+    mv Tahoma.ttf.tmp    Tahoma.ttf
+    mv times.ttf     Times_New_Roman.ttf
+    mv timesbd.ttf   Times_New_Roman_Bold.ttf
+    mv timesbi.ttf   Times_New_Roman_Bold_Italic.ttf
+    mv timesi.ttf    Times_New_Roman_Italic.ttf
+    mv trebuc.ttf    Trebuchet_MS.ttf
+    mv trebucbd.ttf  Trebuchet_MS_Bold.ttf
+    mv trebucit.ttf  Trebuchet_MS_Italic.ttf
+    mv trebucbi.ttf  Trebuchet_MS_Italic.ttf
+    mv verdana.ttf   Verdana.ttf.tmp
+    mv Verdana.ttf.tmp   Verdana.ttf
+    mv verdanab.ttf  Verdana_Bold.ttf
+    mv verdanai.ttf  Verdana_Italic.ttf
+    mv verdanaz.ttf  Verdana_Bold_Italic.ttf
+    mv webdings.ttf  Webdings.ttf.tmp
+    mv Webdings.ttf.tmp  Webdings.ttf
+
+    install -m444 -Dt $out/share/fonts/truetype *.ttf
+
+    # Also put the EULA there to be on the safe side.
+    cp ${eula} $out/share/fonts/truetype/eula.html
+
+    # Set up no-op font configs to override any aliases set up by other packages.
+    mkdir -p $out/etc/fonts/conf.d
+    for name in Andale-Mono Arial-Black Arial Comic-Sans-MS \
+                Courier-New Georgia Impact Times-New-Roman \
+                Trebuchet Verdana Webdings ; do
+      substitute ${./no-op.conf} $out/etc/fonts/conf.d/30-''${name,,}.conf \
+        --subst-var-by fontname "''${name//-/ }"
+    done
+  '';
+
+  meta = with lib; {
+    homepage = "https://corefonts.sourceforge.net/";
+    description = "Microsoft's TrueType core fonts for the Web";
+    platforms = platforms.all;
+    license = licenses.unfreeRedistributable;
+    # Set a non-zero priority to allow easy overriding of the
+    # fontconfig configuration files.
+    priority = 5;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/corefonts/no-op.conf b/nixpkgs/pkgs/data/fonts/corefonts/no-op.conf
new file mode 100644
index 000000000000..3f8a9b9b5444
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/corefonts/no-op.conf
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+<fontconfig>
+  <!-- This configuation is intentionally left empty in order to
+       override any other font package that may wish to set up an
+       alias for the Microsoft @fontname@ font. If you actually do
+       want to have the alias then please change the priority of that
+       package; see the Nix manual page for nix-env for details. -->
+</fontconfig>
diff --git a/nixpkgs/pkgs/data/fonts/courier-prime/default.nix b/nixpkgs/pkgs/data/fonts/courier-prime/default.nix
new file mode 100644
index 000000000000..1226966d5e6c
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/courier-prime/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "courier-prime";
+  version = "unstable-2019-12-05";
+
+  src = fetchzip {
+    url = "https://github.com/quoteunquoteapps/CourierPrime/archive/7f6d46a766acd9391d899090de467c53fd9c9cb0/${pname}-${version}.zip";
+    hash = "sha256-pMFZpytNtgoZrBj2Gj8SgJ0Lab8uVY5aQtcO2lFbHj4=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/truetype fonts/ttf/*.ttf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Monospaced font designed specifically for screenplays";
+    homepage = "https://github.com/quoteunquoteapps/CourierPrime";
+    license = licenses.ofl;
+    maintainers = [ maintainers.austinbutler ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/cozette/default.nix b/nixpkgs/pkgs/data/fonts/cozette/default.nix
new file mode 100644
index 000000000000..afac3dbd8f83
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/cozette/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "cozette";
+  version = "1.23.1";
+
+  src = fetchzip {
+    url = "https://github.com/slavfox/Cozette/releases/download/v.${version}/CozetteFonts-v-${builtins.replaceStrings ["."] ["-"] version}.zip";
+    hash = "sha256-LbC5siSxDZnOEkfxeqOSyoaDuTEMG2xCpZaOZrHLTJo=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+    install -Dm644 *.otf -t $out/share/fonts/opentype
+    install -Dm644 *.bdf -t $out/share/fonts/misc
+    install -Dm644 *.otb -t $out/share/fonts/misc
+    install -Dm644 *.woff -t $out/share/fonts/woff
+    install -Dm644 *.woff2 -t $out/share/fonts/woff2
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A bitmap programming font optimized for coziness";
+    homepage = "https://github.com/slavfox/cozette";
+    changelog = "https://github.com/slavfox/Cozette/blob/v.${version}/CHANGELOG.md";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ brettlyons marsam ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/creep/default.nix b/nixpkgs/pkgs/data/fonts/creep/default.nix
new file mode 100644
index 000000000000..d25464da813f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/creep/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenv, fetchFromGitHub, libfaketime
+, xorg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "creep";
+  version = "0.31";
+
+  src = fetchFromGitHub {
+    owner = "romeovs";
+    repo = pname;
+    rev = version;
+    sha256 = "0zs21kznh1q883jfdgz74bb63i4lxlv98hj3ipp0wvsi6zw0vs8n";
+  };
+
+  nativeBuildInputs = [ libfaketime xorg.fonttosfnt xorg.mkfontscale ];
+
+  buildPhase = ''
+    faketime -f "1970-01-01 00:00:01" fonttosfnt -g 2 -m 2 -o creep.otb creep.bdf
+  '';
+
+  installPhase = ''
+    install -D -m644 creep.otb creep.bdf -t "$out/share/fonts/misc/"
+    mkfontdir "$out/share/fonts/misc"
+  '';
+
+  meta = with lib; {
+    description = "A pretty sweet 4px wide pixel font";
+    homepage = "https://github.com/romeovs/creep";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ buffet ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/crimson-pro/default.nix b/nixpkgs/pkgs/data/fonts/crimson-pro/default.nix
new file mode 100644
index 000000000000..29066b5ec3c3
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/crimson-pro/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation {
+  pname = "crimson-pro";
+  version = "unstable-2022-08-30";
+
+  outputs = [ "out" "woff2" ];
+
+  src = fetchFromGitHub {
+    owner = "Fonthausen";
+    repo = "CrimsonPro";
+    rev = "24e8f7bf59ec45d77c67879ad80d97e5f94c787b";
+    hash = "sha256-3zFB1AMcC7eNEVA2Mx1OE8rLN9zPzexZ3FtER9wH5ss=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/truetype fonts/ttf/*.ttf
+    install -m444 -Dt $out/share/fonts/opentype fonts/otf/*.otf
+    install -m444 -Dt $woff2/share/fonts/woff2 fonts/webfonts/*.woff2
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/Fonthausen/CrimsonPro";
+    description = "A professionally produced redesign of Crimson by Jacques Le Bailly";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ ncfavier ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/crimson/default.nix b/nixpkgs/pkgs/data/fonts/crimson/default.nix
new file mode 100644
index 000000000000..1868c897bd53
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/crimson/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "crimson";
+  version = "2014.10";
+
+  src = fetchFromGitHub {
+    owner = "skosch";
+    repo = "Crimson";
+    rev = "fonts-october2014";
+    hash = "sha256-Wp9L77q93TRmrAr0P4iH9gm0tqFY0X/xSsuFcd19aAE=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/opentype "Desktop Fonts/OTF/"*.otf
+    install -m444 -Dt $out/share/doc/${pname}-${version}    README.md
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/skosch/Crimson";
+    description = "A font family inspired by beautiful oldstyle typefaces";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.rycee ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/culmus/default.nix b/nixpkgs/pkgs/data/fonts/culmus/default.nix
new file mode 100644
index 000000000000..28a7f4385a01
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/culmus/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "culmus";
+  version = "0.133";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/${pname}/${version}/${pname}-${version}.tar.gz";
+    hash = "sha256-wMaHN0LQdUT2us8q1S65yzkpdNVkJ5ONwd+8g5nGTQU=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/{truetype,type1}
+    cp -v *.pfa $out/share/fonts/type1/
+    cp -v *.afm $out/share/fonts/type1/
+    cp -v fonts.scale-type1 $out/share/fonts/type1/fonts.scale
+    cp -v *.ttf $out/share/fonts/truetype/
+    cp -v *.otf $out/share/fonts/truetype/
+    cp -v fonts.scale-ttf $out/share/fonts/truetype/fonts.scale
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Culmus Hebrew fonts";
+    longDescription = "The Culmus project aims at providing the Hebrew-speaking GNU/Linux and Unix community with a basic collection of Hebrew fonts for X Windows.";
+    platforms = lib.platforms.all;
+    license = lib.licenses.gpl2;
+    homepage = "http://culmus.sourceforge.net/";
+    downloadPage = "http://culmus.sourceforge.net/download.html";
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/curie/default.nix b/nixpkgs/pkgs/data/fonts/curie/default.nix
new file mode 100644
index 000000000000..5e8195211b05
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/curie/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "curie";
+  version = "1.0";
+
+  src = fetchurl {
+    url = "https://github.com/NerdyPepper/curie/releases/download/v${version}/curie-v${version}.tar.gz";
+    hash = "sha256-B89GNbOmm3lY/cRWQJEFu/5morCM/WrRQb/m6covbt8=";
+  };
+
+  sourceRoot = ".";
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/misc
+    install *.otb $out/share/fonts/misc
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "An upscaled version of scientifica";
+    homepage = "https://github.com/NerdyPepper/curie";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ moni ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/d2coding/default.nix b/nixpkgs/pkgs/data/fonts/d2coding/default.nix
new file mode 100644
index 000000000000..be6f0809ed97
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/d2coding/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "d2codingfont";
+  version = "1.3.2";
+
+  src = fetchzip {
+    url = "https://github.com/naver/${pname}/releases/download/VER${version}/D2Coding-Ver${version}-20180524.zip";
+    stripRoot = false;
+    hash = "sha256-iC6iaUSVg4zt3wVFJUU4HEeswuKDOTFsAxq/0gRiOCA=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 */*-all.ttc -t $out/share/fonts/truetype/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Monospace font with support for Korean and latin characters";
+    longDescription = ''
+      D2Coding is a monospace font developed by a Korean IT Company called Naver.
+      Font is good for displaying both Korean characters and latin characters,
+      as sometimes these two languages could share some similar strokes.
+      Since version 1.3, D2Coding font is officially supported by the font
+      creator, with symbols for Powerline.
+    '';
+    homepage = "https://github.com/naver/d2codingfont";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/dancing-script/default.nix b/nixpkgs/pkgs/data/fonts/dancing-script/default.nix
new file mode 100644
index 000000000000..796069195990
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/dancing-script/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation {
+  pname = "dancing-script";
+  version = "2.0";
+
+  src = fetchFromGitHub {
+    owner = "impallari";
+    repo = "DancingScript";
+    rev = "f7f54bc1b8836601dae8696666bfacd306f77e34";
+    hash = "sha256-B9oAZFPH3dG/Nt5FfKfFVJYtfUKGK0AXNkQHRC7IgdU=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/truetype fonts/ttf/*.ttf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Dancing Script";
+    longDescription = "A lively casual script where the letters bounce and change size slightly.";
+    homepage = "https://github.com/impallari/DancingScript";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ wdavidw ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/dejavu-fonts/default.nix b/nixpkgs/pkgs/data/fonts/dejavu-fonts/default.nix
new file mode 100644
index 000000000000..ba9fed1be282
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/dejavu-fonts/default.nix
@@ -0,0 +1,65 @@
+{ fetchFromGitHub, lib, stdenv, fontforge, perl, perlPackages }:
+
+let
+  version = "2.37";
+
+  meta = {
+    description = "A typeface family based on the Bitstream Vera fonts";
+    longDescription = ''
+      The DejaVu fonts are TrueType fonts based on the BitStream Vera fonts,
+      providing more styles and with greater coverage of Unicode.
+
+      This package includes DejaVu Sans, DejaVu Serif, DejaVu Sans Mono, and
+      the TeX Gyre DejaVu Math font.
+    '';
+    homepage = "https://dejavu-fonts.github.io/";
+
+    # Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved.
+    # Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
+    # DejaVu changes are in public domain
+    # See http://dejavu-fonts.org/wiki/License for details
+    license = lib.licenses.free;
+
+    platforms = lib.platforms.all;
+  };
+
+  full-ttf = stdenv.mkDerivation {
+    pname = "dejavu-fonts-full";
+    inherit version;
+    nativeBuildInputs = [fontforge perl perlPackages.IOString perlPackages.FontTTF];
+
+    src = fetchFromGitHub {
+      owner = "dejavu-fonts";
+      repo = "dejavu-fonts";
+      rev = "version_${lib.replaceStrings ["."] ["_"] version}";
+      sha256 = "1xknlg2h287dx34v2n5r33bpcl4biqf0cv7nak657rjki7s0k4bk";
+    };
+
+    buildFlags = [ "full-ttf" ];
+
+    preBuild = "patchShebangs scripts";
+
+    installPhase = "install -m444 -Dt $out/share/fonts/truetype build/*.ttf";
+
+    inherit meta;
+  };
+
+  minimal = stdenv.mkDerivation {
+    pname = "dejavu-fonts-minimal";
+    inherit version;
+    buildCommand = ''
+      install -m444 -Dt $out/share/fonts/truetype ${full-ttf}/share/fonts/truetype/DejaVuSans.ttf
+    '';
+    inherit meta;
+  };
+in stdenv.mkDerivation {
+  pname = "dejavu-fonts";
+  inherit version;
+  buildCommand = ''
+    install -m444 -Dt $out/share/fonts/truetype ${full-ttf}/share/fonts/truetype/*.ttf
+    ln -s --relative --force --target-directory=$out/share/fonts/truetype ${minimal}/share/fonts/truetype/DejaVuSans.ttf
+  '';
+  inherit meta;
+
+  passthru = { inherit minimal full-ttf; };
+}
diff --git a/nixpkgs/pkgs/data/fonts/dina/default.nix b/nixpkgs/pkgs/data/fonts/dina/default.nix
new file mode 100644
index 000000000000..4a0612efd3e5
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/dina/default.nix
@@ -0,0 +1,78 @@
+{ lib, stdenv, fetchzip, fontforge
+, bdftopcf, xorg
+}:
+
+stdenv.mkDerivation {
+  pname = "dina-font";
+  version = "2.92";
+
+  outputs = [ "out" "bdf" ];
+
+  src = fetchzip {
+    url = "https://www.dcmembers.com/jibsen/download/61/?wpdmdl=61";
+    hash = "sha256-JK+vnOyhAbwT825S+WKbQuWgRrfZZHfyhaMQ/6ljO8s=";
+    extension = "zip";
+    stripRoot = false;
+  };
+
+  nativeBuildInputs =
+    [ fontforge bdftopcf xorg.mkfontscale xorg.fonttosfnt ];
+
+  buildPhase = ''
+    runHook preBuild
+
+    newName() {
+      local name=''${1##*/}
+      test "''${name:5:1}" = i && _it=Italic || _it=
+      case ''${name:6:3} in
+          400) _weight=Medium ;;
+          700) _weight=Bold ;;
+      esac
+      _pt=''${1%.bdf}
+      _pt=''${_pt#*-}
+      echo "Dina$_weight$_it$_pt"
+    }
+
+    # Re-encode the provided BDF files from CP1252 to Unicode as fonttosfnt does
+    # not support the former.
+    # We could generate the PCF and OTB files with fontforge directly, but that
+    # results in incorrect spacing in various places.
+    for f in BDF/*.bdf; do
+      basename=''${f##*/} basename=''${basename%.*}
+      fontforge -lang=ff -c "Open(\"$f\"); Reencode(\"win\", 1); Reencode(\"unicode\"); Generate(\"$basename.bdf\")"
+      mv "$basename"-*.bdf "$basename".bdf # remove the superfluous added size suffix
+    done
+
+    for f in *.bdf; do
+        name=$(newName "$f")
+        bdftopcf -t -o "$name.pcf" "$f"
+        fonttosfnt -v -o "$name.otb" "$f"
+    done
+    gzip -n -9 *.pcf
+
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m 644 -t "$out/share/fonts/misc" *.pcf.gz *.otb
+    install -D -m 644 -t "$bdf/share/fonts/misc" *.bdf
+    mkfontdir "$out/share/fonts/misc"
+    mkfontdir "$bdf/share/fonts/misc"
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A monospace bitmap font aimed at programmers";
+    longDescription = ''
+      Dina is a monospace bitmap font, primarily aimed at programmers. It is
+      relatively compact to allow a lot of code on screen, while (hopefully)
+      clear enough to remain readable even at high resolutions.
+    '';
+    homepage = "https://www.dcmembers.com/jibsen/download/61/";
+    license = licenses.free;
+    maintainers = with maintainers; [ prikhi ncfavier ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/dm-sans/default.nix b/nixpkgs/pkgs/data/fonts/dm-sans/default.nix
new file mode 100644
index 000000000000..c2d8f33eff69
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/dm-sans/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "dm-sans";
+  version = "1.002";
+
+  src = fetchzip {
+    url = "https://github.com/googlefonts/dm-fonts/releases/download/v${version}/DeepMindSans_v${version}.zip";
+    stripRoot = false;
+    hash = "sha256-RSHHxiCac18qqF+hW5M3BbBcra4AQpNLLlUmhiWj9f8=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    mv *.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A geometric sans-serif typeface";
+    homepage = "https://github.com/googlefonts/dm-fonts";
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ gilice ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/dosemu-fonts/default.nix b/nixpkgs/pkgs/data/fonts/dosemu-fonts/default.nix
new file mode 100644
index 000000000000..7de0e6d06027
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/dosemu-fonts/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenv, fetchurl, bdftopcf, mkfontdir, mkfontscale }:
+
+stdenv.mkDerivation rec {
+  pname = "dosemu-fonts";
+  version = "1.4.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/dosemu/dosemu-${version}.tgz";
+    sha256 = "0l1zwmw42mpakjrzmbygshcg2qzq9mv8lx42738rz3j9hrqzg4pw";
+  };
+
+  buildCommand = ''
+    tar xf "$src" --anchored --wildcards '*/etc/*.bdf' '*/etc/dosemu.alias'
+    fontPath="$out/share/fonts/X11/misc/dosemu"
+    mkdir -p "$fontPath"
+    for i in */etc/*.bdf; do
+      fontOut="$out/share/fonts/X11/misc/dosemu/$(basename "$i" .bdf).pcf.gz"
+      echo -n "Installing font $fontOut..." >&2
+      ${bdftopcf}/bin/bdftopcf $i | gzip -c -9 -n > "$fontOut"
+      echo " done." >&2
+    done
+    cp */etc/dosemu.alias "$fontPath/fonts.alias"
+    cd "$fontPath"
+    ${mkfontdir}/bin/mkfontdir
+    ${mkfontscale}/bin/mkfontscale
+  '';
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "1miqv0ral5vazx721wildjlzvji5r7pbgm39c0cpj5ywafaikxr8";
+
+  meta = {
+    description = "Various fonts from the DOSEmu project";
+    license = lib.licenses.gpl2Only;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/dosis/default.nix b/nixpkgs/pkgs/data/fonts/dosis/default.nix
new file mode 100644
index 000000000000..a33f086c9bbe
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/dosis/default.nix
@@ -0,0 +1,41 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "dosis";
+  version = "1.007";
+
+  src = fetchFromGitHub {
+    owner = "impallari";
+    repo = "Dosis";
+    rev = "12df1e13e58768f20e0d48ff15651b703f9dd9dc";
+    hash = "sha256-rZ49uNBlI+NWkiZykpyXzOonXlbVB6Vf6a/8A56Plj4=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    find . -name '*.otf' -exec install -m444 -Dt $out/share/fonts/opentype {} \;
+    install -m444 -Dt $out/share/doc/${pname}-${version} README.md FONTLOG.txt
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A very simple, rounded, sans serif family";
+    longDescription = ''
+      Dosis is a very simple, rounded, sans serif family.
+
+      The lighter weights are minimalist. The bolder weights have more
+      personality. The medium weight is nice and balanced. The overall result is
+      a family that's clean and modern, and can express a wide range of
+      voices & feelings.
+
+      It comes in 7 incremental weights: ExtraLight, Light, Book, Medium,
+      Semibold, Bold & ExtraBold
+    '';
+    homepage = "http://www.impallari.com/dosis";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ cmfwyp ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/dotcolon-fonts/default.nix b/nixpkgs/pkgs/data/fonts/dotcolon-fonts/default.nix
new file mode 100644
index 000000000000..fcd439ce30c7
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/dotcolon-fonts/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, symlinkJoin
+, aileron
+, vegur
+, f5_6
+, tenderness
+, medio
+, ferrum
+, seshat
+, penna
+, eunomia
+, route159
+, f1_8
+, nacelle
+, melete
+, fa_1
+}:
+
+symlinkJoin {
+  name = "dotcolon-fonts";
+
+  paths = [
+    aileron
+    vegur
+    f5_6
+    tenderness
+    medio
+    ferrum
+    seshat
+    penna
+    eunomia
+    route159
+    f1_8
+    nacelle
+    melete
+    fa_1
+  ];
+
+  meta = {
+    description = "Font Collection by Sora Sagano";
+
+    homepage = "https://dotcolon.net/";
+
+    license = with lib.licenses; [ cc0 ofl ];
+
+    platforms = lib.platforms.all;
+    maintainers = with lib.maintainers; [ minijackson ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/doulos-sil/default.nix b/nixpkgs/pkgs/data/fonts/doulos-sil/default.nix
new file mode 100644
index 000000000000..5db5e942f6ef
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/doulos-sil/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "doulos-sil";
+  version = "6.200";
+
+  src = fetchzip {
+    url = "https://software.sil.org/downloads/r/doulos/DoulosSIL-${version}.zip";
+    hash = "sha256-kpbXJVAEQLr5HMFaE+8OgAYrMGQoetgMi0CcPn4a3Xw=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+    install -Dm644 OFL.txt OFL-FAQ.txt README.txt FONTLOG.txt -t $out/share/doc/${pname}-${version}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://software.sil.org/doulos";
+    description = "A font that provides complete support for the International Phonetic Alphabet";
+    longDescription = ''
+      This Doulos SIL font is essentially the same design as the SIL Doulos font first released by SIL in 1992. The design has been changed from the original in that it has been scaled down to be a better match with contemporary digital fonts, such as Times New Roman®. This current release is a regular typeface, with no bold or italic version available or planned. It is intended for use alongside other Times-like fonts where a range of styles (italic, bold) are not needed. Therefore, just one font is included in the Doulos SIL release: Doulos SIL Regular.
+
+      The goal for this product was to provide a single Unicode-based font family that would contain a comprehensive inventory of glyphs needed for almost any Roman- or Cyrillic-based writing system, whether used for phonetic or orthographic needs. In addition, there is provision for other characters and symbols useful to linguists. This font makes use of state-of-the-art font technologies to support complex typographic issues, such as the need to position arbitrary combinations of base glyphs and diacritics optimally.
+    '';
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.f--t ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/eb-garamond/default.nix b/nixpkgs/pkgs/data/fonts/eb-garamond/default.nix
new file mode 100644
index 000000000000..7a57d9308cf9
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/eb-garamond/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "eb-garamond";
+  version = "0.016";
+
+  src = fetchzip {
+    url = "https://bitbucket.org/georgd/eb-garamond/downloads/EBGaramond-${version}.zip";
+    hash = "sha256-P2VCLcqcMBBoTDJyRLP9vlHI+jE0EqPjPziN2MJbgEg=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 otf/*.otf                                 -t $out/share/fonts/opentype
+    install -Dm644 Changes README.markdown README.xelualatex -t $out/share/doc/${pname}-${version}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://www.georgduffner.at/ebgaramond/";
+    description = "Digitization of the Garamond shown on the Egenolff-Berner specimen";
+    maintainers = with maintainers; [ relrod rycee ];
+    license = licenses.ofl;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/edukai/default.nix b/nixpkgs/pkgs/data/fonts/edukai/default.nix
new file mode 100644
index 000000000000..d5b9e25c2eb5
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/edukai/default.nix
@@ -0,0 +1,33 @@
+{ stdenvNoCC, lib, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "edukai";
+  version = "4.0";
+
+  src = fetchzip {
+    name = "${pname}-${version}";
+    url =
+      "http://language.moe.gov.tw/001/Upload/Files/site_content/M0001/edukai-4.0.zip";
+    sha256 = "10m9srvbazvg9gc43943dc89rjzcfc8mm4lx9gb5hnplrn22zrcn";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/
+    mv *.ttf $out/share/fonts/
+  '';
+
+  meta = {
+    description =
+      "The MOE Standard Kai Font, a Chinese font by the Ministry of Education, ROC (Taiwan)";
+    longDescription = ''
+      The MOE Standard Kai Font is a kai (regular srcipt) font
+      provided by
+      the Midistry of Education, Republic of China (Taiwan).
+      It currently includes 13,076 Chinese characters.
+    '';
+    homepage =
+      "http://language.moe.gov.tw/result.aspx?classify_sn=23&subclassify_sn=436&content_sn=47";
+    license = lib.licenses.cc-by-nd-30;
+    maintainers = with lib.maintainers; [ ShamrockLee ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/eduli/default.nix b/nixpkgs/pkgs/data/fonts/eduli/default.nix
new file mode 100644
index 000000000000..beb89d49fc36
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/eduli/default.nix
@@ -0,0 +1,36 @@
+{ stdenvNoCC, lib, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "eduli";
+  version = "3.0";
+
+  src = fetchzip {
+    name = "${pname}-${version}";
+    url =
+      "http://language.moe.gov.tw/001/Upload/Files/site_content/M0001/MoeLI-3.0.zip";
+    sha256 = "0b4kjdk0h0hx446swi0wzawia0mf16qh9b6v4h4nqg8qx0p2sd3c";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/
+    for name in *.ttf; do
+      mv "$name" "$out/share/fonts/$(echo $name | sed -r 's/(.*)\(.*\)\.ttf/\1.ttf/')"
+    done
+  '';
+
+  meta = {
+    description =
+      "The MOE Li Font, a clerical Chinese font by the Ministry of Education, ROC (Taiwan)";
+    longDescription = ''
+      The MOE Li Font is a li (clerical srcipt) font
+      provided by
+      the Midistry of Education, Republic of China (Taiwan).
+      It currently includes 4,808 Chinese characters.
+      The clerical script (lishu) is an archaic style of Chinese calligraphy.
+    '';
+    homepage =
+      "http://language.moe.gov.tw/result.aspx?classify_sn=23&subclassify_sn=436&content_sn=49";
+    license = lib.licenses.cc-by-nd-30;
+    maintainers = with lib.maintainers; [ ShamrockLee ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/edusong/default.nix b/nixpkgs/pkgs/data/fonts/edusong/default.nix
new file mode 100644
index 000000000000..bf7d39aa20c5
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/edusong/default.nix
@@ -0,0 +1,32 @@
+{ stdenvNoCC, lib, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "edusong";
+  version = "1.0"; # The upstream doesn't provide the version
+
+  src = fetchzip {
+    name = "${pname}-${version}";
+    url =
+      "http://language.moe.gov.tw/001/Upload/Files/site_content/M0001/eduSong_Unicode.zip";
+    sha256 = "1b74wj9hdzlnrvldwlkh21sfhqxwh9qghf1k0fv66zs6n48vb0d4";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/
+    mv *.ttf $out/share/fonts/
+  '';
+
+  meta = {
+    description =
+      "The MOE Standard Song Font, a Chinese font by the Ministry of Education, ROC (Taiwan)";
+    longDescription = ''
+      The MOE Standard Song Font is a Chinese Song font provided by
+      the Midistry of Education, Republic of China (Taiwan).
+      Song or Ming is a category of CKJ typefaces in print.
+    '';
+    homepage =
+      "http://language.moe.gov.tw/result.aspx?classify_sn=23&subclassify_sn=436&content_sn=48";
+    license = lib.licenses.cc-by-nd-30;
+    maintainers = with lib.maintainers; [ ShamrockLee ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/edwin/default.nix b/nixpkgs/pkgs/data/fonts/edwin/default.nix
new file mode 100644
index 000000000000..2ccb44d45d2e
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/edwin/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "edwin";
+  version = "0.54";
+
+  src = fetchurl {
+    url = "https://github.com/MuseScoreFonts/Edwin/archive/refs/tags/v${version}.tar.gz";
+    hash = "sha256-F6BzwnrsaELegdo6Bdju1OG+RI9zKnn4tIASR3q6zYk=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/opentype
+    install *.otf $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A text font for musical scores";
+    homepage = "https://github.com/MuseScoreFonts/Edwin";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ moni ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/efont-unicode/default.nix b/nixpkgs/pkgs/data/fonts/efont-unicode/default.nix
new file mode 100644
index 000000000000..e45bdab7a4d8
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/efont-unicode/default.nix
@@ -0,0 +1,54 @@
+{ lib, stdenv, fetchurl, libfaketime, xorg }:
+
+stdenv.mkDerivation rec {
+  pname = "efont-unicode";
+  version = "0.4.2";
+
+  src = fetchurl {
+    url = "http://openlab.ring.gr.jp/efont/dist/unicode-bdf/${pname}-bdf-${version}.tar.bz2";
+    sha256 = "sha256-fT7SsYlV3dCQrf0IZfiNI1grj3ngDgr8IkWdg+f9m3M=";
+  };
+
+  nativeBuildInputs = with xorg;
+    [ libfaketime bdftopcf fonttosfnt mkfontscale ];
+
+  buildPhase = ''
+    runHook preBuild
+
+    # convert bdf fonts to pcf
+    for f in *.bdf; do
+        bdftopcf -t -o "''${f%.bdf}.pcf" "$f"
+    done
+    gzip -n -9 *.pcf
+
+    # convert bdf fonts to otb
+    for f in *.bdf; do
+        faketime -f "1970-01-01 00:00:01" \
+        fonttosfnt -v -m 2 -o "''${f%.bdf}.otb" "$f"
+    done
+
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    dir=share/fonts/misc
+    install -D -m 644 -t "$out/$dir" *.otb *.pcf.gz
+    install -D -m 644 -t "$bdf/$dir" *.bdf
+    mkfontdir "$out/$dir"
+    mkfontdir "$bdf/$dir"
+
+    runHook postInstall
+  '';
+
+  outputs = [ "out" "bdf" ];
+
+  meta = with lib; {
+    description = "The /efont/ Unicode bitmap font";
+    homepage = "http://openlab.ring.gr.jp/efont/unicode/";
+    license = licenses.bsd3;
+    platforms = platforms.all;
+    maintainers = [ maintainers.ncfavier ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/emacs-all-the-icons-fonts/default.nix b/nixpkgs/pkgs/data/fonts/emacs-all-the-icons-fonts/default.nix
new file mode 100644
index 000000000000..256084a320fc
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/emacs-all-the-icons-fonts/default.nix
@@ -0,0 +1,38 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "emacs-all-the-icons-fonts";
+  version = "5.0.0";
+
+  src = fetchzip {
+    url = "https://github.com/domtronn/all-the-icons.el/archive/${version}.zip";
+    hash = "sha256-70ysVxOey6NLlCwhEYhxpxO6uuarMFDpg3Efh+3bj1M=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 fonts/*.ttf -t $out/share/fonts/all-the-icons
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Icon fonts for emacs all-the-icons";
+    longDescription = ''
+      The emacs package all-the-icons provides icons to improve
+      presentation of information in emacs. This package provides
+      the fonts needed to make the package work properly.
+    '';
+    homepage = "https://github.com/domtronn/all-the-icons.el";
+
+    /*
+      The fonts come under a mixture of licenses - the MIT license,
+      SIL OFL license, and Apache license v2.0. See the GitHub page
+      for further information.
+    */
+    license = licenses.free;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ rlupton20 ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/emojione/default.nix b/nixpkgs/pkgs/data/fonts/emojione/default.nix
new file mode 100644
index 000000000000..629e46fe7971
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/emojione/default.nix
@@ -0,0 +1,50 @@
+{ lib, stdenv, fetchFromGitHub, fetchpatch, inkscape, imagemagick, potrace, svgo, scfbuild }:
+
+stdenv.mkDerivation rec {
+  pname = "emojione";
+  version = "1.4";
+
+  src = fetchFromGitHub {
+    owner = "eosrei";
+    repo = "emojione-color-font";
+    rev = "v${version}";
+    sha256 = "1781kxfbhnvylypbkwxc3mx6hi0gcjisfjr9cf0jdz4d1zkf09b3";
+  };
+
+  patches = [
+    # Fix build with Inkscape 1.0
+    # https://github.com/eosrei/twemoji-color-font/pull/82
+    (fetchpatch {
+      url = "https://github.com/eosrei/twemoji-color-font/commit/208ad63c2ceb38c528b5237abeb2b85ceedc1d37.patch";
+      sha256 = "7tDWIkpcdir1V6skgXSM3r0FwHy0F6PyJ07OPRsSStA=";
+      postFetch = ''
+        substituteInPlace $out \
+          --replace "inkscape --without-gui" "inkscape --export-png" \
+          --replace TWEMOJI EMOJIONE \
+          --replace "the assets" "the emojione assets" \
+          --replace twemoji emojione
+      '';
+    })
+  ];
+
+  preBuild = ''
+    sed -i 's,SCFBUILD :=.*,SCFBUILD := scfbuild,' Makefile
+    # Shut up inkscape's warnings
+    export HOME="$NIX_BUILD_ROOT"
+  '';
+
+  nativeBuildInputs = [ inkscape imagemagick potrace svgo scfbuild ];
+
+  enableParallelBuilding = true;
+
+  installPhase = ''
+    install -Dm755 build/EmojiOneColor-SVGinOT.ttf $out/share/fonts/truetype/EmojiOneColor-SVGinOT.ttf
+  '';
+
+  meta = with lib; {
+    description = "Open source emoji set";
+    homepage = "http://emojione.com/";
+    license = licenses.cc-by-40;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/encode-sans/default.nix b/nixpkgs/pkgs/data/fonts/encode-sans/default.nix
new file mode 100644
index 000000000000..1c9fc453c7d3
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/encode-sans/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "encode-sans";
+  version = "1.002";
+
+  src = fetchzip {
+    url = "https://github.com/impallari/Encode-Sans/archive/11162b46892d20f55bd42a00b48cbf06b5871f75.zip";
+    hash = "sha256-TPAUc5msAUgJZHibjgYaS2TOuzKFy0rje9ZQTXE6s+w=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf                 -t $out/share/fonts/truetype
+    install -Dm644 README.md FONTLOG.txt -t $out/share/doc/${pname}-${version}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A versatile sans serif font family";
+    longDescription = ''
+      The Encode Sans family is a versatile workhorse. Featuring a huge range of
+      weights and widths, it's ready for all kind of typographic challenges. It
+      also includes Tabular and Old Style figures, as well as full set of Small
+      Caps and other Open Type features.
+
+      Designed by Pablo Impallari and Andres Torresi.
+    '';
+    homepage = "https://github.com/impallari/Encode-Sans";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ cmfwyp ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/envypn-font/default.nix b/nixpkgs/pkgs/data/fonts/envypn-font/default.nix
new file mode 100644
index 000000000000..fc69e398e44d
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/envypn-font/default.nix
@@ -0,0 +1,50 @@
+{ lib, stdenv, fetchurl, libfaketime
+, xorg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "envypn-font";
+  version = "1.7.1";
+
+  src = fetchurl {
+    url = "https://ywstd.fr/files/p/envypn-font/envypn-font-${version}.tar.gz";
+    sha256 = "bda67b6bc6d5d871a4d46565d4126729dfb8a0de9611dae6c68132a7b7db1270";
+  };
+
+  nativeBuildInputs = [ libfaketime xorg.fonttosfnt xorg.mkfontscale ];
+
+  unpackPhase = ''
+    tar -xzf $src --strip-components=1
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+
+    # convert pcf fonts to otb
+    for i in *e.pcf.gz; do
+      faketime -f "1970-01-01 00:00:01" \
+      fonttosfnt -v -o "$(basename "$i" .pcf.gz)".otb "$i"
+    done
+
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m 644 -t "$out/share/fonts/misc" *.otb *.pcf.gz
+    mkfontdir "$out/share/fonts/misc"
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = ''
+      Readable bitmap font inspired by Envy Code R
+    '';
+    homepage = "http://ywstd.fr/p/pj/#envypn";
+    license = licenses.miros;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ erdnaxe ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/et-book/default.nix b/nixpkgs/pkgs/data/fonts/et-book/default.nix
new file mode 100644
index 000000000000..d1b59e2cdc0f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/et-book/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "et-book";
+  version = "unstable-2015-10-05";
+
+  src = fetchFromGitHub {
+    owner = "edwardtufte";
+    repo = pname;
+    rev = "7e8f02dadcc23ba42b491b39e5bdf16e7b383031";
+    hash = "sha256-B6ryC9ibNop08TJC/w9LSHHwqV/81EezXsTUJFq8xpo=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp -t $out/share/fonts/truetype source/4-ttf/*.ttf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "The typeface used in Edward Tufte’s books.";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ jethro ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/eunomia/default.nix b/nixpkgs/pkgs/data/fonts/eunomia/default.nix
new file mode 100644
index 000000000000..ea3613b5f81f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/eunomia/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+let
+  majorVersion = "0";
+  minorVersion = "200";
+in
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "eunomia";
+  version = "${majorVersion}.${minorVersion}";
+
+  src = fetchzip {
+    url = "https://dotcolon.net/download/fonts/${finalAttrs.pname}_${majorVersion}${minorVersion}.zip";
+    hash = "sha256-Rd2EakaTWjzoEV00tHTgg/bXgJUFfPjCyQUWi7QhFG4=";
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://dotcolon.net/font/eunomia/";
+    description = "A futuristic decorative font";
+    platforms = platforms.all;
+    maintainers = with maintainers; [ leenaars minijackson ];
+    license = licenses.ofl;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/ezra-sil/default.nix b/nixpkgs/pkgs/data/fonts/ezra-sil/default.nix
new file mode 100644
index 000000000000..7b628bd4bbc0
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ezra-sil/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "ezra-sil";
+  version = "2.51";
+
+  src = fetchzip {
+    url = "https://software.sil.org/downloads/r/ezra/EzraSIL-${version}.zip";
+    hash = "sha256-hGOHjvFVFLwyVkcoUz+7rQekCdn4oEOB+L16XRpthJM=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+    install -Dm644 OFL-FAQ.txt README.txt FONTLOG.txt -t $out/share/doc/${pname}-${version}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://software.sil.org/ezra";
+    description = "Typeface fashioned after the square letter forms of the typography of the Biblia Hebraica Stuttgartensia (BHS)";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.kmein ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/f1_8/default.nix b/nixpkgs/pkgs/data/fonts/f1_8/default.nix
new file mode 100644
index 000000000000..93e44be17cda
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/f1_8/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+let
+  majorVersion = "1";
+  minorVersion = "101";
+in
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "f1_8";
+  version = "${majorVersion}.${minorVersion}";
+
+  src = fetchzip {
+    url = "https://note.com/api/v2/attachments/download/d83b2c4ec63d7826acaa76725d261ff4";
+    hash = "sha256-pe1G8WeFAo+KYjjsNwn0JmtXFn9QugE1SeGwaqnl1F0=";
+    stripRoot = false;
+    extension = "zip";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://dotcolon.net/font/${finalAttrs.pname}/";
+    description = "A weighted decorative font";
+    platforms = platforms.all;
+    maintainers = with maintainers; [ minijackson ];
+    license = licenses.ofl;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/f5_6/default.nix b/nixpkgs/pkgs/data/fonts/f5_6/default.nix
new file mode 100644
index 000000000000..f1e8e7698f27
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/f5_6/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+let
+  majorVersion = "0";
+  minorVersion = "110";
+in
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "f5_6";
+  version = "${majorVersion}.${minorVersion}";
+
+  src = fetchzip {
+    url = "https://dotcolon.net/download/fonts/${finalAttrs.pname}_${majorVersion}${minorVersion}.zip";
+    hash = "sha256-FeCU+mzR0iO5tixI72XUnhvpGj+WRfKyT3mhBtud3uE=";
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://dotcolon.net/font/${finalAttrs.pname}/";
+    description = "A weighted decorative font";
+    platforms = platforms.all;
+    maintainers = with maintainers; [ leenaars minijackson ];
+    license = licenses.ofl;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/fa_1/default.nix b/nixpkgs/pkgs/data/fonts/fa_1/default.nix
new file mode 100644
index 000000000000..1c21bb279be6
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/fa_1/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+let
+  majorVersion = "0";
+  minorVersion = "100";
+in
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "fa_1";
+  version = "${majorVersion}.${minorVersion}";
+
+  src = fetchzip {
+    url = "https://dotcolon.net/download/fonts/${finalAttrs.pname}_${majorVersion}${minorVersion}.zip";
+    hash = "sha256-BPJ+wZMYXY/yg5oEgBc5YnswA6A7w6V0gdv+cac0qdc=";
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://dotcolon.net/font/${finalAttrs.pname}/";
+    description = "A weighted decorative font";
+    platforms = platforms.all;
+    maintainers = with maintainers; [ minijackson ];
+    license = licenses.ofl;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/fantasque-sans-mono/default.nix b/nixpkgs/pkgs/data/fonts/fantasque-sans-mono/default.nix
new file mode 100644
index 000000000000..d4d60d95bc94
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/fantasque-sans-mono/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "fantasque-sans-mono";
+  version = "1.8.0";
+
+  src = fetchzip {
+    url = "https://github.com/belluzj/fantasque-sans/releases/download/v${version}/FantasqueSansMono-Normal.zip";
+    stripRoot = false;
+    hash = "sha256-MNXZoDPi24xXHXGVADH16a3vZmFhwX0Htz02+46hWFc=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 OTF/*.otf -t $out/share/fonts/opentype
+    install -Dm644 README.md -t $out/share/doc/${pname}-${version}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/belluzj/fantasque-sans";
+    description = "A font family with a great monospaced variant for programmers";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.rycee ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/fanwood/default.nix b/nixpkgs/pkgs/data/fonts/fanwood/default.nix
new file mode 100644
index 000000000000..669ee6ac206e
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/fanwood/default.nix
@@ -0,0 +1,32 @@
+{ lib, fetchFromGitHub, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "fanwood";
+  version = "2011-05-11";
+
+  src = fetchFromGitHub {
+    owner = "theleagueof";
+    repo = finalAttrs.pname;
+    rev = "cbaaed9704e7d37d3dcdbdf0b472e9efd0e39432";
+    hash = "sha256-OroFhhb4RxPHkx+/8PtFnxs1GQVXMPiYTd+2vnRbIjg=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A serif based on the work of a famous Czech-American type designer of yesteryear";
+    longDescription = ''
+      Based on work of a famous Czech-American type designer of yesteryear. The
+      package includes roman and italic.
+    '';
+    homepage = "https://www.theleagueofmoveabletype.com/fanwood";
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ minijackson ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/ferrum/default.nix b/nixpkgs/pkgs/data/fonts/ferrum/default.nix
new file mode 100644
index 000000000000..5f6459a1f6bf
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ferrum/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+let
+  majorVersion = "0";
+  minorVersion = "200";
+in
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "ferrum";
+  version = "${majorVersion}.${minorVersion}";
+
+  src = fetchzip {
+    url = "https://dotcolon.net/download/fonts/${finalAttrs.pname}_${majorVersion}${minorVersion}.zip";
+    hash = "sha256-NDJwgFWZgyhMkGRWlY55l2omEw6ju3e3dHCEsWNzQIc=";
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://dotcolon.net/font/${finalAttrs.pname}/";
+    description = "A decorative font";
+    platforms = platforms.all;
+    maintainers = with maintainers; [ leenaars minijackson ];
+    license = licenses.cc0;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/fg-virgil/default.nix b/nixpkgs/pkgs/data/fonts/fg-virgil/default.nix
new file mode 100644
index 000000000000..fdf83df42e03
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/fg-virgil/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "fg-virgil";
+  version = "0.16.1";
+
+  src = fetchFromGitHub {
+    owner = "excalidraw";
+    repo = "excalidraw";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-iziCCHacaShPqb0f5nI8cCinFFs5fB3TcMJrifNhg4I=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m 444 public/Virgil.woff2 -t $out/share/fonts/woff2
+    install -D -m 444 public/FG_Virgil.woff2 -t $out/share/fonts/woff2
+    install -D -m 444 public/FG_Virgil.ttf -t $out/share/fonts/ttf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    homepage = "https://github.com/excalidraw/virgil";
+    description = "The font that powers Excalidraw";
+    platforms = lib.platforms.all;
+    maintainers = with lib.maintainers; [ drupol ];
+    license = lib.licenses.ofl;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/fira-code/default.nix b/nixpkgs/pkgs/data/fonts/fira-code/default.nix
new file mode 100644
index 000000000000..b0e63835156a
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/fira-code/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "fira-code";
+  version = "6.2";
+
+  src = fetchzip {
+    url = "https://github.com/tonsky/FiraCode/releases/download/${version}/Fira_Code_v${version}.zip";
+    stripRoot = false;
+    hash = "sha256-UHOwZL9WpCHk6vZaqI/XfkZogKgycs5lWg1p0XdQt0A=";
+  };
+
+  # only extract the variable font because everything else is a duplicate
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 variable_ttf/*-VF.ttf -t $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/tonsky/FiraCode";
+    description = "Monospace font with programming ligatures";
+    longDescription = ''
+      Fira Code is a monospace font extending the Fira Mono font with
+      a set of ligatures for common programming multi-character
+      combinations.
+    '';
+    license = licenses.ofl;
+    maintainers = [ maintainers.rycee ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/fira-code/symbols.nix b/nixpkgs/pkgs/data/fonts/fira-code/symbols.nix
new file mode 100644
index 000000000000..b31885b3714b
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/fira-code/symbols.nix
@@ -0,0 +1,31 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation {
+  pname = "fira-code-symbols";
+  version = "20160811";
+
+  src = fetchzip {
+    url = "https://github.com/tonsky/FiraCode/files/412440/FiraCode-Regular-Symbol.zip";
+    hash = "sha256-7y51blEn0Osf8azytK08zJgtfVX/CIWQkiOoRzYKIa4=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.otf -t $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "FiraCode unicode ligature glyphs in private use area";
+    longDescription = ''
+      FiraCode uses ligatures, which some editors don’t support.
+      This addition adds them as glyphs to the private unicode use area.
+      See https://github.com/tonsky/FiraCode/issues/211.
+    '';
+    license = licenses.ofl;
+    maintainers = [ ];
+    homepage = "https://github.com/tonsky/FiraCode/issues/211#issuecomment-239058632";
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/fira-go/default.nix b/nixpkgs/pkgs/data/fonts/fira-go/default.nix
new file mode 100644
index 000000000000..a850d7d2e97c
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/fira-go/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation {
+  pname = "fira-go";
+  version = "1.001";
+
+  src = fetchzip {
+    url = "https://github.com/bBoxType/FiraGo/archive/9882ba0851f88ab904dc237f250db1d45641f45d.zip";
+    hash = "sha256-WwgPg7OLrXBjR6oHG5061RO3HeNkj2Izs6ktwIxVw9o=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/opentype
+    mv Fonts/FiraGO_OTF_1001/{Roman,Italic}/*.otf \
+      $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://bboxtype.com/typefaces/FiraGO";
+    description = ''
+      Font with the same glyph set as Fira Sans 4.3 and additionally
+      supports Arabic, Devenagari, Georgian, Hebrew and Thai
+    '';
+    license = licenses.ofl;
+    maintainers = [ maintainers.loicreynier ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/fira-mono/default.nix b/nixpkgs/pkgs/data/fonts/fira-mono/default.nix
new file mode 100644
index 000000000000..5d059dbf88e0
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/fira-mono/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "fira-mono";
+  version = "4.202";
+
+  src = fetchzip {
+    url = "https://github.com/mozilla/Fira/archive/${version}.zip";
+    hash = "sha256-HLReqgL0PXF5vOpwLN0GiRwnzkjGkEVEyOEV2Z4R0oQ=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 otf/FiraMono*.otf -t $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://mozilla.github.io/Fira/";
+    description = "Monospace font for Firefox OS";
+    longDescription = ''
+      Fira Mono is a monospace font designed by Erik Spiekermann,
+      Ralph du Carrois, Anja Meiners and Botio Nikoltchev of Carrois
+      Type Design for Mozilla Firefox OS. Available in Regular,
+      Medium, and Bold.
+    '';
+    license = licenses.ofl;
+    maintainers = [ maintainers.rycee ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/fira/default.nix b/nixpkgs/pkgs/data/fonts/fira/default.nix
new file mode 100644
index 000000000000..4b79d14dd94e
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/fira/default.nix
@@ -0,0 +1,37 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "fira";
+  version = "4.202";
+
+  src = fetchFromGitHub {
+    owner = "mozilla";
+    repo = "Fira";
+    rev = version;
+    hash = "sha256-HLReqgL0PXF5vOpwLN0GiRwnzkjGkEVEyOEV2Z4R0oQ=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install --mode=-x -Dt $out/share/fonts/opentype otf/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://mozilla.github.io/Fira/";
+    description = "Sans-serif font for Firefox OS";
+    longDescription = ''
+      Fira Sans is a sans-serif font designed by Erik Spiekermann,
+      Ralph du Carrois, Anja Meiners and Botio Nikoltchev of Carrois
+      Type Design for Mozilla Firefox OS.  It is closely related to
+      Spiekermann's FF Meta typeface.  Available in Two, Four, Eight,
+      Hair, Thin, Ultra Light, Extra Light, Light, Book, Regular,
+      Medium, Semi Bold, Bold, Extra Bold, Heavy weights with
+      corresponding italic versions.
+    '';
+    license = licenses.ofl;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/fixedsys-excelsior/default.nix b/nixpkgs/pkgs/data/fonts/fixedsys-excelsior/default.nix
new file mode 100644
index 000000000000..dec1ea062bbc
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/fixedsys-excelsior/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "fixedsys-excelsior";
+  version = "3.00";
+
+  src = fetchurl {
+    url = "https://raw.githubusercontent.com/chrissimpkins/codeface/master/fonts/fixed-sys-excelsior/FSEX300.ttf";
+    hash = "sha256-buDzVzvF4z6TthbvYoL0m8DiJ6Map1Osdu0uPz0CBW0=";
+  };
+
+  dontUnpack = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -D $src $out/share/fonts/truetype/${pname}-${version}.ttf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    homepage = "http://www.fixedsysexcelsior.com/";
+    description = "Pan-unicode version of Fixedsys, a classic DOS font";
+    platforms = lib.platforms.all;
+    license = lib.licenses.publicDomain;
+    maintainers = [ lib.maintainers.picnoir ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/font-awesome/default.nix b/nixpkgs/pkgs/data/fonts/font-awesome/default.nix
new file mode 100644
index 000000000000..dfc808971b67
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/font-awesome/default.nix
@@ -0,0 +1,54 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+let
+  font-awesome = { version, hash, rev ? version }: stdenvNoCC.mkDerivation {
+    pname = "font-awesome";
+    inherit version;
+
+    src = fetchFromGitHub {
+      owner = "FortAwesome";
+      repo = "Font-Awesome";
+      inherit rev hash;
+    };
+
+    installPhase = ''
+      runHook preInstall
+
+      install -m444 -Dt $out/share/fonts/opentype {fonts,otfs}/*.otf
+
+      runHook postInstall
+    '';
+
+    meta = with lib; {
+      description = "Font Awesome - OTF font";
+      longDescription = ''
+        Font Awesome gives you scalable vector icons that can instantly be customized.
+        This package includes only the OTF font. For full CSS etc. see the project website.
+      '';
+      homepage = "https://fontawesome.com/";
+      license = licenses.ofl;
+      platforms = platforms.all;
+      maintainers = with maintainers; [ abaldeau johnazoidberg ];
+    };
+  };
+in
+{
+  # Keeping version 4 and 5 because version 6 is incompatible for some icons. That
+  # means that projects which depend on it need to actively convert the
+  # symbols. See:
+  # https://github.com/greshake/i3status-rust/issues/130
+  # https://fontawesome.com/how-to-use/on-the-web/setup/upgrading-from-version-4
+  # https://fontawesome.com/v6/docs/web/setup/upgrade/
+  v4 = font-awesome {
+    version = "4.7.0";
+    rev = "v4.7.0";
+    hash = "sha256-LL9zWFC+76wH74nqKszPQf2ZDfXq8BiH6tuiK43wYHA=";
+  };
+  v5 = font-awesome {
+    version = "5.15.4";
+    hash = "sha256-gd23ZplNY56sm1lfkU3kPXUOmNmY5SRnT0qlQZRNuBo=";
+  };
+  v6 = font-awesome {
+    version = "6.4.2";
+    hash = "sha256-/utIhn7CWxlWXshcCUj57WuObRmLTGhTfQo7L6FDHqA=";
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/fraunces/default.nix b/nixpkgs/pkgs/data/fonts/fraunces/default.nix
new file mode 100644
index 000000000000..21bab9002bcf
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/fraunces/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "fraunces";
+  version = "1.000";
+
+  src = fetchzip {
+    url = "https://github.com/undercasetype/Fraunces/releases/download/${version}/UnderCaseType_Fraunces_${version}.zip";
+    hash = "sha256-hu2G4Fs2I3TMEy/EBFnc88Pv3c8Mpc5rm3OwVvol7gQ=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 */static/otf/*.otf -t $out/share/fonts/opentype
+    install -Dm644 */static/ttf/*.ttf */*.ttf -t $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A display, “Old Style” soft-serif typeface inspired by early 20th century typefaces";
+    homepage = "https://github.com/undercasetype/Fraunces";
+    license = licenses.ofl;
+    maintainers = [ maintainers.marsam ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/freefont-ttf/default.nix b/nixpkgs/pkgs/data/fonts/freefont-ttf/default.nix
new file mode 100644
index 000000000000..4bf50d338587
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/freefont-ttf/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "freefont-ttf";
+  version = "20120503";
+
+  src = fetchzip {
+    url = "mirror://gnu/freefont/freefont-ttf-${version}.zip";
+    hash = "sha256-K3kVHGcDTxQ7N7XqSdwRObriVkBoBYPKHbyYrYvm7VU=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    mv *.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "GNU Free UCS Outline Fonts";
+    longDescription = ''
+      The GNU Freefont project aims to provide a set of free outline
+      (PostScript Type0, TrueType, OpenType...) fonts covering the ISO
+      10646/Unicode UCS (Universal Character Set).
+    '';
+    homepage = "https://www.gnu.org/software/freefont/";
+    license = lib.licenses.gpl3Plus;
+    platforms = lib.platforms.all;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/galatia-sil/default.nix b/nixpkgs/pkgs/data/fonts/galatia-sil/default.nix
new file mode 100644
index 000000000000..70881399d593
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/galatia-sil/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "galatia-sil";
+  version = "2.1";
+
+  src = fetchzip {
+    url = "https://software.sil.org/downloads/r/galatia/GalatiaSIL-${version}.zip";
+    hash = "sha256-7kXnTC5vpUOjcT40oNW6e32zFGejlWJq1J+p+5DiAos=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 $downloadedFile *.ttf -t $out/share/fonts/truetype
+    install -Dm644 $downloadedFile OFL.txt OFL-FAQ.txt FONTLOG.txt -t $out/share/doc/${pname}-${version}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://software.sil.org/galatia";
+    description = "Font designed to support Biblical Polytonic Greek";
+    longDescription = ''
+      Galatia SIL, designed to support Biblical Polytonic Greek, is a Unicode 3.1 font released under the SIL Open Font License. The font supports precomposed characters rather than decomposed characters. Thus, you must use a keyboard that outputs NFC encoding (precomposed).
+    '';
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.kmein ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/gandom-fonts/default.nix b/nixpkgs/pkgs/data/fonts/gandom-fonts/default.nix
new file mode 100644
index 000000000000..53ea5558c1f1
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/gandom-fonts/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "gandom-fonts";
+  version = "0.8";
+
+  src = fetchFromGitHub {
+    owner = "rastikerdar";
+    repo = "gandom-font";
+    rev = "v${version}";
+    hash = "sha256-nez8T0TtRLyXxIIR69LrVGde5ThCvA0fLXkYLyYQRV8=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    find . -name '*.ttf' -exec install -m444 -Dt $out/share/fonts/gandom-fonts {} \;
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/rastikerdar/gandom-font";
+    description = "A Persian (Farsi) Font - فونت (قلم) فارسی گندم";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/garamond-libre/default.nix b/nixpkgs/pkgs/data/fonts/garamond-libre/default.nix
new file mode 100644
index 000000000000..bd16afaf1895
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/garamond-libre/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "garamond-libre";
+  version = "1.4";
+
+  src = fetchzip {
+    url = "https://github.com/dbenjaminmiller/garamond-libre/releases/download/${version}/garamond-libre_${version}.zip";
+    stripRoot = false;
+    hash = "sha256-cD/JMICtb6MPIUcWs2VOTHnb/05ma0/KKtPyR4oJlIc=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.otf -t $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/dbenjaminmiller/garamond-libre";
+    description = "Garamond Libre font family";
+    maintainers = with maintainers; [ drupol ];
+    license = licenses.x11;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/gdouros/default.nix b/nixpkgs/pkgs/data/fonts/gdouros/default.nix
new file mode 100644
index 000000000000..c12e3f8e9fd3
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/gdouros/default.nix
@@ -0,0 +1,46 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+let
+  fonts = {
+    aegan     = { version = "13.00"; file = "Aegean.zip";       hash = "sha256-3HmCqCMZLN6zF1N/EirQOPnHKTGHoc4aHKoZxFYTB34="; description = "Aegean"; };
+    aegyptus  = { version = "13.00"; file = "Aegyptus.zip";     hash = "sha256-SSAK707xhpsUTq8tSBcrzNGunCYad58amtCqAWuevnY="; description = "Egyptian Hieroglyphs, Coptic, Meroitic"; };
+    akkadian  = { version = "13.00"; file = "Akkadian.zip";     hash = "sha256-wXiDYyfujAs6fklOCqXq7Ms7wP5RbPlpNVwkUy7CV4k="; description = "Sumero-Akkadian Cuneiform"; };
+    assyrian  = { version = "13.00"; file = "Assyrian.zip";     hash = "sha256-CZj1sc89OexQ0INb7pbEu5GfE/w2E5JmhjT8cosoLSg="; description = "Neo-Assyrian in Unicode with OpenType"; };
+    eemusic   = { version = "13.00"; file = "EEMusic.zip";      hash = "sha256-LxOcQOPEImw0wosxJotbOJRbe0qlK5dR+kazuhm99Kg="; description = "Byzantine Musical Notation in Unicode with OpenType"; };
+    maya      = { version = "13.00"; file = "Maya%20Hieroglyphs.zip"; hash = "sha256-PAwF1lGqm6XVf4NQCA8AFLGU40N0Xsn5Q8x9ikHJDhY="; description = "Maya Hieroglyphs"; };
+    symbola   = { version = "13.00"; file = "Symbola.zip";      hash = "sha256-TsHWmzkEyMa8JOZDyjvk7PDhm239oH/FNllizNFf398="; description = "Basic Latin, Greek, Cyrillic and many Symbol blocks of Unicode"; };
+    textfonts = { version = "13.00"; file = "Textfonts.zip";    hash = "sha256-7S3NiiyDvyYoDrLPt2z3P9bEEFOEZACv2sIHG1Tn6yI="; description = "Aroania, Anaktoria, Alexander, Avdira and Asea"; };
+    unidings  = { version = "13.00"; file = "Unidings.zip";     hash = "sha256-WUY+Ylphep6WuzqLQ3Owv+vK5Yuu/aAkn4GOFXL0uQY="; description = "Glyphs and Icons for blocks of The Unicode Standard"; };
+  };
+
+  mkpkg = pname: { version, file, hash, description }: stdenvNoCC.mkDerivation rec {
+    inherit pname version;
+
+    src = fetchzip {
+      url = "https://dn-works.com/wp-content/uploads/2020/UFAS-Fonts/${file}";
+      stripRoot = false;
+      inherit hash;
+    };
+
+    installPhase = ''
+      runHook preInstall
+
+      mkdir -p $out/share/{fonts/opentype,doc/${pname}}
+      mv *.otf                -t "$out/share/fonts/opentype"
+      mv *.{odt,ods,pdf,xlsx}       -t "$out/share/doc/${pname}"  || true  # install docs if any
+
+      runHook postInstall
+    '';
+
+    meta = {
+      inherit description;
+      # see https://dn-works.com/wp-content/uploads/2020/UFAS-Docs/License.pdf
+      # quite draconian: non-commercial, no modifications,
+      # no redistribution, "a single instantiation and no
+      # network installation"
+      license = lib.licenses.unfree;
+      homepage = "https://dn-works.com/ufas/";
+    };
+  };
+in
+lib.mapAttrs mkpkg fonts
diff --git a/nixpkgs/pkgs/data/fonts/gelasio/default.nix b/nixpkgs/pkgs/data/fonts/gelasio/default.nix
new file mode 100644
index 000000000000..cea8e439d36b
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/gelasio/default.nix
@@ -0,0 +1,38 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation {
+  pname = "gelasio";
+  version = "unstable-2022-06-09";
+
+  src = fetchFromGitHub {
+    owner = "SorkinType";
+    repo = "Gelasio";
+    rev = "a75c6d30a35f74cdbaea1813bdbcdb64bb11d3d5";
+    hash = "sha256-ncm0lSDPPPREdxTx3dGl6OGBn4FGAjFTlQpA6oDCdMI=";
+  };
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp fonts/ttf/*.ttf $out/share/fonts/truetype/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "a font which is metric-compatible with Microsoft's Georgia";
+    longDescription = ''
+      Gelasio is an original typeface which is metrics compatible with Microsoft's
+      Georgia in its Regular, Bold, Italic and Bold Italic weights. Interpolated
+      Medium, medium Italic, SemiBold and SemiBold Italic have now been added as well.
+    '';
+    homepage = "https://github.com/SorkinType/Gelasio";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ colemickens ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/data/fonts/gentium-book-basic/default.nix b/nixpkgs/pkgs/data/fonts/gentium-book-basic/default.nix
new file mode 100644
index 000000000000..5cbc31accf07
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/gentium-book-basic/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "gentium-book-basic";
+  version = "1.102";
+
+  src = fetchzip {
+    url = "http://software.sil.org/downloads/r/gentium/GentiumBasic_${lib.versions.major version}${lib.versions.minor version}.zip";
+    hash = "sha256-oCmpl95MJRfCV25cg/4cf8AwQWnoymXasSss1ziOPoE=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf                       -t $out/share/fonts/truetype
+    install -Dm644 FONTLOG.txt GENTIUM-FAQ.txt -t $out/share/doc/${pname}-${version}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://software.sil.org/gentium/";
+    description = "A high-quality typeface family for Latin, Cyrillic, and Greek";
+    maintainers = with maintainers; [ ];
+    license = licenses.ofl;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/gentium/default.nix b/nixpkgs/pkgs/data/fonts/gentium/default.nix
new file mode 100644
index 000000000000..ae454ef42232
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/gentium/default.nix
@@ -0,0 +1,45 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "gentium";
+  version = "6.200";
+
+  src = fetchzip {
+    url = "http://software.sil.org/downloads/r/gentium/GentiumPlus-${version}.zip";
+    hash = "sha256-gpVOtmF4Kp3y1Rm00c4o3WQEskO7mY1Z5SVaYHI0hzg=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+    install -Dm644 FONTLOG.txt README.txt -t $out/share/doc/${pname}-${version}
+    cp -r documentation $out/share/doc/${pname}-${version}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://software.sil.org/gentium/";
+    description = "A high-quality typeface family for Latin, Cyrillic, and Greek";
+    longDescription = ''
+      Gentium is a typeface family designed to enable the diverse ethnic groups
+      around the world who use the Latin, Cyrillic and Greek scripts to produce
+      readable, high-quality publications. It supports a wide range of Latin and
+      Cyrillic-based alphabets.
+
+      The design is intended to be highly readable, reasonably compact, and
+      visually attractive. The additional ‘extended’ Latin letters are designed
+      to naturally harmonize with the traditional 26 ones. Diacritics are
+      treated with careful thought and attention to their use. Gentium Plus also
+      supports both polytonic and monotonic Greek.
+
+      This package contains the regular and italic styles for the Gentium Plus
+      font family, along with documentation.
+    '';
+    downloadPage = "https://software.sil.org/gentium/download/";
+    maintainers = with maintainers; [ raskin rycee ];
+    license = licenses.ofl;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/glasstty-ttf/default.nix b/nixpkgs/pkgs/data/fonts/glasstty-ttf/default.nix
new file mode 100644
index 000000000000..1c64c3227c51
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/glasstty-ttf/default.nix
@@ -0,0 +1,18 @@
+{ runCommand, fetchurl, lib }:
+runCommand "glasstty-ttf" {
+  src = fetchurl {
+    url = "https://github.com/svofski/glasstty/raw/2c47ac1a0065f8b12d9732257993833d8227e3e5/Glass_TTY_VT220.ttf";
+    sha256 = "sha256-2NYJaSWNr1Seuqdd7nLjA7tAMs/SAvl3uAe3uDoLLO4=";
+  };
+  meta = with lib; {
+    maintainers = [ maintainers.pkharvey ];
+    homepage = "https://github.com/svofski/glasstty";
+    license = licenses.unlicense;
+    platforms = platforms.all;
+    description = "TrueType VT220 font";
+  };
+}
+''
+  mkdir -p $out/share/fonts/truetype
+  cp $src $out/share/fonts/truetype/Glass_TTY_VT220.ttf
+''
diff --git a/nixpkgs/pkgs/data/fonts/go-font/default.nix b/nixpkgs/pkgs/data/fonts/go-font/default.nix
new file mode 100644
index 000000000000..63d62ec2e82e
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/go-font/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "go-font";
+  version = "2.010";
+
+  src = fetchzip {
+    url = "https://go.googlesource.com/image/+archive/41969df76e82aeec85fa3821b1e24955ea993001/font/gofont/ttfs.tar.gz";
+    stripRoot = false;
+    hash = "sha256-rdzt51wY4b7HEr7W/0Ar/FB0zMyf+nKLsOT+CRSEP3o=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    mkdir -p $out/share/doc/go-font
+    mv *.ttf $out/share/fonts/truetype
+    mv README $out/share/doc/go-font/LICENSE
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://blog.golang.org/go-fonts";
+    description = "The Go font family";
+    changelog = "https://go.googlesource.com/image/+log/refs/heads/master/font/gofont";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ sternenseemann ];
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/gohufont/default.nix b/nixpkgs/pkgs/data/fonts/gohufont/default.nix
new file mode 100644
index 000000000000..37fb622e1310
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/gohufont/default.nix
@@ -0,0 +1,69 @@
+{ lib, stdenv, fetchurl, fetchFromGitHub
+, xorg, bdf2psf, bdftopcf
+, libfaketime
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gohufont";
+  version = "2.1";
+
+  src = fetchFromGitHub {
+    owner  = "hchargois";
+    repo   = "gohufont";
+    rev    = "cc36b8c9fed7141763e55dcee0a97abffcf08224";
+    sha256 = "1hmp11mrr01b29phw0xyj4h9b92qz19cf56ssf6c47c5j2c4xmbv";
+  };
+
+  nativeBuildInputs =
+    [ xorg.mkfontscale bdf2psf bdftopcf
+      xorg.fonttosfnt libfaketime
+    ];
+
+  buildPhase = ''
+    # convert bdf fonts to psf
+    build=$(pwd)
+    mkdir psf
+    cd ${bdf2psf}/share/bdf2psf
+    for i in $src/*.bdf; do
+      name=$(basename $i .bdf)
+      bdf2psf \
+        --fb "$i" standard.equivalents \
+        ascii.set+useful.set+linux.set 512 \
+        "$build/psf/$name.psf"
+    done
+    cd $build
+
+    # convert bdf fonts to pcf
+    for i in *.bdf $src/hidpi/*.bdf; do
+        name=$(basename $i .bdf)
+        bdftopcf -o "$name.pcf" "$i"
+    done
+
+    # convert unicode bdf fonts to otb
+    for i in *-uni*.bdf $src/hidpi/*-uni*.bdf; do
+        name=$(basename $i .bdf)
+        faketime -f "1970-01-01 00:00:01" \
+        fonttosfnt -v -o "$name.otb" "$i"
+    done
+  '';
+
+  installPhase = ''
+    # install the psf fonts (for the virtual console)
+    fontDir="$out/share/consolefonts"
+    install -D -m 644 -t "$fontDir" psf/*.psf
+
+    # install the pcf and otb fonts (for X11,GTK applications)
+    fontDir="$out/share/fonts/misc"
+    install -D -m 644 -t "$fontDir" *.pcf *.otb
+    mkfontdir "$fontDir"
+  '';
+
+  meta = with lib; {
+    description = ''
+      A monospace bitmap font well suited for programming and terminal use
+    '';
+    homepage    = "https://font.gohu.org/";
+    license     = licenses.wtfpl;
+    maintainers = with maintainers; [ rnhmjoj ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/google-fonts/default.nix b/nixpkgs/pkgs/data/fonts/google-fonts/default.nix
new file mode 100644
index 000000000000..d0f055166805
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/google-fonts/default.nix
@@ -0,0 +1,73 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, fonts ? []
+}:
+
+stdenvNoCC.mkDerivation {
+  pname = "google-fonts";
+  version = "unstable-2023-10-20";
+
+  # Adobe Blank is split out in a separate output,
+  # because it causes crashes with `libfontconfig`.
+  # It has an absurd number of symbols
+  outputs = [ "out" "adobeBlank" ];
+
+  src = fetchFromGitHub {
+    owner = "google";
+    repo = "fonts";
+    rev = "990be3ed8f77e31c26bf07b148d6a74b8e6241cf";
+    sha256 = "sha256-ffLXzaniHkWxGQpvlJpiO6/SAdbI3FONgTaq8Xu+WY0=";
+  };
+
+  postPatch = ''
+    # These directories need to be removed because they contain
+    # older or duplicate versions of fonts also present in other
+    # directories. This causes non-determinism in the install since
+    # the installation order of font files with the same name is not
+    # fixed.
+    rm -rv ofl/cabincondensed \
+      ofl/signikanegative \
+      ofl/signikanegativesc \
+      ofl/*_todelist \
+      axisregistry/tests/data
+
+    if find . -name "*.ttf" | sed 's|.*/||' | sort | uniq -c | sort -n | grep -v '^.*1 '; then
+      echo "error: duplicate font names"
+      exit 1
+    fi
+  '';
+
+  dontBuild = true;
+
+  # The font files are in the fonts directory and use two naming schemes:
+  # FamilyName-StyleName.ttf and FamilyName[param1,param2,...].ttf
+  # This installs all fonts if fonts is empty and otherwise only
+  # the specified fonts by FamilyName. To do this, it invokes
+  # `find` 2 times for every font, anyone is free to do this
+  # in a more efficient way.
+  fonts = map (font: builtins.replaceStrings [" "] [""] font) fonts;
+  installPhase = ''
+    adobeBlankDest=$adobeBlank/share/fonts/truetype
+    install -m 444 -Dt $adobeBlankDest ofl/adobeblank/AdobeBlank-Regular.ttf
+    rm -r ofl/adobeblank
+    dest=$out/share/fonts/truetype
+  '' + (if fonts == [] then ''
+    find . -name '*.ttf' -exec install -m 444 -Dt $dest '{}' +
+  '' else ''
+    for font in $fonts; do
+      find . -name "$font-*.ttf" -exec install -m 444 -Dt $dest '{}' +
+      find . -name "$font[*.ttf" -exec install -m 444 -Dt $dest '{}' +
+    done
+  '');
+
+  meta = with lib; {
+    homepage = "https://fonts.google.com";
+    description = "Font files available from Google Fonts";
+    license = with licenses; [ asl20 ofl ufl ];
+    platforms = platforms.all;
+    hydraPlatforms = [];
+    maintainers = with maintainers; [ manveru ];
+    sourceProvenance = [ sourceTypes.binaryBytecode ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/goudy-bookletter-1911/default.nix b/nixpkgs/pkgs/data/fonts/goudy-bookletter-1911/default.nix
new file mode 100644
index 000000000000..14997cd62b6e
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/goudy-bookletter-1911/default.nix
@@ -0,0 +1,28 @@
+{ lib, fetchFromGitHub, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "goudy-bookletter-1911";
+  version = "2011-05-11";
+
+  src = fetchFromGitHub {
+    owner = "theleagueof";
+    repo = finalAttrs.pname;
+    rev = "85ff5b834b4f63feb36fd2053949c19660580e48";
+    hash = "sha256-11axs1+SRQj+1lYTq2LYf1I65WrrvB/UnAgZkHPP1N8=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A public domain font based on Frederic Goudy’s Kennerley Oldstyle";
+    homepage = "https://www.theleagueofmoveabletype.com/goudy-bookletter-1911";
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ minijackson ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/gubbi/default.nix b/nixpkgs/pkgs/data/fonts/gubbi/default.nix
new file mode 100644
index 000000000000..9ae46d089925
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/gubbi/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenv, fetchFromGitHub, fontforge }:
+
+stdenv.mkDerivation rec {
+  pname = "gubbi-font";
+  version = "1.3";
+
+  src = fetchFromGitHub {
+    owner = "aravindavk";
+    repo = "gubbi";
+    rev = "v${version}";
+    sha256 = "10w9i3pmjvs1b3xclrgn4q5a95ss4ipldbxbqrys2dmfivx7i994";
+  };
+
+  nativeBuildInputs = [ fontforge ];
+
+  dontConfigure = true;
+
+  preBuild = "patchShebangs generate.pe";
+
+  installPhase = "install -Dm444 -t $out/share/fonts/truetype/ Gubbi.ttf";
+
+  meta = with lib; {
+    inherit (src.meta) homepage;
+    description = "A Kannada font";
+    license = licenses.gpl3Plus;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ ehmry ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/gyre/default.nix b/nixpkgs/pkgs/data/fonts/gyre/default.nix
new file mode 100644
index 000000000000..254766d1de28
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/gyre/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "gyre-fonts";
+  version = "2.005";
+
+  src = fetchzip {
+    url = "http://www.gust.org.pl/projects/e-foundry/tex-gyre/whole/tg-${version}otf.zip";
+    stripRoot = false;
+    hash = "sha256-+6IufuFf+IoLXoZEPlfHUNgRhKrQNBEZ1OwPD9/uOjg=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp *.otf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "OpenType fonts from the Gyre project, suitable for use with (La)TeX";
+    longDescription = ''
+      The Gyre project started in 2006, and will
+      eventually include enhanced releases of all 35 freely available
+      PostScript fonts distributed with Ghostscript v4.00.  These are
+      being converted to OpenType and extended with diacritical marks
+      covering all modern European languages and then some
+    '';
+    homepage = "http://www.gust.org.pl/projects/e-foundry/tex-gyre/index_html#Readings";
+    license = lib.licenses.lppl13c;
+    platforms = lib.platforms.all;
+    maintainers = with lib.maintainers; [ bergey ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/hack/default.nix b/nixpkgs/pkgs/data/fonts/hack/default.nix
new file mode 100644
index 000000000000..e39815a2e153
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/hack/default.nix
@@ -0,0 +1,43 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "hack-font";
+  version = "3.003";
+
+  src = fetchzip {
+    url = "https://github.com/chrissimpkins/Hack/releases/download/v${version}/Hack-v${version}-ttf.zip";
+    hash = "sha256-SxF4kYp9aL/9L9EUniquFadzWt/+PcvhUQOIOvCrFRM=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A typeface designed for source code";
+    longDescription = ''
+      Hack is hand groomed and optically balanced to be a workhorse face for
+      code. It has deep roots in the libre, open source typeface community and
+      expands upon the contributions of the Bitstream Vera & DejaVu projects.
+      The face has been re-designed with a larger glyph set, modifications of
+      the original glyph shapes, and meticulous attention to metrics.
+    '';
+    homepage = "https://sourcefoundry.org/hack/";
+
+    /*
+      "The font binaries are released under a license that permits unlimited
+      print, desktop, and web use for commercial and non-commercial
+      applications. It may be embedded and distributed in documents and
+      applications. The source is released in the widely supported UFO format
+      and may be modified to derive new typeface branches. The full text of
+      the license is available in LICENSE.md" (From the GitHub page)
+    */
+    license = licenses.free;
+    maintainers = with maintainers; [ dywedir ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/hackgen/default.nix b/nixpkgs/pkgs/data/fonts/hackgen/default.nix
new file mode 100644
index 000000000000..6ea5312a98aa
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/hackgen/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "hackgen-font";
+  version = "2.9.0";
+
+  src = fetchzip {
+    url = "https://github.com/yuru7/HackGen/releases/download/v${version}/HackGen_v${version}.zip";
+    hash = "sha256-Ah2oVP8nzFiYA76kMPa9+YHQwFxq4i1muwkcmC7TzOk=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/hackgen
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A composite font of Hack and GenJyuu-Goghic";
+    homepage = "https://github.com/yuru7/HackGen";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ natsukium ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/hackgen/nerdfont.nix b/nixpkgs/pkgs/data/fonts/hackgen/nerdfont.nix
new file mode 100644
index 000000000000..c75e1d306084
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/hackgen/nerdfont.nix
@@ -0,0 +1,27 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "hackgen-nf-font";
+  version = "2.9.0";
+
+  src = fetchzip {
+    url = "https://github.com/yuru7/HackGen/releases/download/v${version}/HackGen_NF_v${version}.zip";
+    hash = "sha256-Lh4WQJjeP4JuR8jSXpRNSrjRsNPmNXSx5AItNYMJL2A=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/hackgen-nf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A composite font of Hack, GenJyuu-Gothic and nerd-fonts";
+    homepage = "https://github.com/yuru7/HackGen";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ natsukium ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/hanazono/default.nix b/nixpkgs/pkgs/data/fonts/hanazono/default.nix
new file mode 100644
index 000000000000..f6dd5baa60c2
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/hanazono/default.nix
@@ -0,0 +1,42 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "hanazono";
+  version = "20170904";
+
+  src = fetchzip {
+    url = "mirror://osdn/hanazono-font/68253/hanazono-${version}.zip";
+    stripRoot = false;
+    hash = "sha256-qd0q4wQnHBGLT7C+UQIiOHnxCnRCscMZcj3P5RRxD1U=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+    install -Dm644 *.txt -t $out/share/doc/hanazono
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Japanese Mincho-typeface TrueType font";
+    homepage = "https://fonts.jp/hanazono/";
+    longDescription = ''
+      Hanazono Mincho typeface is a Japanese TrueType font that developed with a
+      support of Grant-in-Aid for Publication of Scientific Research Results
+      from Japan Society for the Promotion of Science and the International
+      Research Institute for Zen Buddhism (IRIZ), Hanazono University. also with
+      volunteers who work together on glyphwiki.org.
+    '';
+
+    # Dual-licensed under OFL and the following:
+    # This font is a free software.
+    # Unlimited permission is granted to use, copy, and distribute it, with
+    # or without modification, either commercially and noncommercially.
+    # THIS FONT IS PROVIDED "AS IS" WITHOUT WARRANTY.
+    license = [ licenses.ofl licenses.free ];
+    maintainers = with maintainers; [ mathnerd314 ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/hannom/default.nix b/nixpkgs/pkgs/data/fonts/hannom/default.nix
new file mode 100644
index 000000000000..d91de86c532b
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/hannom/default.nix
@@ -0,0 +1,38 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "hannom";
+  version = "2005";
+
+  src = fetchzip {
+    url = "mirror://sourceforge/vietunicode/hannom/hannom%20v${version}/hannomH.zip";
+    stripRoot = false;
+    hash = "sha256-Oh8V72tYvVA6Sk0f9UTIkRQYjdUbEB/fmCSaRYfyoP8=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    mv *.ttf -t $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "UNICODE Han Nom Font Set";
+    longDescription = ''
+      The true type fonts HAN NOM A and HAN NOM B have been developed by Chan
+      Nguyen Do Quoc Bao (Germany), To Minh Tam (USA) and Ni sinh Thien Vien Vien
+      Chieu (Vietnam). Their work got started in 2001, completed in 2003, and
+      publicized in 2005. These two true type fonts can be used with WIN-2000 or
+      WIN-XP and Office XP or Office 2003 to display Han and Nom characters with
+      code points by the Unicode Standard. Two sets of true type fonts are
+      available with high and low resolutions.
+    '';
+    homepage = "https://vietunicode.sourceforge.net/fonts/fonts_hannom.html";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ wegank ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/hasklig/default.nix b/nixpkgs/pkgs/data/fonts/hasklig/default.nix
new file mode 100644
index 000000000000..b0d37aca9e12
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/hasklig/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "hasklig";
+  version = "1.1";
+
+  src = fetchzip {
+    url = "https://github.com/i-tu/Hasklig/releases/download/${version}/Hasklig-${version}.zip";
+    stripRoot = false;
+    hash = "sha256-jsPQtjuegMePt4tB1dZ9mq15LSxXBYwtakbq4od/sko=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/opentype *.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/i-tu/Hasklig";
+    description = "A font with ligatures for Haskell code based off Source Code Pro";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ davidrusu ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/helvetica-neue-lt-std/default.nix b/nixpkgs/pkgs/data/fonts/helvetica-neue-lt-std/default.nix
new file mode 100644
index 000000000000..61dc6ba14e29
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/helvetica-neue-lt-std/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation {
+  name = "helvetica-neue-lt-std";
+  version = "2014.08.16"; # date of most recent file in distribution
+
+  src = fetchzip {
+    url = "https://web.archive.org/web/20190823153624/http://ephifonts.com/downloads/helvetica-neue-lt-std.zip";
+    stripRoot = false;
+    hash = "sha256-ytoTTrnwN1lMw/gTxS4DRAq+tV5WzB2xHP4vVxLZ1ZI=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 'Helvetica Neue LT Std'/*.otf -t $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://web.archive.org/web/20190926040940/http://www.ephifonts.com/free-helvetica-font-helvetica-neue-lt-std.html";
+    description = "Helvetica Neue LT Std font";
+    longDescription = ''
+      Helvetica Neue Lt Std is one of the most highly rated and complete
+      fonts of all time. Developed in early 1983, this font has well
+      camouflaged heights and weights. The structure of the word is uniform
+      throughout all the characters.
+
+      The legibility with Helvetica Neue LT Std is said to have improved as
+      opposed to other fonts. The tail of it is much longer in this
+      font. The numbers are well spaced and defined with high accuracy. The
+      punctuation marks are heavily detailed as well.
+    '';
+    license = licenses.unfree;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/hermit/default.nix b/nixpkgs/pkgs/data/fonts/hermit/default.nix
new file mode 100644
index 000000000000..3ff770522d9e
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/hermit/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "hermit";
+  version = "2.0";
+
+  src = fetchzip {
+    url = "https://pcaro.es/d/otf-${pname}-${version}.tar.gz";
+    stripRoot = false;
+    hash = "sha256-RYXZ2yJ8BIxsgeEwhXz7g0NnWG3kMPZoJaOLMUQyWWQ=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/opentype *.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "monospace font designed to be clear, pragmatic and very readable";
+    homepage = "https://pcaro.es/p/hermit";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ dtzWill ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/hubot-sans/default.nix b/nixpkgs/pkgs/data/fonts/hubot-sans/default.nix
new file mode 100644
index 000000000000..5db592ae8b4f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/hubot-sans/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, fetchzip
+, stdenvNoCC
+}:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "hubot-sans";
+  version = "1.0.1";
+
+  src = fetchzip {
+    url = "https://github.com/github/hubot-sans/releases/download/v${finalAttrs.version}/Hubot-Sans.zip";
+    hash = "sha256-EWTyoGNqyZcqlF1H1Tdcodc8muHIo8C9gbSPAjiogRk=";
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 Hubot\ Sans/TTF/*.ttf -t $out/share/fonts/truetype/
+    install -Dm644 Hubot\ Sans/OTF/*.otf -t $out/share/fonts/opentype/
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A variable font from GitHub";
+    homepage = "https://github.com/github/hubot-sans";
+    changelog = "https://github.com/github/hubot-sans/releases/tag/v${finalAttrs.version}";
+    license = lib.licenses.ofl;
+    longDescription = ''
+      Hubot Sans is Mona Sans’s robotic sidekick. The typeface is designed with
+      more geometric accents to lend a technical and idiosyncratic feel—perfect
+      for headers and pull-quotes. Made together with Degarism.
+
+      Hubot Sans is a variable font. Variable fonts enable different variations
+      of a typeface to be incorporated into one single file, and are supported
+      by all major browsers.
+    '';
+    maintainers = with lib.maintainers; [ drupol ];
+    platforms = lib.platforms.all;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/hyperscrypt/default.nix b/nixpkgs/pkgs/data/fonts/hyperscrypt/default.nix
new file mode 100644
index 000000000000..c72e4b9e19a0
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/hyperscrypt/default.nix
@@ -0,0 +1,43 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "hyperscrypt";
+  version = "1.1";
+
+  src = fetchzip {
+    url = "https://gitlab.com/StudioTriple/Hyper-Scrypt/-/archive/${version}/Hyper-Scrypt-${version}.zip";
+    hash = "sha256-ONlAB9C/GYK6KmOaiHCYErkS6OlQ3TUnoumNDHGZnes=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 fonts/HyperScrypt_Web/*.ttf -t $out/share/fonts/truetype/
+    install -Dm644 fonts/HyperScrypt_Web/*.otf fonts/*.otf -t $out/share/fonts/opentype/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://velvetyne.fr/fonts/hyper-scrypt/";
+    description = "A modern stencil typeface inspired by stained glass technique";
+    longDescription = ''
+      The Hyper Scrypt typeface was designed for the Hyper Chapelle
+      exhibition. It was commissioned by AAAAA Atelier to Studio
+      Triple's designer Jérémy Landes.  Hyper Scrypt is a modern
+      stencil typeface inspired by the stained glass technique used in
+      the Metz cathedral. It borrows the stained glass method, drawing
+      holes for the light with black lead. This creates a reverse
+      typeface, where the shapes of the letters are drawn by their
+      counters. Hyper Scrypt is at the intersection between 3 metals :
+      the sacred lead of stained glass, the lead of print characters
+      and the heavy metal. Despite its organic look inherited for the
+      molted metal, Hyper Scrypt is based upon a rigorous grid,
+      allowing some neat alignements between shapes in multi lines
+      layouts.
+    '';
+    license = licenses.ofl;
+    maintainers = with maintainers; [ leenaars ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/i-dot-ming/default.nix b/nixpkgs/pkgs/data/fonts/i-dot-ming/default.nix
new file mode 100644
index 000000000000..fb2679b2eba2
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/i-dot-ming/default.nix
@@ -0,0 +1,49 @@
+{ lib, stdenvNoCC, fetchurl, writeScript }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "i.ming";
+  version = "8.00";
+
+  src = fetchurl {
+    url = "https://raw.githubusercontent.com/ichitenfont/I.Ming/${version}/${version}/I.Ming-${version}.ttf";
+    hash = "sha256-6345629OdKz6lTnD3Vjtp6DzsYy0ojaL0naXGrtdZvw=";
+  };
+
+  dontUnpack = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -DT -m444 $src $out/share/fonts/truetype/I.Ming/I.Ming.ttf
+
+    runHook postInstall
+  '';
+
+  passthru = {
+    updateScript = writeScript "updater" ''
+      #!/usr/bin/env nix-shell
+      #!nix-shell -i bash -p curl gnused
+      set -e
+      version=$(curl -i -s https://github.com/ichitenfont/I.Ming/releases/latest | sed -n -E 's|^location.*releases/tag/([0-9.]+).*$|\1|p')
+      if [[ $version != ${version} ]]; then
+        tmp=$(mktemp -d)
+        curl -Lo $tmp/I.Ming.ttf https://raw.githubusercontent.com/ichitenfont/I.Ming/$version/$version/I.Ming-$version.ttf
+        install -DT -m444 $tmp/I.Ming.ttf $tmp/share/fonts/truetype/I.Ming/I.Ming.ttf
+        rm $tmp/I.Ming.ttf
+        hash=$(nix hash path --type sha256 --base32 --sri $tmp)
+        sed -i -E \
+          -e "s/version = \"[0-9.]+\"/version = \"$version\"/" \
+          -e "s|hash = \".*\"|hash = \"$hash\"|" \
+          pkgs/data/fonts/i-dot-ming/default.nix
+      fi
+    '';
+  };
+
+  meta = with lib; {
+    description = "An open source Pan-CJK serif typeface";
+    homepage = "https://github.com/ichitenfont/I.Ming";
+    license = licenses.ipa;
+    platforms = platforms.all;
+    maintainers = [ maintainers.linsui ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/ia-writer-duospace/default.nix b/nixpkgs/pkgs/data/fonts/ia-writer-duospace/default.nix
new file mode 100644
index 000000000000..483ed98737d0
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ia-writer-duospace/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation {
+  pname = "ia-writer-duospace";
+  version = "unstable-2018-07-21";
+
+  src = fetchFromGitHub {
+    owner = "iaolo";
+    repo = "iA-Fonts";
+    rev = "55edf60f544078ab1e14987bc67e9029a200e0eb";
+    hash = "sha256-/ifzOScILLuFkjFIgpy0ArCcelgealbpypKvZ46xApU=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/opentype
+    cp "iA Writer Duospace/OTF (Mac)/"*.otf $out/share/fonts/opentype/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "iA Writer Duospace Typeface";
+    homepage = "https://ia.net/topics/in-search-of-the-perfect-writing-font";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.marsam ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/ibm-plex/default.nix b/nixpkgs/pkgs/data/fonts/ibm-plex/default.nix
new file mode 100644
index 000000000000..21321d83af34
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ibm-plex/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "ibm-plex";
+  version = "6.2.0";
+
+  src = fetchzip {
+    url = "https://github.com/IBM/plex/releases/download/v${version}/OpenType.zip";
+    hash = "sha256-RvD/aeZrvltJiuAHqYMNaRsjLgTdcC1/5zqlcd4qKAA=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 */*.otf IBM-Plex-Sans-JP/unhinted/* -t $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "IBM Plex Typeface";
+    homepage = "https://www.ibm.com/plex/";
+    changelog = "https://github.com/IBM/plex/raw/v${version}/CHANGELOG.md";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/inconsolata/default.nix b/nixpkgs/pkgs/data/fonts/inconsolata/default.nix
new file mode 100644
index 000000000000..57069fadbc5e
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/inconsolata/default.nix
@@ -0,0 +1,25 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation {
+  pname = "inconsolata";
+  version = "unstable-2021-01-19";
+
+  src = fetchFromGitHub {
+    owner = "google";
+    repo = "fonts";
+    rev = "f113126dc4b9b1473d9354a86129c9d7b837aa1a";
+    sha256 = "0safw5prpa63mqcyfw3gr3a535w4c9hg5ayw5pkppiwil7n3pyxs";
+  };
+
+  installPhase = ''
+    install -m644 --target $out/share/fonts/truetype/inconsolata -D $src/ofl/inconsolata/*.ttf
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.levien.com/type/myfonts/inconsolata.html";
+    description = "A monospace font for both screen and print";
+    maintainers = with maintainers; [ mikoim raskin ];
+    license = licenses.ofl;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/inconsolata/lgc.nix b/nixpkgs/pkgs/data/fonts/inconsolata/lgc.nix
new file mode 100644
index 000000000000..945fafcfcc52
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/inconsolata/lgc.nix
@@ -0,0 +1,52 @@
+{lib, stdenv, fetchFromGitHub, fontforge}:
+
+stdenv.mkDerivation rec {
+  pname = "inconsolata-lgc";
+  version = "1.3";
+
+  src = fetchFromGitHub {
+    owner = "MihailJP";
+    repo = "Inconsolata-LGC";
+    rev = "8adfef7a7316fcd2e9a5857054c7cdb2babeb35d";
+    sha256 = "0dqjj3mlc28s8ljnph6l086b4j9r5dly4fldq59crycwys72zzai";
+  };
+
+  nativeBuildInputs = [ fontforge ];
+
+  installPhase = ''
+    find . -name '*.ttf' -exec install -m444 -Dt $out/share/fonts/truetype {} \;
+    find . -name '*.otf' -exec install -m444 -Dt $out/share/fonts/opentype {} \;
+    install -m444 -Dt $out/share/doc/${pname}-${version} LICENSE README
+  '';
+
+  meta = with lib; {
+    description = "Fork of Inconsolata font, with proper support of Cyrillic and Greek";
+    longDescription = ''
+      Inconsolata is one of the most suitable font for programmers created by Raph
+      Levien. Since the original Inconsolata does not contain Cyrillic alphabet,
+      it was slightly inconvenient for not a few programmers from Russia.
+
+      Inconsolata LGC is a modified version of Inconsolata with added the Cyrillic
+      alphabet which directly descends from Inconsolata Hellenic supporting modern
+      Greek.
+
+      Inconsolata LGC is licensed under SIL OFL.
+
+
+      Inconsolata LGC changes:
+      * Cyrillic glyphs added.
+      * Italic and Bold font added.
+
+      Changes inherited from Inconsolata Hellenic:
+      * Greek glyphs.
+
+      Changes inherited from Inconsolata-dz:
+      * Straight quotation marks.
+    '';
+
+    # See `License.txt' for details.
+    license = licenses.ofl;
+    homepage = "https://github.com/MihailJP/Inconsolata-LGC";
+    maintainers = with maintainers; [ avnik rht ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/input-fonts/default.nix b/nixpkgs/pkgs/data/fonts/input-fonts/default.nix
new file mode 100644
index 000000000000..a5ffc2ec33a5
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/input-fonts/default.nix
@@ -0,0 +1,98 @@
+{ lib
+, stdenv
+, fetchzip
+, python3
+, config
+, acceptLicense ? config.input-fonts.acceptLicense or false
+}:
+
+let
+
+  throwLicense = throw ''
+    Input is available free of charge for private/unpublished usage. This includes things like your personal coding app or for composing plain text documents.
+    To use it, you need to agree to its license: https://input.djr.com/license/
+
+    You can express acceptance by setting acceptLicense to true in your
+    configuration. Note that this is not a free license so it requires allowing
+    unfree licenses.
+
+    configuration.nix:
+      nixpkgs.config.allowUnfree = true;
+      nixpkgs.config.input-fonts.acceptLicense = true;
+
+    config.nix:
+      allowUnfree = true;
+      input-fonts.acceptLicense = true;
+
+    If you would like to support this project, consider purchasing a license at <http://input.djr.com/buy>.
+  '';
+
+  releaseDate = "2015-06-24";
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "input-fonts";
+  version = "1.2";
+
+  src =
+    assert !acceptLicense -> throwLicense;
+    fetchzip {
+      name = "input-fonts-${version}";
+      # Add .zip parameter so that zip unpackCmd can match it.
+      url = "https://input.djr.com/build/?fontSelection=whole&a=0&g=0&i=0&l=0&zero=0&asterisk=0&braces=0&preset=default&line-height=1.2&accept=I+do&email=&.zip";
+      sha256 = "BESZ4Bjgm2hvQ7oPpMvYSlE8EqvQjqHZtXWIovqyIzA=";
+      stripRoot = false;
+
+      postFetch = ''
+        # Reset the timestamp to release date for determinism.
+        PATH=${lib.makeBinPath [ python3.pkgs.fonttools ]}:$PATH
+        for ttf_file in $out/Input_Fonts/*/*/*.ttf; do
+          ttx_file=$(dirname "$ttf_file")/$(basename "$ttf_file" .ttf).ttx
+          ttx "$ttf_file"
+          rm "$ttf_file"
+          touch -m -t ${builtins.replaceStrings [ "-" ] [ "" ] releaseDate}0000 "$ttx_file"
+          ttx --recalc-timestamp "$ttx_file"
+          rm "$ttx_file"
+        done
+      '';
+    };
+
+  dontConfigure = true;
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    find Input_Fonts -name "*.ttf" -exec cp -a {} "$out"/share/fonts/truetype/ \;
+    mkdir -p "$out"/share/doc
+    cp -a *.txt "$out"/share/doc/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Fonts for Code, from Font Bureau";
+    longDescription = ''
+      Input is a font family designed for computer programming, data,
+      and text composition. It was designed by David Jonathan Ross
+      between 2012 and 2014 and published by The Font Bureau. It
+      contains a wide array of styles so you can fine-tune the
+      typography that works best in your editing environment.
+
+      Input Mono is a monospaced typeface, where all characters occupy
+      a fixed width. Input Sans and Serif are proportional typefaces
+      that are designed with all of the features of a good monospace —
+      generous spacing, large punctuation, and easily distinguishable
+      characters — but without the limitations of a fixed width.
+    '';
+    homepage = "https://input.djr.com/";
+    license = licenses.unfree;
+    maintainers = with maintainers; [
+      jtojnar
+      romildo
+    ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/inriafonts/default.nix b/nixpkgs/pkgs/data/fonts/inriafonts/default.nix
new file mode 100644
index 000000000000..1ca1ce2f9098
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/inriafonts/default.nix
@@ -0,0 +1,40 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "inriafonts";
+  version = "1.200";
+
+  src = fetchFromGitHub {
+    owner = "BlackFoundry";
+    repo = "InriaFonts";
+    rev = "v${version}";
+    hash = "sha256-CMKkwGuUEVYavnFi15FCk7Xloyk97w+LhAZ6mpIv5xg=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/truetype fonts/*/TTF/*.ttf
+    install -m444 -Dt $out/share/fonts/opentype fonts/*/OTF/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://black-foundry.com/work/inria";
+    description = "Inria Sans and Inria Serif";
+    longDescription = ''
+      Inria Sans and Inria Serif are the two members of a type family
+      design for the communication of Inria, the French national institute
+      dedicated to numeric research. The Institut needed a font
+      showing its values at the crossroad of humanity, technology,
+      excellence and creativity. Black[Foudry] created a humanist
+      typeface with a unapologetically contemporary design as the
+      Sans-serif part and a more rational axis and drawing for the
+      serif. Both members comes in 3 weights with matching italics.
+    '';
+    license = licenses.ofl;
+    maintainers = with maintainers; [ leenaars ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/intel-one-mono/default.nix b/nixpkgs/pkgs/data/fonts/intel-one-mono/default.nix
new file mode 100644
index 000000000000..f9876e8f0a25
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/intel-one-mono/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenvNoCC, fetchurl, unzip }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "intel-one-mono";
+  version = "1.3.0";
+
+  srcs = [
+    (fetchurl {
+      url = "https://github.com/intel/intel-one-mono/releases/download/V${finalAttrs.version}/otf.zip";
+      hash = "sha256-iZIfkXH+GplVwES4LaQBIaCWs7OKmEto9J2SpzvagSs=";
+    })
+    (fetchurl {
+      url = "https://github.com/intel/intel-one-mono/releases/download/V${finalAttrs.version}/ttf.zip";
+      hash = "sha256-EeUTEMuoTHKmuO5Uj0jjiDRF9t7jxbIy45nTWozlgfc=";
+    })
+  ];
+
+  sourceRoot = ".";
+
+  nativeBuildInputs = [
+    unzip
+  ];
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm644 -t $out/share/fonts/truetype/ ttf/*.ttf
+    install -Dm644 -t $out/share/fonts/opentype/ otf/*.otf
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Intel One Mono, an expressive monospaced font family that’s built with clarity, legibility, and the needs of developers in mind";
+    homepage = "https://github.com/intel/intel-one-mono";
+    changelog = "https://github.com/intel/intel-one-mono/releases/tag/V${finalAttrs.version}";
+    license = licenses.ofl;
+    maintainers = [ maintainers.simoneruffini ];
+    platforms = platforms.all;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/inter/default.nix b/nixpkgs/pkgs/data/fonts/inter/default.nix
new file mode 100644
index 000000000000..0cbf67902f1c
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/inter/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "inter";
+  version = "4.0";
+
+  src = fetchzip {
+    url = "https://github.com/rsms/inter/releases/download/v${version}/Inter-${version}.zip";
+    stripRoot = false;
+    hash = "sha256-hFK7xFJt69n+98+juWgMvt+zeB9nDkc8nsR8vohrFIc=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp Inter.ttc InterVariable*.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://rsms.me/inter/";
+    description = "A typeface specially designed for user interfaces";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ demize dtzWill ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/iosevka/bin.nix b/nixpkgs/pkgs/data/fonts/iosevka/bin.nix
new file mode 100644
index 000000000000..4b0f78e298ab
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/iosevka/bin.nix
@@ -0,0 +1,41 @@
+{ stdenv, lib, fetchurl, iosevka, unzip
+, variant ? ""
+}:
+
+let
+  name = if lib.hasPrefix "sgr" variant then variant
+    else "iosevka" + lib.optionalString (variant != "") "-" + variant;
+
+  variantHashes = import ./variants.nix;
+  validVariants = map (lib.removePrefix "iosevka-")
+    (builtins.attrNames (builtins.removeAttrs variantHashes [ "iosevka" ]));
+in stdenv.mkDerivation rec {
+  pname = "${name}-bin";
+  version = "27.3.5";
+
+  src = fetchurl {
+    url = "https://github.com/be5invis/Iosevka/releases/download/v${version}/ttc-${name}-${version}.zip";
+    sha256 = variantHashes.${name} or (throw ''
+      No such variant "${variant}" for package iosevka-bin.
+      Valid variants are: ${lib.concatStringsSep ", " validVariants}.
+    '');
+  };
+
+  nativeBuildInputs = [ unzip ];
+
+  dontInstall = true;
+
+  unpackPhase = ''
+    mkdir -p $out/share/fonts
+    unzip -d $out/share/fonts/truetype $src
+  '';
+
+  meta = {
+    inherit (iosevka.meta) homepage downloadPage description license platforms;
+    maintainers = with lib.maintainers; [
+      montchr
+    ];
+  };
+
+  passthru.updateScript = ./update-bin.sh;
+}
diff --git a/nixpkgs/pkgs/data/fonts/iosevka/comfy.nix b/nixpkgs/pkgs/data/fonts/iosevka/comfy.nix
new file mode 100644
index 000000000000..fb788b287635
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/iosevka/comfy.nix
@@ -0,0 +1,67 @@
+{ lib, iosevka, fetchFromGitHub, buildNpmPackage }:
+
+let
+  sets = [
+    # Family                  | Shapes | Spacing | Style      | Ligatures |
+    # ------------------------+--------+---------+------------+-----------|
+    "comfy"                   # Sans   | Compact | Monospaced | Yes       |
+    "comfy-fixed"             # Sans   | Compact | Monospaced | No        |
+    "comfy-duo"               # Sans   | Compact | Duospaced  | Yes       |
+    # ------------------------+--------+---------+------------+-----------|
+    "comfy-motion"            # Slab   | Compact | Monospaced | Yes       |
+    "comfy-motion-fixed"      # Slab   | Compact | Monospaced | No        |
+    "comfy-motion-duo"        # Slab   | Compact | Duospaced  | Yes       |
+    # ------------------------+--------+---------+------------+-----------|
+    "comfy-wide"              # Sans   | Wide    | Monospaced | Yes       |
+    "comfy-wide-fixed"        # Sans   | Wide    | Monospaced | No        |
+    "comfy-wide-duo"          # Sans   | Wide    | Duospaced  | Yes       |
+    # ------------------------+--------+---------+------------+-----------|
+    "comfy-wide-motion"       # Slab   | Wide    | Monospaced | Yes       |
+    "comfy-wide-motion-fixed" # Slab   | Wide    | Monospaced | No        |
+    "comfy-wide-motion-duo"   # Slab   | Wide    | Duospaced  | Yes       |
+  ];
+  version = "1.4.0";
+  src = fetchFromGitHub {
+    owner = "protesilaos";
+    repo = "iosevka-comfy";
+    rev = version;
+    sha256 = "sha256-kfEEJ6F1/dsG9CSLWcr0QOOnQxHPgPgb4QhgFrHTklE=";
+  };
+  privateBuildPlan = src.outPath + "/private-build-plans.toml";
+  makeIosevkaFont = set:
+    let superBuildNpmPackage = buildNpmPackage; in
+    (iosevka.override {
+      inherit set privateBuildPlan;
+      buildNpmPackage = args: superBuildNpmPackage
+        (args // {
+          inherit version;
+
+          src = fetchFromGitHub {
+            owner = "be5invis";
+            repo = "iosevka";
+            rev = "f6e57fbf0b1242ad3069d45c815d79b9d68871a2";
+            hash = "sha256-cS3SCKzUjVXF+n0Rt5eBLzieATB7W+hwEbzh6OQrMo4=";
+          };
+
+          npmDepsHash = "sha256-c+ltdh5e3+idclYfqp0Xh9IUwoj7XYP1uzJG6+a5gFU=";
+
+          meta = with lib; {
+            inherit (src.meta) homepage;
+            description = ''
+              Customised build of the Iosevka typeface, with a consistent
+              rounded style and overrides for almost all individual glyphs
+              in both roman (upright) and italic (slanted) variants.
+            '';
+            license = licenses.ofl;
+            platforms = iosevka.meta.platforms;
+            maintainers = [ maintainers.DamienCassou ];
+          };
+        });
+    });
+in
+builtins.listToAttrs (builtins.map
+  (set: {
+    name = set;
+    value = makeIosevkaFont set;
+  })
+  sets)
diff --git a/nixpkgs/pkgs/data/fonts/iosevka/default.nix b/nixpkgs/pkgs/data/fonts/iosevka/default.nix
new file mode 100644
index 000000000000..6993a1641de5
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/iosevka/default.nix
@@ -0,0 +1,146 @@
+{ stdenv
+, lib
+, buildNpmPackage
+, fetchFromGitHub
+, darwin
+, remarshal
+, ttfautohint-nox
+  # Custom font set options.
+  # See https://typeof.net/Iosevka/customizer
+  # Can be a raw TOML string, or a Nix attrset.
+
+  # Ex:
+  # privateBuildPlan = ''
+  #   [buildPlans.iosevka-custom]
+  #   family = "Iosevka Custom"
+  #   spacing = "normal"
+  #   serifs = "sans"
+  #
+  #   [buildPlans.iosevka-custom.variants.design]
+  #   capital-j = "serifless"
+  #
+  #   [buildPlans.iosevka-custom.variants.italic]
+  #   i = "tailed"
+  # '';
+
+  # Or:
+  # privateBuildPlan = {
+  #   family = "Iosevka Custom";
+  #   spacing = "normal";
+  #   serifs = "sans";
+  #
+  #   variants = {
+  #     design.capital-j = "serifless";
+  #     italic.i = "tailed";
+  #   };
+  # }
+, privateBuildPlan ? null
+  # Extra parameters. Can be used for ligature mapping.
+  # It must be a raw TOML string.
+
+  # Ex:
+  # extraParameters = ''
+  #   [[iosevka.compLig]]
+  #   unicode = 57808 # 0xe1d0
+  #   featureTag = 'XHS0'
+  #   sequence = "+>"
+  # '';
+, extraParameters ? null
+  # Custom font set name. Required if any custom settings above.
+, set ? null
+}:
+
+assert (privateBuildPlan != null) -> set != null;
+assert (extraParameters != null) -> set != null;
+
+buildNpmPackage rec {
+  pname = if set != null then "iosevka-${set}" else "iosevka";
+  version = "27.3.5";
+
+  src = fetchFromGitHub {
+    owner = "be5invis";
+    repo = "iosevka";
+    rev = "v${version}";
+    hash = "sha256-dqXr/MVOuEmAMueaRWsnzY9MabhnyBRtLR9IDVLN79I=";
+  };
+
+  npmDepsHash = "sha256-bux8aFBP1Pi5pAQY1jkNTqD2Ny2j+QQs+QRaXWJj6xg=";
+
+  nativeBuildInputs = [
+    remarshal
+    ttfautohint-nox
+  ] ++ lib.optionals stdenv.isDarwin [
+    # libtool
+    darwin.cctools
+  ];
+
+  buildPlan =
+    if builtins.isAttrs privateBuildPlan then
+      builtins.toJSON { buildPlans.${pname} = privateBuildPlan; }
+    else
+      privateBuildPlan;
+
+  inherit extraParameters;
+  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 (extraParameters != null) ''
+      echo -e "\n" >> params/parameters.toml
+      cat "$extraParametersPath" >> params/parameters.toml
+    ''}
+    runHook postConfigure
+  '';
+
+  buildPhase = ''
+    export HOME=$TMPDIR
+    runHook preBuild
+    npm run build --no-update-notifier -- --jCmd=$NIX_BUILD_CORES --verbose=9 ttf::$pname
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    fontdir="$out/share/fonts/truetype"
+    install -d "$fontdir"
+    install "dist/$pname/ttf"/* "$fontdir"
+    runHook postInstall
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    homepage = "https://typeof.net/Iosevka/";
+    downloadPage = "https://github.com/be5invis/Iosevka/releases";
+    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;
+    maintainers = with maintainers; [
+      ttuegel
+      babariviere
+      rileyinman
+      AluisioASG
+      lunik1
+    ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/iosevka/node.nix b/nixpkgs/pkgs/data/fonts/iosevka/node.nix
new file mode 100644
index 000000000000..0983d3e127be
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/iosevka/node.nix
@@ -0,0 +1,17 @@
+# This file has been generated by node2nix 1.7.0. Do not edit!
+
+{pkgs ? import <nixpkgs> {
+    inherit system;
+  }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-8_x"}:
+
+let
+  nodeEnv = import ../../../development/node-packages/node-env.nix {
+    inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
+    inherit nodejs;
+    libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
+  };
+in
+import ./node-packages.nix {
+  inherit (pkgs) fetchurl fetchgit;
+  inherit nodeEnv;
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/data/fonts/iosevka/update-bin.sh b/nixpkgs/pkgs/data/fonts/iosevka/update-bin.sh
new file mode 100755
index 000000000000..68f93f1f26e6
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/iosevka/update-bin.sh
@@ -0,0 +1,28 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash -p curl jq
+
+set -euo pipefail
+cd "$(dirname "${BASH_SOURCE[0]}")"
+
+release=$(curl -s https://api.github.com/repos/be5invis/Iosevka/releases/latest)
+
+oldVersion=$(nix-instantiate --eval -E 'with import ../../../.. {}; lib.getVersion iosevka-bin' | tr -d '"')
+version=$(echo "$release" | jq -r .tag_name | tr -d v)
+
+if test "$oldVersion" = "$version"; then
+    echo "New version same as old version, nothing to do." >&2
+    exit 0
+fi
+
+sed -i "s/$oldVersion/$version/" bin.nix
+
+{
+    echo '# This file was autogenerated. DO NOT EDIT!'
+    echo '{'
+    for asset in $(echo "$release" | jq -r '.assets[].name | select(startswith("ttc"))'); do
+        printf '  %s = "%s";\n' \
+            $(echo "$asset" | sed -r "s/^ttc-(.*)-$version.zip$/\1/") \
+            $(nix-prefetch-url "https://github.com/be5invis/Iosevka/releases/download/v$version/$asset")
+    done
+    echo '}'
+} >variants.nix
diff --git a/nixpkgs/pkgs/data/fonts/iosevka/variants.nix b/nixpkgs/pkgs/data/fonts/iosevka/variants.nix
new file mode 100644
index 000000000000..5e71e08b78da
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/iosevka/variants.nix
@@ -0,0 +1,95 @@
+# This file was autogenerated. DO NOT EDIT!
+{
+  iosevka = "0s37z4yml026pmaj6gpc603mry34hlzg67b0v9rblb90rx7xqlii";
+  iosevka-aile = "1vpn9mg48xy4jmbs804zmisaj1mnvwv5b9c0iy6mrwkd5m7gcqfb";
+  iosevka-curly = "138wwgn03cx0lkgs2mbydiyggjmbmy3iz4wgn17sbp5d7m7g0sp3";
+  iosevka-curly-slab = "024miwl9y57rxmc4hnyjk0j861wapyfy4jpg5q61jjh6nji3qwrk";
+  iosevka-etoile = "0gcdpzi6riy6x9qcjzmvb2kcdh209d8zbbc78b95ymgyndzwp3k2";
+  iosevka-slab = "1gny1az6lrg24dx9qrrpbrq85mkn6684970gbvl8wjh1pmkv2w14";
+  iosevka-ss01 = "06kw96biyyp35cc4x5pr3bf08f72020nvwcz12wk0qms02rz37s0";
+  iosevka-ss02 = "0yd18n2vrxbpf4kccad5q0cr24j04grz57l2jpgr3j3qiwz53zn1";
+  iosevka-ss03 = "01203jgpx8hsxs2jq5py8404y1cz95m5bsdzgya3nhyfslix7dxz";
+  iosevka-ss04 = "1c2xs689fqzzvbv72wb7pfwx687hrl8vzvakjbl317qpzmlrlbkr";
+  iosevka-ss05 = "0whfsl9ma1590zmks0r7lywc0sfy6mq74p8mhkmds6h35nri9djj";
+  iosevka-ss06 = "065lqb0w4cvhk7jadic2xn4pdq0rrg4f4b0gpc5z0xa2fsvw4rir";
+  iosevka-ss07 = "0bhl2p0zrzdn9vhl5ndfdzd7658qsaci41l6vpcsl5x9np3ii2jg";
+  iosevka-ss08 = "1ka2ii29v4aqqiwfbjcwsqsj2gpa46mpnv7d11rgn49n4j0isk1p";
+  iosevka-ss09 = "08n44fjsas94d7q1x9az58z5p786gxh8665yyhvhjzh76pzrkbwj";
+  iosevka-ss10 = "136pvfw6lab3vwzrx45cqkh1n6r8srahd9jbi9li02r19m78qp6f";
+  iosevka-ss11 = "0wgnzq1vfibxgb50dcwjsvf20jvjvhp1xwsbh1zpqqsh1kr89bln";
+  iosevka-ss12 = "0ql1xhjk2alrvyryvjaw54z9gnh4gi58nhskrhnkz4mdlr7a6xr3";
+  iosevka-ss13 = "0ivk20l8y2g0s7729wjc4h9bdqvjn859ij8vaccl12ql58i2phhb";
+  iosevka-ss14 = "0ib2ynpk7lcisbmcrrd2wlia7rh243zq1hys6ln2r3gd75m6hvbq";
+  iosevka-ss15 = "0yp0n7d5wwwykmzlc41fywc1mx06khp3xiy6gad9bng7mavpx91c";
+  iosevka-ss16 = "0gm0b50zhc2hc6l3qpl4q3jk8rcr9bh8y0i65xcv3bm456753l4v";
+  iosevka-ss17 = "0yf244n7161zk1csxnb7zx2c95q79jibplvczqfh2k8as3r4xw07";
+  iosevka-ss18 = "1886h5dzswspd0j3hs0d6m271qqsfp3zkihyp9acpf2v4r56nmmn";
+  sgr-iosevka = "1kl1wkgda764qqyyk14s0gfb2qavsfvc9zbr30z7zdkcqxk383gd";
+  sgr-iosevka-aile = "115ynw0dysf9473j6jami7yf79i6rlhm7a019fxlfcqnm2k3zz5r";
+  sgr-iosevka-curly = "010g7cgd3r8dw48mfdmcqzymqn8mqn5xnnvinvilahxq0qaj2s4w";
+  sgr-iosevka-curly-slab = "1fk67ay7bs1s1qajlrib06n0y1ii1fjlxdqrj2dvzlji8ac35hqc";
+  sgr-iosevka-etoile = "1gf696k4f4hh1yh664d361x0n65sh6q0i3n8as5id2vpzcjbn83w";
+  sgr-iosevka-fixed = "12v438imi2891b4ra3c48imd0n429aa889myhkglrky1bfxwwpw2";
+  sgr-iosevka-fixed-curly = "1v4vv48an8l9a5diavxap328d3qd6iy6hbwkkn64db2vxwmkdml7";
+  sgr-iosevka-fixed-curly-slab = "0xbz45qkd9paghrdx4s1gxgnn872fmywmr7il0v5yir81wys1z97";
+  sgr-iosevka-fixed-slab = "1w7qsg6a2g27izbmqshly2bnsbwdf2rhymvnq30vqgb2f1a6rlwq";
+  sgr-iosevka-fixed-ss01 = "1f4fi4h3fl7c3b0maj2l9df4yfs4pqj9rq5f7kk9kl2jnk0zq6yy";
+  sgr-iosevka-fixed-ss02 = "18q603zbi1dk1z8n215z2kyi3rcxik6m6cffihml0f1sb39rh3r7";
+  sgr-iosevka-fixed-ss03 = "05xs1z82ck01f9x3vhc74ajbgj9ms14bbmbcz0cf18sx03hpyz84";
+  sgr-iosevka-fixed-ss04 = "00rb7580xppnvjph6az2ldhgagahvivirzax2pf3fxd5an08zmla";
+  sgr-iosevka-fixed-ss05 = "1smjnzjhkxkb9m79d8ynp30846zggb88z7qxd2q58iadq8narx2q";
+  sgr-iosevka-fixed-ss06 = "0wqd4pyv66axwsnicbpzidghvh3cx2lyzjmj66734rqz8slsrjb6";
+  sgr-iosevka-fixed-ss07 = "1xbs7mjvl8mvi4jhmxnfadvvgpyvyh7y4yqn8vhgbcxp84fzgy3j";
+  sgr-iosevka-fixed-ss08 = "0x2kkfffhapj4vnfpdv49zr4wrf02sw6467qrky9sf9phkwa40vh";
+  sgr-iosevka-fixed-ss09 = "0z436cps3rb8kfm7pxjjs8p3bjwrg86p549nd6fvgp67p05xx38r";
+  sgr-iosevka-fixed-ss10 = "0qpjdgzqb5yadp4bz26kmwjdmpaak7s2mj9km2g565bci096cri4";
+  sgr-iosevka-fixed-ss11 = "1i306ai7drhca8ammi6dz8j6v68mjyxwc35zzg801shgy8a00scd";
+  sgr-iosevka-fixed-ss12 = "0aza67vz3mrq9ah5pm7lyahdbh0dhzzp8v4hy5slmy8a766ha9gm";
+  sgr-iosevka-fixed-ss13 = "022nrapzv1s2a5davh1bpqgm46r04fbns5x6z3826ydsrwkapfs7";
+  sgr-iosevka-fixed-ss14 = "023f8j5rzivmqg61larm5kjyb7sd8prqilzd99xp1b97zi4iy0kg";
+  sgr-iosevka-fixed-ss15 = "0xb85wsfha7z0krlnb1nhzqd4cva13dvrp8kpfpnmmz1alpvgx0x";
+  sgr-iosevka-fixed-ss16 = "0n3chagxlypxsj1zb2r6z3vjfix15pc3nc8sx5cc9j4inb7v5z5v";
+  sgr-iosevka-fixed-ss17 = "0kzk2llpwi9plbn3jw203chr8ahpq6kbv9b4i9maf3ljvgdy7nyc";
+  sgr-iosevka-fixed-ss18 = "1mzv3zkxrd1lsri1niiqvlkpzhxy9m0gr3ygxzrrfj3f6p6wzq87";
+  sgr-iosevka-slab = "1fsl0qsvmfhxjc6y5g8d90x39mz5hzw55xfnwzjjifls6igc8kd4";
+  sgr-iosevka-ss01 = "0z18akfqsgr6qcqrcrrwpfdswzk8if9cdhahqgjnkw90qm4m6pyq";
+  sgr-iosevka-ss02 = "0x0bc72y835xlz9k2xbbpgccrgswkg7w1hia86x6d91kgj7whmg4";
+  sgr-iosevka-ss03 = "0v56qc9aj2k1vs7wxnni21hflady4n5qi05gysp193n7j440l3ci";
+  sgr-iosevka-ss04 = "0nidrw3pjcn5fz2a6ysvdkqah31rzgnsg4z7p804h9cnqwl2b2m4";
+  sgr-iosevka-ss05 = "0khphs4d28sas5i31kbbj2zv0b45vc0p05d9kyg3azl4hl72ic41";
+  sgr-iosevka-ss06 = "0qmr33qv890jqygz6gllh1g0fvvxyjmla0hb02zcgljrccwq7jyd";
+  sgr-iosevka-ss07 = "09952mnal5mdz5fqfg4ayidvxcc8sfwv7d127vdzxhawg60ikkss";
+  sgr-iosevka-ss08 = "1ymf7j5jx2jdh6n910d89k71m95hg05dp6g6mvv0c7m4yf5wd7m3";
+  sgr-iosevka-ss09 = "0gh7rx8fzbx61jba34kcwlazxg7ar4y6vp1h6aysn30fv7q9p7rp";
+  sgr-iosevka-ss10 = "0i72r3xllg8am12n700zylc1a8nc4xnj5zxhfhvlk1czdhv7dln6";
+  sgr-iosevka-ss11 = "0hs8b9fmjwxbl08652zfkgdmq0dds43jsr2qd3npmg6cg2xdiz2n";
+  sgr-iosevka-ss12 = "0crs18k93v2xsry8fmf07wfpl3n7ixdn2sy7xls4ijk5wk0nd6vr";
+  sgr-iosevka-ss13 = "1fg883qjpqpcxwh9bwc88nzihisr212q1fdrrzy8q3p9vy322j5j";
+  sgr-iosevka-ss14 = "1ix85cr0prgfrxckzgf2xdnh9zv6d8v2f4lf6syq0rax2wpdxdk7";
+  sgr-iosevka-ss15 = "098fjkjlgnzmw4wgr2d7vx627xiq7n19rc2x5f6qhqcfxcvayf0f";
+  sgr-iosevka-ss16 = "0ibfr10h6gxnimpq0bbp2n61a4y4rdkwa5x6m8hlxndxi801zy8j";
+  sgr-iosevka-ss17 = "11zx7lpp8xy67x35a6089s3fq0i1yqfdkckxnp2f32szv67midp0";
+  sgr-iosevka-ss18 = "1zdfk1a9sixn7as75sjf7sgh3qhhhs819305i9aw93dy4ghvc4zc";
+  sgr-iosevka-term = "091rkh4abm90hakq78w7r3ks9kcyx7kpcfvvcx8ydq7qammc2064";
+  sgr-iosevka-term-curly = "0kqxraz8jl7w97yf4x9jp7rkbkxjj85yghw0f70g3idxmzk2n4fh";
+  sgr-iosevka-term-curly-slab = "1q10n7wckzv1y9dq0b3jj61h39mcjhkga310pm8r0mjh59jsqxxk";
+  sgr-iosevka-term-slab = "1pzd5gzz7s1gawvvqnh8gfc6cm5c56ajvkc6c3fnjycl1v9fr3fg";
+  sgr-iosevka-term-ss01 = "0za9kwg389znql9jycs02xnmn9wi9c9ganwlqrsmazgcg6cxksds";
+  sgr-iosevka-term-ss02 = "0qli57cva503qvxqx86lrl6mjmbq9n0i04198vzjs5ad151iqk2a";
+  sgr-iosevka-term-ss03 = "0yfp4a6m9dl67kc8wa4skzrlkh1ysh0a0ndv3gvknaidzpqyigwh";
+  sgr-iosevka-term-ss04 = "1b8yvv3i66d0j4z8fh94q97hqgw404pf1z57p7kx31nlgs0p26kq";
+  sgr-iosevka-term-ss05 = "1x6adciw3irh6xsxjlw668l0cz094zin1p4f83allc2bkphq3f9w";
+  sgr-iosevka-term-ss06 = "1z73jak1ffc1mdnfh3j1z33b8sj5bbh5s86mn7ki5fy5wvq65sih";
+  sgr-iosevka-term-ss07 = "1f028x2m39xphvx265qzh3mrirj3rkwv9jmr5q4qdpvpk7xnbra9";
+  sgr-iosevka-term-ss08 = "1i0k7k21fmnb0s5ri840a45ycxmm9dz2zw59n4sxivyv70fhhsfc";
+  sgr-iosevka-term-ss09 = "1qn891rqxha2sr9w2h885xx4fnyc9scjqqp148dpsnn32cg7bqpr";
+  sgr-iosevka-term-ss10 = "02a1nxcv4q6s6kvlxrq7b9xdym2j7in40pkw05df8wqmlqzmgv2b";
+  sgr-iosevka-term-ss11 = "0fwjn4a5p65q5rdbb9wb979ff4k5r2ifh2x99jhj0xhwpy8dza1i";
+  sgr-iosevka-term-ss12 = "1ycga16psqw4jh6gzxji6sbvhlq6488hkkqwsh1h860gjql0ckm6";
+  sgr-iosevka-term-ss13 = "1f715vxs5j5ham5ihpxzq36ykn2nm2f62gg8s3yzsyp9s58sndmd";
+  sgr-iosevka-term-ss14 = "1l2s2naa77xv1dwng6lw0zccbndaln8viamsgmbrqjwfdisbrlzw";
+  sgr-iosevka-term-ss15 = "1wmkpilp06633rdaf5dzbw48srikh5a8jvk8prcwka4flrs5crnq";
+  sgr-iosevka-term-ss16 = "0ccxfk87qp4lr3g67lzbphw6rknvc78h66bbpq5smk0diad8q3nc";
+  sgr-iosevka-term-ss17 = "1hm0m9gr8pwbp34fsg9dxcmawn2czmx908gajv4miq4wg0ivsz8k";
+  sgr-iosevka-term-ss18 = "1ylbvygxdn3f2crkrywhj0jc15hdpwh08f925xxygq3vrshd22r6";
+}
diff --git a/nixpkgs/pkgs/data/fonts/ipaexfont/default.nix b/nixpkgs/pkgs/data/fonts/ipaexfont/default.nix
new file mode 100644
index 000000000000..986eab13a257
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ipaexfont/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation {
+  pname = "ipaexfont";
+  version = "004.01";
+
+  src = fetchzip {
+    url = "https://moji.or.jp/wp-content/ipafont/IPAexfont/IPAexfont00401.zip";
+    hash = "sha256-/87qJIb+v4qrtDy+ApfXxh59reOk+6RhGqFN98mc+8Q=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Japanese font package with Mincho and Gothic fonts";
+    longDescription = ''
+      IPAex font is a Japanese font developed by the Information-technology
+      Promotion Agency of Japan. It provides both Mincho and Gothic fonts,
+      suitable for both display and printing.
+
+      This is the successor to the IPA fonts.
+    '';
+    homepage = "https://moji.or.jp/ipafont/";
+    license = licenses.ipa;
+    maintainers = with maintainers; [ gebner ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/ipafont/default.nix b/nixpkgs/pkgs/data/fonts/ipafont/default.nix
new file mode 100644
index 000000000000..8a1f91da34fb
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ipafont/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation {
+  pname = "ipafont";
+  version = "003.03";
+
+  src = fetchzip {
+    url = "https://moji.or.jp/wp-content/ipafont/IPAfont/IPAfont00303.zip";
+    hash = "sha256-EzUNKuDNHr0NIXiqX09w99wtz1r2pZurR/izdgzTcAs=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Japanese font package with Mincho and Gothic fonts";
+    longDescription = ''
+      IPAFont is a Japanese font developed by the Information-technology
+      Promotion Agency of Japan. It provides both Mincho and Gothic fonts,
+      suitable for both display and printing.
+    '';
+    homepage = "https://moji.or.jp/ipafont/";
+    license = lib.licenses.ipa;
+    maintainers = [ lib.maintainers.auntie ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/ir-standard-fonts/default.nix b/nixpkgs/pkgs/data/fonts/ir-standard-fonts/default.nix
new file mode 100644
index 000000000000..d59c111c96b7
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ir-standard-fonts/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "ir-standard-fonts";
+  version = "20170121";
+
+  src = fetchFromGitHub {
+    owner = "molaeiali";
+    repo = pname;
+    rev = version;
+    hash = "sha256-o1d8SBX3nf7g6Gh4OP+JRS+LNrHTQOIiHhW3VNCkDV0=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    find . -name '*.ttf' -exec install -m444 -Dt $out/share/fonts/ir-standard-fonts {} \;
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/morealaz/ir-standard-fonts";
+    description = "Iran Supreme Council of Information and Communication Technology (SCICT) standard Persian fonts series";
+    # License information is unavailable.
+    license = licenses.unfree;
+    platforms = platforms.all;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/iwona/default.nix b/nixpkgs/pkgs/data/fonts/iwona/default.nix
new file mode 100644
index 000000000000..df5569f53797
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/iwona/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenvNoCC, texlive }:
+
+stdenvNoCC.mkDerivation rec {
+  inherit (src) pname version;
+
+  src = texlive.pkgs.iwona;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 fonts/opentype/nowacki/iwona/*.otf -t $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A two-element sans-serif typeface, created by Małgorzata Budyta";
+    homepage = "https://jmn.pl/en/kurier-i-iwona/";
+    # "[...] GUST Font License (GFL), which is a free license, legally
+    # equivalent to the LaTeX Project Public # License (LPPL), version 1.3c or
+    # later." - GUST website
+    license = src.meta.license;
+    maintainers = with maintainers; [ siddharthist ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/jetbrains-mono/default.nix b/nixpkgs/pkgs/data/fonts/jetbrains-mono/default.nix
new file mode 100644
index 000000000000..bdc732ef1ab1
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/jetbrains-mono/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "jetbrains-mono";
+  version = "2.304";
+
+  src = fetchzip {
+    url = "https://github.com/JetBrains/JetBrainsMono/releases/download/v${version}/JetBrainsMono-${version}.zip";
+    sha256 = "sha256-rv5A3F1zdcUJkmw09st1YxmEIkIoYJaMYGyZjic8jfc=";
+    stripRoot = false;
+  };
+
+  dontPatch = true;
+  dontConfigure = true;
+  dontBuild = true;
+  doCheck = false;
+  dontFixup = true;
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm644 -t $out/share/fonts/truetype/ fonts/ttf/*.ttf
+    install -Dm644 -t $out/share/fonts/truetype/ fonts/variable/*.ttf
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A typeface made for developers";
+    homepage = "https://jetbrains.com/mono/";
+    changelog = "https://github.com/JetBrains/JetBrainsMono/blob/v${version}/Changelog.md";
+    license = licenses.ofl;
+    maintainers = [ maintainers.marsam ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/jost/default.nix b/nixpkgs/pkgs/data/fonts/jost/default.nix
new file mode 100644
index 000000000000..f5d3a1e48b5a
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/jost/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "jost";
+  version = "3.5";
+
+  src = fetchzip {
+    url = "https://github.com/indestructible-type/Jost/releases/download/${version}/Jost.zip";
+    hash = "sha256-ne81bMhmTzNZ/GGIzb7nCYh19vNLK+hJ3cP/zDxtiGM=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 fonts/otf/*.otf -t $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/indestructible-type/Jost";
+    description = "A sans serif font by Indestructible Type";
+    license = licenses.ofl;
+    maintainers = [ maintainers.ar1a ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/joypixels/default.nix b/nixpkgs/pkgs/data/fonts/joypixels/default.nix
new file mode 100644
index 000000000000..593817275669
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/joypixels/default.nix
@@ -0,0 +1,103 @@
+{ lib, stdenv
+, fetchurl
+, config
+, acceptLicense ? config.joypixels.acceptLicense or false
+}:
+
+let
+  inherit (stdenv.hostPlatform.parsed) kernel;
+
+  systemSpecific = {
+    darwin = rec {
+      systemTag =  "nix-darwin";
+      capitalized = systemTag;
+      fontFile = "JoyPixels-SBIX.ttf";
+    };
+  }.${kernel.name} or rec {
+    systemTag = "nixos";
+    capitalized = "NixOS";
+    fontFile = "joypixels-android.ttf";
+  };
+
+  joypixels-free-license = with systemSpecific; {
+    spdxId = "LicenseRef-JoyPixels-Free-6.0";
+    fullName = "JoyPixels Free License Agreement 6.0";
+    url = "https://cdn.joypixels.com/distributions/${systemTag}/license/free-license.pdf";
+    free = false;
+  };
+
+  joypixels-license-appendix = with systemSpecific; {
+    spdxId = "LicenseRef-JoyPixels-NixOS-Appendix";
+    fullName = "JoyPixels ${capitalized} License Appendix";
+    url = "https://cdn.joypixels.com/distributions/${systemTag}/appendix/joypixels-license-appendix.pdf";
+    free = false;
+  };
+
+  throwLicense = throw ''
+    Use of the JoyPixels font requires acceptance of the license.
+      - ${joypixels-free-license.fullName} [1]
+      - ${joypixels-license-appendix.fullName} [2]
+
+    You can express acceptance by setting acceptLicense to true in your
+    configuration. Note that this is not a free license so it requires allowing
+    unfree licenses.
+
+    configuration.nix:
+      nixpkgs.config.allowUnfree = true;
+      nixpkgs.config.joypixels.acceptLicense = true;
+
+    config.nix:
+      allowUnfree = true;
+      joypixels.acceptLicense = true;
+
+    [1]: ${joypixels-free-license.url}
+    [2]: ${joypixels-license-appendix.url}
+  '';
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "joypixels";
+  version = "6.6.0";
+
+  src = assert !acceptLicense -> throwLicense;
+    with systemSpecific; fetchurl {
+      name = fontFile;
+      url = "https://cdn.joypixels.com/distributions/${systemTag}/font/${version}/${fontFile}";
+      sha256 = {
+        darwin = "0qcmb2vn2nykyikzgnlma627zhks7ksy1vkgvpcmqwyxq4bd38d7";
+      }.${kernel.name} or "17gjaz7353zyprmds64p01qivy2r8pwf88nvvhi57idas2qd604n";
+    };
+
+  dontUnpack = true;
+
+  installPhase = with systemSpecific; ''
+    runHook preInstall
+
+    install -Dm644 $src $out/share/fonts/truetype/${fontFile}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "The finest emoji you can use legally (formerly EmojiOne)";
+    longDescription = ''
+      Updated for 2021! JoyPixels 6.6 includes 3,559 originally crafted icon
+      designs and is 100% Unicode 13.1 compatible. We offer the largest
+      selection of files ranging from png, svg, iconjar, sprites, and fonts.
+    '';
+    homepage = "https://www.joypixels.com/fonts";
+    license =
+      let
+        free-license = joypixels-free-license;
+        appendix = joypixels-license-appendix;
+      in with systemSpecific; {
+        spdxId = "LicenseRef-JoyPixels-Free-6.0-with-${capitalized}-Appendix";
+        fullName = "${free-license.fullName} with ${appendix.fullName}";
+        url = free-license.url;
+        appendixUrl = appendix.url;
+        free = false;
+      };
+    maintainers = with maintainers; [ toonn jtojnar ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/julia-mono/default.nix b/nixpkgs/pkgs/data/fonts/julia-mono/default.nix
new file mode 100644
index 000000000000..fa44d5d6449d
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/julia-mono/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "JuliaMono-ttf";
+  version = "0.051";
+
+  src = fetchzip {
+    url = "https://github.com/cormullion/juliamono/releases/download/v${version}/${pname}.tar.gz";
+    stripRoot = false;
+    hash = "sha256-JdoCblRW9Vih7zQyvTb/VXhZJJDNV0sPDfTQ+wRKotE=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    mv *.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A monospaced font for scientific and technical computing";
+    longDescription = ''
+      JuliaMono is a monospaced typeface designed for use in text editing
+      environments that require a wide range of specialist and technical Unicode
+      characters. It was intended as a fun experiment to be presented at the
+      2020 JuliaCon conference in Lisbon, Portugal (which of course didn’t
+      physically happen in Lisbon, but online).
+    '';
+    maintainers = with maintainers; [ suhr ];
+    platforms = with platforms; all;
+    homepage = "https://juliamono.netlify.app/";
+    license = licenses.ofl;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/junction/default.nix b/nixpkgs/pkgs/data/fonts/junction/default.nix
new file mode 100644
index 000000000000..b629477f6144
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/junction/default.nix
@@ -0,0 +1,34 @@
+{ lib, fetchFromGitHub, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "junction";
+  version = "2014-05-29";
+
+  src = fetchFromGitHub {
+    owner = "theleagueof";
+    repo = finalAttrs.pname;
+    rev = "fb73260e86dd301b383cf6cc9ca8e726ef806535";
+    hash = "sha256-Zqh23HPWGed+JkADYjYdsVNRxqJDvC9xhnqAqWZ3Eu8=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Junction is a a humanist sans-serif font";
+    longDescription = ''
+      Junction is a a humanist sans-serif, and the first open-source type
+      project started by The League of Moveable Type. It has been updated
+      (2014) to include additional weights (light/bold) and expanded
+      international support.
+    '';
+    homepage = "https://www.theleagueofmoveabletype.com/junction";
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ minijackson ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/junicode/default.nix b/nixpkgs/pkgs/data/fonts/junicode/default.nix
new file mode 100644
index 000000000000..919d77f10f4f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/junicode/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "junicode";
+  version = "2.203";
+
+  src = fetchzip {
+    url = "https://github.com/psb1558/Junicode-font/releases/download/v${version}/Junicode_${version}.zip";
+    hash = "sha256-RG12veiZXqjfK2gONmauhGReuLEkqxbQ4h4PEwaih/U=";
+  };
+
+  outputs = [ "out" "doc" ];
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm 444 -t $out/share/fonts/truetype TTF/*.ttf VAR/*.ttf
+    install -Dm 444 -t $out/share/fonts/opentype OTF/*.otf
+    install -Dm 444 -t $out/share/fonts/woff2 WOFF2/*.woff2
+
+    install -Dm 444 -t $doc/share/doc/${pname}-${version} docs/*.pdf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    homepage = "https://github.com/psb1558/Junicode-font";
+    description = "A Unicode font for medievalists";
+    maintainers = with lib.maintainers; [ ivan-timokhin ];
+    license = lib.licenses.ofl;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/kacst/default.nix b/nixpkgs/pkgs/data/fonts/kacst/default.nix
new file mode 100644
index 000000000000..aa5ed8b547da
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/kacst/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "kacst";
+  version = "2.01";
+
+  src = fetchurl {
+    url = "mirror://debian/pool/main/f/fonts-${pname}/fonts-${pname}_${version}+mry.orig.tar.bz2";
+    hash = "sha256-byiZzpYiMU6kJs+NSISfHPFzAnJtc8toNIbV/fKiMzg=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts
+    cp -R kacst $out/share/fonts
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "KACST Latin-Arabic TrueType fonts";
+    license = licenses.gpl2Only;
+    maintainers = with lib.maintainers; [ serge ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/kanit/default.nix b/nixpkgs/pkgs/data/fonts/kanit/default.nix
new file mode 100644
index 000000000000..8875704ba6b6
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/kanit/default.nix
@@ -0,0 +1,43 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "kanit";
+  version = "unstable-2020-06-16";
+
+  src = fetchFromGitHub {
+    owner = "cadsondemak";
+    repo = pname;
+    rev = "467dfe842185681d8042cd608b8291199dd37cda";
+    sha256 = "0p0klb0376r8ki4ap2j99j7jcsq6wgb7m1hf3j1dkncwm7ikmg3h";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/doc/kanit/css/ $out/share/fonts/{opentype,truetype}
+
+    cp $src/OFL.txt $src/documentation/{BRIEF.md,features.html} $out/share/doc/kanit
+    cp $src/documentation/css/fonts.css $out/share/doc/kanit/css
+    cp $src/fonts/otf/*.otf $out/share/fonts/opentype
+    cp $src/fonts/ttf/*.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://cadsondemak.github.io/kanit/";
+    description = "A loopless Thai and sans serif Latin typeface for contemporary and futuristic uses";
+    longDescription = ''
+      Kanit means mathematics in Thai, and the Kanit typeface family is a formal
+      Loopless Thai and Sans Latin design. It is a combination of concepts,
+      mixing a Humanist Sans Serif motif with the curves of Capsulated Geometric
+      styles that makes it suitable for various uses, contemporary and
+      futuristic. A notable detail is that the stroke terminals have flat angles,
+      which allows the design to enjoy decreased spacing between letters while
+      preserving readability and legibility at smaller point sizes.
+    '';
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.toastal ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/kanji-stroke-order-font/default.nix b/nixpkgs/pkgs/data/fonts/kanji-stroke-order-font/default.nix
new file mode 100644
index 000000000000..80c97024ac36
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/kanji-stroke-order-font/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenv, fetchurl }:
+
+let
+  version = "4.003";
+  debianVersion = "dfsg-1";
+in stdenv.mkDerivation {
+  name = "kanji-stroke-order-font-${version}";
+
+  src = fetchurl {
+    url = "https://salsa.debian.org/fonts-team/fonts-kanjistrokeorders/-/archive/debian/${version}_${debianVersion}/fonts-kanjistrokeorders-debian-${version}_${debianVersion}.tar.bz2";
+    sha256 = "1a8hxzkrfjz0h5gl9h0panzzsn7cldlklxryyzmpam23g32q6bg1";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/kanji-stroke-order $out/share/doc/kanji-stroke-order
+    cp *.ttf $out/share/fonts/kanji-stroke-order
+    cp *.txt $out/share/doc/kanji-stroke-order
+  '';
+
+  meta = with lib; {
+    description = "Font containing stroke order diagrams for over 6500 kanji, 180 kana and other characters";
+    homepage = "https://sites.google.com/site/nihilistorguk/";
+
+    license = [ licenses.bsd3 ];
+    maintainers = with maintainers; [ ptrhlm ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/kawkab-mono/default.nix b/nixpkgs/pkgs/data/fonts/kawkab-mono/default.nix
new file mode 100644
index 000000000000..1a2f51a6d625
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/kawkab-mono/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation {
+  pname = "kawkab-mono";
+  version = "20151015";
+
+  src = fetchzip {
+    url = "http://makkuk.com/kawkab-mono/downloads/kawkab-mono-0.1.zip";
+    stripRoot = false;
+    hash = "sha256-arZTzXj7Ba5G4WF3eZVGNaONhOsYVPih9iBgsN/lg14=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "An arab fixed-width font";
+    homepage = "https://makkuk.com/kawkab-mono/";
+    license = lib.licenses.ofl;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/khmeros/default.nix b/nixpkgs/pkgs/data/fonts/khmeros/default.nix
new file mode 100644
index 000000000000..5df7c3637be8
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/khmeros/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "khmeros";
+  version = "5.0";
+
+  src = fetchurl {
+    url = "mirror://debian/pool/main/f/fonts-${pname}/fonts-${pname}_${version}.orig.tar.xz";
+    hash = "sha256-gBcM9YHSuhbxvwfQTvywH/5kN921GOyvGtkROcmcBiw=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts
+    cp *.ttf $out/share/fonts
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "KhmerOS Unicode fonts for the Khmer language";
+    homepage = "http://www.khmeros.info/";
+    license = licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ serge ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/knewave/default.nix b/nixpkgs/pkgs/data/fonts/knewave/default.nix
new file mode 100644
index 000000000000..27def2271802
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/knewave/default.nix
@@ -0,0 +1,32 @@
+{ lib, fetchFromGitHub, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "knewave";
+  version = "2012-07-30";
+
+  src = fetchFromGitHub {
+    owner = "theleagueof";
+    repo = finalAttrs.pname;
+    rev = "f335d5ff1f12e4acf97d4208e1c37b4d386e57fb";
+    hash = "sha256-SaJU2GlxU7V3iJNQzFKg1YugaPsiJuSZpC8NCqtWyz0=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/truetype $src/*.ttf
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = " A bold, painted face for the rocker within";
+    longDescription = ''
+      Knewave is bold, painted face. Get it? Git it.
+    '';
+    homepage = "https://www.theleagueofmoveabletype.com/knewave";
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ minijackson ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/kochi-substitute-naga10/default.nix b/nixpkgs/pkgs/data/fonts/kochi-substitute-naga10/default.nix
new file mode 100644
index 000000000000..ae216a789707
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/kochi-substitute-naga10/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "kochi-substitute-naga10";
+  version = "20030809";
+
+  src = fetchzip {
+    url = "mirror://osdn/efont/5411/kochi-substitute-${version}.tar.bz2";
+    stripRoot = false;
+    hash = "sha256-dRJAxeVGYcNjLWqJJ+9Z2FW3BHrgyGRzlgM2x5YG3AM=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    mv */kochi-gothic-subst.ttf $out/share/fonts/truetype/kochi-gothic-subst-naga10.ttf
+    mv */kochi-mincho-subst.ttf $out/share/fonts/truetype/kochi-mincho-subst-naga10.ttf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Japanese font, non-free replacement for MS Gothic and MS Mincho";
+    longDescription = ''
+      Kochi Gothic and Kochi Mincho were developed as free replacements for the
+      MS Gothic and MS Mincho fonts from Microsoft. This version of the fonts
+      includes some non-free glyphs from the naga10 font, which stipulate that
+      this font may not be sold commercially. See kochi-substitute for the free
+      Debian version.
+    '';
+    homepage = "https://osdn.net/projects/efont/";
+    license = lib.licenses.unfreeRedistributable;
+    maintainers = [ lib.maintainers.auntie ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/kochi-substitute/default.nix b/nixpkgs/pkgs/data/fonts/kochi-substitute/default.nix
new file mode 100644
index 000000000000..071db9b13dfb
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/kochi-substitute/default.nix
@@ -0,0 +1,48 @@
+{ lib, stdenv, fetchurl, dpkg }:
+
+let version = "20030809";
+in
+stdenv.mkDerivation {
+  pname = "kochi-substitute";
+  inherit version;
+
+  src = fetchurl {
+    url = "mirror://debian/pool/main/t/ttf-kochi/ttf-kochi-gothic_${version}-15_all.deb";
+    sha256 = "6e2311cd8e880a9328e4d3eef34a1c1f024fc87fba0dce177a0e1584a7360fea";
+  };
+
+  src2 = fetchurl {
+    url = "mirror://debian/pool/main/t/ttf-kochi/ttf-kochi-mincho_${version}-15_all.deb";
+    sha256 = "91ce6c993a3a0f77ed85db76f62ce18632b4c0cbd8f864676359a17ae5e6fa3c";
+  };
+
+  nativeBuildInputs = [ dpkg ];
+
+  unpackCmd = ''
+    dpkg-deb --fsys-tarfile $src | tar xf - ./usr/share/fonts/truetype/kochi/kochi-gothic-subst.ttf
+    dpkg-deb --fsys-tarfile $src2 | tar xf - ./usr/share/fonts/truetype/kochi/kochi-mincho-subst.ttf
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype
+    cp ./share/fonts/truetype/kochi/kochi-gothic-subst.ttf $out/share/fonts/truetype/
+    cp ./share/fonts/truetype/kochi/kochi-mincho-subst.ttf $out/share/fonts/truetype/
+  '';
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "10hcrf51npc1w2jsz5aiw07dgw96vs4wmsz4ai9zyaswipvf8ddy";
+
+  meta = {
+    description = "Japanese font, a free replacement for MS Gothic and MS Mincho";
+    longDescription = ''
+      Kochi Gothic and Kochi Mincho were developed as free replacements for the
+      MS Gothic and MS Mincho fonts from Microsoft. These are the Debian
+      versions of the fonts, which remove some non-free glyphs that were added
+      from the naga10 font.
+    '';
+    homepage = "https://osdn.net/projects/efont/";
+    license = lib.licenses.wadalab;
+    maintainers = [ lib.maintainers.auntie ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/kode-mono/default.nix b/nixpkgs/pkgs/data/fonts/kode-mono/default.nix
new file mode 100644
index 000000000000..3210633a7c0f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/kode-mono/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "kode-mono";
+  version = "1.018";
+
+  src = fetchzip {
+    url = "https://github.com/isaozler/kode-mono/releases/download/${finalAttrs.version}/kode-mono-fonts.zip";
+    hash = "sha256-ITz37lO0+bQd156WKBT8bcz8571kMiJGKepGCCVxaJU=";
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm644 kode-mono-fonts/fonts/ttf/*.ttf      -t $out/share/fonts/truetype/
+    install -Dm644 kode-mono-fonts/fonts/variable/*.ttf -t $out/share/fonts/truetype/
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A custom-designed typeface explicitly created for the developer community";
+    homepage = "https://kodemono.com/";
+    changelog = "https://github.com/isaozler/kode-mono/blob/main/CHANGELOG.md";
+    license = licenses.ofl;
+    maintainers = [ maintainers.isaozler ];
+    platforms = platforms.all;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/kreative-square-fonts/default.nix b/nixpkgs/pkgs/data/fonts/kreative-square-fonts/default.nix
new file mode 100644
index 000000000000..f6a0023bd11f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/kreative-square-fonts/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation {
+  pname = "kreative-square-fonts";
+  version = "unstable-2021-01-29";
+
+  src = fetchFromGitHub {
+    owner = "kreativekorp";
+    repo = "open-relay";
+    rev = "084f05af3602307499981651eca56851bec01fca";
+    hash = "sha256-+ihosENczaGal3BGDIaJ/de0pf8txdtelSYMxPok6ww=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm444 -t $out/share/fonts/truetype/ KreativeSquare/KreativeSquare.ttf
+    install -Dm444 -t $out/share/fonts/truetype/ KreativeSquare/KreativeSquareSM.ttf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Fullwidth scalable monospace font designed specifically to support pseudographics, semigraphics, and private use characters";
+    homepage = "https://www.kreativekorp.com/software/fonts/ksquare.shtml";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.linus ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/lalezar-fonts/default.nix b/nixpkgs/pkgs/data/fonts/lalezar-fonts/default.nix
new file mode 100644
index 000000000000..f54c17b51f3d
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/lalezar-fonts/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation {
+  pname = "lalezar-fonts";
+  version = "unstable-2017-02-28";
+
+  src = fetchFromGitHub {
+    owner = "BornaIz";
+    repo = "Lalezar";
+    rev = "238701c4241f207e92515f845a199be9131c1109";
+    hash = "sha256-95z58ABTx53aREXRpj9xgclX9kuGiQiiKBwqwnF6f8g=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/lalezar-fonts
+    cp -v $( find . -name '*.ttf') $out/share/fonts/lalezar-fonts
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/BornaIz/Lalezar";
+    description = "A multi-script display typeface for popular culture";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/lao/default.nix b/nixpkgs/pkgs/data/fonts/lao/default.nix
new file mode 100644
index 000000000000..d7d5d3ddd4b1
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/lao/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "lao";
+  version = "0.0.20060226";
+
+  src = fetchurl {
+    url = "mirror://debian/pool/main/f/fonts-${pname}/fonts-${pname}_${version}.orig.tar.xz";
+    hash = "sha256-DlgdyfhxxzVkNIL+NGsQ+PRlNkCuG3v2OahkIEYx60o=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts
+    cp Phetsarath_OT.ttf $out/share/fonts
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "TrueType font for Lao language";
+    license = licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ serge ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/last-resort/default.nix b/nixpkgs/pkgs/data/fonts/last-resort/default.nix
new file mode 100644
index 000000000000..4ca067360520
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/last-resort/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "last-resort";
+  version = "15.100";
+
+  src = fetchurl {
+    url = "https://github.com/unicode-org/last-resort-font/releases/download/${version}/LastResortHE-Regular.ttf";
+    hash = "sha256-dPk6j7Orh1bg6GyzwsB4P9oQvepvl51YF4abpyhOVso=";
+  };
+
+  dontUnpack = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m 0644 $src $out/share/fonts/truetype/LastResortHE-Regular.ttf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Fallback font of last resort";
+    homepage = "https://github.com/unicode-org/last-resort-font";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/lato/default.nix b/nixpkgs/pkgs/data/fonts/lato/default.nix
new file mode 100644
index 000000000000..ff1cc62bee0e
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/lato/default.nix
@@ -0,0 +1,45 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation {
+  pname = "lato";
+  version = "2.0";
+
+  src = fetchzip {
+    url = "https://www.latofonts.com/download/Lato2OFL.zip";
+    stripRoot = false;
+    hash = "sha256-n1TsqigCQIGqyGLGTjLtjHuBf/iCwRlnqh21IHfAuXI=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 Lato2OFL/*.ttf -t $out/share/fonts/lato
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.latofonts.com/";
+
+    description = ''
+      Sans-serif typeface family designed in Summer 2010 by Łukasz Dziedzic
+    '';
+
+    longDescription = ''
+      Lato is a sans-serif typeface family designed in the Summer 2010 by
+      Warsaw-based designer Łukasz Dziedzic ("Lato" means "Summer" in Polish).
+      In December 2010 the Lato family was published under the open-source Open
+      Font License by his foundry tyPoland, with support from Google.
+
+      In 2013-2014, the family was greatly extended to cover 3000+ glyphs per
+      style. The Lato 2.010 family now supports 100+ Latin-based languages, 50+
+      Cyrillic-based languages as well as Greek and IPA phonetics. In the
+      process, the metrics and kerning of the family have been revised and four
+      additional weights were created.
+    '';
+
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ chris-martin ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/league-gothic/default.nix b/nixpkgs/pkgs/data/fonts/league-gothic/default.nix
new file mode 100644
index 000000000000..fd12e0a86591
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/league-gothic/default.nix
@@ -0,0 +1,39 @@
+{ lib, fetchzip, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "league-gothic";
+  version = "1.601";
+
+  src = fetchzip {
+    url = "https://github.com/theleagueof/league-gothic/releases/download/${finalAttrs.version}/LeagueGothic-${finalAttrs.version}.tar.xz";
+    hash = "sha256-emkXKyQw4R0Zgg02oJsvBkqV0jmczP0tF0K2IKqJHMA=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/truetype $src/static/TTF/*.ttf
+    install -D -m444 -t $out/share/fonts/opentype $src/static/OTF/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A revival of an old classic, Alternate Gothic #1";
+    longDescription = ''
+      League Gothic is a revival of an old classic, and one of our favorite
+      typefaces, Alternate Gothic #1. It was originally designed by Morris
+      Fuller Benton for the American Type Founders Company in 1903. The company
+      went bankrupt in 1993, and since the original typeface was created before
+      1923, the typeface is in the public domain.
+
+      We decided to make our own version, and contribute it to the Open Source
+      Type Movement. Thanks to a commission from the fine & patient folks over
+      at WND.com, it’s been revised & updated with contributions from Micah
+      Rich, Tyler Finck, and Dannci, who contributed extra glyphs.
+    '';
+    homepage = "https://www.theleagueofmoveabletype.com/league-gothic";
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ minijackson ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/league-of-moveable-type/default.nix b/nixpkgs/pkgs/data/fonts/league-of-moveable-type/default.nix
new file mode 100644
index 000000000000..236a2e39ed10
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/league-of-moveable-type/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, symlinkJoin
+, the-neue-black
+, blackout
+, chunk
+, fanwood
+, goudy-bookletter-1911
+, junction-font
+, knewave
+, league-gothic
+, league-script-number-one
+, league-spartan
+, linden-hill
+, orbitron
+, ostrich-sans
+, prociono
+, raleway
+, sniglet
+, sorts-mill-goudy
+}:
+
+symlinkJoin {
+  name = "league-of-moveable-type";
+
+  paths = [
+    the-neue-black
+    blackout
+    chunk
+    fanwood
+    goudy-bookletter-1911
+    junction-font
+    knewave
+    league-gothic
+    league-script-number-one
+    league-spartan
+    linden-hill
+    orbitron
+    ostrich-sans
+    prociono
+    raleway
+    sniglet
+    sorts-mill-goudy
+  ];
+
+  meta = {
+    description = "Font Collection by The League of Moveable Type";
+
+    longDescription = ''
+      We're done with the tired old fontstacks of yesteryear. The web
+      is no longer limited, and now it's time to raise our standards.
+      Since 2009, The League has given only the most well-made, free &
+      open-source, @font-face ready fonts.
+    '';
+
+    homepage = "https://www.theleagueofmoveabletype.com/";
+
+    license = lib.licenses.ofl;
+
+    platforms = lib.platforms.all;
+    maintainers = with lib.maintainers; [ bergey minijackson ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/league-script-number-one/default.nix b/nixpkgs/pkgs/data/fonts/league-script-number-one/default.nix
new file mode 100644
index 000000000000..bc847f4f81c8
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/league-script-number-one/default.nix
@@ -0,0 +1,35 @@
+{ lib, fetchFromGitHub, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "league-script-number-one";
+  version = "2011-05-25";
+
+  src = fetchFromGitHub {
+    owner = "theleagueof";
+    repo = finalAttrs.pname;
+    rev = "225add0b37cf8268759ba4572e02630d9fb54ecf";
+    hash = "sha256-Z3Zrp0Os3On0tESVical1Qh6wY1H2Hc0OPTlkbtsrCI=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A modern, coquettish script font";
+    longDescription = ''
+      This ain’t no Lucinda. League Script #1 is a modern, coquettish script
+      font that sits somewhere between your high school girlfriend’s love notes
+      and handwritten letters from the ’20s. Designed exclusively for the
+      League of Moveable Type, it includes ligatures and will act as the
+      framework for future script designs.
+    '';
+    homepage = "https://www.theleagueofmoveabletype.com/league-script";
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ minijackson ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/league-spartan/default.nix b/nixpkgs/pkgs/data/fonts/league-spartan/default.nix
new file mode 100644
index 000000000000..d0e36e591491
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/league-spartan/default.nix
@@ -0,0 +1,40 @@
+{ lib, fetchzip, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "league-spartan";
+  version = "2.220";
+
+  src = fetchzip {
+    url = "https://github.com/theleagueof/league-spartan/releases/download/${finalAttrs.version}/LeagueSpartan-${finalAttrs.version}.tar.xz";
+    hash = "sha256-dkvWRYli8vk+E0DkZ2NWCJKfSfdo4jEcGo0puQpFVVc=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/truetype $src/static/TTF/*.ttf
+    install -D -m444 -t $out/share/fonts/opentype $src/static/OTF/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A fantastic new revival of ATF's classic Spartan, a geometric sans-serif that has no problem kicking its enemies in the chest.";
+    longDescription = ''
+      A new classic, this is a bold, modern, geometric sans-serif that has no
+      problem kicking its enemies in the chest.
+
+      Taking a strong influence from ATF's classic Spartan family, we're
+      starting our own family out with a single strong weight. We've put a few
+      unique touches into a beautiful, historical typeface, and made sure to
+      include an extensive characterset – currently totaling over 300 glyphs.
+
+      Over time, the open-source license will allow us expand League Spartan
+      into a full family, with multiple weights and styles, and we're starting
+      by releasing our first Bold style for this exciting, modern classic now.
+    '';
+    homepage = "https://www.theleagueofmoveabletype.com/league-spartan";
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ minijackson ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/lexend/default.nix b/nixpkgs/pkgs/data/fonts/lexend/default.nix
new file mode 100644
index 000000000000..9bb00bf10595
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/lexend/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "lexend";
+  version = "0.pre+date=2022-09-22";
+
+  src = fetchFromGitHub {
+    owner = "googlefonts";
+    repo = pname;
+    rev = "cd26b9c2538d758138c20c3d2f10362ed613854b";
+    sha256 = "ZKogntyJ/44GBZmFwbtw5Ujw5Gnvv0tVB59ciKqR4c8=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    cd fonts
+    for f in *; do
+      install -D -t $out/share/fonts/truetype/lexend/$f $f/ttf/*
+      install -D -t $out/share/fonts/variable/lexend/$f $f/variable/*
+    done
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.lexend.com";
+    description = "A variable font family designed to aid in reading proficiency";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ fufexan ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/liberastika/default.nix b/nixpkgs/pkgs/data/fonts/liberastika/default.nix
new file mode 100644
index 000000000000..7c716c1a354b
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/liberastika/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "liberastika";
+  version = "1.1.5";
+
+  src = fetchzip {
+    url = "mirror://sourceforge/project/lib-ka/liberastika-ttf-${version}.zip";
+    stripRoot = false;
+    hash = "sha256-woUpOmxhj6eEw7PKJ8EyRcs3ORj0gCZhxHP5a5dy5z0=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Liberation Sans fork with improved cyrillic support";
+    homepage = "https://sourceforge.net/projects/lib-ka/";
+
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/liberation-fonts/default.nix b/nixpkgs/pkgs/data/fonts/liberation-fonts/default.nix
new file mode 100644
index 000000000000..0160ebfdc450
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/liberation-fonts/default.nix
@@ -0,0 +1,69 @@
+{ lib, stdenv, fetchFromGitHub, fontforge, python3 }:
+let
+  inherit (python3.pkgs) fonttools;
+
+  commonNativeBuildInputs = [ fontforge python3 ];
+  common =
+    { version, repo, sha256, docsToInstall, nativeBuildInputs, postPatch ? null }:
+      stdenv.mkDerivation rec {
+        pname = "liberation-fonts";
+        inherit version;
+
+        src = fetchFromGitHub {
+          owner = "liberationfonts";
+          rev = version;
+          inherit repo sha256;
+        };
+
+        inherit nativeBuildInputs postPatch;
+
+        installPhase = ''
+          find . -name '*.ttf' -exec install -m444 -Dt $out/share/fonts/truetype {} \;
+
+          for i in ${toString docsToInstall}; do
+            # not all docs exist in all versions
+            install -m444 -Dt $out/share/doc/${pname}-${version} $i || true
+          done
+        '';
+
+        meta = with lib; {
+          description = "Liberation Fonts, replacements for Times New Roman, Arial, and Courier New";
+          longDescription = ''
+            The Liberation Fonts are intended to be replacements for the three most
+            commonly used fonts on Microsoft systems: Times New Roman, Arial, and
+            Courier New. Since 2012 they are based on croscore fonts.
+
+            There are three sets: Sans (a substitute for Arial, Albany, Helvetica,
+            Nimbus Sans L, and Bitstream Vera Sans), Serif (a substitute for Times
+            New Roman, Thorndale, Nimbus Roman, and Bitstream Vera Serif) and Mono
+            (a substitute for Courier New, Cumberland, Courier, Nimbus Mono L, and
+            Bitstream Vera Sans Mono).
+          '';
+
+          license = licenses.ofl;
+          homepage = "https://github.com/liberationfonts";
+          maintainers = with maintainers; [ raskin ];
+        };
+      };
+in
+{
+  liberation_ttf_v1 = common {
+    repo = "liberation-1.7-fonts";
+    version = "1.07.5";
+    docsToInstall = [ "AUTHORS" "ChangeLog" "COPYING" "License.txt" "README" ];
+    nativeBuildInputs = commonNativeBuildInputs;
+    sha256 = "1ffl10mf78hx598sy9qr5m6q2b8n3mpnsj73bwixnd4985gsz56v";
+  };
+  liberation_ttf_v2 = common {
+    repo = "liberation-fonts";
+    version = "2.1.5";
+    docsToInstall = [ "AUTHORS" "ChangeLog" "LICENSE" "README.md" ];
+    nativeBuildInputs = commonNativeBuildInputs ++ [ fonttools ];
+    postPatch = ''
+      substituteInPlace scripts/setisFixedPitch-fonttools.py --replace \
+        'font = ttLib.TTFont(fontfile)' \
+        'font = ttLib.TTFont(fontfile, recalcTimestamp=False)'
+    '';
+    sha256 = "Wg1uoD2k/69Wn6XU+7wHqf2KO/bt4y7pwgmG7+IUh4Q=";
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/liberation-sans-narrow/default.nix b/nixpkgs/pkgs/data/fonts/liberation-sans-narrow/default.nix
new file mode 100644
index 000000000000..281bfa4c42b0
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/liberation-sans-narrow/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenv, fetchFromGitHub, fontforge, python3Packages, python3 }:
+
+stdenv.mkDerivation rec {
+  pname = "liberation-sans-narrow";
+  version = "1.07.6";
+
+  src = fetchFromGitHub {
+    owner = "liberationfonts";
+    repo = pname;
+    rev = version;
+    sha256 = "1qw554jbdnqkg6pjjl4cqkgsalq3398kzvww2naw30vykcz752bm";
+  };
+
+  buildInputs = [ fontforge python3Packages.fonttools python3 ];
+
+  installPhase = ''
+    find . -name '*Narrow*.ttf' -exec install -m444 -Dt $out/share/fonts/truetype {} \;
+    install -m444 -Dt $out/doc/${pname}-${version} AUTHORS ChangeLog COPYING License.txt README.rst
+  '';
+
+  meta = with lib; {
+    description = "Liberation Sans Narrow Font Family is a replacement for Arial Narrow";
+    longDescription = ''
+      Liberation Sans Narrow is a font originally created by Ascender
+      Inc and licensed to Oracle Corporation under a GPLv2 license. It is
+      metrically compatible with the commonly used Arial Narrow fonts
+      on Microsoft systems. It is no longer distributed with the
+      latest versions of the Liberation Fonts, as Red Hat has changed the
+      license to the Open Font License.
+    '';
+
+    license = licenses.gpl2;
+    homepage = "https://github.com/liberationfonts";
+    maintainers = [ maintainers.leenaars ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/libertine/default.nix b/nixpkgs/pkgs/data/fonts/libertine/default.nix
new file mode 100644
index 000000000000..e24096e74f4e
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/libertine/default.nix
@@ -0,0 +1,54 @@
+{ lib, stdenv, fetchurl, fontforge }:
+
+stdenv.mkDerivation {
+  pname = "linux-libertine";
+  version = "5.3.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/linuxlibertine/5.3.0/LinLibertineSRC_5.3.0_2012_07_02.tgz";
+    hash = "sha256-G+xDYKJvHPMzwnktkg9cpNTv9E9d5QFgDjReuKH57HQ=";
+  };
+
+  sourceRoot = ".";
+
+  nativeBuildInputs = [ fontforge ];
+
+  dontConfigure = true;
+
+  buildPhase = ''
+    runHook preBuild
+    for i in *.sfd; do
+      fontforge -lang=ff -c \
+        'Open($1);
+        ScaleToEm(1000);
+        Reencode("unicode");
+        Generate($1:r + ".ttf");
+        Generate($1:r + ".otf");
+        Reencode("TeX-Base-Encoding");
+        Generate($1:r + ".afm");
+        Generate($1:r + ".pfm");
+        Generate($1:r + ".pfb");
+        Generate($1:r + ".map");
+        Generate($1:r + ".enc");
+        ' $i;
+    done
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    install -m444 -Dt $out/share/fonts/opentype/public *.otf
+    install -m444 -Dt $out/share/fonts/truetype/public *.ttf
+    install -m444 -Dt $out/share/fonts/type1/public    *.pfb
+    install -m444 -Dt $out/share/texmf/fonts/enc       *.enc
+    install -m444 -Dt $out/share/texmf/fonts/map       *.map
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Linux Libertine Fonts";
+    homepage = "http://linuxlibertine.sf.net";
+    maintainers = with maintainers; [ erdnaxe ];
+    license = licenses.ofl;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/libertinus/default.nix b/nixpkgs/pkgs/data/fonts/libertinus/default.nix
new file mode 100644
index 000000000000..cc60f8096531
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/libertinus/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "libertinus";
+  version = "7.040";
+
+  src = fetchurl {
+    url = "https://github.com/alerque/libertinus/releases/download/v${version}/Libertinus-${version}.tar.xz";
+    hash = "sha256-f+nwInItHBzGfcLCihELO7VbrjV1GWFg0kIsiTM7OFA=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m644 -Dt $out/share/fonts/opentype static/OTF/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "The Libertinus font family";
+    longDescription = ''
+      The Libertinus font project began as a fork of the Linux Libertine and
+      Linux Biolinum fonts. The original impetus was to add an OpenType math
+      companion to the Libertine font families. Over time it grew into to a
+      full-fledged fork addressing many of the bugs in the Libertine fonts.
+    '';
+    homepage = "https://github.com/alerque/libertinus";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ siddharthist ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/libre-baskerville/default.nix b/nixpkgs/pkgs/data/fonts/libre-baskerville/default.nix
new file mode 100644
index 000000000000..56d83554e9ca
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/libre-baskerville/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "libre-baskerville";
+  version = "1.000";
+
+  src = fetchFromGitHub {
+    owner = "impallari";
+    repo = "Libre-Baskerville";
+    rev = "2fba7c8e0a8f53f86efd3d81bc4c63674b0c613f";
+    hash = "sha256-1EXi1hxFpc7pFsLbEj1xs9LqjeIf3XBol/8HdKNROUU=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/truetype *.ttf
+    install -m444 -Dt $out/share/doc/${pname}-${version} README.md FONTLOG.txt
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A webfont family optimized for body text";
+    longDescription = ''
+      Libre Baskerville is a webfont family optimized for body text. It's Based
+      on 1941 ATF Baskerville Specimens but it has a taller x-height, wider
+      counters and less contrast that allow it to work on small sizes in any
+      screen.
+    '';
+    homepage = "http://www.impallari.com/projects/overview/libre-baskerville";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ cmfwyp ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/libre-bodoni/default.nix b/nixpkgs/pkgs/data/fonts/libre-bodoni/default.nix
new file mode 100644
index 000000000000..cd55c10d2e64
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/libre-bodoni/default.nix
@@ -0,0 +1,41 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "libre-bodoni";
+  version = "2.000";
+
+  src = fetchFromGitHub {
+    owner = "impallari";
+    repo = "Libre-Bodoni";
+    rev = "995a40e8d6b95411d660cbc5bb3f726ffd080c7d";
+    hash = "sha256-yfqVeT/JiAT+fsqkXUxqlz4sEEFwEJUdvFTAzuqejtk=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/opentype */v2000\ -\ initial\ glyphs\ migration/OTF/*.otf
+    install -m444 -Dt $out/share/doc/${pname}-${version} README.md FONTLOG.txt
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Bodoni fonts adapted for today's web requirements";
+    longDescription = ''
+      The Libre Bodoni fonts are based on the 19th century Morris Fuller
+      Benton's ATF design, but specifically adapted for today's web
+      requirements.
+
+      They are a perfect choice for everything related to elegance, style,
+      luxury and fashion.
+
+      Libre Bodoni currently features four styles: Regular, Italic, Bold and
+      Bold Italic.
+    '';
+    homepage = "https://github.com/impallari/Libre-Bodoni";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ cmfwyp ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/libre-caslon/default.nix b/nixpkgs/pkgs/data/fonts/libre-caslon/default.nix
new file mode 100644
index 000000000000..d89d4c41c0f3
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/libre-caslon/default.nix
@@ -0,0 +1,46 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "libre-caslon";
+  version = "1.002";
+
+  srcs = [
+    (fetchFromGitHub {
+      owner = "impallari";
+      repo = "Libre-Caslon-Text";
+      rev = "c31e21f7e8cf91f18d90f778ce20e66c68219c74";
+      name = "libre-caslon-text-${version}-src";
+      sha256 = "0zczv9qm8cgc7w1p64mnf0p0fi7xv89zhf1zzf1qcna15kbgc705";
+    })
+
+    (fetchFromGitHub {
+      owner = "impallari";
+      repo = "Libre-Caslon-Display";
+      rev = "3491f6a9cfde2bc15e736463b0bc7d93054d5da1";
+      name = "libre-caslon-display-${version}-src";
+      sha256 = "12jrny3y8w8z61lyw470drnhliji5b24lgxap4w3brp6z3xjph95";
+    })
+  ];
+
+  sourceRoot = ".";
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/opentype
+    mkdir -p $out/share/doc/${pname}-${version}
+    cp -v "libre-caslon-text-${version}-src/fonts/OTF/"*.otf $out/share/fonts/opentype/
+    cp -v "libre-caslon-display-${version}-src/fonts/OTF/"*.otf $out/share/fonts/opentype/
+    cp -v libre-caslon-text-${version}-src/README.md libre-caslon-text-${version}-src/FONTLOG.txt $out/share/doc/${pname}-${version}
+  '';
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "05aajwny99yqzn1nnq1blx6h7rl54x056y12hyawfbigkzxhscns";
+
+  meta = with lib; {
+    description = "Caslon fonts based on hand-lettered American Caslons of 1960s";
+    homepage = "http://www.impallari.com/librecaslon";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ cmfwyp ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/libre-franklin/default.nix b/nixpkgs/pkgs/data/fonts/libre-franklin/default.nix
new file mode 100644
index 000000000000..f6fe791743cd
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/libre-franklin/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "libre-franklin";
+  version = "1.014";
+
+  src = fetchFromGitHub {
+    owner = "impallari";
+    repo = "Libre-Franklin";
+    rev = "006293f34c47bd752fdcf91807510bc3f91a0bd3";
+    hash = "sha256-GR1KHiQ1lTOmU8eAPR2pxUlMpWiW2EDMG78VDjELxDU=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/opentype */OTF/*.otf
+    install -m444 -Dt $out/share/doc/${pname}-${version} README.md FONTLOG.txt
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A reinterpretation and expansion based on the 1912 Morris Fuller Benton’s classic.";
+    homepage = "https://github.com/impallari/Libre-Franklin";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ cmfwyp ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/linden-hill/default.nix b/nixpkgs/pkgs/data/fonts/linden-hill/default.nix
new file mode 100644
index 000000000000..9e452d34b99a
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/linden-hill/default.nix
@@ -0,0 +1,32 @@
+{ lib, fetchFromGitHub, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "linden-hill";
+  version = "2011-05-25";
+
+  src = fetchFromGitHub {
+    owner = "theleagueof";
+    repo = finalAttrs.pname;
+    rev = "a3f7ae6c4cac1b7e5ce5269e1fcc6a2fbb9e31ee";
+    hash = "sha256-EjXcLjzVQeOJgLxGua8t0oMc+APOsONGGpG6VJVCgFw=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A digital version of Frederic Goudy’s Deepdene";
+    longDescription = ''
+      Linden Hill is a digital version of Frederic Goudy’s Deepdene. The
+      package includes roman and italic.
+    '';
+    homepage = "https://www.theleagueofmoveabletype.com/linden-hill";
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ minijackson ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/line-awesome/default.nix b/nixpkgs/pkgs/data/fonts/line-awesome/default.nix
new file mode 100644
index 000000000000..d9f7818dd2f7
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/line-awesome/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenv, fetchurl, unzip }:
+
+stdenv.mkDerivation rec {
+  pname = "line-awesome";
+  version = "1.3.0";
+
+  src = fetchurl {
+    url =
+      "https://maxst.icons8.com/vue-static/landings/line-awesome/line-awesome/${version}/line-awesome-${version}.zip";
+    sha256 = "07qkz8s1wjh5xwqlq1b4lpihr1zah3kh6bnqvfwvncld8l9wjqfk";
+  };
+
+  nativeBuildInputs = [ unzip ];
+
+  sourceRoot = "${version}/fonts";
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype
+    mkdir -p $out/share/fonts/woff
+    mkdir -p $out/share/fonts/woff2
+    cp *.ttf $out/share/fonts/truetype
+    cp *.woff $out/share/fonts/woff
+    cp *.woff2 $out/share/fonts/woff2
+  '';
+
+  meta = with lib; {
+    description = "Replace Font Awesome with modern line icons";
+    longDescription = ''
+      This package includes only the TTF, WOFF and WOFF2 fonts. For full CSS etc. see the project website.
+    '';
+    homepage = "https://icons8.com/line-awesome";
+    license = licenses.mit;
+    maintainers = with maintainers; [ puzzlewolf ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/linearicons-free/default.nix b/nixpkgs/pkgs/data/fonts/linearicons-free/default.nix
new file mode 100644
index 000000000000..9b310a38d5ac
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/linearicons-free/default.nix
@@ -0,0 +1,30 @@
+{ lib, fetchzip, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "linearicons-free";
+  version = "1.0.0";
+
+  src = fetchzip {
+    url = "https://cdn.linearicons.com/free/${finalAttrs.version}/Linearicons-Free-v${finalAttrs.version}.zip";
+    hash = "sha256-0Gb0CRdgzSnpeN+x8TrH5TCrAA57+jsBWZ4FgJ8cm08=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/truetype $src/Desktop\ Font/Linearicons-Free.ttf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Crisp Line Icons by Perxis";
+    longDescription = ''
+      See cheat sheet here: https://linearicons.com/free#cheat-sheet
+    '';
+    homepage = "https://linearicons.com/free";
+    license = lib.licenses.cc-by-sa-40;
+    maintainers = [ lib.maintainers.CardboardTurkey ];
+    platforms = lib.platforms.all;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/linja-pi-pu-lukin/default.nix b/nixpkgs/pkgs/data/fonts/linja-pi-pu-lukin/default.nix
new file mode 100644
index 000000000000..40f330cec7c4
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/linja-pi-pu-lukin/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation {
+  pname = "linja-pi-pu-lukin";
+  version = "unstable-2021-10-29";
+
+  src = fetchurl {
+    url = "https://web.archive.org/web/20211029000000/https://jansa-tp.github.io/linja-pi-pu-lukin/PuLukin.otf";
+    hash = "sha256-Mf7P9fLGiG7L555Q3wRaI/PRv/TIs0njLq2IzIbc5Wo=";
+  };
+
+  dontUnpack = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D $src $out/share/fonts/opentype/linja-pi-pu-lukin.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A sitelen pona font resembling the style found in Toki Pona: The Language of Good (lipu pu), by jan Sa.";
+    homepage = "https://jansa-tp.github.io/linja-pi-pu-lukin/";
+    license = licenses.unfree; # license is unspecified in repository
+    platforms = platforms.all;
+    maintainers = with maintainers; [ somasis ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/linja-sike/default.nix b/nixpkgs/pkgs/data/fonts/linja-sike/default.nix
new file mode 100644
index 000000000000..88c723bff22b
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/linja-sike/default.nix
@@ -0,0 +1,25 @@
+{ lib, fetchurl }:
+
+fetchurl {
+  pname = "linja-sike";
+  version = "5.0";
+
+  url = "https://wyub.github.io/tokipona/linja-sike-5.otf";
+
+  downloadToTemp = true;
+  recursiveHash = true;
+  postFetch = ''
+    install -D $downloadedFile $out/share/fonts/opentype/linja-sike.otf
+  '';
+
+  sha256 = "sha256-LkjG1Oao/LqKwI+eRZPzShTh7lz5DkooltXm7vxZC9w=";
+
+  meta = with lib; {
+    description = "An extensive sitelen pona font by lipamanka";
+    homepage = "https://docs.google.com/document/d/1d8kUIAVlB-JNgK3LWr_zVCuUOZTh2hF7CfC6xQgxsBs/edit?usp=sharing";
+    downloadPage = "https://wyub.github.io/tokipona/linjasike";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ somasis ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/lklug-sinhala/default.nix b/nixpkgs/pkgs/data/fonts/lklug-sinhala/default.nix
new file mode 100644
index 000000000000..817dbbb25312
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/lklug-sinhala/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "lklug-sinhala";
+  version = "0.6";
+
+  src = fetchurl {
+    url = "mirror://debian/pool/main/f/fonts-${pname}/fonts-${pname}_${version}.orig.tar.xz";
+    hash = "sha256-oPCCa01PMQcCK5fEILgXjrGzoDg+UvxkqK6AgeQaKio=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp *.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Unicode Sinhala font by Lanka Linux User Group";
+    homepage = "http://www.lug.lk/fonts/lklug";
+    license = licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ serge ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/lmmath/default.nix b/nixpkgs/pkgs/data/fonts/lmmath/default.nix
new file mode 100644
index 000000000000..3881f0f0f4e7
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/lmmath/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "lmmath";
+  version = "1.959";
+
+  src = fetchzip {
+    url = "http://www.gust.org.pl/projects/e-foundry/lm-math/download/latinmodern-math-1959.zip";
+    hash = "sha256-et/WMhfZZYgP0S7ZmI6MZK5owv9bSoMBXFX6yGSng5Y=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/opentype/
+    mkdir -p $out/share/doc/latinmodern-math-${version}/
+    cp otf/*.otf $out/share/fonts/opentype/
+    cp doc/*.txt $out/share/doc/latinmodern-math-${version}/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "The Latin Modern Math (LM Math) font completes the modernization of the Computer Modern family of typefaces designed and programmed by Donald E. Knuth";
+    homepage = "http://www.gust.org.pl/projects/e-foundry/lm-math";
+    # "The Latin Modern Math font is licensed under the GUST Font License (GFL),
+    # which is a free license, legally equivalent to the LaTeX Project Public
+    # License (LPPL), version 1.3c or later." - GUST website
+    license = licenses.lppl13c;
+    maintainers = with maintainers; [ siddharthist ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/lmodern/default.nix b/nixpkgs/pkgs/data/fonts/lmodern/default.nix
new file mode 100644
index 000000000000..85aa7060ea05
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/lmodern/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "lmodern";
+  version = "2.005";
+
+  src = fetchurl {
+    url = "mirror://debian/pool/main/l/${pname}/${pname}_${version}.orig.tar.gz";
+    hash = "sha256-xlUuZt6rjW0pX4t6PKWAHkkv3PisGCj7ZwatZPAUNxk=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/texmf-dist/
+    mkdir -p $out/share/fonts/
+
+    cp -r * $out/texmf-dist/
+    cp -r fonts/{opentype,type1} $out/share/fonts/
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Latin Modern font";
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/lohit-fonts/default.nix b/nixpkgs/pkgs/data/fonts/lohit-fonts/default.nix
new file mode 100644
index 000000000000..53bccc4a40a7
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/lohit-fonts/default.nix
@@ -0,0 +1,63 @@
+{ lib, stdenvNoCC, fetchurl }:
+let
+  fonts = {
+    assamese        = { label = "Assamese";          version = "2.91.5"; hash = "sha256-Oo/hHHFg/Nu3eaZLMdBclY90lKU2AMFUclyXHxGaAgg="; };
+    bengali         = { label = "Bengali";           version = "2.91.5"; hash = "sha256-QGf94TdQS2c9+wSSDK4Mknw5ubCGTuvg0xoNaJdirBc="; };
+    devanagari      = { label = "Devanagari script"; version = "2.95.4"; hash = "sha256-6CbOCqOei5eO1zwNQZvB+fFDkqxvJnK82z+zmClhRAE="; };
+    gujarati        = { label = "Gujarati";          version = "2.92.4"; hash = "sha256-BpwibF0/HXDvXpDEek0fj73cxo2QC1hSfQ49Q/ZOZg8="; };
+    gurmukhi        = { label = "Gurmukhi script";   version = "2.91.2"; hash = "sha256-5iLFW2FEE5LBqoALi+3sUjwC0ADntsp259TP+bYwR9g="; }; # renamed from Punjabi
+    kannada         = { label = "Kannada";           version = "2.5.4" ; hash = "sha256-7y2u0tBdNYCeY7Y+aqhxXP7Qv6GglJeVO1wvM9CzyIQ="; };
+    malayalam       = { label = "Malayalam";         version = "2.92.2"; hash = "sha256-SzM38vuAlP9OMC8kUuHQylmH8TUjCeg1y/Zcu2I2bjA="; };
+    marathi         = { label = "Marathi";           version = "2.94.2"; hash = "sha256-jK1Gwcr5gqzRNkbIxs4V/OYgUlUEpU0OYzKDTkiMlqM="; };
+    nepali          = { label = "Nepali";            version = "2.94.2"; hash = "sha256-OX1ekxeSbVGOrdbZ3Jvu4nii0zkgbuij10JIzqRcFx4="; };
+    odia            = { label = "Odia";              version = "2.91.2"; hash = "sha256-3/eczBGGZj4QPs7KY0as9zk5HaBfhgz6YgU0qmwpVcA="; }; # renamed from Oriya
+    tamil-classical = { label = "Classical Tamil";   version = "2.5.4" ; hash = "sha256-6SsddTCEUHMoF7X4+i7eXimmMuktfFAl8uz95RwM+yg="; };
+    tamil           = { label = "Tamil";             version = "2.91.3"; hash = "sha256-8lcNw87o9lhQsKwCqwBSfx7rhcrH/eEqac7EsA9/w/E="; };
+    telugu          = { label = "Telugu";            version = "2.5.5" ; hash = "sha256-cZh93NfEB+5S1JeEowtBMJ0nbZsFGpbEp2WAtzxrA8A="; };
+  };
+  gplfonts = {
+    # GPL fonts removed from later releases
+    kashmiri        = { label = "Kashmiri";          version = "2.4.3" ; hash = "sha256-6T2QaWnt3+e5nr4vbk44FouqmeWKzia1lSf8S/bvqCs="; };
+    konkani         = { label = "Konkani";           version = "2.4.3" ; hash = "sha256-hVy2rxrUTPDeNnugi3Bk7z0JqGmk4/yeUsAoI/4R7A8="; };
+    maithili        = { label = "Maithili";          version = "2.4.3" ; hash = "sha256-ikDcpJqdizAYRpgoebzqxOEeodJ6C3fO2rsqGzC0HCs="; };
+    sindhi          = { label = "Sindhi";            version = "2.4.3" ; hash = "sha256-wU3B9fh+8E1bFBMnakzmajY7eNKzed9+eYL5AOxyNQI="; };
+  };
+
+  mkpkg = license: pname: {label, version, hash}: stdenvNoCC.mkDerivation {
+    inherit pname version;
+
+    src = fetchurl {
+      url = "https://releases.pagure.org/lohit/lohit-${pname}-ttf-${version}.tar.gz";
+      inherit hash;
+    };
+
+    installPhase = ''
+      runHook preInstall
+
+      mkdir -p $out/share/fonts/truetype
+      cp -v *.ttf $out/share/fonts/truetype/
+
+      mkdir -p $out/etc/fonts/conf.d
+      cp -v *.conf $out/etc/fonts/conf.d
+
+      mkdir -p "$out/share/doc/lohit-${pname}"
+      cp -v ChangeLog* COPYRIGHT* "$out/share/doc/lohit-${pname}/"
+
+      runHook postInstall
+    '';
+
+    meta = {
+      inherit license;
+      description = "Free and open source fonts for Indian languages (" + label + ")";
+      homepage = "https://pagure.io/lohit";
+      maintainers = [ lib.maintainers.mathnerd314 lib.maintainers.ttuegel ];
+      # Set a non-zero priority to allow easy overriding of the
+      # fontconfig configuration files.
+      priority = 5;
+    };
+  };
+
+in
+# Technically, GPLv2 with usage exceptions
+lib.mapAttrs (mkpkg lib.licenses.gpl2) gplfonts //
+lib.mapAttrs (mkpkg lib.licenses.ofl) fonts
diff --git a/nixpkgs/pkgs/data/fonts/luculent/default.nix b/nixpkgs/pkgs/data/fonts/luculent/default.nix
new file mode 100644
index 000000000000..1347af957e46
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/luculent/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "luculent";
+  version = "2.0.0";
+
+  src = fetchurl {
+    url = "http://www.eastfarthing.com/${pname}/${pname}.tar.xz";
+    hash = "sha256-6NxLnTBnvHmTUTFa2wW0AuKPEbCqzaWQyiFVnF0sBqU=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp *.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "luculent font";
+    homepage = "http://www.eastfarthing.com/luculent/";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ dtzWill ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/lxgw-neoxihei/default.nix b/nixpkgs/pkgs/data/fonts/lxgw-neoxihei/default.nix
new file mode 100644
index 000000000000..2fc6731b850a
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/lxgw-neoxihei/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, fetchurl
+, stdenvNoCC
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "lxgw-neoxihei";
+  version = "1.106";
+
+  src = fetchurl {
+    url = "https://github.com/lxgw/LxgwNeoXiHei/releases/download/v${version}/LXGWNeoXiHei.ttf";
+    hash = "sha256-AXEOoU9gvml1bqjPTYV+mmhVGLG4R6mH8e/h3wQgySo=";
+  };
+
+  dontUnpack = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 $src $out/share/fonts/truetype/LXGWNeoXiHei.ttf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A Simplified Chinese sans-serif font derived from IPAex Gothic";
+    homepage = "https://github.com/lxgw/LxgwNeoXiHei";
+    license = licenses.ipa;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ zendo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/lxgw-wenkai/default.nix b/nixpkgs/pkgs/data/fonts/lxgw-wenkai/default.nix
new file mode 100644
index 000000000000..cd15891f2f4a
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/lxgw-wenkai/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "lxgw-wenkai";
+  version = "1.311";
+
+  src = fetchurl {
+    url = "https://github.com/lxgw/LxgwWenKai/releases/download/v${version}/${pname}-v${version}.tar.gz";
+    hash = "sha256-R7j6SBWGbkS4cJI1J8M5NDIDeJDFMjtXZnGiyxm2rjg=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    mv *.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://lxgw.github.io/";
+    description = "An open-source Chinese font derived from Fontworks' Klee One";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ elliot ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/manrope/default.nix b/nixpkgs/pkgs/data/fonts/manrope/default.nix
new file mode 100644
index 000000000000..e42d7879af74
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/manrope/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "manrope";
+  version = "4.505";
+
+  src = fetchFromGitHub {
+    owner = "sharanda";
+    repo = pname;
+    rev = "d79b66b10608610692d59f4107791d249d244416"; # no tags in repo
+    hash = "sha256-dxnCOkPUEG0knSekolx2+SGJR81vRK0wUrbzGH4KGD0=";
+  };
+
+  dontPatch = true;
+  dontConfigure = true;
+  dontBuild = true;
+  doCheck = false;
+  dontFixup = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 fonts/otf/*.otf -t $out/share/fonts/opentype
+    install -Dm644 fonts/ttf/*.ttf fonts/variable/*.ttf -t $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Open-source modern sans-serif font family";
+    homepage = "https://www.gent.media/manrope";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/maple-font/default.nix b/nixpkgs/pkgs/data/fonts/maple-font/default.nix
new file mode 100644
index 000000000000..a90a1e830171
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/maple-font/default.nix
@@ -0,0 +1,77 @@
+{ lib
+, stdenv
+, unzip
+, fetchurl
+}:
+
+let
+  maple-font = { pname, sha256, desc }:
+    stdenv.mkDerivation rec{
+      inherit pname;
+      version = "6.4";
+      src = fetchurl {
+        url = "https://github.com/subframe7536/Maple-font/releases/download/v${version}/${pname}.zip";
+        inherit sha256;
+      };
+
+      # Work around the "unpacker appears to have produced no directories"
+      # case that happens when the archive doesn't have a subdirectory.
+      sourceRoot = ".";
+      nativeBuildInputs = [ unzip ];
+      installPhase = ''
+        find . -name '*.ttf'    -exec install -Dt $out/share/fonts/truetype {} \;
+        find . -name '*.otf'    -exec install -Dt $out/share/fonts/opentype {} \;
+        find . -name '*.woff2'  -exec install -Dt $out/share/fonts/woff2 {} \;
+      '';
+
+      meta = with lib; {
+        homepage = "https://github.com/subframe7536/Maple-font";
+        description = ''
+          Open source ${desc} font with round corner and ligatures for IDE and command line
+        '';
+        license = licenses.ofl;
+        platforms = platforms.all;
+        maintainers = with maintainers; [ oluceps ];
+      };
+    };
+
+in
+{
+  Mono = maple-font {
+    pname = "MapleMono-ttf";
+    sha256 = "sha256-a06JLIP5aVb9SeEz6kw+LqKy0ydCgaUlPDFWA2Y0G8Q=";
+    desc = "monospace TrueType";
+  };
+
+  NF = maple-font {
+    pname = "MapleMono-NF";
+    sha256 = "sha256-fy+hdUYZDW5nkMVirhkmys3tIkWezPDrlpNxnRMl4WU=";
+    desc = "Nerd Font";
+  };
+
+  SC-NF = maple-font {
+    pname = "MapleMono-SC-NF";
+    sha256 = "sha256-SbXWkrpLJUrq+Jt1h3GBP9md5TbYpPchdiR0oEDMAgY=";
+    desc = "Nerd Font SC";
+  };
+
+  opentype = maple-font {
+    pname = "MapleMono-otf";
+    sha256 = "sha256-fwfFlNbaWXFCjcno7NK3dZqAzsHLh9rdGkSq26xc9qw=";
+    desc = "OpenType";
+  };
+
+  woff2 = maple-font {
+    pname = "MapleMono-woff2";
+    sha256 = "sha256-4akpZGGth4yZjI5wjO3ZXrXcWNxb7/6YChU7T5fNVKs=";
+    desc = "WOFF2.0";
+  };
+
+  autohint = maple-font {
+    pname = "MapleMono-ttf-autohint";
+    sha256 = "sha256-rSYIC42Bt+KFgxhwRhXS4sbh4etKYkCOo5nP2J2BHt4=";
+    desc = "ttf autohint";
+  };
+}
+
+
diff --git a/nixpkgs/pkgs/data/fonts/marathi-cursive/default.nix b/nixpkgs/pkgs/data/fonts/marathi-cursive/default.nix
new file mode 100644
index 000000000000..7f6bedc75e8b
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/marathi-cursive/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "marathi-cursive";
+  version = "2.1";
+
+  src = fetchurl {
+    url = "https://github.com/MihailJP/MarathiCursive/releases/download/v${version}/MarathiCursive-${version}.tar.xz";
+    hash = "sha256-C/z8ALV9bht0SaYqACO5ulSVCk1d6wBwvpVC4ZLgtek=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/marathi-cursive *.otf *.ttf
+    install -m444 -Dt $out/share/doc/${pname}-${version} README *.txt
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/MihailJP/MarathiCursive";
+    description = "Modi script font with Graphite and OpenType support";
+    maintainers = with maintainers; [ mathnerd314 ];
+    license = licenses.mit; # It's the M+ license, M+ is MIT(-ish)
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/martian-mono/default.nix b/nixpkgs/pkgs/data/fonts/martian-mono/default.nix
new file mode 100644
index 000000000000..ca15d938d95f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/martian-mono/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "martian-mono";
+  version = "1.0.0";
+
+  src = fetchzip {
+    url = "https://github.com/evilmartians/mono/releases/download/v${version}/martian-mono-${version}-otf.zip";
+    sha256 = "sha256-hC08IHWqg+x3qoEf4EL98ZbGeqdwjnMpDovEiWrWPpI=";
+    stripRoot = false;
+  };
+
+  dontPatch = true;
+  dontConfigure = true;
+  dontBuild = true;
+  doCheck = false;
+  dontFixup = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 -t $out/share/fonts/opentype/ *.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Free and open-source monospaced font from Evil Martians";
+    homepage = "https://github.com/evilmartians/mono";
+    changelog = "https://github.com/evilmartians/mono/raw/v${version}/Changelog.md";
+    license = licenses.ofl;
+    maintainers = [ maintainers.marsam ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/material-design-icons/default.nix b/nixpkgs/pkgs/data/fonts/material-design-icons/default.nix
new file mode 100644
index 000000000000..1a6537a0096f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/material-design-icons/default.nix
@@ -0,0 +1,39 @@
+{ lib, fetchFromGitHub, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "material-design-icons";
+  version = "7.3.67";
+
+  src = fetchFromGitHub {
+    owner = "Templarian";
+    repo = "MaterialDesign-Webfont";
+    rev = "v${version}";
+    sha256 = "sha256-gQT+5MqYo1qUiLJTzlhF5dB5BZMtr34JWn9rMa9MJvQ=";
+    sparseCheckout = [ "fonts" ];
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p "$out/share/fonts/"{eot,truetype,woff,woff2}
+    cp fonts/*.eot "$out/share/fonts/eot/"
+    cp fonts/*.ttf "$out/share/fonts/truetype/"
+    cp fonts/*.woff "$out/share/fonts/woff/"
+    cp fonts/*.woff2 "$out/share/fonts/woff2/"
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "7000+ Material Design Icons from the Community";
+    longDescription = ''
+      Material Design Icons' growing icon collection allows designers and
+      developers targeting various platforms to download icons in the format,
+      color and size they need for any project.
+    '';
+    homepage = "https://materialdesignicons.com";
+    license = licenses.asl20;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ vlaci PlayerNameHere ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/material-icons/default.nix b/nixpkgs/pkgs/data/fonts/material-icons/default.nix
new file mode 100644
index 000000000000..f03e8683e509
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/material-icons/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "material-icons";
+  version = "3.0.1";
+
+  src = fetchFromGitHub {
+    owner = "google";
+    repo = "material-design-icons";
+    rev = version;
+    hash = "sha256-4FphNJCsaLWzlVR4TmXnDBid0EVj39fkeoh5j1leBZ8=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp iconfont/*.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "System status icons by Google, featuring material design";
+    homepage = "https://material.io/icons";
+    license = licenses.asl20;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ mpcsh ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/material-symbols/default.nix b/nixpkgs/pkgs/data/fonts/material-symbols/default.nix
new file mode 100644
index 000000000000..b40f3c37cc61
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/material-symbols/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, rename
+}:
+
+stdenvNoCC.mkDerivation {
+  pname = "material-symbols";
+  version = "unstable-2023-11-17";
+
+  src = fetchFromGitHub {
+    owner = "google";
+    repo = "material-design-icons";
+    rev = "a90037f80d7db37279a7c1d863559e247ed81b05";
+    hash = "sha256-96nEvc9eBuAncPUun3JBeg+KW2GqT3mQNgdOCVdhEM0=";
+    sparseCheckout = [ "variablefont" ];
+  };
+
+  nativeBuildInputs = [ rename ];
+
+  installPhase = ''
+    runHook preInstall
+
+    rename 's/\[FILL,GRAD,opsz,wght\]//g' variablefont/*
+    install -Dm755 variablefont/*.ttf -t $out/share/fonts/TTF
+    install -Dm755 variablefont/*.woff2 -t $out/share/fonts/woff2
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Material Symbols icons by Google";
+    homepage = "https://fonts.google.com/icons";
+    downloadPage = "https://github.com/google/material-design-icons";
+    license = lib.licenses.asl20;
+    maintainers = with maintainers; [ fufexan ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/medio/default.nix b/nixpkgs/pkgs/data/fonts/medio/default.nix
new file mode 100644
index 000000000000..5adcad008662
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/medio/default.nix
@@ -0,0 +1,37 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+let
+  majorVersion = "0";
+  minorVersion = "200";
+in
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "medio";
+  version = "${majorVersion}.${minorVersion}";
+
+  src = fetchzip {
+    url = "https://dotcolon.net/download/fonts/${finalAttrs.pname}_${majorVersion}${minorVersion}.zip";
+    hash = "sha256-S+CcwD4zGVk7cIFD6K4NnpE/0mrJq4RnDJC576rhcLQ=";
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://dotcolon.net/font/${finalAttrs.pname}/";
+    description = "Serif font designed by Sora Sagano";
+    longDescription = ''
+      Medio is a serif font designed by Sora Sagano, based roughly
+      on the proportions of the font Tenderness (from the same designer),
+      but with hairline serifs in the style of a Didone.
+    '';
+    platforms = platforms.all;
+    maintainers = with maintainers; [ leenaars minijackson ];
+    license = licenses.cc0;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/melete/default.nix b/nixpkgs/pkgs/data/fonts/melete/default.nix
new file mode 100644
index 000000000000..3d3e24ac81da
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/melete/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+let
+  majorVersion = "0";
+  minorVersion = "200";
+in
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "melete";
+  version = "${majorVersion}.${minorVersion}";
+
+  src = fetchzip {
+    url = "https://dotcolon.net/download/fonts/${finalAttrs.pname}_${majorVersion}${minorVersion}.zip";
+    hash = "sha256-y1xtNM1Oy92gOvbr9J71XNxb1JeTzOgxKms3G2YHK00=";
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://dotcolon.net/font/${finalAttrs.pname}/";
+    description = "A headline typeface that could be used as a movie title";
+    platforms = platforms.all;
+    maintainers = with maintainers; [ minijackson ];
+    license = licenses.ofl;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/merriweather-sans/default.nix b/nixpkgs/pkgs/data/fonts/merriweather-sans/default.nix
new file mode 100644
index 000000000000..397f42236b52
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/merriweather-sans/default.nix
@@ -0,0 +1,34 @@
+{ stdenvNoCC
+, lib
+, fetchFromGitHub
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "merriweather-sans";
+  version = "1.008";
+
+  src = fetchFromGitHub {
+    owner = "SorkinType";
+    repo = "Merriweather-Sans";
+    rev = "8a1b078e3aeec6aecc856c3422898816af9b9dc7";
+    sha256 = "1f6a64bv4b4b1v3g2pgrzxcys8rk12wq6wfxamgzligcq5fxaffd";
+  };
+
+  # TODO: it would be nice to build this from scratch, but lots of
+  # Python dependencies to package (fontmake, gftools)
+
+  installPhase = ''
+    install -m444 -Dt $out/share/fonts/truetype/${pname} fonts/ttfs/*.ttf
+    install -m444 -Dt $out/share/fonts/woff/${pname} fonts/woff/*.woff
+    install -m444 -Dt $out/share/fonts/woff2/${pname} fonts/woff2/*.woff2
+    # TODO: install variable version?
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/SorkinType/Merriweather-Sans";
+    description = "Merriweather Sans is a low-contrast semi-condensed sans-serif text typeface family designed to be pleasant to read at very small sizes";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ emily ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/merriweather/default.nix b/nixpkgs/pkgs/data/fonts/merriweather/default.nix
new file mode 100644
index 000000000000..d1b3359df26e
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/merriweather/default.nix
@@ -0,0 +1,35 @@
+{ stdenvNoCC
+, lib
+, fetchFromGitHub
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "merriweather";
+  version = "2.005";
+
+  src = fetchFromGitHub {
+    owner = "SorkinType";
+    repo = "Merriweather";
+    rev = "4fd88c9299009d1c1d201e7da3ff75cf1de5153a";
+    sha256 = "1ndycja2jzhcfbqbm0p6ka2zl1i1pdbkf0crw2lp3pi4k89wlm29";
+  };
+
+  # TODO: it would be nice to build this from scratch, but lots of
+  # Python dependencies to package (fontmake, gftools)
+
+  installPhase = ''
+    install -m444 -Dt $out/share/fonts/opentype/${pname} fonts/otf/*.otf
+    install -m444 -Dt $out/share/fonts/truetype/${pname} fonts/ttfs/*.ttf
+    install -m444 -Dt $out/share/fonts/woff/${pname} fonts/woff/*.woff
+    install -m444 -Dt $out/share/fonts/woff2/${pname} fonts/woff2/*.woff2
+    # TODO: install variable version?
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/SorkinType/Merriweather";
+    description = "A text face designed to be pleasant to read on screens";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ emily ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/meslo-lg/default.nix b/nixpkgs/pkgs/data/fonts/meslo-lg/default.nix
new file mode 100644
index 000000000000..be638a03229f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/meslo-lg/default.nix
@@ -0,0 +1,45 @@
+{ lib, stdenv, fetchurl, unzip }:
+
+stdenv.mkDerivation rec {
+  version = "1.2.1";
+
+  pname = "meslo-lg";
+
+  meslo-lg = fetchurl {
+    url="https://github.com/andreberg/Meslo-Font/blob/master/dist/v${version}/Meslo%20LG%20v${version}.zip?raw=true";
+    name="${pname}-${version}";
+    sha256="1l08mxlzaz3i5bamnfr49s2k4k23vdm64b8nz2ha33ysimkbgg6h";
+  };
+
+  meslo-lg-dz = fetchurl {
+    url="https://github.com/andreberg/Meslo-Font/blob/master/dist/v${version}/Meslo%20LG%20DZ%20v${version}.zip?raw=true";
+    name="${pname}-${version}-dz";
+    sha256="0lnbkrvcpgz9chnvix79j6fiz36wj6n46brb7b1746182rl1l875";
+  };
+
+  nativeBuildInputs = [ unzip ];
+
+  sourceRoot = ".";
+
+  unpackPhase = ''
+    unzip -j ${meslo-lg}
+    unzip -j ${meslo-lg-dz}
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype
+    cp *.ttf $out/share/fonts/truetype
+  '';
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "1cppf8sk6r5wjnnas9n6iyag6pj9jvaic66lvwpqg3742s5akx6x";
+
+  meta = {
+    description = "A customized version of Apple’s Menlo-Regular font";
+    homepage = "https://github.com/andreberg/Meslo-Font/";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ ];
+    platforms = with lib.platforms; all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/meslo-lgs-nf/default.nix b/nixpkgs/pkgs/data/fonts/meslo-lgs-nf/default.nix
new file mode 100644
index 000000000000..51dacaba366c
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/meslo-lgs-nf/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "meslo-lgs-nf";
+  version = "unstable-2023-04-03";
+
+  src = fetchFromGitHub {
+    owner = "romkatv";
+    repo = "powerlevel10k-media";
+    rev = "145eb9fbc2f42ee408dacd9b22d8e6e0e553f83d";
+    sha256 = "sha256-8xwVOlOP1SresbReNh1ce2Eu12KdIwdJSg6LKM+k2ng=";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype
+    cp $src/*.ttf $out/share/fonts/truetype
+  '';
+
+  meta = with lib; {
+    description = "Meslo Nerd Font patched for Powerlevel10k";
+    homepage = "https://github.com/romkatv/powerlevel10k-media";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ bbigras ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/migmix/default.nix b/nixpkgs/pkgs/data/fonts/migmix/default.nix
new file mode 100644
index 000000000000..bcc0666f035d
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/migmix/default.nix
@@ -0,0 +1,42 @@
+{ lib, stdenv, fetchzip }:
+
+stdenv.mkDerivation rec {
+  pname = "migmix";
+  version = "20150712";
+
+  srcs = [
+    (fetchzip {
+      url = "mirror://osdn/mix-mplus-ipa/63544/migmix-1p-${version}.zip";
+      sha256 = "0wp44axcalaak04nj3dgpx0vk13nqa3ihx2vjv4acsgv83x8ciph";
+    })
+    (fetchzip {
+      url = "mirror://osdn/mix-mplus-ipa/63544/migmix-2p-${version}.zip";
+      sha256 = "0y7s3rbxrp5bv56qgihk8b847lqgibfhn2wlkzx7z655fbzdgxw9";
+    })
+    (fetchzip {
+      url = "mirror://osdn/mix-mplus-ipa/63544/migmix-1m-${version}.zip";
+      sha256 = "1sfym0chy8ilyd9sr3mjc0bf63vc33p05ynpdc11miivxn4qsshx";
+    })
+    (fetchzip {
+      url = "mirror://osdn/mix-mplus-ipa/63544/migmix-2m-${version}.zip";
+      sha256 = "0hg04rvm39fh4my4akmv4rhfc14s3ipz2aw718h505k9hppkhkch";
+    })
+  ];
+
+  dontUnpack = true;
+
+  installPhase = ''
+    find $srcs -name '*.ttf' -exec install -m644 -Dt $out/share/fonts/truetype/migmix {} \;
+  '';
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "1fhh8wg6lxwrnsg9rl4ihffl0bsp1wqa5gps9fx60kr6j9wpvmbg";
+
+  meta = with lib; {
+    description = "A high-quality Japanese font based on M+ fonts and IPA fonts";
+    homepage = "http://mix-mplus-ipa.osdn.jp/migmix";
+    license = licenses.ipa;
+    maintainers = [ maintainers.mikoim ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/migu/default.nix b/nixpkgs/pkgs/data/fonts/migu/default.nix
new file mode 100644
index 000000000000..09992ef5ec8c
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/migu/default.nix
@@ -0,0 +1,42 @@
+{ lib, stdenv, fetchzip }:
+
+stdenv.mkDerivation rec {
+  pname = "migu";
+  version = "20150712";
+
+  srcs = [
+    (fetchzip {
+      url = "mirror://osdn/mix-mplus-ipa/63545/migu-1p-${version}.zip";
+      sha256 = "04wpbk5xbbcv2rzac8yzj4ww7sk2hy2rg8zs96yxc5vzj9q7svf6";
+    })
+    (fetchzip {
+      url = "mirror://osdn/mix-mplus-ipa/63545/migu-1c-${version}.zip";
+      sha256 = "1k7ymix14ac5fb44bjvbaaf24784zzpyc1jj2280c0zdnpxksyk6";
+    })
+    (fetchzip {
+      url = "mirror://osdn/mix-mplus-ipa/63545/migu-1m-${version}.zip";
+      sha256 = "07r8id83v92hym21vrqmfsfxb646v8258001pkjhgfnfg1yvw8lm";
+    })
+    (fetchzip {
+      url = "mirror://osdn/mix-mplus-ipa/63545/migu-2m-${version}.zip";
+      sha256 = "1pvzbrawh43589j8rfxk86y1acjbgzzdy5wllvdkpm1qnx28zwc2";
+    })
+  ];
+
+  dontUnpack = true;
+
+  installPhase = ''
+    find $srcs -name '*.ttf' | xargs install -m644 --target $out/share/fonts/truetype/migu -D
+  '';
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "0nbpn21cxdd6gsgr3fadzjsnz84f2swpf81wmscmjgvd56ngndzh";
+
+  meta = with lib; {
+    description = "A high-quality Japanese font based on modified M+ fonts and IPA fonts";
+    homepage = "http://mix-mplus-ipa.osdn.jp/migu/";
+    license = licenses.ipa;
+    maintainers = [ maintainers.mikoim ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/mno16/default.nix b/nixpkgs/pkgs/data/fonts/mno16/default.nix
new file mode 100644
index 000000000000..59597120c100
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/mno16/default.nix
@@ -0,0 +1,23 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "mno16";
+  version = "1.0";
+
+  src = fetchzip {
+    url = "https://github.com/sevmeyer/${pname}/releases/download/${version}/${pname}-${version}.zip";
+    stripRoot = false;
+    hash = "sha256-xJQ9V7GlGUTEeYhqYFl/SemS6iqV0eW85YOn/tLgA+M=";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype
+    cp fonts/*.ttf $out/share/fonts/truetype/
+  '';
+
+  meta = with lib; {
+    description = "minimalist monospaced font";
+    homepage = "https://sev.dev/fonts/mno16";
+    license = licenses.cc0;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/mona-sans/default.nix b/nixpkgs/pkgs/data/fonts/mona-sans/default.nix
new file mode 100644
index 000000000000..c73653c76ec3
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/mona-sans/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+}:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "mona-sans";
+  version = "1.0.1";
+
+  src = fetchFromGitHub {
+    rev = "v${finalAttrs.version}";
+    owner = "github";
+    repo = "mona-sans";
+    sha256 = "sha256-XvqLFzlgIqx9aZH2SEAtwMiuWgUiDi/gHGSpfreUHuk=";
+  };
+
+  installPhase = ''
+    install -D -m444 -t $out/share/fonts/opentype fonts/otf/*.otf
+    install -D -m444 -t $out/share/fonts/truetype fonts/ttf/*.ttf fonts/variable/*.ttf
+  '';
+
+  meta = {
+    description = "A variable font from GitHub";
+    homepage = "https://github.com/mona-sans";
+    changelog = "https://github.com/github/mona-sans/releases/tag/v${finalAttrs.version}";
+    license = lib.licenses.ofl;
+    longDescription = ''
+      A strong and versatile typeface, designed together with Degarism and
+      inspired by industrial-era grotesques. Mona Sans works well across
+      product, web, and print. Made to work well together with Mona Sans's
+      sidekick, Hubot Sans.
+
+      Mona Sans is a variable font. Variable fonts enable different variations
+      of a typeface to be incorporated into one single file, and are supported
+      by all major browsers, allowing for performance benefits and granular
+      design control of the typeface's weight, width, and slant.
+    '';
+    maintainers = with lib.maintainers; [ drupol ];
+    platforms = lib.platforms.all;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/monocraft/default.nix b/nixpkgs/pkgs/data/fonts/monocraft/default.nix
new file mode 100644
index 000000000000..c1e4be656ce1
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/monocraft/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, lib, fetchurl }:
+
+let
+  version = "2.4";
+  relArtifact = name: hash: fetchurl {
+    inherit name hash;
+    url = "https://github.com/IdreesInc/Monocraft/releases/download/v${version}/${name}";
+  };
+in
+stdenv.mkDerivation {
+  pname = "monocraft";
+  inherit version;
+
+  srcs = [
+    (relArtifact "Monocraft.otf" "sha256-PA1W+gOUStGw7cDmtEbG+B6M+sAYr8cft+Ckxj5LciU=")
+    (relArtifact "Monocraft.ttf" "sha256-S4j5v2bTJbhujT3Bt8daNN1YGYYP8zVPf9XXjuR64+o=")
+    (relArtifact "Monocraft-no-ligatures.ttf" "sha256-MuHfoP+dsXe+ODN4vWFIj50jwOxYyIiS0dd1tzVxHts=")
+    (relArtifact "Monocraft-nerd-fonts-patched.ttf" "sha256-QxMp8UwcRjWySNHWoNeX2sX9teZ4+tCFj+DG41azsXw=")
+  ];
+
+  sourceRoot = ".";
+  unpackCmd = ''cp "$curSrc" $(basename $curSrc)'';
+
+  dontConfigure = true;
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm644 -t $out/share/fonts/opentype *.otf
+    install -Dm644 -t $out/share/fonts/truetype *.ttf
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A programming font based on the typeface used in Minecraft";
+    homepage = "https://github.com/IdreesInc/Monocraft";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ zhaofengli ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/monoid/default.nix b/nixpkgs/pkgs/data/fonts/monoid/default.nix
new file mode 100644
index 000000000000..fab91ae4e20b
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/monoid/default.nix
@@ -0,0 +1,43 @@
+{ lib, stdenv, fetchFromGitHub, python39 }:
+
+stdenv.mkDerivation {
+  pname = "monoid";
+  version = "2020-10-26";
+
+  src = fetchFromGitHub {
+    owner = "larsenwork";
+    repo = "monoid";
+    rev = "0673c8d6728df093faee9f183b6dfa62939df8c0";
+    sha256 = "sha256-u2jwVOC9QM2JHsdAVBuEpqqdiBAVs+IWnpp48A5Xk28=";
+  };
+
+  nativeBuildInputs = [
+    (python39.withPackages (pp: with pp; [
+      fontforge
+    ]))
+  ];
+
+  buildPhase = ''
+    local _d=""
+    local _l=""
+    for _d in {Monoisome,Source}/*.sfdir; do
+      _l="''${_d##*/}.log"
+      echo "Building $_d (log at $_l)"
+      python Scripts/build.py 1 0 $_d > $_l
+    done
+  '';
+
+  installPhase = ''
+    install -m444 -Dt $out/share/fonts/truetype _release/*
+    install -m444 -Dt $out/share/doc            Readme.md
+  '';
+
+  meta = with lib; {
+    homepage = "http://larsenwork.com/monoid";
+    description = "Customisable coding font with alternates, ligatures and contextual positioning";
+    license = [ licenses.ofl licenses.mit ];
+    platforms = platforms.all;
+    maintainers = [ maintainers.romildo ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/data/fonts/mononoki/default.nix b/nixpkgs/pkgs/data/fonts/mononoki/default.nix
new file mode 100644
index 000000000000..d943d42be7ac
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/mononoki/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "mononoki";
+  version = "1.6";
+
+  src = fetchzip {
+    url = "https://github.com/madmalik/mononoki/releases/download/${version}/mononoki.zip";
+    stripRoot = false;
+    hash = "sha256-HQM9rzIJXLOScPEXZu0MzRlblLfbVVNJ+YvpONxXuwQ=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/mononoki
+    cp * $out/share/fonts/mononoki
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/madmalik/mononoki";
+    description = "A font for programming and code review";
+    license = licenses.ofl;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/montserrat/default.nix b/nixpkgs/pkgs/data/fonts/montserrat/default.nix
new file mode 100644
index 000000000000..6074018f5545
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/montserrat/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "montserrat";
+  version = "7.222";
+
+  src = fetchFromGitHub {
+    owner = "JulietaUla";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-eVCRn2OtNI5NuYZBQy06HKnMMXhPPnFxI8m8kguZjg0=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/{otf,ttf,woff,woff2}
+
+    mv fonts/otf/*.otf $out/share/fonts/otf
+    mv fonts/ttf/*.ttf $out/share/fonts/ttf
+    mv fonts/webfonts/*.woff $out/share/fonts/woff
+    mv fonts/webfonts/*.woff2 $out/share/fonts/woff2
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A geometric sans serif font with extended latin support (Regular, Alternates, Subrayada)";
+    homepage = "https://www.fontspace.com/julieta-ulanovsky/montserrat";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ scolobb jk ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/mph-2b-damase/default.nix b/nixpkgs/pkgs/data/fonts/mph-2b-damase/default.nix
new file mode 100644
index 000000000000..d5623d907bee
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/mph-2b-damase/default.nix
@@ -0,0 +1,21 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "mph-2b-damase";
+  version = "2";
+
+  src = fetchzip {
+    url = "https://web.archive.org/web/20160322114946/http://www.wazu.jp/downloads/damase_v.2.zip";
+    hash = "sha256-4x78D+c3ZBxfhTQQ4+gyxvrsuztHF2ItXLh4uA0PxvU=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = { };
+}
diff --git a/nixpkgs/pkgs/data/fonts/mplus-outline-fonts/default.nix b/nixpkgs/pkgs/data/fonts/mplus-outline-fonts/default.nix
new file mode 100644
index 000000000000..06d4f018e644
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/mplus-outline-fonts/default.nix
@@ -0,0 +1,61 @@
+{ lib, stdenvNoCC, fetchurl, fetchFromGitHub }:
+
+let pname = "mplus-outline-fonts";
+in
+{
+  osdnRelease = stdenvNoCC.mkDerivation {
+    pname = "${pname}-osdn";
+    version = "063a";
+
+    src = fetchurl {
+      url = "mirror://osdn/mplus-fonts/62344/mplus-TESTFLIGHT-063a.tar.xz";
+      hash = "sha256-ROuXO0tq/1dN5FTbEF3cI+Z0nCKUc0vZyx4Nc05M3Xk=";
+    };
+
+    installPhase = ''
+      runHook preInstall
+
+      install -m444 -Dt $out/share/fonts/truetype/${pname} *.ttf
+
+      runHook postInstall
+    '';
+
+    meta = with lib; {
+      description = "M+ Outline Fonts (legacy OSDN release)";
+      homepage = "https://mplus-fonts.osdn.jp";
+      maintainers = with maintainers; [ uakci ];
+      platforms = platforms.all;
+      license = licenses.mit;
+    };
+  };
+
+  githubRelease = stdenvNoCC.mkDerivation {
+    pname = "${pname}-github";
+    version = "unstable-2022-05-19";
+
+    src = fetchFromGitHub {
+      owner = "coz-m";
+      repo = "MPLUS_FONTS";
+      rev = "336fec4e9e7c1e61bd22b82e6364686121cf3932";
+      hash = "sha256-jzDDUs1dKjqNjsMeTA2/4vm+akIisnOuE2mPQS7IDSA=";
+    };
+
+    installPhase = ''
+      runHook preInstall
+
+      mkdir -p $out/share/fonts/{truetype,opentype}/${pname}
+      mv fonts/ttf/* $out/share/fonts/truetype/${pname}
+      mv fonts/otf/* $out/share/fonts/opentype/${pname}
+
+      runHook postInstall
+    '';
+
+    meta = with lib; {
+      description = "M+ Outline Fonts (GitHub release)";
+      homepage = "https://mplusfonts.github.io";
+      maintainers = with maintainers; [ uakci ];
+      platforms = platforms.all;
+      license = licenses.ofl;
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/mro-unicode/default.nix b/nixpkgs/pkgs/data/fonts/mro-unicode/default.nix
new file mode 100644
index 000000000000..9a522c1c2a36
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/mro-unicode/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation {
+  pname = "mro-unicode";
+  version = "unstable-2013-05-25";
+
+  src = fetchurl {
+    url = "https://github.com/phjamr/MroUnicode/raw/f297de070f7eba721a47c850e08efc119d3bfbe8/MroUnicode-Regular.ttf";
+    hash = "sha256-hcQmTuRWxaU5KEMXg/O0b1olE8YxXWz0PAlqAJknR/0=";
+  };
+
+  dontUnpack = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 $src $out/share/fonts/truetype/MroUnicode-Regular.ttf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/phjamr/MroUnicode";
+    description = "Unicode-compliant Mro font";
+    maintainers = with maintainers; [ mathnerd314 ];
+    license = licenses.ofl;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/myrica/default.nix b/nixpkgs/pkgs/data/fonts/myrica/default.nix
new file mode 100644
index 000000000000..5d8aa43a5b21
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/myrica/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation {
+  pname = "myrica";
+  version = "2.011.20160403";
+
+  src = fetchFromGitHub {
+    owner = "tomokuni";
+    repo = "Myrica";
+    # commit does not exist on any branch on the target repository
+    rev = "b737107723bfddd917210f979ccc32ab3eb6dc20";
+    hash = "sha256-kx+adbN2DsO81KJFt+FGAPZN+1NpE9xiagKZ4KyaJV0=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp product/*.TTC $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://myrica.estable.jp/";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ mikoim ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/nacelle/default.nix b/nixpkgs/pkgs/data/fonts/nacelle/default.nix
new file mode 100644
index 000000000000..2d670cdc229d
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/nacelle/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+let
+  majorVersion = "1";
+  minorVersion = "00";
+in
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "nacelle";
+  version = "${majorVersion}.${minorVersion}";
+
+  src = fetchzip {
+    url = "https://dotcolon.net/download/fonts/${finalAttrs.pname}_${majorVersion}${minorVersion}.zip";
+    hash = "sha256-e4QsPiyfWEAYHWdwR3CkGc2UzuA3hZPYYlWtIubY0Oo=";
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://dotcolon.net/font/${finalAttrs.pname}/";
+    description = "A improved version of the Aileron font";
+    platforms = platforms.all;
+    maintainers = with maintainers; [ minijackson ];
+    license = licenses.ofl;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/nafees/default.nix b/nixpkgs/pkgs/data/fonts/nafees/default.nix
new file mode 100644
index 000000000000..e23528aefe80
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/nafees/default.nix
@@ -0,0 +1,62 @@
+{lib, stdenv, fetchurl, unzip}:
+
+stdenv.mkDerivation {
+  name = "nafees";
+
+  srcs = [(fetchurl {
+    url = "http://www.cle.org.pk/Downloads/localization/fonts/NafeesNastaleeq/Nafees_Nastaleeq_v1.02.zip";
+    sha256 = "1h1k5d74pg2gs782910v7i9rz2633wdacy34ds7ybxbpjiz6pqix";
+  })
+
+  (fetchurl {
+    url = "http://www.cle.org.pk/Downloads/localization/fonts/NafeesRiqa/Nafees_Riqa_v1.0.zip";
+    sha256 = "1liismsyaj69y40vs9a9db4l95n25n8vnjnx7sbk70nxppwngd8i";
+  })
+
+  (fetchurl {
+    url = "http://www.cle.org.pk/Downloads/localization/fonts/NafeesNaskh/Nafees_Naskh_v2.01.zip";
+    sha256 = "1qbbj6w6bvrlymv7z6ld609yhp0l2f27z14180w5n8kzzl720vly";
+  })
+
+  (fetchurl {
+    url = "http://www.cle.org.pk/Downloads/localization/fonts/NafeesTahreerNaskh/Nafees_Tahreer_Naskh_v1.0.zip";
+    sha256 = "006l87drbi4zh52kpvn8wl9wbwm9srfn406rzsnf4gv0spzhqrxl";
+  })
+  (fetchurl {
+    url = "http://www.cle.org.pk/Downloads/localization/fonts/NafeesPakistaniNaskh/Nafees_Pakistani_Naskh_v2.01.zip";
+    sha256 = "1i5ip60gq1cgc9fc96kvlahdpia8dxdgcisglvbm2d212bz0s5nb";
+  })
+];
+
+  nativeBuildInputs = [unzip];
+
+  sourceRoot = ".";
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype
+    cp *.ttf $out/share/fonts/truetype
+    # cp $riqa/*.ttf $out/share/fonts/truetype
+  '';
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "1wa0j65iz20ij37dazd1rjg8x625m6q1y8g5h7ia48pbc88sr01q";
+
+  meta = {
+    description = "OpenType Urdu font from the Center for Research in Urdu Language Processing";
+    longDescription = ''
+      The Nafees font family is developed according
+      to calligraphic rules, following the style of Syed Nafees
+      Al-Hussaini (Nafees Raqam) one of the finest calligraphers of
+      Pakistan
+    '';
+    homepage = "http://www.cle.org.pk/software/localization.htm";
+
+    # Used to be GPLv2.  The license distributed with the fonts looks
+    # more like a modified BSD, but still contains the GPLv2 embedded
+    # font exception, and some not-for-resale language.
+    license = "unknown";
+    platforms = lib.platforms.all;
+    maintainers = with lib.maintainers; [ bergey ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/nahid-fonts/default.nix b/nixpkgs/pkgs/data/fonts/nahid-fonts/default.nix
new file mode 100644
index 000000000000..d036eed35c96
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/nahid-fonts/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "nahid-fonts";
+  version = "0.3.0";
+
+  src = fetchFromGitHub {
+    owner = "rastikerdar";
+    repo = "nahid-font";
+    rev = "v${version}";
+    hash = "sha256-r8/W0/pJV6OX954spIITvW7M6lIbZRpbsvEHErnXglg=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    find . -name '*.ttf' -exec install -m444 -Dt $out/share/fonts/nahid-fonts {} \;
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/rastikerdar/nahid-font";
+    description = "A Persian (Farsi) Font - قلم (فونت) فارسی ناهید";
+    license = licenses.free;
+    platforms = platforms.all;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/nanum-gothic-coding/default.nix b/nixpkgs/pkgs/data/fonts/nanum-gothic-coding/default.nix
new file mode 100644
index 000000000000..3798a33b66c6
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/nanum-gothic-coding/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "nanum-gothic-coding";
+  version = "2.5";
+
+  src = fetchzip {
+    url = "https://github.com/naver/nanumfont/releases/download/VER${version}/NanumGothicCoding-${version}.zip";
+    stripRoot = false;
+    hash = "sha256-jHbbCMUxn54iQMKdAWI3r8CDxi+5LLJh8ucQzq2Ukdc=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/NanumGothicCoding
+    cp *.ttf $out/share/fonts/NanumGothicCoding
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A contemporary monospaced sans-serif typeface with a warm touch";
+    homepage = "https://github.com/naver/nanumfont";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/nanum/default.nix b/nixpkgs/pkgs/data/fonts/nanum/default.nix
new file mode 100644
index 000000000000..64575a131029
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/nanum/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "nanum";
+  version = "20200506";
+
+  src = fetchurl {
+    url = "mirror://ubuntu/pool/universe/f/fonts-${pname}/fonts-${pname}_${version}.orig.tar.xz";
+    hash = "sha256-FXgDdIGYFRJQo898sDrvhE5AjpyYhJ3YieGRhGqsrUs=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts
+    cp *.ttf $out/share/fonts
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Nanum Korean font set";
+    homepage = "https://hangeul.naver.com/font";
+    license = licenses.ofl;
+    maintainers = with lib.maintainers; [ serge ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/nasin-nanpa/default.nix b/nixpkgs/pkgs/data/fonts/nasin-nanpa/default.nix
new file mode 100644
index 000000000000..cd05c667a248
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/nasin-nanpa/default.nix
@@ -0,0 +1,42 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "nasin-nanpa";
+  version = "2.5.1";
+
+  srcs = [
+    (fetchurl {
+      name = "nasin-nanpa.otf";
+      url = "https://github.com/ETBCOR/nasin-nanpa/releases/download/n${version}/nasin-nanpa-${version}.otf";
+      hash = "sha256-++uOrqFzQ6CB/OPEmBivpjMfAtFk3PSsCNpFBjOtGEg=";
+    })
+    (fetchurl {
+      name = "nasin-nanpa-lasina-kin.otf";
+      url = "https://github.com/ETBCOR/nasin-nanpa/releases/download/n${version}/nasin-nanpa-${version}-lasina-kin.otf";
+      hash = "sha256-4WIX74y2O4NaKi/JQrgTbOxlKDQKJ/F9wkQuoOdWuTI=";
+    })
+  ];
+
+  dontUnpack = true;
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/opentype
+    for src in $srcs; do
+        file=$(stripHash $src)
+        cp $src $out/share/fonts/opentype/$file
+    done
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/ETBCOR/nasin-nanpa";
+    description = "UCSUR OpenType monospaced font for the Toki Pona writing system, Sitelen Pona";
+    longDescription = ''
+      ni li nasin pi sitelen pona.
+      sitelen ale pi nasin ni li sama mute weka.
+      sitelen pi nasin ni li lon nasin UCSUR kin.
+    '';
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ somasis ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/national-park/default.nix b/nixpkgs/pkgs/data/fonts/national-park/default.nix
new file mode 100644
index 000000000000..4970e0d5920f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/national-park/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "national-park-typeface";
+  version = "206464";
+
+  src = fetchzip {
+    url = "https://files.cargocollective.com/c${version}/NationalPark.zip";
+    stripRoot = false;
+    hash = "sha256-VUboZZVJfKupnoHXo3RxetEEYimrr1DxghVZaaWnnw4=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.otf -t $out/share/fonts/opentype/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = ''Typeface designed to mimic the national park service
+    signs that are carved using a router bit'';
+    homepage = "https://nationalparktypeface.com/";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/navilu/default.nix b/nixpkgs/pkgs/data/fonts/navilu/default.nix
new file mode 100644
index 000000000000..afd9f85741c3
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/navilu/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenv, fetchFromGitHub, fontforge }:
+
+stdenv.mkDerivation rec {
+  pname = "navilu-font";
+  version = "1.2";
+
+  src = fetchFromGitHub {
+    owner = "aravindavk";
+    repo = "Navilu";
+    rev = "v${version}";
+    sha256 = "1vm6n04siaa0zf6jzp5s2gzgr2qxs3vdnmcmg4dcy07py2kd2fla";
+  };
+
+  nativeBuildInputs = [ fontforge ];
+
+  dontConfigure = true;
+
+  preBuild = "patchShebangs generate.pe";
+
+  installPhase = "install -Dm444 -t $out/share/fonts/truetype/ Navilu.ttf";
+
+  meta = with lib; src.meta // {
+    description = "A Kannada handwriting font";
+    license = licenses.gpl3Plus;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ ehmry ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/nerdfonts/default.nix b/nixpkgs/pkgs/data/fonts/nerdfonts/default.nix
new file mode 100644
index 000000000000..b2576d0fca46
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/nerdfonts/default.nix
@@ -0,0 +1,72 @@
+{ stdenv
+, fetchurl
+, lib
+# To select only certain fonts, put a list of strings to `fonts`: every key in
+# ./shas.nix is an optional font
+, fonts ? []
+# Whether to enable Windows font variants, their internal font name is limited
+# to 31 characters
+, enableWindowsFonts ? false
+}:
+
+let
+  # both of these files are generated via ./update.sh
+  version = import ./version.nix;
+  fontsShas = import ./shas.nix;
+  knownFonts = builtins.attrNames fontsShas;
+  selectedFonts = if (fonts == []) then
+    knownFonts
+  else
+    let unknown = lib.subtractLists knownFonts fonts; in
+    if (unknown != []) then
+      throw "Unknown font(s): ${lib.concatStringsSep " " unknown}"
+    else
+      fonts
+  ;
+  selectedFontsShas = lib.attrsets.genAttrs selectedFonts (
+    fName:
+    fontsShas."${fName}"
+  );
+  srcs = lib.attrsets.mapAttrsToList (
+    fName:
+    fSha:
+    (fetchurl {
+      url = "https://github.com/ryanoasis/nerd-fonts/releases/download/v${version}/${fName}.tar.xz";
+      sha256 = fSha;
+    })
+  ) selectedFontsShas;
+in
+
+stdenv.mkDerivation (finalAttrs: {
+  inherit version;
+  inherit srcs;
+  pname = "nerdfonts";
+  sourceRoot = ".";
+  buildPhase = ''
+    echo "selected fonts are ${toString selectedFonts}"
+    ls *.otf *.ttf
+  '';
+  installPhase = ''
+    find -name \*.otf -exec mkdir -p $out/share/fonts/opentype/NerdFonts \; -exec mv {} $out/share/fonts/opentype/NerdFonts \;
+    find -name \*.ttf -exec mkdir -p $out/share/fonts/truetype/NerdFonts \; -exec mv {} $out/share/fonts/truetype/NerdFonts \;
+    ${lib.optionalString (! enableWindowsFonts) ''
+      rm -rfv $out/share/fonts/opentype/NerdFonts/*Windows\ Compatible.*
+      rm -rfv $out/share/fonts/truetype/NerdFonts/*Windows\ Compatible.*
+    ''}
+  '';
+  passthru.updateScript = ./update.sh;
+
+  meta = with lib; {
+    description = "Iconic font aggregator, collection, & patcher. 3,600+ icons, 50+ patched fonts";
+    longDescription = ''
+      Nerd Fonts is a project that attempts to patch as many developer targeted
+      and/or used fonts as possible. The patch is to specifically add a high
+      number of additional glyphs from popular 'iconic fonts' such as Font
+      Awesome, Devicons, Octicons, and others.
+    '';
+    homepage = "https://nerdfonts.com/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ doronbehar ];
+    hydraPlatforms = []; # 'Output limit exceeded' on Hydra
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/nerdfonts/shas.nix b/nixpkgs/pkgs/data/fonts/nerdfonts/shas.nix
new file mode 100644
index 000000000000..5a1210237630
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/nerdfonts/shas.nix
@@ -0,0 +1,66 @@
+{
+  "0xProto" = "0a05a5pzqrncijngdn39v4dckq54sip1sclyyazfwgz5lyazwsac";
+  "3270" = "0fdfwgjn2gx1a3pakyqlbq2yijrs7i8z7zcgb59qy7dfn1ddc1wc";
+  "Agave" = "1akiinz10nmwqffdms3367hizbnk2y2d545ypz94hfvp3b5kpagr";
+  "AnonymousPro" = "1nkg8wxcw0fvshvbphaqq3hwsi14lj5adh93nklg7y9zvqyyg63m";
+  "Arimo" = "04dfmy16jvrm0n4y2fwad9d3ijwibb3rhm8b0gxyfx30ipm7ar67";
+  "AurulentSansMono" = "0h7n1dxim6623s7b6nww72g28qfbdafakzpzmkdv0nywa0k0z6bw";
+  "BigBlueTerminal" = "1y5i2bkcszi48ajman2gm4vsqxdh03hf0l66bdzaihfxbxx7wsc1";
+  "BitstreamVeraSansMono" = "0y8b9ckq9im3mnzz66zk8alkgf450hy9a2gwb1zvb1s93kc8jmfb";
+  "CascadiaCode" = "1x5y55s6nc7k7lnrwv547a3vaf65q099mj17qindki27vylp4pvg";
+  "CascadiaMono" = "1168l2lvb5wi4wy2hplm8mxzwvk4k0si4sgabpamxn7qwynxg875";
+  "CodeNewRoman" = "1bj6jf9h0975f5syxibgw1vbw5hf1yh7lz118s6nmfdnjd3gkgxh";
+  "ComicShannsMono" = "1c32nhk02aiiz8cwws1rhvikyb27i5jbigy9k20n6zcj5v1n2b4f";
+  "CommitMono" = "00anj74dzjbf2b51r52qcw28jbvpd3v9p9gnws5c1bhjc4p0a3h0";
+  "Cousine" = "1apa96haqyi1ya7w5n7bvmy80gwqvawc9pnwcw19z1j8vmlxziya";
+  "D2Coding" = "12caqhh15glw4spmgf2l9xfwhab8mjrjdpcx0rf9zyd4fhn6rdj2";
+  "DaddyTimeMono" = "145nhbp5b83s5n2nqnmijnwl7g7ddpn6mzkqfip33ywsvvd5zrsy";
+  "DejaVuSansMono" = "1bxmylj3lg8w56maxp0z2zqfi4rwggabvcgkn6n4wzm2bm6l13dg";
+  "DroidSansMono" = "02cxbklawvvywbyh0b82mh4wvnbnl3b17lxy5hfhjarzzfm6zqf7";
+  "EnvyCodeR" = "0zy4mydpi0yvp15vd4yk5389pgxj2m2cx1pa3c749r81wrmc7b82";
+  "FantasqueSansMono" = "1nrs1vn8n7pm7fhvirxq77581ck2c1z8cj4454az2x3scglc6qb3";
+  "FiraCode" = "1brqps4j1n57l4y25m38mjcsxhl1jdhiwf5dgi482zbfi89yx5l7";
+  "FiraMono" = "0gf2vd9zz33hjkm2l1nyk458j561x7mva6p2nc3ja92156q99ci2";
+  "GeistMono" = "09ch98xwdj4qwcmkhb10fm6xjg0038q2gnrllyjnyd3jyph4klh1";
+  "Go-Mono" = "03946zrsdvb7mbbc6l5ar292jdpf9k77jvdjgh2vgml1ibxg91q5";
+  "Gohu" = "1qm97n6w8msw2s6gbmch7m5j1q50karrj9m2mp79ifhv808j7k4g";
+  "Hack" = "05ls81d15lgscc163451da5wxyj3ckr06kiml5fa31nvzsr0r0hd";
+  "Hasklig" = "117236vqcf2j70irb5a36n509swssmv2310c43b1ffxx5m4ysq0n";
+  "HeavyData" = "1mm0qj8pk8da7ffzh6sxlgis188k25k6r11vwa9albmsqb99qnp3";
+  "Hermit" = "157xyw1hdwhsr20dsp71kpm7kgv63ag0xdhyinkmcdfc0nmr14p1";
+  "iA-Writer" = "1gc1nv13bh91c2hq64acvmdyn314n61l465j0dzl6r3wzqcc0civ";
+  "IBMPlexMono" = "0a67c2imml0r888s9sfjsw0dvm14anw70j98aq00hx637xs8j5ka";
+  "Inconsolata" = "0vj68n1l8baxgyhm5dblqq74gns8gc7g41kh9j6dxq1xg9p9v5bg";
+  "InconsolataGo" = "0pqv0jj7kg9q3iw0acv59ip6ccgdwypk0qjniyqxbr786rpl2wvx";
+  "InconsolataLGC" = "13xi6s8v5rymw827hm89wiaf9gbnysmria7wqjv94c43yxx95xwm";
+  "IntelOneMono" = "07z4gk8jb2s0i8g7dza88gadb2hl3af71cl3pdkkz31ihjs19x21";
+  "Iosevka" = "00579ljkpry71iwihj9ncmx36hgnxy6hasgbk0wnxc9qizxx6ya1";
+  "IosevkaTerm" = "00qjllymd94cdj0jpcydn2xqylvfaga81lw5rjpl1in1jpwmnmad";
+  "IosevkaTermSlab" = "0vf4gha5v069ck0y7aq501c443vr7gnn5qrbacgjhs9lmdamx2ap";
+  "JetBrainsMono" = "1f8xi8kgyik59ahjm3pcrb2s02c9a9i6kwf5b4651zpjmjy5l8lj";
+  "Lekton" = "0fzmrfwhxykgr4m274v5pza7n6ayk52dprfx1vrjflcqmm3h4k8h";
+  "LiberationMono" = "1gfim5av892rcxwg0jdfa8an5k6sd683fkhf46ydi5sydw59bdp1";
+  "Lilex" = "0n4h968gv24szrpqkllypgpxwzf0bf7kvm6v5jfcgdcfvswkqm2w";
+  "MartianMono" = "1bbrcjkgvga4wnbh0hbx64ldc8plcl7zkyh4d7hja85nhh5z377f";
+  "Meslo" = "165mkzl3lfg01cmx1pngbjynrskwgdvh74ir4jjbp9im3xp9nbfh";
+  "Monaspace" = "0xp859zn2agj8mya1mxprlhlawb9k7r0x6dzl6isilf7n444wjq0";
+  "Monofur" = "1g0kbazkap4f4kiidc68b3za2kls9mj0qxwrvlrlgwdjlcri9n6n";
+  "Monoid" = "0faxfb0nb6j1zcsdic0xkgvi7g6n41jnx4m0rcyd5c8xparalg1v";
+  "Mononoki" = "10zs46vyffr4z84ay1rw2w9bl5yi85sapiwa3bqp2wkvh68as418";
+  "MPlus" = "1r5l09pk2dw3lq9y7ffg5qnblwv02mabj6w41vcp1w5yzp9agqrj";
+  "NerdFontsSymbolsOnly" = "0v3x4aiia098zbpb0pabi6srzmlxcdcwky7nf7mha8g47c6xdwnz";
+  "Noto" = "00byck8xwmr4fkj4ah6sbifvl8lwsclgqj96ygqci6pn9rwgrc3i";
+  "OpenDyslexic" = "0fan7yn3wadq6gsa69nz92m0ibzwhfp1b57jgh96ifq1k2prrlrp";
+  "Overpass" = "0inij9mi1v375yykxf1sy5jh5hgp6p6n7szzwwshbv37xsispqnq";
+  "ProFont" = "0l8diqylagjj6q0gqmfrz0vh1jzag2pwm4i7czy843bzgv04p9ci";
+  "ProggyClean" = "1wsb7xz5wx9rni0n01vyhj6a1x0r7fd733fbd3ynmykcqz4v7kfv";
+  "RobotoMono" = "1jsqhfahn0fmdk3m40x0fipfm8bmwyg7w0bi3cjbqrzvg7m1f197";
+  "ShareTechMono" = "12x08z717w13agcf4xbwgzmi9qqzycr3rrc4wyykm2cnrpldhss4";
+  "SourceCodePro" = "0fmxjgjxg4r956svry7ngxlxs7sp7arlbyaynm9dvxqpw46jylhk";
+  "SpaceMono" = "1imgcrv0000l1hd8hynas5d1x3mr7nq2xhc8drlqhcgcd4hxil2f";
+  "Terminus" = "0k1lm09rs0kih0fhrmmw87261pyl6c1s3507qs8hzbx75hsmzy2a";
+  "Tinos" = "11p0a9np9lknxmsddiwqlsw72rbwmc1hagahh37gah95gx5sxgyz";
+  "Ubuntu" = "0xm0qqphsaq9mr6a4lip2bnls687wxzh6hjljyvjrfdjam9d5q3m";
+  "UbuntuMono" = "0slcb7yd9imk2l4jkg2k1gr05xp0a6jb6gv2bzab2igkv737s62b";
+  "VictorMono" = "1yhj87vwwap8wr88bdmpgfb4s6qmszvczj2rg10rjkgsn4c0q6d2";
+}
diff --git a/nixpkgs/pkgs/data/fonts/nerdfonts/update.sh b/nixpkgs/pkgs/data/fonts/nerdfonts/update.sh
new file mode 100755
index 000000000000..03acd617e6f0
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/nerdfonts/update.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i bash -p nix-prefetch jq
+
+latest_release=$(curl --silent https://api.github.com/repos/ryanoasis/nerd-fonts/releases/latest)
+version=$(jq -r '.tag_name' <<<"$latest_release")
+
+dirname="$(dirname "$0")"
+echo \""${version#v}"\" >"$dirname/version-new.nix"
+if diff -q "$dirname/version-new.nix" "$dirname/version.nix"; then
+    echo No new version available, current: $version
+    exit 0
+else
+    echo Updated to version "$version"
+    mv "$dirname/version-new.nix" "$dirname/version.nix"
+fi
+
+printf '{\n' > "$dirname/shas.nix"
+
+while
+  read -r name
+  read -r url
+do
+    printf '  "%s" = "%s";\n' "${name%%.*}" "$(nix-prefetch-url "$url")" >>"$dirname/shas.nix"
+done < <(jq -r '.assets[] | select(.name | test("xz")) | .name, .browser_download_url' <<<"$latest_release")
+
+printf '}\n' >> "$dirname/shas.nix"
diff --git a/nixpkgs/pkgs/data/fonts/nerdfonts/version.nix b/nixpkgs/pkgs/data/fonts/nerdfonts/version.nix
new file mode 100644
index 000000000000..b6d7788c7fae
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/nerdfonts/version.nix
@@ -0,0 +1 @@
+"3.1.1"
diff --git a/nixpkgs/pkgs/data/fonts/nika-fonts/default.nix b/nixpkgs/pkgs/data/fonts/nika-fonts/default.nix
new file mode 100644
index 000000000000..f5076f3c93cb
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/nika-fonts/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "nika-fonts";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "font-store";
+    repo = "NikaFont";
+    rev = "v${version}";
+    hash = "sha256-jDemm8IyjhoCOg4Bfsp0tzUR7m+JaswL5d7Kug+asJk=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    find . -name '*.ttf' -exec install -m444 -Dt $out/share/fonts/nika-fonts {} \;
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/font-store/NikaFont/";
+    description = "Persian/Arabic Open Source Font";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/norwester/default.nix b/nixpkgs/pkgs/data/fonts/norwester/default.nix
new file mode 100644
index 000000000000..f1236d5c05c1
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/norwester/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "norwester";
+  version = "1.2";
+
+  src = fetchzip {
+    url = "http://jamiewilson.io/norwester/assets/norwester.zip";
+    stripRoot = false;
+    hash = "sha256-Ak/nobrQE/XYGWs/IhlZlTp74ff+s4adUR6Sht5Yf8g=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/opentype
+    cp ${pname}-v${version}/${pname}.otf $out/share/fonts/opentype/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://jamiewilson.io/norwester";
+    description = "A condensed geometric sans serif by Jamie Wilson";
+    maintainers = with maintainers; [ leenaars ];
+    license = licenses.ofl;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/noto-fonts/default.nix b/nixpkgs/pkgs/data/fonts/noto-fonts/default.nix
new file mode 100644
index 000000000000..fee51ebacf4a
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/noto-fonts/default.nix
@@ -0,0 +1,305 @@
+{ stdenv
+, stdenvNoCC
+, lib
+, gitUpdater
+, fetchFromGitHub
+, fetchurl
+, cairo
+, nixosTests
+, pkg-config
+, pngquant
+, which
+, imagemagick
+, zopfli
+, buildPackages
+, variants ? [ ]
+}:
+let
+  notoLongDescription = ''
+    When text is rendered by a computer, sometimes characters are
+    displayed as “tofu”. They are little boxes to indicate your device
+    doesn’t have a font to display the text.
+
+    Google has been developing a font family called Noto, which aims to
+    support all languages with a harmonious look and feel. Noto is
+    Google’s answer to tofu. The name noto is to convey the idea that
+    Google’s goal is to see “no more tofu”.  Noto has multiple styles and
+    weights, and freely available to all.
+  '';
+in
+rec {
+  mkNoto =
+    { pname
+    , variants ? [ ]
+    , longDescription ? notoLongDescription
+    }:
+    stdenvNoCC.mkDerivation rec {
+      inherit pname;
+      version = "23.11.1";
+
+      src = fetchFromGitHub {
+        owner = "notofonts";
+        repo = "notofonts.github.io";
+        rev = "noto-monthly-release-${version}";
+        hash = "sha256-qBHLCOfVBOn9CV194S4cYw9nhHyAe2AUBJHQMvyEfW8=";
+      };
+
+      _variants = map (variant: builtins.replaceStrings [ " " ] [ "" ] variant) variants;
+
+      installPhase = ''
+        # We check availability in order of variable -> otf -> ttf
+        # unhinted -- the hinted versions use autohint
+        # maintaining maximum coverage.
+        #
+        # We have a mix of otf and ttf fonts
+        local out_font=$out/share/fonts/noto
+      '' + (if _variants == [ ] then ''
+        for folder in $(ls -d fonts/*/); do
+          if [[ -d "$folder"unhinted/variable-ttf ]]; then
+            install -m444 -Dt $out_font "$folder"unhinted/variable-ttf/*.ttf
+          elif [[ -d "$folder"unhinted/otf ]]; then
+            install -m444 -Dt $out_font "$folder"unhinted/otf/*.otf
+          else
+            install -m444 -Dt $out_font "$folder"unhinted/ttf/*.ttf
+          fi
+        done
+      '' else ''
+        for variant in $_variants; do
+          if [[ -d fonts/"$variant"/unhinted/variable-ttf ]]; then
+            install -m444 -Dt $out_font fonts/"$variant"/unhinted/variable-ttf/*.ttf
+          elif [[ -d fonts/"$variant"/unhinted/otf ]]; then
+            install -m444 -Dt $out_font fonts/"$variant"/unhinted/otf/*.otf
+          else
+            install -m444 -Dt $out_font fonts/"$variant"/unhinted/ttf/*.ttf
+          fi
+        done
+      '');
+
+      passthru.updateScript = gitUpdater {
+        rev-prefix = "noto-monthly-release-";
+      };
+
+      meta = with lib; {
+        description = "Beautiful and free fonts for many languages";
+        homepage = "https://www.google.com/get/noto/";
+        inherit longDescription;
+        license = licenses.ofl;
+        platforms = platforms.all;
+        maintainers = with maintainers; [ mathnerd314 emily jopejoe1 ];
+      };
+    };
+
+  mkNotoCJK = { typeface, version, sha256 }:
+    stdenvNoCC.mkDerivation {
+      pname = "noto-fonts-cjk-${lib.toLower typeface}";
+      inherit version;
+
+      src = fetchFromGitHub {
+        owner = "googlefonts";
+        repo = "noto-cjk";
+        rev = "${typeface}${version}";
+        inherit sha256;
+        sparseCheckout = [ "${typeface}/Variable/OTC" ];
+      };
+
+      installPhase = ''
+        install -m444 -Dt $out/share/fonts/opentype/noto-cjk ${typeface}/Variable/OTC/*.otf.ttc
+      '';
+
+      passthru.tests.noto-fonts = nixosTests.noto-fonts;
+
+      meta = with lib; {
+        description = "Beautiful and free fonts for CJK languages";
+        homepage = "https://www.google.com/get/noto/help/cjk/";
+        longDescription = ''
+          Noto ${typeface} CJK is a ${lib.toLower typeface} typeface designed as
+          an intermediate style between the modern and traditional. It is
+          intended to be a multi-purpose digital font for user interface
+          designs, digital content, reading on laptops, mobile devices, and
+          electronic books. Noto ${typeface} CJK comprehensively covers
+          Simplified Chinese, Traditional Chinese, Japanese, and Korean in a
+          unified font family. It supports regional variants of ideographic
+          characters for each of the four languages. In addition, it supports
+          Japanese kana, vertical forms, and variant characters (itaiji); it
+          supports Korean hangeul — both contemporary and archaic.
+        '';
+        license = licenses.ofl;
+        platforms = platforms.all;
+        maintainers = with maintainers; [ mathnerd314 emily ];
+      };
+    };
+
+  noto-fonts = mkNoto {
+    pname = "noto-fonts";
+  };
+
+  noto-fonts-lgc-plus = mkNoto {
+    pname = "noto-fonts-lgc-plus";
+    variants = [
+      "Noto Sans"
+      "Noto Serif"
+      "Noto Sans Mono"
+      "Noto Music"
+      "Noto Sans Symbols"
+      "Noto Sans Symbols 2"
+      "Noto Sans Math"
+    ];
+    longDescription = ''
+      This package provides the Noto Fonts, but only for latin, greek
+      and cyrillic scripts, as well as some extra fonts. To create a
+      custom Noto package with custom variants, see the `mkNoto`
+      helper function.
+    '';
+  };
+
+  noto-fonts-cjk-sans = mkNotoCJK {
+    typeface = "Sans";
+    version = "2.004";
+    sha256 = "sha256-IgalJkiOAVjNxKaPAQWfb5hKeqclliR4qVXCq63FGWY=";
+  };
+
+  noto-fonts-cjk-serif = mkNotoCJK {
+    typeface = "Serif";
+    version = "2.002";
+    sha256 = "sha256-GLjpTAiHfygj1J4AdUVDJh8kykkFOglq+h4kyat5W9s=";
+  };
+
+  noto-fonts-color-emoji =
+    let
+      version = "2.038";
+      emojiPythonEnv =
+        buildPackages.python3.withPackages (p: with p; [ fonttools nototools ]);
+    in
+    stdenvNoCC.mkDerivation {
+      pname = "noto-fonts-emoji";
+      inherit version;
+
+      src = fetchFromGitHub {
+        owner = "googlefonts";
+        repo = "noto-emoji";
+        rev = "v${version}";
+        sha256 = "1rgmcc6nqq805iqr8kvxxlk5cf50q714xaxk3ld6rjrd69kb8ix9";
+      };
+
+      depsBuildBuild = [
+        buildPackages.stdenv.cc
+        pkg-config
+        cairo
+      ];
+
+      nativeBuildInputs = [
+        imagemagick
+        zopfli
+        pngquant
+        which
+        emojiPythonEnv
+      ];
+
+      postPatch = ''
+        patchShebangs *.py
+        patchShebangs third_party/color_emoji/*.py
+        # remove check for virtualenv, since we handle
+        # python requirements using python.withPackages
+        sed -i '/ifndef VIRTUAL_ENV/,+2d' Makefile
+
+        # Make the build verbose so it won't get culled by Hydra thinking that
+        # it somehow got stuck doing nothing.
+        sed -i 's;\t@;\t;' Makefile
+      '';
+
+      enableParallelBuilding = true;
+
+      installPhase = ''
+        runHook preInstall
+        mkdir -p $out/share/fonts/noto
+        cp NotoColorEmoji.ttf $out/share/fonts/noto
+        runHook postInstall
+      '';
+
+      meta = with lib; {
+        description = "Color emoji font";
+        homepage = "https://github.com/googlefonts/noto-emoji";
+        license = with licenses; [ ofl asl20 ];
+        platforms = platforms.all;
+        maintainers = with maintainers; [ mathnerd314 sternenseemann ];
+      };
+    };
+
+  noto-fonts-monochrome-emoji =
+    # Metadata fetched from
+    #  https://www.googleapis.com/webfonts/v1/webfonts?key=${GOOGLE_FONTS_TOKEN}&family=Noto+Emoji
+    let metadata = with builtins; head (fromJSON (readFile ./noto-emoji.json)).items;
+        urlHashes = with builtins; fromJSON (readFile ./noto-emoji.hashes.json);
+
+    in
+    stdenvNoCC.mkDerivation {
+      pname = "noto-fonts-monochrome-emoji";
+      version = "${lib.removePrefix "v" metadata.version}.${metadata.lastModified}";
+      preferLocalBuild = true;
+
+      dontUnpack = true;
+      srcs = let
+        weightNames = {
+          "300"   = "Light";
+          regular = "Regular";
+          "500"   = "Medium";
+          "600"   = "SemiBold";
+          "700"   = "Bold";
+        };
+      in lib.mapAttrsToList
+        (variant: url: fetchurl { name = "NotoEmoji-${weightNames.${variant}}.ttf";
+                                  hash = urlHashes.${url};
+                                  inherit url; } )
+        metadata.files;
+
+      installPhase = ''
+        runHook preInstall
+        for src in $srcs; do
+          install -D $src $out/share/fonts/noto/$(stripHash $src)
+        done
+        runHook postInstall
+      '';
+
+      meta = with lib; {
+        description = "Monochrome emoji font";
+        homepage = "https://fonts.google.com/noto/specimen/Noto+Emoji";
+        license = [ licenses.ofl ];
+        maintainers = [ maintainers.nicoo ];
+
+        platforms = platforms.all;
+        sourceProvenance = [ sourceTypes.binaryBytecode ];
+      };
+    };
+
+  noto-fonts-emoji-blob-bin =
+    let
+      pname = "noto-fonts-emoji-blob-bin";
+      version = "15.0";
+    in
+    stdenvNoCC.mkDerivation {
+      inherit pname version;
+
+      src = fetchurl {
+        url = "https://github.com/C1710/blobmoji/releases/download/v${version}/Blobmoji.ttf";
+        hash = "sha256-3MPWZ1A2ups171dNIiFTJ3C1vZiGy6I8ZF70aUfrePk=";
+      };
+
+      dontUnpack = true;
+
+      installPhase = ''
+        runHook preInstall
+
+        install -Dm 444 $src $out/share/fonts/blobmoji/Blobmoji.ttf
+
+        runHook postInstall
+      '';
+
+      meta = with lib; {
+        description = "Noto Emoji with extended Blob support";
+        homepage = "https://github.com/C1710/blobmoji";
+        license = with licenses; [ ofl asl20 ];
+        platforms = platforms.all;
+        maintainers = with maintainers; [ rileyinman jk ];
+      };
+    };
+}
diff --git a/nixpkgs/pkgs/data/fonts/noto-fonts/noto-emoji.hashes.json b/nixpkgs/pkgs/data/fonts/noto-fonts/noto-emoji.hashes.json
new file mode 100644
index 000000000000..e9ad1c327f4f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/noto-fonts/noto-emoji.hashes.json
@@ -0,0 +1,7 @@
+{
+  "http://fonts.gstatic.com/s/notoemoji/v47/bMrnmSyK7YY-MEu6aWjPDs-ar6uWaGWuob_10jwvS-FGJCMY.ttf": "sha256-B8XBpYycOYBjrhjlnyiz42YukIoOjGTd3NN3EY00NiQ=",
+  "http://fonts.gstatic.com/s/notoemoji/v47/bMrnmSyK7YY-MEu6aWjPDs-ar6uWaGWuob-r0jwvS-FGJCMY.ttf": "sha256-Zfwh9q2GrL5Dwp+J/8Ddd2IXCaUXpQ7dE3CqgCMMyPs=",
+  "http://fonts.gstatic.com/s/notoemoji/v47/bMrnmSyK7YY-MEu6aWjPDs-ar6uWaGWuob-Z0jwvS-FGJCMY.ttf": "sha256-/O5b2DzM8g97NAdJgIC/RsQ7E5P7USKq7TXyDuUE3WQ=",
+  "http://fonts.gstatic.com/s/notoemoji/v47/bMrnmSyK7YY-MEu6aWjPDs-ar6uWaGWuob911TwvS-FGJCMY.ttf": "sha256-vrjB8GlhzWAe6jG/Srpy8R431VivNtWbCa5Uh4ATnmU=",
+  "http://fonts.gstatic.com/s/notoemoji/v47/bMrnmSyK7YY-MEu6aWjPDs-ar6uWaGWuob9M1TwvS-FGJCMY.ttf": "sha256-EbnZt8h4Lcl0yJoOKmXlF1nfcP5hZv7n4cEQ10yBkcg="
+}
diff --git a/nixpkgs/pkgs/data/fonts/noto-fonts/noto-emoji.json b/nixpkgs/pkgs/data/fonts/noto-fonts/noto-emoji.json
new file mode 100644
index 000000000000..c729634b9e1e
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/noto-fonts/noto-emoji.json
@@ -0,0 +1,30 @@
+{
+  "kind": "webfonts#webfontList",
+  "items": [
+    {
+      "family": "Noto Emoji",
+      "variants": [
+        "300",
+        "regular",
+        "500",
+        "600",
+        "700"
+      ],
+      "subsets": [
+        "emoji"
+      ],
+      "version": "v47",
+      "lastModified": "2023-09-27",
+      "files": {
+        "300": "http://fonts.gstatic.com/s/notoemoji/v47/bMrnmSyK7YY-MEu6aWjPDs-ar6uWaGWuob_10jwvS-FGJCMY.ttf",
+        "regular": "http://fonts.gstatic.com/s/notoemoji/v47/bMrnmSyK7YY-MEu6aWjPDs-ar6uWaGWuob-r0jwvS-FGJCMY.ttf",
+        "500": "http://fonts.gstatic.com/s/notoemoji/v47/bMrnmSyK7YY-MEu6aWjPDs-ar6uWaGWuob-Z0jwvS-FGJCMY.ttf",
+        "600": "http://fonts.gstatic.com/s/notoemoji/v47/bMrnmSyK7YY-MEu6aWjPDs-ar6uWaGWuob911TwvS-FGJCMY.ttf",
+        "700": "http://fonts.gstatic.com/s/notoemoji/v47/bMrnmSyK7YY-MEu6aWjPDs-ar6uWaGWuob9M1TwvS-FGJCMY.ttf"
+      },
+      "category": "sans-serif",
+      "kind": "webfonts#webfont",
+      "menu": "http://fonts.gstatic.com/s/notoemoji/v47/bMrnmSyK7YY-MEu6aWjPDs-ar6uWaGWuob-r0gwuQeU.ttf"
+    }
+  ]
+}
diff --git a/nixpkgs/pkgs/data/fonts/noto-fonts/noto-emoji.py b/nixpkgs/pkgs/data/fonts/noto-fonts/noto-emoji.py
new file mode 100755
index 000000000000..9f1eadd95bca
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/noto-fonts/noto-emoji.py
@@ -0,0 +1,183 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i "python3 -I" -p python3
+
+from contextlib import contextmanager
+from pathlib import Path
+from typing import Iterable, Optional
+from urllib import request
+
+import hashlib, json
+
+
+def getMetadata(apiKey: str, family: str = "Noto Emoji"):
+    '''Fetch the Google Fonts metadata for a given family.
+
+    An API key can be obtained by anyone with a Google account (🚮) from
+      `https://developers.google.com/fonts/docs/developer_api#APIKey`
+    '''
+    from urllib.parse import urlencode
+
+    with request.urlopen(
+            "https://www.googleapis.com/webfonts/v1/webfonts?" +
+            urlencode({ 'key': apiKey, 'family': family })
+    ) as req:
+        return json.load(req)
+
+def getUrls(metadata) -> Iterable[str]:
+    '''Fetch all files' URLs from Google Fonts' metadata.
+
+    The metadata must obey the API v1 schema, and can be obtained from:
+      https://www.googleapis.com/webfonts/v1/webfonts?key=${GOOGLE_FONTS_TOKEN}&family=${FAMILY}
+    '''
+    return ( url for i in metadata['items'] for _, url in i['files'].items() )
+
+
+def hashUrl(url: str, *, hash: str = 'sha256'):
+    '''Compute the hash of the data from HTTP GETing a given `url`.
+
+    The `hash` must be an algorithm name `hashlib.new` accepts.
+    '''
+    with request.urlopen(url) as req:
+        return hashlib.new(hash, req.read())
+
+
+def sriEncode(h) -> str:
+    '''Encode a hash in the SRI format.
+
+    Takes a `hashlib` object, and produces a string that
+    nixpkgs' `fetchurl` accepts as `hash` parameter.
+    '''
+    from base64 import b64encode
+    return f"{h.name}-{b64encode(h.digest()).decode()}"
+
+def validateSRI(sri: Optional[str]) -> Optional[str]:
+    '''Decode an SRI hash, return `None` if invalid.
+
+    This is not a full SRI hash parser, hash options aren't supported.
+    '''
+    from base64 import b64decode
+
+    if sri is None:
+        return None
+
+    try:
+        hashName, b64 = sri.split('-', 1)
+
+        h = hashlib.new(hashName)
+        digest = b64decode(b64, validate=True)
+        assert len(digest) == h.digest_size
+
+    except:
+        return None
+    else:
+        return sri
+
+
+def hashUrls(
+    urls: Iterable[str],
+    knownHashes: dict[str, str] = {},
+) -> dict[str, str]:
+    '''Generate a `dict` mapping URLs to SRI-encoded hashes.
+
+    The `knownHashes` optional parameter can be used to avoid
+    re-downloading files whose URL have not changed.
+    '''
+    return {
+        url: validateSRI(knownHashes.get(url)) or sriEncode(hashUrl(url))
+        for url in urls
+    }
+
+
+@contextmanager
+def atomicFileUpdate(target: Path):
+    '''Atomically replace the contents of a file.
+
+    Yields an open file to write into; upon exiting the context,
+    the file is closed and (atomically) replaces the `target`.
+
+    Guarantees that the `target` was either successfully overwritten
+    with new content and no exception was raised, or the temporary
+    file was cleaned up.
+    '''
+    from tempfile import mkstemp
+    fd, _p = mkstemp(
+        dir = target.parent,
+        prefix = target.name,
+    )
+    tmpPath = Path(_p)
+
+    try:
+        with open(fd, 'w') as f:
+            yield f
+
+        tmpPath.replace(target)
+
+    except Exception:
+        tmpPath.unlink(missing_ok = True)
+        raise
+
+
+if __name__ == "__main__":
+    from os import environ
+    from urllib.error import HTTPError
+
+    environVar = 'GOOGLE_FONTS_TOKEN'
+    currentDir = Path(__file__).parent
+    metadataPath = currentDir / 'noto-emoji.json'
+
+    try:
+        apiToken = environ[environVar]
+        metadata = getMetadata(apiToken)
+
+    except (KeyError, HTTPError) as exn:
+        # No API key in the environment, or the query was rejected.
+        match exn:
+            case KeyError if exn.args[0] == environVar:
+                print(f"No '{environVar}' in the environment, "
+                       "skipping metadata update")
+
+            case HTTPError if exn.getcode() == 403:
+                print("Got HTTP 403 (Forbidden)")
+                if apiToken != '':
+                    print("Your Google API key appears to be valid "
+                          "but does not grant access to the fonts API.")
+                    print("Aborting!")
+                    raise SystemExit(1)
+
+            case HTTPError if exn.getcode() == 400:
+                # Printing the supposed token should be fine, as this is
+                #  what the API returns on invalid tokens.
+                print(f"Got HTTP 400 (Bad Request), is this really an API token: '{apiToken}' ?")
+            case _:
+                # Unknown error, let's bubble it up
+                raise
+
+        # In that case just use the existing metadata
+        with metadataPath.open() as metadataFile:
+            metadata = json.load(metadataFile)
+
+        lastModified = metadata["items"][0]["lastModified"];
+        print(f"Using metadata from file, last modified {lastModified}")
+
+    else:
+        # If metadata was successfully fetched, validate and persist it
+        lastModified = metadata["items"][0]["lastModified"];
+        print(f"Fetched current metadata, last modified {lastModified}")
+        with atomicFileUpdate(metadataPath) as metadataFile:
+            json.dump(metadata, metadataFile, indent = 2)
+            metadataFile.write("\n")  # Pacify nixpkgs' dumb editor config check
+
+    hashPath = currentDir / 'noto-emoji.hashes.json'
+    try:
+        with hashPath.open() as hashFile:
+            hashes = json.load(hashFile)
+    except FileNotFoundError:
+        hashes = {}
+
+    with atomicFileUpdate(hashPath) as hashFile:
+        json.dump(
+            hashUrls(getUrls(metadata), knownHashes = hashes),
+            hashFile,
+            indent = 2,
+        )
+        hashFile.write("\n")  # Pacify nixpkgs' dumb editor config check
diff --git a/nixpkgs/pkgs/data/fonts/noto-fonts/tools.nix b/nixpkgs/pkgs/data/fonts/noto-fonts/tools.nix
new file mode 100644
index 000000000000..1b515b486f5f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/noto-fonts/tools.nix
@@ -0,0 +1,78 @@
+{ fetchFromGitHub, lib, buildPythonPackage, pythonOlder
+, afdko, appdirs, attrs, booleanoperations, brotlipy, click
+, defcon, fontmath, fontparts, fontpens, fonttools, lxml
+, mutatormath, pathspec, psautohint, pyclipper, pytz, regex, scour
+, toml, typed-ast, ufonormalizer, ufoprocessor, unicodedata2, zopfli
+, pillow, six, bash, setuptools-scm }:
+
+buildPythonPackage rec {
+  pname = "nototools";
+  version = "0.2.17";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "googlefonts";
+    repo = "nototools";
+    rev = "v${version}";
+    sha256 = "0jxydivqzggirc31jv7b4mrsjkg646zmra5m4h0pk4amgy65rvyp";
+  };
+
+  postPatch = ''
+    sed -i 's/use_scm_version=.*,/version="${version}",/' setup.py
+  '';
+
+  nativeBuildInputs = [ setuptools-scm ];
+
+  propagatedBuildInputs = [
+    afdko
+    appdirs
+    attrs
+    booleanoperations
+    brotlipy
+    click
+    defcon
+    fontmath
+    fontparts
+    fontpens
+    fonttools
+    lxml
+    mutatormath
+    pathspec
+    psautohint
+    pyclipper
+    pytz
+    regex
+    scour
+    toml
+    typed-ast
+    ufonormalizer
+    ufoprocessor
+    unicodedata2
+    zopfli
+  ];
+
+  nativeCheckInputs = [
+    pillow
+    six
+    bash
+  ];
+
+  checkPhase = ''
+    patchShebangs tests/
+    cd tests
+    rm gpos_diff_test.py # needs ttxn?
+    ./run_tests
+  '';
+
+  postInstall = ''
+    cp -r third_party $out
+  '';
+
+  meta = with lib; {
+    description = "Noto fonts support tools and scripts plus web site generation";
+    homepage = "https://github.com/googlefonts/nototools";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/ocr-a/default.nix b/nixpkgs/pkgs/data/fonts/ocr-a/default.nix
new file mode 100644
index 000000000000..216b960994d7
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ocr-a/default.nix
@@ -0,0 +1,24 @@
+{ lib, stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "OCR-A";
+  version = "1.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/ocr-a-font/OCR-A/${version}/OCRA.ttf";
+    sha256 = "0kpmjjxwzm84z8maz6lq9sk1b0xv1zkvl28lwj7i0m2xf04qixd0";
+  };
+
+  dontUnpack = true;
+
+  installPhase = ''
+    install -D -m 0644 $src $out/share/fonts/truetype/OCRA.ttf
+  '';
+
+  meta = with lib; {
+    description = "ANSI OCR font from the '60s. CYBER";
+    homepage = "https://sourceforge.net/projects/ocr-a-font/";
+    license = licenses.publicDomain;
+    maintainers = with maintainers; [ V ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/office-code-pro/default.nix b/nixpkgs/pkgs/data/fonts/office-code-pro/default.nix
new file mode 100644
index 000000000000..f05a7ddd319c
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/office-code-pro/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "office-code-pro";
+  version = "1.004";
+
+  src = fetchFromGitHub {
+    owner = "nathco";
+    repo = "Office-Code-Pro";
+    rev = version;
+    hash = "sha256-qzKTXYswkithZUJT0a3IifCq4RJFeKciZAPhYr2U1X4=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m644 -Dt $out/share/doc/${pname}-${version} README.md
+    install -m444 -Dt $out/share/fonts/opentype 'Fonts/Office Code Pro/OTF/'*.otf 'Fonts/Office Code Pro D/OTF/'*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A customized version of Source Code Pro";
+    longDescription = ''
+      Office Code Pro is a customized version of Source Code Pro, the monospaced
+      sans serif originally created by Paul D. Hunt for Adobe Systems
+      Incorporated. The customizations were made specifically for text editors
+      and coding environments, but are still very usable in other applications.
+    '';
+    homepage = "https://github.com/nathco/Office-Code-Pro";
+    license = licenses.ofl;
+    maintainers = [ maintainers.AndersonTorres ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/oldsindhi/default.nix b/nixpkgs/pkgs/data/fonts/oldsindhi/default.nix
new file mode 100644
index 000000000000..88692d914564
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/oldsindhi/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "oldsindhi";
+  version = "1.0";
+
+  src = fetchurl {
+    url = "https://github.com/MihailJP/${pname}/releases/download/v${version}/OldSindhi-${version}.tar.xz";
+    hash = "sha256-jOcl+mo6CJ9Lnn3nAUiXXHCJssovVgLoPrbGxj4uzQs=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/truetype *.ttf
+    install -m444 -Dt $out/share/doc/${pname}-${version} README *.txt
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/MihailJP/oldsindhi";
+    description = "Free Sindhi Khudabadi font";
+    maintainers = with maintainers; [ mathnerd314 ];
+    license = with licenses; [ mit ofl ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/oldstandard/default.nix b/nixpkgs/pkgs/data/fonts/oldstandard/default.nix
new file mode 100644
index 000000000000..33bf37c18bae
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/oldstandard/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "oldstandard";
+  version = "2.2";
+
+  src = fetchzip {
+    url = "https://github.com/akryukov/oldstand/releases/download/v${version}/${pname}-${version}.otf.zip";
+    stripRoot = false;
+    hash = "sha256-cDB5KJm87DK+GczZ3Nmn4l5ejqViswVbwrJ9XbhEh8I=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/opentype *.otf
+    install -m444 -Dt $out/share/doc/${pname}-${version}    FONTLOG.txt
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/akryukov/oldstand";
+    description = "An attempt to revive a specific type of Modern style of serif typefaces";
+    maintainers = with maintainers; [ raskin ];
+    license = licenses.ofl;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/open-dyslexic/default.nix b/nixpkgs/pkgs/data/fonts/open-dyslexic/default.nix
new file mode 100644
index 000000000000..bcfc9fda2b2d
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/open-dyslexic/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+let version = "0.91.12"; in
+stdenvNoCC.mkDerivation {
+  pname = "open-dyslexic";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "antijingoist";
+    repo = "opendyslexic";
+    rev = "v${version}";
+    hash = "sha256-a8hh8NGt5djj9EC7ChO3SnnjuYMOryzbHWTK4gC/vIw=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 compiled/*.otf -t $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://opendyslexic.org/";
+    description = "Font created to increase readability for readers with dyslexia";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.rycee ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/open-fonts/default.nix b/nixpkgs/pkgs/data/fonts/open-fonts/default.nix
new file mode 100644
index 000000000000..3f7682097942
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/open-fonts/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "open-fonts";
+  version = "0.7.0";
+
+  src = fetchurl {
+    url = "https://github.com/kiwi0fruit/open-fonts/releases/download/${version}/open-fonts.tar.xz";
+    hash = "sha256-NJKbdrvgZz9G7mjAJYzN7rU/fo2xRFZA2BbQ+A56iPw=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    install *.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A collection of beautiful free and open source fonts";
+    homepage = "https://github.com/kiwi0fruit/open-fonts";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ moni ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/open-sans/default.nix b/nixpkgs/pkgs/data/fonts/open-sans/default.nix
new file mode 100644
index 000000000000..4883cd818b1c
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/open-sans/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenvNoCC, fetchFromGitLab }:
+
+stdenvNoCC.mkDerivation {
+  pname = "open-sans";
+  version = "1.11";
+
+  src = fetchFromGitLab {
+    domain = "salsa.debian.org";
+    owner = "fonts-team";
+    repo = "fonts-open-sans";
+    rev = "debian/1.11-1";
+    hash = "sha256-gkq5RPa83dND91q1hiA9Qokq1iA8gLQ8XvCNWe+e8Bw=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp *.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Open Sans fonts";
+    longDescription = ''
+      Open Sans is a humanist sans serif typeface designed by Steve Matteson,
+      Type Director of Ascender Corp.
+    '';
+    homepage = "https://www.opensans.com";
+    license = licenses.asl20;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ ] ++ teams.pantheon.members;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/openmoji/default.nix b/nixpkgs/pkgs/data/fonts/openmoji/default.nix
new file mode 100644
index 000000000000..fd0d8882059c
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/openmoji/default.nix
@@ -0,0 +1,96 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchpatch
+, scfbuild
+, fontforge
+, node-glob
+, libuninameslist
+, nodejs
+, nodePackages
+, python3Packages
+, variant ? "color" # "color" or "black"
+}:
+
+let
+  filename = builtins.replaceStrings
+    [ "color"              "black"              ]
+    [ "OpenMoji-Color.ttf" "OpenMoji-Black.ttf" ]
+    variant;
+
+  # With newer fontforge the build hangs, see
+  # https://github.com/NixOS/nixpkgs/issues/167869
+  # Patches etc taken from
+  # https://github.com/NixOS/nixpkgs/commit/69da642a5a9bb433138ba1b13c8d56fb5bb6ec05
+  fontforge-20201107 = fontforge.overrideAttrs (old: rec {
+    version = "20201107";
+    src = fetchFromGitHub {
+      owner = "fontforge";
+      repo = "fontforge";
+      rev = version;
+      sha256 = "sha256-Rl/5lbXaPgIndANaD0IakaDus6T53FjiBb45FIuGrvc=";
+    };
+    patches = [
+      (fetchpatch {
+        url = "https://salsa.debian.org/fonts-team/fontforge/raw/76bffe6ccf8ab20a0c81476a80a87ad245e2fd1c/debian/patches/0001-add-extra-cmake-install-rules.patch";
+        sha256 = "u3D9od2xLECNEHhZ+8dkuv9818tPkdP6y/Tvd9CADJg=";
+      })
+      (fetchpatch {
+        url = "https://github.com/fontforge/fontforge/commit/69e263b2aff29ad22f97f13935cfa97a1eabf207.patch";
+        sha256 = "06yyf90605aq6ppfiz83mqkdmnaq5418axp9jgsjyjq78b00xb29";
+      })
+    ];
+    buildInputs = old.buildInputs ++ [ libuninameslist ];
+  });
+  scfbuild-with-fontforge-20201107 = scfbuild.override (old: {
+    fontforge = fontforge-20201107;
+  });
+
+in stdenv.mkDerivation rec {
+  pname = "openmoji";
+  version = "14.0.0";
+
+  src = fetchFromGitHub {
+    owner = "hfg-gmuend";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-XnSRSlWXOMeSaO6dKaOloRg3+sWS4BSaro4bPqOyKmE=";
+  };
+
+  nativeBuildInputs = [
+    scfbuild-with-fontforge-20201107
+    nodejs
+    node-glob
+    nodePackages.lodash
+  ];
+
+  postPatch = ''
+    # this is API change in glob >9
+    substituteInPlace helpers/generate-font-glyphs.js \
+      --replace "require('glob').sync" "require('glob').globSync"
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+
+    node helpers/generate-font-glyphs.js
+
+    cd font
+    scfbuild -c scfbuild-${variant}.yml
+
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    install -Dm644 ${filename} $out/share/fonts/truetype/${filename}
+  '';
+
+  meta = with lib; {
+    license = licenses.cc-by-sa-40;
+    maintainers = with maintainers; [ fgaz ];
+    platforms = platforms.all;
+    homepage = "https://openmoji.org/";
+    downloadPage = "https://github.com/hfg-gmuend/openmoji/releases";
+    description = "Open-source emojis for designers, developers and everyone else";
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/orbitron/default.nix b/nixpkgs/pkgs/data/fonts/orbitron/default.nix
new file mode 100644
index 000000000000..7e6897552060
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/orbitron/default.nix
@@ -0,0 +1,48 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "orbitron";
+  version = "2011-05-25";
+
+  src = fetchFromGitHub {
+    owner = "theleagueof";
+    repo = finalAttrs.pname;
+    rev = "13e6a5222aa6818d81c9acd27edd701a2d744152";
+    hash = "sha256-zjNPVrDUxcQbrsg1/8fFa6Wenu1yuG/XDfKA7NVZ0rA=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/truetype $src/*.ttf
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.theleagueofmoveabletype.com/orbitron";
+    downloadPage = "https://www.theleagueofmoveabletype.com/orbitron/download";
+    description = "Geometric sans-serif for display purposes by Matt McInerney";
+    longDescription = ''
+      Orbitron is a geometric sans-serif typeface intended for display
+      purposes. It features four weights (light, medium, bold, and
+      black), a stylistic alternative, small caps, and a ton of
+      alternate glyphs.
+
+      Orbitron was designed so that graphic designers in the future
+      will have some alternative to typefaces like Eurostile or Bank
+      Gothic. If you’ve ever seen a futuristic sci-fi movie, you have
+      may noticed that all other fonts have been lost or destroyed in
+      the apocalypse that led humans to flee earth. Only those very few
+      geometric typefaces have survived to be used on spaceship
+      exteriors, space station signage, monopolistic corporate
+      branding, uniforms featuring aerodynamic shoulder pads, etc. Of
+      course Orbitron could also be used on the posters for the movies
+      portraying this inevitable future.
+    '';
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with lib.maintainers; [ leenaars minijackson ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/ostrich-sans/default.nix b/nixpkgs/pkgs/data/fonts/ostrich-sans/default.nix
new file mode 100644
index 000000000000..67ca4b72823c
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ostrich-sans/default.nix
@@ -0,0 +1,32 @@
+{ lib, fetchFromGitHub, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "ostrich-sans";
+  version = "2014-04-18";
+
+  src = fetchFromGitHub {
+    owner = "theleagueof";
+    repo = finalAttrs.pname;
+    rev = "a949d40d0576d12ba26e2a45e19c91fd0228c964";
+    hash = "sha256-vvTNtl+fO2zWooH1EvCmO/dPYYgCkj8Ckg5xfg1gtnw=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A gorgeous modern sans-serif with a very long neck";
+    longDescription = ''
+      A gorgeous modern sans-serif with a very long neck. With a whole slew of
+      styles & weights.
+    '';
+    homepage = "https://www.theleagueofmoveabletype.com/ostrich-sans";
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ minijackson ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/overpass/default.nix b/nixpkgs/pkgs/data/fonts/overpass/default.nix
new file mode 100644
index 000000000000..521c08c85cea
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/overpass/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "overpass";
+  version = "3.0.5";
+
+  src = fetchzip {
+    url = "https://github.com/RedHatOfficial/Overpass/releases/download/v${version}/overpass-${version}.zip";
+    hash = "sha256-8AWT0/DELfNWXtZOejC90DbUSOtyGt9tSkcSuO7HP2o=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 */*/*.otf -t $out/share/fonts/opentype
+    install -Dm644 */*/*.ttf -t $out/share/fonts/truetype
+    install -Dm644 *.md  -t $out/share/doc/${pname}-${version}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://overpassfont.org/";
+    description = "Font heavily inspired by Highway Gothic";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.rycee ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/oxygenfonts/default.nix b/nixpkgs/pkgs/data/fonts/oxygenfonts/default.nix
new file mode 100644
index 000000000000..32d9273d6390
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/oxygenfonts/default.nix
@@ -0,0 +1,53 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "oxygenfonts";
+  version = "20160824";
+
+  src = fetchFromGitHub {
+    owner = "vernnobile";
+    repo = "oxygenFont";
+    rev = "62db0ebe3488c936406685485071a54e3d18473b";
+    hash = "sha256-0LKq8nChkDAb6U1sOUyga/DvzpDmIjoRn+2PB9rok4w=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp */Oxygen-Sans.ttf */Oxygen-Sans-Bold.ttf */OxygenMono-Regular.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Desktop/gui font for integrated use with the KDE desktop";
+    longDescription = ''
+      Oxygen Font is a font family originally aimed as a desktop/gui
+      font for integrated use with the KDE desktop.
+
+      The basic concept for Oxygen Font was to design a clear,
+      legible, sans serif, that would be rendered with Freetype on
+      Linux-based devices. In addition a bold weight, plus regular and
+      bold italics, and a monospace version will be made.
+
+      Oxygen is constructed closely with the gridfitting aspects of
+      the Freetype font rendering engine. The oxygen fonts are also
+      autohinted with Werner Lemberg's "ttfautohint" library to
+      further the compatibility with the Freetype engine. The aim of
+      this approach is to produce a family of freetype-specific
+      desktop fonts whose appearance will stay uniform under different
+      screen render settings, unlike more traditionally designed
+      'screen fonts' that have tended to be designed for best
+      legibility on the Windows GDI render engine.
+
+      The main creator of Oxygen, Vernon Adams, suffered a heavy
+      traffic accident three months after its last release, causing him severe brain
+      injury. He finally passed away, sans oxygen, on August 25th 2016.
+      See: http://sansoxygen.com/
+    '';
+
+    license = licenses.ofl;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/parastoo-fonts/default.nix b/nixpkgs/pkgs/data/fonts/parastoo-fonts/default.nix
new file mode 100644
index 000000000000..a91596a66e51
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/parastoo-fonts/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "parastoo-fonts";
+  version = "2.0.1";
+
+  src = fetchFromGitHub {
+    owner = "rastikerdar";
+    repo = "parastoo-font";
+    rev = "v${version}";
+    hash = "sha256-E94B9R2h227D49dscCBsprmb7w0GrQ+2tWOWRf8FH30=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    find . -name '*.ttf' -exec install -m444 -Dt $out/share/fonts/parastoo-fonts {} \;
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/rastikerdar/parastoo-font";
+    description = "A Persian (Farsi) Font - فونت ( قلم ) فارسی پرستو";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/paratype-pt/mono.nix b/nixpkgs/pkgs/data/fonts/paratype-pt/mono.nix
new file mode 100644
index 000000000000..86646ae0ac5d
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/paratype-pt/mono.nix
@@ -0,0 +1,37 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "paratype-pt-mono";
+  version = "2.005";
+
+  src = fetchzip {
+    urls = [
+      "https://company.paratype.com/system/attachments/631/original/ptmono.zip"
+      "http://rus.paratype.ru/system/attachments/631/original/ptmono.zip"
+    ];
+    stripRoot = false;
+    hash = "sha256-mfDAu/KGelC6wZpUCrUrLVZKo+XiKNBqcpMI8tH2tMw=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+    install -Dm644 *.txt -t $out/share/doc/paratype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://www.paratype.ru/public/";
+    description = "An open Paratype font";
+
+    license = "Open Paratype license";
+    # no commercial distribution of the font on its own
+    # must rename on modification
+    # http://www.paratype.ru/public/pt_openlicense.asp
+
+    platforms = platforms.all;
+    maintainers = with maintainers; [ raskin ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/paratype-pt/sans.nix b/nixpkgs/pkgs/data/fonts/paratype-pt/sans.nix
new file mode 100644
index 000000000000..dffd25c23aa5
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/paratype-pt/sans.nix
@@ -0,0 +1,37 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "paratype-pt-sans";
+  version = "2.005";
+
+  src = fetchzip {
+    urls = [
+      "https://company.paratype.com/system/attachments/629/original/ptsans.zip"
+      "http://rus.paratype.ru/system/attachments/629/original/ptsans.zip"
+    ];
+    stripRoot = false;
+    hash = "sha256-34TqYXtWzkAstaGQBhJy+/hVk5tg6ZvHZ/kvUroWVLs=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+    install -Dm644 *.txt -t $out/share/doc/paratype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://www.paratype.ru/public/";
+    description = "An open Paratype font";
+
+    license = "Open Paratype license";
+    # no commercial distribution of the font on its own
+    # must rename on modification
+    # http://www.paratype.ru/public/pt_openlicense.asp
+
+    platforms = platforms.all;
+    maintainers = with maintainers; [ raskin ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/paratype-pt/serif.nix b/nixpkgs/pkgs/data/fonts/paratype-pt/serif.nix
new file mode 100644
index 000000000000..f346382d1f73
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/paratype-pt/serif.nix
@@ -0,0 +1,37 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "paratype-pt-serif";
+  version = "2.005";
+
+  src = fetchzip {
+    urls = [
+      "https://company.paratype.com/system/attachments/634/original/ptserif.zip"
+      "http://rus.paratype.ru/system/attachments/634/original/ptserif.zip"
+    ];
+    stripRoot = false;
+    hash = "sha256-4L3t5NEHmj975fn8eBAkRUO1OL0xseNp9g7k7tt/O2c=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+    install -Dm644 *.txt -t $out/share/doc/paratype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://www.paratype.ru/public/";
+    description = "An open Paratype font";
+
+    license = "Open Paratype license";
+    # no commercial distribution of the font on its own
+    # must rename on modification
+    # http://www.paratype.ru/public/pt_openlicense.asp
+
+    platforms = platforms.all;
+    maintainers = with maintainers; [ raskin ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/pecita/default.nix b/nixpkgs/pkgs/data/fonts/pecita/default.nix
new file mode 100644
index 000000000000..568363889ff2
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/pecita/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation {
+  pname = "pecita";
+  version = "5.4";
+
+  src = fetchurl {
+    url = "http://pecita.eu/b/Pecita.otf";
+    hash = "sha256-D9IZ+p4UFHUNt9me7D4vv0x6rMK9IaViKPliCEyX6t4=";
+  };
+
+  dontUnpack = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/opentype
+    cp -v $src $out/share/fonts/opentype/Pecita.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://pecita.eu/police-en.php";
+    description = "Handwritten font with connected glyphs";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.rycee ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/penna/default.nix b/nixpkgs/pkgs/data/fonts/penna/default.nix
new file mode 100644
index 000000000000..e1a7fc181ddc
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/penna/default.nix
@@ -0,0 +1,37 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+let
+  majorVersion = "0";
+  minorVersion = "100";
+in
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "penna";
+  version = "${majorVersion}.${minorVersion}";
+
+  src = fetchzip {
+    url = "https://dotcolon.net/download/fonts/${finalAttrs.pname}_${majorVersion}${minorVersion}.zip";
+    hash = "sha256-fmCJnEaoUGdW9JK3J7JSm5D4qOMRW7qVKPgVE7uCH5w=";
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://dotcolon.net/font/${finalAttrs.pname}/";
+    description = "Geometric sans serif designed by Sora Sagano";
+    longDescription = ''
+     Penna is a geometric sans serif designed by Sora Sagano,
+     with outsized counters in the uppercase and a lowercase
+     with a small x-height.
+    '';
+    platforms = platforms.all;
+    maintainers = with maintainers; [ leenaars minijackson ];
+    license = licenses.cc0;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/poly/default.nix b/nixpkgs/pkgs/data/fonts/poly/default.nix
new file mode 100644
index 000000000000..50dfb5020354
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/poly/default.nix
@@ -0,0 +1,50 @@
+{ lib, stdenv, fetchurl, unzip }:
+
+stdenv.mkDerivation rec {
+  name = "poly";
+
+  regular = fetchurl {
+    # Finally a mirror that has a sha256 that doesn't change.
+    url = "https://googlefontdirectory.googlecode.com/hg-history/d7441308e589c9fa577f920fc4152fa32477a267/poly/src/Poly-Regular.otf";
+    sha256 = "1mxp2lvki6b1h7r9xcj1ld0g4z5y3dmsal85xam4yr764zpjzaiw";
+  };
+
+  italic = fetchurl {
+    # Finally a mirror that has a sha256 that doesn't change.
+    url = "https://googlefontdirectory.googlecode.com/hg-history/d7441308e589c9fa577f920fc4152fa32477a267/poly/src/Poly-Italic.otf";
+    sha256 = "1chzcy3kyi7wpr4iq4aj1v24fq1wwph1v5z96dimlqcrnvm66h2l";
+  };
+
+  nativeBuildInputs = [unzip];
+
+  sourceRoot = ".";
+
+  dontUnpack = true;
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/opentype
+    cp ${regular} $out/share/fonts/opentype/Poly-Regular.otf
+    cp ${italic} $out/share/fonts/opentype/Poly-Italic.otf
+  '';
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "11d7ldryfxi0wzfrg1bhw23a668a44vdb8gggxryvahmp5ahmq2h";
+
+  meta = {
+    description = "Medium contrast serif font";
+    longDescription = ''
+      With short ascenders and a very high x-height, Poly is efficient in small
+      sizes. Thanks to its careful balance between the x-height and glyph widths,
+      it allows more economy and legibility than standard web serifs, even in
+      small sizes. The aglutinative language for which it was designed contains
+      very long words. The goal was to develop a typeface that would tolerate
+      cramped tracking and that would increase the number of letters on a single
+      line. Poly is a Unicode typeface family that supports Open Type features
+      and languages that use the Latin script and its variants.
+    '';
+    homepage = "http://www.fontsquirrel.com/fonts/poly";
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ relrod ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/powerline-fonts/default.nix b/nixpkgs/pkgs/data/fonts/powerline-fonts/default.nix
new file mode 100644
index 000000000000..ea2da0fe2ecf
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/powerline-fonts/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation {
+  pname = "powerline-fonts";
+  version = "unstable-2018-11-11";
+
+  src = fetchFromGitHub {
+    owner = "powerline";
+    repo = "fonts";
+    rev = "e80e3eba9091dac0655a0a77472e10f53e754bb0";
+    hash = "sha256-GGfON6Z/0czCUAGxnqtndgDnaZGONFTU9/Hu4BGDHlk=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    find . -name '*.otf'    -exec install -Dt $out/share/fonts/opentype {} \;
+    find . -name '*.ttf'    -exec install -Dt $out/share/fonts/truetype {} \;
+    find . -name '*.bdf'    -exec install -Dt $out/share/fonts/bdf      {} \;
+    find . -name '*.pcf.gz' -exec install -Dt $out/share/fonts/pcf      {} \;
+    find . -name '*.psf.gz' -exec install -Dt $out/share/consolefonts   {} \;
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/powerline/fonts";
+    description = "Patched fonts for Powerline users";
+    longDescription = ''
+      Pre-patched and adjusted fonts for usage with the Powerline plugin.
+    '';
+    license = with licenses; [ asl20 free ofl ];
+    platforms = platforms.all;
+    maintainers = with maintainers; [ malyn ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/powerline-symbols/default.nix b/nixpkgs/pkgs/data/fonts/powerline-symbols/default.nix
new file mode 100644
index 000000000000..f8b9935d6439
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/powerline-symbols/default.nix
@@ -0,0 +1,18 @@
+{ lib, runCommand, powerline }:
+
+let
+  inherit (powerline) version;
+in runCommand "powerline-symbols-${version}" {
+  meta = {
+    inherit (powerline.meta) license;
+    priority = (powerline.meta.priority or 0) + 1;
+    maintainers = with lib.maintainers; [ midchildan ];
+  };
+} ''
+  install -Dm644 \
+    ${powerline.src}/font/PowerlineSymbols.otf \
+    $out/share/fonts/OTF/PowerlineSymbols.otf
+  install -Dm644 \
+    ${powerline.src}/font/10-powerline-symbols.conf \
+    $out/etc/fonts/conf.d/10-powerline-symbols.conf
+''
diff --git a/nixpkgs/pkgs/data/fonts/pretendard/default.nix b/nixpkgs/pkgs/data/fonts/pretendard/default.nix
new file mode 100644
index 000000000000..9f62ad8dd4e5
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/pretendard/default.nix
@@ -0,0 +1,58 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+let
+  version = "1.3.9";
+
+  mkPretendard = { pname, typeface, hash }:
+    stdenvNoCC.mkDerivation {
+      inherit pname version;
+
+      src = fetchzip {
+        url = "https://github.com/orioncactus/pretendard/releases/download/v${version}/${typeface}-${version}.zip";
+        stripRoot = false;
+        inherit hash;
+      };
+
+      installPhase = ''
+        runHook preInstall
+
+        install -Dm644 public/static/*.otf -t $out/share/fonts/opentype
+
+        runHook postInstall
+      '';
+
+      meta = with lib; {
+        homepage = "https://github.com/orioncactus/pretendard";
+        description = "An alternative font to system-ui for all platforms";
+        license = licenses.ofl;
+        platforms = platforms.all;
+        maintainers = with maintainers; [ sudosubin ];
+      };
+    };
+
+in
+{
+  pretendard = mkPretendard {
+    pname = "pretendard";
+    typeface = "Pretendard";
+    hash = "sha256-n7RQApffpL/8ojHcZbdxyanl9Tlc8HP8kxLFBdArUfY=";
+  };
+
+  pretendard-gov = mkPretendard {
+    pname = "pretendard-gov";
+    typeface = "PretendardGOV";
+    hash = "sha256-qoDUBOmrk6WPKQgnapThfKC01xWup+HN82hcoIjEe0M=";
+  };
+
+  pretendard-jp = mkPretendard {
+    pname = "pretendard-jp";
+    typeface = "PretendardJP";
+    hash = "sha256-1nTk1LPoRSfSDgDuGWkcs6RRIY4ZOqDBPMsxezMos6Q=";
+  };
+
+  pretendard-std = mkPretendard {
+    pname = "pretendard-std";
+    typeface = "PretendardStd";
+    hash = "sha256-gkYqqxSICmSIrBuPRzBaOlGGM/rJU1z7FiFvu9RhK5s=";
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/prociono/default.nix b/nixpkgs/pkgs/data/fonts/prociono/default.nix
new file mode 100644
index 000000000000..8749c9d0736e
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/prociono/default.nix
@@ -0,0 +1,34 @@
+{ lib, fetchFromGitHub, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "prociono";
+  version = "2011-05-25";
+
+  src = fetchFromGitHub {
+    owner = "theleagueof";
+    repo = finalAttrs.pname;
+    rev = "f9d9680de6d6f0c13939f23c9dd14cd7853cf844";
+    hash = "sha256-gC5E0Z0O2cnthoBEu+UOQLsr3/a/3/JPIx3WCPsXXtk=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/truetype $src/*.ttf
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A roman serif with blackletter elements";
+    longDescription = ''
+      "Prociono" (pro-tsee-O-no) is an Esperanto word meaning either the star
+      Procyon or the animal species known as the raccoon. It is a roman serif
+      with blackletter elements.
+    '';
+    homepage = "https://www.theleagueofmoveabletype.com/prociono";
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ minijackson ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/profont/default.nix b/nixpkgs/pkgs/data/fonts/profont/default.nix
new file mode 100644
index 000000000000..e201d643afac
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/profont/default.nix
@@ -0,0 +1,43 @@
+{ lib, stdenv, fetchzip, xorg }:
+
+stdenv.mkDerivation {
+  pname = "profont";
+  version = "2019-11";
+
+  # Note: stripRoot doesn't work because the archive
+  # contains the metadata directory `__MACOSX`.
+  src = fetchzip {
+    url = "https://tobiasjung.name/downloadfile.php?file=profont-x11.zip";
+    sha256 = "12dbm87wvcpmn7nzgzwlk45cybp091diara8blqm6129ps27z6kb";
+    stripRoot = false;
+  } + /profont-x11;
+
+  srcOtb = fetchzip {
+    url = "https://tobiasjung.name/downloadfile.php?file=profont-otb.zip";
+    sha256 = "18rfhfqrsj3510by0w1a7ak5as6r2cxh8xv02xc1y30mfa6g24x6";
+    stripRoot = false;
+  } + /profont-otb;
+
+  dontBuild = true;
+
+  nativeBuildInputs = [ xorg.mkfontscale ];
+
+  installPhase = ''
+    mkdir -p "$out/share/fonts/misc"
+    for f in *.pcf; do
+      gzip -n -9 -c "$f" > "$out/share/fonts/misc/$f.gz"
+    done
+    install -D -m 644 LICENSE -t "$out/share/doc/$pname"
+    install -D -m 644 "$srcOtb/profontn.otb" -t $out/share/fonts/misc
+    mkfontdir "$out/share/fonts/misc"
+  '';
+
+  meta = with lib; {
+    homepage = "https://tobiasjung.name/profont/";
+    description = "A monospaced font created to be a most readable font for programming";
+    maintainers = with maintainers; [ myrl ];
+    license = licenses.mit;
+    platforms = platforms.all;
+  };
+
+}
diff --git a/nixpkgs/pkgs/data/fonts/proggyfonts/default.nix b/nixpkgs/pkgs/data/fonts/proggyfonts/default.nix
new file mode 100644
index 000000000000..195b6ed1d39a
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/proggyfonts/default.nix
@@ -0,0 +1,44 @@
+{ lib, stdenv, fetchurl, mkfontscale }:
+
+stdenv.mkDerivation rec {
+  pname = "proggyfonts";
+  version = "0.1";
+
+  src = fetchurl {
+    url = "https://web.archive.org/web/20150801042353/http://kaictl.net/software/proggyfonts-${version}.tar.gz";
+    hash = "sha256-SsLzZdR5icVJNbr5rcCPbagPPtWghbqs2Jxmrtufsa4=";
+  };
+
+  nativeBuildInputs = [ mkfontscale ];
+
+  dontConfigure = true;
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    # compress pcf fonts
+    mkdir -p $out/share/fonts/misc
+    rm Speedy.pcf # duplicated as Speedy11.pcf
+    for f in *.pcf; do
+      gzip -n -9 -c "$f" > $out/share/fonts/misc/"$f".gz
+    done
+
+    install -D -m 644 *.bdf -t "$out/share/fonts/misc"
+    install -D -m 644 *.ttf -t "$out/share/fonts/truetype"
+    install -D -m 644 Licence.txt -t "$out/share/doc/$name"
+
+    mkfontscale "$out/share/fonts/truetype"
+    mkfontdir   "$out/share/fonts/misc"
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.upperbounds.net";
+    description = "A set of fixed-width screen fonts that are designed for code listings";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = [ maintainers.myrl ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/public-sans/default.nix b/nixpkgs/pkgs/data/fonts/public-sans/default.nix
new file mode 100644
index 000000000000..068238897831
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/public-sans/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "public-sans";
+  version = "2.001";
+
+  src = fetchzip {
+    url = "https://github.com/uswds/public-sans/releases/download/v${version}/public-sans-v${version}.zip";
+    stripRoot = false;
+    hash = "sha256-XFs/UMXI/kdrW+53t8Mj26+Rn5p+LQ6KW2K2/ShoIag=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 */*/*.otf -t $out/share/fonts/opentype
+    install -Dm644 */*/*.ttf -t $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A strong, neutral, principles-driven, open source typeface for text or display";
+    homepage = "https://public-sans.digital.gov/";
+    changelog = "https://github.com/uswds/public-sans/raw/v${version}/FONTLOG.txt";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ dtzWill ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/quattrocento-sans/default.nix b/nixpkgs/pkgs/data/fonts/quattrocento-sans/default.nix
new file mode 100644
index 000000000000..765959884232
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/quattrocento-sans/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "quattrocento-sans";
+  version = "2.0";
+
+  src = fetchzip {
+    url = "https://web.archive.org/web/20170709124317/http://www.impallari.com/media/releases/quattrocento-sans-v${version}.zip";
+    stripRoot = false;
+    hash = "sha256-L3aFZmaA94B9APxsp8bSBpocIlK3Ehvj/RFXVcW2nso=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 */*/QuattrocentoSans*.otf -t $out/share/fonts/opentype
+    install -Dm644 */FONTLOG.txt             -t $out/share/doc/${pname}-${version}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://www.impallari.com/quattrocentosans/";
+    description = "A classic, elegant and sober sans-serif typeface";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.rycee ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/quattrocento/default.nix b/nixpkgs/pkgs/data/fonts/quattrocento/default.nix
new file mode 100644
index 000000000000..a70396437ec1
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/quattrocento/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "quattrocento";
+  version = "1.1";
+
+  src = fetchzip {
+    url = "https://web.archive.org/web/20170707001804/http://www.impallari.com/media/releases/quattrocento-v${version}.zip";
+    hash = "sha256-ntY6Wl6TI8F7SShMyD8mdOxVg4oz9kvJ7vKTyGdPLtE=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 */*.otf     -t $out/share/fonts/opentype
+    install -Dm644 FONTLOG.txt -t $out/share/doc/${pname}-${version}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://www.impallari.com/quattrocento/";
+    description = "A classic, elegant, sober and strong serif typeface";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.rycee ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/quivira/default.nix b/nixpkgs/pkgs/data/fonts/quivira/default.nix
new file mode 100644
index 000000000000..8affc4f6c729
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/quivira/default.nix
@@ -0,0 +1,29 @@
+{ lib, fetchurl }:
+let
+  pname = "quivira";
+  version = "4.1";
+in fetchurl {
+  name = "${pname}-${version}";
+  url = "http://www.quivira-font.com/files/Quivira.otf";
+
+  # Download the source file to a temporary directory so that $out can be a
+  # directory with the expected structure.
+  downloadToTemp = true;
+  # recursiveHash needs to be true because $out is going to be a directory.
+  recursiveHash = true;
+  postFetch = ''
+    install -D $downloadedFile $out/share/fonts/opentype/Quivira.otf
+  '';
+
+  sha256 = "Hhl+0Oc5DDohOpBbEARMunMYCpr6nn4X6RgpQeEksNo=";
+  meta = {
+    description = "a free Unicode font in the OpenType format which is supported by every usual office program or printer";
+    homepage = "http://www.quivira-font.com/";
+    license = lib.licenses.publicDomain;
+    maintainers = [ lib.maintainers.nosewings ];
+    # From the homepage: "If you try to install Quivira on a Mac,
+    # you will get an error message about the 'post table
+    # usability'."
+    platforms = lib.filter (platform: !lib.hasInfix "darwin" platform) lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/raleway/default.nix b/nixpkgs/pkgs/data/fonts/raleway/default.nix
new file mode 100644
index 000000000000..c8a91165f30a
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/raleway/default.nix
@@ -0,0 +1,40 @@
+{ lib, fetchzip, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "raleway";
+  version = "4.101";
+
+  src = fetchzip {
+    url = "https://github.com/theleagueof/raleway/releases/download/${finalAttrs.version}/Raleway-${finalAttrs.version}.tar.xz";
+    hash = "sha256-itNHIMoRjiaqYAJoDNetkCquv47VAfel8MAzwsd//Ww=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/truetype $src/static/TTF/*.ttf
+    install -D -m444 -t $out/share/fonts/opentype $src/static/OTF/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Raleway is an elegant sans-serif typeface family";
+    longDescription = ''
+      Initially designed by Matt McInerney as a single thin weight, it was
+      expanded into a 9 weight family by Pablo Impallari and Rodrigo Fuenzalida
+      in 2012 and iKerned by Igino Marini. In 2013 the Italics where added, and
+      most recently — a variable version.
+
+      It features both old style and lining numerals, standard and
+      discretionary ligatures, a pretty complete set of diacritics, as well as
+      a stylistic alternate inspired by more geometric sans-serif typefaces
+      than its neo-grotesque inspired default character set.
+
+      It also has a sister display family, Raleway Dots.
+    '';
+    homepage = "https://www.theleagueofmoveabletype.com/raleway";
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ minijackson ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/recursive/default.nix b/nixpkgs/pkgs/data/fonts/recursive/default.nix
new file mode 100644
index 000000000000..f634a8c5343a
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/recursive/default.nix
@@ -0,0 +1,25 @@
+{ lib, fetchzip, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "recursive";
+  version = "1.085";
+
+  src = fetchzip {
+    url = "https://github.com/arrowtype/recursive/releases/download/v${version}/ArrowType-Recursive-${version}.zip";
+    sha256 = "sha256-hnGnKnRoQN8vFStW8TjLrrTL1dWsthUEWxfaGF0b0vM=";
+  };
+
+  installPhase = ''
+    install -D -t $out/share/fonts/opentype/ $(find $src -type f -name '*.otf')
+    install -D -t $out/share/fonts/truetype/ $(find $src -type f -name '*.ttf')
+  '';
+
+
+  meta = with lib; {
+    homepage = "https://recursive.design/";
+    description = "A variable font family for code & UI";
+    license = licenses.ofl;
+    maintainers = [ maintainers.eadwu ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/redhat-official/default.nix b/nixpkgs/pkgs/data/fonts/redhat-official/default.nix
new file mode 100644
index 000000000000..76782d510509
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/redhat-official/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "redhat-official";
+  version = "4.0.3";
+
+  src = fetchFromGitHub {
+    owner = "RedHatOfficial";
+    repo = "RedHatFont";
+    rev = version;
+    hash = "sha256-r43KtMIedNitb5Arg8fTGB3hrRZoA8oUHVEL24k4LeQ=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    for kind in mono proportional; do
+      install -m444 -Dt $out/share/fonts/opentype fonts/$kind/static/otf/*.otf
+      install -m444 -Dt $out/share/fonts/truetype fonts/$kind/static/ttf/*.ttf
+    done
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/RedHatOfficial/RedHatFont";
+    description = "Red Hat's Open Source Fonts - Red Hat Display and Red Hat Text";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/rhodium-libre/default.nix b/nixpkgs/pkgs/data/fonts/rhodium-libre/default.nix
new file mode 100644
index 000000000000..1c36f41b4839
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/rhodium-libre/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "RhodiumLibre";
+  version = "1.2.0";
+
+  src = fetchFromGitHub {
+    owner = "DunwichType";
+    repo = pname;
+    rev = version;
+    hash = "sha256-YCQvUdjEAj4G71WCRCM0+NwiqRqwt1Ggeg9jb/oWEsY=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm444 -t $out/share/fonts/opentype/ RhodiumLibre-Regular.otf
+    install -Dm444 -t $out/share/fonts/truetype/ RhodiumLibre-Regular.ttf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "F/OSS/Libre font for Latin and Devanagari";
+    homepage = "https://github.com/DunwichType/RhodiumLibre";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.marsam ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/ricty/default.nix b/nixpkgs/pkgs/data/fonts/ricty/default.nix
new file mode 100644
index 000000000000..6bdd331c72c4
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ricty/default.nix
@@ -0,0 +1,37 @@
+{ lib, stdenv, fetchurl, google-fonts, migu, fontforge, which }:
+
+stdenv.mkDerivation rec {
+  pname = "ricty";
+  version = "4.1.1";
+
+  src = fetchurl {
+      url = "https://rictyfonts.github.io/files/ricty_generator-${version}.sh";
+      sha256 = "03fngb8f5hl7ifigdm5yljhs4z2x80cq8y8kna86d07ghknhzgw6";
+  };
+
+  unpackPhase = ''
+    install -m 0770 $src ricty_generator.sh
+  '';
+
+  patchPhase = ''
+    sed -i 's/fonts_directories=".*"/fonts_directories="$inconsolata $migu"/' ricty_generator.sh
+  '';
+
+  buildInputs = [ google-fonts migu fontforge which ];
+
+  buildPhase = ''
+    inconsolata=${google-fonts} migu=${migu} ./ricty_generator.sh auto
+  '';
+
+  installPhase = ''
+    install -m644 --target $out/share/fonts/truetype/ricty -D Ricty-*.ttf
+  '';
+
+  meta = with lib; {
+    description = "A high-quality Japanese font based on Inconsolata and Migu 1M";
+    homepage = "https://rictyfonts.github.io";
+    license = licenses.unfree;
+    maintainers = [ maintainers.mikoim ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/data/fonts/rictydiminished-with-firacode/default.nix b/nixpkgs/pkgs/data/fonts/rictydiminished-with-firacode/default.nix
new file mode 100644
index 000000000000..c8d8ca42f9e4
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/rictydiminished-with-firacode/default.nix
@@ -0,0 +1,49 @@
+{ lib, stdenv, fetchFromGitHub, fontforge, python3 }:
+
+stdenv.mkDerivation rec {
+  pname = "rictydiminished-with-firacode";
+  version = "1.2.2";
+
+  src = fetchFromGitHub {
+    owner = "hakatashi";
+    repo = "RictyDiminished-with-FiraCode";
+    rev = version;
+    sha256 = "sha256-twh3yLAM4MUjWzSDNmo8gNIRf01hieXeOS334sNdFk4=";
+    fetchSubmodules = true;
+  };
+
+  postPatch = ''
+    # Make builds more reproducible
+    substituteInPlace apply-feature.py --replace \
+      'ricty = ttLib.TTFont(options.in_font)' \
+      'ricty = ttLib.TTFont(options.in_font, recalcTimestamp=False)'
+    substituteInPlace build.py --replace \
+      'datetime.date.today()' \
+      'datetime.date.fromtimestamp(float(os.environ["SOURCE_DATE_EPOCH"]))'
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/rictydiminished-with-firacode *.ttf
+
+    runHook postInstall
+  '';
+
+  nativeBuildInputs = [
+    (python3.withPackages (ps: [
+      ps.jinja2
+      ps.fonttools
+      ps.fontforge
+    ]))
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/hakatashi/RictyDiminished-with-FiraCode";
+    description = "The best Japanese programming font meets the awesome ligatures of Firacode";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ mt-caret ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/data/fonts/roboto-mono/default.nix b/nixpkgs/pkgs/data/fonts/roboto-mono/default.nix
new file mode 100644
index 000000000000..5d7cc57a4b43
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/roboto-mono/default.nix
@@ -0,0 +1,88 @@
+{ lib, stdenv, fetchurl }:
+
+let
+  # Latest commit touching the robotomono tree
+  commit = "5338537ef835a3d9ccf8faf386399f13a30605e2";
+in
+stdenv.mkDerivation {
+  pname = "roboto-mono";
+  version = "2.002-20190125";
+
+  srcs = [
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/google/fonts/${commit}/apache/robotomono/RobotoMono-Regular.ttf";
+      sha256 = "1f96r4by67hzqpr4p2wkrfnpj9b7x9qrmwns0312w2l2rnp2qajx";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/google/fonts/${commit}/apache/robotomono/RobotoMono-Bold.ttf";
+      sha256 = "10wg4dchdq4s89r9pd4h8y5l1bf8mix32pksph2wafyr3815kfnm";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/google/fonts/${commit}/apache/robotomono/RobotoMono-Italic.ttf";
+      sha256 = "1cayhm3wj36q748xd0zdgrhm4pz7wnrskrlf7khxx2s41m3win5b";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/google/fonts/${commit}/apache/robotomono/RobotoMono-BoldItalic.ttf";
+      sha256 = "04238dxizdlhnnnyzhnqckxf8ciwlnwyzxby6qgpyg232abx0n2z";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/google/fonts/${commit}/apache/robotomono/RobotoMono-Medium.ttf";
+      sha256 = "00rh49d0dbycbkjgd2883w7iqzd6hcry08ycjipsvk091p5nq6qy";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/google/fonts/${commit}/apache/robotomono/RobotoMono-MediumItalic.ttf";
+      sha256 = "0fxl6lblj7anhqmhplnpvjwckjh4g8m6r9jykxdrvpl5hk8mr65b";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/google/fonts/${commit}/apache/robotomono/RobotoMono-Light.ttf";
+      sha256 = "1h8rbc2p70fabkplsafzah1wcwy92qc1wzkmc1cnb4yq28gxah4a";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/google/fonts/${commit}/apache/robotomono/RobotoMono-LightItalic.ttf";
+      sha256 = "08y2qngwy61mc22f8i00gshgmcf7hwmfxh1f4j824svy4n16zhsc";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/google/fonts/${commit}/apache/robotomono/RobotoMono-Thin.ttf";
+      sha256 = "0fmij9zlfjiyf0vb8n8gvrwi35l830zpmkbhcy1xgx0m8za6mmmy";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/google/fonts/${commit}/apache/robotomono/RobotoMono-ThinItalic.ttf";
+      sha256 = "0mpwdhjnsk8311nw8fqzy1b7v0wzb4pw639ply1j38a0vibrsmn7";
+    })
+  ];
+
+  sourceRoot = ".";
+
+  unpackCmd = ''
+    ttfName=$(basename $(stripHash $curSrc))
+    cp $curSrc ./$ttfName
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype
+    cp -a *.ttf $out/share/fonts/truetype/
+  '';
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "0fkx2z97k29n1392bf76iwdyz44yp86hmqah7ai6bikzlia38qa0";
+
+  meta = with lib; {
+    homepage = "https://www.google.com/fonts/specimen/Roboto+Mono";
+    description = "Google Roboto Mono fonts";
+    longDescription = ''
+      Roboto Mono is a monospaced addition to the Roboto type family. Like
+      the other members of the Roboto family, the fonts are optimized for
+      readability on screens across a wide variety of devices and reading
+      environments. While the monospaced version is related to its variable
+      width cousin, it doesn't hesitate to change forms to better fit the
+      constraints of a monospaced environment. For example, narrow glyphs
+      like 'I', 'l' and 'i' have added serifs for more even texture while
+      wider glyphs are adjusted for weight. Curved caps like 'C' and 'O'
+      take on the straighter sides from Roboto Condensed.
+    '';
+    license = licenses.asl20;
+    platforms = platforms.all;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/roboto-serif/default.nix b/nixpkgs/pkgs/data/fonts/roboto-serif/default.nix
new file mode 100644
index 000000000000..99e8ea58b4e4
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/roboto-serif/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, stdenvNoCC
+, fetchurl
+, unzip
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "roboto-serif";
+  version = "1.008";
+
+  src = fetchurl {
+    url = "https://github.com/googlefonts/roboto-serif/releases/download/v${version}/RobotoSerifFonts-v${version}.zip";
+    hash = "sha256-Nm9DcxL0CgA51nGeZJPWSCipgqwnNPlhj0wHyGhLaYQ=";
+  };
+
+  sourceRoot = ".";
+
+  nativeBuildInputs = [
+    unzip
+  ];
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 variable/*.ttf -t $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "The Roboto family of fonts";
+    longDescription = ''
+      Google’s signature family of fonts, the default font on Android and
+      Chrome OS, and the recommended font for Google’s visual language,
+      Material Design.
+    '';
+    homepage = "https://github.com/googlefonts/roboto-serif";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ wegank ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/roboto-slab/default.nix b/nixpkgs/pkgs/data/fonts/roboto-slab/default.nix
new file mode 100644
index 000000000000..dc37c8258564
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/roboto-slab/default.nix
@@ -0,0 +1,41 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation {
+  pname = "roboto-slab";
+  version = "2.000";
+
+  src = fetchFromGitHub {
+    owner = "googlefonts";
+    repo = "robotoslab";
+    rev = "baeeba45e0c3ccdcfb6a70dc564785941aafef5d";
+    sha256 = "1v6z0a2xgwgf9dyj62sriy8ckwpbwlxkki6gfax1f4h4livvzpdn";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype
+    cp -a fonts/static/*.ttf $out/share/fonts/truetype/
+  '';
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "0g663npi5lkvwcqafd4cjrm90ph0nv1lig7d19xzfymnj47qpj8x";
+
+  meta = with lib; {
+    homepage = "https://www.google.com/fonts/specimen/Roboto+Slab";
+    description = "Roboto Slab Typeface by Google";
+    longDescription = ''
+      Roboto has a dual nature. It has a mechanical skeleton and the forms
+      are largely geometric. At the same time, the font features friendly
+      and open curves. While some grotesks distort their letterforms to
+      force a rigid rhythm, Roboto doesn't compromise, allowing letters to
+      be settled into their natural width. This makes for a more natural
+      reading rhythm more commonly found in humanist and serif types.
+
+      This is the Roboto Slab family, which can be used alongside the normal
+      Roboto family and the Roboto Condensed family.
+    '';
+    license = licenses.asl20;
+    platforms = platforms.all;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/roboto/default.nix b/nixpkgs/pkgs/data/fonts/roboto/default.nix
new file mode 100644
index 000000000000..02ca82edf10f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/roboto/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "roboto";
+  version = "2.138";
+
+  src = fetchzip {
+    url = "https://github.com/google/roboto/releases/download/v${version}/roboto-unhinted.zip";
+    stripRoot = false;
+    hash = "sha256-ue3PUZinBpcYgSho1Zrw1KHl7gc/GlN1GhWFk6g5QXE=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = {
+    homepage = "https://github.com/google/roboto";
+    description = "The Roboto family of fonts";
+    longDescription = ''
+      Google’s signature family of fonts, the default font on Android and
+      Chrome OS, and the recommended font for Google’s visual language,
+      Material Design.
+    '';
+    license = lib.licenses.asl20;
+    platforms = lib.platforms.all;
+    maintainers = [ lib.maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/rounded-mgenplus/default.nix b/nixpkgs/pkgs/data/fonts/rounded-mgenplus/default.nix
new file mode 100644
index 000000000000..688518150fc7
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/rounded-mgenplus/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenvNoCC, fetchurl, p7zip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "rounded-mgenplus";
+  version = "20150602";
+
+  src = fetchurl {
+    url = "https://osdn.jp/downloads/users/8/8598/${pname}-${version}.7z";
+    hash = "sha256-7OpnZJc9k5NiOPHAbtJGMQvsMg9j81DCvbfo0f7uJcw=";
+  };
+
+  sourceRoot = ".";
+
+  nativeBuildInputs = [ p7zip ];
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m 444 -D -t $out/share/fonts/${pname} ${pname}-*.ttf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A Japanese font based on Rounded M+ and Noto Sans Japanese";
+    homepage = "http://jikasei.me/font/rounded-mgenplus/";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ mnacamura ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/route159/default.nix b/nixpkgs/pkgs/data/fonts/route159/default.nix
new file mode 100644
index 000000000000..e19d25d61d0f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/route159/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+let
+  majorVersion = "1";
+  minorVersion = "10";
+in
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "route159";
+  version = "${majorVersion}.${minorVersion}";
+
+  src = fetchzip {
+    url = "https://dotcolon.net/download/fonts/${finalAttrs.pname}_${majorVersion}${minorVersion}.zip";
+    hash = "sha256-1InyBW1LGbp/IU/ql9mvT14W3MTxJdWThFwRH6VHpTU=";
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://dotcolon.net/font/${finalAttrs.pname}/";
+    description = "A weighted sans serif font";
+    platforms = platforms.all;
+    maintainers = with maintainers; [ leenaars minijackson ];
+    license = licenses.ofl;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/rubik/default.nix b/nixpkgs/pkgs/data/fonts/rubik/default.nix
new file mode 100644
index 000000000000..c9e20fa6351a
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/rubik/default.nix
@@ -0,0 +1,103 @@
+{ stdenv, lib, fetchurl }:
+let
+  # Latest commit touching the rubik tree
+  commit = "054aa9d546cd6308f8ff7139b332490e0967aebe";
+in
+stdenv.mkDerivation {
+  pname = "rubik";
+  version = "2.200";
+
+  srcs = [
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/googlefonts/rubik/${commit}/fonts/ttf/Rubik-Black.ttf";
+      sha256 = "0h4mxqz0b5as7g964bv98aanaghp4wgs2g5wnf7apxnd2fng14dn";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/googlefonts/rubik/${commit}/fonts/ttf/Rubik-BlackItalic.ttf";
+      sha256 = "0x8j3fwavkf1jf7s97ncvs0jk463v1fyajcxqxvv7lpk55sjnbpy";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/googlefonts/rubik/${commit}/fonts/ttf/Rubik-Bold.ttf";
+      sha256 = "0prjqdbdpnhwr66gjw9mc1590gmjl7fir8wnanzch6arvngmxaj9";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/googlefonts/rubik/${commit}/fonts/ttf/Rubik-BoldItalic.ttf";
+      sha256 = "1zyl55fkjr61k6yfvgi0cr2iz4s0kkv3mkjpdmpla9jnk10rd8lm";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/googlefonts/rubik/${commit}/fonts/ttf/Rubik-ExtraBold.ttf";
+      sha256 = "0vi01lc2dadgmw5z26nkfzn7vl3lsd0flhqqfp40nn8jvpdkb2mq";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/googlefonts/rubik/${commit}/fonts/ttf/Rubik-ExtraBoldItalic.ttf";
+      sha256 = "0ldcszzzrc44gldflman7kcfk38x77grjb3zjvxjvgn875ggwabk";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/googlefonts/rubik/${commit}/fonts/ttf/Rubik-Italic.ttf";
+      sha256 = "09x7fh6ad4w6027410vhkvisgy8vqm2mzdsc19z3szlrxi0gl0rx";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/googlefonts/rubik/${commit}/fonts/ttf/Rubik-Light.ttf";
+      sha256 = "19a6k0pprcra6nxk3l0k6wkg9g0qn5h1v71rw2m8im64kyjx4qpf";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/googlefonts/rubik/${commit}/fonts/ttf/Rubik-LightItalic.ttf";
+      sha256 = "0r9hbh9xnbp0584vjiiq72583j1ai3dw93gfy823c736y6bk0j2m";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/googlefonts/rubik/${commit}/fonts/ttf/Rubik-Medium.ttf";
+      sha256 = "01nky9la4qjd80dy200j8l7zl0r2h9zw90k7aghzlb5abk4i3zvf";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/googlefonts/rubik/${commit}/fonts/ttf/Rubik-MediumItalic.ttf";
+      sha256 = "1i81x9h2cr65bj85z5b2mki59532nvlbh92wb84zfhfdz97s30cq";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/googlefonts/rubik/${commit}/fonts/ttf/Rubik-Regular.ttf";
+      sha256 = "1vk4n6yc4x1vlwfrp26jhagyl5l86jwa4lalccc320crrwqfc521";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/googlefonts/rubik/${commit}/fonts/ttf/Rubik-SemiBold.ttf";
+      sha256 = "0blmy1ywsf9hr1a66cl12bjn32i072w6ncvsir0s5smm2c0gksvb";
+    })
+    (fetchurl {
+      url = "https://raw.githubusercontent.com/googlefonts/rubik/${commit}/fonts/ttf/Rubik-SemiBoldItalic.ttf";
+      sha256 = "1sj22d3jrlxl6ka0naf5nby3k0i7pzadk5b8xgdhcslwijwiib3y";
+    })
+  ];
+
+  sourceRoot = ".";
+
+  unpackCmd = ''
+    ttfName=$(basename $(stripHash $curSrc))
+    cp $curSrc ./$ttfName
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype
+    cp -a *.ttf $out/share/fonts/truetype/
+  '';
+
+  meta = with lib; {
+    homepage = "https://fonts.google.com/specimen/Rubik";
+    description = "Rubik Font - is a 5 weight Roman + Italic family.";
+    longDescription = ''
+      The Rubik Fonts project was initiated as part of the Chrome CubeLab
+      project.
+
+      Rubik is a 5 weight Roman + Italic family.
+
+      Rubik supports the Latin, Cyrillic and Hebrew scripts. The Latin and Cyrillic
+      were designed by Philipp Hubert and Sebastian Fischer at Hubert Fischer.
+
+      The Hebrew was initially designed by Philipp and Sebastian, and then revised by
+      type designer and Hebrew native reader Meir Sadan to adjust proportions,
+      spacing and other design details.
+
+      Cyrillic was initially designed by Philipp and Sebastian, and then revised and
+      expanded by Cyreal Fonts Team (Alexei Vanyashin and Nikita Kanarev). Existing
+      glyphs were improved, and glyph set was expanded to GF Cyrillic Plus.
+    '';
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/ruwudu/default.nix b/nixpkgs/pkgs/data/fonts/ruwudu/default.nix
new file mode 100644
index 000000000000..025c0a2ece43
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ruwudu/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "ruwudu";
+  version = "3.000";
+
+  src = fetchzip {
+    url = "https://software.sil.org/downloads/r/ruwudu/Ruwudu-${version}.zip";
+    hash = "sha256-HuuH6AWD5gym73zSsuQdQD901J6r3PkUmUTtnRxYRyg=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/{doc/${pname},fonts/truetype}
+    mv *.ttf $out/share/fonts/truetype/
+    mv *.txt documentation $out/share/doc/${pname}/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://software.sil.org/ruwudu/";
+    description = "Arabic script font for a style of writing used in Niger, West Africa";
+    license = licenses.ofl;
+    maintainers = [ maintainers.vbgl ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/sahel-fonts/default.nix b/nixpkgs/pkgs/data/fonts/sahel-fonts/default.nix
new file mode 100644
index 000000000000..860a0066270d
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/sahel-fonts/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "sahel-fonts";
+  version = "3.4.0";
+
+  src = fetchFromGitHub {
+    owner = "rastikerdar";
+    repo = "sahel-font";
+    rev = "v${version}";
+    hash = "sha256-U4tIICXZFK9pk7zdzRwBPIPYFUlYXPSebnItUJUgGJY=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    find . -name '*.ttf' -exec install -m444 -Dt $out/share/fonts/sahel-fonts {} \;
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/rastikerdar/sahel-font";
+    description = "A Persian (farsi) Font - فونت (قلم) فارسی ساحل";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/samim-fonts/default.nix b/nixpkgs/pkgs/data/fonts/samim-fonts/default.nix
new file mode 100644
index 000000000000..a1785e1b9373
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/samim-fonts/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "samim-fonts";
+  version = "4.0.5";
+
+  src = fetchFromGitHub {
+    owner = "rastikerdar";
+    repo = "samim-font";
+    rev = "v${version}";
+    hash = "sha256-DVBMsNOVAVwzlZ3cDus/3CSsC05bLZalQ2KeueEvwXs=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    find . -name '*.ttf' -exec install -m444 -Dt $out/share/fonts/samim-fonts {} \;
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/rastikerdar/samim-font";
+    description = "A Persian (Farsi) Font - فونت (قلم) فارسی صمیم";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/sampradaya/default.nix b/nixpkgs/pkgs/data/fonts/sampradaya/default.nix
new file mode 100644
index 000000000000..8c0545d2c7fe
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/sampradaya/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "sampradaya";
+  version = "0.5.0";
+
+  src = fetchurl {
+    url = "https://github.com/deepestblue/sampradaya/releases/download/v${version}/Sampradaya.ttf";
+    hash = "sha256-ygKMNzHvbLR2A5HHrfY2C9ZUg0yng+JL3cyg6sBKqeQ=";
+  };
+
+  dontUnpack = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 $src $out/share/fonts/truetype/Sampradaya.ttf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/deepestblue/sampradaya";
+    description = "Unicode-compliant Grantha font";
+    maintainers = with maintainers; [ mathnerd314 ];
+    license = licenses.ofl; # See font metadata
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/sarabun/default.nix b/nixpkgs/pkgs/data/fonts/sarabun/default.nix
new file mode 100644
index 000000000000..42bc349effe2
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/sarabun/default.nix
@@ -0,0 +1,41 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "sarabun";
+  version = "unstable-2018-08-24";
+
+  src = fetchFromGitHub {
+    owner = "cadsondemak";
+    repo = pname;
+    rev = "854cdbc6afa002ff8c2ce6aa7b86f99c7f71c9eb";
+    sha256 = "jcSQ72WK0GucZPgG7IQKrKzCOEbGgbQVl21RIKSF6A0=";
+  };
+
+  outputs = [ "out" "doc" ];
+
+  buildPhase = ''
+    mkdir -p $doc/${pname} $out/share/fonts/truetype
+
+    cp -r $src/OFL.txt $src/docs/* $doc/${pname}
+    cp $src/fonts/*.ttf $out/share/fonts/truetype
+  '';
+
+  meta = {
+    homepage = "https://cadsondemak.github.io/${pname}/";
+    description = "A slightly-condensed looped Thai and sans serif Latin typeface for communications";
+    longDescription = ''
+      The most popular typeface from the 13 fonts from SIPA Thailand’s National
+      fonts project. Sarabun was designed by Suppakit Chalermlarp to be a
+      serious text face. Great choice for a long reading formal text. This font
+      was selected by the royal Thai government to be the official typeface for
+      documentation purpose. It was also adopted by many private organizations
+      to be used as a communication font. Sarabun has a slightly condensed
+      proportion which fits perfectly with Thai legibility. It also carries a
+      neutral Thai traditional loop design which can easily fit in with any
+      occasion. Probably one of the most today’s familiar Thai loop typefaces.
+    '';
+    license = lib.licenses.ofl;
+    platforms = lib.platforms.all;
+    maintainers = with lib.maintainers; [ toastal ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/sarasa-gothic/default.nix b/nixpkgs/pkgs/data/fonts/sarasa-gothic/default.nix
new file mode 100644
index 000000000000..14dc6514e816
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/sarasa-gothic/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenvNoCC, fetchurl, p7zip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "sarasa-gothic";
+  version = "0.42.2";
+
+  src = fetchurl {
+    # Use the 'ttc' files here for a smaller closure size.
+    # (Using 'ttf' files gives a closure size about 15x larger, as of November 2021.)
+    url = "https://github.com/be5invis/Sarasa-Gothic/releases/download/v${version}/sarasa-gothic-ttc-${version}.7z";
+    hash = "sha256-RkPHlOPXQiAswtekrOCmYcPNlNSvcqyaM4juSHJxEeY=";
+  };
+
+  sourceRoot = ".";
+
+  nativeBuildInputs = [ p7zip ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp *.ttc $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A CJK programming font based on Iosevka and Source Han Sans";
+    homepage = "https://github.com/be5invis/Sarasa-Gothic";
+    license = licenses.ofl;
+    maintainers = [ maintainers.ChengCat ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/scheherazade/default.nix b/nixpkgs/pkgs/data/fonts/scheherazade/default.nix
new file mode 100644
index 000000000000..ffaf8aeb7824
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/scheherazade/default.nix
@@ -0,0 +1,54 @@
+{ lib, stdenvNoCC, fetchzip, version ? "4.000" }:
+
+let
+  new = lib.versionAtLeast version "3.000";
+  hash = {
+    "2.100" = "sha256-d2UyOOOnmE1afCwyIrM1bL3lQC7XRwh03hzetk/4V30=";
+    "3.300" = "sha256-LaaA6DWAE2dcwVVX4go9cJaiuwI6efYbPk82ym3W3IY=";
+    "4.000" = "sha256-FhgHlHCfojIl3Y11EDYhNTmLYwQ60OrwnA9nbZbZGJE=";
+  }."${version}";
+  pname = "scheherazade${lib.optionalString new "-new"}";
+in
+stdenvNoCC.mkDerivation rec {
+  inherit pname version;
+
+  src = fetchzip {
+    url = "http://software.sil.org/downloads/r/scheherazade/Scheherazade${lib.optionalString new "New"}-${version}.zip";
+    inherit hash;
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+    install -Dm644 FONTLOG.txt README.txt -t $out/share/doc
+    cp -r documentation $out/share/doc/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://software.sil.org/scheherazade/";
+    description = "A font designed in a similar style to traditional Naskh typefaces";
+    longDescription = ''
+
+      Scheherazade${lib.optionalString new " New"}, named after the heroine of
+      the classic Arabian Nights tale, is designed in a similar style to
+      traditional typefaces such as Monotype Naskh, extended to cover the
+      Unicode Arabic repertoire through Unicode ${if new then "14.0" else "8.0"}.
+
+      Scheherazade provides a “simplified” rendering of Arabic script, using
+      basic connecting glyphs but not including a wide variety of additional
+      ligatures or contextual alternates (only the required lam-alef
+      ligatures). This simplified style is often preferred for clarity,
+      especially in non-Arabic languages, but may not be considered appropriate
+      in situations where a more elaborate style of calligraphy is preferred.
+
+      This package contains the regular and bold styles for the Scheherazade
+      font family, along with documentation.
+    '';
+    downloadPage = "https://software.sil.org/scheherazade/download/";
+    license = licenses.ofl;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/scientifica/default.nix b/nixpkgs/pkgs/data/fonts/scientifica/default.nix
new file mode 100644
index 000000000000..1b57c9f286d3
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/scientifica/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "scientifica";
+  version = "2.3";
+
+  src = fetchurl {
+    url = "https://github.com/NerdyPepper/scientifica/releases/download/v${version}/scientifica.tar";
+    hash = "sha256-8IV4aaDoRsbxddy4U90fEZ6henUhjmO38HNtWo4ein8=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    mkdir -p $out/share/fonts/misc
+    install ttf/*.ttf $out/share/fonts/truetype
+    install otb/*.otb $out/share/fonts/misc
+    install bdf/*.bdf $out/share/fonts/misc
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Tall and condensed bitmap font for geeks";
+    homepage = "https://github.com/NerdyPepper/scientifica";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ moni ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/seshat/default.nix b/nixpkgs/pkgs/data/fonts/seshat/default.nix
new file mode 100644
index 000000000000..e86b0539c927
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/seshat/default.nix
@@ -0,0 +1,42 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+let
+  majorVersion = "0";
+  minorVersion = "100";
+in
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "seshat";
+  version = "${majorVersion}.${minorVersion}";
+
+  src = fetchzip {
+    url = "https://dotcolon.net/download/fonts/${finalAttrs.pname}_${majorVersion}${minorVersion}.zip";
+    hash = "sha256-XgprDhzAbcTzZw2QOwpCnzusYheYmSlM+ApU+Y0wO2Q=";
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://dotcolon.net/font/${finalAttrs.pname}/";
+    description = "Roman body font designed for main text by Sora Sagano";
+    longDescription = ''
+      Seshat is a Roman body font designed for the main text. By
+      referring to the classical balance, we changed some lines by
+      omitting part of the lines such as "A" and "n".
+
+      Also, by attaching the strength of the thickness like Optima
+      to the main drawing, it makes it more sharp design.
+
+      It incorporates symbols and ligatures used in the European region.
+    '';
+    platforms = platforms.all;
+    maintainers = with maintainers; [ leenaars minijackson ];
+    license = licenses.cc0;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/shabnam-fonts/default.nix b/nixpkgs/pkgs/data/fonts/shabnam-fonts/default.nix
new file mode 100644
index 000000000000..c5f5e00e023a
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/shabnam-fonts/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "shabnam-fonts";
+  version = "5.0.1";
+
+  src = fetchFromGitHub {
+    owner = "rastikerdar";
+    repo = "shabnam-font";
+    rev = "v${version}";
+    hash = "sha256-H03GTKRVPiwU4edkr4x5upW4JCy6320Lo+cKK9FRMQs=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    find . -name '*.ttf' -exec install -m444 -Dt $out/share/fonts/shabnam-fonts {} \;
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/rastikerdar/shabnam-font";
+    description = "A Persian (Farsi) Font - فونت (قلم) فارسی شبنم";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/shrikhand/default.nix b/nixpkgs/pkgs/data/fonts/shrikhand/default.nix
new file mode 100644
index 000000000000..0db94ebd4ecb
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/shrikhand/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation {
+  pname = "shrikhand";
+  version = "unstable-2016-03-03";
+
+  src = fetchurl {
+    url = "https://github.com/jonpinhorn/shrikhand/raw/c11c9b0720fba977fad7cb4f339ebacdba1d1394/build/Shrikhand-Regular.ttf";
+    hash = "sha256-wHP1Bwu5Yw3a+RwDOHrmthsnuvwyCV4l6ma5EjA6EMA=";
+  };
+
+  dontUnpack = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m644 $src $out/share/fonts/truetype/Shrikhand-Regular.ttf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://jonpinhorn.github.io/shrikhand/";
+    description = "A vibrant and playful typeface for both Latin and Gujarati writing systems";
+    maintainers = with maintainers; [ sternenseemann ];
+    platforms = platforms.all;
+    license = licenses.ofl;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/signwriting/default.nix b/nixpkgs/pkgs/data/fonts/signwriting/default.nix
new file mode 100644
index 000000000000..ae5f0bb0fb93
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/signwriting/default.nix
@@ -0,0 +1,32 @@
+{ lib, runCommand, fetchurl }:
+
+runCommand "signwriting-1.1.4" {
+  src1 = fetchurl {
+    url = "https://github.com/Slevinski/signwriting_2010_fonts/raw/61c8e7123a1168657b5d34d85266a637f67b9d2b/fonts/SignWriting%202010.ttf";
+    name = "SignWriting_2010.ttf";
+    sha256 = "1abjzykbjx2hal8mrxp51rvblv3q84akyn9qhjfaj20rwphkf5zj";
+  };
+
+  src2 = fetchurl {
+    url = "https://github.com/Slevinski/signwriting_2010_fonts/raw/61c8e7123a1168657b5d34d85266a637f67b9d2b/fonts/SignWriting%202010%20Filling.ttf";
+    name = "SignWriting_2010_Filling.ttf";
+    sha256 = "0am5wbf7jdy9szxkbsc5f3959cxvbj7mr0hy1ziqmkz02c6xjw2m";
+  };
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "0cn37s3lc7gbr8036l7ia2869qmxglkmgllh3r9q5j54g3sfjc7q";
+
+  meta = with lib; {
+    homepage = "https://github.com/Slevinski/signwriting_2010_fonts";
+    description = "Typeface for written sign languages";
+    maintainers = with maintainers; [ mathnerd314 ];
+    license = licenses.ofl;
+    platforms = platforms.all;
+  };
+}
+''
+  mkdir -p $out/share/fonts/truetype
+  cp $src1 $out/share/fonts/truetype/SignWriting_2010.ttf
+  cp $src2 $out/share/fonts/truetype/SignWriting_2010_Filling.ttf
+''
diff --git a/nixpkgs/pkgs/data/fonts/siji/default.nix b/nixpkgs/pkgs/data/fonts/siji/default.nix
new file mode 100644
index 000000000000..4429729f7a5c
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/siji/default.nix
@@ -0,0 +1,44 @@
+{ lib, stdenv, fetchFromGitHub, libfaketime, xorg }:
+
+stdenv.mkDerivation rec {
+  pname = "siji";
+  version = "2016-05-13";
+
+  src = fetchFromGitHub {
+    owner = "stark";
+    repo = "siji";
+    rev = "3cbb7fe938c33aaadbb657803ea5946e5157d6e2";
+    sha256 = "1408g4nxwdd682vjqpmgv0cp0bfnzzzwls62cjs9zrds16xa9dpf";
+  };
+
+  nativeBuildInputs = [ libfaketime xorg.fonttosfnt xorg.mkfontscale ];
+
+  buildPhase = ''
+    # compress pcf fonts
+    gzip -n -9 pcf/*
+
+    # convert bdf fonts to otb
+    for i in bdf/*; do
+        name=$(basename $i .bdf)
+        faketime -f "1970-01-01 00:00:01" \
+        fonttosfnt -v -o "$name.otb" "$i"
+    done
+  '';
+
+  postInstall = ''
+    install -m 644 -D *.otb pcf/* -t "$out/share/fonts/misc"
+    install -m 644 -D bdf/* -t "$bdf/share/fonts/misc"
+    mkfontdir "$out/share/fonts/misc"
+    mkfontdir "$bdf/share/fonts/misc"
+  '';
+
+  outputs = [ "out" "bdf" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/stark/siji";
+    description = "An iconic bitmap font based on Stlarch with additional glyphs";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = [ maintainers.asymmetric ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/sil-abyssinica/default.nix b/nixpkgs/pkgs/data/fonts/sil-abyssinica/default.nix
new file mode 100644
index 000000000000..d0571fae0bfd
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/sil-abyssinica/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "sil-abyssinica";
+  version = "2.201";
+
+  src = fetchzip {
+    url = "https://software.sil.org/downloads/r/abyssinica/AbyssinicaSIL-${version}.zip";
+    hash = "sha256-DJWp3T9uBLnztSq9r5YCSWaBjIK/0Aljg1IiU0FLrdE=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/{fonts/truetype,doc/${pname}-${version}}
+    mv *.ttf $out/share/fonts/truetype/
+    mv *.txt documentation $out/share/doc/${pname}-${version}/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Unicode font for Ethiopian and Erythrean scripts (Amharic et al.)";
+    homepage = "https://software.sil.org/abyssinica/";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ serge ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/sil-padauk/default.nix b/nixpkgs/pkgs/data/fonts/sil-padauk/default.nix
new file mode 100644
index 000000000000..fe45da131738
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/sil-padauk/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "sil-padauk";
+  version = "5.001";
+
+  src = fetchzip {
+    url = "https://software.sil.org/downloads/r/padauk/Padauk-${version}.zip";
+    hash = "sha256-rLzuDUd+idjTN0xQxblXQ9V2rQtJPN2EtWGmTRY1R7U=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    mv *.ttf $out/share/fonts/truetype/
+    mkdir -p $out/share/doc/${pname}-${version}
+    mv *.txt documentation/ $out/share/doc/${pname}-${version}/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A Unicode-based font family with broad support for writing systems that use the Myanmar script";
+    homepage = "https://software.sil.org/padauk";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ serge ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/sitelen-seli-kiwen/default.nix b/nixpkgs/pkgs/data/fonts/sitelen-seli-kiwen/default.nix
new file mode 100644
index 000000000000..de0fec7b6f3e
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/sitelen-seli-kiwen/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation {
+  pname = "sitelen-seli-kiwen";
+  version = "unstable-2022-06-28";
+
+  src = fetchzip {
+    url = "https://raw.githubusercontent.com/kreativekorp/sitelen-seli-kiwen/69132c99873894746c9710707aaeb2cea2609709/sitelenselikiwen.zip";
+    stripRoot = false;
+    hash = "sha256-viOLAj9Rn60bcQkkDHVuKHCE8KPnIz/L0hIJhum1SSQ=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/{opentype,truetype}
+    mv *.eot $out/share/fonts/opentype/
+    mv *.ttf $out/share/fonts/truetype/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A handwritten sitelen pona font supporting UCSUR";
+    homepage = "https://www.kreativekorp.com/software/fonts/sitelenselikiwen/";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ somasis ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/sketchybar-app-font/default.nix b/nixpkgs/pkgs/data/fonts/sketchybar-app-font/default.nix
new file mode 100644
index 000000000000..8364c84f1ffc
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/sketchybar-app-font/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, stdenvNoCC
+, fetchurl
+}:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "sketchybar-app-font";
+  version = "1.0.20";
+
+  src = fetchurl {
+    url = "https://github.com/kvndrsslr/sketchybar-app-font/releases/download/v${finalAttrs.version}/sketchybar-app-font.ttf";
+    hash = "sha256-pf3SSxzlNIdbXXHfRauFCnrVUMOd5J9sSUE9MsfWrwo=";
+  };
+
+  dontUnpack = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 $src $out/share/fonts/truetype/sketchybar-app-font.ttf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A ligature-based symbol font and a mapping function for sketchybar";
+    longDescription = ''
+      A ligature-based symbol font and a mapping function for sketchybar, inspired by simple-bar's usage of community-contributed minimalistic app icons.
+    '';
+    homepage = "https://github.com/kvndrsslr/sketchybar-app-font";
+    license = lib.licenses.unlicense;
+    maintainers = with lib.maintainers; [ khaneliman ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/smiley-sans/default.nix b/nixpkgs/pkgs/data/fonts/smiley-sans/default.nix
new file mode 100644
index 000000000000..9c26bea80712
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/smiley-sans/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenvNoCC, fetchzip, nix-update-script }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "smiley-sans";
+  version = "1.1.1";
+
+  src = fetchzip {
+    url = "https://github.com/atelier-anchor/smiley-sans/releases/download/v${version}/smiley-sans-v${version}.zip";
+    sha256 = "sha256-/lsAZRHgmx1TMjm2O5Z0IOiHQM8LKJPXcBKZrlXt3RA=";
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm644 -t $out/share/fonts/opentype *.otf
+    install -Dm644 -t $out/share/fonts/truetype *.ttf
+    install -Dm644 -t $out/share/fonts/woff2 *.woff2
+    runHook postInstall
+  '';
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = with lib; {
+    description = "A condensed and oblique Chinese typeface seeking a visual balance between the humanist and the geometric";
+    homepage = "https://atelier-anchor.com/typefaces/smiley-sans/";
+    changelog = "https://github.com/atelier-anchor/smiley-sans/blob/main/CHANGELOG.md";
+    license = licenses.ofl;
+    maintainers = [];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/sniglet/default.nix b/nixpkgs/pkgs/data/fonts/sniglet/default.nix
new file mode 100644
index 000000000000..ab60e9c56f7c
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/sniglet/default.nix
@@ -0,0 +1,33 @@
+{ lib, fetchFromGitHub, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "sniglet";
+  version = "2011-05-25";
+
+  src = fetchFromGitHub {
+    owner = "theleagueof";
+    repo = finalAttrs.pname;
+    rev = "5c6b0860bdd0d8c4f16222e4de3918c384db17c4";
+    hash = "sha256-fLT2hZT9o1Ka30EB/6oWwmalhVJ+swXLRFG99yRWd2c=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/truetype $src/*.ttf
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A fun rounded display face that’s great for headlines";
+    longDescription = ''
+      A rounded display face that’s great for headlines. It comes with a full
+      character set, so you can type in Icelandic or even French!
+    '';
+    homepage = "https://www.theleagueofmoveabletype.com/sniglet";
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ minijackson ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/sorts-mill-goudy/default.nix b/nixpkgs/pkgs/data/fonts/sorts-mill-goudy/default.nix
new file mode 100644
index 000000000000..1edbbd9787ed
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/sorts-mill-goudy/default.nix
@@ -0,0 +1,36 @@
+{ lib, fetchFromGitHub, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "sorts-mill-goudy";
+  version = "2011-05-25";
+
+  src = fetchFromGitHub {
+    owner = "theleagueof";
+    repo = finalAttrs.pname;
+    rev = "06072890c7b05f274215a24f17449655ccb2c8af";
+    hash = "sha256-NEfLBJatUmdUL5gJEimJHZfOd1OtI7pxTN97eWMODyM=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/truetype $src/*.ttf
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A ‘revival’ of Goudy Oldstyle and Italic";
+    longDescription = ''
+      A 'revival' of Goudy Oldstyle and Italic, with features including small
+      capitals (in the roman only), oldstyle and lining figures, superscripts
+      and subscripts, fractions, ligatures, class-based kerning, case-sensitive
+      forms, and capital spacing. There is support for many languages using
+      latin scripts.
+    '';
+    homepage = "https://www.theleagueofmoveabletype.com/sorts-mill-goudy";
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ minijackson ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/source-code-pro/default.nix b/nixpkgs/pkgs/data/fonts/source-code-pro/default.nix
new file mode 100644
index 000000000000..4d3f5155929b
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/source-code-pro/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "source-code-pro";
+  version = "2.042";
+
+  src = fetchzip {
+    url = "https://github.com/adobe-fonts/source-code-pro/releases/download/${version}R-u%2F1.062R-i%2F1.026R-vf/OTF-source-code-pro-${version}R-u_1.062R-i.zip";
+    stripRoot = false;
+    hash = "sha256-+BnfmD+AjObSoVxPvFAqbnMD2j5qf2YmbXGQtXoaiy0=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 OTF/*.otf -t $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Monospaced font family for user interface and coding environments";
+    maintainers = with lib.maintainers; [ relrod ];
+    platforms = with lib.platforms; all;
+    homepage = "https://adobe-fonts.github.io/source-code-pro/";
+    license = lib.licenses.ofl;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/source-han-code-jp/default.nix b/nixpkgs/pkgs/data/fonts/source-han-code-jp/default.nix
new file mode 100644
index 000000000000..2a64680ee19b
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/source-han-code-jp/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "source-han-code-jp";
+  version = "2.012";
+
+  src = fetchzip {
+    url = "https://github.com/adobe-fonts/${pname}/archive/${version}R.zip";
+    hash = "sha256-ljO/1/CaE9Yj+AN5xxlIr30/nV/axGQPO0fGACAZGCQ=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm444 OTF/*.otf -t $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A monospaced Latin font suitable for coding";
+    maintainers = with lib.maintainers; [ mt-caret ];
+    platforms = with lib.platforms; all;
+    homepage = "https://blogs.adobe.com/CCJKType/2015/06/source-han-code-jp.html";
+    license = lib.licenses.ofl;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/source-han/default.nix b/nixpkgs/pkgs/data/fonts/source-han/default.nix
new file mode 100644
index 000000000000..573cfd6c5b94
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/source-han/default.nix
@@ -0,0 +1,133 @@
+{ lib
+, stdenvNoCC
+, fetchurl
+, unzip
+}:
+
+let
+  makeSuperOTC =
+    { family
+    , description
+    , rev
+    , hash
+    , zip ? ""
+    , prefix ? ""
+    }:
+    let
+      Family =
+        lib.toUpper (lib.substring 0 1 family) +
+        lib.substring 1 (lib.stringLength family) family;
+    in
+    stdenvNoCC.mkDerivation rec {
+      pname = "source-han-${family}";
+      version = lib.removeSuffix "R" rev;
+
+      src = fetchurl {
+        url = "https://github.com/adobe-fonts/source-han-${family}/releases/download/${rev}/${prefix}SourceHan${Family}.ttc${zip}";
+        inherit hash;
+      };
+
+      nativeBuildInputs = lib.optionals (zip == ".zip") [ unzip ];
+
+      unpackPhase = lib.optionalString (zip == "") ''
+        cp $src SourceHan${Family}.ttc${zip}
+      '' + lib.optionalString (zip == ".zip") ''
+        unzip $src
+      '';
+
+      installPhase = ''
+        runHook preInstall
+
+        install -Dm444 *.ttc -t $out/share/fonts/opentype/${pname}
+
+        runHook postInstall
+      '';
+
+      meta = {
+        description = "An open source Pan-CJK ${description} typeface";
+        homepage = "https://github.com/adobe-fonts/source-han-${family}";
+        license = lib.licenses.ofl;
+        maintainers = with lib.maintainers; [ taku0 emily ];
+      };
+    };
+
+  makeVariable =
+    { family
+    , version
+    , hash
+    , format
+    }:
+    let
+      Family =
+        lib.toUpper (lib.substring 0 1 family) +
+        lib.substring 1 (lib.stringLength family) family;
+    in
+    fetchurl {
+      pname = "source-han-${family}-vf-${format}";
+      inherit version hash;
+      url = "https://raw.githubusercontent.com/adobe-fonts/source-han-${family}/${version}R/Variable/OTC/SourceHan${Family}-VF.${format}.ttc";
+      recursiveHash = true;
+      downloadToTemp = true;
+      postFetch = "install -Dm444 $downloadedFile $out/share/fonts/variable/SourceHan${Family}-VF.${format}.ttc";
+
+      meta = {
+        description = "An open source Pan-CJK ${Family} typeface";
+        homepage = "https://github.com/adobe-fonts/source-han-${family}";
+        license = lib.licenses.ofl;
+        maintainers = with lib.maintainers; [ taku0 emily ];
+      };
+    };
+in
+{
+  sans = makeSuperOTC {
+    family = "sans";
+    description = "sans-serif";
+    rev = "2.004R";
+    hash = "sha256-b1kRiprdpaf+Tp5rtTgwn34dPFQR+anTKvMqeVAbfk8=";
+    zip = ".zip";
+  };
+
+  serif = makeSuperOTC {
+    family = "serif";
+    description = "serif";
+    rev = "2.001R";
+    hash = "sha256-ULdrtPLtzsgfZEHWkr4ebC/FSROHBWJJVD+PzdIJ6Og=";
+    zip = ".zip";
+    prefix = "01_";
+  };
+
+  mono = makeSuperOTC {
+    family = "mono";
+    description = "monospaced";
+    rev = "1.002";
+    hash = "sha256-DBkkSN6QhI8R64M2h2iDqaNtxluJZeSJYAz8x6ZzWME=";
+  };
+
+  sans-vf-otf = makeVariable {
+    family = "sans";
+    version = "2.004";
+    hash = "sha256-V7PE09c7h4RDS8Ij4PSI36Gy+LM+PVDi73Rcs+4DfHo=";
+    format = "otf";
+  };
+
+  sans-vf-ttf = makeVariable {
+    family = "sans";
+    version = "2.004";
+    hash = "sha256-mXTG/d30gUxzxkJpaH4vOawRXMSxxTXlHCvHEsfGqbc=";
+    format = "ttf";
+  };
+
+  serif-vf-otf = makeVariable {
+    family = "serif";
+    version = "2.002";
+    hash = "sha256-8sD4bU6w7HBm4vBuPAjcjpxN2rtEJugAw+X0bAOcmjA=";
+    format = "otf";
+  };
+
+  serif-vf-ttf = makeVariable {
+    family = "serif";
+    version = "2.002";
+    hash = "sha256-dmTZFRsD55WCOg2+sqd8bkmTSnSNn5xUYf0PgzIvzww=";
+    format = "ttf";
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/source-sans-pro/default.nix b/nixpkgs/pkgs/data/fonts/source-sans-pro/default.nix
new file mode 100644
index 000000000000..2a2d2c70f289
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/source-sans-pro/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+# Source Sans Pro got renamed to Source Sans 3 (see
+# https://github.com/adobe-fonts/source-sans/issues/192). This is the
+# last version named "Pro". It is useful for backward compatibility
+# with older documents/templates/etc.
+
+stdenvNoCC.mkDerivation rec {
+  name = "source-sans-pro-${version}";
+  version = "3.006";
+
+  src = fetchzip {
+    url = "https://github.com/adobe-fonts/source-sans/archive/${version}R.zip";
+    hash = "sha256-1Savijgq3INuUN89MR0t748HOuGseXVw5Kd4hYwuVas=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm444 OTF/*.otf -t $out/share/fonts/opentype
+    install -Dm444 TTF/*.ttf -t $out/share/fonts/truetype
+    install -Dm444 VAR/*.otf -t $out/share/fonts/variable
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://adobe-fonts.github.io/source-sans/";
+    description = "Sans serif font family for user interface environments";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ ttuegel ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/source-sans/default.nix b/nixpkgs/pkgs/data/fonts/source-sans/default.nix
new file mode 100644
index 000000000000..a3e2d4309066
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/source-sans/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "source-sans";
+  version = "3.052";
+
+  src = fetchzip {
+    url = "https://github.com/adobe-fonts/source-sans/archive/${version}R.zip";
+    hash = "sha256-yzbYy/ZS1GGlgJW+ARVWF4tjFqmMq7x+YqSQnojtQBs=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm444 OTF/*.otf -t $out/share/fonts/opentype
+    install -Dm444 TTF/*.ttf -t $out/share/fonts/truetype
+    install -Dm444 VF/*.otf -t $out/share/fonts/variable
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://adobe-fonts.github.io/source-sans/";
+    description = "Sans serif font family for user interface environments";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ ttuegel ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/source-serif-pro/default.nix b/nixpkgs/pkgs/data/fonts/source-serif-pro/default.nix
new file mode 100644
index 000000000000..698694faf507
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/source-serif-pro/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+# Source Serif Pro got renamed to Source Serif 4 (see
+# https://github.com/adobe-fonts/source-serif/issues/77). This is the
+# last version named "Pro". It is useful for backward compatibility
+# with older documents/templates/etc.
+
+stdenvNoCC.mkDerivation rec {
+  pname = "source-serif-pro";
+  version = "3.001";
+
+  src = fetchzip {
+    url = "https://github.com/adobe-fonts/source-serif/releases/download/${version}R/source-serif-pro-${version}R.zip";
+    hash = "sha256-chXoaPOACtQ7wz/etElXuIJH/yvUsP03WlxeCfqWF/w=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm444 OTF/*.otf -t $out/share/fonts/opentype
+    install -Dm444 TTF/*.ttf -t $out/share/fonts/truetype
+    install -Dm444 VAR/*.otf -t $out/share/fonts/variable
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://adobe-fonts.github.io/source-serif/";
+    description = "Typeface for setting text in many sizes, weights, and languages. Designed to complement Source Sans";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ ttuegel ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/source-serif/default.nix b/nixpkgs/pkgs/data/fonts/source-serif/default.nix
new file mode 100644
index 000000000000..dd129b10faab
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/source-serif/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "source-serif";
+  version = "4.005";
+
+  src = fetchzip {
+    url = "https://github.com/adobe-fonts/source-serif/archive/refs/tags/${version}R.zip";
+    hash = "sha256-djeRJWcKqirkHus52JSeZJXeB7yMTnUXpkPxyzgRC04=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm444 OTF/*.otf -t $out/share/fonts/opentype
+    install -Dm444 TTF/*.ttf -t $out/share/fonts/truetype
+    install -Dm444 VAR/*.otf -t $out/share/fonts/variable
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://adobe-fonts.github.io/source-serif/";
+    description = "Typeface for setting text in many sizes, weights, and languages. Designed to complement Source Sans";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ ttuegel ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/spleen/default.nix b/nixpkgs/pkgs/data/fonts/spleen/default.nix
new file mode 100644
index 000000000000..0c114b176abd
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/spleen/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenvNoCC, fetchurl, xorg }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "spleen";
+  version = "2.0.1";
+
+  src = fetchurl {
+    url = "https://github.com/fcambus/spleen/releases/download/${version}/spleen-${version}.tar.gz";
+    hash = "sha256-N9kJrWaQN9eeNoOVJu9UN2+jcEbHqRWxV+X0DXNJLuA=";
+  };
+
+  nativeBuildInputs = [ xorg.mkfontscale ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    d="$out/share/fonts/misc"
+    install -D -m 644 *.{pcf,bdf,otf} -t "$d"
+    install -D -m 644 *.psfu -t "$out/share/consolefonts"
+    install -m644 fonts.alias-spleen $d/fonts.alias
+
+    # create fonts.dir so NixOS xorg module adds to fp
+    mkfontdir "$d"
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Monospaced bitmap fonts";
+    homepage = "https://www.cambus.net/spleen-monospaced-bitmap-fonts";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/stix-otf/default.nix b/nixpkgs/pkgs/data/fonts/stix-otf/default.nix
new file mode 100644
index 000000000000..c5505b7a7948
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/stix-otf/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "stix-otf";
+  version = "1.1.1";
+
+  src = fetchzip {
+    url = "https://sources.debian.org/src/fonts-stix/1.1.1-4.1/STIXv${version}-word.zip";
+    stripRoot = false;
+    hash = "sha256-M3STue+RPHi8JgZZupV0dVLZYKBiFutbBOlanuKkD08=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 Fonts/STIX-Word/*.otf -t $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://www.stixfonts.org/";
+    description = "Fonts for Scientific and Technical Information eXchange";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.rycee ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/stix-two/default.nix b/nixpkgs/pkgs/data/fonts/stix-two/default.nix
new file mode 100644
index 000000000000..86ceb388f86a
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/stix-two/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "stix-two";
+  version = "2.13";
+
+  src = fetchzip {
+    url = "https://github.com/stipub/stixfonts/raw/v${version}/zipfiles/STIX${builtins.replaceStrings [ "." ] [ "_" ] version}-all.zip";
+    stripRoot = false;
+    hash = "sha256-hfQmrw7HjlhQSA0rVTs84i3j3iMVR0k7tCRBcB6hEpU=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 */*.otf -t $out/share/fonts/opentype
+    install -Dm644 */*.ttf -t $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.stixfonts.org/";
+    description = "Fonts for Scientific and Technical Information eXchange";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.rycee ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/sudo/default.nix b/nixpkgs/pkgs/data/fonts/sudo/default.nix
new file mode 100644
index 000000000000..68b8eae40e2a
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/sudo/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "sudo-font";
+  version = "0.77";
+
+  src = fetchzip {
+    url = "https://github.com/jenskutilek/sudo-font/releases/download/v${version}/sudo.zip";
+    hash = "sha256-xnIDCuCUP8ErUsWTJedWpy4lo77Ji+FO2vO9BRDAmV0=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Font for programmers and command line users";
+    homepage = "https://www.kutilek.de/sudo-font/";
+    changelog = "https://github.com/jenskutilek/sudo-font/raw/v${version}/sudo/FONTLOG.txt";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ dtzWill ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/tai-languages/default.nix b/nixpkgs/pkgs/data/fonts/tai-languages/default.nix
new file mode 100644
index 000000000000..4e4c689b6ac6
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/tai-languages/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+{
+  tai-ahom = stdenvNoCC.mkDerivation rec {
+    pname = "tai-ahom";
+    version = "unstable-2015-07-06";
+
+    src = fetchurl {
+      url = "https://github.com/enabling-languages/tai-languages/raw/b57a3ea4589af69bb8e87c6c4bb7cd367b52f0b7/ahom/.fonts/ttf/.original/AhomUnicode_FromMartin.ttf";
+      hash = "sha256-U1vcVf/VgXhvK1f2Iw2JKkd2EzJgz7KbHAwnUanX8n4=";
+    };
+
+    dontUnpack = true;
+
+    installPhase = ''
+      runHook preInstall
+
+      install -Dm644 $src $out/share/fonts/truetype/AhomUnicode.ttf
+
+      runHook postInstall
+    '';
+
+    meta = with lib; {
+      homepage = "https://github.com/enabling-languages/tai-languages";
+      description = "Unicode-compliant Tai Ahom font";
+      maintainers = with maintainers; [ mathnerd314 ];
+      license = licenses.ofl; # See font metadata
+      platforms = platforms.all;
+    };
+  };
+
+  # TODO: package others (Khamti Shan, Tai Aiton, Tai Phake, and/or Assam Tai)
+
+}
diff --git a/nixpkgs/pkgs/data/fonts/takao/default.nix b/nixpkgs/pkgs/data/fonts/takao/default.nix
new file mode 100644
index 000000000000..353287d4d77b
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/takao/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "takao";
+  version = "00303.01";
+
+  src = fetchurl {
+    url = "mirror://ubuntu/pool/universe/f/fonts-${pname}/fonts-${pname}_${version}.orig.tar.gz";
+    hash = "sha256-0wjHNv1yStp0q9D0WfwjgUYoUKcCrXA5jFO8PEVgq5k=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts
+    cp *.ttf $out/share/fonts
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Japanese TrueType Gothic, P Gothic, Mincho, P Mincho fonts";
+    homepage = "https://launchpad.net/takao-fonts";
+    license = licenses.ipa;
+    maintainers = with lib.maintainers; [ serge ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/tamsyn/default.nix b/nixpkgs/pkgs/data/fonts/tamsyn/default.nix
new file mode 100644
index 000000000000..64955efd62e8
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/tamsyn/default.nix
@@ -0,0 +1,50 @@
+{ lib, stdenv, fetchurl, fontforge, xorg }:
+
+let
+  version = "1.11";
+in stdenv.mkDerivation {
+  pname = "tamsyn-font";
+  inherit version;
+
+  src = fetchurl {
+    url = "http://www.fial.com/~scott/tamsyn-font/download/tamsyn-font-${version}.tar.gz";
+    sha256 = "0kpjzdj8sv5871b8827mjgj9dswk75h94jj5iia2bds18ih1pglp";
+   };
+
+  nativeBuildInputs = [ fontforge xorg.mkfontscale ];
+
+  unpackPhase = ''
+    tar -xzf $src --strip-components=1
+  '';
+
+  postBuild = ''
+    # convert pcf fonts to otb
+    for i in *.pcf; do
+      name=$(basename "$i" .pcf)
+      fontforge -lang=ff -c "Open(\"$i\"); Generate(\"$name.otb\")"
+    done
+
+    # compress pcf fonts
+    gzip -n -9 *.pcf
+  '';
+
+  installPhase = ''
+    install -m 644 -D *.otb *.pcf.gz -t "$out/share/fonts/misc"
+    install -m 644 -D *.psf.gz -t "$out/share/consolefonts"
+    mkfontdir "$out/share/fonts/misc"
+  '';
+
+  meta = with lib; {
+    description = "A monospace bitmap font aimed at programmers";
+    longDescription = ''Tamsyn is a monospace bitmap font, primarily aimed at
+    programmers. It was derived from Gilles Boccon-Gibod's MonteCarlo. Tamsyn
+    font was further inspired by Gohufont, Terminus, Dina, Proggy, Fixedsys, and
+    Consolas.
+    '';
+    homepage = "http://www.fial.com/~scott/tamsyn-font/";
+    downloadPage = "http://www.fial.com/~scott/tamsyn-font/download";
+    license = licenses.free;
+    maintainers = [ maintainers.rps ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/data/fonts/tamzen/default.nix b/nixpkgs/pkgs/data/fonts/tamzen/default.nix
new file mode 100644
index 000000000000..f589455e9811
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/tamzen/default.nix
@@ -0,0 +1,37 @@
+{ fetchFromGitHub, xorg, lib, stdenv }:
+
+stdenv.mkDerivation rec {
+  pname = "tamzen-font";
+  version = "1.11.5";
+
+  src = fetchFromGitHub {
+    owner = "sunaku";
+    repo = "tamzen-font";
+    rev = "Tamzen-${version}";
+    sha256 = "00x5fipzqimglvshhqwycdhaqslbvn3rl06jnswhyxfvz16ymj7s";
+  };
+
+  nativeBuildInputs = [ xorg.mkfontscale ];
+
+  installPhase = ''
+    install -m 644 -D otb/*.otb pcf/*.pcf -t "$out/share/fonts/misc"
+    install -m 644 -D psf/*.psf -t "$out/share/consolefonts"
+    mkfontdir "$out/share/fonts/misc"
+  '';
+
+  meta = with lib; {
+    description = "Bitmapped programming font based on Tamsyn";
+    longDescription = ''
+    Tamzen is a monospace bitmap font. It is programmatically forked
+    from Tamsyn version 1.11, which backports glyphs from older
+    versions while deleting deliberately empty glyphs to allow
+    secondary/fallback fonts to provide real glyphs at those codepoints.
+    Tamzen also has fonts that additionally provide the Powerline
+    symbols.
+    '';
+    homepage = "https://github.com/sunaku/tamzen-font";
+    license = licenses.free;
+    maintainers = with maintainers; [ wishfort36 ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/data/fonts/tempora-lgc/default.nix b/nixpkgs/pkgs/data/fonts/tempora-lgc/default.nix
new file mode 100644
index 000000000000..ecafc9572bd1
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/tempora-lgc/default.nix
@@ -0,0 +1,41 @@
+{lib, stdenv, fetchurl}:
+let
+  srcs = [
+    (fetchurl {
+      url = "http://www.ttfotf.com/download-font/tempora-lgc-unicode-bold-italic.otf";
+      sha256 = "1yfbi62j6gjmzglxz29m6x6lxqpxghcqjjh916qn8in74ba5v0gq";
+    })
+    (fetchurl {
+      url = "http://www.ttfotf.com/download-font/tempora-lgc-unicode-bold.otf";
+      sha256 = "0bfbl1h9h1022km2rg1zwl9lpabhnwdsvzdp0bwmf0wbm62550cp";
+    })
+    (fetchurl {
+      url = "http://www.ttfotf.com/download-font/tempora-lgc-unicode-italic.otf";
+      sha256 = "10m9j4bvr6c4zp691wxm4hvzhph2zlfsxk1nmbsb9vn1i6vfgz04";
+    })
+    (fetchurl {
+      url = "http://www.ttfotf.com/download-font/tempora-lgc-unicode.otf";
+      sha256 = "0iwa8wyydcpjss6d1jy4jibqxpvzph4vmaxwwmndpsqy1fz64y9i";
+    })
+  ];
+  nativeBuildInputs = [
+  ];
+in
+stdenv.mkDerivation {
+  name = "tempora-lgc";
+  inherit nativeBuildInputs;
+  inherit srcs;
+  installPhase = ''
+    mkdir -p "$out/share/fonts/opentype/public"
+    cp ${toString srcs} "$out/share/fonts/opentype/public"
+  '';
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "1kwj31cjgdirqvh6bxs4fnvvr1ppaz6z8w40kvhkivgs69jglmzw";
+
+  meta = {
+    description = "Tempora font";
+    license = lib.licenses.gpl2 ;
+    maintainers = [lib.maintainers.raskin];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/tenderness/default.nix b/nixpkgs/pkgs/data/fonts/tenderness/default.nix
new file mode 100644
index 000000000000..9149c081d493
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/tenderness/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+let
+  majorVersion = "0";
+  minorVersion = "601";
+in
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "tenderness";
+  version = "${majorVersion}.${minorVersion}";
+
+  src = fetchzip {
+    url = "https://dotcolon.net/download/fonts/${finalAttrs.pname}_${majorVersion}${minorVersion}.zip";
+    hash = "sha256-bwJKW+rY7/r2pBCSA6HYlaRMsI/U8UdW2vV4tmYuJww=";
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://dotcolon.net/font/${finalAttrs.pname}/";
+    description = "Serif font designed by Sora Sagano with old-style figures";
+    platforms = platforms.all;
+    maintainers = with maintainers; [ leenaars minijackson ];
+    license = licenses.ofl;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/terminus-font-ttf/default.nix b/nixpkgs/pkgs/data/fonts/terminus-font-ttf/default.nix
new file mode 100644
index 000000000000..2cd5da73d84d
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/terminus-font-ttf/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "terminus-font-ttf";
+  version = "4.49.3";
+
+  src = fetchzip {
+    url = "https://files.ax86.net/terminus-ttf/files/${version}/terminus-ttf-${version}.zip";
+    hash = "sha256-dK7MH4I1RhsIGzcnRA+7f3P5oi9B63RA+uASVDNtxNI=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    for i in *.ttf; do
+      local destname="$(echo "$i" | sed -E 's|-[[:digit:].]+\.ttf$|.ttf|')"
+      install -Dm 644 "$i" "$out/share/fonts/truetype/$destname"
+    done
+
+    install -Dm 644 COPYING "$out/share/doc/terminus-font-ttf/COPYING"
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A clean fixed width TTF font";
+    longDescription = ''
+      Monospaced bitmap font designed for long work with computers
+      (TTF version, mainly for Java applications)
+    '';
+    homepage = "https://files.ax86.net/terminus-ttf";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/terminus-font/SOURCE_DATE_EPOCH-for-otb.patch b/nixpkgs/pkgs/data/fonts/terminus-font/SOURCE_DATE_EPOCH-for-otb.patch
new file mode 100644
index 000000000000..6154b8014759
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/terminus-font/SOURCE_DATE_EPOCH-for-otb.patch
@@ -0,0 +1,83 @@
+From 2f935030ddb834426da1180b768e6b1e71d0824a Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <slyich@gmail.com>
+Date: Sat, 9 Oct 2021 10:17:05 +0100
+Subject: [PATCH] terminus-font: bin/otb1cli.py: add support for
+ SOURCE_DATE_EPOCH
+
+NixOS (and a few other distributions) strive for bit-reproducible
+builds. terminus-font-4.49.1 fails reproducibility test due to
+timestamp embedding into .otb files. diffoscope says that two
+consecutive builds differ at file creation timestamp:
+
+ $ diffoscope '...-terminus-font-4.49.1' '...-terminus-font-4.49.1.check'
+ - ...-terminus-font-4.49.1/share/fonts/terminus/ter-u12b.otb
+ + ...-terminus-font-4.49.1.check/share/fonts/terminus/ter-u12b.otb
+  showttf {}
+ @@ -1,32 +1,32 @@
+  version=1, numtables=12, searchRange=128 entrySel=3 rangeshift=64
+  File Checksum =b1b0afba (should be 0xb1b0afba), diff=0
+  EBDT checksum=5263c696 actual=5263c696 diff=0 offset=204 len=23056
+  EBLC checksum=350f1222 actual=350f1222 diff=0 offset=23260 len=84
+  OS/2 checksum=8b4939dd actual=8b4939dd diff=0 offset=23344 len=96
+  cmap checksum=da4e56f3 actual=da4e56f3 diff=0 offset=23440 len=1220
+  glyf checksum=00000000 actual=00000000 diff=0 offset=24660 len=0
+ -head checksum=1cb1374e actual=9db28c18 diff=8103bb56 offset=24660 len=54
+ +head checksum=1cb528c7 actual=9dae9a9f diff=811bb258 offset=24660 len=54
+  hhea checksum=055706a2 actual=055706a2 diff=0 offset=24716 len=36
+  hmtx checksum=98000000 actual=98000000 diff=0 offset=24752 len=5424
+  loca checksum=00000000 actual=00000000 diff=0 offset=30176 len=2714
+  maxp checksum=058e0003 actual=058e0003 diff=0 offset=32892 len=32
+  name checksum=208d345e actual=208d345e diff=0 offset=32924 len=448
+  post checksum=ffd80056 actual=ffd80056 diff=0 offset=33372 len=32
+
+  HEAD table (at 24660)
+       Version=1
+       fontRevision=1
+ -     checksumAdj=810154ca
+ +     checksumAdj=80f971d8
+       magicNumber=5f0f3cf5 (0x5f0f3cf5, diff=0)
+       flags=20b baseline_at_0 lsb_at_0 ppem_to_int
+       unitsPerEm=1024
+       create[0]=0
+ -      create[1]=dd831dec
+ -     File created: Wed Oct  6 09:33:32 2021
+ +      create[1]=dd870f65
+ +     File created: Sat Oct  9 09:20:37 2021
+
+The change uses SOURCE_DATE_EPOCH environment variable to override
+on-disk timestamps:
+    https://reproducible-builds.org/docs/source-date-epoch/
+---
+ bin/otb1cli.py | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/bin/otb1cli.py b/bin/otb1cli.py
+index 92ab07b..847b570 100644
+--- a/bin/otb1cli.py
++++ b/bin/otb1cli.py
+@@ -17,6 +17,7 @@
+ #
+ 
+ from datetime import datetime, timezone
++import os
+ 
+ import fnutil
+ import fncli
+@@ -81,8 +82,12 @@ def main_program(nonopt, parsed):
+ 			try:
+ 				stat = ifs.fstat()
+ 				if stat:
+-					parsed.created = datetime.fromtimestamp(stat.st_ctime, timezone.utc)
+-					parsed.modified = datetime.fromtimestamp(stat.st_mtime, timezone.utc)
++					# Allow deterministic builds when SOURCE_DATE_EPOCH is set:
++					#  https://reproducible-builds.org/docs/source-date-epoch/
++					ct = int(os.environ.get('SOURCE_DATE_EPOCH', stat.st_ctime))
++					mt = int(os.environ.get('SOURCE_DATE_EPOCH', stat.st_mtime))
++					parsed.created = datetime.fromtimestamp(ct, timezone.utc)
++					parsed.modified = datetime.fromtimestamp(mt, timezone.utc)
+ 			except Exception as ex:
+ 				fnutil.warning(ifs.location(), str(ex))
+ 
+-- 
+2.33.0
+
diff --git a/nixpkgs/pkgs/data/fonts/terminus-font/default.nix b/nixpkgs/pkgs/data/fonts/terminus-font/default.nix
new file mode 100644
index 000000000000..5b405c12405f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/terminus-font/default.nix
@@ -0,0 +1,49 @@
+{ lib, stdenv, fetchurl, python3
+, bdftopcf, xorg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "terminus-font";
+  version = "4.49.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/${pname}/${pname}-${lib.versions.majorMinor version}/${pname}-${version}.tar.gz";
+    sha256 = "0yggffiplk22lgqklfmd2c0rw8gwchynjh5kz4bz8yv2h6vw2qfr";
+  };
+
+  patches = [ ./SOURCE_DATE_EPOCH-for-otb.patch ];
+
+  nativeBuildInputs =
+    [ python3 bdftopcf xorg.mkfontscale ];
+
+  enableParallelBuilding = true;
+
+  postPatch = ''
+    substituteInPlace Makefile --replace 'fc-cache' '#fc-cache'
+    substituteInPlace Makefile --replace 'gzip'     'gzip -n'
+  '';
+
+  installTargets = [ "install" "install-otb" "fontdir" ];
+  # fontdir depends on the previous two targets, but this is not known
+  # to make, so we need to disable parallelism:
+  enableParallelInstalling = false;
+
+  meta = with lib; {
+    description = "A clean fixed width font";
+    longDescription = ''
+      Terminus Font is designed for long (8 and more hours per day) work
+      with computers. Version 4.30 contains 850 characters, covers about
+      120 language sets and supports ISO8859-1/2/5/7/9/13/15/16,
+      Paratype-PT154/PT254, KOI8-R/U/E/F, Esperanto, many IBM, Windows and
+      Macintosh code pages, as well as the IBM VGA, vt100 and xterm
+      pseudographic characters.
+
+      The sizes present are 6x12, 8x14, 8x16, 10x20, 11x22, 12x24, 14x28 and
+      16x32. The styles are normal and bold (except for 6x12), plus
+      EGA/VGA-bold for 8x14 and 8x16.
+    '';
+    homepage = "https://terminus-font.sourceforge.net/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ astsmtl ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/termsyn/default.nix b/nixpkgs/pkgs/data/fonts/termsyn/default.nix
new file mode 100644
index 000000000000..50450a04e2d8
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/termsyn/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenv, fetchurl, mkfontscale }:
+
+stdenv.mkDerivation rec {
+  pname = "termsyn";
+  version = "1.8.7";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/termsyn/termsyn-${version}.tar.gz";
+    sha256 = "15vsmc3nmzl0pkgdpr2993da7p38fiw2rvcg01pwldzmpqrmkpn6";
+  };
+
+  nativeBuildInputs = [ mkfontscale ];
+
+  installPhase = ''
+    install -m 644 -D *.pcf -t "$out/share/fonts"
+    install -m 644 -D *.psfu -t "$out/share/kbd/consolefonts"
+    mkfontdir "$out/share/fonts"
+  '';
+
+  meta = with lib; {
+    description = "Monospaced font based on terminus and tamsyn";
+    homepage = "https://sourceforge.net/projects/termsyn/";
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [ sophrosyne ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/tewi/default.nix b/nixpkgs/pkgs/data/fonts/tewi/default.nix
new file mode 100644
index 000000000000..3e68042631c7
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/tewi/default.nix
@@ -0,0 +1,59 @@
+{ lib, stdenv, fetchFromGitHub, python3
+, bdftopcf, xorg
+, libfaketime,
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tewi-font";
+  version = "2.0.2";
+
+  src = fetchFromGitHub {
+    owner  = "lucy";
+    repo   = pname;
+    rev    = version;
+    sha256 = "1axv9bv10xlcmgfyjh3z5kn5fkg3m6n1kskcs5hvlmyb6m1zk91j";
+  };
+
+  nativeBuildInputs =
+    [ python3 bdftopcf xorg.mkfontscale
+      libfaketime xorg.fonttosfnt
+    ];
+
+  postPatch = ''
+    # make gzip deterministic
+    sed 's/gzip -9/gzip -9 -n/g' -i Makefile
+
+    # fix python not found
+    patchShebangs scripts/merge
+  '';
+
+  postBuild = ''
+    # convert bdf fonts to otb
+    for i in *.bdf; do
+      name=$(basename "$i" .bdf)
+      faketime -f "1970-01-01 00:00:01" \
+      fonttosfnt -v -o "$name.otb" "$i"
+    done
+  '';
+
+  installPhase = ''
+    fontDir="$out/share/fonts/misc"
+    install -m 644 -D *.otb out/* -t "$fontDir"
+    mkfontdir "$fontDir"
+  '';
+
+  meta = with lib; {
+    description = "A nice bitmap font, readable even at small sizes";
+    longDescription = ''
+      Tewi is a bitmap font, readable even at very small font sizes. This is
+      particularily useful while programming, to fit a lot of code on your
+      screen.
+    '';
+    homepage = "https://github.com/lucy/tewi-font";
+    license = {
+      fullName = "GNU General Public License with a font exception";
+      url = "https://www.gnu.org/licenses/gpl-faq.html#FontException";
+    };
+    maintainers = [ maintainers.fro_ozen ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/tex-gyre-math/default.nix b/nixpkgs/pkgs/data/fonts/tex-gyre-math/default.nix
new file mode 100644
index 000000000000..95038d3f9cfe
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/tex-gyre-math/default.nix
@@ -0,0 +1,67 @@
+{ lib, stdenv, fetchzip }:
+
+let
+  variants = {
+    bonum = {
+      displayName = "Bonum";
+      version = "1.005";
+      sha256 = "1b6x7siypyxp1lhq7xxdqafwbn6p2p3xm3jb38q999sv8cgslxz8";
+      outputHash = "1zjaxkzidqmxakh9d61n0by9mi8hrmir45jppjj6hzwhm3rvknff";
+    };
+    pagella = {
+      displayName = "Pagella";
+      version = "1.632";
+      sha256 = "0f4cgq9w0lc1fbcbfqiv19mdhivbsscl13jmb0ln685641ci2sjr";
+      outputHash = "0wz2n1dpx9b8a0qgqy8vl712fxhi87mhcda281xaad62chndwf6k";
+    };
+    schola = {
+      displayName = "Schola";
+      version = "1.533";
+      sha256 = "0caqgkz7gz700h5a1mai0gq8hv7skrgs5nnrs1f7zw1mb9g53ya9";
+      outputHash = "0jk4bpxki95a9lmfj4cgpnv1jwlkh8qixbkf498n1x7hkaz03f5n";
+    };
+    termes = {
+      displayName = "Termes";
+      version = "1.543";
+      sha256 = "10ayqfpryfn1l35hy0vwyjzw3a6mfsnzgf78vsnccgk2gz1g9vhz";
+      outputHash = "0pa433cgshlypbyrrlp3qq0wg972rngcp37pr8pxdfshgz13q1mm";
+    };
+  };
+
+  mkVariant = variant: {displayName, version, sha256, outputHash}:
+    let dotless_version = builtins.replaceStrings ["."] [""] version; in
+    stdenv.mkDerivation rec {
+      name = "tex-gyre-${variant}-math-${version}";
+      inherit version;
+
+      src = fetchzip {
+        url = "http://www.gust.org.pl/projects/e-foundry/tg-math/download/texgyre${variant}-math-${dotless_version}.zip";
+        inherit sha256;
+      };
+
+      installPhase = ''
+        install -m444 -Dt $out/share/fonts/opentype opentype/*.otf
+        install -m444 -Dt $out/share/doc/${name}    doc/*.txt
+      '';
+
+      outputHashAlgo = "sha256";
+      outputHashMode = "recursive";
+      inherit outputHash;
+
+      meta = with lib; {
+        longDescription = ''
+          TeX Gyre ${displayName} Math is a math companion for the TeX Gyre
+          ${displayName} family of fonts (see
+          http://www.gust.org.pl/projects/e-foundry/tex-gyre/) in the OpenType format.
+        '';
+        homepage = "http://www.gust.org.pl/projects/e-foundry/tg-math";
+        # "The TeX Gyre Math fonts are licensed under the GUST Font License (GFL),
+        # which is a free license, legally equivalent to the LaTeX Project Public
+        # License (LPPL), version 1.3c or later." - GUST website
+        license = licenses.lppl13c;
+        maintainers = with maintainers; [ siddharthist ];
+        platforms = platforms.all;
+      };
+    };
+in
+  lib.mapAttrs mkVariant variants
diff --git a/nixpkgs/pkgs/data/fonts/tex-gyre/default.nix b/nixpkgs/pkgs/data/fonts/tex-gyre/default.nix
new file mode 100644
index 000000000000..c0ec9ee75202
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/tex-gyre/default.nix
@@ -0,0 +1,84 @@
+{ lib, stdenv, fetchzip }:
+
+let
+  mkVariant = variant: { version, abbreviation, sha256, outputHash }: stdenv.mkDerivation {
+    name = "tex-gyre-${variant}-${version}";
+    inherit version;
+
+    src = fetchzip {
+      url = "http://www.gust.org.pl/projects/e-foundry/tex-gyre/${variant}/${abbreviation}${version}otf.zip";
+      stripRoot = false;
+      inherit sha256;
+    };
+
+    installPhase = ''
+      mkdir -p $out/share/fonts/opentype/
+      # Pagella & Adventor are not flat archives
+      test -d "${abbreviation}${version}otf" && cd "${abbreviation}${version}otf"
+      cp -v *.otf $out/share/fonts/opentype/
+    '';
+
+    outputHashAlgo = "sha256";
+    outputHashMode = "recursive";
+    inherit outputHash;
+
+    meta = with lib; {
+      homepage = "http://www.gust.org.pl/projects/e-foundry/tex-gyre";
+      # "The TeX Gyre fonts are licensed under the GUST Font License (GFL),
+      # which is a free license, legally equivalent to the LaTeX Project Public
+      # License (LPPL), version 1.3c or later." - GUST website
+      license = licenses.lppl13c;
+      maintainers = with maintainers; [ ];
+      platforms = platforms.all;
+    };
+  };
+in lib.mapAttrs mkVariant {
+  adventor = {
+    version = "2_501";
+    sha256 = "0qjg3x0adfppyx3x33cm07ww9i9sl88xaq07m7wfip8rmyp567fn";
+    outputHash = "117h6f02m1r54b4f1a98q5kkjchl5pv9ibm1jla6xrzhk2pchb27";
+    abbreviation = "qag";
+  };
+  bonum = {
+    version = "2.004";
+    sha256 = "0qbrs98knx4h0b297c5n3vav4mkal1a95ai2dzmdc10pghfzl8vv";
+    outputHash = "0bid8gzwz50ylmm8jyqf9s4nfvy6cp1x34wbyrh4gyk1ki6hf3z1";
+    abbreviation = "qbk";
+  };
+  chorus = {
+    version = "2.003";
+    sha256 = "1b0zak27fzmapwbf2jasvsd95vhnqyc92n985d1lc1ivwja1zgfa";
+    outputHash = "0fqifd45c1ys6y98b66lmldfbv7wjb2414fs9swicv4n7xvl3cp1";
+    abbreviation = "qzc";
+  };
+  cursor = {
+    version = "2.004";
+    sha256 = "0ck3jm33bk2xsxp5d2irzd3j24zb49f0gnjvd1nikg1ivk8w85ng";
+    outputHash = "0i76835xqlkrnlx303mx63m0f4899j056c2ag2fl6p9qk8s4rskp";
+    abbreviation = "qcr";
+  };
+  heros = {
+    version = "2.004";
+    sha256 = "1fj2srxxf6ap913y5yd3dn4jzg828j7381gifs39nm5lnzmgw78y";
+    outputHash = "16y76ab46fxm9k8wfmwx4w0cl96yrmjywz587lyr08s0agp1v3kf";
+    abbreviation = "qhv";
+  };
+  pagella = {
+    version ="2_501";
+    sha256 = "1kccaxs3vk93la2pz4nv05hx1x3diyla49cz4l33zifdcp2zgg9d";
+    outputHash = "1nnjsgplimh29502pkd19rvfg93x31svxxmx4x7h51njrx1j8qa8";
+    abbreviation = "qpl";
+  };
+  schola = {
+    version = "2.005";
+    sha256 = "05z3gk4mm0sa7wwjcv31j2xlzqhwhcncpamn0kn9y0221cdknyp8";
+    outputHash = "1yqq1ngcylhldrh1v35l439k72szq9m4gx6g0wh235fk65chb2bm";
+    abbreviation = "qcs";
+  };
+  termes = {
+    version = "2.004";
+    sha256 = "1aq3yqbgkc3z20dkcqyhicsyq0afbgg4l397z96sd8a16jyz2x8k";
+    outputHash = "1igw821m601h8937pix6yish4d8fxmz3h4j9hripf41bxsiafzzg";
+    abbreviation = "qtm";
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/the-neue-black/default.nix b/nixpkgs/pkgs/data/fonts/the-neue-black/default.nix
new file mode 100644
index 000000000000..3288925464fe
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/the-neue-black/default.nix
@@ -0,0 +1,33 @@
+{ lib, fetchzip, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "the-neue-black";
+  version = "1.007";
+
+  src = fetchzip {
+    url = "https://github.com/theleagueof/the-neue-black/releases/download/${finalAttrs.version}/TheNeueBlack-${finalAttrs.version}.tar.xz";
+    hash = "sha256-AsB6w1000xdl+pOPDXqqzQhru1T/VD0hIJ4gFec7mU4=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/truetype $src/static/TTF/*.ttf
+    install -D -m444 -t $out/share/fonts/opentype $src/static/OTF/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Tré Seals’ first open-source font, a typeface based on the Chicago Freedom Movement";
+    longDescription = ''
+      The open-source release of The Neue Black is in partnership with designer
+      Tré Seals of Vocal Type Co. The Neue Black is a display sans serif with a
+      robust character set that has over 25 ligatures and various inktrap
+      alternates.
+    '';
+    homepage = "https://www.theleagueofmoveabletype.com/the-neue-black";
+    license = lib.licenses.ofl;
+    maintainers = with lib.maintainers; [ minijackson ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/theano/default.nix b/nixpkgs/pkgs/data/fonts/theano/default.nix
new file mode 100644
index 000000000000..3a3107e13666
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/theano/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "theano";
+  version = "2.0";
+
+  src = fetchzip {
+    url = "https://github.com/akryukov/theano/releases/download/v${version}/theano-${version}.otf.zip";
+    stripRoot = false;
+    hash = "sha256-9wnwHcRHB+AToOvGwZSXvHkQ8hqMd7Sdl26Ty/IwbPw=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/opentype
+    mkdir -p $out/share/doc/${pname}-${version}
+    cp *.otf $out/share/fonts/opentype
+    cp *.txt $out/share/doc/${pname}-${version}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/akryukov/theano";
+    description = "An old-style font designed from historic samples";
+    maintainers = with maintainers; [ raskin rycee ];
+    license = licenses.ofl;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/tibetan-machine/default.nix b/nixpkgs/pkgs/data/fonts/tibetan-machine/default.nix
new file mode 100644
index 000000000000..4731bfcd365d
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/tibetan-machine/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "tibetan-machine";
+  version = "1.901b";
+
+  src = fetchurl {
+    url = "mirror://debian/pool/main/f/fonts-${pname}/fonts-${pname}_${version}.orig.tar.bz2";
+    hash = "sha256-c/1Sgv7xKHpsJGjY9ZY2qOJHShGHL1robvphFNJOt5w=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts
+    cp *.ttf $out/share/fonts
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Tibetan Machine - an OpenType Tibetan, Dzongkha and Ladakhi font";
+    license = licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ serge ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/times-newer-roman/default.nix b/nixpkgs/pkgs/data/fonts/times-newer-roman/default.nix
new file mode 100644
index 000000000000..840e75c710b3
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/times-newer-roman/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation {
+  pname = "times-newer-roman";
+  version = "unstable-2018-09-11";
+
+  src = fetchzip {
+    url = "https://web.archive.org/web/20210609022835/https://timesnewerroman.com/assets/TimesNewerRoman.zip";
+    stripRoot = false;
+    hash = "sha256-wO4rxyJNQyhRLpswCYKXdeiXy5G+iWyxulYCHZb60QM=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/opentype
+    cp *.otf $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A font that looks just like Times New Roman, except each character is 5-10% wider";
+    homepage = "https://timesnewerroman.com/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/tipa/default.nix b/nixpkgs/pkgs/data/fonts/tipa/default.nix
new file mode 100644
index 000000000000..a0cc7106afe6
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/tipa/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "tipa";
+  version = "1.3";
+
+  src = fetchurl {
+    url = "mirror://debian/pool/main/t/tipa/${pname}_${version}.orig.tar.gz";
+    sha256 = "1q1sisxdcd2zd9b7mnagr2mxf9v3n1r4s5892zx5ly4r0niyya9m";
+  };
+
+  installPhase = ''
+    export PREFIX="$out/texmf-dist"
+    mkdir -p "$PREFIX" "$out/share"
+    make install PREFIX="$PREFIX"
+
+    ln -s -r $out/texmf* $out/share/
+  '';
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "1g2cclykr6ax584rlcri8w2h385n624sgfx2fm45r0cwkg1p77h2";
+
+  meta = {
+    description = "Phonetic font for TeX";
+    license = lib.licenses.lppl13c;
+  };
+}
+
+
diff --git a/nixpkgs/pkgs/data/fonts/tlwg/default.nix b/nixpkgs/pkgs/data/fonts/tlwg/default.nix
new file mode 100644
index 000000000000..4b0f780a38b5
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/tlwg/default.nix
@@ -0,0 +1,24 @@
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, autoconf-archive, fontforge }:
+
+stdenv.mkDerivation rec {
+  pname = "tlwg";
+  version = "0.7.3";
+
+  src = fetchFromGitHub {
+    owner = "tlwg";
+    repo = "fonts-tlwg";
+    rev = "v${version}";
+    sha256 = "hWiH5KJnYTdcrm+Kzn9HUQry8ry3SKzjA6/0536kCLQ=";
+  };
+
+  nativeBuildInputs = [ autoreconfHook autoconf-archive ];
+
+  buildInputs = [ fontforge ];
+
+  meta = with lib; {
+    description = "A collection of Thai scalable fonts available under free licenses";
+    homepage = "https://linux.thai.net/projects/fonts-tlwg";
+    license = with licenses; [ gpl2 publicDomain lppl13c free ];
+    maintainers = [ maintainers.yrashk ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/tt2020/default.nix b/nixpkgs/pkgs/data/fonts/tt2020/default.nix
new file mode 100644
index 000000000000..63b4e1834a3b
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/tt2020/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "TT2020";
+  version = "0.2.1";
+
+  src = fetchFromGitHub {
+    owner = "ctrlcctrlv";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-eAJzaookHcQ/7QNq/HUKA/O2liyKynJNdo6QuZ1Bv6k=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 -t $out/share/fonts/truetype dist/*.ttf
+    install -Dm644 -t $out/share/fonts/woff2 dist/*.woff2
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "An advanced, open source, hyperrealistic, multilingual typewriter font for a new decade";
+    homepage = "https://ctrlcctrlv.github.io/TT2020";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ sikmir ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/ttf-bitstream-vera/default.nix b/nixpkgs/pkgs/data/fonts/ttf-bitstream-vera/default.nix
new file mode 100644
index 000000000000..e71888969f61
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ttf-bitstream-vera/default.nix
@@ -0,0 +1,21 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "ttf-bitstream-vera";
+  version = "1.10";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    hash = "sha256-21sn33u7MYA269t1rNPpjxvW62YI+3CmfUeM0kPReNw=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/truetype *.ttf
+
+    runHook postInstall
+  '';
+
+  meta = { };
+}
diff --git a/nixpkgs/pkgs/data/fonts/ttf-envy-code-r/default.nix b/nixpkgs/pkgs/data/fonts/ttf-envy-code-r/default.nix
new file mode 100644
index 000000000000..673d946a1e9a
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ttf-envy-code-r/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "ttf-envy-code-r";
+  version = "PR7";
+
+  src = fetchzip {
+    url = "http://download.damieng.com/fonts/original/EnvyCodeR-${version}.zip";
+    hash = "sha256-pJqC/sbNjxEwbVf2CVoXMBI5zvT3DqzRlKSqFT8I2sM=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+    install -Dm644 *.txt -t $out/share/doc/${pname}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://damieng.com/blog/tag/envy-code-r";
+    description = "Free scalable coding font by DamienG";
+    license = licenses.unfree;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/ttf-tw-moe/default.nix b/nixpkgs/pkgs/data/fonts/ttf-tw-moe/default.nix
new file mode 100644
index 000000000000..85b2ec1ce787
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ttf-tw-moe/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "ttf-tw-moe";
+  version = "2020-11-14";
+
+  src = fetchzip {
+    url = "https://github.com/Jiehong/TW-fonts/archive/${version}.zip";
+    hash = "sha256-9gy8xO93ViIPmpg1du0DbXVCR2FowourLH8nP9d6HK0=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttf -t $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://www.moe.gov.tw/";
+    description = "Set of KAI and SONG fonts from the Ministry of Education of Taiwan";
+    version = version;
+    longDescription = ''
+      Installs 2 TTF fonts: MOESongUN and TW-MOE-Std-Kai.
+      Both are provided by the Ministry of Education of Taiwan; each character's shape
+      closely follows the official recommendation, and can be used as for teaching purposes.
+    '';
+    license = licenses.cc-by-nd-30;
+    maintainers = [ maintainers.jiehong ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/twemoji-color-font/default.nix b/nixpkgs/pkgs/data/fonts/twemoji-color-font/default.nix
new file mode 100644
index 000000000000..2641fc1bc940
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/twemoji-color-font/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, stdenv
+, fetchurl
+}:
+
+stdenv.mkDerivation rec {
+  pname = "twemoji-color-font";
+  version = "14.0.2";
+
+  # We fetch the prebuilt font because building it takes 1.5 hours on hydra.
+  # Relevant issue: https://github.com/NixOS/nixpkgs/issues/97871
+  src = fetchurl {
+    url = "https://github.com/eosrei/twemoji-color-font/releases/download/v${version}/TwitterColorEmoji-SVGinOT-Linux-${version}.tar.gz";
+    sha256 = "sha256-aCbiHqCNxd8myIeuTlYEaYfg9JCd+MAsc94FcUoDU8E=";
+  };
+
+  dontBuild = true;
+
+  installPhase = ''
+    install -Dm755 TwitterColorEmoji-SVGinOT.ttf $out/share/fonts/truetype/TwitterColorEmoji-SVGinOT.ttf
+    install -Dm644 fontconfig/46-twemoji-color.conf $out/etc/fonts/conf.d/46-twemoji-color.conf
+  '';
+
+  meta = with lib; {
+    description = "Color emoji SVGinOT font using Twitter Unicode 10 emoji with diversity and country flags";
+    longDescription = ''
+      A color and B&W emoji SVGinOT font built from the Twitter Emoji for
+      Everyone artwork with support for ZWJ, skin tone diversity and country
+      flags.
+
+      The font works in all operating systems, but will currently only show
+      color emoji in Firefox, Thunderbird, Photoshop CC 2017, and Windows Edge
+      V38.14393+. This is not a limitation of the font, but of the operating
+      systems and applications. Regular B&W outline emoji are included for
+      backwards/fallback compatibility.
+    '';
+    homepage = "https://github.com/eosrei/twemoji-color-font";
+    downloadPage = "https://github.com/eosrei/twemoji-color-font/releases";
+    license = with licenses; [ cc-by-40 mit ];
+    maintainers = [ maintainers.fgaz ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/twitter-color-emoji/default.nix b/nixpkgs/pkgs/data/fonts/twitter-color-emoji/default.nix
new file mode 100644
index 000000000000..c3e41cca36dd
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/twitter-color-emoji/default.nix
@@ -0,0 +1,116 @@
+# Based upon https://src.fedoraproject.org/rpms/twitter-twemoji-fonts
+# The main difference is that we use “Twitter Color Emoji” name (which is recognized by upstream fontconfig)
+
+{ lib, stdenv
+, fetchFromGitHub
+, cairo
+, imagemagick
+, pkg-config
+, pngquant
+, python3
+, which
+, zopfli
+, noto-fonts-color-emoji
+}:
+
+let
+  version = "14.1.2";
+
+  twemojiSrc = fetchFromGitHub {
+    name = "twemoji";
+    owner = "jdecked";
+    repo = "twemoji";
+    rev = "v${version}";
+    sha256 = "sha256-UQ4PwO4D1kw7JOMf6xSaRBfT822KwrvWBPDmaQjkRVQ=";
+  };
+
+  pythonEnv =
+    python3.withPackages (ps: with ps; [ fonttools nototools ]);
+
+in
+stdenv.mkDerivation rec {
+  pname = "twitter-color-emoji";
+  inherit version;
+
+  srcs = [
+    noto-fonts-color-emoji.src
+    twemojiSrc
+  ];
+
+  sourceRoot = noto-fonts-color-emoji.src.name;
+
+  postUnpack = ''
+    chmod -R +w ${twemojiSrc.name}
+    mv ${twemojiSrc.name} ${noto-fonts-color-emoji.src.name}
+  '';
+
+  nativeBuildInputs = [
+    cairo
+    imagemagick
+    pkg-config
+    pngquant
+    pythonEnv
+    which
+    zopfli
+  ];
+
+  postPatch = let
+    templateSubstitutions = lib.concatStringsSep "; " [
+      "s#Noto Color Emoji#Twitter Color Emoji#"
+      "s#NotoColorEmoji#TwitterColorEmoji#"
+      ''s#Copyright .* Google Inc\.#Twitter, Inc and other contributors.#''
+      "s# Version .*# ${version}#"
+      "s#.*is a trademark.*##"
+      ''s#Google, Inc\.#Twitter, Inc and other contributors#''
+      "s#http://www.google.com/get/noto/#https://twemoji.twitter.com/#"
+      "s#.*is licensed under.*#      Creative Commons Attribution 4.0 International#"
+      "s#http://scripts.sil.org/OFL#http://creativecommons.org/licenses/by/4.0/#"
+    ];
+  in ''
+    ${noto-fonts-color-emoji.postPatch}
+
+    sed '${templateSubstitutions}' NotoColorEmoji.tmpl.ttx.tmpl > TwitterColorEmoji.tmpl.ttx.tmpl
+    pushd ${twemojiSrc.name}/assets/72x72/
+    for png in *.png; do
+        mv $png emoji_u''${png//-/_}
+    done
+    popd
+  '';
+
+  makeFlags = [
+    "EMOJI=TwitterColorEmoji"
+    "EMOJI_SRC_DIR=${twemojiSrc.name}/assets/72x72"
+    "BODY_DIMENSIONS=76x72"
+    # twemoji contains some codepoints noto doesn't like
+    "BYPASS_SEQUENCE_CHECK=True"
+  ];
+
+  enableParallelBuilding = true;
+
+  installPhase = ''
+    install -Dm644 TwitterColorEmoji.ttf $out/share/fonts/truetype/TwitterColorEmoji.ttf
+  '';
+
+  meta = with lib; {
+    description = "Color emoji font with a flat visual style, designed and used by Twitter";
+    longDescription = ''
+      A bitmap color emoji font built from Twitter's Twemoji emoji set
+      with support for ZWJ, skin tone diversity and country flags.
+
+      This font uses Google’s CBDT format making it work on Android and Linux graphical stack.
+    '';
+    homepage = "https://github.com/jdecked/twemoji";
+    # In noto-emoji-fonts source
+    ## noto-emoji code is in ASL 2.0 license
+    ## Emoji fonts are under OFL license
+    ### third_party color-emoji code is in ASL 2.0 license
+    ### third_party region-flags code is in Public Domain license
+    # In twemoji source
+    ## Artwork is Creative Commons Attribution 4.0 International
+    ## Non-artwork is MIT
+    # In Fedora twitter-twemoji-fonts source
+    ## spec files are MIT: https://fedoraproject.org/wiki/Licensing:Main#License_of_Fedora_SPEC_Files
+    license = with licenses; [ asl20 ofl cc-by-40 mit ];
+    maintainers = with maintainers; [ emily ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/u001/default.nix b/nixpkgs/pkgs/data/fonts/u001/default.nix
new file mode 100644
index 000000000000..c50e972a4d69
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/u001/default.nix
@@ -0,0 +1,40 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "u001";
+  version = "unstable-2016-08-01"; # date in the zip file, actual creation date unknown
+
+  src = fetchzip {
+    url = "https://fontlibrary.org/assets/downloads/u001/3ea00b3c0c8fa6ce4373e5766fafd651/u001.zip";
+    sha256 = "sha256-7H32pfr0g68XP5B48VUY99e6fbd7rhH6fEnCKNXWEkU=";
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    TTF_DIR=$out/share/fonts/truetype
+
+    mkdir -p $TTF_DIR
+
+    # We’ll adjust the nonstandard naming convention here
+    cp u001-reg.ttf $TTF_DIR/U001-Regular.ttf
+    cp u001-ita.ttf $TTF_DIR/U001-Italic.ttf
+    cp u001-bol.ttf $TTF_DIR/U001-Bold.ttf
+    cp u001-bolita.ttf $TTF_DIR/U001-BoldItalic.ttf
+    cp u001con-reg.ttf $TTF_DIR/U001Condensed-Regular.ttf
+    cp u001con-ita.ttf $TTF_DIR/U001Condensed-Italic.ttf
+    cp u001con-bol.ttf $TTF_DIR/U001Condensed-Bold.ttf
+    cp u001con-bolita.ttf $TTF_DIR/U001Condensed-BoldItalic.ttf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A Univers-like typeface that comes with GhostPDL made by URW++";
+    homepage = "https://fontlibrary.org/en/font/u001";
+    license = licenses.aladdin;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ toastal ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/ubuntu-font-family/default.nix b/nixpkgs/pkgs/data/fonts/ubuntu-font-family/default.nix
new file mode 100644
index 000000000000..331e34690a5e
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ubuntu-font-family/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "ubuntu-font-family";
+  version = "0.83";
+
+  src = fetchzip {
+    url = "https://assets.ubuntu.com/v1/fad7939b-ubuntu-font-family-${version}.zip";
+    hash = "sha256-FAg1xn8Gcbwmuvqtg9SquSet4oTT9nqE+Izeq7ZMVcA=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/ubuntu
+    mv *.ttf $out/share/fonts/ubuntu
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Ubuntu Font Family";
+    longDescription = "The Ubuntu typeface has been specially
+    created to complement the Ubuntu tone of voice. It has a
+    contemporary style and contains characteristics unique to
+    the Ubuntu brand that convey a precise, reliable and free attitude.";
+    homepage = "http://font.ubuntu.com/";
+    license = licenses.free;
+    platforms = platforms.all;
+    maintainers = [ maintainers.antono ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/ucs-fonts/default.nix b/nixpkgs/pkgs/data/fonts/ucs-fonts/default.nix
new file mode 100644
index 000000000000..e9d78dd03a7c
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ucs-fonts/default.nix
@@ -0,0 +1,61 @@
+{ lib, stdenv, fetchurl, bdftopcf
+, libfaketime, xorg
+}:
+
+stdenv.mkDerivation {
+  pname = "ucs-fonts";
+  version = "20090406";
+
+  srcs = [
+    (fetchurl {
+      url = "http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz";
+      sha256 = "12hgizg25fzmk10wjl0c88x97h3pg5r9ga122s3y28wixz6x2bvh";
+    })
+    (fetchurl {
+      url = "http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts-asian.tar.gz";
+      sha256 = "0ibjy4xpz5j373hsdr8bx99czfpclqmviwwv768j8n7z12z3wa51";
+    })
+    (fetchurl {
+      url = "http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts-75dpi100dpi.tar.gz";
+      sha256 = "08vqr8yb636xa1s28vf3pm22dzkia0gisvsi2svqjqh4kk290pzh";
+    })
+  ];
+
+  sourceRoot = ".";
+
+  nativeBuildInputs =
+    [ bdftopcf libfaketime xorg.fonttosfnt
+      xorg.mkfontscale
+    ];
+
+  buildPhase = ''
+    for i in *.bdf; do
+      name=$(basename "$i" .bdf)
+
+      # generate pcf fonts (for X11 applications)
+      bdftopcf -t "$i" | gzip -n -9 -c > "$name.pcf.gz"
+
+      # generate otb fonts (for GTK applications)
+      faketime -f "1970-01-01 00:00:01" \
+      fonttosfnt -v -o "$name.otb" "$i"
+    done
+  '';
+
+  installPhase = ''
+    install -m 644 -D *.otb *.pcf.gz -t "$out/share/fonts/misc"
+    install -m 644 -D *.bdf -t "$bdf/share/fonts/misc"
+
+    mkfontdir "$out/share/fonts/misc"
+    mkfontdir "$bdf/share/fonts/misc"
+  '';
+
+  outputs = [ "out" "bdf" ];
+
+  meta = with lib; {
+    homepage = "https://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html";
+    description = "Unicode bitmap fonts";
+    license = licenses.publicDomain;
+    maintainers = [ maintainers.raskin ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/ultimate-oldschool-pc-font-pack/default.nix b/nixpkgs/pkgs/data/fonts/ultimate-oldschool-pc-font-pack/default.nix
new file mode 100644
index 000000000000..27933b5b139d
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/ultimate-oldschool-pc-font-pack/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "ultimate-oldschool-pc-font-pack";
+  version = "2.2";
+
+  src = fetchzip {
+    url = "https://int10h.org/oldschool-pc-fonts/download/oldschool_pc_font_pack_v${version}_linux.zip";
+    stripRoot = false;
+    hash = "sha256-54U8tZzvivTSOgmGesj9QbIgkSTm9w4quMhsuEc0Xy4=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp */*.ttf $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "The Ultimate Oldschool PC Font Pack (TTF Fonts)";
+    homepage = "https://int10h.org/oldschool-pc-fonts/";
+    changelog = "https://int10h.org/oldschool-pc-fonts/readme/#history";
+    license = licenses.cc-by-sa-40;
+    maintainers = [ maintainers.endgame ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/undefined-medium/default.nix b/nixpkgs/pkgs/data/fonts/undefined-medium/default.nix
new file mode 100644
index 000000000000..3e3087c6abc8
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/undefined-medium/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "undefined-medium";
+  version = "1.1";
+
+  src = fetchzip {
+    url = "https://github.com/andirueckel/undefined-medium/archive/v1.1.zip";
+    hash = "sha256-iquxt7lo92y4AQZf23Ij5Qzg2U7buL3kGLksQSR6vac=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 fonts/otf/*.otf -t $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://undefined-medium.com/";
+    description = "A pixel grid-based monospace typeface";
+    longDescription = ''
+      undefined medium is a free and open-source pixel grid-based
+      monospace typeface suitable for programming, writing, and
+      whatever else you can think of … it’s pretty undefined.
+    '';
+    license = licenses.ofl;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/unfonts-core/default.nix b/nixpkgs/pkgs/data/fonts/unfonts-core/default.nix
new file mode 100644
index 000000000000..5756a948f698
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/unfonts-core/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "unfonts-core";
+  version = "1.0.2-080608";
+
+  src = fetchurl {
+    url = "https://kldp.net/unfonts/release/2607-un-fonts-core-${version}.tar.gz";
+    hash = "sha256-OwpydPmqt+jw8ZOMAacOFYF2bVG0lLoUVoPzesVXkY4=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/truetype *.ttf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://kldp.net/unfonts/";
+    description = "Korean Hangul typeface collection";
+    longDescription = ''
+      The Un-fonts come from the HLaTeX as type1 fonts in 1998 by Koaunghi Un, he made type1 fonts to use with Korean TeX (HLaTeX) in the late 1990's and released it under the GPL license.
+
+      They were converted to TrueType with the FontForge (PfaEdit) by Won-kyu Park in 2003.
+    '';
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = [ maintainers.ehmry ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/uni-vga/default.nix b/nixpkgs/pkgs/data/fonts/uni-vga/default.nix
new file mode 100644
index 000000000000..1239b1238831
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/uni-vga/default.nix
@@ -0,0 +1,56 @@
+{ lib, stdenv, fetchurl, perl, kbd, bdftopcf
+, libfaketime, xorg
+}:
+
+stdenv.mkDerivation {
+  name = "uni-vga";
+
+  src = fetchurl {
+    url = "http://www.inp.nsk.su/~bolkhov/files/fonts/univga/uni-vga.tgz";
+    sha256 = "05sns8h5yspa7xkl81ri7y1yxf5icgsnl497f3xnaryhx11s2rv6";
+  };
+
+  nativeBuildInputs =
+    [ bdftopcf libfaketime
+      xorg.fonttosfnt xorg.mkfontscale
+    ] ++ lib.optionals stdenv.isLinux [ perl kbd ];
+
+  postPatch = "patchShebangs .";
+
+  buildPhase = ''
+    # convert font to compressed pcf
+    bdftopcf u_vga16.bdf | gzip -c -9 -n  > u_vga16.pcf.gz
+
+    # convert bdf font to otb
+    faketime -f "1970-01-01 00:00:01" \
+    fonttosfnt -v -o u_vga16.otb u_vga16.bdf
+  '' + lib.optionalString stdenv.isLinux ''
+    # convert font to compressed psf
+    ./bdf2psf.pl -s UniCyrX.sfm u_vga16.bdf \
+      | psfaddtable - UniCyrX.sfm - \
+      | gzip -c -9 -n > u_vga16.psf.gz
+  '';
+
+  installPhase = ''
+    # install pcf and otb (for X11 and GTK applications)
+    install -m 644 -D *.otb *.pcf.gz -t "$out/share/fonts"
+    mkfontdir "$out/share/fonts"
+
+    # install bdf font
+    install -m 644 -D *.bdf -t "$bdf/share/fonts"
+    mkfontdir "$bdf/share/fonts"
+
+  '' + lib.optionalString stdenv.isLinux ''
+    # install psf (for linux virtual terminal)
+    install -m 644 -D *.psf.gz -t "$out/share/consolefonts"
+  '';
+
+  outputs = [ "out" "bdf" ];
+
+  meta = with lib; {
+    description = "Unicode VGA font";
+    maintainers = [ maintainers.ftrvxmtrx ];
+    homepage = "http://www.inp.nsk.su/~bolkhov/files/fonts/univga/";
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/unifont/default.nix b/nixpkgs/pkgs/data/fonts/unifont/default.nix
new file mode 100644
index 000000000000..7f2e9a1b158b
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/unifont/default.nix
@@ -0,0 +1,53 @@
+{ lib, stdenv, fetchurl, xorg
+, libfaketime
+}:
+
+stdenv.mkDerivation rec {
+  pname = "unifont";
+  version = "15.1.04";
+
+  otf = fetchurl {
+    url = "mirror://gnu/unifont/${pname}-${version}/${pname}-${version}.otf";
+    hash = "sha256-J8g8ojXDq5nV013zXXi1rEAYQhpCh7G06mV7IpmZbTg=";
+  };
+
+  pcf = fetchurl {
+    url = "mirror://gnu/unifont/${pname}-${version}/${pname}-${version}.pcf.gz";
+    hash = "sha256-XHKP8xx+GvhFYBW03Sambpd2gclKvQUz1JAjIlb59OI=";
+  };
+
+  nativeBuildInputs = [ libfaketime xorg.fonttosfnt xorg.mkfontscale ];
+
+  dontUnpack = true;
+
+  buildPhase =
+    ''
+      # convert pcf font to otb
+      faketime -f "1970-01-01 00:00:01" \
+      fonttosfnt -g 2 -m 2 -v -o "unifont.otb" "${pcf}"
+    '';
+
+  installPhase =
+    ''
+      # install otb fonts
+      install -m 644 -D unifont.otb "$out/share/fonts/unifont.otb"
+      mkfontdir "$out/share/fonts"
+
+      # install pcf and otf fonts
+      install -m 644 -D ${pcf} $out/share/fonts/unifont.pcf.gz
+      install -m 644 -D ${otf} $out/share/fonts/opentype/unifont.otf
+      cd "$out/share/fonts"
+      mkfontdir
+      mkfontscale
+    '';
+
+  meta = with lib; {
+    description = "Unicode font for Base Multilingual Plane";
+    homepage = "https://unifoundry.com/unifont/";
+
+    # Basically GPL2+ with font exception.
+    license = "https://unifoundry.com/LICENSE.txt";
+    maintainers = [ maintainers.rycee maintainers.vrthra ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/unifont_upper/default.nix b/nixpkgs/pkgs/data/fonts/unifont_upper/default.nix
new file mode 100644
index 000000000000..e7820a85842c
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/unifont_upper/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "unifont_upper";
+  version = "15.1.04";
+
+  src = fetchurl {
+    url = "mirror://gnu/unifont/unifont-${version}/${pname}-${version}.otf";
+    hash = "sha256-SUsG2xhrn47zrGpNzRn1g76qyt2vQyH/UBmYtzCD0UA=";
+  };
+
+  dontUnpack = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 $src $out/share/fonts/opentype/unifont_upper.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Unicode font for glyphs above the Unicode Basic Multilingual Plane";
+    homepage = "https://unifoundry.com/unifont/";
+
+    # Basically GPL2+ with font exception.
+    license = "https://unifoundry.com/LICENSE.txt";
+    maintainers = [ maintainers.mathnerd314 maintainers.vrthra ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/unscii/default.nix b/nixpkgs/pkgs/data/fonts/unscii/default.nix
new file mode 100644
index 000000000000..1b723cd313da
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/unscii/default.nix
@@ -0,0 +1,71 @@
+{ lib, stdenv, fetchurl, perl, bdftopcf
+, fontforge, SDL, SDL_image, mkfontscale
+}:
+
+let
+  perlenv = perl.withPackages (p: with p; [
+    TextCharWidth
+  ]);
+in
+stdenv.mkDerivation rec {
+  pname = "unscii";
+  version = "2.1";
+
+  src = fetchurl {
+    url = "http://viznut.fi/${pname}/${pname}-${version}-src.tar.gz";
+    sha256 = "0msvqrq7x36p76a2n5bzkadh95z954ayqa08wxd017g4jpa1a4jd";
+  };
+
+  nativeBuildInputs =
+    [ perlenv
+      bdftopcf fontforge SDL SDL_image
+      mkfontscale
+    ];
+
+  # Fixes shebang -> wrapper problem on Darwin
+  postPatch = ''
+    for perltool in *.pl; do
+      substituteInPlace Makefile \
+        --replace "./$perltool" "${perlenv}/bin/perl ./$perltool"
+    done
+  '';
+
+  makeFlags = [
+    "CC=${stdenv.cc.targetPrefix}cc"
+  ];
+
+  preConfigure = ''
+    patchShebangs .
+  '';
+
+  postBuild = ''
+    # compress pcf fonts
+    gzip -9 -n *.pcf
+  '';
+
+  installPhase = ''
+    # install fonts for use in X11 and GTK applications
+    install -m444 -Dt "$out/share/fonts/misc"     *.pcf.gz
+    install -m444 -Dt "$out/share/fonts/opentype" *.otf
+    mkfontdir   "$out/share/fonts/misc"
+    mkfontscale "$out/share/fonts/opentype"
+
+    # install other formats in $extra
+    install -m444 -Dt "$extra/share/fonts/truetype" *.ttf
+    install -m444 -Dt "$extra/share/fonts/svg"      *.svg
+    install -m444 -Dt "$extra/share/fonts/web"      *.woff
+    install -m444 -Dt "$extra/share/fonts/misc"     *.hex
+    mkfontscale "$extra"/share/fonts/*
+  '';
+
+  outputs = [ "out" "extra" ];
+
+  meta = {
+    description = "Bitmapped character-art-friendly Unicode fonts";
+    # Basically GPL2+ with font exception — because of the Unifont-augmented
+    # version. The reduced version is public domain.
+    license = "http://unifoundry.com/LICENSE.txt";
+    maintainers = [ lib.maintainers.raskin ];
+    homepage = "http://viznut.fi/unscii/";
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/uw-ttyp0/default.nix b/nixpkgs/pkgs/data/fonts/uw-ttyp0/default.nix
new file mode 100644
index 000000000000..f8006516e276
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/uw-ttyp0/default.nix
@@ -0,0 +1,89 @@
+{ lib, stdenv, fetchurl, perl
+, bdftopcf, bdf2psf, xorg
+, targetsDat  ? null
+, variantsDat ? null
+}:
+
+stdenv.mkDerivation rec {
+  pname = "uw-ttyp0";
+  version = "1.3";
+
+  src = fetchurl {
+    url = "https://people.mpi-inf.mpg.de/~uwe/misc/${pname}/${pname}-${version}.tar.gz";
+    sha256 = "1vp053bwv8sr40p3pn4sjaiq570zp7knh99z9ynk30v7ml4cz2i8";
+  };
+
+  # remove for version >1.3
+  patches = [ ./determinism.patch ];
+
+  nativeBuildInputs = [ perl bdftopcf bdf2psf xorg.fonttosfnt xorg.mkfontdir ];
+
+  # configure sizes, encodings and variants
+  preConfigure =
+    (if targetsDat == null
+      then ''
+        cat << EOF > TARGETS.dat
+        SIZES = 11 12 13 14 15 16 17 18 22 \
+        11b 12b 13b 14b 15b 16b 17b 18b 22b 15i 16i 17i 18i
+        ENCODINGS = uni
+        EOF
+      ''
+      else ''cp "${targetsDat}" TARGETS.dat'') +
+    (if variantsDat == null
+      then ''
+        cat << EOF > VARIANTS.dat
+        COPYTO AccStress PApostropheAscii
+        COPYTO PAmComma AccGraveAscii
+        COPYTO Digit0Slashed Digit0
+        EOF
+      ''
+      else ''cp "${variantsDat}" VARIANTS.dat'');
+
+  postBuild = ''
+    # convert bdf fonts to psf
+    build=$(pwd)
+    mkdir {psf,otb}
+    cd ${bdf2psf}/share/bdf2psf
+    for i in $build/genbdf/*.bdf; do
+      name="$(basename $i .bdf)"
+      bdf2psf \
+        --fb "$i" standard.equivalents \
+        ascii.set+useful.set+linux.set 512 \
+        "$build/psf/$name.psf"
+    done
+    cd -
+
+    # convert unicode bdf fonts to otb
+    for i in $build/genbdf/*-uni.bdf; do
+      name="$(basename $i .bdf)"
+      fonttosfnt -v -o "$build/otb/$name.otb" "$i"
+    done
+  '';
+
+  postInstall = ''
+    # install psf fonts
+    fontDir="$out/share/consolefonts"
+    install -m 644 -D psf/*.psf -t "$fontDir"
+
+    # install otb fonts
+    fontDir="$out/share/fonts/X11/misc"
+    install -m 644 -D otb/*.otb -t "$fontDir"
+    mkfontdir "$fontDir"
+  '';
+
+  # Nix with multiple outputs adds several flags
+  # that the ./configure script doesn't understand.
+  configurePhase = ''
+    runHook preConfigure
+    ./configure --prefix="$out"
+    runHook postConfigure
+  '';
+
+  meta = with lib; {
+    description = "Monospace bitmap screen fonts for X11";
+    homepage = "https://people.mpi-inf.mpg.de/~uwe/misc/uw-ttyp0/";
+    license = with licenses; [ free mit ];
+    maintainers = with maintainers; [ rnhmjoj ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/data/fonts/uw-ttyp0/determinism.patch b/nixpkgs/pkgs/data/fonts/uw-ttyp0/determinism.patch
new file mode 100644
index 000000000000..8546ad35933f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/uw-ttyp0/determinism.patch
@@ -0,0 +1,13 @@
+diff --git a/Makefile.in b/Makefile.in
+index b9736cd..5740412 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -76,7 +76,7 @@ bdf : $(bdf)
+ 
+ genpcf/%.pcf.gz : genbdf/%.bdf
+ 	$(BDFTOPCF) $< > $(@:.pcf.gz=.pcf)
+-	gzip -9 -f $(@:.pcf.gz=.pcf)
++	gzip -n -9 -f $(@:.pcf.gz=.pcf)
+ 
+ genbdf/t0-11-uni.bdf : bdf/t0-11.bdf bdf/t0-12.bdf VARIANTS.dat mgl/unicode.mgl
+ 	$(MKSHALLOW) bdf/t0-12.bdf | cat - bdf/t0-11.bdf | $(BDFMANGLE) - VARIANTS.dat mgl/unicode.mgl > $@
diff --git a/nixpkgs/pkgs/data/fonts/vazir-code-font/default.nix b/nixpkgs/pkgs/data/fonts/vazir-code-font/default.nix
new file mode 100644
index 000000000000..6ba69b57feaf
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/vazir-code-font/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "vazir-code-font";
+  version = "1.1.2";
+
+  src = fetchFromGitHub {
+    owner = "rastikerdar";
+    repo = "vazir-code-font";
+    rev = "v${version}";
+    hash = "sha256-iBojse3eHr4ucZtPfpkN+mmO6sEExY8WcAallyPgMsI=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    find . -name '*.ttf' -exec install -m444 -Dt $out/share/fonts/truetype {} \;
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/rastikerdar/vazir-code-font";
+    description = "A Persian (farsi) Monospaced Font for coding";
+    license = licenses.publicDomain;
+    platforms = platforms.all;
+    maintainers = [ maintainers.dearrude ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/vazir-fonts/default.nix b/nixpkgs/pkgs/data/fonts/vazir-fonts/default.nix
new file mode 100644
index 000000000000..d65b270c881f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/vazir-fonts/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "vazir-fonts";
+  version = "33.003";
+
+  src = fetchFromGitHub {
+    owner = "rastikerdar";
+    repo = "vazir-font";
+    rev = "v${version}";
+    hash = "sha256-C1UtfrRFzz0uv/hj8e7huXe4sNd5h7ozVhirWEAyXGg=";
+  };
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    find . -name '*.ttf' -exec install -m444 -Dt $out/share/fonts/truetype {} \;
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/rastikerdar/vazir-font";
+    description = "A Persian (Farsi) Font - قلم (فونت) فارسی وزیر";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/vdrsymbols/default.nix b/nixpkgs/pkgs/data/fonts/vdrsymbols/default.nix
new file mode 100644
index 000000000000..5df82b31cfe5
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/vdrsymbols/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "vdrsymbols";
+  version = "20100612";
+
+  src = fetchurl {
+    url = "http://andreas.vdr-developer.org/fonts/download/${pname}-ttf-${version}.tgz";
+    hash = "sha256-YxB+JcDkta5are+OQyP/WKDL0vllgn0m26bU9mQ3C/Q=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm444 -t "$out/share/fonts/truetype" *.ttf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "DejaVu fonts with additional symbols used by VDR";
+    homepage = "http://andreas.vdr-developer.org/fonts/";
+    platforms = platforms.all;
+    maintainers = with maintainers; [ ck3d ];
+
+    # Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved.
+    # Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
+    # DejaVu changes are in public domain
+    # See https://dejavu-fonts.github.io/License.html for details
+    license = licenses.free;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/vegur/default.nix b/nixpkgs/pkgs/data/fonts/vegur/default.nix
new file mode 100644
index 000000000000..e03f25951b54
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/vegur/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+let
+  majorVersion = "0";
+  minorVersion = "701";
+in
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "vegur";
+  version = "${majorVersion}.${minorVersion}";
+
+  src = fetchzip {
+    url = "https://dotcolon.net/download/fonts/${finalAttrs.pname}_${majorVersion}${minorVersion}.zip";
+    hash = "sha256-sGb3mEb3g15ZiVCxEfAanly8zMUopLOOjw8W4qbXLPA=";
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://dotcolon.net/font/vegur/";
+    description = "A humanist sans serif font";
+    platforms = platforms.all;
+    maintainers = with maintainers; [ minijackson samueldr ];
+    license = licenses.cc0;
+  };
+})
diff --git a/nixpkgs/pkgs/data/fonts/victor-mono/default.nix b/nixpkgs/pkgs/data/fonts/victor-mono/default.nix
new file mode 100644
index 000000000000..5c17ad653ebc
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/victor-mono/default.nix
@@ -0,0 +1,38 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "victor-mono";
+  version = "1.5.5";
+
+  # Upstream prefers we download from the website,
+  # but we really insist on a more versioned resource.
+  # Happily, tagged releases on github contain the same
+  # file `VictorMonoAll.zip` as from the website,
+  # so we extract it from the tagged release.
+  # Both methods produce the same file, but this way
+  # we can safely reason about what version it is.
+  src = fetchzip {
+    url = "https://github.com/rubjo/victor-mono/raw/v${version}/public/VictorMonoAll.zip";
+    stripRoot = false;
+    hash = "sha256-l8XeKE9PtluiazZO0PXfkGCcnm5o+VZdL7NZ6w0tp80=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p "$out/share/fonts/"
+
+    mv OTF $out/share/fonts/opentype
+    mv TTF $out/share/fonts/truetype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Free programming font with cursive italics and ligatures";
+    homepage = "https://rubjo.github.io/victor-mono";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ jpotier dtzWill ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/vista-fonts-chs/default.nix b/nixpkgs/pkgs/data/fonts/vista-fonts-chs/default.nix
new file mode 100644
index 000000000000..66274c667a04
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/vista-fonts-chs/default.nix
@@ -0,0 +1,42 @@
+{ lib, stdenvNoCC, fetchurl, cabextract }:
+
+stdenvNoCC.mkDerivation {
+  pname = "vista-fonts-chs";
+  version = "1";
+
+  src = fetchurl {
+    url = "https://web.archive.org/web/20161221192937if_/http://download.microsoft.com/download/d/6/e/d6e2ff26-5821-4f35-a18b-78c963b1535d/VistaFont_CHS.EXE";
+    # Alternative mirror:
+    # http://www.eeo.cn/download/font/VistaFont_CHS.EXE
+    sha256 = "1qwm30b8aq9piyqv07hv8b5bac9ms40rsdf8pwix5dyk8020i8xi";
+  };
+
+  nativeBuildInputs = [ cabextract ];
+
+  unpackPhase = ''
+    cabextract --lowercase --filter '*.TTF' $src
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype
+    cp *.ttf $out/share/fonts/truetype
+
+    # Set up no-op font configs to override any aliases set up by
+    # other packages.
+    mkdir -p $out/etc/fonts/conf.d
+    substitute ${./no-op.conf} $out/etc/fonts/conf.d/30-msyahei.conf \
+      --subst-var-by fontname "Microsoft YaHei"
+  '';
+
+  meta = {
+    description = "TrueType fonts from Microsoft Windows Vista For Simplified Chinese (Microsoft YaHei)";
+    homepage = "https://www.microsoft.com/typography/fonts/family.aspx?FID=350";
+    license = lib.licenses.unfree;
+    maintainers = [ lib.maintainers.ChengCat ];
+
+    # Set a non-zero priority to allow easy overriding of the
+    # fontconfig configuration files.
+    priority = 5;
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/vista-fonts-chs/no-op.conf b/nixpkgs/pkgs/data/fonts/vista-fonts-chs/no-op.conf
new file mode 100644
index 000000000000..20d1b49d1580
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/vista-fonts-chs/no-op.conf
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+<fontconfig>
+  <!-- This configuation is intentionally left empty in order to
+       override any other font package that may wish to set up an
+       alias for the @fontname@ font. If you actually do
+       want to have the alias then please change the priority of that
+       package; see the Nix manual page for nix-env for details. -->
+</fontconfig>
diff --git a/nixpkgs/pkgs/data/fonts/vista-fonts-cht/default.nix b/nixpkgs/pkgs/data/fonts/vista-fonts-cht/default.nix
new file mode 100644
index 000000000000..78271e2f1e93
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/vista-fonts-cht/default.nix
@@ -0,0 +1,41 @@
+{ lib, stdenvNoCC, fetchurl, cabextract }:
+
+stdenvNoCC.mkDerivation {
+  pname = "vista-fonts-cht";
+  version = "1";
+
+  src = fetchurl {
+    url = "https://download.microsoft.com/download/7/6/b/76bd7a77-be02-47f3-8472-fa1de7eda62f/VistaFont_CHT.EXE";
+    sha256 = "sha256-fSnbbxlMPzbhFSQyKxQaS5paiWji8njK7tS8Eppsj6g=";
+  };
+
+  nativeBuildInputs = [ cabextract ];
+
+  unpackPhase = ''
+    cabextract --lowercase --filter '*.TTF' $src
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype
+    cp *.ttf $out/share/fonts/truetype
+
+    # Set up no-op font configs to override any aliases set up by
+    # other packages.
+    mkdir -p $out/etc/fonts/conf.d
+    substitute ${./no-op.conf} $out/etc/fonts/conf.d/30-msjhenghei.conf \
+      --subst-var-by fontname "Microsoft JhengHei"
+  '';
+
+
+  meta = with lib; {
+    description = "TrueType fonts from Microsoft Windows Vista For Traditional Chinese (Microsoft JhengHei)";
+    homepage = "https://www.microsoft.com/typography/fonts/family.aspx";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ atkinschang ];
+
+    # Set a non-zero priority to allow easy overriding of the
+    # fontconfig configuration files.
+    priority = 5;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/vista-fonts-cht/no-op.conf b/nixpkgs/pkgs/data/fonts/vista-fonts-cht/no-op.conf
new file mode 100644
index 000000000000..3f8a9b9b5444
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/vista-fonts-cht/no-op.conf
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+<fontconfig>
+  <!-- This configuation is intentionally left empty in order to
+       override any other font package that may wish to set up an
+       alias for the Microsoft @fontname@ font. If you actually do
+       want to have the alias then please change the priority of that
+       package; see the Nix manual page for nix-env for details. -->
+</fontconfig>
diff --git a/nixpkgs/pkgs/data/fonts/vista-fonts/default.nix b/nixpkgs/pkgs/data/fonts/vista-fonts/default.nix
new file mode 100644
index 000000000000..fa8308b8c972
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/vista-fonts/default.nix
@@ -0,0 +1,42 @@
+{ lib, stdenvNoCC, fetchurl, cabextract }:
+
+stdenvNoCC.mkDerivation {
+  pname = "vista-fonts";
+  version = "1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/mscorefonts2/cabs/PowerPointViewer.exe";
+    sha256 = "07vhjdw8iip7gxk6wvp4myhvbn9619g10j9qvpbzz4ihima57ry4";
+  };
+
+  nativeBuildInputs = [ cabextract ];
+
+  unpackPhase = ''
+    cabextract --lowercase --filter ppviewer.cab $src
+    cabextract --lowercase --filter '*.TTF' ppviewer.cab
+    cabextract --lowercase --filter '*.TTC' ppviewer.cab
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype
+    cp *.ttf *.ttc $out/share/fonts/truetype
+
+    # Set up no-op font configs to override any aliases set up by
+    # other packages.
+    mkdir -p $out/etc/fonts/conf.d
+    for name in Calibri Cambria Candara Consolas Constantia Corbel ; do
+      substitute ${./no-op.conf} $out/etc/fonts/conf.d/30-''${name,,}.conf \
+        --subst-var-by fontname $name
+    done
+  '';
+
+  meta = {
+    description = "Some TrueType fonts from Microsoft Windows Vista (Calibri, Cambria, Candara, Consolas, Constantia, Corbel)";
+    homepage = "http://www.microsoft.com/typography/ClearTypeFonts.mspx";
+    license = lib.licenses.unfree; # haven't read the EULA, but we probably can't redistribute these files, so...
+
+    # Set a non-zero priority to allow easy overriding of the
+    # fontconfig configuration files.
+    priority = 5;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/vista-fonts/no-op.conf b/nixpkgs/pkgs/data/fonts/vista-fonts/no-op.conf
new file mode 100644
index 000000000000..3f8a9b9b5444
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/vista-fonts/no-op.conf
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+<fontconfig>
+  <!-- This configuation is intentionally left empty in order to
+       override any other font package that may wish to set up an
+       alias for the Microsoft @fontname@ font. If you actually do
+       want to have the alias then please change the priority of that
+       package; see the Nix manual page for nix-env for details. -->
+</fontconfig>
diff --git a/nixpkgs/pkgs/data/fonts/vollkorn/default.nix b/nixpkgs/pkgs/data/fonts/vollkorn/default.nix
new file mode 100644
index 000000000000..deeeac19c939
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/vollkorn/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "vollkorn";
+  version = "4.105";
+
+  src = fetchzip {
+    url = "http://vollkorn-typeface.com/download/vollkorn-${builtins.replaceStrings ["."] ["-"] version}.zip";
+    stripRoot = false;
+    hash = "sha256-oG79GgCwCavbMFAPakza08IPmt13Gwujrkc/NKTai7g=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -pv $out/share/{doc/${pname}-${version},fonts/{opentype,truetype,WOFF,WOFF2}}
+    cp -v {Fontlog,OFL-FAQ,OFL}.txt $out/share/doc/${pname}-${version}/
+    cp -v PS-OTF/*.otf $out/share/fonts/opentype
+    cp -v TTF/*.ttf $out/share/fonts/truetype
+    cp -v WOFF/*.woff $out/share/fonts/WOFF
+    cp -v WOFF2/*.woff2 $out/share/fonts/WOFF2
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://vollkorn-typeface.com/";
+    description = "The free and healthy typeface for bread and butter use";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = [ maintainers.schmittlauch ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/weather-icons/default.nix b/nixpkgs/pkgs/data/fonts/weather-icons/default.nix
new file mode 100644
index 000000000000..00f9cebac121
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/weather-icons/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "weather-icons";
+  version = "2.0.12";
+
+  src = fetchzip {
+    url = "https://github.com/erikflowers/weather-icons/archive/refs/tags/${version}.zip";
+    hash = "sha256-0ZFH2awUo4BkTpK1OsWZ4YKczJHo+HHM6ezGBJAmT+U=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 _docs/font-source/weathericons-regular.otf -t $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Weather Icons";
+    longDescription = ''
+      Weather Icons is the only icon font and CSS with 222 weather themed icons,
+      ready to be dropped right into Bootstrap, or any project that needs high
+      quality weather, maritime, and meteorological based icons!
+    '';
+    homepage = "https://erikflowers.github.io/weather-icons/";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ pnelson ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/work-sans/default.nix b/nixpkgs/pkgs/data/fonts/work-sans/default.nix
new file mode 100644
index 000000000000..07c5704b5171
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/work-sans/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "work-sans";
+  version = "2.010";
+
+  src = fetchzip {
+    url = "https://github.com/weiweihuanghuang/Work-Sans/archive/refs/tags/v${version}.zip";
+    hash = "sha256-cedcx3CpcPZk3jxxIs5Bz78dxZNtOemvXnUBO6zl2dw=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 fonts/variable/*.ttf fonts/static/TTF/*.ttf -t $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A grotesque sans";
+    homepage = "https://weiweihuanghuang.github.io/Work-Sans/";
+    license = licenses.ofl;
+    maintainers = [ maintainers.marsam ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/wqy-microhei/default.nix b/nixpkgs/pkgs/data/fonts/wqy-microhei/default.nix
new file mode 100644
index 000000000000..7c410e7d00e7
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/wqy-microhei/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "wqy-microhei";
+  version = "0.2.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/wqy/${pname}-${version}-beta.tar.gz";
+    hash = "sha256-KAKsgCOqNqZupudEWFTjoHjTd///QhaTQb0jeHH3IT4=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 wqy-microhei.ttc $out/share/fonts/wqy-microhei.ttc
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A (mainly) Chinese Unicode font";
+    homepage = "http://wenq.org";
+    license = lib.licenses.asl20;
+    maintainers = [ lib.maintainers.pkmx ];
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/wqy-zenhei/default.nix b/nixpkgs/pkgs/data/fonts/wqy-zenhei/default.nix
new file mode 100644
index 000000000000..c59f74d45474
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/wqy-zenhei/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "wqy-zenhei";
+  version = "0.9.45";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/wqy/${pname}-${version}.tar.gz";
+    hash = "sha256-5LfjBkdb+UJ9F1dXjw5FKJMMhMROqj8WfUxC8RDuddY=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.ttc -t $out/share/fonts/
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A (mainly) Chinese Unicode font";
+    homepage = "http://wenq.org";
+    license = lib.licenses.gpl2; # with font embedding exceptions
+    maintainers = [ lib.maintainers.pkmx ];
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/xits-math/default.nix b/nixpkgs/pkgs/data/fonts/xits-math/default.nix
new file mode 100644
index 000000000000..9e3c013f44de
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/xits-math/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenv, fetchFromGitHub, python3Packages}:
+
+stdenv.mkDerivation rec {
+  pname = "xits-math";
+  version = "1.302";
+
+  src = fetchFromGitHub {
+    owner = "alif-type";
+    repo = "xits";
+    rev = "v${version}";
+    sha256 = "1x3r505dylz9rz8dj98h5n9d0zixyxmvvhnjnms9qxdrz9bxy9g1";
+  };
+
+  nativeBuildInputs = (with python3Packages; [ python fonttools fontforge ]);
+
+  postPatch = ''
+    rm *.otf
+  '';
+
+  installPhase = ''
+    install -m444 -Dt $out/share/fonts/opentype *.otf
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/alif-type/xits";
+    description = "OpenType implementation of STIX fonts with math support";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/xkcd-font/default.nix b/nixpkgs/pkgs/data/fonts/xkcd-font/default.nix
new file mode 100644
index 000000000000..c1ddbe9fae6c
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/xkcd-font/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "xkcd-font";
+  version = "unstable-2017-08-24";
+
+  src = fetchFromGitHub {
+    owner = "ipython";
+    repo = pname;
+    rev = "5632fde618845dba5c22f14adc7b52bf6c52d46d";
+    hash = "sha256-1DgSx2L+OpXuPVSXbbl/hcZUyBK9ikPyGWuk6wNzlwc=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm444 -t $out/share/fonts/opentype/ xkcd/build/xkcd.otf
+    install -Dm444 -t $out/share/fonts/truetype/ xkcd-script/font/xkcd-script.ttf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "The xkcd font";
+    homepage = "https://github.com/ipython/xkcd-font";
+    license = licenses.cc-by-nc-30;
+    platforms = platforms.all;
+    maintainers = [ maintainers.marsam ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/yanone-kaffeesatz/default.nix b/nixpkgs/pkgs/data/fonts/yanone-kaffeesatz/default.nix
new file mode 100644
index 000000000000..99cd30f3dfa7
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/yanone-kaffeesatz/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "yanone-kaffeesatz";
+  version = "2004";
+
+  src = fetchzip {
+    url = "https://yanone.de/2015/data/UIdownloads/Yanone%20Kaffeesatz.zip";
+    stripRoot = false;
+    hash = "sha256-8yAB73UJ77/c8/VLqiFeT1KtoBQzOh+vWrI+JA2dCoY=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 *.otf -t $out/share/fonts/opentype
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "The free font classic";
+    maintainers = with lib.maintainers; [ mt-caret ];
+    platforms = with lib.platforms; all;
+    homepage = "https://yanone.de/fonts/kaffeesatz/";
+    license = lib.licenses.ofl;
+  };
+}
diff --git a/nixpkgs/pkgs/data/fonts/zilla-slab/default.nix b/nixpkgs/pkgs/data/fonts/zilla-slab/default.nix
new file mode 100644
index 000000000000..886362d78e99
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/zilla-slab/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "zilla-slab";
+  version = "1.002";
+
+  src = fetchzip {
+    url = "https://github.com/mozilla/zilla-slab/releases/download/v${version}/Zilla-Slab-Fonts-v${version}.zip";
+    stripRoot = false;
+    hash = "sha256-yOHu+dSWlyI7w1N1teED9R1Fphso2bKAlYDC1KdqBCc=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/fonts/truetype
+    cp -v zilla-slab/ttf/*.ttf $out/share/fonts/truetype/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/mozilla/zilla-slab";
+    description = "Zilla Slab fonts";
+    longDescription = ''
+      Zilla Slab is Mozilla's core typeface, used
+      for the Mozilla wordmark, headlines and
+      throughout their designs. A contemporary
+      slab serif, based on Typotheque's Tesla, it
+      is constructed with smooth curves and true
+      italics, which gives text an unexpectedly
+      sophisticated industrial look and a friendly
+      approachability in all weights.
+    '';
+    license = licenses.ofl;
+    maintainers = with maintainers; [ caugner ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/apple-cursor/default.nix b/nixpkgs/pkgs/data/icons/apple-cursor/default.nix
new file mode 100644
index 000000000000..46b4b37f78df
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/apple-cursor/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, fetchzip
+, stdenv
+}:
+
+let
+  _src = variant: suffix: hash: fetchzip ({
+    name = variant;
+    url = "https://github.com/ful1e5/apple_cursor/releases/download/v${version}/${variant}.${suffix}";
+    hash = hash;
+  } // (lib.optionalAttrs (suffix == "zip") { stripRoot = false; }));
+
+  version = "2.0.0";
+  srcs = [
+    (_src "macOS-BigSur-White" "tar.gz" "sha256-3Ax2hMfkEL4cyJtGQpK3PqC/L5wtmgO0LsY4gkTQ2Bg=")
+    (_src "macOS-BigSur-White-Windows" "zip" "sha256-V6J2Ddgq46BkgxCWVReZrvE7CsOczzV7slOpilKFG9E=")
+    (_src "macOS-BigSur" "tar.gz" "sha256-VZWFf1AHum2xDJPMZrBmcyVrrmYGKwCdXOPATw7myOA=")
+    (_src "macOS-BigSur-Windows" "zip" "sha256-lp28ACsK8BXe6rSDELL4GdXb1QEdOVC8Y6eLofctkR4=")
+    (_src "macOS-Monterey-White" "tar.gz" "sha256-IfFYUbDW6mBe209iU1sBhFzolZd6YDVdJf+DPe9AQDM=")
+    (_src "macOS-Monterey-White-Windows" "zip" "sha256-gUuBFOi0nDBoX9TWPg4eQhCAhwYeEhfDEbYpc+XsQNE=")
+    (_src "macOS-Monterey" "tar.gz" "sha256-MHmaZs56Q1NbjkecvfcG1zAW85BCZDn5kXmxqVzPc7M=")
+    (_src "macOS-Monterey-Windows" "zip" "sha256-ajxEgq7besaRajLn0gTPpp4euOWVqbzc78u720PWlyE=")
+  ];
+in stdenv.mkDerivation rec {
+  pname = "apple_cursor";
+  inherit version;
+  inherit srcs;
+
+  sourceRoot = ".";
+
+  installPhase = ''
+    install -dm 0755 $out/share/icons
+    cp -r macOS* $out/share/icons/
+  '';
+
+  meta = with lib; {
+    description = "Opensource macOS Cursors.";
+    homepage = "https://github.com/ful1e5/apple_cursor";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ colemickens ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/arc-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/arc-icon-theme/default.nix
new file mode 100644
index 000000000000..2950f929912a
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/arc-icon-theme/default.nix
@@ -0,0 +1,38 @@
+{ lib, stdenvNoCC, fetchFromGitHub, autoreconfHook, gtk3, gnome, moka-icon-theme, gnome-icon-theme, hicolor-icon-theme }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "arc-icon-theme";
+  version = "2016-11-22";
+
+  src = fetchFromGitHub {
+    owner = "horst3180";
+    repo = pname;
+    rev = "55a575386a412544c3ed2b5617a61f842ee4ec15";
+    sha256 = "1ch3hp08qri93510hypzz6m2x4xgg2h15wvnhjwh1x1s1b7jvxjd";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    gtk3
+  ];
+
+  propagatedBuildInputs = [
+    moka-icon-theme
+    gnome.adwaita-icon-theme
+    gnome-icon-theme
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  postFixup = "gtk-update-icon-cache $out/share/icons/Arc";
+
+  meta = with lib; {
+    description = "Arc icon theme";
+    homepage = "https://github.com/horst3180/arc-icon-theme";
+    license = licenses.gpl3;
+    # moka-icon-theme dependency is restricted to linux
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/banana-cursor/default.nix b/nixpkgs/pkgs/data/icons/banana-cursor/default.nix
new file mode 100644
index 000000000000..b89213c6d6fb
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/banana-cursor/default.nix
@@ -0,0 +1,31 @@
+{
+  lib,
+  stdenvNoCC,
+  fetchFromGitHub,
+}:
+stdenvNoCC.mkDerivation rec {
+  pname = "banana-cursor";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "ful1e5";
+    repo = "banana-cursor";
+    rev = "v${version}";
+    sha256 = "sha256-PI7381xf/GctQTnfcE0W3M3z2kqbX4VexMf17C61hT8=";
+  };
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/share/icons
+    mv themes/Banana $out/share/icons
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/ful1e5/banana-cursor";
+    description = "The banana cursor theme";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ yrd ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/beauty-line-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/beauty-line-icon-theme/default.nix
new file mode 100644
index 000000000000..dc332b0fc328
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/beauty-line-icon-theme/default.nix
@@ -0,0 +1,64 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, breeze-icons
+, gtk3
+, gnome-icon-theme
+, hicolor-icon-theme
+, mint-x-icons
+, pantheon
+, jdupes
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "BeautyLine";
+  version = "0.0.4";
+
+  src = fetchFromGitHub {
+    owner = "gvolpe";
+    repo = pname;
+    rev = version;
+    sparseCheckout = [
+      "BeautyLine-V3"
+    ];
+    sha256 = "sha256-IkkypAj250+OXbf19TampCnqYsSbJVIjeYlxJoyhpzk=";
+  };
+
+  sourceRoot = "${src.name}/BeautyLine-V3";
+
+  nativeBuildInputs = [ jdupes gtk3 ];
+
+  # ubuntu-mono is also required but missing in ubuntu-themes (please add it if it is packaged at some point)
+  propagatedBuildInputs = [
+    breeze-icons
+    gnome-icon-theme
+    hicolor-icon-theme
+    mint-x-icons
+    pantheon.elementary-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  dontPatchELF = true;
+  dontRewriteSymlinks = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/icons/${pname}
+    cp -r * $out/share/icons/${pname}/
+    gtk-update-icon-cache $out/share/icons/${pname}
+
+    jdupes --link-soft --recurse $out/share
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "BeautyLine icon theme";
+    homepage = "https://www.gnome-look.org/p/1425426/";
+    platforms = platforms.linux;
+    license = [ licenses.publicDomain ];
+    maintainers = with maintainers; [ gvolpe ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/bibata-cursors/default.nix b/nixpkgs/pkgs/data/icons/bibata-cursors/default.nix
new file mode 100644
index 000000000000..06c8becd64e5
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/bibata-cursors/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, fetchurl
+, clickgen
+, attrs
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "bibata-cursors";
+  version = "2.0.3";
+
+  src = fetchFromGitHub {
+    owner = "ful1e5";
+    repo = "Bibata_Cursor";
+    rev = "v${version}";
+    sha256 = "zCk7qgPeae0BfzhxxU2Dk1SOWJQOxiWyJuzH/ri+Gq4=";
+  };
+
+  buildInputs = [ clickgen attrs ];
+
+  buildPhase = ''
+    ctgen build.toml -p x11 -d 'bitmaps/Bibata-Modern-Amber' -n 'Bibata-Modern-Amber' -c 'Yellowish and rounded edge bibata cursors.'
+    ctgen build.toml -p x11 -d 'bitmaps/Bibata-Modern-Classic' -n 'Bibata-Modern-Classic' -c 'Black and rounded edge Bibata cursors.'
+    ctgen build.toml -p x11 -d 'bitmaps/Bibata-Modern-Ice' -n 'Bibata-Modern-Ice' -c 'White and rounded edge Bibata cursors.'
+
+    ctgen build.toml -p x11 -d 'bitmaps/Bibata-Original-Amber' -n 'Bibata-Original-Amber' -c 'Yellowish and sharp edge Bibata cursors.'
+    ctgen build.toml -p x11 -d 'bitmaps/Bibata-Original-Classic' -n 'Bibata-Original-Classic' -c 'Black and sharp edge Bibata cursors.'
+    ctgen build.toml -p x11 -d 'bitmaps/Bibata-Original-Ice' -n 'Bibata-Original-Ice' -c 'White and sharp edge Bibata cursors.'
+  '';
+
+  installPhase = ''
+    install -dm 0755 $out/share/icons
+    cp -rf themes/* $out/share/icons/
+  '';
+
+  meta = with lib; {
+    description = "Material Based Cursor Theme";
+    homepage = "https://github.com/ful1e5/Bibata_Cursor";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ rawkode AdsonCicilioti ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/bibata-cursors/extra.nix b/nixpkgs/pkgs/data/icons/bibata-cursors/extra.nix
new file mode 100644
index 000000000000..ed9a70a6d321
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/bibata-cursors/extra.nix
@@ -0,0 +1,56 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, fetchurl
+, clickgen
+, unzip
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "bibata-extra-cursors";
+  version = "1.0.1";
+
+  src = fetchFromGitHub {
+    owner = "ful1e5";
+    repo = "Bibata_Extra_Cursor";
+    rev = "v${version}";
+    sha256 = "0wndl4c547k99y0gq922hn7z1mwdgxvvyjfm6757g6shfbcmkz7m";
+  };
+
+  bitmaps = fetchurl {
+    url = "https://github.com/ful1e5/Bibata_Extra_Cursor/releases/download/v${version}/bitmaps.zip";
+    sha256 = "0vf14ln53wigaq3dkqdk5avarqplsq751nlv72da04ms6gqjfhdl";
+  };
+
+  nativeBuildInputs = [ unzip ];
+
+  buildInputs = [ clickgen ];
+
+  buildPhase = ''
+    mkdir bitmaps
+    unzip $bitmaps -d bitmaps
+    rm -rf themes
+    cd builder && make build_unix
+  '';
+
+  installPhase = ''
+    install -dm 0755 $out/share/icons
+    cd ../
+    cp -rf themes/* $out/share/icons/
+  '';
+
+  postPatch = ''
+    substituteInPlace "builder/Makefile" \
+      --replace "/bin/bash" "bash"
+  '';
+
+  meta = with lib; {
+    description = "Material Based Cursor Theme";
+    homepage = "https://github.com/ful1e5/Bibata_Extra_Cursor";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ dtzWill AdsonCicilioti ];
+    # unmaintained as of Nov 9, 2022. unable to be build with clickgen version 2.x
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/bibata-cursors/translucent.nix b/nixpkgs/pkgs/data/icons/bibata-cursors/translucent.nix
new file mode 100644
index 000000000000..fa01e05766b4
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/bibata-cursors/translucent.nix
@@ -0,0 +1,26 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "bibata-cursors-translucent";
+  version = "1.1.2";
+
+  src = fetchFromGitHub {
+    owner = "Silicasandwhich";
+    repo = "Bibata_Cursor_Translucent";
+    rev = "v${version}";
+    sha256 = "sha256-RroynJfdFpu+Wl9iw9NrAc9wNZsSxWI+heJXUTwEe7s=";
+  };
+
+  installPhase = ''
+    install -dm 0755 $out/share/icons
+    cp -pr Bibata_* $out/share/icons/
+  '';
+
+  meta = with lib; {
+    description = "Translucent Varient of the Material Based Cursor";
+    homepage = "https://github.com/Silicasandwhich/Bibata_Cursor_Translucent";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ dtzWill AdsonCicilioti ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/capitaine-cursors-themed/default.nix b/nixpkgs/pkgs/data/icons/capitaine-cursors-themed/default.nix
new file mode 100644
index 000000000000..bd0147fecde3
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/capitaine-cursors-themed/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "capitaine-cursors-themed";
+  version = "5";
+
+  src = fetchzip {
+    url = "https://github.com/sainnhe/capitaine-cursors/releases/download/r${version}/Linux.zip";
+    stripRoot = false;
+    hash = "sha256-ipPpmZKU/xLA45fdOvxVbtFDCUsCYIvzeps/DjhFkNg=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/icons
+    cp -r ./ $out/share/icons
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A fork of the capitaine cursor theme, with some additional variants (Gruvbox, Nord, Palenight) and support for HiDPI";
+    homepage = "https://github.com/sainnhe/capitaine-cursors";
+    license = licenses.lgpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.math-42 ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/capitaine-cursors/default.nix b/nixpkgs/pkgs/data/icons/capitaine-cursors/default.nix
new file mode 100644
index 000000000000..47fbeda10942
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/capitaine-cursors/default.nix
@@ -0,0 +1,57 @@
+{ lib, stdenvNoCC, fetchFromGitHub, fetchpatch, makeFontsConf
+, inkscape, xcursorgen, bc }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "capitaine-cursors";
+  version = "4";
+
+  src = fetchFromGitHub {
+    owner = "keeferrourke";
+    repo = pname;
+    rev = "r${version}";
+    sha256 = "0652ydy73x29z7wc6ccyqihmfg4bk0ksl7yryycln6c7i0iqfmc9";
+  };
+
+  patches = [
+    # Fixes the build on inscape => 1.0, without this it generates empty cursor files
+    (fetchpatch {
+      name = "inkscape-1.0-compat";
+      url = "https://github.com/keeferrourke/capitaine-cursors/commit/9da0b53e6098ed023c5c24c6ef6bfb1f68a79924.patch";
+      sha256 = "0lx5i60ahy6a2pir4zzlqn5lqsv6claqg8mv17l1a028h9aha3cv";
+    })
+  ];
+
+  postPatch = ''
+    patchShebangs .
+  '';
+
+  # Complains about not being able to find the fontconfig config file otherwise
+  FONTCONFIG_FILE = makeFontsConf { fontDirectories = [ ]; };
+
+  buildInputs = [
+    inkscape
+    xcursorgen
+    bc
+  ];
+
+  buildPhase = ''
+    for variant in dark light ; do
+    # https://github.com/NixOS/nixpkgs/blob/master/pkgs/data/fonts/emojione/default.nix#L16
+      HOME="$NIX_BUILD_ROOT" ./build.sh --max-dpi xhd --type $variant
+    done
+  '';
+
+  installPhase = ''
+    install -dm 0755 $out/share/icons
+    cp -pr dist/dark $out/share/icons/capitaine-cursors
+    cp -pr dist/light $out/share/icons/capitaine-cursors-white
+  '';
+
+  meta = with lib; {
+    description = "An x-cursor theme inspired by macOS and based on KDE Breeze";
+    homepage = "https://github.com/keeferrourke/capitaine-cursors";
+    license = licenses.lgpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ eadwu ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/catppuccin-cursors/default.nix b/nixpkgs/pkgs/data/icons/catppuccin-cursors/default.nix
new file mode 100644
index 000000000000..450484b46327
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/catppuccin-cursors/default.nix
@@ -0,0 +1,66 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, unzip
+}:
+
+let
+  dimensions = {
+    palette = [ "Frappe" "Latte" "Macchiato" "Mocha" ];
+    color = [ "Blue" "Dark" "Flamingo" "Green" "Lavender" "Light" "Maroon" "Mauve" "Peach" "Pink" "Red" "Rosewater" "Sapphire" "Sky" "Teal" "Yellow" ];
+  };
+  product = lib.attrsets.cartesianProductOfSets dimensions;
+  variantName = { palette, color }: (lib.strings.toLower palette) + color;
+  variants = map variantName product;
+in
+stdenvNoCC.mkDerivation rec {
+  pname = "catppuccin-cursors";
+  version = "0.2.0";
+  dontBuild = true;
+
+  src = fetchFromGitHub {
+    owner = "catppuccin";
+    repo = "cursors";
+    rev = "v${version}";
+    sha256 = "sha256-TgV5f8+YWR+h61m6WiBMg3aBFnhqShocZBdzZHSyU2c=";
+    sparseCheckout = [ "cursors" ];
+  };
+
+  nativeBuildInputs = [ unzip ];
+
+  outputs = variants ++ [ "out" ]; # dummy "out" output to prevent breakage
+
+  outputsToInstall = [];
+
+  installPhase = ''
+    runHook preInstall
+
+    for output in $(getAllOutputNames); do
+      if [ "$output" != "out" ]; then
+        local outputDir="''${!output}"
+        local iconsDir="$outputDir"/share/icons
+
+        mkdir -p "$iconsDir"
+
+        # Convert to kebab case with the first letter of each word capitalized
+        local variant=$(sed 's/\([A-Z]\)/-\1/g' <<< "$output")
+        local variant=''${variant^}
+
+        unzip "cursors/Catppuccin-$variant-Cursors.zip" -d "$iconsDir"
+      fi
+    done
+
+    # Needed to prevent breakage
+    mkdir -p "$out"
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Catppuccin cursor theme based on Volantes";
+    homepage = "https://github.com/catppuccin/cursors";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ PlayerNameHere ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/catppuccin-papirus-folders/default.nix b/nixpkgs/pkgs/data/icons/catppuccin-papirus-folders/default.nix
new file mode 100644
index 000000000000..70529a6337b7
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/catppuccin-papirus-folders/default.nix
@@ -0,0 +1,54 @@
+{
+  stdenvNoCC,
+  lib,
+  fetchFromGitHub,
+  gtk3,
+  papirus-icon-theme,
+  flavor ? "mocha",
+  accent ? "blue"
+}: let
+  validAccents = ["blue" "flamingo" "green" "lavender" "maroon" "mauve" "peach" "pink" "red" "rosewater" "sapphire" "sky" "teal" "yellow"];
+  validFlavors = ["latte" "frappe" "macchiato" "mocha"];
+  pname = "catppuccin-papirus-folders";
+in
+  lib.checkListOfEnum "${pname}: accent colors" validAccents [ accent ]
+  lib.checkListOfEnum "${pname}: flavors" validFlavors [ flavor ]
+
+  stdenvNoCC.mkDerivation {
+    inherit pname;
+    version = "unstable-2023-08-02";
+
+    src = fetchFromGitHub {
+      owner = "catppuccin";
+      repo = "papirus-folders";
+      rev = "fcf96737fffc343a1bf129732c37d19f2d77fa5c";
+      sha256 = "sha256-3yjIGzN+/moP2OVGDIAy4zPqUroSjx3c2mJjdZGhTsY=";
+    };
+
+    nativeBuildInputs = [ gtk3 ];
+
+    postPatch = ''
+      patchShebangs ./papirus-folders
+    '';
+
+    installPhase = ''
+      runHook preInstall
+      mkdir -p $out/share/icons
+      cp -r --no-preserve=mode ${papirus-icon-theme}/share/icons/Papirus* $out/share/icons
+      cp -r src/* $out/share/icons/Papirus
+      for theme in $out/share/icons/*; do
+          USER_HOME=$HOME DISABLE_UPDATE_ICON_CACHE=1 \
+            ./papirus-folders -t $theme -o -C cat-${flavor}-${accent}
+          gtk-update-icon-cache --force $theme
+      done
+      runHook postInstall
+    '';
+
+    meta = with lib; {
+      description = "Soothing pastel theme for Papirus Icon Theme folders";
+      homepage = "https://github.com/catppuccin/papirus-folders";
+      license = licenses.mit;
+      platforms = platforms.linux;
+      maintainers = with maintainers; [ rubyowo ];
+    };
+  }
diff --git a/nixpkgs/pkgs/data/icons/colloid-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/colloid-icon-theme/default.nix
new file mode 100644
index 000000000000..7806f3e814ad
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/colloid-icon-theme/default.nix
@@ -0,0 +1,72 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gitUpdater
+, gtk3
+, hicolor-icon-theme
+, jdupes
+, schemeVariants ? []
+, colorVariants ? [] # default is blue
+}:
+
+let
+  pname = "colloid-icon-theme";
+
+in
+lib.checkListOfEnum "${pname}: scheme variants" [ "default" "nord" "dracula" "all" ] schemeVariants
+lib.checkListOfEnum "${pname}: color variants" [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ] colorVariants
+
+stdenvNoCC.mkDerivation rec {
+  inherit pname;
+  version = "2023-07-01";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = version;
+    hash = "sha256-2J6LmDV/Y2+x+nK3mO+t4MnmZCbVwDLX0tDG6BmLgqo=";
+  };
+
+  nativeBuildInputs = [
+    gtk3
+    jdupes
+  ];
+
+  propagatedBuildInputs = [
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  # These fixup steps are slow and unnecessary for this package.
+  # Package may install almost 400 000 small files.
+  dontPatchELF = true;
+  dontRewriteSymlinks = true;
+
+  postPatch = ''
+    patchShebangs install.sh
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    name= ./install.sh \
+      ${lib.optionalString (schemeVariants != []) ("--scheme " + builtins.toString schemeVariants)} \
+      ${lib.optionalString (colorVariants != []) ("--theme " + builtins.toString colorVariants)} \
+      --dest $out/share/icons
+
+    jdupes --quiet --link-soft --recurse $out/share
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Colloid icon theme";
+    homepage = "https://github.com/vinceliuice/colloid-icon-theme";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/comixcursors/default.nix b/nixpkgs/pkgs/data/icons/comixcursors/default.nix
new file mode 100644
index 000000000000..1c4fdc195180
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/comixcursors/default.nix
@@ -0,0 +1,105 @@
+{ lib, stdenvNoCC, fetchFromGitLab, bc, librsvg, xcursorgen }:
+
+let
+  dimensions = {
+    color = [ "Black" "Blue" "Green" "Orange" "Red" "White" ];
+    opacity = [ "" "Opaque_" ];  # Translucent or opaque.
+    thickness = [ "" "Slim_" ];  # Thick or slim edges.
+    handedness = [ "" "LH_" ];   # Right- or left-handed.
+  };
+  product = lib.cartesianProductOfSets dimensions;
+  variantName =
+    { color, opacity, thickness, handedness }:
+    "${handedness}${opacity}${thickness}${color}";
+  variants =
+    # (The order of this list is already good looking enough to show in the
+    # meta.longDescription.)
+    map variantName product;
+in
+stdenvNoCC.mkDerivation rec {
+  pname = "comixcursors";
+  version = "0.9.2";
+
+  src = fetchFromGitLab {
+    owner = "limitland";
+    repo = "comixcursors";
+    # https://gitlab.com/limitland/comixcursors/-/issues/3
+    rev = "8c327c8514ab3a352583605c1ddcb7eb3d1d302b";
+    sha256 = "0bpxqw4izj7m0zb9lnxnmsjicfw60ppkdyv5nwrrz4x865wb296a";
+  };
+
+  nativeBuildInputs = [ bc librsvg xcursorgen ];
+
+  patches = [ ./makefile-shell-var.patch ];
+
+  postPatch = ''
+    patchShebangs ./install-all ./bin/
+  '';
+
+  # install-all is used instead of the directions in upstream's INSTALL file,
+  # because using its Makefile directly is broken.  Upstream itself seems to use
+  # its build-distribution script instead, which also uses install-all, but we
+  # do not use it because it does extra things for other distros.
+  #
+  # When not all of the variants, i.e. only a smaller subset of them, are
+  # desired (i.e. when a subset of outputs are chosen), install-all will still
+  # build all of them.  While upstream appears to provide old functionality for
+  # building only a subset, it is broken and we do not use it.  With prebuilt
+  # substitutions, installers of this package will get only the outputs they
+  # chose.
+  buildPhase = ''
+    ICONSDIR=$TMP/staged ./install-all
+  '';
+
+  installPhase = ''
+    for outputName in $(getAllOutputNames) ; do
+      if [ $outputName != out ]; then
+        local outputDir=''${!outputName};
+        local iconsDir=$outputDir/share/icons
+        local cursorName=$(tr _ - <<<"$outputName")
+
+        mkdir -p $iconsDir
+        cp -r -d $TMP/staged/ComixCursors-$cursorName $iconsDir
+
+        unset outputDir iconsDir cursorName
+      fi
+    done
+
+    # Need this directory (empty) to prevent the builder scripts from breaking.
+    mkdir -p $out
+  '';
+
+  outputs = let
+    default = "Opaque_Black";
+  in
+    # Have the most-traditional variant be the default output (as the first).
+    # Even with outputsToInstall=[], the default/first still has an effect on
+    # some Nix tools (e.g. nix-build).
+    [ default ] ++ (lib.remove default variants)
+    # Need a dummy "out" output to prevent the builder scripts from breaking.
+    ++ [ "out" ];
+
+  # No default output (to the extent possible).  Instead, the outputs'
+  # attributes are used to choose which variant(s) to have.
+  outputsToInstall = [];
+
+  meta = with lib; {
+    description = "The Comix Cursors mouse themes";
+    longDescription = ''
+      There are many (${toString ((length outputs) - 1)}) variants of color,
+      opacity, edge thickness, and right- or left-handedness, for this cursor
+      theme.  This package's derivation has an output for each of these
+      variants, named following the upstream convention, and the attribute for
+      an output must be used to install a variant,
+      e.g. `comixcursors.LH_Opaque_Slim_Blue`.  Attempting to use only
+      `comixcursors`, i.e. without an output attribute, will not install any
+      variants.  To install all the variants, use `comixcursors.all` (which is a
+      list).
+    '';
+    homepage = "https://gitlab.com/limitland/comixcursors";
+    changelog = "https://gitlab.com/limitland/comixcursors/-/blob/HEAD/NEWS";
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers.DerickEddington ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/comixcursors/makefile-shell-var.patch b/nixpkgs/pkgs/data/icons/comixcursors/makefile-shell-var.patch
new file mode 100644
index 000000000000..4032244c9ef0
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/comixcursors/makefile-shell-var.patch
@@ -0,0 +1,11 @@
+--- a/Makefile
++++ b/Makefile
+@@ -22,8 +22,6 @@
+ 
+ # Makefile for ComixCursors project.
+ 
+-SHELL = /bin/bash
+-
+ CURSORSNAME = ComixCursors
+ PACKAGENAME ?= ${CURSORSNAME}
+ SUMMARY ?= The original Comix Cursors
diff --git a/nixpkgs/pkgs/data/icons/dracula-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/dracula-icon-theme/default.nix
new file mode 100644
index 000000000000..d09037cad114
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/dracula-icon-theme/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenvNoCC, fetchFromGitHub, jdupes }:
+
+stdenvNoCC.mkDerivation {
+  pname = "dracula-icon-theme";
+  version = "unstable-2021-07-21";
+
+  src = fetchFromGitHub {
+    owner = "m4thewz";
+    repo = "dracula-icons";
+    rev = "2d3c83caa8664e93d956cfa67a0f21418b5cdad8";
+    hash = "sha256-GY+XxTM22jyNq8kaB81zNfHRhfXujArFcyzDa8kjxCQ=";
+  };
+
+  nativeBuildInputs = [
+    jdupes
+  ];
+
+  dontDropIconThemeCache = true;
+
+  dontPatchELF = true;
+  dontRewriteSymlinks = true;
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/icons/Dracula
+    cp -a * $out/share/icons/Dracula/
+    jdupes --quiet --link-soft --recurse $out/share
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Dracula Icon theme";
+    homepage = "https://github.com/m4thewz/dracula-icons";
+    platforms = platforms.linux;
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ therealr5 ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/elementary-xfce-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/elementary-xfce-icon-theme/default.nix
new file mode 100644
index 000000000000..69eef5754d62
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/elementary-xfce-icon-theme/default.nix
@@ -0,0 +1,47 @@
+{ lib, stdenv, fetchFromGitHub, pkg-config, gdk-pixbuf, optipng, librsvg, gtk3, pantheon, gnome, gnome-icon-theme, hicolor-icon-theme }:
+
+stdenv.mkDerivation rec {
+  pname = "elementary-xfce-icon-theme";
+  version = "0.18";
+
+  src = fetchFromGitHub {
+    owner = "shimmerproject";
+    repo = "elementary-xfce";
+    rev = "v${version}";
+    sha256 = "sha256-OgQtqBrYKDgU4mhXLFO8YwiPv2lKqGSdZnfKCd9ri4g=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    gdk-pixbuf
+    librsvg
+    optipng
+    gtk3
+  ];
+
+  propagatedBuildInputs = [
+    pantheon.elementary-icon-theme
+    gnome.adwaita-icon-theme
+    gnome-icon-theme
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  postPatch = ''
+    substituteInPlace svgtopng/Makefile --replace "-O0" "-O"
+  '';
+
+  postInstall = ''
+    make icon-caches
+  '';
+
+  meta = with lib; {
+    description = "Elementary icons for Xfce and other GTK desktops like GNOME";
+    homepage = "https://github.com/shimmerproject/elementary-xfce";
+    license = licenses.gpl2;
+    # darwin cannot deal with file names differing only in case
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/faba-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/faba-icon-theme/default.nix
new file mode 100644
index 000000000000..921c87774c31
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/faba-icon-theme/default.nix
@@ -0,0 +1,40 @@
+{ lib, stdenvNoCC, fetchFromGitHub, meson, ninja, python3, gtk3, pantheon, gnome-icon-theme, hicolor-icon-theme }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "faba-icon-theme";
+  version = "4.3";
+
+  src = fetchFromGitHub {
+    owner = "moka-project";
+    repo = "faba-icon-theme";
+    rev = "v${version}";
+    sha256 = "0xh6ppr73p76z60ym49b4d0liwdc96w41cc5p07d48hxjsa6qd6n";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    python3
+    gtk3
+  ];
+
+  propagatedBuildInputs = [
+    pantheon.elementary-icon-theme
+    gnome-icon-theme
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  postPatch = ''
+    patchShebangs meson/post_install.py
+  '';
+
+  meta = with lib; {
+    description = "A sexy and modern icon theme with Tango influences";
+    homepage = "https://snwh.org/moka";
+    license = with licenses; [ cc-by-sa-40 gpl3 ];
+    platforms = platforms.all;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/faba-mono-icons/default.nix b/nixpkgs/pkgs/data/icons/faba-mono-icons/default.nix
new file mode 100644
index 000000000000..47eeab40acb7
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/faba-mono-icons/default.nix
@@ -0,0 +1,42 @@
+{ lib, stdenvNoCC, fetchFromGitHub, autoreconfHook, gtk3, moka-icon-theme, faba-icon-theme, gnome-icon-theme, hicolor-icon-theme }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "faba-mono-icons";
+  version = "2016-04-30";
+
+  src = fetchFromGitHub {
+    owner = "snwh";
+    repo = pname;
+    rev = "2006c5281eb988c799068734f289a85443800cda";
+    sha256 = "0nisfl92y6hrbakp9qxi0ygayl6avkzrhwirg6854bwqjy2dvjv9";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    gtk3
+  ];
+
+  propagatedBuildInputs = [
+    moka-icon-theme
+    faba-icon-theme
+    gnome-icon-theme
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  postInstall = ''
+    for theme in $out/share/icons/*; do
+      gtk-update-icon-cache $theme
+    done
+  '';
+
+  meta = with lib; {
+    description = "The full set of Faba monochrome panel icons";
+    homepage = "https://snwh.org/moka";
+    license = licenses.gpl3;
+    # moka-icon-theme dependency is restricted to linux
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/flat-remix-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/flat-remix-icon-theme/default.nix
new file mode 100644
index 000000000000..c19f413ad7d0
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/flat-remix-icon-theme/default.nix
@@ -0,0 +1,44 @@
+{ lib, stdenvNoCC, fetchFromGitHub, gtk3, breeze-icons, pantheon, gnome-icon-theme, hicolor-icon-theme }:
+
+stdenvNoCC.mkDerivation rec  {
+  pname = "flat-remix-icon-theme";
+  version = "20220525";
+
+  src = fetchFromGitHub {
+    owner = "daniruiz";
+    repo = "flat-remix";
+    rev = version;
+    sha256 = "sha256-JpUa2nxZxrLTd80qdiGpob4Trq41ONthsPA4zFj/6nk=";
+  };
+
+  nativeBuildInputs = [
+    gtk3
+  ];
+
+  propagatedBuildInputs = [
+    breeze-icons
+    pantheon.elementary-icon-theme
+    gnome-icon-theme
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  installPhase = ''
+    mkdir -p $out/share/icons
+    mv Flat-Remix* $out/share/icons/
+
+    for theme in $out/share/icons/*; do
+      gtk-update-icon-cache $theme
+    done
+  '';
+
+  meta = with lib; {
+    description = "Flat remix is a pretty simple icon theme inspired on material design";
+    homepage = "https://drasite.com/flat-remix";
+    license = with licenses; [ gpl3Only ];
+    # breeze-icons and pantheon.elementary-icon-theme dependencies are restricted to linux
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/fluent-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/fluent-icon-theme/default.nix
new file mode 100644
index 000000000000..6933a0ecb928
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/fluent-icon-theme/default.nix
@@ -0,0 +1,63 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gtk3
+, hicolor-icon-theme
+, jdupes
+, roundedIcons ? false
+, blackPanelIcons ? false
+, allColorVariants ? false
+, colorVariants ? [ ]
+,
+}:
+let pname = "Fluent-icon-theme";
+in
+lib.checkListOfEnum "${pname}: available color variants" [ "standard" "green" "grey" "orange" "pink" "purple" "red" "yellow" "teal" ] colorVariants
+
+stdenvNoCC.mkDerivation rec {
+  inherit pname;
+  version = "2023-06-07";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = version;
+    hash = "sha256-drEAjIY/lacqncSeVeNmeRX6v4PnLvGo66Na1fuFXRg=";
+  };
+
+  nativeBuildInputs = [ gtk3 jdupes ];
+
+  buildInputs = [ hicolor-icon-theme ];
+
+  # Unnecessary & slow fixup's
+  dontPatchELF = true;
+  dontRewriteSymlinks = true;
+  dontDropIconThemeCache = true;
+
+  postPatch = ''
+    patchShebangs install.sh
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    ./install.sh --dest $out/share/icons \
+      --name Fluent \
+      ${builtins.toString colorVariants} \
+      ${lib.optionalString allColorVariants "--all"} \
+      ${lib.optionalString roundedIcons "--round"} \
+      ${lib.optionalString blackPanelIcons "--black"}
+
+    jdupes --quiet --link-soft --recurse $out/share
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Fluent icon theme for linux desktops";
+    homepage = "https://github.com/vinceliuice/Fluent-icon-theme";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ icy-thought ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/gnome-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/gnome-icon-theme/default.nix
new file mode 100644
index 000000000000..44b92c465bbe
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/gnome-icon-theme/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenv, fetchurl, pkg-config, intltool, iconnamingutils, gtk2 }:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-icon-theme";
+  version = "3.12.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-icon-theme/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "0fjh9qmmgj34zlgxb09231ld7khys562qxbpsjlaplq2j85p57im";
+  };
+
+  depsBuildBuild = [
+    pkg-config
+  ];
+
+  nativeBuildInputs = [
+    intltool
+    iconnamingutils
+    gtk2
+  ];
+
+  dontDropIconThemeCache = true;
+
+  postInstall = lib.optionalString (!stdenv.hostPlatform.isMusl) ''
+    # remove a tree of dirs with no files within
+    rm -r "$out/share/locale"
+  '';
+
+  allowedReferences = [ ];
+
+  meta = with lib; {
+    description = "Collection of icons for the GNOME 2 desktop";
+    homepage = "https://download.gnome.org/sources/gnome-icon-theme/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+    broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/gnome-icon-theme.x86_64-darwin
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/google-cursor/default.nix b/nixpkgs/pkgs/data/icons/google-cursor/default.nix
new file mode 100644
index 000000000000..c3fb5aad29a3
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/google-cursor/default.nix
@@ -0,0 +1,51 @@
+{ stdenvNoCC
+, fetchzip
+, lib
+}:
+
+let
+  colors = [
+    {
+      name = "Black";
+      hash = "sha256-pb2U9j1m8uJaILxUxKqp8q9FGuwzZsQvhPP3bfGZL5I=";
+    }
+    {
+      name = "Blue";
+      hash = "sha256-PmJeGShQLIC7ceRwQvSbphqz19fKptksZeHKi9QSL5Y=";
+    }
+    {
+      name = "Red";
+      hash = "sha256-/X81jLoWaw4UMoDRf1f6oaKKRWexQc4PAACy3doV4Kc=";
+    }
+    {
+      name = "White";
+      hash = "sha256-eT/Zy6O6TBD6G8q/dg+9rNYDHutLLxEY1lvLDP90b+g=";
+    }
+  ];
+in
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "google-cursor";
+  version = "2.0.0";
+
+  sourceRoot = ".";
+  srcs = map
+    (color: (fetchzip {
+      url = "https://github.com/ful1e5/Google_Cursor/releases/download/v${finalAttrs.version}/GoogleDot-${color.name}.tar.gz";
+      name = "GoogleDot-${color.name}";
+      hash = color.hash;
+    }))
+    colors;
+
+  postInstall = ''
+    mkdir -p $out/share/icons
+    cp -r GoogleDot-* $out/share/icons
+  '';
+
+  meta = with lib; {
+    description = "An opensource cursor theme inspired by Google";
+    homepage = "https://github.com/ful1e5/Google_Cursor";
+    license = licenses.gpl3Plus;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ quadradical ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/icons/graphite-cursors/default.nix b/nixpkgs/pkgs/data/icons/graphite-cursors/default.nix
new file mode 100644
index 000000000000..b64e7567b25f
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/graphite-cursors/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+}:
+
+stdenv.mkDerivation rec {
+  pname = "graphite-cursors";
+  version = "2021-11-26";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-Kopl2NweYrq9rhw+0EUMhY/pfGo4g387927TZAhI5/A=";
+  };
+
+  installPhase = ''
+    install -dm 755 $out/share/icons
+    mv dist-dark $out/share/icons/graphite-dark
+    mv dist-light $out/share/icons/graphite-light
+    mv dist-dark-nord $out/share/icons/graphite-dark-nord
+    mv dist-light-nord $out/share/icons/graphite-light-nord
+  '';
+
+  meta = with lib; {
+    description = "Graphite cursor theme";
+    homepage = "https://github.com/vinceliuice/Graphite-cursors";
+    license = licenses.gpl3Only;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ oluceps ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/gruvbox-dark-icons-gtk/default.nix b/nixpkgs/pkgs/data/icons/gruvbox-dark-icons-gtk/default.nix
new file mode 100644
index 000000000000..972b5dfba562
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/gruvbox-dark-icons-gtk/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenvNoCC, fetchFromGitHub, gtk3, breeze-icons, gnome-icon-theme, hicolor-icon-theme }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "gruvbox-dark-icons-gtk";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "jmattheis";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1fks2rrrb62ybzn8gqan5swcgksrb579vk37bx4xpwkc552dz2z2";
+  };
+
+  nativeBuildInputs = [ gtk3 ];
+
+  propagatedBuildInputs = [ breeze-icons gnome-icon-theme hicolor-icon-theme ];
+
+  installPhase = ''
+    mkdir -p $out/share/icons/oomox-gruvbox-dark
+    rm README.md
+    cp -r * $out/share/icons/oomox-gruvbox-dark
+    gtk-update-icon-cache $out/share/icons/oomox-gruvbox-dark
+  '';
+
+  dontDropIconThemeCache = true;
+
+  meta = with lib; {
+    description = "Gruvbox icons for GTK based desktop environments";
+    homepage = "https://github.com/jmattheis/gruvbox-dark-gtk";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.nomisiv ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/hackneyed/default.nix b/nixpkgs/pkgs/data/icons/hackneyed/default.nix
new file mode 100644
index 000000000000..e26a32b159ec
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/hackneyed/default.nix
@@ -0,0 +1,46 @@
+{ lib, stdenvNoCC, fetchFromGitLab, imagemagick, inkscape, xcursorgen }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "hackneyed";
+  version = "0.9.1";
+
+  src = fetchFromGitLab {
+    owner = "Enthymeme";
+    repo = "hackneyed-x11-cursors";
+    rev = version;
+    hash = "sha256-+7QtHgBuhJtQejiHeZ+QoedJo24LqSY51XRVLv9Ho2g=";
+  };
+
+  nativeBuildInputs = [ imagemagick inkscape xcursorgen ];
+
+  postPatch = ''
+    patchShebangs *.sh
+  '';
+
+  enableParallelBuilding = true;
+
+  makeFlags = [
+    "INKSCAPE=inkscape"
+    "INSTALL=install"
+    "PREFIX=$(out)"
+    "VERBOSE=1"
+    "XCURSORGEN=xcursorgen"
+  ];
+
+  buildFlags = [ "theme" "theme.left" ];
+
+  # The Makefile declares a dependency on the value of $(INKSCAPE) for some reason;
+  # it's unnecessary for building though.
+  prePatch = ''
+    substituteInPlace GNUmakefile \
+        --replace 'inkscape-version: $(INKSCAPE)' 'inkscape-version:'
+  '';
+
+  meta = with lib; {
+    homepage = "https://gitlab.com/Enthymeme/hackneyed-x11-cursors";
+    description = "A scalable cursor theme that resembles Windows 3.x/NT 3.x cursors";
+    platforms = platforms.all;
+    license = licenses.mit;
+    maintainers = with maintainers; [ somasis ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/hicolor-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/hicolor-icon-theme/default.nix
new file mode 100644
index 000000000000..096baa49acea
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/hicolor-icon-theme/default.nix
@@ -0,0 +1,20 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "hicolor-icon-theme";
+  version = "0.17";
+
+  src = fetchurl {
+    url = "https://icon-theme.freedesktop.org/releases/hicolor-icon-theme-${version}.tar.xz";
+    sha256 = "1n59i3al3zx6p90ff0l43gzpzmlqnzm6hf5cryxqrlbi48sq8x1i";
+  };
+
+  setupHook = ./setup-hook.sh;
+
+  meta = with lib; {
+    description = "Default fallback theme used by implementations of the icon theme specification";
+    homepage = "https://icon-theme.freedesktop.org/releases/";
+    platforms = platforms.unix;
+    license = licenses.gpl2Only;
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/hicolor-icon-theme/setup-hook.sh b/nixpkgs/pkgs/data/icons/hicolor-icon-theme/setup-hook.sh
new file mode 100644
index 000000000000..df7cac08b058
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/hicolor-icon-theme/setup-hook.sh
@@ -0,0 +1,53 @@
+# shellcheck shell=bash
+
+# Populate XDG_ICON_DIRS
+hicolorIconThemeHook() {
+
+    # where to find icon themes
+    if [ -d "$1/share/icons" ]; then
+      addToSearchPath XDG_ICON_DIRS "$1/share"
+    fi
+}
+
+# I think this is meant to be a runtime dep
+addEnvHooks "${targetOffset:?}" hicolorIconThemeHook
+
+# Make symbolic links of parent icon themes that are inherited in the
+# icon themes installed by the package.
+symlinkParentIconThemes() {
+    if [ -e $out/share/icons ]; then
+        echo Symlinking parent icon themes...
+        local theme
+        local theme_name
+        local inheritance
+        local parent
+        local parent_theme
+        local dir
+        local parent_path
+        for theme in $out/share/icons/*/index.theme; do
+            theme_name="${theme%/*}"
+            theme_name="${theme_name##*/}"
+            echo "  theme: $theme_name"
+            inheritance=$(sed -rne 's,^Inherits=(.*)$,\1,p' "$theme")
+            IFS=',' read -ra parent_themes <<< "$inheritance"
+            for parent_theme in "${parent_themes[@]}"; do
+                parent_path=""
+                if [ -e "$out/share/icons/$parent_theme" ]; then
+                    parent_path="$(realpath "$out/share/icons/$parent_theme")"
+                else
+                    IFS=':' read -ra dirs <<< $XDG_ICON_DIRS
+                    for parent_dir in  "${dirs[@]}"; do
+                        if [ -e "$parent_dir/icons/$parent_theme/index.theme" ]; then
+                            parent_path="$(realpath "$parent_dir/icons/$parent_theme")"
+                            ln -s "$parent_path" "$out/share/icons/"
+                            break
+                        fi
+                    done
+                fi
+                echo "    parent: $parent_theme	-> $parent_path"
+            done
+        done
+    fi
+}
+
+preFixupHooks+=(symlinkParentIconThemes)
diff --git a/nixpkgs/pkgs/data/icons/humanity-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/humanity-icon-theme/default.nix
new file mode 100644
index 000000000000..87ec255d9d4a
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/humanity-icon-theme/default.nix
@@ -0,0 +1,44 @@
+{ lib, stdenvNoCC, fetchurl, gtk3, gnome, hicolor-icon-theme }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "humanity-icon-theme";
+  version = "0.6.16";
+
+  src = fetchurl {
+    url = "https://launchpad.net/ubuntu/+archive/primary/+files/${pname}_${version}.tar.xz";
+    sha256 = "sha256-AyHl4zMyFE2/5Cui3Y/SB1yEUuyafDdybFPrafo4Ki0=";
+  };
+
+  nativeBuildInputs = [
+    gtk3
+  ];
+
+  propagatedBuildInputs = [
+    gnome.adwaita-icon-theme
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/icons
+    cp -a Humanity* $out/share/icons
+    rm $out/share/icons/*/{AUTHORS,CONTRIBUTORS,COPYING}
+
+    for theme in $out/share/icons/*; do
+      gtk-update-icon-cache $theme
+    done
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Humanity icons from Ubuntu";
+    homepage = "https://launchpad.net/humanity/";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/iconpack-jade/default.nix b/nixpkgs/pkgs/data/icons/iconpack-jade/default.nix
new file mode 100644
index 000000000000..d68e02b838d6
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/iconpack-jade/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenvNoCC, fetchFromGitHub, gtk3, gnome-icon-theme, hicolor-icon-theme }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "iconpack-jade";
+  version = "1.25";
+
+  src = fetchFromGitHub {
+    owner = "madmaxms";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0pwz3l5i93s84iwkn1jq8a150ma96788a0n41xq2cgy00j8h8xh0";
+  };
+
+  nativeBuildInputs = [ gtk3 ];
+
+  propagatedBuildInputs = [ gnome-icon-theme hicolor-icon-theme ];
+
+  dontDropIconThemeCache = true;
+
+  installPhase = ''
+    mkdir -p $out/share/icons
+    cp -a Jade* $out/share/icons
+
+    for theme in $out/share/icons/*; do
+      gtk-update-icon-cache $theme
+    done
+  '';
+
+  meta = with lib; {
+    description = "Icon pack based upon Faenza and Mint-X";
+    homepage = "https://github.com/madmaxms/iconpack-jade";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/iconpack-obsidian/default.nix b/nixpkgs/pkgs/data/icons/iconpack-obsidian/default.nix
new file mode 100644
index 000000000000..40d4d451f3f1
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/iconpack-obsidian/default.nix
@@ -0,0 +1,38 @@
+{ lib, stdenvNoCC, fetchFromGitHub, gtk3, gnome-icon-theme, mint-x-icons, hicolor-icon-theme }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "iconpack-obsidian";
+  version = "4.15";
+
+  src = fetchFromGitHub {
+    owner = "madmaxms";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1f32isq1xyn9b6p1nx5rssqgg9gw0jp9ld19860xk29fspmlfb8n";
+  };
+
+  nativeBuildInputs = [ gtk3 ];
+
+  propagatedBuildInputs = [ gnome-icon-theme mint-x-icons hicolor-icon-theme ];
+  # still missing parent themes: Ambiant-MATE, Faenza-Dark, KFaenza
+
+  dontDropIconThemeCache = true;
+
+  installPhase = ''
+    mkdir -p $out/share/icons
+    mv Obsidian* $out/share/icons
+
+    for theme in $out/share/icons/*; do
+      gtk-update-icon-cache $theme
+    done
+  '';
+
+  meta = with lib; {
+    description = "Gnome icon pack based upon Faenza";
+    homepage = "https://github.com/madmaxms/iconpack-obsidian";
+    license = licenses.gpl3Only;
+    # darwin cannot deal with file names differing only in case
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/iso-flags/default.nix b/nixpkgs/pkgs/data/icons/iso-flags/default.nix
new file mode 100644
index 000000000000..9deff6bcc77e
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/iso-flags/default.nix
@@ -0,0 +1,45 @@
+{ lib, stdenvNoCC
+, fetchFromGitHub
+, perl
+, inkscape
+, librsvg
+, targets ? [ "all" ]
+}:
+
+stdenvNoCC.mkDerivation {
+  pname = "iso-flags";
+  version = "unstable-18012020";
+
+  src = fetchFromGitHub {
+    owner = "joielechong";
+    repo = "iso-country-flags-svg-collection";
+    rev = "9ebbd577b9a70fbfd9a1931be80c66e0d2f31a9d";
+    sha256 = "17bm7w4md56xywixfvp7vr3d6ihvxk3383i9i4rpmgm6qa9dyxdl";
+  };
+
+  nativeBuildInputs = [
+    perl
+    inkscape
+    librsvg
+    (perl.withPackages(pp: with pp; [ JSON XMLLibXML ]))
+  ];
+
+  postPatch = ''
+    patchShebangs .
+  '';
+
+  buildFlags = targets;
+
+  installPhase = ''
+    mkdir -p $out/share
+    mv build $out/share/iso-flags
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/joielechong/iso-country-flags-svg-collection";
+    description = "248 country flag SVG & PNG icons with different icon styles";
+    license = [ licenses.publicDomain ];
+    platforms = platforms.linux; # the output assets should work anywhere, but unsure about the tools to build them...
+    maintainers = [ maintainers.mkg20001 ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/kora-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/kora-icon-theme/default.nix
new file mode 100644
index 000000000000..280b89cf6395
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/kora-icon-theme/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gtk3
+, adwaita-icon-theme
+, breeze-icons
+, hicolor-icon-theme
+, gitUpdater
+}:
+
+stdenvNoCC.mkDerivation rec  {
+  pname = "kora-icon-theme";
+  version = "1.5.8";
+
+  src = fetchFromGitHub  {
+    owner = "bikass";
+    repo = "kora";
+    rev = "v${version}";
+    sha256 = "sha256-ZPjtY6s3Sgl0aU2pAxagTMFIOcwDAZQRYtvOC0FBJaI=";
+  };
+
+  nativeBuildInputs = [
+    gtk3
+  ];
+
+  propagatedBuildInputs = [
+    adwaita-icon-theme
+    breeze-icons
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/icons
+    cp -a kora* $out/share/icons/
+    rm $out/share/icons/kora*/create-new-icon-theme.cache.sh
+
+    for theme in $out/share/icons/*; do
+      gtk-update-icon-cache -f $theme
+    done
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater {
+    rev-prefix = "v";
+  };
+
+  meta = with lib; {
+    description = "An SVG icon theme in four variants";
+    homepage = "https://github.com/bikass/kora";
+    license = with licenses; [ gpl3Only ];
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/la-capitaine-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/la-capitaine-icon-theme/default.nix
new file mode 100644
index 000000000000..01e2a3ea4781
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/la-capitaine-icon-theme/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, breeze-icons
+, elementary-icon-theme
+, gnome-icon-theme
+, hicolor-icon-theme
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "la-capitaine-icon-theme";
+  version = "0.6.2";
+
+  src = fetchFromGitHub {
+    owner = "keeferrourke";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0id2dddx6rl71472l47vafx968wnklmq6b980br68w82kcvqczzs";
+  };
+
+  propagatedBuildInputs = [
+    breeze-icons
+    elementary-icon-theme
+    gnome-icon-theme
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  postPatch = ''
+    patchShebangs configure
+
+    substituteInPlace configure \
+      --replace 'DISTRO=$(format "$(lsb_release -si 2>/dev/null)")' 'DISTRO=nixos'
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/icons/$pname
+    cp -a * $out/share/icons/$pname
+    rm $out/share/icons/$pname/{configure,COPYING,LICENSE,*.md}
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Icon theme inspired by macOS and Google's Material Design";
+    homepage = "https://github.com/keeferrourke/la-capitaine-icon-theme";
+    license = with licenses; [ gpl3Plus mit ];
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/luna-icons/default.nix b/nixpkgs/pkgs/data/icons/luna-icons/default.nix
new file mode 100644
index 000000000000..05c5092e9b42
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/luna-icons/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gtk3
+, breeze-icons
+, hicolor-icon-theme
+, pantheon
+, gitUpdater
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "luna-icons";
+  version = "2.1";
+
+  src = fetchFromGitHub {
+    owner = "darkomarko42";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-zxaay4hwKgb9WWhPNG/s9JekltAvRNYmObeoTJi6Po0=";
+  };
+
+  nativeBuildInputs = [
+    gtk3
+  ];
+
+  propagatedBuildInputs = [
+    breeze-icons
+    hicolor-icon-theme
+    pantheon.elementary-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/icons
+    cp -a Luna* $out/share/icons
+
+    for theme in $out/share/icons/*; do
+      gtk-update-icon-cache "$theme"
+    done
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Icon pack based on marwaita and papirus icons";
+    homepage = "https://github.com/darkomarko42/Luna-Icons";
+    license = [ licenses.gpl3Only ];
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/maia-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/maia-icon-theme/default.nix
new file mode 100644
index 000000000000..32365b70184b
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/maia-icon-theme/default.nix
@@ -0,0 +1,53 @@
+{ lib, stdenv
+, fetchFromGitLab
+, cmake
+, extra-cmake-modules
+, gtk3
+, plasma-framework
+, kwindowsystem
+, hicolor-icon-theme
+}:
+
+stdenv.mkDerivation {
+  pname = "maia-icon-theme";
+  version = "2018-02-24";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.manjaro.org";
+    group = "artwork";
+    owner = "themes";
+    repo = "maia";
+    rev = "b61312cc80cb9d12b0d8a55b3e61668eb6b77d2d";
+    sha256 = "1g98snlh96z4sqw9sfd7fxgamh45pcj3lh1kcmng7mirvrcn2pam";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    extra-cmake-modules
+    gtk3
+    plasma-framework
+    kwindowsystem
+  ];
+
+  propagatedBuildInputs = [
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  dontWrapQtApps = true;
+
+  postInstall = ''
+    for theme in $out/share/icons/*; do
+      gtk-update-icon-cache $theme
+    done
+  '';
+
+  meta = with lib; {
+    description = "Icons based on Breeze and Super Flat Remix";
+    homepage = "https://gitlab.manjaro.org/artwork/themes/maia";
+    license = licenses.lgpl3;
+    maintainers = with maintainers; [ mounium ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/moka-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/moka-icon-theme/default.nix
new file mode 100644
index 000000000000..d9fef47da0bb
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/moka-icon-theme/default.nix
@@ -0,0 +1,50 @@
+{ lib, stdenvNoCC, fetchFromGitHub, meson, ninja, gtk3, python3, faba-icon-theme, hicolor-icon-theme, jdupes }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "moka-icon-theme";
+  version = "unstable-2019-05-29";
+
+  src = fetchFromGitHub {
+    owner = "snwh";
+    repo = pname;
+    rev = "c0355ea31e5cfdb6b44d8108f602d66817546a09";
+    sha256 = "0m4kfarkl94wdhsds2q1l9x5hfa9l3117l8j6j7qm7sf7yzr90c8";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    gtk3
+    python3
+    jdupes
+  ];
+
+  propagatedBuildInputs = [
+    faba-icon-theme
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  # These fixup steps are slow and unnecessary for this package
+  dontPatchELF = true;
+  dontRewriteSymlinks = true;
+
+  postPatch = ''
+    patchShebangs meson/post_install.py
+  '';
+
+  postInstall = ''
+    # replace duplicate files with symlinks
+    jdupes -l -r $out/share/icons
+  '';
+
+  meta = with lib; {
+    description = "Icon theme designed with a minimal flat style using simple geometry and bright colours";
+    homepage = "https://snwh.org/moka";
+    license = with licenses; [ cc-by-sa-40 gpl3Only ];
+    # darwin cannot deal with file names differing only in case
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/nordzy-cursor-theme/default.nix b/nixpkgs/pkgs/data/icons/nordzy-cursor-theme/default.nix
new file mode 100644
index 000000000000..394626cec337
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/nordzy-cursor-theme/default.nix
@@ -0,0 +1,31 @@
+{ stdenvNoCC
+, fetchFromGitHub
+, lib
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "nordzy-cursor-theme";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "alvatip";
+    repo = "Nordzy-cursors";
+    rev = "v${version}";
+    sha256 = "sha256-q9PEEyxejRQ8UCwbqsfOCL7M70pLCOLyCx8gEFmZkWA=";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/icons
+    cp -r Nordzy-cursors{,-white,-lefthand} $out/share/icons
+  '';
+
+  meta = with lib; {
+    description = "Cursor theme using the Nord color palette and based on Vimix and cz-Viator";
+    homepage = "https://github.com/alvatip/Nordzy-cursors";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [
+      alexnortung
+    ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/nordzy-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/nordzy-icon-theme/default.nix
new file mode 100644
index 000000000000..1e7b2f29b64e
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/nordzy-icon-theme/default.nix
@@ -0,0 +1,54 @@
+{ stdenvNoCC
+, fetchFromGitHub
+, lib
+, gtk3
+, jdupes
+, nordzy-themes ? [ "all" ] # Override this to only install selected themes
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "nordzy-icon-theme";
+  version = "1.8.6";
+
+  src = fetchFromGitHub {
+    owner = "alvatip";
+    repo = "Nordzy-icon";
+    rev = version;
+    sha256 = "sha256-EJDnT6ft70eTR7o2ps+zyLGNZL9NBn6Qn4nHKsskzvE=";
+  };
+
+  # In the post patch phase we should first make sure to patch shebangs.
+  postPatch = ''
+    patchShebangs install.sh
+  '';
+
+  nativeBuildInputs = [
+    gtk3
+    jdupes
+  ];
+
+  dontDropIconThemeCache = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    name= ./install.sh --dest $out/share/icons \
+      ${lib.optionalString (nordzy-themes != []) (lib.strings.concatMapStrings (theme: "-t ${theme} ") nordzy-themes)}
+
+    # Replace duplicate files with hardlinks to the first file in each
+    # set of duplicates, reducing the installed size in about 87%
+    jdupes -L -r $out/share
+
+    runHook postInstall
+  '';
+
+  dontFixup = true;
+
+  meta = with lib; {
+    description = "Icon theme using the Nord color palette, based on WhiteSur and Numix icon themes";
+    homepage = "https://github.com/alvatip/Nordzy-icon";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ alexnortung ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/numix-cursor-theme/default.nix b/nixpkgs/pkgs/data/icons/numix-cursor-theme/default.nix
new file mode 100644
index 000000000000..83961f19caf8
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/numix-cursor-theme/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenvNoCC, fetchFromGitHub, inkscape, xcursorgen }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "numix-cursor-theme";
+  version = "1.2";
+
+  src = fetchFromGitHub {
+    owner = "numixproject";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1q3w5i0h3ly6i7s9pqjdrb14kp89i78s0havri7lhiqyxizjvcvh";
+  };
+
+  nativeBuildInputs = [ inkscape xcursorgen ];
+
+  buildPhase = ''
+    patchShebangs .
+    HOME=$TMP ./build.sh
+  '';
+
+  installPhase = ''
+    install -dm 755 $out/share/icons
+    cp -dr --no-preserve='ownership' Numix-Cursor{,-Light} $out/share/icons/
+  '';
+
+  meta = with lib; {
+    description = "Numix cursor theme";
+    homepage = "https://numixproject.github.io";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ offline ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/numix-icon-theme-circle/default.nix b/nixpkgs/pkgs/data/icons/numix-icon-theme-circle/default.nix
new file mode 100644
index 000000000000..947ca68b6a1e
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/numix-icon-theme-circle/default.nix
@@ -0,0 +1,47 @@
+{ lib, stdenvNoCC, fetchFromGitHub, gtk3, numix-icon-theme, hicolor-icon-theme, gitUpdater }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "numix-icon-theme-circle";
+  version = "23.11.11";
+
+  src = fetchFromGitHub {
+    owner = "numixproject";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-sIC5GYROj53vrMRdKKEHprGP+jHZqgz2lbPPFIVuj74=";
+  };
+
+  nativeBuildInputs = [ gtk3 ];
+
+  propagatedBuildInputs = [ numix-icon-theme hicolor-icon-theme ];
+
+  dontDropIconThemeCache = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/icons
+    cp -a Numix-Circle{,-Light} $out/share/icons
+
+    for panel in $out/share/icons/*/*/panel; do
+      ln -sf $(realpath ${numix-icon-theme}/share/icons/Numix/16/$(readlink $panel)) $panel
+    done
+
+    for theme in $out/share/icons/*; do
+      gtk-update-icon-cache $theme
+    done
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Numix icon theme (circle version)";
+    homepage = "https://numixproject.github.io";
+    license = licenses.gpl3Only;
+    # darwin cannot deal with file names differing only in case
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/numix-icon-theme-square/default.nix b/nixpkgs/pkgs/data/icons/numix-icon-theme-square/default.nix
new file mode 100644
index 000000000000..1652415295ac
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/numix-icon-theme-square/default.nix
@@ -0,0 +1,47 @@
+{ lib, stdenvNoCC, fetchFromGitHub, gtk3, numix-icon-theme, hicolor-icon-theme, gitUpdater }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "numix-icon-theme-square";
+  version = "23.11.11";
+
+  src = fetchFromGitHub {
+    owner = "numixproject";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-yu9ufr1l21l6v8bRXLJcVkpBD0fDIlgePbStTLH+CDc=";
+  };
+
+  nativeBuildInputs = [ gtk3 ];
+
+  propagatedBuildInputs = [ numix-icon-theme hicolor-icon-theme ];
+
+  dontDropIconThemeCache = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/icons
+    cp -a Numix-Square{,-Light} $out/share/icons
+
+    for panel in $out/share/icons/*/*/panel; do
+      ln -sf $(realpath ${numix-icon-theme}/share/icons/Numix/16/$(readlink $panel)) $panel
+    done
+
+    for theme in $out/share/icons/*; do
+      gtk-update-icon-cache $theme
+    done
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Numix icon theme (square version)";
+    homepage = "https://numixproject.github.io";
+    license = licenses.gpl3Only;
+    # darwin cannot deal with file names differing only in case
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/numix-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/numix-icon-theme/default.nix
new file mode 100644
index 000000000000..8070b352c7d2
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/numix-icon-theme/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gtk3
+, adwaita-icon-theme
+, breeze-icons
+, gnome-icon-theme
+, hicolor-icon-theme
+, gitUpdater
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "numix-icon-theme";
+  version = "23.11.20";
+
+  src = fetchFromGitHub {
+    owner = "numixproject";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-jH3bzwyiDRovrH8GyJhwMJRHM5du8ek4leKnFSO8vAo=";
+  };
+
+  nativeBuildInputs = [
+    gtk3
+  ];
+
+  propagatedBuildInputs = [
+    adwaita-icon-theme
+    breeze-icons
+    gnome-icon-theme
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    substituteInPlace Numix/index.theme --replace Breeze breeze
+
+    mkdir -p $out/share/icons
+    cp -a Numix{,-Light} $out/share/icons/
+
+    for theme in $out/share/icons/*; do
+      gtk-update-icon-cache $theme
+    done
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Numix icon theme";
+    homepage = "https://numixproject.github.io";
+    license = licenses.gpl3Only;
+    # darwin cannot deal with file names differing only in case
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/oranchelo-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/oranchelo-icon-theme/default.nix
new file mode 100644
index 000000000000..b676b5956c73
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/oranchelo-icon-theme/default.nix
@@ -0,0 +1,46 @@
+{ lib, stdenvNoCC, fetchFromGitHub, gtk3, plasma5Packages, hicolor-icon-theme }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "oranchelo-icon-theme";
+  version = "0.9.0";
+
+  src = fetchFromGitHub {
+    owner = "OrancheloTeam";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-IDsZj/X9rFSdDpa3bL6IPEPCRe5GustPteDxSbfz+SA=";
+  };
+
+  nativeBuildInputs = [
+    gtk3
+  ];
+
+  propagatedBuildInputs = [
+    plasma5Packages.breeze-icons
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  makeFlags = [
+    "DESTDIR=$(out)"
+    "PREFIX="
+  ];
+
+  postInstall = ''
+    # space in icon name causes gtk-update-icon-cache to fail
+    mv "$out/share/icons/Oranchelo/apps/scalable/ grsync.svg" "$out/share/icons/Oranchelo/apps/scalable/grsync.svg"
+
+    for theme in $out/share/icons/*; do
+      gtk-update-icon-cache "$theme"
+    done
+  '';
+
+  meta = with lib; {
+    description = "Oranchelo icon theme";
+    homepage = "https://github.com/OrancheloTeam/oranchelo-icon-theme";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ _414owen ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/paper-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/paper-icon-theme/default.nix
new file mode 100644
index 000000000000..ae5a43eca0b3
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/paper-icon-theme/default.nix
@@ -0,0 +1,49 @@
+{ lib, stdenvNoCC, fetchFromGitHub, meson, ninja, gtk3, gnome, gnome-icon-theme, hicolor-icon-theme, jdupes }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "paper-icon-theme";
+  version = "unstable-2020-03-12";
+
+  src = fetchFromGitHub {
+    owner = "snwh";
+    repo = pname;
+    rev = "aa3e8af7a1f0831a51fd7e638a4acb077a1e5188";
+    sha256 = "0x6qzch4rrc8firb1dcf926j93gpqxvd7h6dj5wwczxbvxi5bd77";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    gtk3
+    jdupes
+  ];
+
+  propagatedBuildInputs = [
+    gnome.adwaita-icon-theme
+    gnome-icon-theme
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  # These fixup steps are slow and unnecessary for this package
+  dontPatchELF = true;
+  dontRewriteSymlinks = true;
+
+  postInstall = ''
+    # The cache for Paper-Mono-Dark is missing
+    gtk-update-icon-cache "$out"/share/icons/Paper-Mono-Dark;
+
+    # replace duplicate files with symlinks
+    jdupes -l -r $out/share/icons
+  '';
+
+  meta = with lib; {
+    description = "Modern icon theme designed around bold colours and simple geometric shapes";
+    homepage = "https://snwh.org/paper";
+    license = with licenses; [ cc-by-sa-40 lgpl3 ];
+    # darwin cannot deal with file names differing only in case
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/papirus-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/papirus-icon-theme/default.nix
new file mode 100644
index 000000000000..75237237e203
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/papirus-icon-theme/default.nix
@@ -0,0 +1,63 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gtk3
+, breeze-icons
+, elementary-icon-theme
+, hicolor-icon-theme
+, papirus-folders
+, color ? null
+, withElementary ? false
+, gitUpdater
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "papirus-icon-theme";
+  version = "20231101";
+
+  src = fetchFromGitHub {
+    owner = "PapirusDevelopmentTeam";
+    repo = pname;
+    rev = version;
+    hash = "sha256-0ooHuMqGzlMLVTR/u+kCJLibfqTAtq662EG8i3JIzPA=";
+  };
+
+  nativeBuildInputs = [
+    gtk3
+    papirus-folders
+  ];
+
+  propagatedBuildInputs = [
+    breeze-icons
+    hicolor-icon-theme
+  ] ++ lib.optional withElementary [
+    elementary-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/icons
+    mv ${lib.optionalString withElementary "{,e}"}Papirus* $out/share/icons
+
+    for theme in $out/share/icons/*; do
+      ${lib.optionalString (color != null) "${papirus-folders}/bin/papirus-folders -t $theme -o -C ${color}"}
+      gtk-update-icon-cache --force $theme
+    done
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Pixel perfect icon theme for Linux";
+    homepage = "https://github.com/PapirusDevelopmentTeam/papirus-icon-theme";
+    license = licenses.gpl3Only;
+    # darwin gives hash mismatch in source, probably because of file names differing only in case
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo moni ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/papirus-maia-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/papirus-maia-icon-theme/default.nix
new file mode 100644
index 000000000000..814d9ced017b
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/papirus-maia-icon-theme/default.nix
@@ -0,0 +1,45 @@
+{ lib, stdenv, fetchFromGitHub, cmake, gtk3, breeze-icons, gnome-icon-theme, papirus-icon-theme, hicolor-icon-theme }:
+
+stdenv.mkDerivation rec {
+  pname = "papirus-maia-icon-theme";
+  version = "2019-07-26";
+
+  src = fetchFromGitHub {
+    owner = "Ste74";
+    repo = pname;
+    rev = "90d47c817cc0edeed8b5a90335e669948ff4a116";
+    sha256 = "0d6lvdg5nw5wfaq8lxszcws174vg12ywkrqzn6czimhmhp48jf5p";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    gtk3
+  ];
+
+  propagatedBuildInputs = [
+    breeze-icons
+    gnome-icon-theme
+    papirus-icon-theme
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  postPatch = ''
+    substituteInPlace CMakeLists.txt --replace /usr "$out"
+  '';
+
+  postInstall = ''
+    for theme in $out/share/icons/*; do
+      gtk-update-icon-cache $theme
+    done
+  '';
+
+  meta = with lib; {
+    description = "Manjaro variation of Papirus icon theme";
+    homepage = "https://github.com/Ste74/papirus-maia-icon-theme";
+    license = licenses.lgpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/papirus-nord/default.nix b/nixpkgs/pkgs/data/icons/papirus-nord/default.nix
new file mode 100644
index 000000000000..178b1ba3470a
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/papirus-nord/default.nix
@@ -0,0 +1,75 @@
+{ stdenvNoCC
+, lib
+, fetchFromGitHub
+, gtk3
+, getent
+, papirus-icon-theme
+, accent ? "frostblue1"
+}:
+let
+  validAccents = [
+    "auroragreen"
+    "auroragreenb"
+    "auroramagenta"
+    "auroramagentab"
+    "auroraorange"
+    "auroraorangeb"
+    "aurorared"
+    "auroraredb"
+    "aurorayellow"
+    "aurorayellowb"
+    "frostblue1"
+    "frostblue2"
+    "frostblue3"
+    "frostblue4"
+    "polarnight1"
+    "polarnight2"
+    "polarnight3"
+    "polarnight3"
+    "snowstorm1"
+    "snowstorm1b"
+  ];
+  pname = "papirus-nord";
+  version = "3.2.0";
+in
+lib.checkListOfEnum "${pname}: accent colors" validAccents [ accent ]
+
+stdenvNoCC.mkDerivation {
+  inherit pname version;
+
+  src = fetchFromGitHub {
+    owner = "adapta-projects";
+    repo = "papirus-nord";
+    rev = version;
+    sha256 = "sha256-KwwTDGJQ4zN9XH/pKFQDQ+EgyuSCFhN2PQAI35G+3YM=";
+  };
+
+  nativeBuildInputs = [ gtk3 getent ];
+
+  postPatch = ''
+    patchShebangs ./papirus-folders
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/icons
+    cp -r --no-preserve=mode ${papirus-icon-theme}/share/icons/Papirus* $out/share/icons
+    for size in 64x64 48x48 32x32 24x24 22x22; do
+      cp -f Icons/$size/* $out/share/icons/Papirus/$size/places
+    done
+    for theme in $out/share/icons/*; do
+        USER_HOME=$HOME DISABLE_UPDATE_ICON_CACHE=1 \
+          ./papirus-folders -t $theme -o -C ${accent}
+        gtk-update-icon-cache --force $theme
+    done
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Nord version of Papirus Icon Theme";
+    homepage = "https://github.com/Adapta-Projects/Papirus-Nord";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ aacebedo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/phinger-cursors/default.nix b/nixpkgs/pkgs/data/icons/phinger-cursors/default.nix
new file mode 100644
index 000000000000..82742723806f
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/phinger-cursors/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "phinger-cursors";
+  version = "1.1";
+
+  src = fetchurl {
+    url = "https://github.com/phisch/phinger-cursors/releases/download/v${version}/phinger-cursors-variants.tar.bz2";
+    sha256 = "sha256-II+1x+rcjGRRVB8GYkVwkKVHNHcNaBKRb6C613901oc=";
+  };
+
+  sourceRoot = ".";
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/icons
+    cp -r ./phinger-cursors* $out/share/icons
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "The most over-engineered cursor theme";
+    homepage = "https://github.com/phisch/phinger-cursors";
+    platforms = platforms.unix;
+    license = licenses.cc-by-sa-40;
+    maintainers = with maintainers; [ moni ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/pop-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/pop-icon-theme/default.nix
new file mode 100644
index 000000000000..2a27122da5db
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/pop-icon-theme/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, meson
+, ninja
+, gtk3
+, adwaita-icon-theme
+, hicolor-icon-theme
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "pop-icon-theme";
+  version = "3.3.0";
+
+  src = fetchFromGitHub {
+    owner = "pop-os";
+    repo = "icon-theme";
+    rev = "v${version}";
+    sha256 = "sha256-7cDXEkqtPNQsyZvuYZhBSgAYshkDlP8o8umWGbNLtjw=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    gtk3
+  ];
+
+  propagatedBuildInputs = [
+    adwaita-icon-theme
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  meta = with lib; {
+    description = "Icon theme for Pop!_OS with a semi-flat design and raised 3D motifs";
+    homepage = "https://github.com/pop-os/icon-theme";
+    license = with licenses; [ cc-by-sa-40 gpl3 ];
+    platforms = platforms.linux; # hash mismatch on darwin due to file names differing only in case
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/qogir-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/qogir-icon-theme/default.nix
new file mode 100644
index 000000000000..bfa4e33fc8ca
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/qogir-icon-theme/default.nix
@@ -0,0 +1,68 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gitUpdater
+, gtk3
+, hicolor-icon-theme
+, jdupes
+, colorVariants ? [] # default is all
+, themeVariants ? [] # default is all
+}:
+
+let
+  pname = "qogir-icon-theme";
+
+in
+lib.checkListOfEnum "${pname}: color variants" [ "standard" "dark" "all" ] colorVariants
+lib.checkListOfEnum "${pname}: theme variants" [ "default" "manjaro" "ubuntu" "all" ] themeVariants
+
+stdenvNoCC.mkDerivation rec {
+  inherit pname;
+  version = "2023-06-05";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-qiHmA/K4hdXVSFzergGhgssKR+kXp3X0cqtX1X5ayM4=";
+  };
+
+  nativeBuildInputs = [ gtk3 jdupes ];
+
+  propagatedBuildInputs = [ hicolor-icon-theme ];
+
+  dontDropIconThemeCache = true;
+
+  # These fixup steps are slow and unnecessary.
+  dontPatchELF = true;
+  dontRewriteSymlinks = true;
+
+  postPatch = ''
+    patchShebangs install.sh
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/icons
+
+    name= ./install.sh \
+      ${lib.optionalString (themeVariants != []) ("--theme " + builtins.toString themeVariants)} \
+      ${lib.optionalString (colorVariants != []) ("--color " + builtins.toString colorVariants)} \
+      --dest $out/share/icons
+
+    jdupes --quiet --link-soft --recurse $out/share
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Flat colorful design icon theme";
+    homepage = "https://github.com/vinceliuice/Qogir-icon-theme";
+    license = with licenses; [ gpl3Only ];
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/quintom-cursor-theme/default.nix b/nixpkgs/pkgs/data/icons/quintom-cursor-theme/default.nix
new file mode 100644
index 000000000000..645b2ac54734
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/quintom-cursor-theme/default.nix
@@ -0,0 +1,28 @@
+{ stdenvNoCC, fetchFromGitLab, lib }:
+
+stdenvNoCC.mkDerivation {
+  pname = "quintom-cursor-theme";
+  version = "unstable-2019-10-24";
+
+  src = fetchFromGitLab {
+    owner = "Burning_Cube";
+    repo = "quintom-cursor-theme";
+    rev = "d23e57333e816033cf20481bdb47bb1245ed5d4d";
+    hash = "sha256-Sec2DSnWYal6wzYzP9W+DDuTKHsFHWdRYyMzliMU5bU=A";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/icons
+    for theme in "Quintom_Ink" "Quintom_Snow"; do
+      cp -r "$theme Cursors/$theme" $out/share/icons/
+    done
+  '';
+
+  meta = with lib; {
+    description = "A cursor theme designed to look decent";
+    homepage = "https://gitlab.com/Burning_Cube/quintom-cursor-theme";
+    platforms = platforms.unix;
+    license = with licenses; [ cc-by-sa-40 gpl3Only ];
+    maintainers = with maintainers; [ frogamic ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/reversal-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/reversal-icon-theme/default.nix
new file mode 100644
index 000000000000..b636bba4a301
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/reversal-icon-theme/default.nix
@@ -0,0 +1,77 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gtk3
+, jdupes
+, adwaita-icon-theme
+, hicolor-icon-theme
+, numix-icon-theme-circle
+, gitUpdater
+, allColorVariants ? false
+, colorVariants ? []
+}:
+
+let
+  pname = "reversal-icon-theme";
+in
+lib.checkListOfEnum "${pname}: color variants" [ "-blue" "-red" "-pink" "-purple" "-green" "-orange" "-brown" "-grey" "-black" "-cyan" ] colorVariants
+
+stdenvNoCC.mkDerivation rec {
+  inherit pname;
+  version = "unstable-2023-05-13";
+
+  src = fetchFromGitHub {
+    owner = "yeyushengfan258";
+    repo = pname;
+    rev = "bdae2ea365731b25a869fc2c8c6a1fb849eaf5b2";
+    hash = "sha256-Cd+1ggyS+Y2Sk8w5zifc4IFOwbFrbjL6S6awES/W0EE=";
+  };
+
+  nativeBuildInputs = [
+    gtk3
+    jdupes
+  ];
+
+  propagatedBuildInputs = [
+    adwaita-icon-theme
+    hicolor-icon-theme
+    numix-icon-theme-circle
+  ];
+
+  dontDropIconThemeCache = true;
+
+  # These fixup steps are slow and unnecessary for this package.
+  # Package may install many small files.
+  dontPatchELF = true;
+  dontRewriteSymlinks = true;
+
+  postPatch = ''
+    patchShebangs install.sh
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/icons
+
+    name= ./install.sh \
+      ${if allColorVariants then "-a" else builtins.toString colorVariants} \
+      -d $out/share/icons
+
+    rm $out/share/icons/*/{AUTHORS,COPYING}
+
+    jdupes --quiet --link-soft --recurse $out/share
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "A colorful Design Rectangle icon theme";
+    homepage = "https://github.com/yeyushengfan258/Reversal-icon-theme";
+    license = licenses.gpl3Plus;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/rose-pine/default.nix b/nixpkgs/pkgs/data/icons/rose-pine/default.nix
new file mode 100644
index 000000000000..051294c5d3a8
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/rose-pine/default.nix
@@ -0,0 +1,47 @@
+{ stdenvNoCC
+, lib
+, fetchFromGitHub
+, gtk3
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "rose-pine-icon-theme";
+  version = "unstable-2022-09-01";
+
+  src = fetchFromGitHub {
+    owner = "rose-pine";
+    repo = "gtk";
+    rev = "7a4c40989fd42fd8d4a797f460c79fc4a085c304";
+    sha256 = "0q74wjyrsjyym770i3sqs071bvanwmm727xzv50wk6kzvpyqgi67";
+  };
+
+  nativeBuildInputs = [
+    gtk3
+  ];
+
+  # avoid the makefile which is only for the theme maintainers
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/icons
+    mv icons/rose-pine-icons $out/share/icons/rose-pine
+    mv icons/rose-pine-dawn-icons $out/share/icons/rose-pine-dawn
+    mv icons/rose-pine-moon-icons $out/share/icons/rose-pine-moon
+
+    for theme in $out/share/icons/*; do
+      gtk-update-icon-cache $theme
+    done
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Rosé Pine icon theme for GTK";
+    homepage = "https://github.com/rose-pine/gtk";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [romildo the-argus];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/simp1e-cursors/default.nix b/nixpkgs/pkgs/data/icons/simp1e-cursors/default.nix
new file mode 100644
index 000000000000..962f4ea2618a
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/simp1e-cursors/default.nix
@@ -0,0 +1,42 @@
+{ lib, stdenvNoCC, fetchFromGitLab, python3, librsvg, xcursorgen }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "simp1e-cursors";
+  version = "20221103.2";
+
+  src = fetchFromGitLab {
+    owner = "cursors";
+    repo = "simp1e";
+    rev = version;
+    sha256 = "sha256-3DCF6TwxWwYK5pF2Ykr3OwF76H7J03vLNZch/XoZZZk=";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    (python3.withPackages (ps: with ps; [ pillow ]))
+    librsvg
+    xcursorgen
+  ];
+
+  buildPhase = ''
+    runHook preBuild
+    patchShebangs ./build.sh ./cursor-generator
+    HOME=$TMP ./build.sh
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    install -dm 755 $out/share/icons
+    cp -r built_themes/* $out/share/icons/
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "An aesthetic cursor theme for Linux desktops";
+    homepage = "https://gitlab.com/cursors/simp1e";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ natto1784 ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/super-tiny-icons/default.nix b/nixpkgs/pkgs/data/icons/super-tiny-icons/default.nix
new file mode 100644
index 000000000000..48af800e1f2b
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/super-tiny-icons/default.nix
@@ -0,0 +1,34 @@
+{ pkgs, lib, stdenvNoCC, fetchFromGitHub, }:
+
+stdenvNoCC.mkDerivation {
+  pname = "super-tiny-icons";
+  version = "unstable-2023-11-06";
+
+  src = fetchFromGitHub {
+    owner = "edent";
+    repo = "SuperTinyIcons";
+    rev = "888f449af8fb8df93241204e99fece85b9d225a5";
+    hash = "sha256-L/7CEvG0NPbF8+ysiEHPiPnCMAW3cUu/e3XwtatRdbg=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/icons/SuperTinyIcons
+    find $src/images -type d -exec cp -r {} $out/share/icons/SuperTinyIcons/ \;
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Miniscule SVG versions of common logos";
+    longDescription = ''
+      Super Tiny Web Icons are minuscule SVG versions of your favourite logos.
+      The average size is under 568 bytes!
+    '';
+    homepage = "https://github.com/edent/SuperTinyIcons";
+    license = licenses.mit;
+    maintainers = [ maintainers.h7x4 ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/tango-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/tango-icon-theme/default.nix
new file mode 100644
index 000000000000..a607748c7c38
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/tango-icon-theme/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenv, fetchurl, intltool, pkg-config, iconnamingutils, imagemagick, librsvg
+, gtk/*any version*/, gnome-icon-theme, hicolor-icon-theme
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tango-icon-theme";
+  version = "0.8.90";
+
+  src = fetchurl {
+    url = "http://tango.freedesktop.org/releases/tango-icon-theme-${version}.tar.gz";
+    sha256 = "13n8cpml71w6zfm2jz5fa7r1z18qlzk4gv07r6n1in2p5l1xi63f";
+  };
+
+  patches = [ ./rsvg-convert.patch ];
+
+  nativeBuildInputs = [ pkg-config intltool ];
+  buildInputs = [ iconnamingutils imagemagick librsvg ];
+  propagatedBuildInputs = [ gnome-icon-theme hicolor-icon-theme ];
+  # still missing parent icon themes: cristalsvg
+
+  dontDropIconThemeCache = true;
+
+  configureFlags = [ "--enable-png-creation" ];
+
+  postInstall = '''${gtk.out}/bin/gtk-update-icon-cache' "$out/share/icons/Tango" '';
+
+  meta = with lib; {
+    description = "A basic set of icons";
+    homepage = "http://tango.freedesktop.org/Tango_Icon_Library";
+    platforms = platforms.linux;
+    license = licenses.publicDomain;
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/tango-icon-theme/rsvg-convert.patch b/nixpkgs/pkgs/data/icons/tango-icon-theme/rsvg-convert.patch
new file mode 100644
index 000000000000..ee3d00ccf3ed
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/tango-icon-theme/rsvg-convert.patch
@@ -0,0 +1,34 @@
+Based on https://build.opensuse.org/package/view_file?file=tango-icon-theme-rsvg-2_35_2.patch&package=tango-icon-theme&project=openSUSE%3A12.2&rev=faf71bf8278d5df6ec8a31726e5b8542
+
+diff -ru -x '*~' tango-icon-theme-0.8.90/configure tango-icon-theme-0.8.90-new/configure
+--- tango-icon-theme-0.8.90/configure	2009-02-26 04:08:00.000000000 +0100
++++ tango-icon-theme-0.8.90-new/configure	2013-08-15 17:54:24.167065399 +0200
+@@ -6554,7 +6554,7 @@
+   enable_large_bitmaps=no
+ fi
+    if test "x$enable_large_bitmaps" = "xyes"; then
+-      svgconvert_prog="rsvg"
++      svgconvert_prog="rsvg-convert"
+    else
+       svgconvert_prog="ksvgtopng"
+    fi
+diff -ru -x '*~' tango-icon-theme-0.8.90/svg2png.sh.in tango-icon-theme-0.8.90-new/svg2png.sh.in
+--- tango-icon-theme-0.8.90/svg2png.sh.in	2007-02-16 21:04:29.000000000 +0100
++++ tango-icon-theme-0.8.90-new/svg2png.sh.in	2013-08-15 17:54:08.275084837 +0200
+@@ -9,12 +9,14 @@
+ 
+ ICONFILE=`basename ${3}`
+ ICONNAME=`echo ${ICONFILE} | sed -e "s/.svg//"`
+-if test `basename $SVGCONVERT` = "rsvg"; then
++if test `basename $SVGCONVERT` = "rsvg-convert"; then
+     OPTIONS="-w ${1} -h ${1}"
++    OUTPUT="-o"
+ else
+     OPTIONS="${1} ${1}"
++    OUTPUT=""
+ fi
+ 
+ echo "${SVGCONVERT} ${OPTIONS} ${3} ${2}/${ICONNAME}.png"
+-${SVGCONVERT} ${OPTIONS} ${3} ${2}/${ICONNAME}.png
++${SVGCONVERT} ${OPTIONS} ${3} ${OUTPUT} ${2}/${ICONNAME}.png
+ 
diff --git a/nixpkgs/pkgs/data/icons/tau-hydrogen/default.nix b/nixpkgs/pkgs/data/icons/tau-hydrogen/default.nix
new file mode 100644
index 000000000000..17a6d31b8a56
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/tau-hydrogen/default.nix
@@ -0,0 +1,36 @@
+{
+  stdenv,
+  lib,
+  fetchFromGitHub,
+  meson,
+  ninja,
+  librsvg,
+  xorg
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "tau-hydrogen";
+  version = "1.0.14";
+
+  src = fetchFromGitHub {
+    owner = "tau-OS";
+    repo = "tau-hydrogen";
+    rev = finalAttrs.version;
+    hash = "sha256-8awcowBm0hwoYYm/wtKeqCWRhgXh2rI3UvAlL1tbj6c=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    librsvg
+    xorg.xcursorgen
+  ];
+
+  meta = with lib; {
+    description = "The GTK icon theme for tauOS";
+    homepage = "https://github.com/tau-OS/tau-hydrogen";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ ashvith-shetty ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/icons/tela-circle-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/tela-circle-icon-theme/default.nix
new file mode 100644
index 000000000000..9b1043467f14
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/tela-circle-icon-theme/default.nix
@@ -0,0 +1,74 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, adwaita-icon-theme
+, breeze-icons
+, gtk3
+, hicolor-icon-theme
+, jdupes
+, gitUpdater
+, allColorVariants ? false
+, circularFolder ? false
+, colorVariants ? [] # default is standard
+}:
+
+let
+  pname = "tela-circle-icon-theme";
+in
+lib.checkListOfEnum "${pname}: color variants" [ "standard" "black" "blue" "brown" "green" "grey" "orange" "pink" "purple" "red" "yellow" "manjaro" "ubuntu" "dracula" "nord" ] colorVariants
+
+stdenvNoCC.mkDerivation rec {
+  inherit pname;
+  version = "2023-10-07";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = version;
+    hash = "sha256-il+bYIcwm0BQF6U0J6h6rlzHSGSHYN/O8BezehYIpQ4=";
+  };
+
+  nativeBuildInputs = [
+    gtk3
+    jdupes
+  ];
+
+  propagatedBuildInputs = [
+    adwaita-icon-theme
+    breeze-icons
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  # These fixup steps are slow and unnecessary for this package.
+  # Package may install almost 400 000 small files.
+  dontPatchELF = true;
+  dontRewriteSymlinks = true;
+
+  postPatch = ''
+    patchShebangs install.sh
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    ./install.sh -d $out/share/icons \
+      ${lib.optionalString circularFolder "-c"} \
+      ${if allColorVariants then "-a" else builtins.toString colorVariants}
+
+    jdupes --quiet --link-soft --recurse $out/share
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Flat and colorful personality icon theme";
+    homepage = "https://github.com/vinceliuice/Tela-circle-icon-theme";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux; # darwin use case-insensitive filesystems that cause hash mismatches
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/tela-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/tela-icon-theme/default.nix
new file mode 100644
index 000000000000..f77ab73032c3
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/tela-icon-theme/default.nix
@@ -0,0 +1,44 @@
+{ lib, stdenvNoCC, fetchFromGitHub, gtk3, jdupes, hicolor-icon-theme }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "tela-icon-theme";
+  version = "2023-06-25";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = "tela-icon-theme";
+    rev = version;
+    hash = "sha256-tv0C4mW2A3dScUXBWa7a3lkG4lPIjZTsj5b1/oEVuiw=";
+  };
+
+  nativeBuildInputs = [ gtk3 jdupes ];
+
+  propagatedBuildInputs = [ hicolor-icon-theme ];
+
+  dontDropIconThemeCache = true;
+
+  # These fixup steps are slow and unnecessary.
+  dontPatchELF = true;
+  dontRewriteSymlinks = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    patchShebangs install.sh
+    mkdir -p $out/share/icons
+    ./install.sh -a -d $out/share/icons
+    jdupes -l -r $out/share/icons
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A flat colorful Design icon theme";
+    homepage = "https://github.com/vinceliuice/tela-icon-theme";
+    changelog = "https://github.com/vinceliuice/Tela-icon-theme/releases/tag/${src.rev}";
+    license = licenses.gpl3Only;
+    # darwin systems use case-insensitive filesystems that cause hash mismatches
+    platforms = subtractLists platforms.darwin platforms.unix;
+    maintainers = with maintainers; [ figsoda ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/vanilla-dmz/default.nix b/nixpkgs/pkgs/data/icons/vanilla-dmz/default.nix
new file mode 100644
index 000000000000..6e391aa19ef0
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/vanilla-dmz/default.nix
@@ -0,0 +1,61 @@
+{ stdenvNoCC
+, lib
+, fetchzip
+, xorg
+, hicolor-icon-theme
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "vanilla-dmz";
+  version = "0.4.5";
+
+  src = fetchzip {
+    url = "mirror://debian/pool/main/d/dmz-cursor-theme/dmz-cursor-theme_${version}.tar.xz";
+    sha256 = "14r8fri4byyzavzdifpga6118hxqjwpzd11xxj28s16zxcanq16m";
+  };
+
+  buildInputs = [
+    xorg.xcursorgen
+  ];
+
+  propagatedBuildInputs = [
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  buildPhase = ''
+    runHook preBuild
+
+    for theme in DMZ-{White,Black}; do
+      pushd $theme/pngs
+      ./make.sh
+      popd
+    done
+
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    for theme in DMZ-{White,Black}; do
+      mkdir -p $out/share/icons/$theme/cursors
+      cp -a $theme/xcursors/* $out/share/icons/$theme/cursors/
+      install -m644 $theme/index.theme $out/share/icons/$theme/index.theme
+    done
+
+    ln -s $out/share/icons/{DMZ-White,Vanilla-DMZ}
+    ln -s $out/share/icons/{DMZ-Black,Vanilla-DMZ-AA}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://jimmac.musichall.cz";
+    description = "A style neutral scalable cursor theme";
+    platforms = platforms.all;
+    license = licenses.cc-by-sa-30;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/vimix-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/vimix-icon-theme/default.nix
new file mode 100644
index 000000000000..45ac27b49650
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/vimix-icon-theme/default.nix
@@ -0,0 +1,69 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gitUpdater
+, gtk3
+, hicolor-icon-theme
+, jdupes
+, colorVariants ? [] # default: all
+}:
+
+let
+  pname = "vimix-icon-theme";
+
+in
+lib.checkListOfEnum "${pname}: color variants" [ "standard" "Amethyst" "Beryl" "Doder" "Ruby" "Jade" "Black" "White" ] colorVariants
+
+stdenvNoCC.mkDerivation rec {
+  inherit pname;
+  version = "2023-06-26";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = version;
+    sha256 = "5pTYsWdmjSDyrEK+Jbg/9dQ1FHI2rdnr1n0Ysd5mg/U=";
+  };
+
+  nativeBuildInputs = [
+    gtk3
+    jdupes
+  ];
+
+  propagatedBuildInputs = [
+    hicolor-icon-theme
+  ];
+
+  dontDropIconThemeCache = true;
+
+  # These fixup steps are slow and unnecessary for this package
+  dontPatchELF = true;
+  dontRewriteSymlinks = true;
+
+  postPatch = ''
+    patchShebangs install.sh
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    ./install.sh \
+      ${if colorVariants != [] then builtins.toString colorVariants else "-a"} \
+      -d $out/share/icons
+
+    # replace duplicate files with symlinks
+    jdupes --quiet --link-soft --recurse $out/share
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "A Material Design icon theme based on Paper icon theme";
+    homepage = "https://github.com/vinceliuice/vimix-icon-theme";
+    license = with licenses; [ cc-by-sa-40 ];
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/volantes-cursors/default.nix b/nixpkgs/pkgs/data/icons/volantes-cursors/default.nix
new file mode 100644
index 000000000000..b7ef49135e93
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/volantes-cursors/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, inkscape
+, xcursorgen
+}:
+stdenv.mkDerivation {
+  pname = "volantes-cursors";
+  version = "2022-08-27";
+
+  src = fetchFromGitHub {
+    owner = "varlesh";
+    repo = "volantes-cursors";
+    rev = "b13a4bbf6bd1d7e85fadf7f2ecc44acc198f8d01";
+    hash = "sha256-vJe1S+YHrUBwJSwt2+InTu5ho2FOtz7FjDxu0BIA1Js=";
+  };
+
+  strictDeps = true;
+  nativeBuildInputs = [ inkscape xcursorgen ];
+
+  makeTargets = [ "build" ];
+
+  makeFlags = [ "DESTDIR=$(out)" "PREFIX=" ];
+
+  meta = with lib; {
+    homepage = "https://www.pling.com/p/1356095/";
+    description = "Classic cursor theme with a flying style";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ jordanisaacs ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/whitesur-cursors/default.nix b/nixpkgs/pkgs/data/icons/whitesur-cursors/default.nix
new file mode 100644
index 000000000000..c16efa996d34
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/whitesur-cursors/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+}:
+
+stdenvNoCC.mkDerivation {
+  pname = "whitesur-cursors";
+  version = "unstable-2022-06-17";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = "WhiteSur-cursors";
+    rev = "5c94e8c22de067282f4cf6d782afd7b75cdd08c8";
+    sha256 = "sha256-CFse0XZzJu+PWDcqmvIXvue+3cKX47oavZU9HYRDAg0=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+    install -dm 755 $out/share/icons/WhiteSur-cursors
+    cp -r dist/* $out/share/icons/WhiteSur-cursors
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "An x-cursor theme inspired by macOS and based on capitaine-cursors";
+    homepage = "https://github.com/vinceliuice/WhiteSur-cursors";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ tomasajt ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/data/icons/whitesur-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/whitesur-icon-theme/default.nix
new file mode 100644
index 000000000000..a6514b3fe0d4
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/whitesur-icon-theme/default.nix
@@ -0,0 +1,75 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gtk3
+, hicolor-icon-theme
+, jdupes
+, boldPanelIcons ? false
+, blackPanelIcons ? false
+, alternativeIcons ? false
+, themeVariants ? []
+}:
+
+let pname = "Whitesur-icon-theme";
+in
+lib.checkListOfEnum "${pname}: theme variants" [
+  "default"
+  "purple"
+  "pink"
+  "red"
+  "orange"
+  "yellow"
+  "green"
+  "grey"
+  "nord"
+  "all"
+] themeVariants
+
+stdenvNoCC.mkDerivation rec {
+  inherit pname;
+  version = "2023-07-03";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = version;
+    hash = "sha256-lq6d3BForrvzEJYeEMQZplvn/p6dPjggTToAU9UcPoM=";
+  };
+
+  nativeBuildInputs = [ gtk3 jdupes ];
+
+  buildInputs = [ hicolor-icon-theme ];
+
+  # These fixup steps are slow and unnecessary
+  dontPatchELF = true;
+  dontRewriteSymlinks = true;
+  dontDropIconThemeCache = true;
+
+  postPatch = ''
+    patchShebangs install.sh
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    ./install.sh --dest $out/share/icons \
+      --name WhiteSur \
+      --theme ${builtins.toString themeVariants} \
+      ${lib.optionalString alternativeIcons "--alternative"} \
+      ${lib.optionalString boldPanelIcons "--bold"} \
+      ${lib.optionalString blackPanelIcons "--black"}
+
+    jdupes --link-soft --recurse $out/share
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "MacOS Big Sur style icon theme for Linux desktops";
+    homepage = "https://github.com/vinceliuice/WhiteSur-icon-theme";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ icy-thought ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/data/icons/zafiro-icons/default.nix b/nixpkgs/pkgs/data/icons/zafiro-icons/default.nix
new file mode 100644
index 000000000000..2f0c03220daf
--- /dev/null
+++ b/nixpkgs/pkgs/data/icons/zafiro-icons/default.nix
@@ -0,0 +1,76 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gtk3
+, breeze-icons
+, gnome-icon-theme
+, numix-icon-theme
+, numix-icon-theme-circle
+, hicolor-icon-theme
+, jdupes
+, gitUpdater
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "zafiro-icons";
+  version = "1.3";
+
+  src = fetchFromGitHub {
+    owner = "zayronxio";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-IbFnlUOSADYMNMfvRuRPndxcQbnV12BqMDb9bJRjnoU=";
+  };
+
+  nativeBuildInputs = [
+    gtk3
+    jdupes
+  ];
+
+  propagatedBuildInputs = [
+    breeze-icons
+    gnome-icon-theme
+    numix-icon-theme
+    numix-icon-theme-circle
+    hicolor-icon-theme
+    # still missing parent icon themes: Surfn
+  ];
+
+  dontDropIconThemeCache = true;
+
+  dontPatchELF = true;
+  dontRewriteSymlinks = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/icons
+
+    for theme in Dark Light; do
+      cp -a $theme $out/share/icons/Zafiro-icons-$theme
+
+      # remove unneeded files
+      rm $out/share/icons/Zafiro-icons-$theme/_config.yml
+
+      # remove files with non-ascii characters in name
+      # https://github.com/zayronxio/Zafiro-icons/issues/111
+      rm $out/share/icons/Zafiro-icons-$theme/apps/scalable/βTORRENT.svg
+
+      gtk-update-icon-cache $out/share/icons/Zafiro-icons-$theme
+    done
+
+    jdupes --link-soft --recurse $out/share
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Icon pack flat with light colors";
+    homepage = "https://github.com/zayronxio/Zafiro-icons";
+    license = with licenses; [ gpl3 ];
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/machine-learning/mnist/default.nix b/nixpkgs/pkgs/data/machine-learning/mnist/default.nix
new file mode 100644
index 000000000000..b4c4d43e99ae
--- /dev/null
+++ b/nixpkgs/pkgs/data/machine-learning/mnist/default.nix
@@ -0,0 +1,45 @@
+{ lib, stdenvNoCC, fetchurl }:
+let
+  srcs = {
+    train-images = fetchurl {
+      url = "http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz";
+      sha256 = "029na81z5a1c9l1a8472dgshami6f2iixs3m2ji6ym6cffzwl3s4";
+    };
+    train-labels = fetchurl {
+      url = "http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz";
+      sha256 = "0p152200wwx0w65sqb65grb3v8ncjp230aykmvbbx2sm19556lim";
+    };
+    test-images = fetchurl {
+      url = "http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz";
+      sha256 = "1rn4vfigaxn2ms24bf4jwzzflgp3hvz0gksvb8j7j70w19xjqhld";
+    };
+    test-labels = fetchurl {
+      url = "http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz";
+      sha256 = "1imf0i194ndjxzxdx87zlgn728xx3p1qhq1ssbmnvv005vwn1bpp";
+    };
+  };
+in
+  stdenvNoCC.mkDerivation rec {
+    pname = "mnist";
+    version = "2018-11-16";
+    installPhase = ''
+      mkdir -p $out
+      ln -s "${srcs.train-images}" "$out/${srcs.train-images.name}"
+      ln -s "${srcs.train-labels}" "$out/${srcs.train-labels.name}"
+      ln -s "${srcs.test-images}" "$out/${srcs.test-images.name}"
+      ln -s "${srcs.test-labels}" "$out/${srcs.test-labels.name}"
+    '';
+    dontUnpack = true;
+    meta = with lib; {
+      description = "A large database of handwritten digits";
+      longDescription = ''
+        The MNIST database (Modified National Institute of Standards and
+        Technology database) is a large database of handwritten digits that is
+        commonly used for training various image processing systems.
+      '';
+      homepage = "http://yann.lecun.com/exdb/mnist/index.html";
+      license = licenses.cc-by-sa-30;
+      platforms = platforms.all;
+      maintainers = with maintainers; [ cmcdragonkai ];
+    };
+  }
diff --git a/nixpkgs/pkgs/data/misc/adapta-backgrounds/default.nix b/nixpkgs/pkgs/data/misc/adapta-backgrounds/default.nix
new file mode 100644
index 000000000000..417bd7392b52
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/adapta-backgrounds/default.nix
@@ -0,0 +1,25 @@
+{ lib, stdenv, fetchFromGitHub, meson, ninja, pkg-config, glib }:
+
+stdenv.mkDerivation rec {
+  pname = "adapta-backgrounds";
+  version = "0.5.3.1";
+
+  src = fetchFromGitHub {
+    owner = "adapta-project";
+    repo = "adapta-backgrounds";
+    rev = version;
+    sha256 = "04hmbmzf97rsii8gpwy3wkljy5xhxmlsl34d63s6hfy05knclydj";
+  };
+
+  strictDeps = true;
+  nativeBuildInputs = [ meson ninja pkg-config ];
+  buildInputs = [ glib ];
+
+  meta = with lib; {
+    description = "Wallpaper collection for adapta-project";
+    homepage = "https://github.com/adapta-project/adapta-backgrounds";
+    license = with licenses; [ gpl2 cc-by-sa-40 ];
+    platforms = platforms.all;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/brise/default.nix b/nixpkgs/pkgs/data/misc/brise/default.nix
new file mode 100644
index 000000000000..45f86f6be21c
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/brise/default.nix
@@ -0,0 +1,42 @@
+{ lib, stdenv, fetchFromGitHub, librime }:
+
+stdenv.mkDerivation {
+  pname = "brise";
+  version = "unstable-2017-09-16";
+
+  src = fetchFromGitHub {
+    owner = "rime";
+    repo = "brise";
+    rev = "1cfb0fe1d3a4190ce5d034f141941156dd271e80";
+    sha256 = "1l13j3cfwida0ycl874fizz2jwjvlxid589a1iciqa9y25k21ql7";
+  };
+
+  buildInputs = [ librime ];
+
+  postPatch = ''
+    patchShebangs scripts/*
+  '';
+
+  # we need to use fetchFromGitHub to fetch sub-packages before we 'make',
+  # since nix won't allow networking during 'make'
+  preBuild = import ./fetchPackages.nix fetchFromGitHub;
+
+  makeFlags = [ "BRISE_BUILD_BINARIES=yes" "PREFIX=$(out)" ];
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "Rime Schema Repository";
+    longDescription = ''
+      This software is a collection of data packages used by Rime
+      to support various Chinese input methods, including those based on
+      modern dialects or historical diasystems of the Chinese language.
+    '';
+    homepage = "https://rime.im";
+    # Note that individual packages in this collection
+    # may be released under different licenses
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.sifmelcara ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/brise/fetchPackages.nix b/nixpkgs/pkgs/data/misc/brise/fetchPackages.nix
new file mode 100644
index 000000000000..50ad1113aa93
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/brise/fetchPackages.nix
@@ -0,0 +1,130 @@
+fetchFromGitHub:
+# generated using https://gist.github.com/sifmelcara/895c71f99500b9d56d68e9a866b58821
+''
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-array";
+  rev = "d10f2f8b2aec7c7e736ace01e8a399e5ae5e7c3a";
+  sha256 = "sha256-4t6+gh2V57SueDp9Tn6vTuxQCZNGzjLdJEhzIEqRjdI=";
+}} array
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-bopomofo";
+  rev = "7046ffe42b46915947117f80d901fb9a6e19c1a7";
+  sha256 = "09w8jl2dlgp72k49x0l2jiaqb359v576kai4xww6cljgr24ng8pl";
+}} bopomofo
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-cangjie";
+  rev = "64242be99c1e6793c9f40fef296a81d07a84e976";
+  sha256 = "0v5sk8zrm5p5gg8lszqm0imj9jswjlnfq87nw6m9pg5h5al230ja";
+}} cangjie
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-combo-pinyin";
+  rev = "97a7dc4670e0f90ad28e7d67c1543f4f0adc531d";
+  sha256 = "0y8iyvq7z6xj3lk2ppk4ggz297wn1r2xxbv53f2710jc7gyzf04q";
+}} combo-pinyin
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-double-pinyin";
+  rev = "1b75af4239897fd1e4c99d625b62093e66baff14";
+  sha256 = "0p54qx5a6rr55hl997kdcfxjczd9lcddrc5xsy7nhlfyc6108s2v";
+}} double-pinyin
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-emoji";
+  rev = "7e527056fe055237fee59463e0d445f3909aaf0c";
+  sha256 = "04d35n254viw29yyjf3ml7xljmi63sqgg870swlbi5bikcx7n9jf";
+}} emoji
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-essay";
+  rev = "595e35756d16d57d09405e243302b65b4384b5b4";
+  sha256 = "10kqhvrz8x17b2pf6x2x2znz5y6cj05c4rgwi1f0xhxiyrgjw9gm";
+}} essay
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-ipa";
+  rev = "9e02f8a02e9febb7b2df25f6906881a1df934811";
+  sha256 = "1g4v4j1gnv1qspfz88liwj1aa4gaa3aax0x2cif4vxicsm7w372m";
+}} ipa
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-jyutping";
+  rev = "3cc76e6e15cc05f1f94b89e750c21f87ce8fc0e4";
+  sha256 = "1yggz0yb84z8810s2gmsxkm9lh57fdzddx5v2rb5mqcwnimsd6ap";
+}} jyutping
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-luna-pinyin";
+  rev = "da00c3a6f932f094666e98a09f6ce9c7d74c334c";
+  sha256 = "0q3g1hj9bay5865h3pz7gv46d7wfka1jdxnddxcbp4zn7gjpsd48";
+}} luna-pinyin
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-middle-chinese";
+  rev = "6f9731bac8f289f77d35f1090159f1937e38c1f7";
+  sha256 = "0xd9iwk4j5043gfmp7rb57hbarfm6sxr32wiasi6p3c5g355zn89";
+}} middle-chinese
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-pinyin-simp";
+  rev = "38c08403c22845f7e2965c1d7a1514b41755d7dc";
+  sha256 = "1c0cqljx3d93w27y2flxyqcfd3rd9fvixbw6mxgfjzdb3s42bn8h";
+}} pinyin-simp
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-prelude";
+  rev = "120c2aa73b1b5e1bce904901bf13f506295004a5";
+  sha256 = "1aah9z58gkqrc18zadsq598ybj8ra22bgka3gma2jmi3rls2znq4";
+}} prelude
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-quick";
+  rev = "638abf270e121bc2bfc6029a14ee85a3f4c2188b";
+  sha256 = "0l1pma0yxrypnb5cq7jiczy0wa42kdqsc1brqkkccdnp08pa1p1m";
+}} quick
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-scj";
+  rev = "6b74ce14be0464bf076d7adc40aea4b120f233ec";
+  sha256 = "0lr92knr41mlqd1s0g2lh2h2qr8xka1s46x7iv4d6ghjf0id4gz6";
+}} scj
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-soutzoe";
+  rev = "3ab93d1b9ca9ca7cf17ff32bb4418b7a095afc3c";
+  sha256 = "1glbvgzx4psasq23511k8ymd7mf1pqvm3z18nzszhs00iif66s3m";
+}} soutzoe
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-stenotype";
+  rev = "766f22565f83f5c63c0ea195c936779ec6ae824d";
+  sha256 = "0jsvfq7xim99zs5imyk7rpknlaimk6nlxy38fmfxa1r843781mfd";
+}} stenotype
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-stroke";
+  rev = "e048967a4c1b956575828f1a20e565efed4b1137";
+  sha256 = "10asdz5bj12pnji7afzls6jd9dn2v90l2dgdjf0jfp2kfzd6pxnl";
+}} stroke
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-terra-pinyin";
+  rev = "e303507e728def38739f5761c50722eae1f06dd5";
+  sha256 = "1krbmx2iq3zw4q1x4aa9c72b9xgrnjrhyxa4h5hnq5l29p9qms4d";
+}} terra-pinyin
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-wubi";
+  rev = "97b7d9f93378e98fd11167bd80d54c40e67076aa";
+  sha256 = "1cdpbqqkqjbizja0w3f7a826a5bxb39nlf9qf2130x9havmkc89z";
+}} wubi
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-wugniu";
+  rev = "de40b29f8218cc852bf82b315c7070f1d50bda02";
+  sha256 = "1m7miwsqpy49cgqd1bl7z5lkkirj3lc2bdwd1zqfg5zbgfwn0rp8";
+}} wugniu
+''
diff --git a/nixpkgs/pkgs/data/misc/cacert/default.nix b/nixpkgs/pkgs/data/misc/cacert/default.nix
new file mode 100644
index 000000000000..d489c23c6b8d
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/cacert/default.nix
@@ -0,0 +1,217 @@
+{ lib
+, stdenv
+, writeText
+, fetchurl
+, buildcatrust
+, blacklist ? []
+, extraCertificateFiles ? []
+, extraCertificateStrings ? []
+
+# Used by update.sh
+, nssOverride ? null
+
+# Used for tests only
+, runCommand
+, cacert
+, openssl
+}:
+
+let
+  blocklist = writeText "cacert-blocklist.txt" (lib.concatStringsSep "\n" (blacklist ++ [
+    # Mozilla does not trust new certificates issued by these CAs after 2022/11/30¹
+    # in their products, but unfortunately we don't have such a fine-grained
+    # solution for most system packages², so we decided to eject these.
+    #
+    # [1] https://groups.google.com/a/mozilla.org/g/dev-security-policy/c/oxX69KFvsm4/m/yLohoVqtCgAJ
+    # [2] https://utcc.utoronto.ca/~cks/space/blog/linux/CARootStoreTrustProblem
+    "TrustCor ECA-1"
+    "TrustCor RootCert CA-1"
+    "TrustCor RootCert CA-2"
+  ]));
+  extraCertificatesBundle = writeText "cacert-extra-certificates-bundle.crt" (lib.concatStringsSep "\n\n" extraCertificateStrings);
+
+  srcVersion = "3.92";
+  version = if nssOverride != null then nssOverride.version else srcVersion;
+  meta = with lib; {
+    homepage = "https://curl.haxx.se/docs/caextract.html";
+    description = "A bundle of X.509 certificates of public Certificate Authorities (CA)";
+    platforms = platforms.all;
+    maintainers = with maintainers; [ fpletz lukegb ];
+    license = licenses.mpl20;
+  };
+  certdata = stdenv.mkDerivation {
+    pname = "nss-cacert-certdata";
+    inherit version;
+
+    src = if nssOverride != null then nssOverride.src else fetchurl {
+      url = "mirror://mozilla/security/nss/releases/NSS_${lib.replaceStrings ["."] ["_"] version}_RTM/src/nss-${version}.tar.gz";
+      hash = "sha256-PbGS1uiCA5rwKufq8yF+0RS7etg0FMZGdyq4Ah4kolQ=";
+    };
+
+    dontBuild = true;
+
+    installPhase = ''
+      runHook preInstall
+
+      mkdir $out
+      cp nss/lib/ckfw/builtins/certdata.txt $out
+
+      runHook postInstall
+    '';
+
+    inherit meta;
+  };
+in
+stdenv.mkDerivation rec {
+  pname = "nss-cacert";
+  inherit version;
+
+  src = certdata;
+
+  outputs = [ "out" "unbundled" "p11kit" ];
+
+  nativeBuildInputs = [ buildcatrust ];
+
+  buildPhase = ''
+    mkdir unbundled
+    buildcatrust \
+      --certdata_input certdata.txt \
+      --ca_bundle_input "${extraCertificatesBundle}" ${lib.escapeShellArgs (map (arg: "${arg}") extraCertificateFiles)} \
+      --blocklist "${blocklist}" \
+      --ca_bundle_output ca-bundle.crt \
+      --ca_unpacked_output unbundled \
+      --p11kit_output ca-bundle.trust.p11-kit
+  '';
+
+  installPhase = ''
+    install -D -t "$out/etc/ssl/certs" ca-bundle.crt
+
+    # install p11-kit specific output to p11kit output
+    install -D -t "$p11kit/etc/ssl/trust-source" ca-bundle.trust.p11-kit
+
+    # install individual certs in unbundled output
+    install -D -t "$unbundled/etc/ssl/certs" unbundled/*.crt
+  '';
+
+  setupHook = ./setup-hook.sh;
+
+  passthru = {
+    updateScript = ./update.sh;
+    tests = let
+      isTrusted = ''
+        isTrusted() {
+          # isTrusted <unbundled-dir> <ca name> <ca sha256 fingerprint>
+          for f in $1/etc/ssl/certs/*.crt; do
+            if ! [[ -s "$f" ]]; then continue; fi
+            fingerprint="$(openssl x509 -in "$f" -noout -fingerprint -sha256 | cut -f2 -d=)"
+            if [[ "x$fingerprint" == "x$3" ]]; then
+              # If the certificate is treated as rejected for TLS Web Server, then we consider it untrusted.
+              if openssl x509 -in "$f" -noout -text | grep -q '^Rejected Uses:'; then
+                if openssl x509 -in "$f" -noout -text | grep -A1 '^Rejected Uses:' | grep -q 'TLS Web Server'; then
+                  return 1
+                fi
+              fi
+              return 0
+            fi
+          done
+          return 1
+        }
+      '';
+    in {
+      # Test that building this derivation with a blacklist works, and that UTF-8 is supported.
+      blacklist-utf8 = let
+        blacklistCAToFingerprint = {
+          # "blacklist" uses the CA name from the NSS bundle, but we check for presence using the SHA256 fingerprint.
+          "CFCA EV ROOT" = "5C:C3:D7:8E:4E:1D:5E:45:54:7A:04:E6:87:3E:64:F9:0C:F9:53:6D:1C:CC:2E:F8:00:F3:55:C4:C5:FD:70:FD";
+          "NetLock Arany (Class Gold) Főtanúsítvány" = "6C:61:DA:C3:A2:DE:F0:31:50:6B:E0:36:D2:A6:FE:40:19:94:FB:D1:3D:F9:C8:D4:66:59:92:74:C4:46:EC:98";
+        };
+        mapBlacklist = f: lib.concatStringsSep "\n" (lib.mapAttrsToList f blacklistCAToFingerprint);
+      in runCommand "verify-the-cacert-filter-output" {
+        cacert = cacert.unbundled;
+        cacertWithExcludes = (cacert.override {
+          blacklist = builtins.attrNames blacklistCAToFingerprint;
+        }).unbundled;
+
+        nativeBuildInputs = [ openssl ];
+      } ''
+        ${isTrusted}
+
+        # Ensure that each certificate is in the main "cacert".
+        ${mapBlacklist (caName: caFingerprint: ''
+          isTrusted "$cacert" "${caName}" "${caFingerprint}" || ({
+            echo "CA fingerprint ${caFingerprint} (${caName}) is missing from the CA bundle. Consider picking a different CA for the blacklist test." >&2
+            exit 1
+          })
+        '')}
+
+        # Ensure that each certificate is NOT in the "cacertWithExcludes".
+        ${mapBlacklist (caName: caFingerprint: ''
+          isTrusted "$cacertWithExcludes" "${caName}" "${caFingerprint}" && ({
+            echo "CA fingerprint ${caFingerprint} (${caName}) is present in the cacertWithExcludes bundle." >&2
+            exit 1
+          })
+        '')}
+
+        touch "$out"
+      '';
+
+      # Test that we can add additional certificates to the store, and have them be trusted.
+      extra-certificates = let
+        extraCertificateStr = ''
+          -----BEGIN CERTIFICATE-----
+          MIIB5DCCAWqgAwIBAgIUItvsAYEIdYDkOIo5sdDYMcUaNuIwCgYIKoZIzj0EAwIw
+          KTEnMCUGA1UEAwweTml4T1MgY2FjZXJ0IGV4dHJhIGNlcnRpZmljYXRlMB4XDTIx
+          MDYxMjE5MDQzMFoXDTIyMDYxMjE5MDQzMFowKTEnMCUGA1UEAwweTml4T1MgY2Fj
+          ZXJ0IGV4dHJhIGNlcnRpZmljYXRlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEuP8y
+          lAm6ZyQt9v/P6gTlV/a9R+D61WjucW04kaegOhg8csiluimYodiSv0Pbgymu+Zxm
+          A3Bz9QGmytaYTiJ16083rJkwwIhqoYl7kWsLzreSTaLz87KH+rdeol59+H0Oo1Mw
+          UTAdBgNVHQ4EFgQUCxuHfvqI4YVU5M+A0+aKvd1LrdswHwYDVR0jBBgwFoAUCxuH
+          fvqI4YVU5M+A0+aKvd1LrdswDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAgNo
+          ADBlAjEArgxgjdNmRlSEuai0dzlktmBEDZKy2Iiul+ttSoce9ohfEVYESwO602HW
+          keVvI56vAjBCro3dc3m2TuktiKO6lQV56PUEyxko4H/sR5pnHlduCGRDlFzQKXf/
+          pMMmtj7cVb8=
+          -----END CERTIFICATE-----
+        '';
+        extraCertificateFile = ./test-cert-file.crt;
+        extraCertificatesToFingerprint = {
+          # String above
+          "NixOS cacert extra certificate string" = "A3:20:D0:84:96:97:25:FF:98:B8:A9:6D:A3:7C:89:95:6E:7A:77:21:92:F3:33:E9:31:AF:5E:03:CE:A9:E5:EE";
+
+          # File
+          "NixOS cacert extra certificate file" = "88:B8:BE:A7:57:AC:F1:FE:D6:98:8B:50:E0:BD:0A:AE:88:C7:DF:70:26:E1:67:5E:F5:F6:91:27:FF:02:D4:A5";
+        };
+        mapExtra = f: lib.concatStringsSep "\n" (lib.mapAttrsToList f extraCertificatesToFingerprint);
+      in runCommand "verify-the-cacert-extra-output" {
+        cacert = cacert.unbundled;
+        cacertWithExtras = (cacert.override {
+          extraCertificateStrings = [ extraCertificateStr ];
+          extraCertificateFiles = [ extraCertificateFile ];
+        }).unbundled;
+
+        nativeBuildInputs = [ openssl ];
+      } ''
+        ${isTrusted}
+
+        # Ensure that the extra certificate is not in the main "cacert".
+        ${mapExtra (extraName: extraFingerprint: ''
+          isTrusted "$cacert" "${extraName}" "${extraFingerprint}" && ({
+            echo "'extra' CA fingerprint ${extraFingerprint} (${extraName}) is present in the main CA bundle." >&2
+            exit 1
+          })
+        '')}
+
+        # Ensure that the extra certificates ARE in the "cacertWithExtras".
+        ${mapExtra (extraName: extraFingerprint: ''
+          isTrusted "$cacertWithExtras" "${extraName}" "${extraFingerprint}" || ({
+            echo "CA fingerprint ${extraFingerprint} (${extraName}) is not present in the cacertWithExtras bundle." >&2
+            exit 1
+          })
+        '')}
+
+        touch "$out"
+      '';
+    };
+  };
+
+  inherit meta;
+}
diff --git a/nixpkgs/pkgs/data/misc/cacert/setup-hook.sh b/nixpkgs/pkgs/data/misc/cacert/setup-hook.sh
new file mode 100644
index 000000000000..93b682fbbd12
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/cacert/setup-hook.sh
@@ -0,0 +1,7 @@
+export NIX_SSL_CERT_FILE=@out@/etc/ssl/certs/ca-bundle.crt
+
+# compatibility
+#  - openssl
+export SSL_CERT_FILE=@out@/etc/ssl/certs/ca-bundle.crt
+#  - Haskell x509-system
+export SYSTEM_CERTIFICATE_PATH=@out@/etc/ssl/certs/ca-bundle.crt
diff --git a/nixpkgs/pkgs/data/misc/cacert/test-cert-file.crt b/nixpkgs/pkgs/data/misc/cacert/test-cert-file.crt
new file mode 100644
index 000000000000..095f38817d20
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/cacert/test-cert-file.crt
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIIB7TCCAXSgAwIBAgIUFJB0STXn22fIEDjpncEt++IdFeMwCgYIKoZIzj0EAwIw
+LjEsMCoGA1UEAwwjTml4T1MgY2FjZXJ0IGV4dHJhIGNlcnRpZmljYXRlIGZpbGUw
+HhcNMjEwNjEyMTkxODA4WhcNMjIwNjEyMTkxODA4WjAuMSwwKgYDVQQDDCNOaXhP
+UyBjYWNlcnQgZXh0cmEgY2VydGlmaWNhdGUgZmlsZTB2MBAGByqGSM49AgEGBSuB
+BAAiA2IABMifTLM5K5xd+guGdKE1+NR7wnEJbxw5INzuMrkg/7jgEIQil4+L2YOF
+kU1gxcM80Ot8tQAG5OcSvX1DF6CxunpoCT+hnHqyfqoWFvl89i1BUKjyWCQ5WXEe
+nSkuJUmYC6NTMFEwHQYDVR0OBBYEFBE2kNis1ri4fweyNVRmvje83gFQMB8GA1Ud
+IwQYMBaAFBE2kNis1ri4fweyNVRmvje83gFQMA8GA1UdEwEB/wQFMAMBAf8wCgYI
+KoZIzj0EAwIDZwAwZAIwUZf1qaSb4cezulV+4B4FoJHY2B/nRVIi/rFD8634YEDT
+vcg6dmCi/AqLEzJn7uFMAjBVTu4EVC/mtQCGESFChMeb04fsuhXgttWSwWliVPEG
+jkG7u0UNNGaU8dvrjpqRRmA=
+-----END CERTIFICATE-----
diff --git a/nixpkgs/pkgs/data/misc/cacert/update.sh b/nixpkgs/pkgs/data/misc/cacert/update.sh
new file mode 100755
index 000000000000..d578102ad56b
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/cacert/update.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p nix common-updater-scripts jq
+
+# Build both the cacert package and an overridden version where we use the source attribute of NSS.
+# Cacert and NSS are both from the same upstream sources. They are decoupled as
+# the cacert output only cares about a few infrequently changing files in the
+# sources while the NSS source code changes frequently.
+#
+# By having cacert on a older source revision that produces the same
+# certificate output as a newer version we can avoid large amounts of
+# unnecessary rebuilds.
+#
+# As of this writing there are a few magnitudes more packages depending on
+# cacert than on nss.
+#
+# We use `nss_latest` instead of `nss_esr`, because that is the newer version
+# and we want up-to-date certificates.
+# `nss_esr` is used for the ecosystem at large through the `nss` attribute,
+# because it is updated less frequently and maintained for longer, whereas `nss_latest`
+# is used for software that actually needs a new nss, e.g. Firefox.
+
+set -ex
+
+BASEDIR="$(dirname "$0")/../../../.."
+
+
+CURRENT_PATH=$(nix-build --no-out-link -A cacert.out)
+PATCHED_PATH=$(nix-build --no-out-link -E "with import $BASEDIR {}; (cacert.override { nssOverride = nss_latest; }).out")
+
+# Check the hash of the etc subfolder
+# We can't check the entire output as that contains the nix-support folder
+# which contains the output path itself.
+CURRENT_HASH=$(nix-hash "$CURRENT_PATH/etc")
+PATCHED_HASH=$(nix-hash "$PATCHED_PATH/etc")
+
+if [[ "$CURRENT_HASH" !=  "$PATCHED_HASH" ]]; then
+    NSS_VERSION=$(nix-instantiate --json --eval -E "with import $BASEDIR {}; nss_latest.version" | jq -r .)
+    update-source-version --version-key=srcVersion cacert.src "$NSS_VERSION"
+fi
diff --git a/nixpkgs/pkgs/data/misc/clash-geoip/default.nix b/nixpkgs/pkgs/data/misc/clash-geoip/default.nix
new file mode 100644
index 000000000000..c7ca80ccb008
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/clash-geoip/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenvNoCC, fetchurl, nix-update-script }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "clash-geoip";
+  version = "20231112";
+
+  src = fetchurl {
+    url = "https://github.com/Dreamacro/maxmind-geoip/releases/download/${version}/Country.mmdb";
+    sha256 = "sha256-CTygf2/CbxNO/9e8OfxeGZFaSrKXdlQdvUgywZX1U9o=";
+  };
+
+  dontUnpack = true;
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/etc/clash
+    install -Dm 0644 $src -D $out/etc/clash/Country.mmdb
+    runHook postInstall
+  '';
+
+  passthru = {
+    updateScript = nix-update-script { };
+  };
+
+  meta = with lib; {
+    description = "A GeoLite2 data created by MaxMind";
+    homepage = "https://github.com/Dreamacro/maxmind-geoip";
+    license = licenses.unfree;
+    maintainers = [];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/cldr-annotations/default.nix b/nixpkgs/pkgs/data/misc/cldr-annotations/default.nix
new file mode 100644
index 000000000000..6d06d49eb711
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/cldr-annotations/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "cldr-annotations";
+  version = "43.0";
+
+  src = fetchzip {
+    url = "https://unicode.org/Public/cldr/${lib.versions.major version}/cldr-common-${version}.zip";
+    stripRoot = false;
+    hash = "sha256-L8ikzRpSw4mDCV79TiUqhPHWC0PmGi4i4He0OAB54R0=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/unicode/cldr/common
+    mv common/annotations{,Derived} -t $out/share/unicode/cldr/common
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Names and keywords for Unicode characters from the Common Locale Data Repository";
+    homepage = "https://cldr.unicode.org";
+    license = licenses.unicode-dfs-2016;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ DeeUnderscore ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/colemak-dh/default.nix b/nixpkgs/pkgs/data/misc/colemak-dh/default.nix
new file mode 100644
index 000000000000..0ce188bdc906
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/colemak-dh/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "colemak-dh";
+  version = "unstable-2022-08-07";
+
+  src = fetchFromGitHub {
+    owner = "ColemakMods";
+    repo = "mod-dh";
+    rev = "e846a5bd24d59ed15ba70b3a9d5363a38ca51d09";
+    sha256 = "sha256-RFOpN+tIMfakb7AZN0ock9eq2mytvL0DWedvQV67+ks=";
+    sparseCheckout = [ "console" ];
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/keymaps/i386/
+    gzip -r ./console
+    cp -r ./console $out/share/keymaps/i386/colemak
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://colemakmods.github.io/mod-dh";
+    description = "A Colemak mod for more comfortable typing";
+    license = licenses.publicDomain;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ monaaraj ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/combinatorial_designs/default.nix b/nixpkgs/pkgs/data/misc/combinatorial_designs/default.nix
new file mode 100644
index 000000000000..5457b4e54d4b
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/combinatorial_designs/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenv
+, fetchurl
+}:
+
+stdenv.mkDerivation rec {
+  pname = "combinatorial_designs";
+  version = "20140630";
+
+  src = fetchurl {
+    url = "mirror://sageupstream/combinatorial_designs/combinatorial_designs-${version}.tar.bz2";
+    sha256 = "0bj8ngiq59hipa6izi6g5ph5akmy4cbk0vlsb0wa67f7grnnqj69";
+  };
+
+  installPhase = ''
+    mkdir -p "$out/share/combinatorial_designs"
+    mv * "$out/share/combinatorial_designs"
+  '';
+
+  meta = with lib; {
+    description = "Data for Combinatorial Designs";
+    longDescription = ''
+      Current content:
+
+      - The table of MOLS (10 000 integers) from the Handbook of Combinatorial
+        Designs, 2ed.
+    '';
+    license = licenses.publicDomain;
+    platforms = platforms.all;
+    maintainers = teams.sage.members;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/common-licenses/default.nix b/nixpkgs/pkgs/data/misc/common-licenses/default.nix
new file mode 100644
index 000000000000..d3888fde615c
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/common-licenses/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, fetchurl
+, lib
+}:
+
+stdenv.mkDerivation rec {
+  pname = "common-licenses";
+  version = "13";
+
+  src = fetchurl {
+    url = "http://deb.debian.org/debian/pool/main/b/base-files/base-files_${version}.tar.xz";
+    hash = "sha256-Q5FTvfKWSBE1ywuAH+RnZdyD+LmRSgJ11qFiM53hL1Y=";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share
+    cp -r licenses $out/share/common-licenses
+    cat debian/base-files.links | grep common-licenses | sed -e "s|usr|$out|g" -e "s|^|ln -s |g" | bash -x
+  '';
+
+  meta = with lib; {
+    description = "common-licenses extracted from debian base-files package";
+    homepage = "https://tracker.debian.org/pkg/base-files";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.mkg20001 ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/conway_polynomials/default.nix b/nixpkgs/pkgs/data/misc/conway_polynomials/default.nix
new file mode 100644
index 000000000000..caf470c51152
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/conway_polynomials/default.nix
@@ -0,0 +1,41 @@
+{ lib, stdenv
+, fetchurl
+, python3
+}:
+
+stdenv.mkDerivation rec {
+  pname = "conway_polynomials";
+  version = "0.5";
+
+  src = fetchurl {
+    url = "mirror://sageupstream/conway_polynomials/conway_polynomials-${version}.tar.bz2";
+    sha256 = "05zb1ly9x2bbscqv0jgc45g48xx77mfs7qdbqhn4ihmihn57iwnq";
+  };
+
+  # Script that creates the "database" (nested python array) and pickles it
+  spkg-install = fetchurl {
+    url = "https://raw.githubusercontent.com/sagemath/sage/9.2/build/pkgs/conway_polynomials/spkg-install.py";
+    sha256 = "1bwnqasnyv793hxg29viing4dnliz29grkhldsirq19d509yk1fs";
+  };
+
+  installPhase = ''
+    # directory layout as spkg-install.py expects
+    dir="$PWD"
+    cd ..
+    ln -s "$dir" "src"
+
+    # environment spkg-install.py expects
+    mkdir -p "$out/share"
+    export SAGE_SHARE="$out/share"
+    export PYTHONPATH=$PWD
+
+    ${python3.interpreter} ${spkg-install}
+  '';
+
+  meta = with lib; {
+    description = "Contains a small database of Conway polynomials";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = teams.sage.members;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/dbip-country-lite/default.nix b/nixpkgs/pkgs/data/misc/dbip-country-lite/default.nix
new file mode 100644
index 000000000000..eefd161632d8
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/dbip-country-lite/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, stdenvNoCC
+, fetchurl
+}:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "dbip-country-lite";
+  version = "2023-11";
+
+  src = fetchurl {
+    url = "https://download.db-ip.com/free/dbip-country-lite-${finalAttrs.version}.mmdb.gz";
+    hash = "sha256-Nyje7hf5UdCMHbqZoLpHclDDa4pz+BAyqJcsmPBfSG8=";
+  };
+
+  dontUnpack = true;
+
+  installPhase = ''
+    runHook preBuild
+
+    gzip -c -d "$src" > dbip-country-lite.mmdb
+    install -Dm444 dbip-country-lite.mmdb "$out/share/dbip/dbip-country-lite.mmdb"
+
+    runHook postBuild
+  '';
+
+  passthru.mmdb = "${finalAttrs.finalPackage}/share/dbip/dbip-country-lite.mmdb";
+
+  meta = with lib; {
+    description = "The free IP to Country Lite database by DB-IP";
+    homepage = "https://db-ip.com/db/download/ip-to-country-lite";
+    license = licenses.cc-by-40;
+    maintainers = with maintainers; [ nickcao ];
+    platforms = platforms.all;
+  };
+})
diff --git a/nixpkgs/pkgs/data/misc/ddccontrol-db/default.nix b/nixpkgs/pkgs/data/misc/ddccontrol-db/default.nix
new file mode 100644
index 000000000000..7574c16cba72
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/ddccontrol-db/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenv
+, autoreconfHook
+, intltool
+, fetchFromGitHub
+}:
+
+stdenv.mkDerivation rec {
+  pname = "ddccontrol-db";
+  version = "20231004";
+
+  src = fetchFromGitHub {
+    owner = "ddccontrol";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-C/FqLczkQ9thoAdBI2aDDKgp5ByTWVOJ9bcD9ICqyFM=";
+  };
+
+  nativeBuildInputs = [ autoreconfHook intltool ];
+
+  meta = with lib; {
+    description = "Monitor database for DDCcontrol";
+    homepage = "https://github.com/ddccontrol/ddccontrol-db";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ lib.maintainers.pakhfn ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/dns-root-data/default.nix b/nixpkgs/pkgs/data/misc/dns-root-data/default.nix
new file mode 100644
index 000000000000..abf945e9df55
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/dns-root-data/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, lib, fetchurl }:
+
+let
+
+  rootHints = fetchurl {
+    # Original source https://www.internic.net/domain/named.root
+    # occasionally suffers from pointless hash changes,
+    # and having stable sources for older versions has advantages, too.
+    urls = map (prefix: prefix + "cc5e14a264912/etc/root.hints") [
+      "https://gitlab.nic.cz/knot/knot-resolver/raw/"
+      "https://raw.githubusercontent.com/CZ-NIC/knot-resolver/"
+    ];
+    sha256 = "0vdrff4l8s8grif52dnh091s8qydhh88k25zqd9rj66sf1qwcwxl";
+  };
+
+  rootKey = ./root.key;
+  rootDs = ./root.ds;
+
+in
+
+stdenv.mkDerivation {
+  pname = "dns-root-data";
+  version = "2019-01-11";
+
+  buildCommand = ''
+    mkdir $out
+    cp ${rootHints} $out/root.hints
+    cp ${rootKey} $out/root.key
+    cp ${rootDs} $out/root.ds
+  '';
+
+  meta = with lib; {
+    description = "DNS root data including root zone and DNSSEC key";
+    maintainers = with maintainers; [ fpletz vcunat ];
+    license = licenses.gpl3Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/dns-root-data/root.ds b/nixpkgs/pkgs/data/misc/dns-root-data/root.ds
new file mode 100644
index 000000000000..e292b5a7bf0c
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/dns-root-data/root.ds
@@ -0,0 +1 @@
+. IN DS 20326 8 2 E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D
diff --git a/nixpkgs/pkgs/data/misc/dns-root-data/root.key b/nixpkgs/pkgs/data/misc/dns-root-data/root.key
new file mode 100644
index 000000000000..edfc762ad602
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/dns-root-data/root.key
@@ -0,0 +1 @@
+.	172800	IN	DNSKEY	257 3 8 AwEAAaz/tAm8yTn4Mfeh5eyI96WSVexTBAvkMgJzkKTOiW1vkIbzxeF3+/4RgWOq7HrxRixHlFlExOLAJr5emLvN7SWXgnLh4+B5xQlNVz8Og8kvArMtNROxVQuCaSnIDdD5LKyWbRd2n9WGe2R8PzgCmr3EgVLrjyBxWezF0jLHwVN8efS3rCj/EWgvIWgb9tarpVUDK/b58Da+sqqls3eNbuv7pr+eoZG+SrDK6nWeL3c6H5Apxz7LjVc1uTIdsIXxuOLYA4/ilBmSVIzuDWfdRUfhHdY6+cn8HFRm+2hM8AnXGXws9555KrUB5qihylGa8subX2Nn6UwNR1AkUTV74bU= ;{id = 20326 (ksk), size = 2048b}
diff --git a/nixpkgs/pkgs/data/misc/dns-root-data/update-root-key.sh b/nixpkgs/pkgs/data/misc/dns-root-data/update-root-key.sh
new file mode 100755
index 000000000000..9a3141aef197
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/dns-root-data/update-root-key.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p busybox unbound
+
+TMP=`mktemp`
+unbound-anchor -a "$TMP"
+grep -Ev "^($$|;)" "$TMP" | sed -e 's/ ;;.*//' > root.key
+
+unbound-anchor -F -a "$TMP"
+sed '/^;/d' < "$TMP" > root.ds
+rm $TMP
diff --git a/nixpkgs/pkgs/data/misc/dtv-scan-tables/default.nix b/nixpkgs/pkgs/data/misc/dtv-scan-tables/default.nix
new file mode 100644
index 000000000000..fdd18cec8df4
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/dtv-scan-tables/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, stdenv
+, fetchurl
+, v4l-utils
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dtv-scan-tables";
+  version = "2022-04-30-57ed29822750";
+
+  src = fetchurl {
+    url = "https://linuxtv.org/downloads/${pname}/${pname}-${version}.tar.bz2";
+    hash = "sha256-amJoqjkkWTePo6E5IvwBWj+mP/gi9LDWTTPXE1Cm7J4=";
+  };
+
+  nativeBuildInputs = [
+    v4l-utils
+  ];
+
+  sourceRoot = "usr/share/dvb";
+
+  makeFlags = [
+    "PREFIX=$(out)"
+  ];
+
+  allowedReferences = [ ];
+
+  meta = with lib; {
+    # git repo with current revision is here:
+    #downloadPage = "https://git.linuxtv.org/dtv-scan-tables.git";
+    # Weekly releases are supposed to be here
+    downloadPage = "https://linuxtv.org/downloads/dtv-scan-tables/";
+    # but sometimes they lag behind several weeks or even months.
+    description = "Digital TV (DVB) channel/transponder scan tables";
+    homepage = "https://www.linuxtv.org/wiki/index.php/Dtv-scan-tables";
+    license = with licenses; [ gpl2Only lgpl21Only ];
+    longDescription = ''
+      When scanning for dvb channels,
+      most applications require an initial set of
+      transponder coordinates (frequencies etc.).
+      These coordinates differ, depending of the
+      receiver's location or on the satellite.
+      The package delivers a collection of transponder
+      tables ready to be used by software like "dvbv5-scan".
+    '';
+    maintainers = with maintainers; [ yarny ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/elliptic_curves/default.nix b/nixpkgs/pkgs/data/misc/elliptic_curves/default.nix
new file mode 100644
index 000000000000..55c03afbc4c2
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/elliptic_curves/default.nix
@@ -0,0 +1,50 @@
+{ lib, stdenv
+, fetchurl
+, python3
+}:
+
+stdenv.mkDerivation rec {
+  pname = "elliptic_curves";
+  version = "0.8.1";
+
+  src = fetchurl {
+    url = "mirror://sageupstream/${pname}/${pname}-${version}.tar.bz2";
+    sha256 = "0l7xh4abw5sb4d37r0ylr3vwb88fpx2zrvfm5ql0c7yrv5q59fjz";
+  };
+
+
+  # Script that creates the sqlite database from the allcurves textfile
+  spkg-install = fetchurl {
+    url = "https://raw.githubusercontent.com/sagemath/sage/07d6c37d18811e2b377a9689790a7c5e24da16ba/build/pkgs/${pname}/spkg-install.py";
+    sha256 = "116g684i6mvs11fvb6fzfsr4fn903axn31vigdyb8bgpf8l4hvc5";
+  };
+
+  installPhase = ''
+    # directory layout as spkg-install.py expects
+    dir="$PWD"
+    cd ..
+    ln -s "$dir" "src"
+
+    # environment spkg-install.py expects
+    mkdir -p "$out/share"
+    export SAGE_SHARE="$out/share"
+    export PYTHONPATH=$PWD
+
+    ${python3.interpreter} ${spkg-install}
+  '';
+
+  meta = with lib; {
+    description = "Databases of elliptic curves";
+    longDescription = ''
+      Includes two databases:
+
+       * A small subset of the data in John Cremona's database of elliptic curves up
+         to conductor 10000. See http://www.warwick.ac.uk/~masgaj/ftp/data/ or
+         http://sage.math.washington.edu/cremona/INDEX.html
+       * William Stein's database of interesting curves
+    '';
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = teams.sage.members;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/fedora-backgrounds/default.nix b/nixpkgs/pkgs/data/misc/fedora-backgrounds/default.nix
new file mode 100644
index 000000000000..59bb95b00978
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/fedora-backgrounds/default.nix
@@ -0,0 +1,67 @@
+{ callPackage, lib, fetchurl }:
+
+let
+  fedoraBackground = callPackage ./generic.nix { };
+in {
+  f32 = fedoraBackground rec {
+    version = "32.2.2";
+    src = fetchurl {
+      url = "https://github.com/fedoradesign/backgrounds/releases/download/v${version}/f${lib.versions.major version}-backgrounds-${version}.tar.xz";
+      hash = "sha256-1F75aae7Jj7M2IPn/vWKcUF+O5mZ0Yey7hWuFj/4Fhg=";
+    };
+  };
+
+  f33 = fedoraBackground rec {
+    version = "33.0.7";
+    src = fetchurl {
+      url = "https://github.com/fedoradesign/backgrounds/releases/download/v${version}/f${lib.versions.major version}-backgrounds-${version}.tar.xz";
+      hash = "sha256-lAn5diEYebCo2ZJCOn9rD87rOasUU0qnSOr0EnZKW4o=";
+    };
+    # Fix broken symlinks in the Xfce background directory.
+    patches = [ ./f33-fix-xfce-path.patch ];
+  };
+
+  f34 = fedoraBackground rec {
+    version = "34.0.1";
+    src = fetchurl {
+      url = "https://github.com/fedoradesign/backgrounds/releases/download/v${version}/f${lib.versions.major version}-backgrounds-${version}.tar.xz";
+      hash = "sha256-0gotgQ4N0yE8WZbsu7B3jmUIZrycbqjEMxZl01JcJj4=";
+    };
+    # Fix broken symlinks in the Xfce background directory.
+    patches = [ ./f34-fix-xfce-path.patch ];
+  };
+
+  f35 = fedoraBackground rec {
+    version = "35.0.1";
+    src = fetchurl {
+      url = "https://github.com/fedoradesign/backgrounds/releases/download/v${version}/f${lib.versions.major version}-backgrounds-${version}.tar.xz";
+      hash = "sha256-7t78sQ0BIkzgJ+phO55Bomyz02d8Vx1LAtSkjX8ppgE=";
+    };
+    # Fix broken symlinks in the Xfce background directory.
+    patches = [ ./f35-fix-xfce-path.patch ];
+  };
+
+  f36 = fedoraBackground rec {
+    version = "36.1.2";
+    src = fetchurl {
+      url = "https://github.com/fedoradesign/backgrounds/releases/download/v${version}/f${lib.versions.major version}-backgrounds-${version}.tar.xz";
+      hash = "sha256-DZr1YHltojl02X/3sErqB/29JBDy/7lDZKnHD+KouHc=";
+    };
+  };
+
+  f37 = fedoraBackground rec {
+    version = "37.0.5";
+    src = fetchurl {
+      url = "https://github.com/fedoradesign/backgrounds/releases/download/v${version}/f${lib.versions.major version}-backgrounds-${version}.tar.xz";
+      hash = "sha256-bkjxJDDU0dZURKIK1sd+EOnPt9vvJ5HqHkc6OhPBBn0=";
+    };
+  };
+
+  f38 = fedoraBackground rec {
+    version = "38.1.1";
+    src = fetchurl {
+      url = "https://github.com/fedoradesign/backgrounds/releases/download/v${version}/f${lib.versions.major version}-backgrounds-${version}.tar.xz";
+      hash = "sha256-YSNP7GhS5i5mJDsa4UwsXJm8Tv43r9JxrcYIbkXQKm4=";
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/fedora-backgrounds/f33-fix-xfce-path.patch b/nixpkgs/pkgs/data/misc/fedora-backgrounds/f33-fix-xfce-path.patch
new file mode 100644
index 000000000000..eabdacddaa53
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/fedora-backgrounds/f33-fix-xfce-path.patch
@@ -0,0 +1,15 @@
+diff --git a/default/Makefile b/default/Makefile
+index ec8095a..9391f8f 100644
+--- a/default/Makefile
++++ b/default/Makefile
+@@ -48,8 +48,8 @@ install:
+ 	
+ 	#~ XFCE background
+ 	$(MKDIR) $(XFCE_BG_DIR)
+-	$(LN_S) ../default/$(WP_NAME)-02-day.png \
++	$(LN_S) ../../backgrounds/$(WP_NAME)/default/$(WP_NAME)-02-day.png \
+ 			$(XFCE_BG_DIR)/$(WP_NAME).png
+ 	for tod in 01-dawn 03-dusk 04-night; do \
+-	   $(LN_S) ../default/$(WP_NAME)-$${tod}.png $(XFCE_BG_DIR)/$(WP_NAME)-$${tod}.png; \
++	   $(LN_S) ../../backgrounds/$(WP_NAME)/default/$(WP_NAME)-$${tod}.png $(XFCE_BG_DIR)/$(WP_NAME)-$${tod}.png; \
+ 	done;
diff --git a/nixpkgs/pkgs/data/misc/fedora-backgrounds/f34-fix-xfce-path.patch b/nixpkgs/pkgs/data/misc/fedora-backgrounds/f34-fix-xfce-path.patch
new file mode 100644
index 000000000000..847927667133
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/fedora-backgrounds/f34-fix-xfce-path.patch
@@ -0,0 +1,13 @@
+diff --git a/default/Makefile b/default/Makefile
+index 172d5d9..540a1c0 100644
+--- a/default/Makefile
++++ b/default/Makefile
+@@ -1,7 +1,7 @@
+ WP_NAME=f34
+ WP_BIGNAME=F34
+ WP_DIR=$(DESTDIR)/usr/share/backgrounds/$(WP_NAME)
+-WP_DIR_LN=/usr/share/backgrounds/$(WP_NAME)
++WP_DIR_LN=$(DESTDIR)/usr/share/backgrounds/$(WP_NAME)
+ GNOME_BG_DIR=$(DESTDIR)/usr/share/gnome-background-properties
+ KDE_BG_DIR=$(DESTDIR)/usr/share/wallpapers
+ MATE_BG_DIR=$(DESTDIR)/usr/share/mate-background-properties
diff --git a/nixpkgs/pkgs/data/misc/fedora-backgrounds/f35-fix-xfce-path.patch b/nixpkgs/pkgs/data/misc/fedora-backgrounds/f35-fix-xfce-path.patch
new file mode 100644
index 000000000000..425a09cb0ccd
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/fedora-backgrounds/f35-fix-xfce-path.patch
@@ -0,0 +1,26 @@
+diff --git a/default/Makefile b/default/Makefile
+index 2041ce2..f31a0f2 100644
+--- a/default/Makefile
++++ b/default/Makefile
+@@ -1,7 +1,7 @@
+ WP_NAME=f35
+ WP_BIGNAME=F35
+ WP_DIR=$(DESTDIR)/usr/share/backgrounds/$(WP_NAME)
+-WP_DIR_LN=/usr/share/backgrounds/$(WP_NAME)
++WP_DIR_LN=$(DESTDIR)/usr/share/backgrounds/$(WP_NAME)
+ GNOME_BG_DIR=$(DESTDIR)/usr/share/gnome-background-properties
+ KDE_BG_DIR=$(DESTDIR)/usr/share/wallpapers
+ MATE_BG_DIR=$(DESTDIR)/usr/share/mate-background-properties
+diff --git a/extras/Makefile b/extras/Makefile
+index 95e92e4..4d43a22 100644
+--- a/extras/Makefile
++++ b/extras/Makefile
+@@ -45,7 +45,7 @@ install:
+ 	    $(LN_S) ../../../../backgrounds/f35/extras/$${theme}.png \
+ 	            $(KDE_BG_DIR)/F35_$${theme}/contents/images/$${res}.png ; \
+ 	  done; \
+-	  $(LN_S) ../backgrounds/f35/extras/$${theme}.png \
++	  $(LN_S) ../../backgrounds/f35/extras/$${theme}.png \
+ 			$(XFCE_BG_DIR)/f35-$${theme}.png ;\
+ 	done;
+ 
diff --git a/nixpkgs/pkgs/data/misc/fedora-backgrounds/generic.nix b/nixpkgs/pkgs/data/misc/fedora-backgrounds/generic.nix
new file mode 100644
index 000000000000..aa6e4137f521
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/fedora-backgrounds/generic.nix
@@ -0,0 +1,48 @@
+{ lib
+, stdenvNoCC
+, coreutils
+}:
+
+{ version
+, src
+, patches ? [ ]
+}:
+
+stdenvNoCC.mkDerivation {
+  inherit patches src version;
+
+  pname = "fedora${lib.versions.major version}-backgrounds";
+
+  dontBuild = true;
+
+  postPatch = ''
+    for f in default/Makefile extras/Makefile; do
+      substituteInPlace $f \
+        --replace "usr/share" "share" \
+        --replace "/usr/bin/" "" \
+        --replace "/bin/" ""
+    done
+
+    for f in $(find . -name '*.xml'); do
+      substituteInPlace $f \
+        --replace "/usr/share" "$out/share"
+    done;
+  '';
+
+  installFlags = [
+    "DESTDIR=$(out)"
+
+    # The Xfce background directory is assumed to be in installed in an
+    # FHS-compliant system. This is only effective for v36.0.0 and later
+    # versions where the following variable is used.
+    "WP_DIR_LN=$(DESTDIR)/share/backgrounds/$(WP_NAME)"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/fedoradesign/backgrounds";
+    description = "A set of default and supplemental wallpapers for Fedora";
+    license = licenses.cc-by-sa-40;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/freepats/default.nix b/nixpkgs/pkgs/data/misc/freepats/default.nix
new file mode 100644
index 000000000000..bb8dae0cf6a5
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/freepats/default.nix
@@ -0,0 +1,25 @@
+{ lib, stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "freepats";
+  version = "20060219";
+
+  src = fetchurl {
+    url = "https://freepats.zenvoid.org/freepats-${version}.tar.bz2";
+    sha256 = "12iw36rd94zirll96cd5k0va7p5hxmf2shvjlhzihcmjaw8flq82";
+  };
+
+  installPhase = ''mkdir "$out"; cp -r . "$out"'';
+
+  meta = with lib; {
+    description = "Instrument patches, for MIDI synthesizers";
+    longDescription = ''
+      Freepats is a project to create a free and open set of instrument
+      patches, in any format, that can be used with softsynths.
+    '';
+    homepage = "https://freepats.zenvoid.org/";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/geolite-legacy/default.nix b/nixpkgs/pkgs/data/misc/geolite-legacy/default.nix
new file mode 100644
index 000000000000..54b9c6d27e92
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/geolite-legacy/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenv, fetchurl, zstd }:
+
+stdenv.mkDerivation rec {
+  pname = "geolite-legacy";
+  version = "20230901";
+
+  # We use Arch Linux package as a snapshot, because upstream database is updated in-place.
+  geoip = fetchurl {
+    url = "https://archive.archlinux.org/packages/g/geoip-database/geoip-database-${version}-1-any.pkg.tar.zst";
+    sha256 = "sha256-H6tv0OEf04TvbhbWsm5vwq+lBj4GSyOezd258VOT8yQ=";
+  };
+
+  extra = fetchurl {
+    url = "https://archive.archlinux.org/packages/g/geoip-database-extra/geoip-database-extra-${version}-1-any.pkg.tar.zst";
+    sha256 = "sha256-Zb5m5TLJ1vcPKypZ3NliaL9oluz97ukTVGlOehuzyPU=";
+  };
+
+  nativeBuildInputs = [ zstd ];
+
+  buildCommand = ''
+    tar -xaf ${geoip}
+    tar -xaf ${extra}
+    mkdir -p $out/share
+    mv usr/share/GeoIP $out/share
+  '';
+
+  meta = with lib; {
+    description = "GeoLite Legacy IP geolocation databases";
+    homepage = "https://mailfud.org/geoip-legacy/";
+    license = licenses.cc-by-sa-40;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ fpletz ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/graphs/default.nix b/nixpkgs/pkgs/data/misc/graphs/default.nix
new file mode 100644
index 000000000000..93a0d75aaf69
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/graphs/default.nix
@@ -0,0 +1,25 @@
+{ lib, stdenv
+, fetchurl
+}:
+
+stdenv.mkDerivation rec {
+  pname = "graphs";
+  version = "20210214";
+
+  src = fetchurl {
+    url = "mirror://sageupstream/${pname}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-ByN8DZhTYRUFw4n9e7klAMh0P1YxurtND0Xf2DMvN0E=";
+  };
+
+  installPhase = ''
+    mkdir -p "$out/share/graphs"
+    cp * "$out/share/graphs/"
+  '';
+
+  meta = with lib; {
+    description = "A database of graphs";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = teams.sage.members;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/hackage/default.nix b/nixpkgs/pkgs/data/misc/hackage/default.nix
new file mode 100644
index 000000000000..b283f2025e0d
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/hackage/default.nix
@@ -0,0 +1,11 @@
+# Hackage database snapshot, used by maintainers/scripts/regenerate-hackage-packages.sh
+# and callHackage
+{ lib, fetchurl }:
+let
+  pin = lib.importJSON ./pin.json;
+in
+fetchurl {
+  inherit (pin) url sha256;
+  name = "all-cabal-hashes-${lib.substring 0 7 pin.commit}.tar.gz";
+  passthru.updateScript = ../../../../maintainers/scripts/haskell/update-hackage.sh;
+}
diff --git a/nixpkgs/pkgs/data/misc/hackage/pin.json b/nixpkgs/pkgs/data/misc/hackage/pin.json
new file mode 100644
index 000000000000..15eac7a7168a
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/hackage/pin.json
@@ -0,0 +1,6 @@
+{
+  "commit": "f4111a737432472002a38495b14b930255705d6a",
+  "url": "https://github.com/commercialhaskell/all-cabal-hashes/archive/f4111a737432472002a38495b14b930255705d6a.tar.gz",
+  "sha256": "0q1nhk821fdwxmidsd9mnd77ml4c05f7rnmd80g4s876s65ldi5q",
+  "msg": "Update from Hackage at 2023-11-10T11:27:19Z"
+}
diff --git a/nixpkgs/pkgs/data/misc/iana-etc/default.nix b/nixpkgs/pkgs/data/misc/iana-etc/default.nix
new file mode 100644
index 000000000000..de19347e3403
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/iana-etc/default.nix
@@ -0,0 +1,27 @@
+{ lib, fetchzip, stdenvNoCC, writeText }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "iana-etc";
+  version = "20230316";
+
+  src = fetchzip {
+    url = "https://github.com/Mic92/iana-etc/releases/download/${version}/iana-etc-${version}.tar.gz";
+    sha256 = "sha256-5acFYPSwevEw5tZNbQDpui3stWuMdnhaKHqC8lhnsOY=";
+  };
+
+  installPhase = ''
+    install -D -m0644 -t $out/etc services protocols
+  '';
+
+  setupHook = writeText "setup-hook" ''
+    export NIX_ETC_PROTOCOLS=@out@/etc/protocols
+    export NIX_ETC_SERVICES=@out@/etc/services
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/Mic92/iana-etc";
+    description = "IANA protocol and port number assignments (/etc/protocols and /etc/services)";
+    platforms = platforms.unix;
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/libkkc-data/default.nix b/nixpkgs/pkgs/data/misc/libkkc-data/default.nix
new file mode 100644
index 000000000000..516dd61c60f3
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/libkkc-data/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenv, fetchurl, fetchpatch, python3, libkkc }:
+
+stdenv.mkDerivation rec {
+  pname = "libkkc-data";
+  version = "0.2.7";
+
+  src = fetchurl {
+    url = "${meta.homepage}/releases/download/v${libkkc.version}/${pname}-${version}.tar.xz";
+    sha256 = "16avb50jasq2f1n9xyziky39dhlnlad0991pisk3s11hl1aqfrwy";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "build-python3.patch";
+      url = "https://github.com/ueno/libkkc/commit/ba1c1bd3eb86d887fc3689c3142732658071b5f7.patch";
+      relative = "data/templates/libkkc-data";
+      hash = "sha256-q4zUclJtDQ1E5v2PW00zRZz6GXllLUcp2h3tugufrRU=";
+    })
+  ];
+
+  nativeBuildInputs = [ python3.pkgs.marisa ];
+
+  strictDeps = true;
+
+  meta = with lib; {
+    description = "Language model data package for libkkc";
+    homepage    = "https://github.com/ueno/libkkc";
+    license     = licenses.gpl3Plus;
+    maintainers = with maintainers; [ vanzef ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/mailcap/default.nix b/nixpkgs/pkgs/data/misc/mailcap/default.nix
new file mode 100644
index 000000000000..06c8047e1cab
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/mailcap/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "mailcap";
+  version = "2.1.53";
+
+  src = fetchurl {
+    url = "https://releases.pagure.org/mailcap/mailcap-${version}.tar.xz";
+    sha256 = "sha256-Xuou8XswSXe6PsuHr61DGfoEQPgl5Pb7puj6L/64h4U=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    substituteInPlace mailcap --replace "/usr/bin/" ""
+    sh generate-nginx-mimetypes.sh < mime.types > nginx-mime.types
+
+    install -D -m0644 nginx-mime.types $out/etc/nginx/mime.types
+    install -D -m0644 -t $out/etc mailcap mime.types
+    install -D -m0644 -t $out/share/man/man5 mailcap.5
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Helper application and MIME type associations for file types";
+    homepage = "https://pagure.io/mailcap";
+    license = licenses.mit;
+    maintainers = with maintainers; [ c0bw3b ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/media-player-info/default.nix b/nixpkgs/pkgs/data/misc/media-player-info/default.nix
new file mode 100644
index 000000000000..652298d1656d
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/media-player-info/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenv, fetchurl, pkg-config, python3, udev, systemd }:
+
+stdenv.mkDerivation rec {
+  pname = "media-player-info";
+  version = "24";
+
+  src = fetchurl {
+    url = "https://www.freedesktop.org/software/media-player-info/${pname}-${version}.tar.gz";
+    sha256 = "0d0i7av8v369hzvlynwlrbickv1brlzsmiky80lrjgjh1gdldkz6";
+  };
+
+  buildInputs = [ udev systemd ];
+  nativeBuildInputs = [ pkg-config python3 ];
+
+  postPatch = ''
+    patchShebangs ./tools
+  '';
+
+  configureFlags = [ "--with-udevdir=${placeholder "out"}/lib/udev" ];
+
+  meta = with lib; {
+    description = "A repository of data files describing media player capabilities";
+    homepage = "https://www.freedesktop.org/wiki/Software/media-player-info/";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ ttuegel ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/miscfiles/default.nix b/nixpkgs/pkgs/data/misc/miscfiles/default.nix
new file mode 100644
index 000000000000..ad58e5bd7b79
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/miscfiles/default.nix
@@ -0,0 +1,19 @@
+{lib, stdenv, fetchurl}:
+
+stdenv.mkDerivation rec {
+  pname = "miscfiles";
+  version = "1.5";
+
+  src = fetchurl {
+    url = "mirror://gnu/miscfiles/miscfiles-${version}.tar.gz";
+    sha256 = "005588vfrwx8ghsdv9p7zczj9lbc9a3r4m5aphcaqv8gif4siaka";
+  };
+
+  meta = with lib; {
+    homepage = "https://www.gnu.org/software/miscfiles/";
+    license = licenses.gpl2Plus;
+    description = "Collection of files not of crucial importance for sysadmins";
+    maintainers = with maintainers; [ pSub ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/mobile-broadband-provider-info/default.nix b/nixpkgs/pkgs/data/misc/mobile-broadband-provider-info/default.nix
new file mode 100644
index 000000000000..4113b3500188
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/mobile-broadband-provider-info/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenv, fetchurl, gnome, libxslt }:
+
+stdenv.mkDerivation rec {
+  pname = "mobile-broadband-provider-info";
+  version = "20230416";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${version}/${pname}-${version}.tar.xz";
+    sha256 = "sha256-4+FAqi23abKZ0d+GqJDpSKuZ1NOIMTAsRS0ft/hWiuw=";
+  };
+
+  nativeBuildInputs = [
+    # fixes configure: error: xsltproc not found
+    libxslt
+  ];
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = pname;
+    };
+  };
+
+  meta = with lib; {
+    description = "Mobile broadband service provider database";
+    homepage = "https://wiki.gnome.org/Projects/NetworkManager/MobileBroadband/ServiceProviders";
+    license = licenses.publicDomain;
+    maintainers = [ ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/nixos-artwork/default.nix b/nixpkgs/pkgs/data/misc/nixos-artwork/default.nix
new file mode 100644
index 000000000000..4814232fbfe7
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/nixos-artwork/default.nix
@@ -0,0 +1,5 @@
+{ callPackage }:
+
+{
+  wallpapers = callPackage ./wallpapers.nix { };
+}
diff --git a/nixpkgs/pkgs/data/misc/nixos-artwork/grub2-theme.nix b/nixpkgs/pkgs/data/misc/nixos-artwork/grub2-theme.nix
new file mode 100644
index 000000000000..0a5717ba3b27
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/nixos-artwork/grub2-theme.nix
@@ -0,0 +1,5 @@
+{fetchzip}:
+fetchzip {
+  url = "https://github.com/NixOS/nixos-artwork/releases/download/bootloader-18.09-pre/grub2-installer.tar.bz2";
+  sha256 = "0rhh061m1hpgadm7587inw3fxfacnd53xjc53w3vzghlck56djq5";
+}
diff --git a/nixpkgs/pkgs/data/misc/nixos-artwork/icons.nix b/nixpkgs/pkgs/data/misc/nixos-artwork/icons.nix
new file mode 100644
index 000000000000..af8a157d491c
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/nixos-artwork/icons.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, fetchFromGitHub
+, imagemagick
+}:
+
+stdenv.mkDerivation {
+  pname = "nixos-icons";
+  version = "2021-02-24";
+
+  src = fetchFromGitHub {
+    owner = "NixOS";
+    repo = "nixos-artwork";
+    rev = "488c22aad523c709c44169d3e88d34b4691c20dc";
+    sha256 = "ZoanCzn4pqGB1fyMzMyGQVT0eIhNdL7ZHJSn1VZWVRs=";
+  };
+
+  nativeBuildInputs = [
+    imagemagick
+  ];
+
+  makeFlags = [
+    "DESTDIR=${placeholder "out"}"
+    "prefix="
+  ];
+}
diff --git a/nixpkgs/pkgs/data/misc/nixos-artwork/wallpapers.nix b/nixpkgs/pkgs/data/misc/nixos-artwork/wallpapers.nix
new file mode 100644
index 000000000000..4d5f30e94b91
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/nixos-artwork/wallpapers.nix
@@ -0,0 +1,175 @@
+{ lib, stdenv, fetchurl }:
+
+let
+  mkNixBackground = { name, src, description }:
+
+  let
+    pkg = stdenv.mkDerivation {
+      inherit name src;
+
+      dontUnpack = true;
+
+      installPhase = ''
+        # GNOME
+        mkdir -p $out/share/backgrounds/nixos
+        ln -s $src $out/share/backgrounds/nixos/${src.name}
+
+        mkdir -p $out/share/gnome-background-properties/
+        cat <<EOF > $out/share/gnome-background-properties/${name}.xml
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
+<wallpapers>
+  <wallpaper deleted="false">
+    <name>${name}</name>
+    <filename>${src}</filename>
+    <options>zoom</options>
+    <shade_type>solid</shade_type>
+    <pcolor>#ffffff</pcolor>
+    <scolor>#000000</scolor>
+  </wallpaper>
+</wallpapers>
+EOF
+
+        # TODO: is this path still needed?
+        mkdir -p $out/share/artwork/gnome
+        ln -s $src $out/share/artwork/gnome/${src.name}
+
+        # KDE
+        mkdir -p $out/share/wallpapers/${name}/contents/images
+        ln -s $src $out/share/wallpapers/${name}/contents/images/${src.name}
+        cat >>$out/share/wallpapers/${name}/metadata.desktop <<_EOF
+[Desktop Entry]
+Name=${name}
+X-KDE-PluginInfo-Name=${name}
+_EOF
+      '';
+
+      passthru = {
+        gnomeFilePath = "${pkg}/share/backgrounds/nixos/${src.name}";
+        kdeFilePath = "${pkg}/share/wallpapers/${name}/contents/images/${src.name}";
+      };
+
+      meta = with lib; {
+        inherit description;
+        homepage = "https://github.com/NixOS/nixos-artwork";
+        license = licenses.free;
+        platforms = platforms.all;
+      };
+    };
+in pkg;
+
+in
+
+rec {
+
+  dracula = mkNixBackground {
+    name = "dracula-2020-07-02";
+    description = "Nix background based on the Dracula color palette";
+    src = fetchurl {
+      url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/03c6c20be96c38827037d2238357f2c777ec4aa5/wallpapers/nix-wallpaper-dracula.png";
+      sha256 = "07ly21bhs6cgfl7pv4xlqzdqm44h22frwfhdqyd4gkn2jla1waab";
+    };
+  };
+
+  gnome-dark = simple-dark-gray-bottom;
+
+  mosaic-blue = mkNixBackground {
+    name = "mosaic-blue-2016-02-19";
+    description = "Mosaic blue background for Nix";
+    src = fetchurl {
+      url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/766f10e0c93cb1236a85925a089d861b52ed2905/wallpapers/nix-wallpaper-mosaic-blue.png";
+      sha256 = "1cbcssa8qi0giza0k240w5yy4yb2bhc1p1r7pw8qmziprcmwv5n5";
+    };
+  };
+
+  nineish = mkNixBackground {
+    name = "nineish-2019-12-04";
+    description = "Nix background inspired by simpler times";
+    src = fetchurl {
+      url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/da01f68d21ddfdc9f1c6e520c2170871c81f1cf5/wallpapers/nix-wallpaper-nineish.png";
+      sha256 = "1mwvnmflp0z1biyyhfz7mjn7i1nna94n7jyns3na2shbfkaq7i0h";
+    };
+  };
+
+  nineish-dark-gray = mkNixBackground {
+    name = "nineish-dark-gray-2020-07-02";
+    description = "Dark gray Nix background inspired by simpler times";
+    src = fetchurl {
+      url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/f07707cecfd89bc1459d5dad76a3a4c5315efba1/wallpapers/nix-wallpaper-nineish-dark-gray.png";
+      sha256 = "07zl1dlxqh9dav9pibnhr2x1llywwnyphmzcdqaby7dz5js184ly";
+    };
+  };
+
+  simple-blue = mkNixBackground {
+    name = "simple-blue-2016-02-19";
+    description = "Simple blue background for Nix";
+    src = fetchurl {
+      url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/766f10e0c93cb1236a85925a089d861b52ed2905/wallpapers/nix-wallpaper-simple-blue.png";
+      sha256 = "1llr175m454aqixxwbp3kb5qml2hi1kn7ia6lm7829ny6y7xrnms";
+    };
+  };
+
+  simple-dark-gray = mkNixBackground {
+    name = "simple-dark-gray-2016-02-19";
+    description = "Simple dark gray background for Nix";
+    src = fetchurl {
+      url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/766f10e0c93cb1236a85925a089d861b52ed2905/wallpapers/nix-wallpaper-simple-dark-gray.png";
+      sha256 = "1282cnqc5qynp0q9gdll7bgpw23yp5bhvaqpar59ibkh3iscg8i5";
+    };
+  };
+
+  simple-dark-gray-bootloader = mkNixBackground {
+    name = "simple-dark-gray-bootloader-2018-08-28";
+    description = "Simple dark gray background for NixOS, specifically bootloaders.";
+    src = fetchurl {
+      url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/9d1f11f652ed5ffe460b6c602fbfe2e7e9a08dff/bootloader/nix-wallpaper-simple-dark-gray_bootloader.png";
+      sha256 = "0v26kfydn7alr81f2qpgsqdiq2zk7yrwlgibx2j7k91z9h47dpj9";
+    };
+  };
+
+  simple-dark-gray-bottom = mkNixBackground {
+    name = "simple-dark-gray-2018-08-28";
+    description = "Simple dark gray background for NixOS, specifically bootloaders and graphical login.";
+    src = fetchurl {
+      url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/783c38b22de09f6ee33aacc817470a4513392d83/wallpapers/nix-wallpaper-simple-dark-gray_bottom.png";
+      sha256 = "13hi4jwp5ga06dpdw5l03b4znwn58fdjlkqjkg824isqsxzv6k15";
+    };
+  };
+
+  simple-light-gray = mkNixBackground {
+    name = "simple-light-gray-2016-02-19";
+    description = "Simple light gray background for Nix";
+    src = fetchurl {
+      url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/766f10e0c93cb1236a85925a089d861b52ed2905/wallpapers/nix-wallpaper-simple-light-gray.png";
+      sha256 = "0i6d0xv1nzrv7na9hjrgzl3jrwn81vnprnq2pxyznlxbjcgkjnk2";
+    };
+  };
+
+  simple-red = mkNixBackground {
+    name = "simple-red-2016-02-19";
+    description = "Simple red background for Nix";
+    src = fetchurl {
+      url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/766f10e0c93cb1236a85925a089d861b52ed2905/wallpapers/nix-wallpaper-simple-red.png";
+      sha256 = "16drprsi3q8xbxx3bxp54yld04c4lq6jankw8ww1irg7z61a6wjs";
+    };
+  };
+
+  stripes-logo = mkNixBackground {
+    name = "stripes-logo-2016-02-19";
+    description = "Stripes logo background for Nix";
+    src = fetchurl {
+      url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/766f10e0c93cb1236a85925a089d861b52ed2905/wallpapers/nix-wallpaper-stripes-logo.png";
+      sha256 = "0cqjkgp30428c1yy8s4418k4qz0ycr6fzcg4rdi41wkh5g1hzjnl";
+    };
+  };
+
+  stripes = mkNixBackground {
+    name = "stripes-2016-02-19";
+    description = "Stripes background for Nix";
+    src = fetchurl {
+      url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/766f10e0c93cb1236a85925a089d861b52ed2905/wallpapers/nix-wallpaper-stripes.png";
+      sha256 = "116337wv81xfg0g0bsylzzq2b7nbj6hjyh795jfc9mvzarnalwd3";
+    };
+  };
+
+}
diff --git a/nixpkgs/pkgs/data/misc/osinfo-db/default.nix b/nixpkgs/pkgs/data/misc/osinfo-db/default.nix
new file mode 100644
index 000000000000..e563c2133187
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/osinfo-db/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, stdenv
+, fetchurl
+, osinfo-db-tools
+, gettext
+, libxml2
+}:
+
+stdenv.mkDerivation rec {
+  pname = "osinfo-db";
+  version = "20230308";
+
+  src = fetchurl {
+    url = "https://releases.pagure.org/libosinfo/${pname}-${version}.tar.xz";
+    sha256 = "sha256-VGugTsxekzui1/PztDM6KYDUrk38UoSYm5xUdY8rkIg=";
+  };
+
+  nativeBuildInputs = [
+    osinfo-db-tools
+    gettext
+    libxml2
+  ];
+
+  installPhase = ''
+    osinfo-db-import --dir "$out/share/osinfo" "${src}"
+  '';
+
+  meta = with lib; {
+    description = "Osinfo database of information about operating systems for virtualization provisioning tools";
+    homepage = "https://gitlab.com/libosinfo/osinfo-db/";
+    changelog = "https://gitlab.com/libosinfo/osinfo-db/-/commits/v${version}";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/papirus-folders/default.nix b/nixpkgs/pkgs/data/misc/papirus-folders/default.nix
new file mode 100644
index 000000000000..a44a382c4b40
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/papirus-folders/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenv, fetchFromGitHub, getent }:
+
+stdenv.mkDerivation rec {
+  pname = "papirus-folders";
+  version = "1.13.1";
+
+  src = fetchFromGitHub {
+    owner = "PapirusDevelopmentTeam";
+    repo = "papirus-folders";
+    rev = "v${version}";
+    sha256 = "sha256-BY1hnAGz31Deffy/EGKy/nuPKmpAA0u8FzPYgr1Plfs=";
+  };
+
+  buildInputs = [
+    getent
+  ];
+
+  makeFlags = [ "PREFIX=${placeholder "out"}" ];
+
+  patchPhase = ''
+    substituteInPlace ./papirus-folders --replace "getent" "${getent}/bin/getent"
+  '';
+
+  meta = with lib; {
+    description = "A tool to change papirus icon theme color";
+    longDescription = ''
+      papirus-folders is a bash script that allows changing the color of
+      folders in Papirus icon theme and its forks (which based on version 20171007 and newer).
+    '';
+    homepage = "https://github.com/PapirusDevelopmentTeam/papirus-folders";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.aacebedo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/pari-galdata/default.nix b/nixpkgs/pkgs/data/misc/pari-galdata/default.nix
new file mode 100644
index 000000000000..c76734628050
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/pari-galdata/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenv
+, fetchurl
+}:
+
+stdenv.mkDerivation {
+  version = "20080411";
+  pname = "pari-galdata";
+
+  src = fetchurl {
+    url = "http://pari.math.u-bordeaux.fr/pub/pari/packages/galdata.tgz";
+    sha256 = "1pch6bk76f1i6cwwgm7hhxi5h71m52lqayp4mnyj0jmjk406bhdp";
+  };
+
+  installPhase = ''
+    mkdir -p "$out/share/pari"
+    cp -R * "$out/share/pari/"
+  '';
+
+  meta = with lib; {
+    description = "PARI database needed to compute Galois group in degrees 8 through 11";
+    homepage = "http://pari.math.u-bordeaux.fr/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.all;
+    maintainers = teams.sage.members;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/pari-seadata-small/default.nix b/nixpkgs/pkgs/data/misc/pari-seadata-small/default.nix
new file mode 100644
index 000000000000..86516fe1ddba
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/pari-seadata-small/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenv
+, fetchurl
+}:
+
+stdenv.mkDerivation {
+  version = "20090618";
+  pname = "pari-seadata-small";
+
+  src = fetchurl {
+    url = "http://pari.math.u-bordeaux.fr/pub/pari/packages/seadata-small.tgz";
+    sha256 = "13qafribxwkz8h3haa0cng7arz0kh7398br4y7vqs9ib8w9yjnxz";
+  };
+
+  installPhase = ''
+    mkdir -p "$out/share/pari"
+    cp -R * "$out/share/pari/"
+  '';
+
+  meta = with lib; {
+    description = "PARI database needed by ellap for large primes";
+    homepage = "http://pari.math.u-bordeaux.fr/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.all;
+    maintainers = teams.sage.members;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/polytopes_db/default.nix b/nixpkgs/pkgs/data/misc/polytopes_db/default.nix
new file mode 100644
index 000000000000..8e9e7b44a4aa
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/polytopes_db/default.nix
@@ -0,0 +1,25 @@
+{ lib, stdenv
+, fetchurl
+}:
+
+stdenv.mkDerivation rec {
+  pname = "polytopes_db";
+  version = "20170220";
+
+  src = fetchurl {
+    url = "mirror://sageupstream/${pname}/${pname}-${version}.tar.bz2";
+    sha256 = "1q0cd811ilhax4dsj9y5p7z8prlalqr7k9mzq178c03frbgqny6b";
+  };
+
+  installPhase = ''
+    mkdir -p "$out/share/reflexive_polytopes"
+    cp -R * "$out/share/reflexive_polytopes/"
+  '';
+
+  meta = with lib; {
+    description = "Reflexive polytopes database";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = teams.sage.members;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/poppler-data/default.nix b/nixpkgs/pkgs/data/misc/poppler-data/default.nix
new file mode 100644
index 000000000000..392761a9bd25
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/poppler-data/default.nix
@@ -0,0 +1,30 @@
+{ fetchurl
+, lib
+, stdenv
+, cmake
+, ninja
+, poppler
+}:
+
+stdenv.mkDerivation rec {
+  pname = "poppler-data";
+  version = "0.4.12";
+
+  src = fetchurl {
+    url = "https://poppler.freedesktop.org/${pname}-${version}.tar.gz";
+    sha256 = "yDW2QKQM41fhuDZmqr2V7f+iTd3dSbja/2OtuFHNq3Q=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    ninja
+  ];
+
+  meta = with lib; {
+    homepage = "https://poppler.freedesktop.org/";
+    description = "Encoding files for Poppler, a PDF rendering library";
+    platforms = platforms.all;
+    license = licenses.free; # more free licenses combined
+    maintainers = poppler.meta.maintainers;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/publicsuffix-list/default.nix b/nixpkgs/pkgs/data/misc/publicsuffix-list/default.nix
new file mode 100644
index 000000000000..d5608036b5e3
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/publicsuffix-list/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation {
+  pname = "publicsuffix-list";
+  version = "unstable-2023-02-16";
+
+  src = fetchFromGitHub {
+    owner = "publicsuffix";
+    repo = "list";
+    rev = "8ec4d3049fe139f92937b6137155c33b81dcaf18";
+    hash = "sha256-wA8zk0iADFNP33veIf+Mfx22zdMzHsMNWEizMp1SnuA=";
+  };
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm0444 public_suffix_list.dat tests/test_psl.txt -t $out/share/publicsuffix
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://publicsuffix.org/";
+    description = "Cross-vendor public domain suffix database";
+    platforms = platforms.all;
+    license = licenses.mpl20;
+    maintainers = [ maintainers.c0bw3b ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/rime-data/default.nix b/nixpkgs/pkgs/data/misc/rime-data/default.nix
new file mode 100644
index 000000000000..97404764e200
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/rime-data/default.nix
@@ -0,0 +1,66 @@
+{ lib, stdenv, fetchFromGitHub, librime }:
+
+stdenv.mkDerivation {
+  pname = "rime-data";
+  version = "0.38.20211002";
+
+  src = fetchFromGitHub {
+    owner = "rime";
+    repo = "plum";
+    rev = "1730556e1da5a08bb8e0a656c4780a46851a2913";
+    sha256 = "sha256-D7rPUxcB3QkCtisfBLHPiqfgL5lqmxjSiuEcpE63elw=";
+  };
+
+  buildInputs = [ librime ];
+
+  buildFlags = [ "all" ];
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  preBuild = import ./fetchSchema.nix fetchFromGitHub;
+
+  postPatch = ''
+    # Disable git operations.
+    sed -i /fetch_or_update_package$/d scripts/install-packages.sh
+  '';
+
+  meta = with lib; {
+    description = "Schema data of Rime Input Method Engine";
+    longDescription = ''
+      Rime-data provides schema data for Rime Input Method Engine.
+    '';
+    homepage = "https://rime.im";
+    license = with licenses; [
+      # rime-array
+      # rime-combo-pinyin
+      # rime-double-pinyin
+      # rime-middle-chinese
+      # rime-scj
+      # rime-soutzoe
+      # rime-stenotype
+      # rime-wugniu
+      gpl3Only
+
+      # plum
+      # rime-bopomofo
+      # rime-cangjie
+      # rime-emoji
+      # rime-essay
+      # rime-ipa
+      # rime-jyutping
+      # rime-luna-pinyin
+      # rime-prelude
+      # rime-quick
+      # rime-stroke
+      # rime-terra-pinyin
+      # rime-wubi
+      lgpl3Only
+
+      # rime-pinyin-simp
+      asl20
+
+      # rime-cantonese
+      cc-by-40
+    ];
+    maintainers = with maintainers; [ pmy ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/rime-data/fetchSchema.nix b/nixpkgs/pkgs/data/misc/rime-data/fetchSchema.nix
new file mode 100644
index 000000000000..c2841a9f1e61
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/rime-data/fetchSchema.nix
@@ -0,0 +1,137 @@
+# Generated using generateFetchSchema.sh
+fetchFromGitHub:
+''
+mkdir -p package/rime
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-array";
+  rev = "d10f2f8b2aec7c7e736ace01e8a399e5ae5e7c3a";
+  sha256 = "sha256-4t6+gh2V57SueDp9Tn6vTuxQCZNGzjLdJEhzIEqRjdI=";
+}} package/rime/array
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-bopomofo";
+  rev = "c7618f4f5728e1634417e9d02ea50d82b71956ab";
+  sha256 = "0g77nv0jrwqnbqqna0ib0kqcy6l5zl62kh49ny67d6bjwnwz9186";
+}} package/rime/bopomofo
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-cangjie";
+  rev = "8dfad9e537f18821b71ba28773315d9c670ae245";
+  sha256 = "029kw9nx6x0acg4f0m8wj1ziqffffhy9yyj51nlx17cnia0qcrby";
+}} package/rime/cangjie
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-cantonese";
+  rev = "b6f800c74eb639816d56d0d5601aaa96c8963178";
+  sha256 = "1a4ksacbz8l30y3y5c017d0hzwik8knplglb3yswy7l4hsvaanyh";
+}} package/rime/cantonese
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-combo-pinyin";
+  rev = "a84065a86b272c76215215bd6f03c506b6e7097c";
+  sha256 = "1f0b4kakw0x26gmx7xi4f94nbjlb8lvi9bks4f92jswa045vnd87";
+}} package/rime/combo-pinyin
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-double-pinyin";
+  rev = "69bf85d4dfe8bac139c36abbd68d530b8b6622ea";
+  sha256 = "093wif5avvvw45fqbwj5wkbxrychy4pagl4mwsmbrayc8jkp69ak";
+}} package/rime/double-pinyin
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-emoji";
+  rev = "4c8c51f4a3bc7298c99376eda9bbd86070fc4fa1";
+  sha256 = "0175jqh210fncafqckr9zzaw55qpswmqjrykwms1apmc68l43122";
+}} package/rime/emoji
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-essay";
+  rev = "9db2e77305e75798baf3ec8dcf1f82785b5e1be9";
+  sha256 = "03ypkkaadd5qmyg26n24a66cll90xvcimgbmiyv4d33jradiqg22";
+}} package/rime/essay
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-ipa";
+  rev = "22b71710e029bcb412e9197192a638ab11bc2abf";
+  sha256 = "0zdk4f9qkfj3q5hmjnairj1lv6f6y27mic12k886n6sxywwbwr2k";
+}} package/rime/ipa
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-jyutping";
+  rev = "1e24baa6998815c716c581effe8ec65ee87c4e8c";
+  sha256 = "0s2rckpwlrm3n7w1csnqyi5p9mkpp3z87s7mrm2vc9sv06rpv7zl";
+}} package/rime/jyutping
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-luna-pinyin";
+  rev = "623adb022b094d540218b287c2e601509eee3347";
+  sha256 = "06pcwp09l5wkqv7792gbsl31xnlb3gr9q6bgbp94vvq6m2ycahqz";
+}} package/rime/luna-pinyin
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-middle-chinese";
+  rev = "9fad7a7c0c26167d5e6e85db8df48a15c7f7d4f0";
+  sha256 = "0a0bqrlzg0k692xblqnh1rh1fwwqqb205xwxlihgji85n8ibcgph";
+}} package/rime/middle-chinese
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-pinyin-simp";
+  rev = "b0e84cda02c613ebdedc127a26131b3800f45a8e";
+  sha256 = "05v804qr3a9xvjzp9yid7231fi2l2yrl47ybbvql61z9k36ab094";
+}} package/rime/pinyin-simp
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-prelude";
+  rev = "3de303ffaa731dba07b0462ce59f4767e1219ad2";
+  sha256 = "0g7a0bla58rh1v3md59k6adk185pilb4z8i2i0pqdl4nwqp40n2p";
+}} package/rime/prelude
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-quick";
+  rev = "3fe5911ba608cb2df1b6301b76ad1573bd482a76";
+  sha256 = "08bh87ym5qvw55lyw20l3m7jd4c2z5rvil8h5q8790r7z6j6ijy9";
+}} package/rime/quick
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-scj";
+  rev = "cab5a0858765eff0553dd685a2d61d5536e9149c";
+  sha256 = "0ard2bjp4896a8dimmcwyjwgmp9kl4rz92yc92jnd3y4rgwl6fvk";
+}} package/rime/scj
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-soutzoe";
+  rev = "beeaeca72d8e17dfd1e9af58680439e9012987dc";
+  sha256 = "0jyqx0q9s0qxn168l5n8zav8jcl2g5ppr7pa8jm1vwrllf20slcc";
+}} package/rime/soutzoe
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-stenotype";
+  rev = "f3e9189d5ce33c55d3936cc58e39d0c88b3f0c88";
+  sha256 = "0dl6px7lrh3xa87knjzwzdcwjj1k1dg4l72q7lb48an4s9f1cy5d";
+}} package/rime/stenotype
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-stroke";
+  rev = "ea8576d1accd6fda339e96b415caadb56e2a07d1";
+  sha256 = "07h6nq9867hjrd2v3h1pnr940sdrw4mqrzj43siz1rzjxz3s904r";
+}} package/rime/stroke
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-terra-pinyin";
+  rev = "ce7b9249612f575d2f43d51fcacd31d1b4e0ef1b";
+  sha256 = "0vm303f4lrdmdmif5klrp6w29vn9z2vzw33cw0y83pcnz39wiads";
+}} package/rime/terra-pinyin
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-wubi";
+  rev = "f1876f08f1d4a9696395be0070c0e8e4353c44cb";
+  sha256 = "1d9y9rqssacria9d0hla96czsqv2wkfm6z926m1x269ryv96zxvk";
+}} package/rime/wubi
+ln -sv ${fetchFromGitHub {
+  owner = "rime";
+  repo = "rime-wugniu";
+  rev = "abd1ee98efbf170258fcf43875c21a4259e00b61";
+  sha256 = "0qn54d3cclny106ixdw08r5n6wn52ffs1hgrma3k0j4pv0kr9nlq";
+}} package/rime/wugniu
+''
diff --git a/nixpkgs/pkgs/data/misc/rime-data/generateFetchSchema.sh b/nixpkgs/pkgs/data/misc/rime-data/generateFetchSchema.sh
new file mode 100755
index 000000000000..e7c05c410281
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/rime-data/generateFetchSchema.sh
@@ -0,0 +1,43 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p nix-prefetch-git -p jq
+
+imlist=(
+    array
+    bopomofo
+    cangjie
+    cantonese
+    combo-pinyin
+    double-pinyin
+    emoji
+    essay
+    ipa
+    jyutping
+    luna-pinyin
+    middle-chinese
+    pinyin-simp
+    prelude
+    quick
+    scj
+    soutzoe
+    stenotype
+    stroke
+    terra-pinyin
+    wubi
+    wugniu
+)
+
+echo "# Generated using generateFetchSchema.sh"
+echo "fetchFromGitHub:"
+echo \'\'
+echo "mkdir -p package/rime"
+for im in ${imlist[@]}; do
+    tempFile=$(mktemp)
+    echo "ln -sv \${fetchFromGitHub {"
+    echo "  owner = \"rime\";"
+    echo "  repo = \"rime-$im\";"
+    nix-prefetch-git --quiet https://github.com/rime/rime-$im \
+        | jq '{ rev: .rev, sha256: .sha256 }' \
+        | jq -r 'to_entries | map("  \(.key) = \"\(.value)\";") | .[]'
+    echo "}} package/rime/$im"
+done
+echo \'\'
diff --git a/nixpkgs/pkgs/data/misc/scowl/default.nix b/nixpkgs/pkgs/data/misc/scowl/default.nix
new file mode 100644
index 000000000000..4bfe201beb48
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/scowl/default.nix
@@ -0,0 +1,111 @@
+{ lib, stdenv, fetchFromGitHub, unzip, zip, libiconv, perl, aspell, dos2unix
+, singleWordlist ? null
+}:
+
+stdenv.mkDerivation rec {
+  pname = "scowl";
+  version = "2020.12.07";
+
+  src = fetchFromGitHub {
+    owner = "en-wl";
+    repo = "wordlist";
+    rev = "rel-${version}";
+    sha256 = "sha256-J61jhpnZcXMnoGlSuSCrKDZnnyp3Snjr+fUpTVKX64g=";
+  };
+
+  postPatch = ''
+    substituteInPlace scowl/src/Makefile \
+        --replace g++ c++
+  '';
+
+  nativeBuildInputs = [ unzip zip perl aspell dos2unix ];
+  buildInputs = lib.optional (!stdenv.isLinux) libiconv;
+
+  env.NIX_CFLAGS_COMPILE = "-Wno-narrowing";
+
+  preConfigure = ''
+    patchShebangs .
+    export PERL5LIB="$PERL5LIB''${PERL5LIB:+:}$PWD/varcon"
+  '';
+
+  postBuild = lib.optionalString (singleWordlist == null) ''
+    (
+    cd scowl/speller
+    make aspell
+    make hunspell
+    )
+  '';
+
+  enableParallelBuilding = false;
+
+  installPhase = if singleWordlist == null then ''
+    eval "$preInstall"
+
+    mkdir -p "$out/share/scowl"
+    mkdir -p "$out/lib" "$out/share/hunspell" "$out/share/myspell"
+    mkdir -p "$out/share/dict"
+
+    cp -r scowl/speller/aspell "$out/lib/aspell"
+    cp scowl/speller/*.{aff,dic} "$out/share/hunspell"
+    ln -s "$out/share/hunspell" "$out/share/myspell/dicts"
+
+    cp scowl/final/* "$out/share/scowl"
+
+    (
+      cd scowl
+      for region in american british british_s british_z canadian australian; do
+        case $region in
+          american)
+            regcode=en-us;
+            ;;
+          british)
+            regcode=en-gb-ise;
+            ;;
+          british_s)
+            regcode=en-gb-ise;
+            ;;
+          british_z)
+            regcode=en-gb-ize;
+            ;;
+          canadian)
+            regcode=en-ca;
+            ;;
+          australian)
+            regcode=en-au;
+            ;;
+        esac
+        regcode_var="$regcode"
+        if test "$region" = british; then
+          regcode_var="en-gb"
+        fi
+
+        echo $region $regcode $regcode_sz
+        for s in 10 20 30 35 40 50 55 60 70 80 90 95; do
+          ./mk-list $regcode $s > "$out/share/dict/w$region.$s"
+          ./mk-list --variants=1 $regcode_var $s > "$out/share/dict/w$region.variants.$s"
+          ./mk-list --variants=2 $regcode_var $s > "$out/share/dict/w$region.acceptable.$s"
+        done
+        ./mk-list $regcode 60 > "$out/share/dict/w$region.txt"
+        ./mk-list --variants=1 $regcode_var 60 > "$out/share/dict/w$region.variants.txt"
+        ./mk-list --variants=2 $regcode_var 80 > "$out/share/dict/w$region.scrabble.txt"
+      done
+      ./mk-list --variants=1 en-gb 60 > "$out/share/dict/words.variants.txt"
+      ./mk-list --variants=1 en-gb 80 > "$out/share/dict/words.scrabble.txt"
+      ./mk-list en-gb-ise 60 > "$out/share/dict/words.txt"
+    )
+
+    eval "$postInstall"
+  '' else ''
+    mkdir -p "$out/share/dict"
+    cd scowl
+    ./mk-list ${singleWordlist} > "$out/share/dict/words.txt"
+  '';
+
+  meta = {
+    description = "Spell checker oriented word lists";
+    license = lib.licenses.mit;
+    maintainers = [lib.maintainers.raskin];
+    platforms = lib.platforms.unix;
+    homepage = "http://wordlist.aspell.net/";
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/shared-desktop-ontologies/default.nix b/nixpkgs/pkgs/data/misc/shared-desktop-ontologies/default.nix
new file mode 100644
index 000000000000..fdbd2991cdee
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/shared-desktop-ontologies/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenv, fetchurl, cmake }:
+
+stdenv.mkDerivation rec {
+  pname = "shared-desktop-ontologies";
+  version = "0.11.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/oscaf/shared-desktop-ontologies-${version}.tar.bz2";
+    sha256 = "1m5vnijg7rnwg41vig2ckg632dlczzdab1gsq51g4x7m9k1fdbw2";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  meta = with lib; {
+    homepage = "https://oscaf.sourceforge.net/";
+    description = "Ontologies necessary for the Nepomuk semantic desktop";
+    longDescription = ''
+      The shared-desktop-ontologies package brings the semantic web to the
+      desktop in terms of vocabulary. It contains the well known core
+      ontologies such as RDF and RDFS as well as the Nepomuk ontologies which
+      are used by projects like KDE or Strigi.
+    '';
+    platforms = platforms.all;
+    maintainers = [ maintainers.sander ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/shared-mime-info/default.nix b/nixpkgs/pkgs/data/misc/shared-mime-info/default.nix
new file mode 100644
index 000000000000..8de13f2eaf36
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/shared-mime-info/default.nix
@@ -0,0 +1,62 @@
+{ stdenv
+, lib
+, fetchFromGitLab
+, fetchpatch
+, meson
+, ninja
+, pkg-config
+, gettext
+, itstool
+, libxml2
+, glib
+, shared-mime-info
+}:
+
+stdenv.mkDerivation rec {
+  pname = "shared-mime-info";
+  version = "2.3";
+
+  outputs = [ "out" "dev" ];
+
+  src = fetchFromGitLab {
+    domain = "gitlab.freedesktop.org";
+    owner = "xdg";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-cEfknRVtOJykEO9Iqlb0UoiayYtu+ugvmmZqAD5cGnE=";
+  };
+
+  patches = [
+    # Submitted upstream at
+    # https://gitlab.freedesktop.org/xdg/shared-mime-info/-/issues/211
+    ./fix-clang-warnings.patch
+  ];
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    gettext
+    libxml2
+  ] ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) shared-mime-info;
+
+  buildInputs = [
+    libxml2
+    glib
+  ];
+
+  strictDeps = true;
+
+  mesonFlags = [
+    "-Dupdate-mimedb=true"
+  ];
+
+  meta = with lib; {
+    description = "A database of common MIME types";
+    homepage = "http://freedesktop.org/wiki/Software/shared-mime-info";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = teams.freedesktop.members ++ [ maintainers.mimame ];
+    mainProgram = "update-mime-database";
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/shared-mime-info/fix-clang-warnings.patch b/nixpkgs/pkgs/data/misc/shared-mime-info/fix-clang-warnings.patch
new file mode 100644
index 000000000000..2d185549c4e6
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/shared-mime-info/fix-clang-warnings.patch
@@ -0,0 +1,31 @@
+diff --git a/meson.build b/meson.build
+index 1780c44..7998a51 100644
+--- a/meson.build
++++ b/meson.build
+@@ -49,12 +49,7 @@ endif
+ ###############################################################################
+ # Dependencies
+ 
+-check_functions = [
+-    'fdatasync',
+-]
+-foreach function : check_functions
+-    config.set('HAVE_'+function.to_upper(), cc.has_function(function))
+-endforeach
++config.set('HAVE_FDATASYNC', cc.has_function('fdatasync', prefix: '#include <unistd.h>'))
+ 
+ 
+ if get_option('build-translations')
+diff --git a/src/update-mime-database.cpp b/src/update-mime-database.cpp
+index 733ba06..4ca6d06 100644
+--- a/src/update-mime-database.cpp
++++ b/src/update-mime-database.cpp
+@@ -2158,7 +2158,7 @@ static void check_in_path_xdg_data(const char *mime_path)
+ 
+ 	env = getenv("XDG_DATA_DIRS");
+ 	if (!env)
+-		env = "/usr/local/share/"PATH_SEPARATOR"/usr/share/";
++		env = "/usr/local/share/" PATH_SEPARATOR "/usr/share/";
+ 	dirs = g_strsplit(env, PATH_SEPARATOR, 0);
+ 	g_return_if_fail(dirs != NULL);
+ 	for (n = 0; dirs[n]; n++)
diff --git a/nixpkgs/pkgs/data/misc/sing-geoip/default.nix b/nixpkgs/pkgs/data/misc/sing-geoip/default.nix
new file mode 100644
index 000000000000..b27a61ef0201
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/sing-geoip/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, stdenvNoCC
+, buildGoModule
+, fetchFromGitHub
+, dbip-country-lite
+}:
+
+let
+  generator = buildGoModule rec {
+    pname = "sing-geoip";
+    version = "20230512";
+
+    src = fetchFromGitHub {
+      owner = "SagerNet";
+      repo = pname;
+      rev = "refs/tags/${version}";
+      hash = "sha256-Zm+5N/37hoHpH/TLNJrHeaBXI8G1jEpM1jz6Um8edNE=";
+    };
+
+    vendorHash = "sha256-ejXAdsJwXhqet+Ca+pDLWwu0gex79VcIxW6rmhRnbTQ=";
+
+    meta = with lib; {
+      description = "GeoIP data for sing-box";
+      homepage = "https://github.com/SagerNet/sing-geoip";
+      license = licenses.gpl3Plus;
+      maintainers = with maintainers; [ linsui ];
+    };
+  };
+in
+stdenvNoCC.mkDerivation rec {
+  inherit (generator) pname;
+  inherit (dbip-country-lite) version;
+
+  dontUnpack = true;
+
+  nativeBuildInputs = [ generator ];
+
+  buildPhase = ''
+    runHook preBuild
+
+    ${pname} ${dbip-country-lite.mmdb} geoip.db
+    ${pname} ${dbip-country-lite.mmdb} geoip-cn.db cn
+
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 geoip.db $out/share/sing-box/geoip.db
+    install -Dm644 geoip-cn.db $out/share/sing-box/geoip-cn.db
+
+    runHook postInstall
+  '';
+
+  passthru = { inherit generator; };
+
+  meta = generator.meta // {
+    inherit (dbip-country-lite.meta) license;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/sing-geosite/default.nix b/nixpkgs/pkgs/data/misc/sing-geosite/default.nix
new file mode 100644
index 000000000000..900e5ef86c8f
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/sing-geosite/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, buildGo120Module
+, fetchFromGitHub
+, substituteAll
+, v2ray-domain-list-community
+}:
+
+let
+  patch = substituteAll {
+    src = ./main.go;
+    geosite_data = "${v2ray-domain-list-community}/share/v2ray/geosite.dat";
+  };
+in
+buildGo120Module {
+  pname = "sing-geosite";
+  inherit (v2ray-domain-list-community) version;
+
+  src = fetchFromGitHub {
+    owner = "SagerNet";
+    repo = "sing-geosite";
+    rev = "4a32d56c1705f77668beb5828df0b0a051efdeb9";
+    hash = "sha256-P/EBcwJI2G9327BNi84R+q6BABx9DEKpN6ETTp8Q4NU=";
+  };
+
+  vendorHash = "sha256-uQOmUXT2wd40DwwTCMnFFKd47eu+BPBDjiCGtUNFoKY=";
+
+  patchPhase = ''
+    sed -i -e '/func main()/,/^}/d' -e '/"io"/a "io/ioutil"' main.go
+    cat ${patch} >> main.go
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+    go run -v .
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm644 geosite.db $out/share/sing-box/geosite.db
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "community managed domain list";
+    homepage = "https://github.com/SagerNet/sing-geosite";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ linsui ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/sing-geosite/main.go b/nixpkgs/pkgs/data/misc/sing-geosite/main.go
new file mode 100644
index 000000000000..d059d99ffe1e
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/sing-geosite/main.go
@@ -0,0 +1,19 @@
+func main() {
+	outputFile, err := os.Create("geosite.db")
+	if err != nil {
+		panic(err)
+	}
+	defer outputFile.Close()
+	vData, err := ioutil.ReadFile("@geosite_data@")
+	if err != nil {
+		panic(err)
+	}
+	domainMap, err := parse(vData)
+	if err != nil {
+		panic(err)
+	}
+	err = geosite.Write(outputFile, domainMap)
+	if err != nil {
+		panic(err)
+	}
+}
diff --git a/nixpkgs/pkgs/data/misc/sound-theme-freedesktop/default.nix b/nixpkgs/pkgs/data/misc/sound-theme-freedesktop/default.nix
new file mode 100644
index 000000000000..2b750a7e9e10
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/sound-theme-freedesktop/default.nix
@@ -0,0 +1,21 @@
+{ lib, stdenv, fetchurl, intltool }:
+
+stdenv.mkDerivation rec {
+  pname = "sound-theme-freedesktop";
+  version = "0.8";
+
+  src = fetchurl {
+    sha256 = "054abv4gmfk9maw93fis0bf605rc56dah7ys5plc4pphxqh8nlfb";
+    url = "https://people.freedesktop.org/~mccann/dist/${pname}-${version}.tar.bz2";
+  };
+
+  nativeBuildInputs = [ intltool ];
+
+  meta = with lib; {
+    description = "Freedesktop reference sound theme";
+    homepage = "http://freedesktop.org/wiki/Specifications/sound-theme-spec";
+    # See http://cgit.freedesktop.org/sound-theme-freedesktop/tree/CREDITS:
+    license = with licenses; [ cc-by-30 cc-by-sa-25 gpl2 gpl2Plus ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/spdx-license-list-data/default.nix b/nixpkgs/pkgs/data/misc/spdx-license-list-data/default.nix
new file mode 100644
index 000000000000..e20872482d58
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/spdx-license-list-data/default.nix
@@ -0,0 +1,46 @@
+{ stdenvNoCC, lib, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "spdx-license-list-data";
+  version = "3.22";
+
+  src = fetchFromGitHub {
+    owner = "spdx";
+    repo = "license-list-data";
+    rev = "v${version}";
+    hash = "sha256-ZADijP8TKMSXJApY7pVTJoqsEPPL8PX7dUFJHFX5utw=";
+  };
+
+  # List of file formats to package.
+  _types = [ "html" "json" "jsonld" "rdfa" "rdfnt" "rdfturtle" "rdfxml" "template" "text" ];
+
+  outputs = [ "out" ] ++ _types;
+
+  dontPatch = true;
+  dontConfigure = true;
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -pv $out
+    for t in $_types
+    do
+      _outpath=''${!t}
+      mkdir -pv $_outpath
+      cp -ar $t $_outpath && echo "$t format installed"
+    done
+
+    runHook postInstall
+  '';
+
+  dontFixup = true;
+
+  meta = with lib; {
+    description = "Various data formats for the SPDX License List";
+    homepage = "https://github.com/spdx/license-list-data";
+    license = licenses.cc0;
+    maintainers = with maintainers; [ oxzi c0bw3b ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/tzdata/0001-Add-exe-extension-for-MS-Windows-binaries.patch b/nixpkgs/pkgs/data/misc/tzdata/0001-Add-exe-extension-for-MS-Windows-binaries.patch
new file mode 100644
index 000000000000..af90ce57949a
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/tzdata/0001-Add-exe-extension-for-MS-Windows-binaries.patch
@@ -0,0 +1,15 @@
+diff --git a/Makefile b/Makefile
+index a9a989e..4da737b 100644
+--- a/Makefile
++++ b/Makefile
+@@ -606,8 +606,8 @@ install:	all $(DATA) $(REDO) $(MANS)
+ 			-t '$(DESTDIR)$(TZDEFAULT)'
+ 		cp -f $(TABDATA) '$(DESTDIR)$(TZDIR)/.'
+ 		cp tzselect '$(DESTDIR)$(BINDIR)/.'
+-		cp zdump '$(DESTDIR)$(ZDUMPDIR)/.'
+-		cp zic '$(DESTDIR)$(ZICDIR)/.'
++		cp zdump.exe '$(DESTDIR)$(ZDUMPDIR)/.'
++		cp zic.exe '$(DESTDIR)$(ZICDIR)/.'
+ 		cp libtz.a '$(DESTDIR)$(LIBDIR)/.'
+ 		$(RANLIB) '$(DESTDIR)$(LIBDIR)/libtz.a'
+ 		cp -f newctime.3 newtzset.3 '$(DESTDIR)$(MANDIR)/man3/.'
diff --git a/nixpkgs/pkgs/data/misc/tzdata/default.nix b/nixpkgs/pkgs/data/misc/tzdata/default.nix
new file mode 100644
index 000000000000..98aeb7638e12
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/tzdata/default.nix
@@ -0,0 +1,79 @@
+{ lib, stdenv, fetchurl, buildPackages }:
+
+stdenv.mkDerivation rec {
+  pname = "tzdata";
+  version = "2023c";
+
+  srcs = [
+    (fetchurl {
+      url = "https://data.iana.org/time-zones/releases/tzdata${version}.tar.gz";
+      hash = "sha256-P1ELXRtK6bs45IWqMCp3azF/s2N722QExK33tsrdllw=";
+    })
+    (fetchurl {
+      url = "https://data.iana.org/time-zones/releases/tzcode${version}.tar.gz";
+      hash = "sha256-RtF/K7Ga1zKQ8DogMAYVLg+g17EeW3FGfEqCOBGyFOc=";
+    })
+  ];
+
+  sourceRoot = ".";
+
+  patches = lib.optionals stdenv.hostPlatform.isWindows [
+    ./0001-Add-exe-extension-for-MS-Windows-binaries.patch
+  ];
+
+  outputs = [ "out" "bin" "man" "dev" ];
+  propagatedBuildOutputs = [];
+
+  makeFlags = [
+    "TOPDIR=$(out)"
+    "TZDIR=$(out)/share/zoneinfo"
+    "BINDIR=$(bin)/bin"
+    "ZICDIR=$(bin)/bin"
+    "ETCDIR=$(TMPDIR)/etc"
+    "TZDEFAULT=tzdefault-to-remove"
+    "LIBDIR=$(dev)/lib"
+    "MANDIR=$(man)/share/man"
+    "AWK=awk"
+    "CFLAGS=-DHAVE_LINK=0"
+    "CFLAGS+=-DZIC_BLOAT_DEFAULT=\\\"fat\\\""
+    "cc=${stdenv.cc.targetPrefix}cc"
+    "AR=${stdenv.cc.targetPrefix}ar"
+  ] ++ lib.optionals stdenv.hostPlatform.isWindows [
+    "CFLAGS+=-DHAVE_DIRECT_H"
+    "CFLAGS+=-DHAVE_SETENV=0"
+    "CFLAGS+=-DHAVE_SYMLINK=0"
+    "CFLAGS+=-DRESERVE_STD_EXT_IDS"
+  ];
+
+  doCheck = false; # needs more tools
+
+  installFlags = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
+    "zic=${buildPackages.tzdata.bin}/bin/zic"
+  ];
+
+  postInstall =
+    ''
+      rm $out/share/zoneinfo-posix
+      rm $out/share/zoneinfo/tzdefault-to-remove
+      mkdir $out/share/zoneinfo/posix
+      ( cd $out/share/zoneinfo/posix; ln -s ../* .; rm posix )
+      mv $out/share/zoneinfo-leaps $out/share/zoneinfo/right
+
+      mkdir -p "$dev/include"
+      cp tzfile.h "$dev/include/tzfile.h"
+    '';
+
+  setupHook = ./tzdata-setup-hook.sh;
+
+  meta = with lib; {
+    homepage = "http://www.iana.org/time-zones";
+    description = "Database of current and historical time zones";
+    changelog = "https://github.com/eggert/tz/blob/${version}/NEWS";
+    license = with licenses; [
+      bsd3 # tzcode
+      publicDomain # tzdata
+    ];
+    platforms = platforms.all;
+    maintainers = with maintainers; [ ajs124 fpletz ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/tzdata/tzdata-setup-hook.sh b/nixpkgs/pkgs/data/misc/tzdata/tzdata-setup-hook.sh
new file mode 100644
index 000000000000..9975d0aec31a
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/tzdata/tzdata-setup-hook.sh
@@ -0,0 +1,5 @@
+tzdataHook() {
+    export TZDIR=@out@/share/zoneinfo
+}
+
+addEnvHooks "$targetOffset" tzdataHook
diff --git a/nixpkgs/pkgs/data/misc/unicode-character-database/default.nix b/nixpkgs/pkgs/data/misc/unicode-character-database/default.nix
new file mode 100644
index 000000000000..721e04256db8
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/unicode-character-database/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenv
+, fetchurl
+, unzip
+}:
+
+stdenv.mkDerivation rec {
+  pname = "unicode-character-database";
+  version = "15.1.0";
+
+  src = fetchurl {
+    url = "https://www.unicode.org/Public/zipped/${version}/UCD.zip";
+    sha256 = "sha256-yxxmPQU5JlAM1QEilzYEV1JxOgZr11gCCYWYt6cFYXc=";
+  };
+
+  nativeBuildInputs = [
+    unzip
+  ];
+
+  sourceRoot = ".";
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/unicode
+    cp -r * $out/share/unicode
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Unicode Character Database";
+    homepage = "https://www.unicode.org/";
+    license = licenses.unicode-dfs-2016;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/unicode-emoji/default.nix b/nixpkgs/pkgs/data/misc/unicode-emoji/default.nix
new file mode 100644
index 000000000000..ae14a27c8b7f
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/unicode-emoji/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, stdenvNoCC
+, fetchurl
+, symlinkJoin
+}:
+
+let
+  version = "15.0";
+
+  fetchData = { suffix, hash }: stdenvNoCC.mkDerivation {
+    pname = "unicode-emoji-${suffix}";
+    inherit version;
+
+    src = fetchurl {
+      url = "https://www.unicode.org/Public/emoji/${version}/emoji-${suffix}.txt";
+      inherit hash;
+    };
+
+    dontUnpack = true;
+
+    installPhase = ''
+      runHook preInstall
+
+      installDir="$out/share/unicode/emoji"
+      mkdir -p "$installDir"
+      cp "$src" "$installDir/emoji-${suffix}.txt"
+
+      runHook postInstall
+    '';
+  };
+
+  srcs = {
+    emoji-sequences = fetchData {
+      suffix = "sequences";
+      hash = "sha256-XCIi2KQy2JagMaaML1SwT79HsPzi5phT8euKPpRetW0=";
+    };
+    emoji-test = fetchData {
+      suffix = "test";
+      hash = "sha256-hEXyOsg4jglr4Z0CYuFPzv+Fb/Ugk/I1bciUhfGoU9s=";
+    };
+    emoji-zwj-sequences = fetchData {
+      suffix = "zwj-sequences";
+      hash = "sha256-/jV/kRe3dGZ2Bjdl1YcTft+bJZA6eSvVSTW/CFZ5EYI=";
+    };
+  };
+in
+
+symlinkJoin rec {
+  name = "unicode-emoji-${version}";
+
+  paths = lib.attrValues srcs;
+
+  passthru = srcs;
+
+  meta = with lib; {
+    description = "Unicode Emoji Data Files";
+    homepage = "https://home.unicode.org/emoji/";
+    license = licenses.unicode-dfs-2016;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/unihan-database/default.nix b/nixpkgs/pkgs/data/misc/unihan-database/default.nix
new file mode 100644
index 000000000000..362507fc5cba
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/unihan-database/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenv
+, fetchurl
+, unzip
+}:
+
+stdenv.mkDerivation rec {
+  pname = "unihan-database";
+  version = "15.1.0";
+
+  src = fetchurl {
+    url = "https://www.unicode.org/Public/zipped/${version}/Unihan.zip";
+    hash = "sha256-oCJmEOMkvPeErDgOEfTL9TPuHms9AosJkb+MDcP4WFM=";
+  };
+
+  nativeBuildInputs = [
+    unzip
+  ];
+
+  sourceRoot = ".";
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/unicode
+    cp -r * $out/share/unicode
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Unicode Han Database";
+    homepage = "https://www.unicode.org/";
+    license = licenses.unicode-dfs-2016;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/v2ray-domain-list-community/default.nix b/nixpkgs/pkgs/data/misc/v2ray-domain-list-community/default.nix
new file mode 100644
index 000000000000..e330a7bab9bc
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/v2ray-domain-list-community/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, pkgsBuildBuild, fetchFromGitHub, lib }:
+
+let
+  generator = pkgsBuildBuild.buildGoModule rec {
+    pname = "v2ray-domain-list-community";
+    version = "20231122065640";
+    src = fetchFromGitHub {
+      owner = "v2fly";
+      repo = "domain-list-community";
+      rev = version;
+      hash = "sha256-M11PasiVVfRz1oySS6eJhCAsxX4sF5ehknYWEhb3K9Q=";
+    };
+    vendorHash = "sha256-6167kRAC5m5FlBr7uk+qKUcjWsb45P5Vvovyb6hHSVQ=";
+    meta = with lib; {
+      description = "community managed domain list";
+      homepage = "https://github.com/v2fly/domain-list-community";
+      license = licenses.mit;
+      maintainers = with maintainers; [ nickcao ];
+    };
+  };
+in
+stdenv.mkDerivation {
+  inherit (generator) pname version src meta;
+  buildPhase = ''
+    runHook preBuild
+    ${generator}/bin/domain-list-community -datapath $src/data --exportlists=category-ads-all,tld-cn,cn,tld-\!cn,geolocation-\!cn,apple,icloud
+    runHook postBuild
+  '';
+  installPhase = ''
+    runHook preInstall
+    install -Dm644 dlc.dat $out/share/v2ray/geosite.dat
+    runHook postInstall
+  '';
+  passthru.generator = generator;
+}
diff --git a/nixpkgs/pkgs/data/misc/v2ray-geoip/default.nix b/nixpkgs/pkgs/data/misc/v2ray-geoip/default.nix
new file mode 100644
index 000000000000..fb9064a437d1
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/v2ray-geoip/default.nix
@@ -0,0 +1,69 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, pkgsBuildBuild
+, jq
+, moreutils
+, dbip-country-lite
+}:
+
+let
+  generator = pkgsBuildBuild.buildGo120Module {
+    pname = "v2ray-geoip";
+    version = "unstable-2023-10-11";
+
+    src = fetchFromGitHub {
+      owner = "v2fly";
+      repo = "geoip";
+      rev = "3182dda7b38c900f28505b91a44b09ec486e6f36";
+      hash = "sha256-KSRgof78jScwnUeMtryj34J0mBsM/x9hFE4H9WtZUuM=";
+    };
+
+    vendorHash = "sha256-rlRazevKnWy/Ig143s8TZgV3JlQMlHID9rnncLYhQDc=";
+
+    meta = with lib; {
+      description = "GeoIP for V2Ray";
+      homepage = "https://github.com/v2fly/geoip";
+      license = licenses.cc-by-sa-40;
+      maintainers = with maintainers; [ nickcao ];
+    };
+  };
+  input = {
+    type = "maxmindMMDB";
+    action = "add";
+    args = {
+      uri = dbip-country-lite.mmdb;
+    };
+  };
+in
+stdenvNoCC.mkDerivation {
+  inherit (generator) pname src;
+  inherit (dbip-country-lite) version;
+
+  nativeBuildInputs = [
+    jq
+    moreutils
+  ];
+
+  postPatch = ''
+    jq '.input[0] |= ${builtins.toJSON input}' config.json | sponge config.json
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+    ${generator}/bin/geoip
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm444 -t "$out/share/v2ray" output/dat/{cn,geoip-only-cn-private,geoip,private}.dat
+    runHook postInstall
+  '';
+
+  passthru.generator = generator;
+
+  meta = generator.meta // {
+    inherit (dbip-country-lite.meta) license;
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/wireless-regdb/default.nix b/nixpkgs/pkgs/data/misc/wireless-regdb/default.nix
new file mode 100644
index 000000000000..14ce443eb3b5
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/wireless-regdb/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "wireless-regdb";
+  version = "2023.09.01";
+
+  src = fetchurl {
+    url = "https://www.kernel.org/pub/software/network/${pname}/${pname}-${version}.tar.xz";
+    sha256 = "sha256-JtTCpyfMWSObhHNarYVrfH0LBOMKpcI1xPf0f18FNJE=";
+  };
+
+  dontBuild = true;
+
+  makeFlags = [
+    "DESTDIR=${placeholder "out"}"
+    "PREFIX="
+  ];
+
+  meta = with lib; {
+    description = "Wireless regulatory database for CRDA";
+    homepage = "http://wireless.kernel.org/en/developers/Regulatory/";
+    license = licenses.isc;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ fpletz ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/misc/xorg-rgb/default.nix b/nixpkgs/pkgs/data/misc/xorg-rgb/default.nix
new file mode 100644
index 000000000000..646f4ae491b0
--- /dev/null
+++ b/nixpkgs/pkgs/data/misc/xorg-rgb/default.nix
@@ -0,0 +1,22 @@
+{ lib, stdenv, fetchurl, pkg-config, xorgproto }:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "rgb";
+  version = "1.1.0";
+
+  src = fetchurl {
+    url = "https://xorg.freedesktop.org/archive/individual/app/rgb-${finalAttrs.version}.tar.xz";
+    hash = "sha256-/APX9W5bKmF2aBZ/iSeUjM5U+TCX58zZ8FYHf0ee03s=";
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ xorgproto ];
+
+  meta = with lib; {
+    description = "X11 colorname to RGB mapping database";
+    license = licenses.mit;
+    maintainers = with maintainers; [ raskin ];
+    platforms = platforms.linux;
+    homepage = "https://xorg.freedesktop.org/";
+  };
+})
diff --git a/nixpkgs/pkgs/data/sgml+xml/schemas/docbook-5.0/default.nix b/nixpkgs/pkgs/data/sgml+xml/schemas/docbook-5.0/default.nix
new file mode 100644
index 000000000000..68bc6101d03c
--- /dev/null
+++ b/nixpkgs/pkgs/data/sgml+xml/schemas/docbook-5.0/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenv, fetchurl, unzip }:
+
+stdenv.mkDerivation rec {
+  pname = "docbook5";
+  version = "5.0.1";
+
+  src = fetchurl {
+    url = "http://www.docbook.org/xml/${version}/docbook-${version}.zip";
+    sha256 = "1iz3hq1lqgnshvlz4j9gvh4jy1ml74qf90vqf2ikbq0h4i2xzybs";
+  };
+
+  nativeBuildInputs = [ unzip ];
+
+  installPhase =
+    ''
+      dst=$out/share/xml/docbook-5.0
+      mkdir -p $dst
+      cp -prv * $dst/
+
+      substituteInPlace $dst/catalog.xml --replace 'uri="' "uri=\"$dst/"
+
+      rm -rf $dst/docs $dst/ChangeLog
+
+      # Backwards compatibility. Will remove eventually.
+      mkdir -p $out/xml/rng $out/xml/dtd
+      ln -s $dst/rng $out/xml/rng/docbook
+      ln -s $dst/dtd $out/xml/dtd/docbook
+    '';
+
+  meta = {
+    description = "Schemas for DocBook 5.0, a semantic markup language for technical documentation";
+    homepage = "https://docbook.org/xml/5.0/";
+    maintainers = [ lib.maintainers.eelco ];
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/sgml+xml/schemas/sgml-dtd/docbook/3.1.nix b/nixpkgs/pkgs/data/sgml+xml/schemas/sgml-dtd/docbook/3.1.nix
new file mode 100644
index 000000000000..b1db3638682b
--- /dev/null
+++ b/nixpkgs/pkgs/data/sgml+xml/schemas/sgml-dtd/docbook/3.1.nix
@@ -0,0 +1,37 @@
+{ lib, stdenv, fetchurl, unzip }:
+
+let
+
+  src = fetchurl {
+    url = "http://www.oasis-open.org/docbook/sgml/3.1/docbk31.zip";
+    sha256 = "0f25ch7bywwhdxb1qa0hl28mgq1blqdap3rxzamm585rf4kis9i0";
+  };
+
+  isoents = fetchurl {
+    url = "http://www.oasis-open.org/cover/ISOEnts.zip";
+    sha256 = "1clrkaqnvc1ja4lj8blr0rdlphngkcda3snm7b9jzvcn76d3br6w";
+  };
+
+in
+
+stdenv.mkDerivation {
+  name = "docbook-sgml-3.1";
+
+  dontUnpack = true;
+
+  nativeBuildInputs = [ unzip ];
+
+  installPhase =
+    ''
+      o=$out/sgml/dtd/docbook-3.1
+      mkdir -p $o
+      cd $o
+      unzip ${src}
+      unzip ${isoents}
+      sed -e "s/iso-/ISO/" -e "s/.gml//" -i docbook.cat
+    '';
+
+  meta = {
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/data/sgml+xml/schemas/sgml-dtd/docbook/4.1.nix b/nixpkgs/pkgs/data/sgml+xml/schemas/sgml-dtd/docbook/4.1.nix
new file mode 100644
index 000000000000..85d7ab167964
--- /dev/null
+++ b/nixpkgs/pkgs/data/sgml+xml/schemas/sgml-dtd/docbook/4.1.nix
@@ -0,0 +1,37 @@
+{ lib, stdenv, fetchurl, unzip }:
+
+let
+
+  src = fetchurl {
+    url = "http://www.oasis-open.org/docbook/sgml/4.1/docbk41.zip";
+    sha256 = "04b3gp4zkh9c5g9kvnywdkdfkcqx3kjc04j4mpkr4xk7lgqgrany";
+  };
+
+  isoents = fetchurl {
+    url = "http://www.oasis-open.org/cover/ISOEnts.zip";
+    sha256 = "1clrkaqnvc1ja4lj8blr0rdlphngkcda3snm7b9jzvcn76d3br6w";
+  };
+
+in
+
+stdenv.mkDerivation {
+  name = "docbook-sgml-4.1";
+
+  dontUnpack = true;
+
+  nativeBuildInputs = [ unzip ];
+
+  installPhase =
+    ''
+      o=$out/sgml/dtd/docbook-4.1
+      mkdir -p $o
+      cd $o
+      unzip ${src}
+      unzip ${isoents}
+      sed -e "s/iso-/ISO/" -e "s/.gml//" -i docbook.cat
+    '';
+
+  meta = {
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook-ebnf/default.nix b/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook-ebnf/default.nix
new file mode 100644
index 000000000000..6be2e89dcd2e
--- /dev/null
+++ b/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook-ebnf/default.nix
@@ -0,0 +1,26 @@
+{lib, stdenv, fetchurl}:
+
+stdenv.mkDerivation rec {
+  pname = "docbook-xml-ebnf";
+  version = "1.2b1";
+
+  dtd = fetchurl {
+    url = "https://docbook.org/xml/ebnf/${version}/dbebnf.dtd";
+    sha256 = "0min5dsc53my13b94g2yd65q1nkjcf4x1dak00bsc4ckf86mrx95";
+  };
+  catalog = ./docbook-ebnf.cat;
+
+  unpackPhase = ''
+    mkdir -p $out/xml/dtd/docbook-ebnf
+    cd $out/xml/dtd/docbook-ebnf
+  '';
+
+  installPhase = ''
+    cp -p $dtd dbebnf.dtd
+    cp -p $catalog $(stripHash $catalog)
+  '';
+
+  meta = {
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook-ebnf/docbook-ebnf.cat b/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook-ebnf/docbook-ebnf.cat
new file mode 100644
index 000000000000..896a8338f118
--- /dev/null
+++ b/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook-ebnf/docbook-ebnf.cat
@@ -0,0 +1,2 @@
+PUBLIC "-//OASIS//DTD DocBook EBNF Module V1.0//EN"
+       "dbebnf.dtd"
diff --git a/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.1.2.nix b/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.1.2.nix
new file mode 100644
index 000000000000..c367e2a1d0cd
--- /dev/null
+++ b/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.1.2.nix
@@ -0,0 +1,22 @@
+{lib, stdenv, fetchurl, unzip, findXMLCatalogs}:
+
+let
+  # Urgh, DocBook 4.1.2 doesn't come with an XML catalog.  Use the one
+  # from 4.2.
+  docbook42catalog = fetchurl {
+    url = "https://docbook.org/xml/4.2/catalog.xml";
+    sha256 = "18lhp6q2l0753s855r638shkbdwq9blm6akdjsc9nrik24k38j17";
+  };
+in
+
+import ./generic.nix {
+  inherit lib stdenv unzip findXMLCatalogs;
+  version = "4.1.2";
+  src = fetchurl {
+    url = "https://docbook.org/xml/4.1.2/docbkx412.zip";
+    sha256 = "0wkp5rvnqj0ghxia0558mnn4c7s3n501j99q2isp3sp0ci069w1h";
+  };
+  postInstall = "
+    sed 's|V4.2|V4.1.2|g' < ${docbook42catalog} > catalog.xml
+  ";
+}
diff --git a/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.2.nix b/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.2.nix
new file mode 100644
index 000000000000..8f778ea7505d
--- /dev/null
+++ b/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.2.nix
@@ -0,0 +1,10 @@
+{lib, stdenv, fetchurl, unzip, findXMLCatalogs}:
+
+import ./generic.nix {
+  inherit lib stdenv unzip findXMLCatalogs;
+  version = "4.2";
+  src = fetchurl {
+    url = "https://docbook.org/xml/4.2/docbook-xml-4.2.zip";
+    sha256 = "acc4601e4f97a196076b7e64b368d9248b07c7abf26b34a02cca40eeebe60fa2";
+  };
+}
diff --git a/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.3.nix b/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.3.nix
new file mode 100644
index 000000000000..a58370ec4ac6
--- /dev/null
+++ b/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.3.nix
@@ -0,0 +1,10 @@
+{lib, stdenv, fetchurl, unzip, findXMLCatalogs}:
+
+import ./generic.nix {
+  inherit lib stdenv unzip findXMLCatalogs;
+  version = "4.3";
+  src = fetchurl {
+    url = "https://docbook.org/xml/4.3/docbook-xml-4.3.zip";
+    sha256 = "0r1l2if1z4wm2v664sqdizm4gak6db1kx9y50jq89m3gxaa8l1i3";
+  };
+}
diff --git a/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.4.nix b/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.4.nix
new file mode 100644
index 000000000000..3b46fe81bd7a
--- /dev/null
+++ b/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.4.nix
@@ -0,0 +1,10 @@
+{lib, stdenv, fetchurl, unzip, findXMLCatalogs}:
+
+import ./generic.nix {
+  inherit lib stdenv unzip findXMLCatalogs;
+  version = "4.4";
+  src = fetchurl {
+    url = "https://docbook.org/xml/4.4/docbook-xml-4.4.zip";
+    sha256 = "141h4zsyc71sfi2zzd89v4bb4qqq9ca1ri9ix2als9f4i3mmkw82";
+  };
+}
diff --git a/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.5.nix b/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.5.nix
new file mode 100644
index 000000000000..c4ab1f6f3a9b
--- /dev/null
+++ b/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.5.nix
@@ -0,0 +1,10 @@
+{lib, stdenv, fetchurl, unzip, findXMLCatalogs}:
+
+import ./generic.nix {
+  inherit lib stdenv unzip findXMLCatalogs;
+  version = "4.5";
+  src = fetchurl {
+    url = "https://docbook.org/xml/4.5/docbook-xml-4.5.zip";
+    sha256 = "1d671lcjckjri28xfbf6dq7y3xnkppa910w1jin8rjc35dx06kjf";
+  };
+}
diff --git a/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/generic.nix b/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/generic.nix
new file mode 100644
index 000000000000..7a635f612af8
--- /dev/null
+++ b/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/generic.nix
@@ -0,0 +1,25 @@
+{ lib, stdenv, unzip, src, version, postInstall ? "true", findXMLCatalogs }:
+
+stdenv.mkDerivation {
+  inherit version src postInstall;
+  pname = "docbook-xml";
+
+  nativeBuildInputs = [ unzip ];
+  propagatedNativeBuildInputs = [ findXMLCatalogs ];
+
+  unpackPhase = ''
+    mkdir -p $out/xml/dtd/docbook
+    cd $out/xml/dtd/docbook
+    unpackFile $src
+  '';
+
+  installPhase = ''
+    find . -type f -exec chmod -x {} \;
+    runHook postInstall
+  '';
+
+  meta = {
+    branch = version;
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/xhtml1/default.nix b/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/xhtml1/default.nix
new file mode 100644
index 000000000000..9a81fbb6e1b4
--- /dev/null
+++ b/nixpkgs/pkgs/data/sgml+xml/schemas/xml-dtd/xhtml1/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenv, fetchurl, libxml2 }:
+
+stdenv.mkDerivation {
+  pname = "xhtml1";
+  version = "unstable-2002-08-01";
+
+  src = fetchurl {
+    url = "https://www.w3.org/TR/xhtml1/xhtml1.tgz";
+    sha256 = "0rr0d89i0z75qvjbm8il93bippx09hbmjwy0y2sj44n9np69x3hl";
+  };
+
+  nativeBuildInputs = [ libxml2 ];
+
+  installPhase =
+    ''
+      mkdir -p $out/xml/dtd/xhtml1
+      cp DTD/*.ent DTD/*.dtd $out/xml/dtd/xhtml1
+
+      # Generate an XML catalog.
+      cat=$out/xml/dtd/xhtml1/catalog.xml
+      xmlcatalog --noout --create $cat
+      grep PUBLIC DTD/*.soc | while read x; do
+          eval a=($x)
+          xmlcatalog --noout --add public "''${a[1]}" "''${a[2]}" $cat
+      done
+    ''; # */
+
+  meta = {
+    homepage = "https://www.w3.org/TR/xhtml1/";
+    description = "DTDs for XHTML 1.0, the Extensible HyperText Markup Language";
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/data/sgml+xml/stylesheets/xslt/docbook-xsl/catalog-legacy-uris.patch b/nixpkgs/pkgs/data/sgml+xml/stylesheets/xslt/docbook-xsl/catalog-legacy-uris.patch
new file mode 100644
index 000000000000..72922eee96c4
--- /dev/null
+++ b/nixpkgs/pkgs/data/sgml+xml/stylesheets/xslt/docbook-xsl/catalog-legacy-uris.patch
@@ -0,0 +1,10 @@
+--- a/catalog.xml
++++ b/catalog.xml
+@@ -5,4 +5,7 @@
+   <rewriteSystem systemIdStartString="http://cdn.docbook.org/release/xsl@suffix@/current/" rewritePrefix="./"/>
+   <rewriteURI uriStartString="http://cdn.docbook.org/release/xsl@suffix@/@version@/" rewritePrefix="./"/>
+   <rewriteSystem systemIdStartString="http://cdn.docbook.org/release/xsl@suffix@/@version@/" rewritePrefix="./"/>
++  <!-- legacy URIs -->
++  <rewriteURI uriStartString="http://docbook.sourceforge.net/release/xsl@legacySuffix@/current/" rewritePrefix="./"/>
++  <rewriteSystem systemIdStartString="http://docbook.sourceforge.net/release/xsl@legacySuffix@/current/" rewritePrefix="./"/>
+ </catalog>
diff --git a/nixpkgs/pkgs/data/sgml+xml/stylesheets/xslt/docbook-xsl/default.nix b/nixpkgs/pkgs/data/sgml+xml/stylesheets/xslt/docbook-xsl/default.nix
new file mode 100644
index 000000000000..66ebf105ffd0
--- /dev/null
+++ b/nixpkgs/pkgs/data/sgml+xml/stylesheets/xslt/docbook-xsl/default.nix
@@ -0,0 +1,91 @@
+{ lib, stdenv, substituteAll, fetchurl, fetchpatch, findXMLCatalogs, writeScriptBin, ruby, bash, withManOptDedupPatch ? false }:
+
+let
+
+  common = { pname, sha256, suffix ? "" }: let
+    legacySuffix = lib.optionalString (suffix != "-nons") "-ns";
+    self = stdenv.mkDerivation rec {
+      inherit pname;
+      version = "1.79.2";
+
+      src = fetchurl {
+        url = "https://github.com/docbook/xslt10-stylesheets/releases/download/release%2F${version}/docbook-xsl${suffix}-${version}.tar.bz2";
+        inherit sha256;
+      };
+
+      patches = [
+        # Prevent a potential stack overflow
+        # https://github.com/docbook/xslt10-stylesheets/pull/37
+        (fetchpatch {
+          url = "https://src.fedoraproject.org/rpms/docbook-style-xsl/raw/e3ae7a97ed1d185594dd35954e1a02196afb205a/f/docbook-style-xsl-non-recursive-string-subst.patch";
+          sha256 = "0lrjjg5kpwwmbhkxzz6i5zmimb6lsvrrdhzc2qgjmb3r6jnsmii3";
+          stripLen = "1";
+        })
+
+        # Fix reproducibility by respecting generate.consistent.ids in indexes
+        # https://github.com/docbook/xslt10-stylesheets/pull/88
+        # https://sourceforge.net/p/docbook/bugs/1385/
+        (fetchpatch {
+          url = "https://github.com/docbook/xslt10-stylesheets/commit/07631601e6602bc49b8eac3aab9d2b35968d3e7a.patch";
+          sha256 = "0igfhcr6hzcydqsnjsd181h5yl3drjnrwdmxcybr236m8255vkq3";
+          stripLen = "1";
+        })
+
+        # Add legacy sourceforge.net URIs to the catalog
+        (substituteAll {
+          src = ./catalog-legacy-uris.patch;
+          inherit legacySuffix suffix version;
+        })
+      ] ++ lib.optionals withManOptDedupPatch [
+        # Fixes https://github.com/NixOS/nixpkgs/issues/166304
+        # https://github.com/docbook/xslt10-stylesheets/pull/241
+        ./fix-man-options-duplication.patch
+      ];
+
+      propagatedBuildInputs = [ findXMLCatalogs ];
+
+      dontBuild = true;
+
+      installPhase = ''
+        dst=$out/share/xml/${pname}
+        mkdir -p $dst
+        rm -rf RELEASE* README* INSTALL TODO NEWS* BUGS install.sh tools Makefile tests extensions webhelp
+        mv * $dst/
+
+        # Backwards compatibility. Will remove eventually.
+        mkdir -p $out/xml/xsl
+        ln -s $dst $out/xml/xsl/docbook
+
+        # More backwards compatibility
+        ln -s $dst $out/share/xml/docbook-xsl${legacySuffix}
+      '';
+
+      passthru.dbtoepub = writeScriptBin "dbtoepub"
+        ''
+          #!${bash}/bin/bash
+          exec -a dbtoepub ${ruby}/bin/ruby ${self}/share/xml/${pname}/epub/bin/dbtoepub "$@"
+        '';
+
+      meta = {
+        homepage = "https://github.com/docbook/wiki/wiki/DocBookXslStylesheets";
+        description = "XSL stylesheets for transforming DocBook documents into HTML and various other formats";
+        license = lib.licenses.mit;
+        maintainers = [ lib.maintainers.eelco ];
+        platforms = lib.platforms.all;
+      };
+    };
+  in self;
+
+in {
+
+  docbook-xsl-nons = common {
+    pname = "docbook-xsl-nons";
+    suffix = "-nons";
+    sha256 = "00i1hdyxim8jymv2dz68ix3wbs5w6isxm8ijb03qk3vs1g59x2zf";
+  };
+
+  docbook-xsl-ns = common {
+    pname = "docbook-xsl-ns";
+    sha256 = "0wd33z41kdsybyx3ay21w6bdlmgpd9kyn3mr5y520lsf8km28r9i";
+  };
+}
diff --git a/nixpkgs/pkgs/data/sgml+xml/stylesheets/xslt/docbook-xsl/fix-man-options-duplication.patch b/nixpkgs/pkgs/data/sgml+xml/stylesheets/xslt/docbook-xsl/fix-man-options-duplication.patch
new file mode 100644
index 000000000000..304d9781e6aa
--- /dev/null
+++ b/nixpkgs/pkgs/data/sgml+xml/stylesheets/xslt/docbook-xsl/fix-man-options-duplication.patch
@@ -0,0 +1,11 @@
+--- a/manpages/lists.xsl
++++ b/manpages/lists.xsl
+@@ -110,7 +110,7 @@
+   <xsl:text>.RE&#10;</xsl:text>
+ </xsl:template>
+ 
+-<xsl:template match="d:varlistentry/d:term"/>
++<xsl:template match="d:varlistentry/d:term" priority="1"/>
+ <xsl:template match="d:glossentry/d:glossterm"/>
+ 
+ <xsl:template match="d:variablelist[ancestor::d:listitem or ancestor::d:step or ancestor::d:glossdef]|
diff --git a/nixpkgs/pkgs/data/soundfonts/fluid/default.nix b/nixpkgs/pkgs/data/soundfonts/fluid/default.nix
new file mode 100644
index 000000000000..193c9a60b9fc
--- /dev/null
+++ b/nixpkgs/pkgs/data/soundfonts/fluid/default.nix
@@ -0,0 +1,25 @@
+{ lib, stdenv, fetchurl }:
+
+stdenv.mkDerivation {
+  pname = "Fluid";
+  version = "3";
+
+  src = fetchurl {
+    url = "https://ftp.osuosl.org/pub/musescore/soundfont/fluid-soundfont.tar.gz";
+    sha256 = "1f96bi0y6rms255yr8dfk436azvwk66c99j6p43iavyq8jg7c5f8";
+  };
+
+  sourceRoot = ".";
+
+  installPhase = ''
+    install -Dm644 "FluidR3 GM2-2.SF2" $out/share/soundfonts/FluidR3_GM2-2.sf2
+  '';
+
+  meta = with lib; {
+    description = "Frank Wen's pro-quality GM/GS soundfont";
+    homepage = "http://www.hammersound.net/";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/soundfonts/generaluser/default.nix b/nixpkgs/pkgs/data/soundfonts/generaluser/default.nix
new file mode 100644
index 000000000000..abe1ea4ceac6
--- /dev/null
+++ b/nixpkgs/pkgs/data/soundfonts/generaluser/default.nix
@@ -0,0 +1,25 @@
+{ lib, stdenv, fetchzip }:
+
+stdenv.mkDerivation rec {
+  pname = "generaluser";
+  version = "1.471";
+
+  # we can't use fetchurl since stdenv does not handle unpacking *.zip's by default.
+  src = fetchzip {
+    # Linked on https://www.schristiancollins.com/generaluser.php:
+    url = "https://www.dropbox.com/s/4x27l49kxcwamp5/GeneralUser_GS_${version}.zip";
+    sha256 = "sha256-lwUlWubXiVZ8fijKuNF54YQjT0uigjNAbjKaNjmC51s=";
+  };
+
+  installPhase = ''
+    install -Dm644 GeneralUser*.sf2 $out/share/soundfonts/GeneralUser-GS.sf2
+  '';
+
+  meta = with lib; {
+    description = "a SoundFont bank featuring 259 instrument presets and 11 drum kits";
+    homepage = "https://www.schristiancollins.com/generaluser.php";
+    license = licenses.generaluser;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ ckie ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/soundfonts/ydp-grand/default.nix b/nixpkgs/pkgs/data/soundfonts/ydp-grand/default.nix
new file mode 100644
index 000000000000..635b445f6115
--- /dev/null
+++ b/nixpkgs/pkgs/data/soundfonts/ydp-grand/default.nix
@@ -0,0 +1,23 @@
+{ lib, stdenv, fetchurl }:
+
+stdenv.mkDerivation {
+  pname = "ydp-grand";
+  version = "unstable-2016-08-04";
+
+  src = fetchurl {
+    url = "https://freepats.zenvoid.org/Piano/YDP-GrandPiano/YDP-GrandPiano-SF2-20160804.tar.bz2";
+    sha256 = "sha256-0kPcPhgqYN8qFukoKMGCHPPrV0i0Xi4r3Pqc968FYCY=";
+  };
+
+  installPhase = ''
+    install -Dm644 YDP-GrandPiano-*.sf2 $out/share/soundfonts/YDP-GrandPiano.sf2
+  '';
+
+  meta = with lib; {
+    description = "Acoustic grand piano soundfont";
+    homepage = "https://freepats.zenvoid.org/Piano/acoustic-grand-piano.html";
+    license = licenses.cc-by-30;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ ckie ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/adapta-kde/default.nix b/nixpkgs/pkgs/data/themes/adapta-kde/default.nix
new file mode 100644
index 000000000000..a93e78480b00
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/adapta-kde/default.nix
@@ -0,0 +1,23 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "adapta-kde-theme";
+  version = "20180828";
+
+  src = fetchFromGitHub {
+    owner = "PapirusDevelopmentTeam";
+    repo = "adapta-kde";
+    rev = version;
+    sha256 = "1q85678sff8is2kwvgd703ckcns42gdga2c1rqlp61gb6bqf09j8";
+  };
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = {
+    description = "A port of the Adapta theme for Plasma";
+    homepage = "https://git.io/adapta-kde";
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.tadfisher ];
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/adapta/default.nix b/nixpkgs/pkgs/data/themes/adapta/default.nix
new file mode 100644
index 000000000000..fc6e5b8c3553
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/adapta/default.nix
@@ -0,0 +1,49 @@
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, parallel, sassc, inkscape, libxml2, glib, gdk-pixbuf, librsvg, gtk-engine-murrine, gnome }:
+
+stdenv.mkDerivation rec {
+  pname = "adapta-gtk-theme";
+  version = "3.95.0.11";
+
+  src = fetchFromGitHub {
+    owner = "adapta-project";
+    repo = "adapta-gtk-theme";
+    rev = version;
+    sha256 = "19skrhp10xx07hbd0lr3d619vj2im35d8p9rmb4v4zacci804q04";
+  };
+
+  preferLocalBuild = true;
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkg-config
+    parallel
+    sassc
+    inkscape
+    libxml2
+    glib.dev
+    gnome.gnome-shell
+  ];
+
+  buildInputs = [
+    gdk-pixbuf
+    librsvg
+  ];
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  postPatch = "patchShebangs .";
+
+  configureFlags = [
+    "--disable-gtk_legacy"
+    "--disable-gtk_next"
+    "--disable-unity"
+  ];
+
+  meta = with lib; {
+    description = "An adaptive GTK theme based on Material Design Guidelines";
+    homepage = "https://github.com/adapta-project/adapta-gtk-theme";
+    license = with licenses; [ gpl2 cc-by-sa-30 ];
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/adementary/default.nix b/nixpkgs/pkgs/data/themes/adementary/default.nix
new file mode 100644
index 000000000000..8b03132bfcb7
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/adementary/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenv, fetchFromGitHub, gtk3, sassc }:
+
+stdenv.mkDerivation rec {
+  pname = "adementary-theme";
+  version = "201905r1";
+
+  src = fetchFromGitHub {
+    owner  = "hrdwrrsk";
+    repo   = pname;
+    rev    = version;
+    sha256 = "14y5s18g9r2c1ciw1skfksn09gvqgy8vjvwbr0z8gacf0jc2apqk";
+  };
+
+  preBuild = ''
+    # Shut up inkscape's warnings
+    export HOME="$NIX_BUILD_ROOT"
+  '';
+
+  nativeBuildInputs = [ sassc ];
+  buildInputs = [ gtk3 ];
+
+  postPatch = "patchShebangs .";
+
+  installPhase = ''
+    mkdir -p $out/share/themes
+    ./install.sh -d $out/share/themes
+  '';
+
+  meta = with lib; {
+    description = "Adwaita-based GTK theme with design influence from elementary OS and Vertex GTK theme";
+    homepage    = "https://github.com/hrdwrrsk/adementary-theme";
+    license     = licenses.gpl3;
+    maintainers = with maintainers; [ dtzWill ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/adi1090x-plymouth-themes/default.nix b/nixpkgs/pkgs/data/themes/adi1090x-plymouth-themes/default.nix
new file mode 100644
index 000000000000..d5ff1d0018a9
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/adi1090x-plymouth-themes/default.nix
@@ -0,0 +1,63 @@
+{
+  stdenv,
+  fetchurl,
+  lib,
+  unzip,
+  # To select only certain themes, pass `selected_themes` as a list of strings.
+  # reference ./shas.nix for available themes
+  selected_themes ? [],
+}: let
+  version = "1.0";
+  # this file is generated via ./update.sh
+  # borrowed from pkgs/data/fonts/nerdfonts
+  themeShas = import ./shas.nix;
+  knownThemes = builtins.attrNames themeShas;
+  selectedThemes =
+    if (selected_themes == [])
+    then knownThemes
+    else let
+      unknown = lib.subtractLists knownThemes selected_themes;
+    in
+      if (unknown != [])
+      then throw "Unknown theme(s): ${lib.concatStringsSep " " unknown}"
+      else selected_themes;
+  srcs = lib.lists.forEach selectedThemes (
+    name: (fetchurl {
+      url = themeShas.${name}.url;
+      sha256 = themeShas.${name}.sha;
+    })
+  );
+in
+  stdenv.mkDerivation {
+    pname = "adi1090x-plymouth-themes";
+    inherit version srcs;
+
+    nativeBuildInputs = [
+      unzip
+    ];
+
+    sourceRoot = ".";
+    unpackCmd = "tar xzf $curSrc";
+
+    installPhase = ''
+      mkdir -p $out/share/plymouth/themes
+      for theme in ${toString selectedThemes}; do
+        mv $theme $out/share/plymouth/themes/$theme
+      done
+      find $out/share/plymouth/themes/ -name \*.plymouth -exec sed -i "s@\/usr\/@$out\/@" {} \;
+    '';
+
+    meta = with lib; {
+      description = "Plymouth boot themes from adi1090x";
+      longDescription = ''
+        A variety of plymouth boot screens by adi1090x.  Using the default value
+        of `selected_themes` will install all themes (~524M).  Consider overriding
+        this with a list of the string names of each theme to install.  Check
+        ./shas.nix for available themes.
+      '';
+      homepage = "https://github.com/adi1090x/plymouth-themes";
+      license = licenses.gpl3;
+      platforms = platforms.linux;
+      maintainers = with maintainers; [slwst];
+    };
+  }
diff --git a/nixpkgs/pkgs/data/themes/adi1090x-plymouth-themes/shas.nix b/nixpkgs/pkgs/data/themes/adi1090x-plymouth-themes/shas.nix
new file mode 100644
index 000000000000..51a7178f094b
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/adi1090x-plymouth-themes/shas.nix
@@ -0,0 +1,322 @@
+{
+  "abstract_ring" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/abstract_ring.tar.gz";
+    sha = "0hfrzm974nm8f237vzlyjjh4pikva3n7fqr1p7jmx04g857g4rjq";
+  };
+  "abstract_ring_alt" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/abstract_ring_alt.tar.gz";
+    sha = "0gx6l6w9d9z6am3x99igp6v1kykpwd39sjhalfsl21x1ah2cfmbh";
+  };
+  "alienware" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/alienware.tar.gz";
+    sha = "0pq9zdhdz5vg97zfzsj9kh63szsm9qww2j7bgp2w4z6pg42xcswh";
+  };
+  "angular" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/angular.tar.gz";
+    sha = "15rsljiv1nhgcsgjiwsb2jiwah1ghxa95dbj3hlddx8d337nxljc";
+  };
+  "angular_alt" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/angular_alt.tar.gz";
+    sha = "12v4d7yjd81vch6cm2jphkb24gnc5d2kncfi4lsan6vhamija49f";
+  };
+  "black_hud" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/black_hud.tar.gz";
+    sha = "07iy216xij19m6jy76z2rafmjm8mv4k7mwpp145xayz52zhs66s8";
+  };
+  "blockchain" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/blockchain.tar.gz";
+    sha = "1w0hz1fyj4p9qxwdhib9c7gxx582wb9fz2dyd77l9xqjkps78fjx";
+  };
+  "circle" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/circle.tar.gz";
+    sha = "16xrz3v85kpxc4palm8flc7lhscfl6psm1dz999r802yivxl5ikg";
+  };
+  "circle_alt" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/circle_alt.tar.gz";
+    sha = "0hsia8rq059kyxrnikr6brwmg7pa5kbm3j9gj4ky1a83dwpx18lg";
+  };
+  "circle_flow" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/circle_flow.tar.gz";
+    sha = "109m9hdirrr9a6gxgqpq80yz0lx4s7bv7nihdfjzg7rhl0icgw93";
+  };
+  "circle_hud" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/circle_hud.tar.gz";
+    sha = "1xmc30z5k583zrknx2g7rmq41vw9chyxhdacpxvxzyvnp0828z0j";
+  };
+  "circuit" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/circuit.tar.gz";
+    sha = "0linpkxhx01v7q2s3c7z8py0h697z7a4jhwbs2gp47p2923xggij";
+  };
+  "colorful" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/colorful.tar.gz";
+    sha = "0m89prph31a0r0rxax989n72wdk3d5ywl8h3lygas8k7g908xr3p";
+  };
+  "colorful_loop" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/colorful_loop.tar.gz";
+    sha = "0nbdh6v8zn1xxm44sgr1904wik8pv0yrqjg84dym10k7hvfnb1af";
+  };
+  "colorful_sliced" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/colorful_sliced.tar.gz";
+    sha = "1yadpyiwiixxily7wzhd8myxnrvhzdc9m6lj7g4ll3hlwygw7rz1";
+  };
+  "connect" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/connect.tar.gz";
+    sha = "0gwd27vlr23zbf0mw34gd55f3s32a70q1s03z36dsf01bbyrvwz5";
+  };
+  "cross_hud" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/cross_hud.tar.gz";
+    sha = "1j79c99n3r94vrf6f8n2a42jjfywaf7vf6q34awdqcl188hc3qzi";
+  };
+  "cubes" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/cubes.tar.gz";
+    sha = "11r6q9f4vz64rxz8wshhhpyp7knwn2klw50z98bn3qbmwl3zfh8c";
+  };
+  "cuts" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/cuts.tar.gz";
+    sha = "1bf8yrwha2bibnpf8abc0bxsj0g9sg3m1fpagxcpr61m0cl4i3vq";
+  };
+  "cuts_alt" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/cuts_alt.tar.gz";
+    sha = "00yrhfnfnmirzij5wd592cfn90crw3774a6wdxq4s538wrpmzhik";
+  };
+  "cyanide" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/cyanide.tar.gz";
+    sha = "0bbrqg77m0655l9x90334b8yn60kni062p17h4rf6kp9qbi86gg0";
+  };
+  "cybernetic" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/cybernetic.tar.gz";
+    sha = "0chk52pfl81npffda6hy1pag6n8l5ssq61mc0qaa4nqfwpyvqqvw";
+  };
+  "dark_planet" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/dark_planet.tar.gz";
+    sha = "1bbwdzgmvrdxkd379r1w2rkl0r5ixlh56xn59c47bmfbjl19927d";
+  };
+  "darth_vader" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/darth_vader.tar.gz";
+    sha = "1czq929j87zila0v49kikjqdw8bmssmn5cp573i3qb9kry5xdlm7";
+  };
+  "deus_ex" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/deus_ex.tar.gz";
+    sha = "1la8rlvy9gh593vx2w9wjq2hmsp58fd2gx9l9g2222mmzpk1hmcc";
+  };
+  "dna" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/dna.tar.gz";
+    sha = "1mkq23khwsbnz8spf00amk48fx5vnk3rpzapx37rpx1klgxpm89q";
+  };
+  "double" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/double.tar.gz";
+    sha = "11grxa2wblii4yxxrwfbbmwlwk26sm6mw9y00wfadijx2iyx30i1";
+  };
+  "dragon" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/dragon.tar.gz";
+    sha = "1hlvr2s8zhlf8mg9pskwby94kh15g8icxn3833cdqqhmgvc0d7l5";
+  };
+  "flame" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/flame.tar.gz";
+    sha = "1yszmhmmjgdkjvqpij3gjwz8vxjhmklf7clbpz947254zgwxyn5g";
+  };
+  "glitch" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/glitch.tar.gz";
+    sha = "15gwhfnrn0p80wdaymnlvrcig5cjb4m5qz56hbhg4jdwcjdlppbd";
+  };
+  "glowing" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/glowing.tar.gz";
+    sha = "09h7dn805lrg04j5lp30l3qc6kb8xxilibdg0pxfadwyljblwl1f";
+  };
+  "green_blocks" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/green_blocks.tar.gz";
+    sha = "09xx5fbnby567s9s8hmryalm9k9vs520lymiprw06nig49rmy4v2";
+  };
+  "green_loader" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/green_loader.tar.gz";
+    sha = "09vw6c9albsv28y4bdlp54csq5bl0vrd20yjph00jxhvhizffk3k";
+  };
+  "hexagon" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/hexagon.tar.gz";
+    sha = "17api8ndiqjxyj7prxz0bv1dpq0h0wvphnll4lb2dlhxp61bjmj3";
+  };
+  "hexagon_2" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/hexagon_2.tar.gz";
+    sha = "030yr5nb6q7bw1f1dh9kcdmd87x25f1fn60v45vmk7k07y1s10c8";
+  };
+  "hexagon_alt" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/hexagon_alt.tar.gz";
+    sha = "1f6i8signlscp0av3kcmdw0xm13pf2dy2lz3c6wq9d9203ibry1p";
+  };
+  "hexagon_dots" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/hexagon_dots.tar.gz";
+    sha = "13mi9f8saw9zk8zdxp003ipigyd4y26iydn0pd1c0vr5fbz483rq";
+  };
+  "hexagon_dots_alt" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/hexagon_dots_alt.tar.gz";
+    sha = "1gkzh5i84cwv64f3r8rgpzyj8h1kpn92m4syf67kn5sdhqykvqkz";
+  };
+  "hexagon_hud" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/hexagon_hud.tar.gz";
+    sha = "17k5378fsydvcps9rxd117rfqlijnrsj1ggyqx445a5yrwy6rx55";
+  };
+  "hexagon_red" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/hexagon_red.tar.gz";
+    sha = "0x8i1k54qff7agwq9gqi2z59lww8qglck105bv87ylgy5z6150sx";
+  };
+  "hexa_retro" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/hexa_retro.tar.gz";
+    sha = "0bwx2nvvr6bkqnmnv2kh9slbi11lv0h3hnzql99d9llr3vlid5ip";
+  };
+  "hud" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/hud.tar.gz";
+    sha = "0zng0rn4lacxf9v1azndzv5v7pl84f0amschccdlnymilyy564ck";
+  };
+  "hud_2" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/hud_2.tar.gz";
+    sha = "14ldw37gpysnw3k1cssh8q1hgxnrh954pgq5x5xhrlv2w6rsbfzq";
+  };
+  "hud_3" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/hud_3.tar.gz";
+    sha = "0lc3x51gjfc58y45yzfnpy2i07vk9vdzbjl5yawv3wh97jy5x6x7";
+  };
+  "hud_space" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/hud_space.tar.gz";
+    sha = "13ipj1l737bs9rnhh5vviq6bm5hdghpyq6s5hc1fhg2cgldfnq0i";
+  };
+  "ibm" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/ibm.tar.gz";
+    sha = "0acs1f468xfpsvzy400f8ba7890n3pp69c9b20lb8slamm9l4swd";
+  };
+  "infinite_seal" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/infinite_seal.tar.gz";
+    sha = "07g4qmkfc9yqjpbs0yr277ij3pbhc1p51gzpnnbc3viwm1zzrs6p";
+  };
+  "ironman" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/ironman.tar.gz";
+    sha = "0w5z22529jrgd2ab7fqibm2sd57740qxyqqrzhyvgd4l5axn1yzd";
+  };
+  "liquid" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/liquid.tar.gz";
+    sha = "01lwzb2yid7hb1f2nc0jycll9kvq89jcz7s7w81vqirx4by8p8n8";
+  };
+  "loader" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/loader.tar.gz";
+    sha = "0vx66kb56n6dy74k6yjk5w8apc8q1hmr8mrpgl420lzdqm4ggrgz";
+  };
+  "loader_2" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/loader_2.tar.gz";
+    sha = "0rir3gfi8bq4m8s0xhbd2ppny6q60b42wq9vs826axk2g58jczrw";
+  };
+  "loader_alt" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/loader_alt.tar.gz";
+    sha = "0pfg304xmgc46ai9d5m51p05i7zbvhfzfsscn7yk6kiw09b21fpz";
+  };
+  "lone" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/lone.tar.gz";
+    sha = "0xx959215w8qcpbzn9w3ip4shq3ib7dcni43z4m9jwa28aa3v7y8";
+  };
+  "metal_ball" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/metal_ball.tar.gz";
+    sha = "18nbikv736yd1q4qf9nq0fzspmxlkq1z6kl0jzady8ifkny1kvlw";
+  };
+  "motion" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/motion.tar.gz";
+    sha = "0nbvgsgkpkdx83v45fb4z6ywiz3cpdmbsx8jcxhaa0cpywvq40bh";
+  };
+  "optimus" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/optimus.tar.gz";
+    sha = "0zxv3b21mxkl0dvhs6nzd94vlsphc8h1zzvkcgng6cqg9n1c206p";
+  };
+  "owl" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/owl.tar.gz";
+    sha = "1ylkpydmy65xilqzkdps18kr0yyqggkxaysmmik3sz01qs6xjrz6";
+  };
+  "pie" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/pie.tar.gz";
+    sha = "1x834k0qsa8c7z3ds0vk6cw2r1f4ydmyk8yz1hdw8lxys17n9rj8";
+  };
+  "pixels" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/pixels.tar.gz";
+    sha = "072ag60r2n3jjj64r1nzsj5p97gjcfrvd72axm1z741rz5xaigki";
+  };
+  "polaroid" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/polaroid.tar.gz";
+    sha = "0m748kj5qps9vwwww44i1lj64r0mg0hqnfkg7dhqrf7nl0saw4da";
+  };
+  "red_loader" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/red_loader.tar.gz";
+    sha = "18vvlknnp3kiviacmp0cbmagrqzbhli6qv6vbzw362cv2mxhid85";
+  };
+  "rings" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/rings.tar.gz";
+    sha = "0xhwnxr5hcxqr64vr45lkvwzbbcpzxfbdlad006r16m480ncripw";
+  };
+  "rings_2" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/rings_2.tar.gz";
+    sha = "0vdjby6kyazxy042ljyv59pg4zfsvzzssf20w4r7ircfyiqypajs";
+  };
+  "rog" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/rog.tar.gz";
+    sha = "0az3vxndzym39w7357mmr6zyzfy32pg036v6jim895z10093b0y0";
+  };
+  "rog_2" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/rog_2.tar.gz";
+    sha = "13yfqb06ihzma80lfsb0mlsaq0j6qakqx607pr5rmhl6765bz116";
+  };
+  "seal" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/seal.tar.gz";
+    sha = "14k98v41ng3had7n6q1z513yc53zzkji7gm4n2jpjj5rd1jd2xr8";
+  };
+  "seal_2" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/seal_2.tar.gz";
+    sha = "0kwn7njj7anci9ihf8aqs7k7qv2vsnqc81sj5db672qn4hxpy50v";
+  };
+  "seal_3" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/seal_3.tar.gz";
+    sha = "0pjqq7qlmb0mf0xnm001b1f5jcbfzd3a3hzsf0jysacb5wmpzspp";
+  };
+  "sliced" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/sliced.tar.gz";
+    sha = "1xrlhg1glykj73x9spq609y4ygfy3xw4azk3npjfh3ky5l0jqxjg";
+  };
+  "sphere" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/sphere.tar.gz";
+    sha = "1nav61fr7wba1vbas8wci3fpyx0pidgiv9wm4zxdrw7hqw8akkpn";
+  };
+  "spin" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/spin.tar.gz";
+    sha = "1yb39jmvifb1ijh5i804d06c97samhf8w4p0w1xwxq29j6ihsvw9";
+  };
+  "spinner_alt" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/spinner_alt.tar.gz";
+    sha = "136nhpxlc2kar9jwz4pdxpg30b66n7bqy5mk9lm4v90pwf5m3kbs";
+  };
+  "splash" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/splash.tar.gz";
+    sha = "1wnmqqm07yrbd5ha31dd2iihmrjr555hd8fgra9fy9zh2pw9wgf2";
+  };
+  "square" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/square.tar.gz";
+    sha = "1wkixypxchsi11d8qfackcbvcjhifys9xlsc61rd7hfgz2nwjmww";
+  };
+  "square_hud" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/square_hud.tar.gz";
+    sha = "13bbzxv4gq66z0h801m8fi3n2rk41212nhapa5xb3xgh7v23my04";
+  };
+  "target" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/target.tar.gz";
+    sha = "0vk8abdxhs93bj9l21db2ai7w945z472rwwn1m4070vrhs2fvzn4";
+  };
+  "target_2" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/target_2.tar.gz";
+    sha = "0n6f1lnmry5zv3y592gp0r2rn297h806zhcgd7yfp0z2zgay67nz";
+  };
+  "tech_a" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/tech_a.tar.gz";
+    sha = "13gdq6h3m7skryr95vi0a30ylrapxg1nkc8cv8vn025gj6bafa83";
+  };
+  "tech_b" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/tech_b.tar.gz";
+    sha = "1l383plabzlkccqjhf8x02jskykr4wkj2wy6knk9kg6qrq8w870l";
+  };
+  "unrap" = {
+    url = "https://github.com/adi1090x/plymouth-themes/releases/download/v1.0/unrap.tar.gz";
+    sha = "0571pvnhmny9642rfg7sw6csrz7bka2424zfryg858c0hg6aqrnk";
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/adi1090x-plymouth-themes/update.sh b/nixpkgs/pkgs/data/themes/adi1090x-plymouth-themes/update.sh
new file mode 100755
index 000000000000..0fe5db726b3f
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/adi1090x-plymouth-themes/update.sh
@@ -0,0 +1,28 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i bash --keep GITHUB_TOKEN -p nix-prefetch jq
+
+set -eo pipefail
+
+curl_args=( '--silent' )
+
+# optionally takes a GITHUB_TOKEN to overcome api rate limiting.
+if [ -n "$GITHUB_TOKEN" ]; then curl_args+=( --header "authorization: Bearer ${GITHUB_TOKEN}" ); fi
+
+# get latest release assets
+curl_args+=( --url https://api.github.com/repos/adi1090x/plymouth-themes/releases/latest )
+theme_archives=$(curl "${curl_args[@]}" | jq -r '.assets' )
+
+dirname="$(dirname "$0")"
+
+printf '{\n' > "$dirname/shas.nix"
+
+while
+  read -r file_path
+do
+    name="$(basename $file_path)"
+    name="${name/.tar.gz/}"
+
+    printf '  "%s" = {\n    url = "%s";\n    sha = "%s";\n  };\n' "${name}" "$file_path" "$(nix-prefetch-url "$file_path")" >>"$dirname/shas.nix"
+done < <(jq -r '.[].browser_download_url' <<<"$theme_archives")
+
+printf '}\n' >> "$dirname/shas.nix"
diff --git a/nixpkgs/pkgs/data/themes/adw-gtk3/default.nix b/nixpkgs/pkgs/data/themes/adw-gtk3/default.nix
new file mode 100644
index 000000000000..79dcc88a6f5d
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/adw-gtk3/default.nix
@@ -0,0 +1,43 @@
+{ stdenvNoCC
+, lib
+, fetchFromGitHub
+, nix-update-script
+, meson
+, ninja
+, sassc
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "adw-gtk3";
+  version = "5.1";
+
+  src = fetchFromGitHub {
+    owner = "lassekongo83";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-vRB6+C27M4u7v10c6dqGsKpxHMGfpCSiScZ+8qlJRr0=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    sassc
+  ];
+
+  postPatch = ''
+    chmod +x gtk/src/adw-gtk3-dark/gtk-3.0/install-dark-theme.sh
+    patchShebangs gtk/src/adw-gtk3-dark/gtk-3.0/install-dark-theme.sh
+  '';
+
+  passthru = {
+    updateScript = nix-update-script { };
+  };
+
+  meta = with lib; {
+    description = "The theme from libadwaita ported to GTK-3";
+    homepage = "https://github.com/lassekongo83/adw-gtk3";
+    license = licenses.lgpl21Only;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ ciferkey ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/adwaita-qt/default.nix b/nixpkgs/pkgs/data/themes/adwaita-qt/default.nix
new file mode 100644
index 000000000000..314ad37bc4d8
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/adwaita-qt/default.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, nix-update-script
+, cmake
+, ninja
+, qtbase
+, qtwayland
+, qt5
+, xorg
+, useQt6 ? false
+}:
+
+stdenv.mkDerivation rec {
+  pname = "adwaita-qt";
+  version = "1.4.2";
+
+  outputs = [ "out" "dev" ];
+
+  src = fetchFromGitHub {
+    owner = "FedoraQt";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-K/+SL52C+M2OC4NL+mhBnm/9BwH0KNNTGIDmPwuUwkM=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    ninja
+  ];
+
+  buildInputs = [
+    qtbase
+  ] ++ lib.optionals stdenv.isLinux [
+    xorg.libxcb
+  ] ++ lib.optionals (!useQt6) [
+    qt5.qtx11extras
+  ] ++ lib.optionals useQt6 [
+    qtwayland
+  ];
+
+  # Qt setup hook complains about missing `wrapQtAppsHook` otherwise.
+  dontWrapQtApps = true;
+
+  cmakeFlags = lib.optionals useQt6 [
+    "-DUSE_QT6=true"
+  ];
+
+  postPatch = ''
+    # Fix plugin dir
+    substituteInPlace src/style/CMakeLists.txt \
+       --replace "DESTINATION \"\''${QT_PLUGINS_DIR}/styles" "DESTINATION \"$qtPluginPrefix/styles"
+  '';
+
+  passthru = {
+    updateScript = nix-update-script { };
+  };
+
+  meta = with lib; {
+    description = "A style to bend Qt applications to look like they belong into GNOME Shell";
+    homepage = "https://github.com/FedoraQt/adwaita-qt";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/alacritty-theme/default.nix b/nixpkgs/pkgs/data/themes/alacritty-theme/default.nix
new file mode 100644
index 000000000000..e8dd692eb6e4
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/alacritty-theme/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, fetchFromGitHub
+, nix-update-script
+, stdenvNoCC
+, ... }:
+
+stdenvNoCC.mkDerivation (self: {
+  name = "alacritty-theme";
+  version = "unstable-2023-11-07";
+
+  src = fetchFromGitHub {
+    owner = "alacritty";
+    repo = "alacritty-theme";
+    rev = "808b81b2e88884e8eca5d951b89f54983fa6c237";
+    hash = "sha256-g5tM6VBPLXin5s7X0PpzWOOGTEwHpVUurWOPqM/O13A=";
+  };
+
+  dontConfigure = true;
+  dontBuild = true;
+  preferLocalBuild = true;
+
+  sourceRoot = "${self.src.name}/themes";
+  installPhase = ''
+    runHook preInstall
+    install -Dt $out *.yaml
+    runHook postInstall
+  '';
+
+  passthru.updateScript = nix-update-script {
+    extraArgs = [ "--version=branch" ];
+  };
+
+  meta = with lib; {
+    description = "Collection of Alacritty color schemes";
+    homepage = "https://alacritty.org/";
+    license = licenses.asl20;
+    maintainers = [ maintainers.nicoo ];
+    platforms = platforms.all;
+  };
+})
diff --git a/nixpkgs/pkgs/data/themes/albatross/default.nix b/nixpkgs/pkgs/data/themes/albatross/default.nix
new file mode 100644
index 000000000000..b53dd553ca2d
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/albatross/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "Albatross";
+  version = "1.7.4";
+
+  src = fetchFromGitHub {
+    repo = "Albatross";
+    owner = "shimmerproject";
+    rev = "v${version}";
+    sha256 = "0mq87n2hxy44nzr567av24n5nqjaljhi1afxrn3mpjqdbkq7lx88";
+  };
+
+  dontBuild = true;
+
+  installPhase = ''
+    install -dm 755 $out/share/themes/Albatross
+    cp -dr --no-preserve='ownership' {LICENSE.GPL,README,index.theme,gtk-2.0,gtk-3.0,metacity-1,xfwm4} $out/share/themes/Albatross/
+  '';
+
+  meta = {
+    description = "A desktop Suite for Xfce";
+    homepage = "https://github.com/shimmerproject/Albatross";
+    license = lib.licenses.gpl2;
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/amber/default.nix b/nixpkgs/pkgs/data/themes/amber/default.nix
new file mode 100644
index 000000000000..e39f0e3f6454
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/amber/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenv, fetchFromGitHub, meson, ninja, sassc, gdk-pixbuf, librsvg, gtk_engines, gtk-engine-murrine }:
+
+stdenv.mkDerivation rec {
+  pname = "amber-theme";
+  version = "3.38-1";
+
+  src = fetchFromGitHub {
+    owner = "lassekongo83";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-OrdBeAD+gdIu6u8ESE9PtqYadSuJ8nx1Z8fB4D9y4W4=";
+  };
+
+  nativeBuildInputs = [ meson ninja sassc ];
+
+  buildInputs = [ gdk-pixbuf librsvg gtk_engines ];
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  meta = with lib; {
+    description = "GTK, gnome-shell and Xfce theme based on Ubuntu Ambiance";
+    homepage = "https://github.com/lassekongo83/amber-theme";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/ant-theme/ant-bloody.nix b/nixpkgs/pkgs/data/themes/ant-theme/ant-bloody.nix
new file mode 100644
index 000000000000..66cd3e247a72
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/ant-theme/ant-bloody.nix
@@ -0,0 +1,34 @@
+{ lib, stdenv, fetchurl, gtk-engine-murrine }:
+
+let
+  themeName = "Ant-Bloody";
+in
+stdenv.mkDerivation rec {
+  pname = "ant-bloody-theme";
+  version = "1.3.0";
+
+  src = fetchurl {
+    url = "https://github.com/EliverLara/${themeName}/releases/download/v${version}/${themeName}.tar";
+    sha256 = "0rrz50kmzjmqj17hvrw67pbaclwxv85i5m08s7842iky6dnn5z8s";
+  };
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes/${themeName}
+    cp -a * $out/share/themes/${themeName}
+    rm -r $out/share/themes/${themeName}/{Art,LICENSE,README.md,gtk-2.0/render-assets.sh}
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Bloody variant of the Ant theme";
+    homepage = "https://github.com/EliverLara/${themeName}";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ alexarice ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/ant-theme/ant-nebula.nix b/nixpkgs/pkgs/data/themes/ant-theme/ant-nebula.nix
new file mode 100644
index 000000000000..a62791572352
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/ant-theme/ant-nebula.nix
@@ -0,0 +1,34 @@
+{ lib, stdenv, fetchurl, gtk-engine-murrine }:
+
+let
+  themeName = "Ant-Nebula";
+in
+stdenv.mkDerivation rec {
+  pname = "ant-nebula-theme";
+  version = "1.3.0";
+
+  src = fetchurl {
+    url = "https://github.com/EliverLara/${themeName}/releases/download/v${version}/${themeName}.tar";
+    sha256 = "1xpgw577nmgjk547mg2vvv0gdai60srgncykm5pb1w8dnlk69jbz";
+  };
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes/${themeName}
+    cp -a * $out/share/themes/${themeName}
+    rm -r $out/share/themes/${themeName}/{Art,LICENSE,README.md,gtk-2.0/render-assets.sh}
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Nebula variant of the Ant theme";
+    homepage = "https://github.com/EliverLara/${themeName}";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ alexarice ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/ant-theme/ant.nix b/nixpkgs/pkgs/data/themes/ant-theme/ant.nix
new file mode 100644
index 000000000000..250b77a66e8f
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/ant-theme/ant.nix
@@ -0,0 +1,34 @@
+{ lib, stdenv, fetchurl, gtk-engine-murrine }:
+
+let
+  themeName = "Ant";
+in
+stdenv.mkDerivation rec {
+  pname = "ant-theme";
+  version = "1.3.0";
+
+  src = fetchurl {
+    url = "https://github.com/EliverLara/${themeName}/releases/download/v${version}/${themeName}.tar";
+    sha256 = "1r795v96ywzcb4dq08q2fdbmfia32g36cc512mhy41s8fb1a47dz";
+  };
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes/${themeName}
+    cp -a * $out/share/themes/${themeName}
+    rm -r $out/share/themes/${themeName}/{Art,LICENSE,README.md,gtk-2.0/render-assets.sh}
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A flat and light theme with a modern look";
+    homepage = "https://github.com/EliverLara/${themeName}";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ alexarice ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/arc-kde/default.nix b/nixpkgs/pkgs/data/themes/arc-kde/default.nix
new file mode 100644
index 000000000000..2b41baa63494
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/arc-kde/default.nix
@@ -0,0 +1,23 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "arc-kde-theme";
+  version = "20220908";
+
+  src = fetchFromGitHub {
+    owner = "PapirusDevelopmentTeam";
+    repo = "arc-kde";
+    rev = version;
+    sha256 = "sha256-dxk8YpJB4XaZHD/O+WvQUFKJD2TE38VZyC5orn4N7BA=";
+  };
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = {
+    description = "A port of the arc theme for Plasma";
+    homepage = "https://git.io/arc-kde";
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.nixy ];
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/arc/default.nix b/nixpkgs/pkgs/data/themes/arc/default.nix
new file mode 100644
index 000000000000..17089285f276
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/arc/default.nix
@@ -0,0 +1,68 @@
+{ lib, stdenv
+, fetchFromGitHub
+, sassc
+, meson
+, ninja
+, glib
+, gnome
+, gtk-engine-murrine
+, inkscape
+, cinnamon
+, makeFontsConf
+, python3
+}:
+
+stdenv.mkDerivation rec {
+  pname = "arc-theme";
+  version = "20221218";
+
+  src = fetchFromGitHub {
+    owner = "jnsh";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-7VmqsUCeG5GwmrVdt9BJj0eZ/1v+no/05KwGFb7E9ns=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    sassc
+    inkscape
+    glib # for glib-compile-resources
+    python3
+  ];
+
+  propagatedUserEnvPkgs = [
+    gnome.gnome-themes-extra
+    gtk-engine-murrine
+  ];
+
+  postPatch = ''
+    patchShebangs meson/install-file.py
+  '';
+
+  preBuild = ''
+    # Shut up inkscape's warnings about creating profile directory
+    export HOME="$TMPDIR"
+  '';
+
+  # Fontconfig error: Cannot load default config file: No such file: (null)
+  FONTCONFIG_FILE = makeFontsConf { fontDirectories = [ ]; };
+
+  mesonFlags = [
+    # "-Dthemes=cinnamon,gnome-shell,gtk2,gtk3,plank,xfwm,metacity"
+    # "-Dvariants=light,darker,dark,lighter"
+    "-Dcinnamon_version=${cinnamon.cinnamon-common.version}"
+    "-Dgnome_shell_version=${gnome.gnome-shell.version}"
+    # You will need to patch gdm to make use of this.
+    "-Dgnome_shell_gresource=true"
+  ];
+
+  meta = with lib; {
+    description = "Flat theme with transparent elements for GTK 3, GTK 2 and Gnome Shell";
+    homepage = "https://github.com/jnsh/arc-theme";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ simonvandel romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/artim-dark/default.nix b/nixpkgs/pkgs/data/themes/artim-dark/default.nix
new file mode 100644
index 000000000000..9485f46b19a9
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/artim-dark/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec{
+  pname = "artim-dark";
+  version = "unstable-2021-12-29";
+
+  src = fetchFromGitHub {
+    owner="Mrcuve0";
+    repo="Aritim-Dark";
+    rev = "99cd330a1ab4814260e28f15431e3338a1103668";
+    hash = "sha256-xGnw5KpXbVyDdTuAkav1Hec6bitpZdPzZk0xv7WHTdY=";
+  };
+
+  dontBuild = true;
+  installPhase = ''
+    mkdir -p $out/share/plasma/desktoptheme
+    cp -R KDE/plasmaTheme/Aritim-Dark* $out/share/plasma/desktoptheme
+    mkdir -p $out/share/aurorae/themes
+    cp -R KDE/auroraeTheme $out/share/aurorae/themes/Aritim-Dark
+    mkdir -p $out/share/color-schemes
+    cp -R KDE/colorScheme/*.colors $out/share/color-schemes
+    mkdir -p $out/share/plasma/look-and-feel
+    cp -R KDE/globalTheme $out/share/plasma/look-and-feel/Aritim-Dark
+    mkdir -p $out/share/themes
+    cp -R GTK $out/share/themes/Aritim-Dark
+  '';
+
+  meta = {
+    description = "Dark theme deeply inspired by the Ayu Dark color palette";
+    homepage = "https://github.com/Mrcuve0/Aritim-Dark";
+    license = with lib.licenses; [ gpl3Only ];
+    platforms = lib.platforms.unix;
+    maintainers = [ lib.maintainers.pasqui23 ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/ayu-theme-gtk/default.nix b/nixpkgs/pkgs/data/themes/ayu-theme-gtk/default.nix
new file mode 100644
index 000000000000..2e8453b097dd
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/ayu-theme-gtk/default.nix
@@ -0,0 +1,68 @@
+{ stdenv
+, autoreconfHook
+, fetchFromGitHub
+, gnome
+, gtk-engine-murrine
+, gtk3
+, inkscape
+, lib
+, optipng
+, pkg-config
+, sassc
+}:
+
+stdenv.mkDerivation rec {
+  pname = "ayu-theme-gtk";
+  version = "unstable-2017-05-12";
+
+  src = fetchFromGitHub {
+    owner = "dnordstrom";
+    repo = "ayu-theme";
+    rev = "cc6f3d3b72897c304e2f00afcaf51df863155e35";
+    sha256 = "sha256-1EhTfPhYl+4IootTCCE04y6V7nW1/eWdHarfF7/j1U0=";
+  };
+
+  postPatch = ''
+    ln -sn 3.20 common/gtk-3.0/3.24
+    ln -sn 3.18 common/gnome-shell/3.24
+  '';
+
+  nativeBuildInputs = [
+    autoreconfHook
+    gtk3
+    inkscape
+    optipng
+    pkg-config
+    sassc
+  ];
+
+  propagatedUserEnvPkgs = [
+    gnome.gnome-themes-extra
+    gtk-engine-murrine
+  ];
+
+  enableParallelBuilding = true;
+
+  preBuild = ''
+    # Shut up inkscape's warnings about creating profile directory
+    export HOME="$NIX_BUILD_ROOT"
+  '';
+
+  configureFlags = [
+    "--with-gnome-shell=${gnome.gnome-shell.version}"
+    "--disable-unity"
+  ];
+
+  postInstall = ''
+    install -Dm644 -t $out/share/doc/${pname} AUTHORS *.md
+  '';
+
+  meta = with lib; {
+    description = "Ayu colored GTK and Kvantum themes based on Arc";
+    homepage = "https://github.com/dnordstrom/ayu-theme/";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ lovesegfault ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/data/themes/base16-schemes/default.nix b/nixpkgs/pkgs/data/themes/base16-schemes/default.nix
new file mode 100644
index 000000000000..674eeabc6256
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/base16-schemes/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenv, fetchFromGitHub, ... }:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "base16-schemes";
+  version = "unstable-2023-05-02";
+
+  src = fetchFromGitHub {
+    owner = "tinted-theming";
+    repo = "base16-schemes";
+    rev = "9a4002f78dd1094c123169da243680b2fda3fe69";
+    sha256 = "sha256-AngNF++RZQB0l4M8pRgcv66pAcIPY+cCwmUOd+RBJKA=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/themes/
+    install *.yaml $out/share/themes/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "All the color schemes for use in base16 packages";
+    homepage = finalAttrs.src.meta.homepage;
+    maintainers = [ maintainers.DamienCassou ];
+    license = licenses.mit;
+  };
+})
diff --git a/nixpkgs/pkgs/data/themes/blackbird/default.nix b/nixpkgs/pkgs/data/themes/blackbird/default.nix
new file mode 100644
index 000000000000..a3f481b6d4ee
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/blackbird/default.nix
@@ -0,0 +1,25 @@
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, gtk-engine-murrine }:
+
+stdenv.mkDerivation rec {
+  pname = "Blackbird";
+  version = "2017-12-13";
+
+  src = fetchFromGitHub {
+    repo = pname;
+    owner = "shimmerproject";
+    rev = "a1c5674c0ec38b4cc8ba41d2c0e6187987ae7eb4";
+    sha256 = "0xskcw36ci2ykra5gir5pkrawh2qkcv18p4fp2kxivssbd20d4jw";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  meta = {
+    description = "Dark Desktop Suite for Gtk, Xfce and Metacity";
+    homepage = "https://github.com/shimmerproject/Blackbird";
+    license = with lib.licenses; [ gpl2Plus cc-by-nc-sa-30 ];
+    platforms = lib.platforms.linux;
+    maintainers = [ lib.maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/breath-theme/default.nix b/nixpkgs/pkgs/data/themes/breath-theme/default.nix
new file mode 100644
index 000000000000..79bca7720207
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/breath-theme/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, stdenv
+, fetchFromGitLab
+, cmake
+, extra-cmake-modules
+, kdecoration
+, plasma-workspace
+, qtbase
+}:
+
+stdenv.mkDerivation {
+  pname = "breath-theme";
+  version = "unstable-2022-12-22";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.manjaro.org";
+    owner = "themes";
+    group = "artwork";
+    repo = "breath";
+    rev = "98822e7d903f16116bfb02ff9921824c139d7bbc";
+    sha256 = "sha256-gvzhHOuOhxV3TC3UZeVpxeSDLpCJV+SaapcJ5mbHskY=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    extra-cmake-modules
+
+    kdecoration
+    plasma-workspace
+    qtbase
+  ];
+
+  dontWrapQtApps = true;
+
+  cmakeFlags = [ "-DBUILD_PLASMA_THEMES=ON" "-DBUILD_SDDM_THEME=ON" ];
+
+  meta = with lib; {
+    description = "Manjaro KDE default theme";
+    homepage = "https://gitlab.manjaro.org/artwork/themes/breath";
+    license = licenses.cc-by-sa-40;
+    maintainers = with maintainers; [ huantian ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/canta/default.nix b/nixpkgs/pkgs/data/themes/canta/default.nix
new file mode 100644
index 000000000000..5666eded73f0
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/canta/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, gdk-pixbuf
+, librsvg
+, gtk-engine-murrine
+, gtk3
+, gnome
+, gnome-icon-theme
+, numix-icon-theme-circle
+, hicolor-icon-theme
+}:
+
+stdenv.mkDerivation rec {
+  pname = "canta-theme";
+  version = "2021-09-08";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = version;
+    sha256 = "05h42nrggb6znzjcbh4lqqfcm41h4r85n3vwimp3l4lq5p90igr2";
+  };
+
+  nativeBuildInputs = [
+    gtk3
+  ];
+
+  buildInputs = [
+    gdk-pixbuf
+    librsvg
+  ];
+
+  propagatedBuildInputs = [
+    gnome.adwaita-icon-theme
+    gnome-icon-theme
+    numix-icon-theme-circle
+    hicolor-icon-theme
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  dontDropIconThemeCache = true;
+
+  installPhase = ''
+    patchShebangs .
+    mkdir -p $out/share/themes
+    name= ./install.sh --dest $out/share/themes
+    rm $out/share/themes/*/{AUTHORS,COPYING}
+    install -D -t $out/share/backgrounds wallpaper/canta-wallpaper.svg
+    mkdir -p $out/share/icons
+    cp -a icons/Canta $out/share/icons
+    gtk-update-icon-cache $out/share/icons/Canta
+  '';
+
+  meta = with lib; {
+    description = "Flat Design theme for GTK based desktop environments";
+    homepage = "https://github.com/vinceliuice/Canta-theme";
+    license = licenses.gpl2Only;
+    platforms = platforms.linux; # numix-icon-theme-circle unavailable in darwin
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/catppuccin-gtk/default.nix b/nixpkgs/pkgs/data/themes/catppuccin-gtk/default.nix
new file mode 100644
index 000000000000..dd3ee6bb303a
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/catppuccin-gtk/default.nix
@@ -0,0 +1,87 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gtk3
+, colloid-gtk-theme
+, gnome-themes-extra
+, gtk-engine-murrine
+, python3
+, sassc
+, nix-update-script
+, accents ? [ "blue" ]
+, size ? "standard"
+, tweaks ? [ ]
+, variant ? "frappe"
+}:
+let
+  validAccents = [ "blue" "flamingo" "green" "lavender" "maroon" "mauve" "peach" "pink" "red" "rosewater" "sapphire" "sky" "teal" "yellow" ];
+  validSizes = [ "standard" "compact" ];
+  validTweaks = [ "black" "rimless" "normal" ];
+  validVariants = [ "latte" "frappe" "macchiato" "mocha" ];
+
+  pname = "catppuccin-gtk";
+in
+
+lib.checkListOfEnum "${pname}: theme accent" validAccents accents
+lib.checkListOfEnum "${pname}: color variant" validVariants [variant]
+lib.checkListOfEnum "${pname}: size variant" validSizes [size]
+lib.checkListOfEnum "${pname}: tweaks" validTweaks tweaks
+
+stdenvNoCC.mkDerivation rec {
+  inherit pname;
+  version = "0.7.1";
+
+  src = fetchFromGitHub {
+    owner = "catppuccin";
+    repo = "gtk";
+    rev = "v${version}";
+    hash = "sha256-V3JasiHaATbVDQJeJPeFq5sjbkQnSMbDRWsaRzGccXU=";
+  };
+
+  nativeBuildInputs = [ gtk3 sassc ];
+
+  buildInputs = [
+    gnome-themes-extra
+    (python3.withPackages (ps: [ ps.catppuccin ]))
+  ];
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  postUnpack = ''
+    rm -rf source/colloid
+    cp -r ${colloid-gtk-theme.src} source/colloid
+    chmod -R +w source/colloid
+  '';
+
+  postPatch = ''
+    patchShebangs --build colloid/install.sh
+  '';
+
+  dontConfigure = true;
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/themes
+    export HOME=$(mktemp -d)
+
+    python3 install.py ${variant} \
+      ${lib.optionalString (accents != []) "--accent " + builtins.toString accents} \
+      ${lib.optionalString (size != []) "--size " + size} \
+      ${lib.optionalString (tweaks != []) "--tweaks " + builtins.toString tweaks} \
+      --dest $out/share/themes
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = with lib; {
+    description = "Soothing pastel theme for GTK";
+    homepage = "https://github.com/catppuccin/gtk";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ fufexan PlayerNameHere ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/catppuccin-kde/color.sh b/nixpkgs/pkgs/data/themes/catppuccin-kde/color.sh
new file mode 100755
index 000000000000..6d3976a0e1ee
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/catppuccin-kde/color.sh
@@ -0,0 +1,61 @@
+echo $FLAVOUR $ACCENT $WINDECSTYLE
+
+FLAVOURNAME=${FLAVOUR^}
+ACCENTNAME=${ACCENT^}
+WINDECSTYLENAME=${WINDECSTYLE^}
+
+if [[ $FLAVOURNAME == "Mocha" ]]; then
+    FLAVOUR="1";
+elif [[ $FLAVOURNAME == "Macchiato" ]]; then
+    FLAVOUR="2";
+elif [[ $FLAVOURNAME == "Frappe" ]]; then
+    FLAVOUR="3";
+elif [[ $FLAVOURNAME == "Latte" ]]; then
+    FLAVOUR="4";
+fi
+if [[ $FLAVOURNAME == "Mocha" ]]; then
+    FLAVOUR="1";
+elif [[ $FLAVOURNAME == "Macchiato" ]]; then
+    FLAVOUR="2";
+elif [[ $FLAVOURNAME == "Frappe" ]]; then
+    FLAVOUR="3";
+elif [[ $FLAVOURNAME == "Latte" ]]; then
+    FLAVOUR="4";
+fi
+
+
+if [[ $ACCENTNAME == "Rosewater" ]]; then
+    ACCENT="1"
+elif [[ $ACCENTNAME == "Flamingo" ]]; then
+    ACCENT="2"
+elif [[ $ACCENTNAME == "Pink" ]]; then
+    ACCENT="3"
+elif [[ $ACCENTNAME == "Mauve" ]]; then
+    ACCENT="4"
+elif [[ $ACCENTNAME == "Red" ]]; then
+    ACCENT="5"
+elif [[ $ACCENTNAME == "Maroon" ]]; then
+    ACCENT="6"
+elif [[ $ACCENTNAME == "Peach" ]]; then
+    ACCENT="7"
+elif [[ $ACCENTNAME == "Yellow" ]]; then
+    ACCENT="8"
+elif [[ $ACCENTNAME == "Green" ]]; then
+    ACCENT="9"
+elif [[ $ACCENTNAME == "Teal" ]]; then
+    ACCENT="10"
+elif [[ $ACCENTNAME == "Sky" ]]; then
+    ACCENT="11"
+elif [[ $ACCENTNAME == "Sapphire" ]]; then
+    ACCENT="12"
+elif [[ $ACCENTNAME == "Blue" ]]; then
+    ACCENT="13"
+elif [[ $ACCENTNAME == "Lavender" ]]; then
+    ACCENT="14"
+fi
+
+if [[ $WINDECSTYLENAME == "Modern" ]]; then
+    WINDECSTYLE=1
+elif [[ $WINDECSTYLENAME == "Classic" ]]; then
+    WINDECSTYLE=2
+fi
diff --git a/nixpkgs/pkgs/data/themes/catppuccin-kde/default.nix b/nixpkgs/pkgs/data/themes/catppuccin-kde/default.nix
new file mode 100644
index 000000000000..8dac978a64dc
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/catppuccin-kde/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, fetchpatch
+, flavour ? [ "frappe" ]
+, accents ? [ "blue" ]
+, winDecStyles ? [ "modern" ]
+}:
+
+let
+  validFlavours = [ "mocha" "macchiato" "frappe" "latte" ];
+  validAccents = [ "rosewater" "flamingo" "pink" "mauve" "red" "maroon" "peach" "yellow" "green" "teal" "sky" "sapphire" "blue" "lavender" ];
+  validWinDecStyles = [ "modern" "classic" ];
+
+  colorScript = ./color.sh;
+in
+
+  lib.checkListOfEnum "Invalid accent, valid accents are ${toString validAccents}" validAccents accents
+  lib.checkListOfEnum "Invalid flavour, valid flavours are ${toString validFlavours}" validFlavours flavour
+  lib.checkListOfEnum "Invalid window decoration style, valid styles are ${toString validWinDecStyles}" validWinDecStyles winDecStyles
+
+stdenvNoCC.mkDerivation rec {
+  pname = "kde";
+  version = "0.2.4";
+
+  src = fetchFromGitHub {
+    owner = "catppuccin";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-w77lzeSisx/PPxctMJKIdRJenq0s8HwR8gLmgNh4SH8=";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/michaelBelsanti/catppuccin-kde/commit/81a8edb3c24bd6af896c92b5051e09af97d69c51.patch";
+      hash = "sha256-cb4/dQ52T+H8UqXEgExblmnMfxwO0Y1BrjMCay/EAkI=";
+    })
+  ];
+
+  installPhase = ''
+    runHook preInstall
+    patchShebangs .
+
+    for WINDECSTYLE in ${toString winDecStyles}; do
+      for FLAVOUR in ${toString flavour}; do
+        for ACCENT in ${toString accents}; do
+          source ${colorScript}
+          ./install.sh $FLAVOUR $ACCENT $WINDECSTYLE
+        done;
+      done;
+    done;
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Soothing pastel theme for KDE";
+    homepage = "https://github.com/catppuccin/kde";
+    license = licenses.mit;
+    maintainers = with maintainers; [ michaelBelsanti ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/catppuccin-kvantum/default.nix b/nixpkgs/pkgs/data/themes/catppuccin-kvantum/default.nix
new file mode 100644
index 000000000000..0588695b5bdf
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/catppuccin-kvantum/default.nix
@@ -0,0 +1,38 @@
+{
+  lib,
+  stdenvNoCC,
+  fetchFromGitHub,
+  accent ? "Blue",
+  variant ? "Frappe",
+}: let
+  pname = "catppuccin-kvantum";
+in
+  lib.checkListOfEnum "${pname}: theme accent" ["Blue" "Flamingo" "Green" "Lavender" "Maroon" "Mauve" "Peach" "Pink" "Red" "Rosewater" "Sapphire" "Sky" "Teal" "Yellow"] [accent]
+  lib.checkListOfEnum "${pname}: color variant" ["Latte" "Frappe" "Macchiato" "Mocha"] [variant]
+
+  stdenvNoCC.mkDerivation {
+    inherit pname;
+    version = "unstable-2022-07-04";
+
+    src = fetchFromGitHub {
+      owner = "catppuccin";
+      repo = "Kvantum";
+      rev = "d1e174c85311de9715aefc1eba4b8efd6b2730fc";
+      sha256 = "sha256-IrHo8pnR3u90bq12m7FEXucUF79+iub3I9vgH5h86Lk=";
+    };
+
+    installPhase = ''
+      runHook preInstall
+      mkdir -p $out/share/Kvantum
+      cp -a src/Catppuccin-${variant}-${accent} $out/share/Kvantum
+      runHook postInstall
+    '';
+
+    meta = with lib; {
+      description = "Soothing pastel theme for Kvantum";
+      homepage = "https://github.com/catppuccin/Kvantum";
+      license = licenses.mit;
+      platforms = platforms.linux;
+      maintainers = with maintainers; [ bastaynav ];
+    };
+  }
diff --git a/nixpkgs/pkgs/data/themes/catppuccin-plymouth/default.nix b/nixpkgs/pkgs/data/themes/catppuccin-plymouth/default.nix
new file mode 100644
index 000000000000..994c5ed0df2c
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/catppuccin-plymouth/default.nix
@@ -0,0 +1,43 @@
+{ stdenvNoCC
+, lib
+, fetchFromGitHub
+, variant ? "macchiato"
+}:
+
+let
+  pname = "catppuccin-plymouth";
+  validVariants = [ "latte" "frappe" "macchiato" "mocha" ];
+in
+lib.checkListOfEnum "${pname}: color variant" validVariants [ variant ]
+
+stdenvNoCC.mkDerivation rec {
+  inherit pname;
+  version = "unstable-2022-12-10";
+
+  src = fetchFromGitHub {
+    owner = "catppuccin";
+    repo = "plymouth";
+    rev = "d4105cf336599653783c34c4a2d6ca8c93f9281c";
+    hash = "sha256-quBSH8hx3gD7y1JNWAKQdTk3CmO4t1kVo4cOGbeWlNE=";
+  };
+
+  sourceRoot = "${src.name}/themes/catppuccin-${variant}";
+
+  installPhase = ''
+    runHook preInstall
+
+    sed -i 's:\(^ImageDir=\)/usr:\1'"$out"':' catppuccin-${variant}.plymouth
+    mkdir -p $out/share/plymouth/themes/catppuccin-${variant}
+    cp * $out/share/plymouth/themes/catppuccin-${variant}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Soothing pastel theme for Plymouth";
+    homepage = "https://github.com/catppuccin/plymouth";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.spectre256 ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/catppuccin-sddm-corners/default.nix b/nixpkgs/pkgs/data/themes/catppuccin-sddm-corners/default.nix
new file mode 100644
index 000000000000..eca8bac5e498
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/catppuccin-sddm-corners/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+}:
+
+stdenvNoCC.mkDerivation {
+  pname = "catppuccin-sddm-corners";
+  version = "unstable-2023-02-17";
+
+  src = fetchFromGitHub {
+    owner = "khaneliman";
+    repo = "catppuccin-sddm-corners";
+    rev = "7b7a86ee9a5a2905e7e6623d2af5922ce890ef79";
+    hash = "sha256-sTnt8RarNXz3RmYfmx4rD+nMlY8rr2n0EN3ntPzOurw=";
+  };
+
+  dontConfigure = true;
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p "$out/share/sddm/themes/"
+    cp -r catppuccin/ "$out/share/sddm/themes/catppuccin-sddm-corners"
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Soothing pastel theme for SDDM based on corners theme.";
+    homepage = "https://github.com/khaneliman/sddm-catppuccin-corners";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ khaneliman ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/catppuccin/default.nix b/nixpkgs/pkgs/data/themes/catppuccin/default.nix
new file mode 100644
index 000000000000..e8cdb0456d17
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/catppuccin/default.nix
@@ -0,0 +1,201 @@
+let
+  validThemes = [ "bat" "bottom" "btop" "grub" "hyprland" "k9s" "kvantum" "lazygit" "plymouth" "refind" "rofi" "waybar" ];
+in
+{ fetchFromGitHub
+, lib
+, stdenvNoCC
+, accent ? "blue"
+, variant ? "macchiato"
+, themeList ? validThemes
+}:
+let
+  pname = "catppuccin";
+
+  validAccents = [ "rosewater" "flamingo" "pink" "mauve" "red" "maroon" "peach" "yellow" "green" "teal" "sky" "sapphire" "blue" "lavender" ];
+  validVariants = [ "latte" "frappe" "macchiato" "mocha" ];
+
+  selectedSources = map (themeName: builtins.getAttr themeName sources) themeList;
+  sources = {
+    bat = fetchFromGitHub {
+      name = "bat";
+      owner = "catppuccin";
+      repo = "bat";
+      rev = "ba4d16880d63e656acced2b7d4e034e4a93f74b1";
+      hash = "sha256-6WVKQErGdaqb++oaXnY3i6/GuH2FhTgK0v4TN4Y0Wbw=";
+    };
+
+    bottom = fetchFromGitHub {
+      name = "bottom";
+      owner = "catppuccin";
+      repo = "bottom";
+      rev = "c0efe9025f62f618a407999d89b04a231ba99c92";
+      hash = "sha256-VaHX2I/Gn82wJWzybpWNqU3dPi3206xItOlt0iF6VVQ=";
+    };
+
+    btop = fetchFromGitHub {
+      name = "btop";
+      owner = "catppuccin";
+      repo = "btop";
+      rev = "1.0.0";
+      hash = "sha256-J3UezOQMDdxpflGax0rGBF/XMiKqdqZXuX4KMVGTxFk=";
+    };
+
+    grub = fetchFromGitHub {
+      name = "grub";
+      owner = "catppuccin";
+      repo = "grub";
+      rev = "v1.0.0";
+      hash = "sha256-/bSolCta8GCZ4lP0u5NVqYQ9Y3ZooYCNdTwORNvR7M0=";
+    };
+
+    hyprland = fetchFromGitHub {
+      name = "hyprland";
+      owner = "catppuccin";
+      repo = "hyprland";
+      rev = "v1.2";
+      hash = "sha256-07B5QmQmsUKYf38oWU3+2C6KO4JvinuTwmW1Pfk8CT8=";
+    };
+
+    k9s = fetchFromGitHub {
+      name = "k9s";
+      owner = "catppuccin";
+      repo = "k9s";
+      rev = "516f44dd1a6680357cb30d96f7e656b653aa5059";
+      hash = "sha256-PtBJRBNbLkj7D2ko7ebpEjbfK9Ywjs7zbE+Y8FQVEfA=";
+    };
+
+    kvantum = fetchFromGitHub {
+      name = "kvantum";
+      owner = "catppuccin";
+      repo = "Kvantum";
+      rev = "d1e174c85311de9715aefc1eba4b8efd6b2730fc";
+      sha256 = "sha256-IrHo8pnR3u90bq12m7FEXucUF79+iub3I9vgH5h86Lk=";
+    };
+
+    lazygit = fetchFromGitHub {
+      name = "lazygit";
+      owner = "catppuccin";
+      repo = "lazygit";
+      rev = "0543c28e8af1a935f8c512ad9451facbcc17d8a8";
+      hash = "sha256-OVihY5E+elPKag2H4RyWiSv+MdIqHtfGNM3/1u2ik6U=";
+    };
+
+    plymouth = fetchFromGitHub {
+      name = "plymouth";
+      owner = "catppuccin";
+      repo = "plymouth";
+      rev = "d4105cf336599653783c34c4a2d6ca8c93f9281c";
+      hash = "sha256-quBSH8hx3gD7y1JNWAKQdTk3CmO4t1kVo4cOGbeWlNE=";
+    };
+
+    refind = fetchFromGitHub {
+      name = "refind";
+      owner = "catppuccin";
+      repo = "refind";
+      rev = "ff0b593c19bb9b469ee0ee36068b8d373f0fadc5";
+      hash = "sha256-itUMo0lA23bJzH0Ndq7L2IaEYoVdNPYxbB/VWkRfRso=";
+    };
+
+    rofi = fetchFromGitHub {
+      name = "rofi";
+      owner = "catppuccin";
+      repo = "rofi";
+      rev = "5350da41a11814f950c3354f090b90d4674a95ce";
+      hash = "sha256-DNorfyl3C4RBclF2KDgwvQQwixpTwSRu7fIvihPN8JY=";
+    };
+
+    waybar = fetchFromGitHub {
+      name = "waybar";
+      owner = "catppuccin";
+      repo = "waybar";
+      rev = "v1.0";
+      hash = "sha256-vfwfBE3iqIN1cGoItSssR7h0z6tuJAhNarkziGFlNBw=";
+    };
+  };
+in
+lib.checkListOfEnum "${pname}: variant" validVariants [ variant ]
+lib.checkListOfEnum "${pname}: accent" validAccents [ accent ]
+lib.checkListOfEnum "${pname}: themes" validThemes themeList
+
+stdenvNoCC.mkDerivation {
+  inherit pname;
+  version = "unstable-2023-10-09";
+
+  srcs = selectedSources;
+
+  unpackPhase = ''
+    for s in $selectedSources; do
+      b=$(basename $s)
+      cp $s ''${b#*-}
+    done
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    local capitalizedVariant=$(sed 's/^\(.\)/\U\1/' <<< "${variant}")
+    local capitalizedAccent=$(sed 's/^\(.\)/\U\1/' <<< "${accent}")
+
+  '' + lib.optionalString (lib.elem "bat" themeList) ''
+    mkdir -p $out/bat
+    cp "${sources.bat}/Catppuccin-${variant}.tmTheme" "$out/bat/"
+
+  '' + lib.optionalString (lib.elem "btop" themeList) ''
+    mkdir -p $out/btop
+    cp "${sources.btop}/themes/catppuccin_${variant}.theme" "$out/btop/"
+
+  '' + lib.optionalString (lib.elem "bottom" themeList) ''
+    mkdir -p $out/bottom
+    cp "${sources.bottom}/themes/${variant}.toml" "$out/bottom/"
+
+  '' + lib.optionalString (lib.elem "grub" themeList) ''
+    mkdir -p $out/grub
+    cp -r ${sources.grub}/src/catppuccin-${variant}-grub-theme/* "$out/grub/"
+
+  '' + lib.optionalString (lib.elem "hyprland" themeList) ''
+    mkdir -p $out/hyprland
+    cp "${sources.hyprland}/themes/${variant}.conf" "$out/hyprland/"
+
+  '' + lib.optionalString (lib.elem "k9s" themeList) ''
+    mkdir -p $out/k9s
+    cp "${sources.k9s}/dist/${variant}.yml" "$out/k9s/"
+
+  '' + lib.optionalString (lib.elem "kvantum" themeList) ''
+    mkdir -p $out/share/Kvantum
+    cp -r ${sources.kvantum}/src/Catppuccin-"$capitalizedVariant"-"$capitalizedAccent" $out/share/Kvantum
+
+  '' + lib.optionalString (lib.elem "lazygit" themeList) ''
+    mkdir -p $out/lazygit/{themes,themes-mergable}
+    cp "${sources.lazygit}/themes/${variant}/${variant}-${accent}.yml" "$out/lazygit/themes/"
+    cp "${sources.lazygit}/themes-mergable/${variant}/${variant}-${accent}.yml" "$out/lazygit/themes-mergable/"
+
+  '' + lib.optionalString (lib.elem "plymouth" themeList) ''
+    mkdir -p $out/share/plymouth/themes/catppuccin-${variant}
+    cp ${sources.plymouth}/themes/catppuccin-${variant}/* $out/share/plymouth/themes/catppuccin-${variant}
+    sed -i 's:\(^ImageDir=\)/usr:\1'"$out"':' $out/share/plymouth/themes/catppuccin-${variant}/catppuccin-${variant}.plymouth
+
+  '' + lib.optionalString (lib.elem "rofi" themeList) ''
+    mkdir -p $out/rofi
+    cp ${sources.rofi}/basic/.local/share/rofi/themes/catppuccin-${variant}.rasi $out/rofi/
+
+  '' + lib.optionalString (lib.elem "refind" themeList) ''
+    mkdir -p $out/refind/assets
+    cp ${sources.refind}/${variant}.conf $out/refind/
+    cp -r ${sources.refind}/assets/${variant} $out/refind/assets/
+
+  '' + lib.optionalString (lib.elem "waybar" themeList) ''
+    mkdir -p $out/waybar
+    cp ${sources.waybar}/${variant}.css $out/waybar/
+
+  '' + ''
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Soothing pastel themes";
+    homepage = "https://github.com/catppuccin/catppuccin";
+    license = lib.licenses.mit;
+    platforms = lib.platforms.all;
+    maintainers = [ lib.maintainers.khaneliman ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/chili-sddm/default.nix b/nixpkgs/pkgs/data/themes/chili-sddm/default.nix
new file mode 100644
index 000000000000..a1b26248b8db
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/chili-sddm/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, qtgraphicaleffects
+, themeConfig ? { }
+}:
+let
+  customToString = x: if builtins.isBool x then lib.boolToString x else toString x;
+  configLines = lib.mapAttrsToList (name: value: lib.nameValuePair name value) themeConfig;
+  configureTheme = "cp theme.conf theme.conf.orig \n" +
+    (lib.concatMapStringsSep "\n"
+      (configLine:
+        "grep -q '^${configLine.name}=' theme.conf || echo '${configLine.name}=' >> \"$1\"\n" +
+          "sed -i -e 's/^${configLine.name}=.*$/${configLine.name}=${
+        lib.escape [ "/" "&" "\\"] (customToString configLine.value)
+      }/' theme.conf"
+      )
+      configLines);
+in
+stdenv.mkDerivation {
+  pname = "sddm-chili-theme";
+  version = "0.1.5";
+
+  src = fetchFromGitHub {
+    owner = "MarianArlt";
+    repo = "sddm-chili";
+    rev = "6516d50176c3b34df29003726ef9708813d06271";
+    sha256 = "036fxsa7m8ymmp3p40z671z163y6fcsa9a641lrxdrw225ssq5f3";
+  };
+
+  propagatedBuildInputs = [
+    qtgraphicaleffects
+  ];
+
+  dontWrapQtApps = true;
+
+  preInstall = configureTheme;
+
+  postInstall = ''
+    mkdir -p $out/share/sddm/themes/chili
+
+    mv * $out/share/sddm/themes/chili/
+  '';
+
+  postFixup = ''
+    mkdir -p $out/nix-support
+
+    echo ${qtgraphicaleffects} >> $out/nix-support/propagated-user-env-packages
+  '';
+  meta = with lib; {
+    license = licenses.gpl3;
+    maintainers = with lib.maintainers; [ sents ];
+    homepage = "https://github.com/MarianArlt/sddm-chili";
+    description = "The chili login theme for SDDM";
+    longDescription = ''
+      Chili is hot, just like a real chili!
+      Spice up the login experience for your users, your family and yourself.
+      Chili reduces all the clutter and leaves you with a clean, easy to use, login interface with a modern yet classy touch.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/clearlooks-phenix/default.nix b/nixpkgs/pkgs/data/themes/clearlooks-phenix/default.nix
new file mode 100644
index 000000000000..0157914d8fcc
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/clearlooks-phenix/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenv, fetchzip }:
+
+stdenv.mkDerivation rec {
+  version = "7.0.1";
+  pname = "clearlooks-phenix";
+
+  src = fetchzip {
+    url = "https://github.com/jpfleury/clearlooks-phenix/archive/${version}.tar.gz";
+    sha256 = "1b6y4l3rf3c5r4v72fyj3ppvnvw13kvr2a1dyl63ni1jxnlk50kd";
+  };
+
+  dontBuild = true;
+  installPhase = ''
+    mkdir -p $out/share/themes/Clearlooks-Phenix
+    cp -r . $out/share/themes/Clearlooks-Phenix/
+  '';
+
+  preferLocalBuild = true;
+
+  meta = with lib; {
+    description = "GTK3 port of the Clearlooks theme";
+    longDescription = ''
+      The Clearlooks-Phénix project aims at creating a GTK3 port of Clearlooks,
+      the default theme for Gnome 2. Style is also included for GTK2, Unity and
+      for Metacity, Openbox and Xfwm4 window managers.
+    '';
+    homepage = "https://github.com/jpfleury/clearlooks-phenix";
+    downloadPage = "https://github.com/jpfleury/clearlooks-phenix/releases";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.prikhi ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/colloid-gtk-theme/default.nix b/nixpkgs/pkgs/data/themes/colloid-gtk-theme/default.nix
new file mode 100644
index 000000000000..71e7fb9a2863
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/colloid-gtk-theme/default.nix
@@ -0,0 +1,73 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gnome-themes-extra
+, gtk-engine-murrine
+, jdupes
+, sassc
+, themeVariants ? [] # default: blue
+, colorVariants ? [] # default: all
+, sizeVariants ? [] # default: standard
+, tweaks ? []
+}:
+
+let
+  pname = "colloid-gtk-theme";
+
+in
+lib.checkListOfEnum "${pname}: theme variants" [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ] themeVariants
+lib.checkListOfEnum "${pname}: color variants" [ "standard" "light" "dark" ] colorVariants
+lib.checkListOfEnum "${pname}: size variants" [ "standard" "compact" ] sizeVariants
+lib.checkListOfEnum "${pname}: tweaks" [ "nord" "dracula" "gruvbox" "all" "black" "rimless" "normal" "float" ] tweaks
+
+stdenvNoCC.mkDerivation rec {
+  inherit pname;
+  version = "2023-10-28";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = version;
+    hash = "sha256-NxIWH3qLW8sEguovAv9wfgnlnmPlTipRJTmMo3rSHNY=";
+  };
+
+  nativeBuildInputs = [
+    jdupes
+    sassc
+  ];
+
+  buildInputs = [
+    gnome-themes-extra
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  postPatch = ''
+    patchShebangs install.sh
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    name= HOME="$TMPDIR" ./install.sh \
+      ${lib.optionalString (themeVariants != []) "--theme " + builtins.toString themeVariants} \
+      ${lib.optionalString (colorVariants != []) "--color " + builtins.toString colorVariants} \
+      ${lib.optionalString (sizeVariants != []) "--size " + builtins.toString sizeVariants} \
+      ${lib.optionalString (tweaks != []) "--tweaks " + builtins.toString tweaks} \
+      --dest $out/share/themes
+
+    jdupes --quiet --link-soft --recurse $out/share
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A modern and clean Gtk theme";
+    homepage = "https://github.com/vinceliuice/Colloid-gtk-theme";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/colloid-kde/default.nix b/nixpkgs/pkgs/data/themes/colloid-kde/default.nix
new file mode 100644
index 000000000000..24cde3f38989
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/colloid-kde/default.nix
@@ -0,0 +1,69 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, kdeclarative
+, plasma-framework
+, plasma-workspace
+, gitUpdater
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "colloid-kde";
+  version = "unstable-2023-07-04";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = "0b79befdad9b442b5a8287342c4b7e47ff87d555";
+    hash = "sha256-AYH9fW20/p+mq6lxR1lcCV1BQ/kgcsjHncpMvYWXnWA=";
+  };
+
+  # Propagate sddm theme dependencies to user env otherwise sddm does
+  # not find them. Putting them in buildInputs is not enough.
+  propagatedUserEnvPkgs = [
+    kdeclarative.bin
+    plasma-framework
+    plasma-workspace
+  ];
+
+  postPatch = ''
+    patchShebangs install.sh
+
+    substituteInPlace install.sh \
+      --replace '$HOME/.local' $out \
+      --replace '$HOME/.config' $out/share
+
+    substituteInPlace sddm/install.sh \
+      --replace /usr $out \
+      --replace '$(cd $(dirname $0) && pwd)' . \
+      --replace '"$UID" -eq "$ROOT_UID"' true
+
+    substituteInPlace sddm/Colloid/Main.qml \
+      --replace /usr $out
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/latte
+
+    name= HOME="$TMPDIR" \
+    ./install.sh --dest $out/share/themes
+
+    mkdir -p $out/share/sddm/themes
+    cd sddm
+    source install.sh
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "A clean and concise theme for KDE Plasma desktop";
+    homepage = "https://github.com/vinceliuice/Colloid-kde-theme";
+    license = licenses.gpl3Only;
+    platforms = platforms.all;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/dracula-theme/default.nix b/nixpkgs/pkgs/data/themes/dracula-theme/default.nix
new file mode 100644
index 000000000000..b555b9197403
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/dracula-theme/default.nix
@@ -0,0 +1,48 @@
+{ lib, stdenvNoCC, fetchFromGitHub, gtk-engine-murrine }:
+
+let
+  themeName = "Dracula";
+  version = "4.0.0";
+in
+stdenvNoCC.mkDerivation {
+  pname = "dracula-theme";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "dracula";
+    repo = "gtk";
+    rev = "v${version}";
+    hash = "sha256-q3/uBd+jPFhiVAllyhqf486Jxa0mnCDSIqcm/jwGtJA=";
+  };
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes/${themeName}
+    cp -a {assets,cinnamon,gnome-shell,gtk-2.0,gtk-3.0,gtk-3.20,gtk-4.0,index.theme,metacity-1,unity,xfwm4} $out/share/themes/${themeName}
+
+    cp -a kde/{color-schemes,plasma} $out/share/
+    cp -a kde/kvantum $out/share/Kvantum
+    mkdir -p $out/share/aurorae/themes
+    cp -a kde/aurorae/* $out/share/aurorae/themes/
+    mkdir -p $out/share/sddm/themes
+    cp -a kde/sddm/* $out/share/sddm/themes/
+
+    mkdir -p $out/share/icons/Dracula-cursors
+    mv kde/cursors/Dracula-cursors/index.theme $out/share/icons/Dracula-cursors/cursor.theme
+    mv kde/cursors/Dracula-cursors/cursors $out/share/icons/Dracula-cursors/cursors
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Dracula variant of the Ant theme";
+    homepage = "https://github.com/dracula/gtk";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ alexarice ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/e17gtk/default.nix b/nixpkgs/pkgs/data/themes/e17gtk/default.nix
new file mode 100644
index 000000000000..b6cc44aa0d54
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/e17gtk/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "e17gtk";
+  version = "3.22.2";
+
+  src = fetchFromGitHub {
+    owner = "tsujan";
+    repo = "E17gtk";
+    rev = "V${version}";
+    sha256 = "1qwj1hmdlk8sdqhkrh60p2xg4av1rl0lmipdg5j0i40318pmiml1";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/{doc,themes}/E17gtk
+    cp -va index.theme gtk-2.0 gtk-3.0 metacity-1 $out/share/themes/E17gtk/
+    cp -va README.md WORKAROUNDS screenshot.jpg $out/share/doc/E17gtk/
+  '';
+
+  meta = {
+    description = "An Enlightenment-like GTK theme with sharp corners";
+    homepage = "https://github.com/tsujan/E17gtk";
+    license = lib.licenses.gpl3;
+    platforms = lib.platforms.unix;
+    maintainers = [ lib.maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/equilux-theme/default.nix b/nixpkgs/pkgs/data/themes/equilux-theme/default.nix
new file mode 100644
index 000000000000..067c2b88a099
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/equilux-theme/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenv, fetchFromGitHub, gnome, glib, libxml2, gtk-engine-murrine, gdk-pixbuf, librsvg, bc }:
+
+stdenv.mkDerivation rec {
+  pname = "equilux-theme";
+  version = "20181029";
+
+  src = fetchFromGitHub {
+    owner = "ddnexus";
+    repo = "equilux-theme";
+    rev = "equilux-v${version}";
+    sha256 = "0lv2yyxhnmnkwxp576wnb01id4fp734b5z5n0l67sg5z7vc2h8fc";
+  };
+
+  nativeBuildInputs = [ glib libxml2 bc ];
+
+  buildInputs = [ gnome.gnome-themes-extra gdk-pixbuf librsvg ];
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    patchShebangs install.sh
+    sed -i install.sh \
+      -e "s|if .*which gnome-shell.*;|if true;|" \
+      -e "s|CURRENT_GS_VERSION=.*$|CURRENT_GS_VERSION=${lib.versions.majorMinor gnome.gnome-shell.version}|"
+    mkdir -p $out/share/themes
+    ./install.sh --dest $out/share/themes
+    rm $out/share/themes/*/COPYING
+  '';
+
+  meta = with lib; {
+    inherit (src.meta) homepage;
+    description = "A Material Design theme for GNOME/GTK based desktop environments";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = [ maintainers.fpletz ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/flat-remix-gnome/default.nix b/nixpkgs/pkgs/data/themes/flat-remix-gnome/default.nix
new file mode 100644
index 000000000000..61ddd00abd30
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/flat-remix-gnome/default.nix
@@ -0,0 +1,45 @@
+{ stdenv
+, fetchFromGitHub
+, glib
+, lib
+, writeScriptBin
+}:
+let
+  # make install will use dconf to find desktop background file uri.
+  # consider adding an args to allow specify pictures manually.
+  # https://github.com/daniruiz/flat-remix-gnome/blob/20231026/Makefile#L38
+  fake-dconf = writeScriptBin "dconf" "echo -n";
+in
+stdenv.mkDerivation rec {
+  pname = "flat-remix-gnome";
+  version = "20231026";
+
+  src = fetchFromGitHub {
+    owner = "daniruiz";
+    repo = pname;
+    rev = version;
+    hash = "sha256-sKQOq0GMslkzND2ayL5M6XIxJv8t0yj6XCP3poA6wRc=";
+  };
+
+  nativeBuildInputs = [ glib fake-dconf ];
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  # make install will back up this file, it will fail if the file doesn't exist.
+  # https://github.com/daniruiz/flat-remix-gnome/blob/20231026/Makefile#L56
+  preInstall = ''
+    mkdir -p $out/share/gnome-shell/
+    touch $out/share/gnome-shell/gnome-shell-theme.gresource
+  '';
+
+  postInstall = ''
+    rm $out/share/gnome-shell/gnome-shell-theme.gresource.old
+  '';
+
+  meta = with lib; {
+    description = "GNOME Shell theme inspired by material design.";
+    homepage = "https://drasite.com/flat-remix-gnome";
+    license = licenses.cc-by-sa-40;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.vanilla ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/flat-remix-gtk/default.nix b/nixpkgs/pkgs/data/themes/flat-remix-gtk/default.nix
new file mode 100644
index 000000000000..a569a3758357
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/flat-remix-gtk/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, gtk-engine-murrine
+}:
+
+stdenv.mkDerivation rec {
+  pname = "flat-remix-gtk";
+  version = "20220627";
+
+  src = fetchFromGitHub {
+    owner = "daniruiz";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-z/ILu8UPbyEN/ejsxZ3CII3y3dI04ZNa1i6nyjKFis8=";
+  };
+
+  dontBuild = true;
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  meta = with lib; {
+    description = "GTK application theme inspired by material design";
+    homepage = "https://drasite.com/flat-remix-gtk";
+    license = licenses.gpl3Only;
+    platforms = platforms.all;
+    maintainers = [ maintainers.mkg20001 ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/fluent-gtk-theme/default.nix b/nixpkgs/pkgs/data/themes/fluent-gtk-theme/default.nix
new file mode 100644
index 000000000000..b6f3fdc092ea
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/fluent-gtk-theme/default.nix
@@ -0,0 +1,77 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gitUpdater
+, gnome-themes-extra
+, gtk-engine-murrine
+, jdupes
+, sassc
+, themeVariants ? [] # default: blue
+, colorVariants ? [] # default: all
+, sizeVariants ? [] # default: standard
+, tweaks ? []
+}:
+
+let
+  pname = "fluent-gtk-theme";
+
+in
+lib.checkListOfEnum "${pname}: theme variants" [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ] themeVariants
+lib.checkListOfEnum "${pname}: color variants" [ "standard" "light" "dark" ] colorVariants
+lib.checkListOfEnum "${pname}: size variants" [ "standard" "compact" ] sizeVariants
+lib.checkListOfEnum "${pname}: tweaks" [ "solid" "float" "round" "blur" "noborder" "square" ] tweaks
+
+stdenvNoCC.mkDerivation rec {
+  inherit pname;
+  version = "2023-06-20";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = version;
+    hash = "sha256-hUXlzLdcWeOHEJx3+vCMpxvJst6Rr8ISvlzlsUgCrhg=";
+  };
+
+  nativeBuildInputs = [
+    jdupes
+    sassc
+  ];
+
+  buildInputs = [
+    gnome-themes-extra
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  postPatch = ''
+    patchShebangs install.sh
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    name= HOME="$TMPDIR" ./install.sh \
+      ${lib.optionalString (themeVariants != []) "--theme " + builtins.toString themeVariants} \
+      ${lib.optionalString (colorVariants != []) "--color " + builtins.toString colorVariants} \
+      ${lib.optionalString (sizeVariants != []) "--size " + builtins.toString sizeVariants} \
+      ${lib.optionalString (tweaks != []) "--tweaks " + builtins.toString tweaks} \
+      --icon nixos \
+      --dest $out/share/themes
+
+    jdupes --quiet --link-soft --recurse $out/share
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Fluent design gtk theme";
+    homepage = "https://github.com/vinceliuice/Fluent-gtk-theme";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/graphite-gtk-theme/default.nix b/nixpkgs/pkgs/data/themes/graphite-gtk-theme/default.nix
new file mode 100644
index 000000000000..46cceaa23ba4
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/graphite-gtk-theme/default.nix
@@ -0,0 +1,98 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gitUpdater
+, gnome-themes-extra
+, gtk-engine-murrine
+, jdupes
+, sassc
+, themeVariants ? [] # default: blue
+, colorVariants ? [] # default: all
+, sizeVariants ? [] # default: standard
+, tweaks ? []
+, wallpapers ? false
+, withGrub ? false
+, grubScreens ? [] # default: 1080p
+}:
+
+let
+  pname = "graphite-gtk-theme";
+
+in
+lib.checkListOfEnum "${pname}: theme variants" [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "blue" "all" ] themeVariants
+lib.checkListOfEnum "${pname}: color variants" [ "standard" "light" "dark" ] colorVariants
+lib.checkListOfEnum "${pname}: size variants" [ "standard" "compact" ] sizeVariants
+lib.checkListOfEnum "${pname}: tweaks" [ "nord" "black" "darker" "rimless" "normal" "float" "colorful" ] tweaks
+lib.checkListOfEnum "${pname}: grub screens" [ "1080p" "2k" "4k" ] grubScreens
+
+stdenvNoCC.mkDerivation rec {
+  inherit pname;
+  version = "unstable-2023-11-22";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = "429645480653e2e3b3d003d9afcebf075769db2b";
+    sha256 = "sha256-2MPAyod4kPlj/eJiYRsS3FJL0pUR+o9W4CSbI6M3350=";
+  };
+
+  nativeBuildInputs = [
+    jdupes
+    sassc
+  ];
+
+  buildInputs = [
+    gnome-themes-extra
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  installPhase = ''
+    runHook preInstall
+
+    patchShebangs install.sh
+
+    name= ./install.sh \
+      ${lib.optionalString (themeVariants != []) "--theme " + builtins.toString themeVariants} \
+      ${lib.optionalString (colorVariants != []) "--color " + builtins.toString colorVariants} \
+      ${lib.optionalString (sizeVariants != []) "--size " + builtins.toString sizeVariants} \
+      ${lib.optionalString (tweaks != []) "--tweaks " + builtins.toString tweaks} \
+      --dest $out/share/themes
+
+    ${lib.optionalString wallpapers ''
+      mkdir -p $out/share/backgrounds
+      cp -a wallpaper/Graphite/*.png $out/share/backgrounds/
+      ${lib.optionalString (builtins.elem "nord" tweaks) ''
+        cp -a wallpaper/Graphite-nord/*.png $out/share/backgrounds/
+      ''}
+    ''}
+
+    ${lib.optionalString withGrub ''
+      (
+      cd other/grub2
+
+      patchShebangs install.sh
+
+      ./install.sh --justcopy --dest $out/share/grub/themes \
+        ${lib.optionalString (builtins.elem "nord" tweaks) "--theme nord"} \
+        ${lib.optionalString (grubScreens != []) "--screen " + builtins.toString grubScreens}
+      )
+    ''}
+
+    jdupes --quiet --link-soft --recurse $out/share
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Flat Gtk+ theme based on Elegant Design";
+    homepage = "https://github.com/vinceliuice/Graphite-gtk-theme";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/graphite-kde-theme/default.nix b/nixpkgs/pkgs/data/themes/graphite-kde-theme/default.nix
new file mode 100644
index 000000000000..d098cf6aab45
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/graphite-kde-theme/default.nix
@@ -0,0 +1,60 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, kdeclarative
+, plasma-framework
+, plasma-workspace
+, gitUpdater
+}:
+
+stdenv.mkDerivation rec {
+  pname = "graphite-kde-theme";
+  version = "unstable-2023-10-25";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = "33cc85c49c424dfcba73e6ee84b0dc7fb9e52566";
+    hash = "sha256-iQGT2x0wY2EIuYw/a1MB8rT9BxiqWrOyBo6EGIJwsFw=";
+  };
+
+  # Propagate sddm theme dependencies to user env otherwise sddm does
+  # not find them. Putting them in buildInputs is not enough.
+  propagatedUserEnvPkgs = [
+    kdeclarative.bin
+    plasma-framework
+    plasma-workspace
+  ];
+
+  postPatch = ''
+    patchShebangs install.sh
+
+    substituteInPlace install.sh \
+      --replace '$HOME/.local' $out \
+      --replace '$HOME/.config' $out/share
+
+    substituteInPlace sddm/*/Main.qml \
+      --replace /usr $out
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    name= ./install.sh
+
+    mkdir -p $out/share/sddm/themes
+    cp -a sddm/Graphite* $out/share/sddm/themes/
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "A flat Design theme for KDE Plasma desktop";
+    homepage = "https://github.com/vinceliuice/Graphite-kde-theme";
+    license = licenses.gpl3Only;
+    platforms = platforms.all;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/greybird/default.nix b/nixpkgs/pkgs/data/themes/greybird/default.nix
new file mode 100644
index 000000000000..0462a28d34fb
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/greybird/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkg-config
+, sassc
+, gdk-pixbuf
+, librsvg
+, gtk-engine-murrine
+, gitUpdater
+}:
+
+stdenv.mkDerivation rec {
+  pname = "greybird";
+  version = "3.23.3";
+
+  src = fetchFromGitHub {
+    owner = "shimmerproject";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "+MZQ3FThuRFEfoARsF09B7POwytS5RgTs9zYzIHVtfg=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    sassc
+  ];
+
+  buildInputs = [
+    gdk-pixbuf
+    librsvg
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  passthru.updateScript = gitUpdater { rev-prefix = "v"; };
+
+  meta = with lib; {
+    description = "Grey and blue theme from the Shimmer Project for GTK-based environments";
+    homepage = "https://github.com/shimmerproject/Greybird";
+    license = [ licenses.gpl2Plus ]; # or alternatively: cc-by-nc-sa-30 or later
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/gruvbox-dark-gtk/default.nix b/nixpkgs/pkgs/data/themes/gruvbox-dark-gtk/default.nix
new file mode 100644
index 000000000000..28b55074afbb
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/gruvbox-dark-gtk/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "gruvbox-dark-gtk";
+  version = "1.0.2";
+
+  src = fetchFromGitHub {
+    owner = "jmattheis";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-C681o89MTGNp1l3DLQsRpH9HQdmdCXZzk0F0rNhcyL4=";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/themes/gruvbox-dark
+    rm -rf README.md LICENSE .github
+    cp -r * $out/share/themes/gruvbox-dark
+  '';
+
+  meta = with lib; {
+    description = "Gruvbox theme for GTK based desktop environments";
+    homepage = "https://github.com/jmattheis/gruvbox-dark-gtk";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.nomisiv ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/gruvbox-gtk-theme/default.nix b/nixpkgs/pkgs/data/themes/gruvbox-gtk-theme/default.nix
new file mode 100644
index 000000000000..b579f71d8b8b
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/gruvbox-gtk-theme/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gnome-themes-extra
+, gtk-engine-murrine
+}:
+stdenvNoCC.mkDerivation {
+  pname = "gruvbox-gtk-theme";
+  version = "unstable-2023-05-26";
+
+  src = fetchFromGitHub {
+    owner = "Fausto-Korpsvart";
+    repo = "Gruvbox-GTK-Theme";
+    rev = "c0b7fb501938241a3b6b5734f8cb1f0982edc6b4";
+    hash = "sha256-Y+6HuWaVkNqlYc+w5wLkS2LpKcDtpeOpdHnqBmShm5Q=";
+  };
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  buildInputs = [
+    gnome-themes-extra
+  ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes
+    cp -a themes/* $out/share/themes
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A Gtk theme based on the Gruvbox colour pallete";
+    homepage = "https://www.pling.com/p/1681313/";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.math-42 ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/gtk-theme-framework/default.nix b/nixpkgs/pkgs/data/themes/gtk-theme-framework/default.nix
new file mode 100644
index 000000000000..99b9edfc3aca
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/gtk-theme-framework/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, theme, lib }:
+
+stdenv.mkDerivation rec {
+  pname = "gtk-theme-framework";
+  version = "0.2.3";
+
+  src = fetchFromGitHub {
+    owner = "jaxwilko";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1z5s5rsgiypanf2z0avaisbflnvwrc8aiy5qskrsvbbaja63jy3s";
+  };
+
+  postPatch = ''
+    substituteInPlace main.sh \
+      --replace "#!/usr/bin/env bash" "#!/bin/sh"
+
+    substituteInPlace scripts/install.sh \
+      --replace "#!/usr/bin/env bash" "#!/bin/sh"
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/themes
+    ./main.sh -i -t ${theme} -d $out/share/themes
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/jaxwilko/gtk-theme-framework";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ flexagoon ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/jade1/default.nix b/nixpkgs/pkgs/data/themes/jade1/default.nix
new file mode 100644
index 000000000000..30857639dd76
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/jade1/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenv, fetchurl, gtk-engine-murrine }:
+
+stdenv.mkDerivation rec {
+  pname = "theme-jade1";
+  version = "1.15";
+
+  src = fetchurl {
+    url = "https://github.com/madmaxms/theme-jade-1/releases/download/v${version}/jade-1-theme.tar.xz";
+    sha256 = "sha256-VfV3dVpA3P0ChRjpxuh6C9loxr5t3s1xK0BP3DOCeQ4=";
+  };
+
+  sourceRoot = ".";
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes
+    cp -a Jade* $out/share/themes
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Based on Linux Mint theme with dark menus and more intensive green";
+    homepage = "https://github.com/madmaxms/theme-jade-1";
+    license = with licenses; [ gpl3Only ];
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/juno/default.nix b/nixpkgs/pkgs/data/themes/juno/default.nix
new file mode 100644
index 000000000000..9e1580a6a14d
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/juno/default.nix
@@ -0,0 +1,45 @@
+{ lib, stdenv, fetchurl, gtk-engine-murrine }:
+
+stdenv.mkDerivation rec {
+  pname = "juno";
+  version = "0.0.1";
+
+  srcs = [
+    (fetchurl {
+      url = "https://github.com/gvolpe/Juno/releases/download/${version}/Juno.tar.xz";
+      sha256 = "1cghsn9qagcf1nlga5cal0aqch6hkjm5wk6ja791zxhdqy3crx1i";
+    })
+    (fetchurl {
+      url = "https://github.com/gvolpe/Juno/releases/download/${version}/Juno-mirage.tar.xz";
+      sha256 = "0zh6bc85svmwh8qrhpn8mim0pj322x2x2i9sxnp7p1938p5z5m2b";
+    })
+    (fetchurl {
+      url = "https://github.com/gvolpe/Juno/releases/download/${version}/Juno-ocean.tar.xz";
+      sha256 = "0m2wgmcn12dfq5badzlpzjc8792ba9hi32c79vfvqawdn1q3hrdx";
+    })
+    (fetchurl {
+      url = "https://github.com/gvolpe/Juno/releases/download/${version}/Juno-palenight.tar.xz";
+      sha256 = "1hn2l0m76x61ixjd253hi7czm65asdjdhqvvlv7idbccc40pvrak";
+    })
+  ];
+
+  sourceRoot = ".";
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes
+    cp -a Juno* $out/share/themes
+    rm $out/share/themes/*/{LICENSE,README.md}
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "GTK themes inspired by epic vscode themes";
+    homepage = "https://github.com/EliverLara/Juno";
+    license = licenses.gpl3Only;
+    platforms = platforms.all;
+    maintainers = [ maintainers.gvolpe ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/kde-gruvbox/default.nix b/nixpkgs/pkgs/data/themes/kde-gruvbox/default.nix
new file mode 100644
index 000000000000..e0f478a53cbe
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/kde-gruvbox/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, lib, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "kde-gruvbox";
+  version = "unstable-2015-08-09";
+
+  src = fetchFromGitHub {
+    owner = "printesoi";
+    repo = pname;
+    rev = "2dd95283076d7194345a460edb3630cfd020759c";
+    sha256 = "sha256-ppAeEfwoHZg7XEj3zGc+uq4Z6hUgJNM2EjuDsc8pFQo=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/{plasma/desktoptheme,yakuake/kns_skins}
+    cp -R color-schemes konsole $out/share
+    cp -R plasma5/gruvbox $out/share/plasma/desktoptheme
+    cp -R yakuake/breeze-gruvbox-dark $out/share/yakuake/kns_skins
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A suite of themes for KDE applications that match the retro gruvbox colorscheme";
+    homepage = "https://github.com/printesoi/kde-gruvbox";
+    license = licenses.mit;
+    maintainers = [ maintainers.ymarkus ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/kde2/default.nix b/nixpkgs/pkgs/data/themes/kde2/default.nix
new file mode 100644
index 000000000000..1404a6ca86ec
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/kde2/default.nix
@@ -0,0 +1,30 @@
+{ lib, fetchFromGitHub, mkDerivation
+, cmake, extra-cmake-modules
+, qtbase, kcoreaddons, kdecoration
+}:
+
+mkDerivation rec {
+  pname = "kde2-decoration";
+  version = "1.1";
+
+  src = fetchFromGitHub {
+    owner = "repos-holder";
+    repo = "kdecoration2-kde2";
+    rev = version;
+    sha256 = "y2q1j36EURJc7k1huqhEH1Z82PnVSKlfx20bpQWY28c=";
+  };
+
+  outputs = [ "out" "dev" ];
+
+  nativeBuildInputs = [ cmake extra-cmake-modules ];
+
+  buildInputs = [ qtbase kcoreaddons kdecoration ];
+
+  meta = with lib; {
+    description = "KDE 2 window decoration ported to Plasma 5";
+    homepage = "https://github.com/repos-holder/kdecoration2-kde2";
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/kwin-decorations/kde-rounded-corners/default.nix b/nixpkgs/pkgs/data/themes/kwin-decorations/kde-rounded-corners/default.nix
new file mode 100644
index 000000000000..f0f28776d358
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/kwin-decorations/kde-rounded-corners/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, extra-cmake-modules
+, wrapQtAppsHook
+, kwin
+, kdelibs4support
+, libepoxy
+, libxcb
+, lib
+}:
+
+stdenv.mkDerivation rec {
+  pname = "kde-rounded-corners";
+  version = "0.4.0";
+
+  src = fetchFromGitHub {
+    owner = "matinlotfali";
+    repo = "KDE-Rounded-Corners";
+    rev = "v${version}";
+    hash = "sha256-mjZWfh00A0J6ijuLqW6frPH4AYbRI/BlVHblGCCmNEo=";
+  };
+
+  postConfigure = ''
+    substituteInPlace cmake_install.cmake \
+      --replace "${kdelibs4support}" "$out"
+  '';
+
+  nativeBuildInputs = [ cmake extra-cmake-modules wrapQtAppsHook ];
+  buildInputs = [ kwin kdelibs4support libepoxy libxcb ];
+
+  meta = with lib; {
+    description = "Rounds the corners of your windows";
+    homepage = "https://github.com/matinlotfali/KDE-Rounded-Corners";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ flexagoon ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/kwin-decorations/sierra-breeze-enhanced/default.nix b/nixpkgs/pkgs/data/themes/kwin-decorations/sierra-breeze-enhanced/default.nix
new file mode 100644
index 000000000000..46d6af5f24c4
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/kwin-decorations/sierra-breeze-enhanced/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, extra-cmake-modules
+, wrapQtAppsHook
+, kwin
+, lib
+}:
+
+stdenv.mkDerivation rec {
+  pname = "sierra-breeze-enhanced";
+  version = "1.3.3";
+
+  src = fetchFromGitHub {
+    owner = "kupiqu";
+    repo = "SierraBreezeEnhanced";
+    rev = "V${version}";
+    sha256 = "sha256-zTUTsSzy4p0Y7RPOidCtxTjjyvPRyWSQCxA5sUzXcLc=";
+  };
+
+  nativeBuildInputs = [ cmake extra-cmake-modules wrapQtAppsHook ];
+  buildInputs = [ kwin ];
+
+  cmakeFlags = [
+    "-DCMAKE_INSTALL_PREFIX=$out"
+    "-DBUILD_TESTING=OFF"
+    "-DKDE_INSTALL_USE_QT_SYS_PATHS=ON"
+  ];
+
+  meta = with lib; {
+    description = "OSX-like window decoration for KDE Plasma written in C++";
+    homepage = "https://github.com/kupiqu/SierraBreezeEnhanced";
+    changelog = "https://github.com/kupiqu/SierraBreezeEnhanced/releases/tag/V${version}";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ flexagoon ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/layan-gtk-theme/default.nix b/nixpkgs/pkgs/data/themes/layan-gtk-theme/default.nix
new file mode 100644
index 000000000000..597734ae9aef
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/layan-gtk-theme/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, fetchFromGitHub
+, lib
+, gtk-engine-murrine
+}:
+
+stdenv.mkDerivation rec {
+  pname = "layan-gtk-theme";
+  version = "2023-05-23";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-R8QxDMOXzDIfioAvvescLAu6NjJQ9zhf/niQTXZr+yA=";
+  };
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  postPatch = ''
+    patchShebangs install.sh
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes
+    unset name && ./install.sh -d $out/share/themes
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A flat Material Design theme for GTK 3, GTK 2 and Gnome-Shell.";
+    homepage = "https://github.com/vinceliuice/Layan-gtk-theme";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.vanilla ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/layan-kde/default.nix b/nixpkgs/pkgs/data/themes/layan-kde/default.nix
new file mode 100644
index 000000000000..7ca55d1dc74f
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/layan-kde/default.nix
@@ -0,0 +1,60 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, kdeclarative
+, plasma-framework
+, plasma-workspace
+, gitUpdater
+}:
+
+stdenv.mkDerivation rec {
+  pname = "layan-kde";
+  version = "unstable-2023-09-30";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = "7ab7cd7461dae8d8d6228d3919efbceea5f4272c";
+    hash = "sha256-Wh8tZcQEdTTlgtBf4ovapojHcpPBZDDkWOclmxZv9zA=";
+  };
+
+  # Propagate sddm theme dependencies to user env otherwise sddm does
+  # not find them. Putting them in buildInputs is not enough.
+  propagatedUserEnvPkgs = [
+    kdeclarative.bin
+    plasma-framework
+    plasma-workspace
+  ];
+
+  postPatch = ''
+    patchShebangs install.sh
+
+    substituteInPlace install.sh \
+      --replace '$HOME/.local' $out \
+      --replace '$HOME/.config' $out/share
+
+    substituteInPlace sddm/*/Main.qml \
+      --replace /usr $out
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    name= ./install.sh --dest $out/share/themes
+
+    mkdir -p $out/share/sddm/themes
+    cp -a sddm/Layan* $out/share/sddm/themes/
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "A flat Design theme for KDE Plasma desktop";
+    homepage = "https://github.com/vinceliuice/Layan-kde";
+    license = licenses.gpl3Only;
+    platforms = platforms.all;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/lightly-boehs/default.nix b/nixpkgs/pkgs/data/themes/lightly-boehs/default.nix
new file mode 100644
index 000000000000..10c30a431e7c
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/lightly-boehs/default.nix
@@ -0,0 +1,42 @@
+{ mkDerivation
+, lib
+, kdecoration
+, fetchFromGitHub
+, cmake
+, extra-cmake-modules
+, plasma-workspace
+, qtbase
+, qt5
+}:
+
+mkDerivation rec {
+  pname = "lightly-boehs";
+  version = "0.4.1";
+
+  src = fetchFromGitHub {
+    owner = "boehs";
+    repo = "Lightly";
+    rev = "1a831f7ff19ce93c04489faec74e389a216fdf11";
+    sha256 = "Icw+xVmuCB59ltyZJKyIeHI/yGfM2SbPrVzTVLqHWd4=";
+  };
+
+  buildInputs = [
+    kdecoration
+    plasma-workspace
+    qtbase
+    qt5.qtx11extras
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    extra-cmake-modules
+  ];
+
+  meta = with lib; {
+    description = "A fork of the Lightly breeze theme style that aims to be visually modern and minimalistic";
+    homepage = "https://github.com/boehs/Lightly";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.hikari ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/lightly-qt/default.nix b/nixpkgs/pkgs/data/themes/lightly-qt/default.nix
new file mode 100644
index 000000000000..7b653d952424
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/lightly-qt/default.nix
@@ -0,0 +1,42 @@
+{ mkDerivation
+, lib
+, fetchFromGitHub
+, cmake
+, extra-cmake-modules
+, kdecoration
+, plasma-workspace
+, qtbase
+, qt5
+}:
+
+mkDerivation rec {
+  pname = "lightly-qt";
+  version = "0.4.1";
+
+  src = fetchFromGitHub {
+    owner = "Luwx";
+    repo = "Lightly";
+    rev = "v${version}";
+    sha256 = "0qkjzgjplgwczhk6959iah4ilvazpprv7yb809jy75kkp1jw8mwk";
+  };
+
+  buildInputs = [
+    kdecoration
+    plasma-workspace
+    qtbase
+    qt5.qtx11extras
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    extra-cmake-modules
+  ];
+
+  meta = with lib; {
+    description = "A fork of breeze theme style that aims to be visually modern and minimalistic";
+    homepage = "https://github.com/Luwx/Lightly";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.pwoelfel ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/lounge/default.nix b/nixpkgs/pkgs/data/themes/lounge/default.nix
new file mode 100644
index 000000000000..ab945f510538
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/lounge/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenv, fetchFromGitHub, meson, ninja, sassc, gtk3, gnome, gdk-pixbuf, librsvg, gtk-engine-murrine }:
+
+stdenv.mkDerivation rec {
+  pname = "lounge-gtk-theme";
+  version = "1.24";
+
+  src = fetchFromGitHub {
+    owner = "monday15";
+    repo = pname;
+    rev = version;
+    sha256 = "0ima0aa5j296xn4y0d1zj6vcdrdpnihqdidj7bncxzgbnli1vazs";
+  };
+
+  nativeBuildInputs = [ meson ninja sassc gtk3 ];
+
+  buildInputs = [ gdk-pixbuf librsvg ];
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  mesonFlags = [
+    "-D gnome_version=${lib.versions.majorMinor gnome.gnome-shell.version}"
+  ];
+
+  postFixup = ''
+    gtk-update-icon-cache "$out"/share/icons/Lounge-aux;
+  '';
+
+  meta = with lib; {
+    description = "Simple and clean GTK theme with vintage scrollbars, inspired by Absolute, based on Adwaita";
+    homepage = "https://github.com/monday15/lounge-gtk-theme";
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/marwaita-manjaro/default.nix b/nixpkgs/pkgs/data/themes/marwaita-manjaro/default.nix
new file mode 100644
index 000000000000..e00fe5ff2254
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/marwaita-manjaro/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, gdk-pixbuf
+, gtk-engine-murrine
+, gtk_engines
+, librsvg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "marwaita-manjaro";
+  version = "17.0";
+
+  src = fetchFromGitHub {
+    owner = "darkomarko42";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-lNHzO5wxAFL1axLlxefXyJue0Zu6bM53AUNm74IE4y8=";
+  };
+
+  buildInputs = [
+    gdk-pixbuf
+    gtk_engines
+    librsvg
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes
+    cp -a Marwaita* $out/share/themes
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Manjaro Style (green version) of Marwaita GTK theme";
+    homepage = "https://www.pling.com/p/1351213/";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/marwaita-peppermint/default.nix b/nixpkgs/pkgs/data/themes/marwaita-peppermint/default.nix
new file mode 100644
index 000000000000..16a60de9287e
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/marwaita-peppermint/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, gdk-pixbuf
+, gtk-engine-murrine
+, gtk_engines
+, librsvg
+, gitUpdater
+}:
+
+stdenv.mkDerivation rec {
+  pname = "marwaita-peppermint";
+  version = "17.0";
+
+  src = fetchFromGitHub {
+    owner = "darkomarko42";
+    repo = pname;
+    rev = "247f9c539d6eef8ae3a5f59beed42a40b1f10434";
+    hash = "sha256-uT7KnpIdxypUqKhXOao3Bz3vJecJKK+GjcAp9biNyHc=";
+  };
+
+  buildInputs = [
+    gdk-pixbuf
+    gtk_engines
+    librsvg
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes
+    cp -a Marwaita* $out/share/themes
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Marwaita GTK theme with Peppermint Os Linux style";
+    homepage = "https://www.pling.com/p/1399569/";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/marwaita-pop_os/default.nix b/nixpkgs/pkgs/data/themes/marwaita-pop_os/default.nix
new file mode 100644
index 000000000000..33e75cdd08c2
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/marwaita-pop_os/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, gdk-pixbuf
+, gtk-engine-murrine
+, gtk_engines
+, librsvg
+, gitUpdater
+}:
+
+stdenv.mkDerivation rec {
+  pname = "marwaita-pop_os";
+  version = "17.0";
+
+  src = fetchFromGitHub {
+    owner = "darkomarko42";
+    repo = pname;
+    rev = "1f3561f1231d0e9e931f93c5d59df19ed2205ce0";
+    hash = "sha256-WbCIMEWF5853TQyhq8aRoWzpsmjObm9hEc4I0pxDNOM=";
+  };
+
+  buildInputs = [
+    gdk-pixbuf
+    gtk_engines
+    librsvg
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes
+    cp -a Marwaita* $out/share/themes
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Marwaita GTK theme with Pop_os Linux style";
+    homepage = "https://www.pling.com/p/1377894/";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/marwaita-ubuntu/default.nix b/nixpkgs/pkgs/data/themes/marwaita-ubuntu/default.nix
new file mode 100644
index 000000000000..4190b1c0c3d2
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/marwaita-ubuntu/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, gdk-pixbuf
+, gtk-engine-murrine
+, gtk_engines
+, librsvg
+, gitUpdater
+}:
+
+stdenv.mkDerivation rec {
+  pname = "marwaita-ubuntu";
+  version = "17.0";
+
+  src = fetchFromGitHub {
+    owner = "darkomarko42";
+    repo = pname;
+    rev = "481aae16034e0321bcabd14270639b8bd8b9aa73";
+    hash = "sha256-Ze2nR+77qe0TfwcvXP9eheB7mXSSVdejk11GS0fx7LY=";
+  };
+
+  buildInputs = [
+    gdk-pixbuf
+    gtk_engines
+    librsvg
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes
+    cp -a Marwaita* $out/share/themes
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Ubuntu Style of Marwaita GTK theme";
+    homepage = "https://www.pling.com/p/1352833/";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/marwaita/default.nix b/nixpkgs/pkgs/data/themes/marwaita/default.nix
new file mode 100644
index 000000000000..a16cf43cfe29
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/marwaita/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, gdk-pixbuf
+, gtk-engine-murrine
+, gtk_engines
+, librsvg
+, gitUpdater
+}:
+
+stdenv.mkDerivation rec {
+  pname = "marwaita";
+  version = "17";
+
+  src = fetchFromGitHub {
+    owner = "darkomarko42";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-9yPgcWtk8w2AyOav1sfQFuH8wnX37ho836NgUnQbFRE=";
+  };
+
+  buildInputs = [
+    gdk-pixbuf
+    gtk_engines
+    librsvg
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes
+    cp -a Marwaita* $out/share/themes
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "GTK theme supporting Budgie, Pantheon, Mate, Xfce4 and GNOME desktops";
+    homepage = "https://www.pling.com/p/1239855/";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/matcha/default.nix b/nixpkgs/pkgs/data/themes/matcha/default.nix
new file mode 100644
index 000000000000..d19ed938bf55
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/matcha/default.nix
@@ -0,0 +1,75 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gdk-pixbuf
+, gtk-engine-murrine
+, jdupes
+, librsvg
+, gitUpdater
+, colorVariants ? [] # default: all
+, themeVariants ? [] # default: blue
+}:
+
+let
+  pname = "matcha-gtk-theme";
+
+in
+lib.checkListOfEnum "${pname}: color variants" [ "standard" "light" "dark" ] colorVariants
+lib.checkListOfEnum "${pname}: theme variants" [ "aliz" "azul" "sea" "pueril" "all" ] themeVariants
+
+stdenvNoCC.mkDerivation rec {
+  inherit pname;
+  version = "2023-10-30";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = version;
+    sha256 = "+sWYUCFp5J+fhPHxicwtsHCQkFTpKwjj9H3GAXqNaYo=";
+  };
+
+  nativeBuildInputs = [
+    jdupes
+  ];
+
+  buildInputs = [
+    gdk-pixbuf
+    librsvg
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  postPatch = ''
+    patchShebangs install.sh
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/themes
+
+    name= ./install.sh \
+      ${lib.optionalString (colorVariants != []) "--color " + builtins.toString colorVariants} \
+      ${lib.optionalString (themeVariants != []) "--theme " + builtins.toString themeVariants} \
+      --dest $out/share/themes
+
+    mkdir -p $out/share/doc/${pname}
+    cp -a src/extra/firefox $out/share/doc/${pname}
+
+    jdupes --quiet --link-soft --recurse $out/share
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "A stylish flat Design theme for GTK based desktop environments";
+    homepage = "https://vinceliuice.github.io/theme-matcha";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/materia-kde/default.nix b/nixpkgs/pkgs/data/themes/materia-kde/default.nix
new file mode 100644
index 000000000000..1a3f6dc36ef2
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/materia-kde/default.nix
@@ -0,0 +1,23 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "materia-kde-theme";
+  version = "20220714";
+
+  src = fetchFromGitHub {
+    owner = "PapirusDevelopmentTeam";
+    repo = "materia-kde";
+    rev = version;
+    sha256 = "sha256-/LA+H2ekxuO1RpfaPJruRGeWPVopA0rZUxU4Mh7YQ0s=";
+  };
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = with lib; {
+    description = "A port of the materia theme for Plasma";
+    homepage = "https://github.com/PapirusDevelopmentTeam/materia-kde";
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers.diffumist ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/materia-theme/default.nix b/nixpkgs/pkgs/data/themes/materia-theme/default.nix
new file mode 100644
index 000000000000..f42e532b6491
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/materia-theme/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, sassc
+, gnome
+, gtk-engine-murrine
+, gdk-pixbuf
+, librsvg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "materia-theme";
+  version = "20210322";
+
+  src = fetchFromGitHub {
+    owner = "nana-4";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1fsicmcni70jkl4jb3fvh7yv0v9jhb8nwjzdq8vfwn256qyk0xvl";
+  };
+
+  nativeBuildInputs = [ meson ninja sassc ];
+
+  buildInputs = [ gnome.gnome-themes-extra gdk-pixbuf librsvg ];
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  mesonFlags = [
+    "-Dgnome_shell_version=${lib.versions.majorMinor gnome.gnome-shell.version}"
+  ];
+
+  postInstall = ''
+    rm $out/share/themes/*/COPYING
+  '';
+
+  meta = with lib; {
+    description = "Material Design theme for GNOME/GTK based desktop environments";
+    homepage = "https://github.com/nana-4/materia-theme";
+    license = licenses.gpl2Only;
+    platforms = platforms.all;
+    maintainers = [ maintainers.mounium ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/material-kwin-decoration/default.nix b/nixpkgs/pkgs/data/themes/material-kwin-decoration/default.nix
new file mode 100644
index 000000000000..ba81e1f62987
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/material-kwin-decoration/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, cmake
+, extra-cmake-modules
+, qtx11extras
+, kcoreaddons
+, kguiaddons
+, kconfig
+, kdecoration
+, kconfigwidgets
+, kwindowsystem
+, kiconthemes
+, kwayland
+, unstableGitUpdater
+}:
+
+mkDerivation rec {
+  pname = "material-kwin-decoration";
+  version = "unstable-2023-01-15";
+
+  src = fetchFromGitHub {
+    owner = "Zren";
+    repo = "material-decoration";
+    rev = "0e989e5b815b64ee5bca989f983da68fa5556644";
+    sha256 = "sha256-Ncn5jxkuN4ZBWihfycdQwpJ0j4sRpBGMCl6RNiH4mXg=";
+  };
+
+  # Remove -Werror since it uses deprecated methods
+  postPatch = ''
+    substituteInPlace ./CMakeLists.txt \
+      --replace "add_definitions (-Wall -Werror)" "add_definitions (-Wall)"
+  '';
+
+  nativeBuildInputs = [ cmake extra-cmake-modules ];
+
+  buildInputs = [
+    qtx11extras
+    kcoreaddons
+    kguiaddons
+    kdecoration
+    kconfig
+    kconfigwidgets
+    kwindowsystem
+    kiconthemes
+    kwayland
+  ];
+
+  passthru = {
+    updateScript = unstableGitUpdater { };
+  };
+
+  meta = with lib; {
+    description = "Material-ish window decoration theme for KWin";
+    homepage = "https://github.com/Zren/material-decoration";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ nickcao ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/mojave/default.nix b/nixpkgs/pkgs/data/themes/mojave/default.nix
new file mode 100644
index 000000000000..2e302735f17c
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/mojave/default.nix
@@ -0,0 +1,147 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, glib
+, gnome-shell
+, gtk-engine-murrine
+, gtk_engines
+, inkscape
+, jdupes
+, optipng
+, sassc
+, which
+, buttonSizeVariants ? [] # default to standard
+, buttonVariants ? [] # default to all
+, colorVariants ? [] # default to all
+, opacityVariants ? [] # default to all
+, themeVariants ? [] # default to MacOS blue
+, wallpapers ? false
+, gitUpdater
+}:
+
+let
+
+  pname = "mojave-gtk-theme";
+  version = "2023-08-04";
+
+  main_src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = version;
+    hash = "sha256-boS/GPjuJV5lZjyHW7tG74T6a3SASQVGnSz++5HkCuw=";
+  };
+
+  wallpapers_src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = "1dc23c2b45d7e073e080cfb02f43aab0e59b6b2c";
+    hash = "sha256-nkw8gXYx8fN1yn0A5M2fWwOvfUQ6izynxRw5JA61InM=";
+    name = "wallpapers";
+  };
+
+in
+
+lib.checkListOfEnum "${pname}: button size variants" [ "standard" "small" ] buttonSizeVariants
+lib.checkListOfEnum "${pname}: button variants" [ "standard" "alt" ] buttonVariants
+lib.checkListOfEnum "${pname}: color variants" [ "light" "dark" ] colorVariants
+lib.checkListOfEnum "${pname}: opacity variants" [ "standard" "solid" ] opacityVariants
+lib.checkListOfEnum "${pname}: theme variants" [ "default" "blue" "purple" "pink" "red" "orange" "yellow" "green" "grey" "all" ] themeVariants
+
+stdenvNoCC.mkDerivation rec {
+  inherit pname version;
+
+  srcs = [ main_src ] ++ lib.optional wallpapers wallpapers_src;
+
+  sourceRoot = main_src.name;
+
+  nativeBuildInputs = [
+    glib
+    gnome-shell
+    inkscape
+    jdupes
+    optipng
+    sassc
+    which
+  ];
+
+  buildInputs = [
+    gtk_engines
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  # These fixup steps are slow and unnecessary.
+  dontPatchELF = true;
+  dontRewriteSymlinks = true;
+
+  postPatch = ''
+    patchShebangs \
+      install.sh \
+      src/main/gtk-3.0/make_gresource_xml.sh \
+      src/main/gtk-4.0/make_gresource_xml.sh
+
+    for f in \
+      render-assets.sh \
+      src/assets/cinnamon/thumbnails/render-thumbnails.sh \
+      src/assets/gtk-2.0/render-assets.sh \
+      src/assets/gtk/common-assets/render-assets.sh \
+      src/assets/gtk/thumbnails/render-thumbnails.sh \
+      src/assets/gtk/windows-assets/render-alt-assets.sh \
+      src/assets/gtk/windows-assets/render-alt-small-assets.sh \
+      src/assets/gtk/windows-assets/render-assets.sh \
+      src/assets/gtk/windows-assets/render-small-assets.sh \
+      src/assets/metacity-1/render-assets.sh \
+      src/assets/xfwm4/render-assets.sh
+    do
+      patchShebangs $f
+      substituteInPlace $f \
+        --replace /usr/bin/inkscape ${inkscape}/bin/inkscape \
+        --replace /usr/bin/optipng ${optipng}/bin/optipng
+    done
+
+    ${lib.optionalString wallpapers ''
+      for f in ../${wallpapers_src.name}/Mojave{,-timed}.xml; do
+        substituteInPlace $f --replace /usr $out
+      done
+    ''}
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    name= ./install.sh \
+      ${lib.optionalString (buttonSizeVariants != []) "--small " + builtins.toString buttonSizeVariants} \
+      ${lib.optionalString (buttonVariants != []) "--alt " + builtins.toString buttonVariants} \
+      ${lib.optionalString (colorVariants != []) "--color " + builtins.toString colorVariants} \
+      ${lib.optionalString (opacityVariants != []) "--opacity " + builtins.toString opacityVariants} \
+      ${lib.optionalString (themeVariants != []) "--theme " + builtins.toString themeVariants} \
+      --icon nixos \
+      --dest $out/share/themes
+
+    ${lib.optionalString wallpapers ''
+      mkdir -p $out/share/backgrounds/Mojave
+      mkdir -p $out/share/gnome-background-properties
+      cp -a ../${wallpapers_src.name}/Mojave*.jpeg $out/share/backgrounds/Mojave/
+      cp -a ../${wallpapers_src.name}/Mojave-timed.xml $out/share/backgrounds/Mojave/
+      cp -a ../${wallpapers_src.name}/Mojave.xml $out/share/gnome-background-properties/
+    ''}
+
+    # Replace duplicate files with soft links to the first file in each
+    # set of duplicates, reducing the installed size in about 53%
+    jdupes --quiet --link-soft --recurse $out/share
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Mac OSX Mojave like theme for GTK based desktop environments";
+    homepage = "https://github.com/vinceliuice/Mojave-gtk-theme";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/nixos-bgrt-plymouth/default.nix b/nixpkgs/pkgs/data/themes/nixos-bgrt-plymouth/default.nix
new file mode 100644
index 000000000000..0486aed864f4
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/nixos-bgrt-plymouth/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, unstableGitUpdater
+}:
+
+stdenv.mkDerivation {
+  name = "nixos-bgrt-plymouth";
+  version = "unstable-2023-03-10";
+
+  src = fetchFromGitHub {
+    repo = "plymouth-theme-nixos-bgrt";
+    owner = "helsinki-systems";
+    rev = "0771e04f13b6b908d815b506472afb1c9a2c81ae";
+    hash = "sha256-aF4Ro5z4G6LS40ENwFDH8CgV7ldfhzqekuSph/DMQoo=";
+  };
+
+  dontConfigure = true;
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/plymouth/themes/nixos-bgrt
+    cp -r $src/{*.plymouth,images} $out/share/plymouth/themes/nixos-bgrt/
+    substituteInPlace $out/share/plymouth/themes/nixos-bgrt/*.plymouth --replace '@IMAGES@' "$out/share/plymouth/themes/nixos-bgrt/images"
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = unstableGitUpdater { };
+
+  meta = with lib; {
+    description = "BGRT theme with a spinning NixOS logo";
+    homepage = "https://github.com/helsinki-systems/plymouth-theme-nixos-bgrt";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lilyinstarlight ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/nordic/default.nix b/nixpkgs/pkgs/data/themes/nordic/default.nix
new file mode 100644
index 000000000000..16eefee7bbb9
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/nordic/default.nix
@@ -0,0 +1,157 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, gtk-engine-murrine
+, breeze-icons
+, plasma-framework
+, plasma-workspace
+, jdupes
+}:
+
+stdenv.mkDerivation rec {
+  pname = "nordic";
+  version = "unstable-2023-10-17";
+
+  srcs = [
+    (fetchFromGitHub {
+      owner = "EliverLara";
+      repo = pname;
+      rev = "e97d2bcf4494f8ab502e33d13c74b396469a42f4";
+      hash = "sha256-7WfCE3eoJ7maAYqgQNb0mlw8u3zc6NAwTJN+PVojDcE=";
+      name = "Nordic";
+    })
+
+    (fetchFromGitHub {
+      owner = "EliverLara";
+      repo = pname;
+      rev = "73ed3490c13b2df6c3d27d6b3bcba0c087297f4a";
+      hash = "sha256-fRmGiqtjfGFIfr5hRBS3ZPFYEpQx391WoxphB5gRTJo=";
+      name = "Nordic-standard-buttons";
+    })
+
+    (fetchFromGitHub {
+      owner = "EliverLara";
+      repo = pname;
+      rev = "4b1fc2942bad203a0aa035cbb688b28005bb1011";
+      hash = "sha256-VU5Bo39l8xdR6QmbTR0Qic6XkSfDFrhyjoHaMm9SBYM=";
+      name = "Nordic-darker";
+    })
+
+    (fetchFromGitHub {
+      owner = "EliverLara";
+      repo = pname;
+      rev = "6d57a16eef66c25f0212b7d2f02e208f2afdf4f9";
+      hash = "sha256-Sq5ZXOh+HA+udQHL2wUw5azgKwAVVvHGNb3SiuOn0nQ=";
+      name = "Nordic-darker-standard-buttons";
+    })
+
+    (fetchFromGitHub {
+      owner = "EliverLara";
+      repo = pname;
+      rev = "566e38c40bca86df93d0e9226c33d5d525d34454";
+      hash = "sha256-Wl/m2O0tVCFgZhPC/gcNgKr0JqQbiyQBpGEcp8g6kvY=";
+      name = "Nordic-bluish-accent";
+    })
+
+    (fetchFromGitHub {
+      owner = "EliverLara";
+      repo = pname;
+      rev = "b43efee28129634fdefe70f2a03c401efc7dc22f";
+      hash = "sha256-rLOWkfTMFEnVU2tuw5M2fvbNMPfxIu+gzi+3gnBEhx4=";
+      name = "Nordic-bluish-accent-standard-buttons";
+    })
+
+    (fetchFromGitHub {
+      owner = "EliverLara";
+      repo = "${pname}-polar";
+      rev = "2192acfce55fbb9a2982886abe25e623d0e7ff66";
+      hash = "sha256-B/sAy4I+9gX9dHXUldcN5t0vlOL2Jnoan/hRV+tNnSo=";
+      name = "Nordic-Polar";
+    })
+
+    (fetchFromGitHub {
+      owner = "EliverLara";
+      repo = "${pname}-polar";
+      rev = "a24b42411d8ea0dc63bf0778e443be251858e586";
+      hash = "sha256-02z4eMFtok1+SeW+ai7vZCXZb6ZhU4l4ch1Zc/GyhYM=";
+      name = "Nordic-Polar-standard-buttons";
+    })
+  ];
+
+  sourceRoot = ".";
+
+  outputs = [ "out" "sddm" ];
+
+  nativeBuildInputs = [ jdupes ];
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  dontWrapQtApps = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    # install theme files
+    mkdir -p $out/share/themes
+    cp -a Nordic* $out/share/themes
+
+    # remove uneeded files
+    rm -r $out/share/themes/*/.gitignore
+    rm -r $out/share/themes/*/Art
+    rm -r $out/share/themes/*/FUNDING.yml
+    rm -r $out/share/themes/*/LICENSE
+    rm -r $out/share/themes/*/README.md
+    rm -r $out/share/themes/*/{package.json,package-lock.json,Gulpfile.js}
+    rm -r $out/share/themes/*/src
+    rm -r $out/share/themes/*/cinnamon/*.scss
+    rm -r $out/share/themes/*/gnome-shell/{earlier-versions,extensions,*.scss}
+    rm -r $out/share/themes/*/gtk-2.0/{assets.svg,assets.txt,links.fish,render-assets.sh}
+    rm -r $out/share/themes/*/gtk-3.0/{apps,widgets,*.scss}
+    rm -r $out/share/themes/*/gtk-4.0/{apps,widgets,*.scss}
+    rm -r $out/share/themes/*/xfwm4/{assets,render_assets.fish}
+
+    # move wallpapers to appropriate directory
+    mkdir -p $out/share/wallpapers/Nordic
+    mv -v $out/share/themes/Nordic/extras/wallpapers/* $out/share/wallpapers/Nordic/
+    rmdir $out/share/themes/Nordic/extras{/wallpapers,}
+
+    # move kde related contents to appropriate directories
+    mkdir -p $out/share/{aurorae/themes,color-schemes,Kvantum,plasma,icons}
+    mv -v $out/share/themes/Nordic/kde/aurorae/* $out/share/aurorae/themes/
+    mv -v $out/share/themes/Nordic/kde/colorschemes/* $out/share/color-schemes/
+    mv -v $out/share/themes/Nordic/kde/konsole $out/share/
+    mv -v $out/share/themes/Nordic/kde/kvantum/* $out/share/Kvantum/
+    mv -v $out/share/themes/Nordic/kde/plasma/look-and-feel $out/share/plasma/
+    mv -v $out/share/themes/Nordic/kde/folders/* $out/share/icons/
+    mv -v $out/share/themes/Nordic/kde/cursors/*-cursors $out/share/icons/
+
+    mkdir -p $sddm/share/sddm/themes
+    mv -v $out/share/themes/Nordic/kde/sddm/* $sddm/share/sddm/themes/
+
+    rm -rf $out/share/themes/Nordic/kde
+
+    # Replace duplicate files with symbolic links to the first file in
+    # each set of duplicates, reducing the installed size in about 53%
+    jdupes --quiet --link-soft --recurse $out/share
+
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    # Propagate sddm theme dependencies to user env otherwise sddm
+    # does find them. Putting them in buildInputs is not enough.
+
+    mkdir -p $sddm/nix-support
+
+    printWords ${breeze-icons} ${plasma-framework} ${plasma-workspace} \
+      >> $sddm/nix-support/propagated-user-env-packages
+  '';
+
+  meta = with lib; {
+    description = "Gtk and KDE themes using the Nord color pallete";
+    homepage = "https://github.com/EliverLara/Nordic";
+    license = licenses.gpl3Only;
+    platforms = platforms.all;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/numix-solarized/default.nix b/nixpkgs/pkgs/data/themes/numix-solarized/default.nix
new file mode 100644
index 000000000000..af06075de7d3
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/numix-solarized/default.nix
@@ -0,0 +1,47 @@
+{ lib, stdenv, fetchFromGitHub, python3, sassc, glib, gdk-pixbuf, inkscape, gtk-engine-murrine }:
+
+stdenv.mkDerivation rec {
+  pname = "numix-solarized-gtk-theme";
+  version = "20230408";
+
+  src = fetchFromGitHub {
+    owner = "Ferdi265";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-r5xCe8Ew+/SuCUaZ0yjlumORTy/y1VwbQQjQ6uEyGsY=";
+  };
+
+  nativeBuildInputs = [ python3 sassc glib gdk-pixbuf inkscape ];
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  postPatch = ''
+    patchShebangs .
+    substituteInPlace Makefile --replace '$(DESTDIR)'/usr $out
+  '';
+
+  buildPhase = "true";
+
+  installPhase = ''
+    runHook preInstall
+    for theme in colors/*.colors; do
+      theme="''${theme##*/}"
+      make THEME="''${theme/.colors/}" install
+    done
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Solarized versions of Numix GTK2 and GTK3 theme";
+    longDescription = ''
+      This is a fork of the Numix GTK theme that replaces the colors of the theme
+      and icons to use the solarized theme with a solarized green accent color.
+      This theme supports both the dark and light theme, just as Numix proper.
+    '';
+    homepage = "https://github.com/Ferdi265/numix-solarized-gtk-theme";
+    downloadPage = "https://github.com/Ferdi265/numix-solarized-gtk-theme/releases";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.offline ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/numix-sx/default.nix b/nixpkgs/pkgs/data/themes/numix-sx/default.nix
new file mode 100644
index 000000000000..ee887cbadee1
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/numix-sx/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenv, fetchurl, gtk-engine-murrine }:
+
+stdenv.mkDerivation {
+  version = "2017-04-24";
+  pname = "numix-sx-gtk-theme";
+
+  src = fetchurl {
+    url = "https://dl.opendesktop.org/api/files/download/id/1493077417/Numix-SX.tar.xz";
+    sha256 = "7e1983924b2d90e89eddb3da8f4c43dc1326fe138fd191c8212c7904dcd618b0";
+  };
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  dontBuild = true;
+
+  sourceRoot = ".";
+
+  installPhase = ''
+    install -dm 755 "$out/share/themes/"
+    cp -dr --no-preserve='ownership' Numix-SX-{Dark,FullDark,Light} "$out/share/themes/"
+  '';
+
+  meta = {
+    description = "Gray variation of Numix theme";
+    homepage = "https://www.gnome-look.org/p/1117412/";
+    license = lib.licenses.gpl3Plus;
+    platforms = lib.platforms.all;
+    maintainers = [ lib.maintainers.sauyon ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/numix/default.nix b/nixpkgs/pkgs/data/themes/numix/default.nix
new file mode 100644
index 000000000000..a55970d5dccf
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/numix/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, sassc
+, glib
+, libxml2
+, gdk-pixbuf
+, gtk-engine-murrine
+, gitUpdater
+}:
+
+stdenv.mkDerivation rec {
+  pname = "numix-gtk-theme";
+  version = "unstable-2021-06-08";
+
+  src = fetchFromGitHub {
+    repo = "numix-gtk-theme";
+    owner = "numixproject";
+    rev = "ad4b345cb19edba96bec72d6dc97ed1b568755a8";
+    hash = "sha256-7KX5xC6Gr6azqL2qyc8rYb3q9UhcGco2uEfltsQ+mgo=";
+  };
+
+  nativeBuildInputs = [ sassc glib libxml2 gdk-pixbuf ];
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  postPatch = ''
+    substituteInPlace Makefile --replace '$(DESTDIR)'/usr $out
+    patchShebangs .
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = {
+    description = "Modern flat theme with a combination of light and dark elements (GNOME, Unity, Xfce and Openbox)";
+    homepage = "https://numixproject.github.io";
+    license = lib.licenses.gpl3Plus;
+    platforms = lib.platforms.all;
+    maintainers = [ lib.maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/obsidian2/default.nix b/nixpkgs/pkgs/data/themes/obsidian2/default.nix
new file mode 100644
index 000000000000..86b06f823535
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/obsidian2/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, stdenvNoCC
+, fetchurl
+, gtk-engine-murrine
+, jdupes
+, gitUpdater
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "theme-obsidian2";
+  version = "2.23";
+
+  src = fetchurl {
+    url = "https://github.com/madmaxms/theme-obsidian-2/releases/download/v${version}/obsidian-2-theme.tar.xz";
+    sha256 = "sha256-yJoMS5XrHlMss+rdJ+xLJx0F9Hs1Cc+MFk+xyhRXaf0=";
+  };
+
+  sourceRoot = ".";
+
+  nativeBuildInputs = [
+    jdupes
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes
+    cp -a Obsidian-2* $out/share/themes
+    jdupes --quiet --link-soft --recurse $out/share
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater {
+    url = "https://github.com/madmaxms/theme-obsidian-2";
+    rev-prefix = "v";
+  };
+
+  meta = with lib; {
+    description = "Gnome theme based upon Adwaita-Maia dark skin";
+    homepage = "https://github.com/madmaxms/theme-obsidian-2";
+    license = with licenses; [ gpl3Only ];
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/omni-gtk-theme/default.nix b/nixpkgs/pkgs/data/themes/omni-gtk-theme/default.nix
new file mode 100644
index 000000000000..b216eff6193a
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/omni-gtk-theme/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenv, fetchFromGitHub, gtk-engine-murrine }:
+
+stdenv.mkDerivation {
+  pname = "omni-gtk-theme";
+  version = "unstable-2021-03-30";
+
+  src = fetchFromGitHub {
+    owner = "getomni";
+    repo = "gtk";
+    rev = "e81b3fbebebf53369cffe1fb662abc400edb04f7";
+    sha256 = "sha256-NSZjkG+rY6h8d7FYq5kipPAjMDAgyaYAgOOOJlfqBCI=";
+  };
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/themes/Omni
+    cp -a {assets,gnome-shell,gtk-2.0,gtk-3.0,gtk-3.20,index.theme,metacity-1,unity,xfwm4} $out/share/themes/Omni
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Dark theme created by Rocketseat";
+    homepage = "https://github.com/getomni/gtk";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ zoedsoupe ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/onestepback/default.nix b/nixpkgs/pkgs/data/themes/onestepback/default.nix
new file mode 100644
index 000000000000..c18d55db5b44
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/onestepback/default.nix
@@ -0,0 +1,37 @@
+{ lib, stdenv, fetchurl, unzip }:
+
+stdenv.mkDerivation rec {
+  pname = "onestepback";
+  version = "0.994";
+
+  srcs = [
+    (fetchurl {
+      url = "http://www.vide.memoire.free.fr/perso/OneStepBack/OneStepBack-v${version}.zip";
+      hash = "sha256-kjGiGo4bF1mWJPnaPv2lf7rGG/uAntHK61mH6lcJ6e4=";
+    })
+    (fetchurl {
+      url = "http://www.vide.memoire.free.fr/perso/OneStepBack/OneStepBack-darker-v${version}.zip";
+      hash = "sha256-AuurSa45uF5GbPqaMXKblWkv3YGkYL1z0VjWrbnsB/I=";
+    })
+  ];
+
+  nativeBuildInputs = [ unzip ];
+
+  sourceRoot = ".";
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p  $out/share/themes
+    cp -a OneStepBack* $out/share/themes/
+    rm $out/share/themes/*/{LICENSE,README*}
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Gtk theme inspired by the NextStep look";
+    homepage = "http://www.vide.memoire.free.fr/perso/OneStepBack";
+    license = licenses.gpl3Plus;
+    platforms = platforms.all;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/openzone/default.nix b/nixpkgs/pkgs/data/themes/openzone/default.nix
new file mode 100644
index 000000000000..e7748612fef3
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/openzone/default.nix
@@ -0,0 +1,24 @@
+{ lib, stdenv, fetchFromGitHub, icon-slicer, xcursorgen }:
+stdenv.mkDerivation rec {
+  pname = "openzone-cursors";
+  version = "1.2.9";
+
+  src = fetchFromGitHub {
+    owner = "ducakar";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "02c536mc17ccsrzgma366k3wlm02ivklvr30fafxl981zgghlii4";
+  };
+
+  nativeBuildInputs = [ icon-slicer xcursorgen ];
+
+  makeFlags = [ "DESTDIR=$(out)" ];
+
+  meta = with lib; {
+    description = "Clean and sharp X11/Wayland cursor theme";
+    homepage = "https://www.gnome-look.org/p/999999/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ zaninime ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/orchis-theme/default.nix b/nixpkgs/pkgs/data/themes/orchis-theme/default.nix
new file mode 100644
index 000000000000..351c1c22207c
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/orchis-theme/default.nix
@@ -0,0 +1,67 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gtk3
+, gnome-themes-extra
+, gtk-engine-murrine
+, sassc
+, border-radius ? null # Suggested: 2 < value < 16
+, tweaks ? [ ] # can be "solid" "compact" "black" "primary" "macos" "submenu" "nord|dracula"
+, withWallpapers ? false
+}:
+
+let
+  pname = "orchis-theme";
+
+  validTweaks = [ "solid" "compact" "black" "primary" "macos" "submenu" "nord" "dracula" ];
+
+  nordXorDracula = with builtins; lib.assertMsg (!(elem "nord" tweaks) || !(elem "dracula" tweaks)) ''
+    ${pname}: dracula and nord cannot be mixed. Tweaks ${toString tweaks}
+  '';
+in
+
+assert nordXorDracula;
+lib.checkListOfEnum "${pname}: theme tweaks" validTweaks tweaks
+
+stdenvNoCC.mkDerivation
+rec {
+  inherit pname;
+  version = "2023-10-20";
+
+  src = fetchFromGitHub {
+    repo = "Orchis-theme";
+    owner = "vinceliuice";
+    rev = version;
+    hash = "sha256-GhSzTtbuvbAuXxKNm29sJX5kXE2s2jMDB6Ww6Q7GNSo=";
+  };
+
+  nativeBuildInputs = [ gtk3 sassc ];
+
+  buildInputs = [ gnome-themes-extra ];
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  preInstall = ''
+    mkdir -p $out/share/themes
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    bash install.sh -d $out/share/themes -t all \
+      ${lib.optionalString (tweaks != []) "--tweaks " + builtins.toString tweaks} \
+      ${lib.optionalString (border-radius != null) ("--round " + builtins.toString border-radius + "px")}
+    ${lib.optionalString withWallpapers ''
+      mkdir -p $out/share/backgrounds
+      cp src/wallpaper/{1080p,2k,4k}.jpg $out/share/backgrounds
+    ''}
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A Material Design theme for GNOME/GTK based desktop environments.";
+    homepage = "https://github.com/vinceliuice/Orchis-theme";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.fufexan ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/orion/default.nix b/nixpkgs/pkgs/data/themes/orion/default.nix
new file mode 100644
index 000000000000..93ea3633fb5a
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/orion/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenv, fetchFromGitHub, gtk-engine-murrine }:
+
+stdenv.mkDerivation rec {
+  pname = "orion";
+  version = "1.5";
+
+  src = fetchFromGitHub {
+    owner = "shimmerproject";
+    repo = "Orion";
+    rev = "refs/tags/v${version}";
+    sha256 = "1116yawv3fspkiq1ykk2wj0gza3l04b5nhldy0bayzjaj0y6fd89";
+  };
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  installPhase = ''
+    mkdir -p $out/share/themes/orion
+    cp -r gtk-2.0 gtk-3.0 metacity-1 openbox-3 xfwm4 $out/share/themes/orion
+  '';
+
+  meta = {
+    homepage = "https://github.com/shimmerproject/Orion";
+    license = lib.licenses.gpl3Plus;
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/paper-gtk/default.nix b/nixpkgs/pkgs/data/themes/paper-gtk/default.nix
new file mode 100644
index 000000000000..e7c9179678f0
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/paper-gtk/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, gtk_engines }:
+
+stdenv.mkDerivation {
+  version = "2016-08-16";
+  pname = "paper-gtk-theme";
+
+  src = fetchFromGitHub {
+    owner = "snwh";
+    repo = "paper-gtk-theme";
+    rev = "f75724fd76fd2e5681a367cca246a51f845320c3";
+    sha256 = "0dqllzjk9ggnbh8vvy2c81p3wq6cj73r30hk7gqhrn8i91w8p896";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+
+  buildInputs = [ gtk_engines ];
+
+  postPatch = ''
+    substituteInPlace Makefile.am --replace '$(DESTDIR)'/usr $out
+  '';
+
+  preferLocalBuild = true;
+
+  meta = with lib; {
+    description = "A modern desktop theme suite featuring a mostly flat with a minimal use of shadows for depth";
+    homepage = "https://snwh.org/paper";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.simonvandel maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/pitch-black/default.nix b/nixpkgs/pkgs/data/themes/pitch-black/default.nix
new file mode 100644
index 000000000000..95037f90239e
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/pitch-black/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation rec{
+  pname = "pitch-black";
+  version = "unstable-2019-07-23";
+
+  src = fetchFromGitHub {
+    repo = pname;
+    owner = "freefreeno";
+    rev = "d8039341419aef1157c030bf3d9237bd926e0b95";
+    hash = "sha256-Rn3ZMBD6srIkYFNN3HT5JFP46Akodmeqz5tbV2/2ZDA=";
+  };
+
+  dontBuild = true;
+
+  installPhase = ''
+    rm LICENSE README.md
+    mkdir -p $out/share
+    mv GTK $out/share/themes
+    mv * $out/share
+  '';
+
+  meta = with lib; {
+    description = "A dark plasma theme built with usability in mind";
+    homepage = "https://github.com/freefreeno/Pitch-Black";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.pasqui23 ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/plano/default.nix b/nixpkgs/pkgs/data/themes/plano/default.nix
new file mode 100644
index 000000000000..c321dc235c49
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/plano/default.nix
@@ -0,0 +1,46 @@
+{ lib, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, gdk-pixbuf
+, gtk_engines
+, gtk-engine-murrine
+, librsvg
+, sassc
+}:
+
+stdenv.mkDerivation rec {
+  pname = "plano-theme";
+  version = "4.0";
+
+  src = fetchFromGitHub {
+    owner = "lassekongo83";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-slGr2nsdKng6zaVDeXWFAWKIxZbcnOLU6RH6wM0293E=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    sassc
+  ];
+
+  buildInputs = [
+    gdk-pixbuf
+    gtk_engines
+    librsvg
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  meta = with lib; {
+    description = "Flat theme for GNOME and Xfce";
+    homepage = "https://github.com/lassekongo83/plano-theme";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/plasma-overdose-kde-theme/default.nix b/nixpkgs/pkgs/data/themes/plasma-overdose-kde-theme/default.nix
new file mode 100644
index 000000000000..dc80c669804a
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/plasma-overdose-kde-theme/default.nix
@@ -0,0 +1,38 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation {
+  pname = "plasma-overdose-kde-theme";
+  version = "unstable-2022-05-30";
+
+  src = fetchFromGitHub {
+    owner = "Notify-ctrl";
+    repo = "Plasma-Overdose";
+    rev = "d8bf078b4819885d590db27cd1d25d8f4f08fe4c";
+    sha256 = "187f6rlvb2wf5sj3mgr69mfwh9fpqchw4yg6nzv54l98msmxc4h0";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share
+    mv colorschemes $out/share/color-schemes
+    mv plasma $out/share/plasma
+
+    mkdir -p $out/share/aurorae
+    mv aurorae $out/share/aurorae/themes
+
+    mkdir -p $out/share/icons/Plasma-Overdose
+    mv cursors/index.theme $out/share/icons/Plasma-Overdose/cursor.theme
+    mv cursors/cursors $out/share/icons/Plasma-Overdose/cursors
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Cute KDE theme inspired by the game Needy Girl Overdose";
+    homepage = "https://github.com/Notify-ctrl/Plasma-Overdose";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ takagiy ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/plata/default.nix b/nixpkgs/pkgs/data/themes/plata/default.nix
new file mode 100644
index 000000000000..0e7d88a7883c
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/plata/default.nix
@@ -0,0 +1,88 @@
+{ lib, stdenv, fetchFromGitLab, autoreconfHook, pkg-config, parallel
+, sassc, inkscape, libxml2, glib, gtk_engines, gtk-engine-murrine
+, cinnamonSupport ? true
+, gnomeFlashbackSupport ? true
+, gnomeShellSupport ? true
+, openboxSupport ? true
+, xfceSupport ? true
+, mateSupport ? true, gtk3, marco
+, gtkNextSupport ? false
+, plankSupport ? false
+, steamSupport ? false
+, telegramSupport ? false, zip
+, tweetdeckSupport ? false
+, selectionColor ? null # Primary color for 'selected-items' (Default: #3F51B5 = Indigo500)
+, accentColor ? null # Secondary color for notifications and OSDs (Default: #7986CB = Indigo300)
+, suggestionColor ? null # Secondary color for 'suggested' buttons (Default: #673AB7 = DPurple500)
+, destructionColor ? null # Tertiary color for 'destructive' buttons (Default: #F44336 = Red500)
+}:
+
+stdenv.mkDerivation rec {
+  pname = "plata-theme";
+  version = "0.9.9";
+
+  src = fetchFromGitLab {
+    owner = "tista500";
+    repo = "plata-theme";
+    rev = version;
+    sha256 = "1iwvlv9qcrjyfbzab00vjqafmp3vdybz1hi02r6lwbgvwyfyrifk";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkg-config
+    parallel
+    sassc
+    inkscape
+    libxml2
+    glib
+  ]
+  ++ lib.optionals mateSupport [ gtk3 marco ]
+  ++ lib.optional telegramSupport zip;
+
+  buildInputs = [ gtk_engines ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  postPatch = "patchShebangs .";
+
+  configureFlags =
+    let
+      inherit (lib) enableFeature optional;
+      withOptional = value: feat: optional (value != null) "--with-${feat}=${value}";
+    in [
+      "--enable-parallel"
+      (enableFeature cinnamonSupport "cinnamon")
+      (enableFeature gnomeFlashbackSupport "flashback")
+      (enableFeature gnomeShellSupport "gnome")
+      (enableFeature openboxSupport "openbox")
+      (enableFeature xfceSupport "xfce")
+      (enableFeature mateSupport "mate")
+      (enableFeature gtkNextSupport "gtk_next")
+      (enableFeature plankSupport "plank")
+      (enableFeature steamSupport "airforsteam")
+      (enableFeature telegramSupport "telegram")
+      (enableFeature tweetdeckSupport "tweetdeck")
+    ]
+    ++ (withOptional selectionColor "selection_color")
+    ++ (withOptional accentColor "accent_color")
+    ++ (withOptional suggestionColor "suggestion_color")
+    ++ (withOptional destructionColor "destruction_color");
+
+  postInstall = ''
+    for dest in $out/share/gtksourceview-{3.0,4}/styles; do
+      mkdir -p $dest
+      cp $out/share/themes/Plata-{Noir,Lumine}/gtksourceview/*.xml $dest
+    done
+  '';
+
+  meta = with lib; {
+    description = "A GTK theme based on Material Design Refresh";
+    homepage = "https://gitlab.com/tista500/plata-theme";
+    license = with licenses; [ gpl2 cc-by-sa-40 ];
+    platforms = platforms.linux;
+    maintainers = [ maintainers.tadfisher ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/pop-gtk/default.nix b/nixpkgs/pkgs/data/themes/pop-gtk/default.nix
new file mode 100644
index 000000000000..de2b92be05f2
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/pop-gtk/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, sassc
+, gtk3
+, inkscape
+, optipng
+, gtk-engine-murrine
+, gdk-pixbuf
+, librsvg
+, python3
+}:
+
+stdenv.mkDerivation rec {
+  pname = "pop-gtk-theme";
+  version = "2021-08-19";
+
+  src = fetchFromGitHub {
+    owner = "pop-os";
+    repo = "gtk-theme";
+    rev = "6615e4510485c5dc0b379746acc40f538d987c86";
+    sha256 = "16h03x2m4j4hfwp7pdmw1navcy5q7di38jvigfgf263wajyxbznr";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    sassc
+    gtk3
+    inkscape
+    optipng
+    python3
+  ];
+
+  buildInputs = [
+    gdk-pixbuf
+    librsvg
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  postPatch = ''
+    patchShebangs .
+
+    for file in $(find -name render-\*.sh); do
+      substituteInPlace "$file" \
+        --replace 'INKSCAPE="/usr/bin/inkscape"' \
+                  'INKSCAPE="${inkscape}/bin/inkscape"' \
+        --replace 'OPTIPNG="/usr/bin/optipng"' \
+                  'OPTIPNG="${optipng}/bin/optipng"'
+    done
+  '';
+
+  meta = with lib; {
+    description = "System76 Pop GTK+ Theme";
+    homepage = "https://github.com/pop-os/gtk-theme";
+    license = with licenses; [ gpl3 lgpl21 cc-by-sa-40 ];
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/qogir-kde/default.nix b/nixpkgs/pkgs/data/themes/qogir-kde/default.nix
new file mode 100644
index 000000000000..1dd3deba8dff
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/qogir-kde/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, kdeclarative
+, plasma-framework
+, plasma-workspace
+, gitUpdater
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "qogir-kde";
+  version = "unstable-2023-10-20";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = "1cfe8da54e6f76d5ce0d2234dcb4f5186431edb3";
+    hash = "sha256-Ts8cS7dH8RkfRgWvzDKLCC2G6Hsnvx0NAGstfxMIt+Y=";
+  };
+
+  # Propagate sddm theme dependencies to user env otherwise sddm does
+  # not find them. Putting them in buildInputs is not enough.
+  propagatedUserEnvPkgs = [
+    kdeclarative.bin
+    plasma-framework
+    plasma-workspace
+  ];
+
+  postPatch = ''
+    patchShebangs install.sh
+
+    substituteInPlace install.sh \
+      --replace '$HOME/.local' $out \
+      --replace '$HOME/.config' $out/share
+
+    substituteInPlace sddm/*/Main.qml \
+      --replace /usr $out
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/plasma/plasmoids
+
+    name= HOME="$TMPDIR" ./install.sh --dest $out/share/themes
+
+    mkdir -p $out/share/sddm/themes
+    cp -a sddm/Qogir $out/share/sddm/themes/
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "A flat Design theme for KDE Plasma desktop";
+    homepage = "https://github.com/vinceliuice/Qogir-kde";
+    license = licenses.gpl3Only;
+    platforms = platforms.all;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/qogir/default.nix b/nixpkgs/pkgs/data/themes/qogir/default.nix
new file mode 100644
index 000000000000..e435ce549450
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/qogir/default.nix
@@ -0,0 +1,86 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, gitUpdater
+, gdk-pixbuf
+, gnome-themes-extra
+, gtk-engine-murrine
+, jdupes
+, librsvg
+, sassc
+, which
+, themeVariants ? [] # default: blue
+, colorVariants ? [] # default: all
+, tweaks ? []
+}:
+
+let
+  pname = "qogir-theme";
+
+in
+lib.checkListOfEnum "${pname}: theme variants" [ "default" "manjaro" "ubuntu" "all" ] themeVariants
+lib.checkListOfEnum "${pname}: color variants" [ "standard" "light" "dark" ] colorVariants
+lib.checkListOfEnum "${pname}: tweaks" [ "image" "square" "round" ] tweaks
+
+stdenv.mkDerivation rec {
+  inherit pname;
+  version = "2023-05-24";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = version;
+    sha256 = "L19pbmJJFr1xi4ZTp0ocxmdMvWmtkK2zquOFfbV+P5Q=";
+  };
+
+  nativeBuildInputs = [
+    jdupes
+    sassc
+    which
+  ];
+
+  buildInputs = [
+    gdk-pixbuf # pixbuf engine for Gtk2
+    gnome-themes-extra # adwaita engine for Gtk2
+    librsvg # pixbuf loader for svg
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine # murrine engine for Gtk2
+  ];
+
+  postPatch = ''
+    patchShebangs install.sh clean-old-theme.sh
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/themes
+
+    name= HOME="$TMPDIR" ./install.sh \
+      ${lib.optionalString (themeVariants != []) "--theme " + builtins.toString themeVariants} \
+      ${lib.optionalString (colorVariants != []) "--color " + builtins.toString colorVariants} \
+      ${lib.optionalString (tweaks != []) "--tweaks " + builtins.toString tweaks} \
+      --dest $out/share/themes
+
+    mkdir -p $out/share/doc/${pname}
+    cp -a src/firefox $out/share/doc/${pname}
+
+    rm $out/share/themes/*/{AUTHORS,COPYING}
+
+    jdupes --quiet --link-soft --recurse $out/share
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Flat Design theme for GTK based desktop environments";
+    homepage = "https://github.com/vinceliuice/Qogir-theme";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/qtcurve/default.nix b/nixpkgs/pkgs/data/themes/qtcurve/default.nix
new file mode 100644
index 000000000000..0b639133a4a7
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/qtcurve/default.nix
@@ -0,0 +1,69 @@
+{ lib, fetchFromGitHub, cmake, extra-cmake-modules, pkg-config, mkDerivation
+, gtk2Support ? true, gtk2
+, qtbase, qtsvg, qtx11extras # Toolkit dependencies
+, karchive, kconfig, kconfigwidgets, kio, frameworkintegration
+, kguiaddons, ki18n, kwindowsystem, kdelibs4support, kiconthemes
+, libpthreadstubs, pcre, libXdmcp, libX11, libXau # X11 dependencies
+, fetchpatch
+}:
+
+mkDerivation rec {
+  pname = "qtcurve";
+  version = "1.9.1";
+  src = fetchFromGitHub {
+    owner = "KDE";
+    repo = "qtcurve";
+    rev = version;
+    sha256 = "XP9VTeiVIiMm5mkXapCKWxfcvaYCkhY3S5RXZNR3oWo=";
+  };
+
+  patches = [
+    # Remove unnecessary constexpr, this is not allowed in C++14
+    (fetchpatch {
+      url = "https://github.com/KDE/qtcurve/commit/ee2228ea2f18ac5da9b434ee6089381df815aa94.patch";
+      sha256 = "1vz5frsrsps93awn84gk8d7injrqfcyhc1rji6s0gsgsp5z9sl34";
+    })
+    # Fix build with Qt5.15
+    (fetchpatch {
+      url = "https://github.com/KDE/qtcurve/commit/44e2a35ebb164dcab0bad1a9158b1219a3ff6504.patch";
+      sha256 = "5I2fTxKRJX0cJcyUvYHWZx369FKk6ti9Se7AfYmB9ek=";
+    })
+  ];
+
+  nativeBuildInputs = [ cmake extra-cmake-modules pkg-config ];
+
+  buildInputs = [
+    qtbase qtsvg qtx11extras
+    karchive kconfig kconfigwidgets kio kiconthemes kguiaddons ki18n
+    kwindowsystem kdelibs4support frameworkintegration
+    libpthreadstubs
+    pcre
+    libXdmcp libX11 libXau
+  ] ++ lib.optional gtk2Support gtk2;
+
+  preConfigure = ''
+    for i in qt5/CMakeLists.txt qt5/config/CMakeLists.txt
+    do
+      substituteInPlace $i \
+        --replace "{_Qt5_PLUGIN_INSTALL_DIR}" "{KDE_INSTALL_QTPLUGINDIR}"
+    done
+    substituteInPlace CMakeLists.txt \
+      --replace \$\{GTK2_PREFIX\} $out
+    substituteInPlace gtk2/style/CMakeLists.txt \
+      --replace \$\{GTK2_LIBDIR\} $out/lib
+    patchShebangs tools/gen-version.sh
+  '';
+
+  configureFlags = [
+    "-DENABLE_GTK2=${if gtk2Support then "ON" else "OFF"}"
+    "-DENABLE_QT4=OFF"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/QtCurve/qtcurve";
+    description = "Widget styles for Qt5/Plasma 5 and gtk2";
+    platforms = platforms.linux;
+    license = licenses.lgpl21Plus;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/rose-pine-gtk/default.nix b/nixpkgs/pkgs/data/themes/rose-pine-gtk/default.nix
new file mode 100644
index 000000000000..d211a99ef080
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/rose-pine-gtk/default.nix
@@ -0,0 +1,53 @@
+{ stdenvNoCC
+, lib
+, fetchFromGitHub
+, gnome-themes-extra
+, gtk-engine-murrine
+, gtk_engines
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "rose-pine-gtk-theme";
+  version = "unstable-2022-09-01";
+
+  src = fetchFromGitHub {
+    owner = "rose-pine";
+    repo = "gtk";
+    rev = "7a4c40989fd42fd8d4a797f460c79fc4a085c304";
+    sha256 = "0q74wjyrsjyym770i3sqs071bvanwmm727xzv50wk6kzvpyqgi67";
+  };
+
+  buildInputs = [
+    gnome-themes-extra # adwaita engine for Gtk2
+    gtk_engines # pixmap engine for Gtk2
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine # murrine engine for Gtk2
+  ];
+
+  # avoid the makefile which is only for theme maintainers
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/themes/rose-pine{,-dawn,-moon}/gtk-4.0
+
+    variants=("rose-pine" "rose-pine-dawn" "rose-pine-moon")
+    for n in "''${variants[@]}"; do
+      cp -r $src/gtk3/"''${n}"-gtk/* $out/share/themes/"''${n}"
+      cp -r $src/gtk4/"''${n}".css $out/share/themes/"''${n}"/gtk-4.0/gtk.css
+    done
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Rosé Pine theme for GTK";
+    homepage = "https://github.com/rose-pine/gtk";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [romildo the-argus];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/shades-of-gray/default.nix b/nixpkgs/pkgs/data/themes/shades-of-gray/default.nix
new file mode 100644
index 000000000000..e4c4cfb3ba51
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/shades-of-gray/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenv, fetchFromGitHub, gtk_engines, gtk-engine-murrine }:
+
+stdenv.mkDerivation rec {
+  pname = "shades-of-gray-theme";
+  version = "1.3.0";
+
+  src = fetchFromGitHub {
+    owner = "WernerFP";
+    repo = pname;
+    rev = version;
+    sha256 = "13ydym0i3032g5dyrnl5wxpvxv57b43q7iaq5achpmaixgn58gs8";
+  };
+
+  buildInputs = [ gtk_engines ];
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  installPhase = ''
+    mkdir -p $out/share/themes
+    cp -a Shades-of-gray* $out/share/themes/
+  '';
+
+  meta = with lib; {
+    description = "Flat dark GTK theme with ergonomic contrasts";
+    homepage = "https://github.com/WernerFP/Shades-of-gray-theme";
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/sierra/default.nix b/nixpkgs/pkgs/data/themes/sierra/default.nix
new file mode 100644
index 000000000000..e87f64661419
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/sierra/default.nix
@@ -0,0 +1,74 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, gdk-pixbuf
+, gtk-engine-murrine
+, jdupes
+, librsvg
+, libxml2
+, buttonVariants ? [] # default to all
+, colorVariants ? [] # default to all
+, opacityVariants ? [] # default to all
+, sizeVariants ? [] # default to all
+}:
+
+let
+  pname = "sierra-gtk-theme";
+in
+lib.checkListOfEnum "${pname}: button variants" [ "standard" "alt" ] buttonVariants
+lib.checkListOfEnum "${pname}: color variants" [ "light" "dark" ] colorVariants
+lib.checkListOfEnum "${pname}: opacity variants" [ "standard" "solid" ] opacityVariants
+lib.checkListOfEnum "${pname}: size variants" [ "standard" "compact" ] sizeVariants
+
+stdenv.mkDerivation {
+  inherit pname;
+  version = "unstable-2021-05-24";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = "05899001c4fc2fec87c4d222cb3997c414e0affd";
+    sha256 = "174l5mryc34ma1r42pk6572c6i9hmzr9vj1a6w06nqz5qcfm1hds";
+  };
+
+  nativeBuildInputs = [
+    jdupes
+    libxml2
+  ];
+
+  buildInputs = [
+    gdk-pixbuf
+    librsvg
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  installPhase = ''
+    runHook preInstall
+
+    patchShebangs install.sh
+
+    mkdir -p $out/share/themes
+    name= ./install.sh --dest $out/share/themes \
+      ${lib.optionalString (buttonVariants != []) "--alt " + builtins.toString buttonVariants} \
+      ${lib.optionalString (colorVariants != []) "--color " + builtins.toString colorVariants} \
+      ${lib.optionalString (opacityVariants != []) "--opacity " + builtins.toString opacityVariants} \
+      ${lib.optionalString (sizeVariants != []) "--flat " + builtins.toString sizeVariants}
+
+    # Replace duplicate files with hardlinks to the first file in each
+    # set of duplicates, reducing the installed size in about 79%
+    jdupes -L -r $out/share
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A Mac OSX like theme for GTK based desktop environments";
+    homepage = "https://github.com/vinceliuice/Sierra-gtk-theme";
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/skeu/default.nix b/nixpkgs/pkgs/data/themes/skeu/default.nix
new file mode 100644
index 000000000000..d8b0c1896572
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/skeu/default.nix
@@ -0,0 +1,46 @@
+{ lib, stdenv
+, fetchFromGitHub
+, gdk-pixbuf
+, gtk-engine-murrine
+, gtk_engines
+, librsvg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "skeu";
+  version = "0.5.1";
+
+  src = fetchFromGitHub {
+    owner = "darkomarko42";
+    repo = pname;
+    rev = version;
+    sha256 = "0lbl09p0h493ya978fh7cib68qlmxfxahmbj0mpa3b65ynxda645";
+  };
+
+  buildInputs = [
+    gdk-pixbuf
+    gtk_engines
+    librsvg
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes
+    cp -a Skeu* $out/share/themes
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "GTK theme with skeuomorphism design";
+    homepage = "https://www.pling.com/p/1363834/";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/snowblind/default.nix b/nixpkgs/pkgs/data/themes/snowblind/default.nix
new file mode 100644
index 000000000000..d36fe2324421
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/snowblind/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenv, fetchFromGitLab, gtk-engine-murrine }:
+
+stdenv.mkDerivation rec {
+  pname = "snowblind";
+  version = "2020-06-07";
+
+  src = fetchFromGitLab {
+    domain = "www.opencode.net";
+    owner = "ju1464";
+    repo = pname;
+    rev = "88d626b204e19d1730836289a1c0d83efcf247d0";
+    sha256 = "0admiqwdc0rvl8zxs0b2qyvsi8im7lrpsygm8ky8ymyf7alkw0gd";
+  };
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  installPhase = ''
+    mkdir -p $out/share/themes
+    cp -a Snowblind* $out/share/themes
+    rm $out/share/themes/*/{COPYING,CREDITS}
+  '';
+
+  meta = with lib; {
+    description = "Smooth blue theme based on Materia Design";
+    homepage = "https://www.opencode.net/ju1464/Snowblind";
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/solarc/default.nix b/nixpkgs/pkgs/data/themes/solarc/default.nix
new file mode 100644
index 000000000000..a6ae8ce2e914
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/solarc/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenv, fetchFromGitHub, autoconf, automake, pkg-config,
+  gtk-engine-murrine, gtk3
+}:
+
+stdenv.mkDerivation {
+  pname = "solarc-gtk-theme";
+  version = "1.0.2";
+
+  src = fetchFromGitHub {
+    owner = "schemar";
+    repo = "solarc-theme";
+    rev = "d1eb117325b8e5085ecaf78df2eb2413423fc643";
+    sha256 = "005b66whyxba3403yzykpnlkz0q4m154pxpb4jzcny3fggy9r70s";
+  };
+
+  nativeBuildInputs = [ autoconf automake pkg-config gtk3 ];
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine gtk3 ];
+
+  buildPhase = ''
+    ./autogen.sh --prefix=$out
+  '';
+
+  meta = with lib; {
+    description = "Solarized version of the Arc theme";
+    homepage = "https://github.com/schemar/solarc-theme";
+    license = licenses.gpl3;
+    maintainers = [ ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/stilo/default.nix b/nixpkgs/pkgs/data/themes/stilo/default.nix
new file mode 100644
index 000000000000..6401c0e28694
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/stilo/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenv, fetchFromGitHub, meson, ninja, sassc, gdk-pixbuf, librsvg, gtk_engines, gtk-engine-murrine }:
+
+stdenv.mkDerivation rec {
+  pname = "stilo-themes";
+  version = "4.0";
+
+  src = fetchFromGitHub {
+    owner = "lassekongo83";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-YKEDXrOAn7pGWb0VcOx7cKHnuX120yPzqtUVnzyLrDQ=";
+  };
+
+  nativeBuildInputs = [ meson ninja sassc ];
+
+  buildInputs = [ gdk-pixbuf librsvg gtk_engines ];
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  meta = with lib; {
+    description = "Minimalistic GTK, gnome shell and Xfce themes";
+    homepage = "https://github.com/lassekongo83/stilo-themes";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/sweet-nova/default.nix b/nixpkgs/pkgs/data/themes/sweet-nova/default.nix
new file mode 100644
index 000000000000..22a16fa9284d
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/sweet-nova/default.nix
@@ -0,0 +1,51 @@
+{ fetchFromGitHub
+, gitUpdater
+, lib
+, stdenvNoCC
+}:
+
+stdenvNoCC.mkDerivation {
+  pname = "sweet-nova";
+  version = "unstable-2023-09-30";
+
+  src = fetchFromGitHub {
+    owner = "EliverLara";
+    repo = "Sweet";
+    rev = "6e82150d7c3bb1e30ed9bd64de4d2ddd8e113205";
+    hash = "sha256-vy4SO1j4y/cUmbQJNqW1/EPJljEtaRrigYIg4yMKXr4=";
+  };
+
+  buildPhase = ''
+    runHook preBuild
+    cd kde
+    mkdir -p aurorae/themes
+    mv aurorae/Sweet-Dark aurorae/themes/Sweet-Dark
+    mv aurorae/Sweet-Dark-transparent aurorae/themes/Sweet-Dark-transparent
+    rm aurorae/.shade.svg
+    mv colorschemes color-schemes
+    mkdir -p plasma/look-and-feel
+    mv look-and-feel plasma/look-and-feel/com.github.eliverlara.sweet
+    mv sddm sddm-Sweet
+    mkdir -p sddm/themes
+    mv sddm-Sweet sddm/themes/Sweet
+    mv cursors icons
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    install -d $out/share
+    cp -r Kvantum aurorae color-schemes icons konsole plasma sddm $out/share
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "A dark and colorful, blurry theme for the KDE Plasma desktop";
+    homepage = "https://github.com/EliverLara/Sweet";
+    license = licenses.gpl3Only;
+    maintainers = [ maintainers.dr460nf1r3 ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/sweet/default.nix b/nixpkgs/pkgs/data/themes/sweet/default.nix
new file mode 100644
index 000000000000..3ffa3caf8ba8
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/sweet/default.nix
@@ -0,0 +1,51 @@
+{ lib, stdenv, fetchurl, unzip, gtk-engine-murrine }:
+
+stdenv.mkDerivation rec {
+  pname = "sweet";
+  version = "3.0";
+
+  srcs = [
+    (fetchurl {
+      url = "https://github.com/EliverLara/Sweet/releases/download/v${version}/Sweet-Ambar-Blue.zip";
+      sha256 = "sha256-6ZrjH5L7Yox7riR+2I7vVbFoG4k7xHGyOq1OnkllyiY";
+    })
+    (fetchurl {
+      url = "https://github.com/EliverLara/Sweet/releases/download/v${version}/Sweet-Ambar.zip";
+      sha256 = "sha256-FAbf682YJCCt8NKSdFoaFLwxLDU1aCcTgNdlybZtPMo=";
+    })
+    (fetchurl {
+      url = "https://github.com/EliverLara/Sweet/releases/download/v${version}/Sweet-Dark.zip";
+      sha256 = "sha256-t6fczOnKwi4B9hSFhHQaQ533o7MFL+7HPtUJ/p2CIXM=";
+    })
+    (fetchurl {
+      url = "https://github.com/EliverLara/Sweet/releases/download/v${version}/Sweet-mars.zip";
+      sha256 = "sha256-QGkkpUqkxGPM1DXrvToB3taajk7vK3rqibQF2M4N9i0=";
+    })
+    (fetchurl {
+      url = "https://github.com/EliverLara/Sweet/releases/download/v${version}/Sweet.zip";
+      sha256 = "sha256-1qVC2n7ypN1BFuSzBpbY7QzJUzF1anYNAVcMkNpGTMM";
+    })
+  ];
+
+  nativeBuildInputs = [ unzip ];
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  sourceRoot = ".";
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes/
+    cp -a Sweet* $out/share/themes/
+    rm $out/share/themes/*/{LICENSE,README*}
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Light and dark colorful Gtk3.20+ theme";
+    homepage = "https://github.com/EliverLara/Sweet";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ fuzen ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/tokyo-night-gtk/default.nix b/nixpkgs/pkgs/data/themes/tokyo-night-gtk/default.nix
new file mode 100644
index 000000000000..dc3273e695b1
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/tokyo-night-gtk/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, callPackage
+, runCommand
+, gtk-engine-murrine
+, gnome-themes-extra
+}:
+
+let
+  prefix = "tokyo-night-gtk";
+
+  packages = lib.mapAttrs' (type: content: {
+    name = type;
+
+    value = lib.mapAttrs' (variantName: variant: {
+      name = variantName;
+      value = callPackage ./generic.nix { inherit prefix type variantName variant; };
+    }) content;
+  }) (lib.importJSON ./variants.json);
+in packages // {
+  # Not using `symlinkJoin` because it's massively inefficient in this case
+  full = runCommand "${prefix}_full" {
+    preferLocalBuild = true;
+
+    propagatedUserEnvPkgs = [
+      gtk-engine-murrine
+      gnome-themes-extra
+    ];
+  } ''
+    mkdir -p $out/share/{icons,themes,${prefix}}
+
+    ${lib.concatStrings (lib.forEach (lib.attrValues (lib.attrsets.mergeAttrsList (lib.attrValues packages))) (variant:
+      ''
+        ln -s ${variant}/share/${variant.ptype}/Tokyonight-${variant.pvariant} $out/share/${variant.ptype}/Tokyonight-${variant.pvariant}
+        ln -s ${variant}/share/${prefix}/LICENSE $out/share/${prefix}/LICENSE 2>/dev/null || true
+      ''
+    ))}
+  '';
+}
diff --git a/nixpkgs/pkgs/data/themes/tokyo-night-gtk/generic.nix b/nixpkgs/pkgs/data/themes/tokyo-night-gtk/generic.nix
new file mode 100644
index 000000000000..35bf498666da
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/tokyo-night-gtk/generic.nix
@@ -0,0 +1,77 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, writeScript
+, gtk-engine-murrine
+, gnome-themes-extra
+, prefix ? ""
+, type ? ""
+, variantName ? ""
+, variant ? ""
+}:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "${prefix}_${type}-${variantName}";
+  version = "unstable-2023-05-30";
+
+  src = fetchFromGitHub {
+    owner = "Fausto-Korpsvart";
+    repo = "Tokyo-Night-GTK-Theme";
+    rev = "e9790345a6231cd6001f1356d578883fac52233a";
+    hash = "sha256-Q9UnvmX+GpvqSmTwdjU4hsEsYhA887wPqs5pyqbIhmc=";
+  };
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+    gnome-themes-extra
+  ];
+
+  dontPatch = true;
+  dontConfigure = true;
+  dontBuild = true;
+  dontFixup = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/{${type},${prefix}}
+    cp -a ${type}/Tokyonight-${variant} $out/share/${type}
+    cp -a LICENSE $out/share/${prefix}
+
+    runHook postInstall
+  '';
+
+  passthru = {
+    updateScript = writeScript "update.sh" ''
+      #!/usr/bin/env nix-shell
+      #!nix-shell -i bash -p curl common-updater-scripts tree jq
+      res="$(curl ''${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \
+        -sL "https://api.github.com/repos/${finalAttrs.src.owner}/${finalAttrs.src.repo}/commits/HEAD")"
+
+      rev="$(echo $res | jq '.sha' --raw-output)"
+      version="unstable-$(echo $res | jq '.commit | .author | .date' --raw-output | sed 's/T.*$//')"
+      update-source-version ${prefix}-variants.${type}.${variantName} "$version" "$rev" --ignore-same-hash
+
+      commonjq1='.[] .contents .[] | {(.name): .name} | walk(if type=="object" then with_entries(.key|=ascii_downcase) else . end)'
+      commonjq2='reduce inputs as $in (.; . + $in)'
+      commontree="-dJ -L 1 --noreport ${finalAttrs.src}"
+
+      echo $(tree $commontree/icons | jq "$commonjq1" | jq "$commonjq2" | jq '{icons: .}') \
+        $(tree $commontree/themes | jq "$commonjq1" | jq "$commonjq2" | jq '{themes: .}') | \
+        jq 'reduce inputs as $in (.; . + $in)' | sed "s/[tT]okyonight-//g" > \
+        "$(git rev-parse --show-toplevel)/pkgs/data/themes/${prefix}/variants.json"
+    '';
+
+    # For "full" in default.nix
+    ptype = type;
+    pvariant = variant;
+  };
+
+  meta = with lib; {
+    description = "A GTK theme based on the Tokyo Night colour palette";
+    homepage = "https://www.pling.com/p/1681315";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ garaiza-93 Madouura ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/themes/tokyo-night-gtk/variants.json b/nixpkgs/pkgs/data/themes/tokyo-night-gtk/variants.json
new file mode 100644
index 000000000000..6489d9c649de
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/tokyo-night-gtk/variants.json
@@ -0,0 +1,18 @@
+{
+  "icons": {
+    "dark": "Dark",
+    "dark-cyan": "Dark-Cyan",
+    "light": "Light",
+    "moon": "Moon"
+  },
+  "themes": {
+    "dark-b": "Dark-B",
+    "dark-bl": "Dark-BL",
+    "dark-b-lb": "Dark-B-LB",
+    "dark-bl-lb": "Dark-BL-LB",
+    "storm-b": "Storm-B",
+    "storm-bl": "Storm-BL",
+    "storm-b-lb": "Storm-B-LB",
+    "storm-bl-lb": "Storm-BL-LB"
+  }
+}
diff --git a/nixpkgs/pkgs/data/themes/ubuntu-themes/default.nix b/nixpkgs/pkgs/data/themes/ubuntu-themes/default.nix
new file mode 100644
index 000000000000..fb23141a64eb
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/ubuntu-themes/default.nix
@@ -0,0 +1,77 @@
+{ lib, stdenv
+, fetchurl
+, fetchpatch
+, gnome-icon-theme
+, gnome
+, gtk-engine-murrine
+, gtk3
+, hicolor-icon-theme
+, humanity-icon-theme
+, python3Packages
+}:
+
+stdenv.mkDerivation rec {
+  pname = "ubuntu-themes";
+  version = "20.10";
+
+  src = fetchurl {
+    url = "https://launchpad.net/ubuntu/+archive/primary/+files/${pname}_${version}.orig.tar.gz";
+    sha256 = "00frn2dd4kjhlmwkasrx4a820fwrg8f8hmiwh51m63bpj00vwn0r";
+  };
+
+  nativeBuildInputs = [
+    gtk3
+    python3Packages.python
+  ];
+
+  propagatedBuildInputs = [
+    gnome-icon-theme
+    gnome.adwaita-icon-theme
+    humanity-icon-theme
+    hicolor-icon-theme
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  dontDropIconThemeCache = true;
+
+  postPatch = ''
+    patchShebangs .
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/themes
+    cp -a Ambiance $out/share/themes
+    cp -a Radiance $out/share/themes
+
+    mkdir -p $out/share/icons
+    cp -a LoginIcons        $out/share/icons
+    cp -a suru-icons        $out/share/icons
+    cp -a ubuntu-mobile     $out/share/icons
+    cp -a ubuntu-mono-dark  $out/share/icons
+    cp -a ubuntu-mono-light $out/share/icons
+
+    mv $out/share/icons/{suru-icons,suru}
+
+    for theme in $out/share/icons/*; do
+      gtk-update-icon-cache $theme
+    done
+
+    mkdir -p $out/share/icons/hicolor/48x48/apps
+    cp -a distributor-logo.png $out/share/icons/hicolor/48x48/apps
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Ubuntu monochrome and Suru icon themes, Ambiance and Radiance themes, and Ubuntu artwork";
+    homepage = "https://launchpad.net/ubuntu-themes";
+    license = with licenses; [ cc-by-sa-40 gpl3 ];
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/utterly-nord-plasma/default.nix b/nixpkgs/pkgs/data/themes/utterly-nord-plasma/default.nix
new file mode 100644
index 000000000000..4fbb0f5b8a83
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/utterly-nord-plasma/default.nix
@@ -0,0 +1,63 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, breeze-icons
+, kdeclarative
+, kirigami2
+, plasma-framework
+, plasma-workspace
+}:
+
+stdenv.mkDerivation rec {
+  pname = "utterly-nord-plasma";
+  version = "2.1";
+
+  src = fetchFromGitHub {
+    owner = "HimDek";
+    repo = pname;
+    rev = "6d9ffe008f0bee47c8346c9a7ec71f206d999fd0";
+    hash = "sha256-B5pIwV0BHxDluKWKTy+xuBPaE3N6UOHXip1SIAm2kM8=";
+  };
+
+  propagatedUserEnvPkgs = [
+    breeze-icons
+    kdeclarative.bin
+    kirigami2
+    plasma-framework.bin
+    plasma-workspace
+  ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/{color-schemes,Kvantum,plasma/look-and-feel,sddm/themes,wallpapers,konsole}
+
+    cp -a look-and-feel $out/share/plasma/look-and-feel/Utterly-Nord
+    cp -a look-and-feel-solid $out/share/plasma/look-and-feel/Utterly-Nord-solid
+    cp -a look-and-feel-light $out/share/plasma/look-and-feel/Utterly-Nord-light
+    cp -a look-and-feel-light-solid $out/share/plasma/look-and-feel/Utterly-Nord-light-solid
+
+    cp -a *.colors $out/share/color-schemes/
+
+    cp -a wallpaper $out/share/wallpapers/Utterly-Nord
+
+    cp -a kvantum $out/share/Kvantum/Utterly-Nord
+    cp -a kvantum-solid $out/share/Kvantum/Utterly-Nord-Solid
+    cp -a kvantum-light $out/share/Kvantum/Utterly-Nord-Light
+    cp -a kvantum-light-solid $out/share/Kvantum/Utterly-Nord-Light-Solid
+
+    cp -a *.colorscheme $out/share/konsole/
+
+    cp -a sddm $out/share/sddm/themes/Utterly-Nord
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A Plasma theme with Nordic Colors, transparency, blur and round edges for UI elements";
+    homepage = "https://himdek.com/Utterly-Nord-Plasma/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.all;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/utterly-round-plasma-style/default.nix b/nixpkgs/pkgs/data/themes/utterly-round-plasma-style/default.nix
new file mode 100644
index 000000000000..40bdb2f71d88
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/utterly-round-plasma-style/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+}:
+
+stdenv.mkDerivation rec {
+  pname = "utterly-round-plasma-style";
+  version = "2.1";
+
+  src = fetchFromGitHub {
+    owner = "HimDek";
+    repo = pname;
+    rev = "c3677d5223286f69871f6745cdb3b71367229d40";
+    hash = "sha256-mlqRMz0cAZnnM4xE6p7fMzhGlqCQcM4FxmDlVnbGUgQ=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/{aurorae/themes,plasma/desktoptheme}
+
+    cp -a aurorae/dark/translucent $out/share/aurorae/themes/Utterly-Round-Dark
+    cp -a aurorae/dark/solid $out/share/aurorae/themes/Utterly-Round-Dark-Solid
+    cp -a aurorae/light/translucent $out/share/aurorae/themes/Utterly-Round-Light
+    cp -a aurorae/light/solid $out/share/aurorae/themes/Utterly-Round-Light-Solid
+
+    cp -a desktoptheme/translucent $out/share/plasma/desktoptheme/Utterly-Round
+    cp -a desktoptheme/solid $out/share/plasma/desktoptheme/Utterly-Round-Solid
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A rounded desktop theme and window borders for Plasma 5 that follows any color scheme";
+    homepage = "https://himdek.com/Utterly-Round-Plasma-Style/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.all;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/venta/default.nix b/nixpkgs/pkgs/data/themes/venta/default.nix
new file mode 100644
index 000000000000..1f739c660060
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/venta/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, gdk-pixbuf
+, gtk-engine-murrine
+, gtk_engines
+, librsvg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "venta";
+  version = "0.7.1";
+
+  src = fetchFromGitHub {
+    owner = "darkomarko42";
+    repo = pname;
+    rev = version;
+    sha256 = "14ckkvyarq1xmf48fh47by5h3jnkmksj2n4y6zvx3aw7pfg2jc51";
+  };
+
+  buildInputs = [
+    gdk-pixbuf
+    gtk_engines
+    librsvg
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes
+    cp -a Venta* $out/share/themes
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Gtk theme based on windows 10 style";
+    homepage = "https://www.pling.com/p/1386774/";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/vertex/default.nix b/nixpkgs/pkgs/data/themes/vertex/default.nix
new file mode 100644
index 000000000000..cff886440e32
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/vertex/default.nix
@@ -0,0 +1,37 @@
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, gtk-engine-murrine }:
+
+stdenv.mkDerivation rec {
+  pname = "theme-vertex";
+  version = "20170128";
+
+  src = fetchFromGitHub {
+    owner = "horst3180";
+    repo = "vertex-theme";
+    rev = version;
+    sha256 = "0c9mhrs95ahz37djrv176vn41ywvj26ilwmnr1h9171giv6hid98";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  configureFlags = [ "--disable-unity" ];
+
+  postInstall = ''
+    mkdir -p $out/share/plank/themes
+    cp -r extra/*-Plank $out/share/plank/themes
+
+    mkdir -p $out/share/doc/$pname/Chrome
+    cp -r extra/Chrome/*.crx $out/share/doc/$pname/Chrome
+    cp -r extra/Firefox $out/share/doc/$pname
+    cp AUTHORS README.md $out/share/doc/$pname/
+  '';
+
+  meta = with lib; {
+    inherit (src.meta) homepage;
+    description = "Theme for GTK 3, GTK 2, Gnome-Shell, and Cinnamon";
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/vimix/default.nix b/nixpkgs/pkgs/data/themes/vimix/default.nix
new file mode 100644
index 000000000000..1a49b5cff897
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/vimix/default.nix
@@ -0,0 +1,77 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, gnome-shell
+, gtk-engine-murrine
+, gtk_engines
+, jdupes
+, sassc
+, gitUpdater
+, themeVariants ? [] # default: doder (blue)
+, colorVariants ? [] # default: all
+, sizeVariants ? [] # default: standard
+, tweaks ? []
+}:
+
+let
+  pname = "vimix-gtk-themes";
+
+in
+lib.checkListOfEnum "${pname}: theme variants" [ "doder" "beryl" "ruby" "amethyst" "jade" "grey" "all" ] themeVariants
+lib.checkListOfEnum "${pname}: color variants" [ "standard" "light" "dark" ] colorVariants
+lib.checkListOfEnum "${pname}: size variants" [ "standard" "compact" "all" ] sizeVariants
+lib.checkListOfEnum "${pname}: tweaks" [ "flat" "grey" "mix" "translucent" ] tweaks
+
+stdenvNoCC.mkDerivation rec {
+  inherit pname;
+  version = "2023-09-09";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = version;
+    sha256 = "dfdPEJnSmD0eqzx4ysiGPp77Beo32l2Tz1qSrbShLlc=";
+  };
+
+  nativeBuildInputs = [
+    gnome-shell  # needed to determine the gnome-shell version
+    jdupes
+    sassc
+  ];
+
+  buildInputs = [
+    gtk_engines
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  postPatch = ''
+    patchShebangs install.sh
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes
+    name= HOME="$TMPDIR" ./install.sh \
+      ${lib.optionalString (themeVariants != []) "--theme " + builtins.toString themeVariants} \
+      ${lib.optionalString (colorVariants != []) "--color " + builtins.toString colorVariants} \
+      ${lib.optionalString (sizeVariants != []) "--size " + builtins.toString sizeVariants} \
+      ${lib.optionalString (tweaks != []) "--tweaks " + builtins.toString tweaks} \
+      --dest $out/share/themes
+    rm $out/share/themes/*/{AUTHORS,LICENSE}
+    jdupes --quiet --link-soft --recurse $out/share
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Flat Material Design theme for GTK based desktop environments";
+    homepage = "https://github.com/vinceliuice/vimix-gtk-themes";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/where-is-my-sddm-theme/default.nix b/nixpkgs/pkgs/data/themes/where-is-my-sddm-theme/default.nix
new file mode 100644
index 000000000000..13ea576b3fbf
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/where-is-my-sddm-theme/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, formats
+, stdenvNoCC
+, fetchFromGitHub
+, qtgraphicaleffects
+  /* An example of how you can override the background on the NixOS logo
+  *
+  *  environment.systemPackages = [
+  *    (pkgs.where-is-my-sddm-theme.override {
+  *      themeConfig.General = {
+  *        background = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
+  *        backgroundMode = "none";
+  *      };
+  *    })
+  *  ];
+  */
+, themeConfig ? null
+}:
+
+let
+  user-cfg = (formats.ini { }).generate "theme.conf.user" themeConfig;
+in
+
+stdenvNoCC.mkDerivation rec {
+  pname = "where-is-my-sddm-theme";
+  version = "1.5.1";
+
+  src = fetchFromGitHub {
+    owner = "stepanzubkov";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-T6b+rxjlxZCQ/KDaxBM8ZryA3n6a+3jo+J2nETBYslM=";
+  };
+
+  propagatedUserEnvPkgs = [ qtgraphicaleffects ];
+
+  installPhase = ''
+    mkdir -p $out/share/sddm/themes/
+    cp -r where_is_my_sddm_theme/ $out/share/sddm/themes/
+  '' + lib.optionalString (lib.isAttrs themeConfig) ''
+    ln -sf ${user-cfg} $out/share/sddm/themes/where_is_my_sddm_theme/theme.conf.user
+  '';
+
+  meta = with lib; {
+    description = "The most minimalistic SDDM theme among all themes";
+    homepage = "https://github.com/stepanzubkov/where-is-my-sddm-theme";
+    license = licenses.mit;
+    maintainers = with maintainers; [ name-snrl ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/whitesur-kde/default.nix b/nixpkgs/pkgs/data/themes/whitesur-kde/default.nix
new file mode 100644
index 000000000000..20dc5a66fe5e
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/whitesur-kde/default.nix
@@ -0,0 +1,63 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, kdeclarative
+, plasma-framework
+, plasma-workspace
+, gitUpdater
+}:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "whitesur-kde";
+  version = "unstable-2023-10-06";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = finalAttrs.pname;
+    rev = "2b4bcc76168bd8a4a7601188e177fa0ab485cdc8";
+    hash = "sha256-+Iooj8a7zfLhEWnjLEVoe/ebD9Vew5HZdz0wpWVZxA8=";
+  };
+
+  # Propagate sddm theme dependencies to user env otherwise sddm does
+  # not find them. Putting them in buildInputs is not enough.
+  propagatedUserEnvPkgs = [
+    kdeclarative.bin
+    plasma-framework
+    plasma-workspace
+  ];
+
+  postPatch = ''
+    patchShebangs install.sh
+
+    substituteInPlace install.sh \
+      --replace '$HOME/.config' $out/share \
+      --replace '$HOME/.local' $out \
+      --replace '"$HOME"/.Xresources' $out/doc/.Xresources
+
+    substituteInPlace sddm/*/Main.qml \
+      --replace /usr $out
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/doc
+
+    name= ./install.sh
+
+    mkdir -p $out/share/sddm/themes
+    cp -a sddm/WhiteSur $out/share/sddm/themes/
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "A MacOS big sur like theme for KDE Plasma desktop";
+    homepage = "https://github.com/vinceliuice/WhiteSur-kde";
+    license = licenses.gpl3Only;
+    platforms = platforms.all;
+    maintainers = [ maintainers.romildo ];
+  };
+})
diff --git a/nixpkgs/pkgs/data/themes/whitesur/default.nix b/nixpkgs/pkgs/data/themes/whitesur/default.nix
new file mode 100644
index 000000000000..fb9a63b21f1a
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/whitesur/default.nix
@@ -0,0 +1,101 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, gitUpdater
+, glib
+, gnome-shell
+, gnome-themes-extra
+, jdupes
+, libxml2
+, sassc
+, util-linux
+, altVariants ? [] # default: normal
+, colorVariants ? [] # default: all
+, opacityVariants ? [] # default: all
+, themeVariants ? [] # default: default (BigSur-like theme)
+, nautilusSize ? null # default: 200px
+, panelOpacity ? null # default: 15%
+, panelSize ? null # default: 32px
+}:
+
+let
+  pname = "whitesur-gtk-theme";
+  single = x: lib.optional (x != null) x;
+
+in
+lib.checkListOfEnum "${pname}: alt variants" [ "normal" "alt" "all" ] altVariants
+lib.checkListOfEnum "${pname}: color variants" [ "light" "dark" ] colorVariants
+lib.checkListOfEnum "${pname}: opacity variants" [ "normal" "solid" ] opacityVariants
+lib.checkListOfEnum "${pname}: theme variants" [ "default" "blue" "purple" "pink" "red" "orange" "yellow" "green" "grey" "all" ] themeVariants
+lib.checkListOfEnum "${pname}: nautilus sidebar minimum width" [ "default" "180" "220" "240" "260" "280" ] (single nautilusSize)
+lib.checkListOfEnum "${pname}: panel opacity" [ "default" "30" "45" "60" "75" ] (single panelOpacity)
+lib.checkListOfEnum "${pname}: panel size" [ "default" "smaller" "bigger" ] (single panelSize)
+
+stdenv.mkDerivation rec {
+  pname = "whitesur-gtk-theme";
+  version = "2023-10-13";
+
+  src = fetchFromGitHub {
+    owner = "vinceliuice";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-H8QdKCX6C36J7AfFd0VV9Rnm8LGXSfkxj5Yp2p+PduE=";
+  };
+
+  nativeBuildInputs = [
+    glib
+    gnome-shell
+    jdupes
+    libxml2
+    sassc
+    util-linux
+  ];
+
+  buildInputs = [
+    gnome-themes-extra # adwaita engine for Gtk2
+  ];
+
+  postPatch = ''
+    find -name "*.sh" -print0 | while IFS= read -r -d ''' file; do
+      patchShebangs "$file"
+    done
+
+    # Do not provide `sudo`, as it is not needed in our use case of the install script
+    substituteInPlace shell/lib-core.sh --replace '$(which sudo)' false
+
+    # Provides a dummy home directory
+    substituteInPlace shell/lib-core.sh --replace 'MY_HOME=$(getent passwd "''${MY_USERNAME}" | cut -d: -f6)' 'MY_HOME=/tmp'
+  '';
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/themes
+
+    ./install.sh  \
+      ${toString (map (x: "--alt " + x) altVariants)} \
+      ${toString (map (x: "--color " + x) colorVariants)} \
+      ${toString (map (x: "--opacity " + x) opacityVariants)} \
+      ${toString (map (x: "--theme " + x) themeVariants)} \
+      ${lib.optionalString (nautilusSize != null) ("--size " + nautilusSize)} \
+      ${lib.optionalString (panelOpacity != null) ("--panel-opacity " + panelOpacity)} \
+      ${lib.optionalString (panelSize != null) ("--panel-size " + panelSize)} \
+      --dest $out/share/themes
+
+    jdupes --quiet --link-soft --recurse $out/share
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "MacOS Big Sur like theme for Gnome desktops";
+    homepage = "https://github.com/vinceliuice/WhiteSur-gtk-theme";
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/yaru-remix/default.nix b/nixpkgs/pkgs/data/themes/yaru-remix/default.nix
new file mode 100644
index 000000000000..87056583b555
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/yaru-remix/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenv, fetchFromGitHub, meson, sassc, pkg-config, glib, ninja, python3, gtk3, gnome }:
+
+stdenv.mkDerivation rec {
+  pname = "yaru-remix";
+  version = "40";
+
+  src = fetchFromGitHub {
+    owner = "Muqtxdir";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0xilhw5gbxsyy80ixxgj0nw6w782lz9dsinhi24026li1xny804c";
+  };
+
+  nativeBuildInputs = [ meson sassc pkg-config glib ninja python3 ];
+  buildInputs = [ gtk3 gnome.gnome-themes-extra ];
+
+  dontDropIconThemeCache = true;
+
+  postPatch = "patchShebangs .";
+
+  meta = with lib; {
+    description = "Fork of the Yaru GTK theme";
+    homepage = "https://github.com/Muqtxdir/yaru-remix";
+    license = with licenses; [ cc-by-sa-40 gpl3Plus lgpl21Only lgpl3Only ];
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ hoppla20 ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/yaru/default.nix b/nixpkgs/pkgs/data/themes/yaru/default.nix
new file mode 100644
index 000000000000..1490b5db79d7
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/yaru/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, sassc
+, pkg-config
+, glib
+, ninja
+, python3
+, gtk3
+, gnome
+, gtk-engine-murrine
+, humanity-icon-theme
+, hicolor-icon-theme
+}:
+
+stdenv.mkDerivation rec {
+  pname = "yaru";
+  version = "23.10.0";
+
+  src = fetchFromGitHub {
+    owner = "ubuntu";
+    repo = "yaru";
+    rev = version;
+    hash = "sha256-+Szk77QeoM4PwusxKflTh83h16qz6Es6UwDXpbydJUE=";
+  };
+
+  nativeBuildInputs = [ meson sassc pkg-config glib ninja python3 ];
+  buildInputs = [ gtk3 gnome.gnome-themes-extra ];
+  propagatedBuildInputs = [ humanity-icon-theme hicolor-icon-theme ];
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  dontDropIconThemeCache = true;
+
+  postPatch = "patchShebangs .";
+
+  meta = with lib; {
+    description = "Ubuntu community theme 'yaru' - default Ubuntu theme since 18.10";
+    homepage = "https://github.com/ubuntu/yaru";
+    license = with licenses; [ cc-by-sa-40 gpl3Plus lgpl21Only lgpl3Only ];
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ moni amaxine ];
+  };
+}
diff --git a/nixpkgs/pkgs/data/themes/zuki/default.nix b/nixpkgs/pkgs/data/themes/zuki/default.nix
new file mode 100644
index 000000000000..d557e151d264
--- /dev/null
+++ b/nixpkgs/pkgs/data/themes/zuki/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenv, fetchFromGitHub, meson, ninja, sassc, gdk-pixbuf, librsvg, gtk_engines, gtk-engine-murrine }:
+
+stdenv.mkDerivation rec {
+  pname = "zuki-themes";
+  version = "4.0";
+
+  src = fetchFromGitHub {
+    owner = "lassekongo83";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1q026wa8xgyb6f5k7pqpm5zav30dbnm3b8w59as3sh8rhfgpbf80";
+  };
+
+  nativeBuildInputs = [ meson ninja sassc ];
+
+  buildInputs = [ gdk-pixbuf librsvg gtk_engines ];
+
+  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+  meta = with lib; {
+    description = "Themes for GTK, gnome-shell and Xfce";
+    homepage = "https://github.com/lassekongo83/zuki-themes";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}