# vim: set noet sw=2 ts=2 sts=2: {lib, pkgs, fetchfont, ...}: with pkgs; let github = path: "https://github.com/${path}"; googlefonts = path: github "/googlefonts/${path}"; fonts = { alegreya = fetchfont rec { pname = "Alegreya"; version = "2.008"; src = fetchurl { name = "${pname}-${version}.tar.gz"; hash = "sha256-RNrL48S2DCA7HWDwpV6/bBOYI/g/0jT5sHjs58sVZ24="; url = github "huertatipografica/${pname}/archive/refs/tags/v${version}.tar.gz"; }; }; alegreya_sans = fetchfont rec { pname = "Alegreya-Sans"; version = "2.008"; src = fetchurl { name = "${pname}-${version}.tar.gz"; hash = "sha256-6lRVctSeGOZ11rcqZ1TaNE4kucrMPSt2wesr+a5zpAI="; url = github "huertatipografica/${pname}/archive/refs/tags/v${version}.tar.gz"; }; }; fira_code = fetchfont rec { pname = "Fira-Code"; version = "6.2"; src = fetchurl { name = "${pname}-${version}.zip"; hash = "sha256-CUmRW6jrJNif2T0Qp/9iP0KDDXxf/D7L+WDk7K0+Pnk="; url = github "tonsky/FiraCode/releases/download/${version}/Fira_Code_v${version}.zip"; }; }; fira_mono = fetchfont rec { pname = "Fira-Mono"; version = "4.202"; src = fetchurl { name = "${pname}-${version}.tar.gz"; hash = "sha256-2GJpZXOH8UTXe6EgERJPMPQj9wZy4VdtwW+Ri7Ft3+Q="; url = github "mozilla/Fira/archive/refs/tags/${version}.tar.gz"; }; }; inconsolata = fetchfont rec { pname = "Inconsolata"; version = "3.000"; src = fetchurl { name = "${pname}-${version}.tar.gz"; hash = "sha256-8tjYumyqeFqWbvF5loIqsUupHsQjQxop4bbEsUvEzaU="; url = googlefonts "${pname}/archive/refs/tags/v${version}.tar.gz"; }; }; lato = fetchfont rec { pname = "Lato"; version = "2.000"; src = fetchurl { name = "${pname}-${version}.zip"; hash = "sha256-QrVOlsB+KZ2Wf8MifHvWOiDWz7Hcj9ba6DYoCR4gpbg="; url = "https://www.latofonts.com/download/lato2ofl-zip/"; }; }; libre_barcode = fetchfont rec { pname = "Libre-Barcode"; version = "1.008"; src = fetchurl { name = "${pname}-${version}.zip"; hash = "sha256-47ntjMcZR4j5ybGU2UAA5t4FTPvyAvTiDSKYGEdRDQU="; url = github "graphicore/librebarcode/releases/download/v${version}/LibreBarcode_v${version}.zip"; }; }; oswald = fetchfont rec { pname = "Oswald"; version = "4.004"; src = fetchurl { name = "${pname}-${version}.tar.gz"; hash = "sha256-XWiMR+0KU76RE7bP4q2urQGYpryqLJayXAEzrT1Gk2Y="; url = googlefonts "OswaldFont/archive/65c0044bd1e113993d193529361f02fa4fd7ad94.tar.gz"; }; }; source-code-pro = fetchfont rec { pname = "Source-Code-Pro"; version = "2.042"; srcs = let baseurl = github "adobe-fonts/source-code-pro/releases/download/2.042R-u%2F1.062R-i%2F1.026R-vf"; in [ (fetchurl { name = "${pname}-${version}-otf.zip"; hash = "sha256-dUouPruUWukF1yCsWJazs0rMlUbdZVHvlTaGl4hina4="; url = "${baseurl}/OTF-source-code-pro-2.042R-u_1.062R-i.zip"; }) # Totaly useless .woff/.woff2 files, because they convert .otf to .otf.woff and .ttf to .ttf.woff. So better to generate them self. #(fetchurl { name = "${pname}-${version}-woff.zip"; hash = "sha256-6pXBFpB7OgLb6QPbWsMuTbrNGD3Vj/S1oXUxLG3a8oo="; url = "${baseurl}/WOFF-source-code-pro-2.042R-u_1.062R-i_1.026Rvf.zip"; }) #(fetchurl { name = "${pname}-${version}-woff2.zip"; hash = "sha256-IYTB8rrEj099lSsBR9wOSAaf0ftKjDG4abcI78l402U="; url = "${baseurl}/WOFF2-source-code-pro-2.042R-u_1.062R-i_1.026Rvf.zip"; }) (fetchurl { name = "${pname}-${version}-vf.zip"; hash = "sha256-BmC6DNFHj5LPzyrXkLeqKfitstrxVZj0UqZa5hycn7E="; url = "${baseurl}/VF-source-code-VF-1.026R.zip"; }) ]; }; source-sans = fetchfont rec { pname = "Source-Sans"; version = "3.052"; srcs = let baseurl = github "adobe-fonts/source-sans/releases/download/${version}R/"; in [ (fetchurl { name = "${pname}-${version}.zip"; hash = "sha256-pOu96iCwjMvXvzZlqUYkVO790B2aYwcSnTs9RnKYEHQ="; url = "${baseurl}/OTF-source-sans-3.052R.zip"; }) (fetchurl { name = "${pname}-${version}-vf.zip"; hash = "sha256-2OKsNV4G5qDw4KCxrAwkUa+nB1hNe7nWsR755LdJkEw="; url = "${baseurl}/VF-source-sans-3.052R.zip"; }) ]; }; source-serif = fetchfont rec { pname = "Source-Serif"; version = "4.005"; src = stdenv.mkDerivation { pname = "Source-Serif"; version = "4.005"; nativeBuildInputs = [ coreutils ]; src = fetchzip { stripRoot=false; name = "${pname}-${version}.zip"; hash = "sha256-JVt+uJED/M2S2RBOXZ1th+aPLOuCNTl9jx6dC5cyMlQ="; url = github "adobe-fonts/source-serif/releases/download/${version}R/source-serif-${version}_Desktop.zip"; }; installPhase = '' mkdir -p "$out/" echo "================ src=$src" find $src -name \*.otf -print -exec cp -a \{\} "$out/" \; ''; }; #srcs = # let baseurl = github "adobe-fonts/source-serif/releases/download/${version}R/"; # in [ # (fetchurl { name = "${pname}-${version}.zip"; hash = "sha256-VJ/bj5poK9BpRCmGIUBJafbed8LkIv87gkSh3NagxCU="; url = "${baseurl}/source-serif-${version}_Desktop.zip"; }) # # Totaly useless .woff/.woff2 files, because they convert .otf to .otf.woff and .ttf to .ttf.woff. So better to generate them self. # #(fetchurl { name = "${pname}-${version}-woff.zip"; hash = "sha256-aHJU28beIClQaphvN7l+oxGUnf+pHIlAXPDueL8XqOA="; url = "${baseurl}/source-serif-${version}_WOFF.zip"; }) # #(fetchurl { name = "${pname}-${version}-woff2.zip"; hash = "sha256-rxDoDc0ilnSLBMuZF9ufe6CuZRARZf0vDBa5gS2avSg="; url = "${baseurl}/source-serif-${version}_WOFF2.zip"; }) # ]; }; rubik_dirt = fetchfont rec { pname = "Rubik-Dirt"; version = "2"; srcs = let baseurl = github "NaN-xyz/Rubik-Filtered/raw/7f47b7f79f903e1d6af9883da43a84928e02b816/dirt/fonts"; in [ (fetchurl { name = "${pname}-Regular.ttf"; hash = "sha256-nePZKOQ0pH7IXXWQEsig6/6rCGAHbupOOYmkfF4hMSM="; url = "${baseurl}/ttf/RubikDirt-Regular.ttf"; }) (fetchurl { name = "${pname}-Regular.woff2"; hash = "sha256-xh1jUaN5FRaU/omXT7U9T9Qhu+Cl/YddAJnSpgCOqYk="; url = "${baseurl}/webfonts/RubikDirt-Regular.woff2"; }) ]; }; wiener-norm = fetchfont rec { pname = "Wiener-Norm"; version = "1"; src = fetchurl { name = "wiener-norm.zip"; hash = "sha256-dvHTRIYGURNx+1NMX4ts0xlb/GgRguWFIC0NMiESjvc="; url = "http://www.horaczek.net/download/wiener_norm.zip"; }; }; }; in { all = fonts; } // fonts