push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,78 @@
{
fetchFromGitHub,
lib,
stdenv,
fontforge,
perl,
perlPackages,
}:
let
version = "2.37";
meta = {
description = "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; };
}

View File

@@ -0,0 +1,71 @@
{
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.7.2";
hash = "sha256-MaJG96kYj8ukJVyqOTDpkHH/eWr/ZlbVKk9AvJM7ub4=";
};
v7 = font-awesome {
version = "7.0.1";
hash = "sha256-ucKE4euZf7teosY+6X0W1wDOdnlW1SRcZhQdBvvOY1s=";
};
}

View File

@@ -0,0 +1,103 @@
{
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://web.archive.org/web/20221006174450/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://web.archive.org/web/20221006174450/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://web.archive.org/web/20221006174450/https://dn-works.com/ufas/";
};
};
in
lib.mapAttrs mkpkg fonts

View File

@@ -0,0 +1,80 @@
{
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 = "2.1.0";
src = fetchFromGitHub {
owner = "protesilaos";
repo = "iosevka-comfy";
rev = version;
sha256 = "sha256-z9OlxeD88HuPJF88CsAy3vd1SFpJF1qh5c/0AIeMA7o=";
};
privateBuildPlan = src.outPath + "/private-build-plans.toml";
makeIosevkaFont =
set:
let
superBuildNpmPackage = buildNpmPackage;
in
(iosevka.override {
inherit set privateBuildPlan;
buildNpmPackage =
args:
superBuildNpmPackage (
args
// {
pname = "iosevka-${set}";
inherit version;
src = fetchFromGitHub {
owner = "be5invis";
repo = "iosevka";
rev = "v31.9.1";
hash = "sha256-eAC4afBfHfiteYCzBNGFG2U/oCA7C5CdUlQVSO9Dg6E=";
};
npmDepsHash = "sha256-xwGR21+CpZRFdZYz8SQrSf1tkp3fjGudoMmP5TGgEe8=";
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 (
map (set: {
name = set;
value = makeIosevkaFont set;
}) sets
)

View File

@@ -0,0 +1,96 @@
{
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=";
};
}

View File

@@ -0,0 +1,144 @@
{
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

View File

@@ -0,0 +1,148 @@
{
lib,
stdenv,
unzip,
fetchurl,
}:
let
hashes = lib.importJSON ./hashes.json;
maple-font =
{
pname,
hash,
desc,
}:
stdenv.mkDerivation rec {
inherit pname;
version = "7.6";
src = fetchurl {
url = "https://github.com/subframe7536/Maple-font/releases/download/v${version}/${pname}.zip";
inherit hash;
};
# 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 ];
};
};
typeVariants = {
truetype = {
suffix = "TTF";
desc = "monospace TrueType";
};
truetype-autohint = {
suffix = "TTF-AutoHint";
desc = "monospace ttf autohint";
};
variable = {
suffix = "Variable";
desc = "monospace variable";
};
woff2 = {
suffix = "Woff2";
desc = "WOFF2.0";
};
opentype = {
suffix = "OTF";
desc = "OpenType";
};
NF = {
suffix = "NF";
desc = "Nerd Font";
};
NF-unhinted = {
suffix = "NF-unhinted";
desc = "Nerd Font unhinted";
};
CN = {
suffix = "CN";
desc = "monospace CN";
};
CN-unhinted = {
suffix = "CN-unhinted";
desc = "monospace CN unhinted";
};
NF-CN = {
suffix = "NF-CN";
desc = "Nerd Font CN";
};
NF-CN-unhinted = {
suffix = "NF-CN-unhinted";
desc = "Nerd Font CN unhinted";
};
};
ligatureVariants = {
No-Ligature = {
suffix = "NL";
desc = "No Ligature";
};
Normal-Ligature = {
suffix = "Normal";
desc = "Normal Ligature";
};
Normal-No-Ligature = {
suffix = "NormalNL";
desc = "Normal No Ligature";
};
};
combinedFonts =
lib.concatMapAttrs (
ligName: ligVariant:
lib.concatMapAttrs (
typeName: typeVariant:
let
pname = "MapleMono${ligVariant.suffix}-${typeVariant.suffix}";
in
{
"${ligVariant.suffix}-${typeVariant.suffix}" = maple-font {
inherit pname;
desc = "${ligVariant.desc} ${typeVariant.desc}";
hash = hashes.${pname};
};
}
) typeVariants
) ligatureVariants
// lib.mapAttrs (
_: value:
let
pname = "MapleMono-${value.suffix}";
in
maple-font {
inherit pname;
inherit (value) desc;
hash = hashes.${pname};
}
) typeVariants;
in
combinedFonts

View File

@@ -0,0 +1,46 @@
{
"MapleMono-CN-unhinted": "sha256-QnjRoW04WvGtgoKVm46U0Z0wImp2YVBdB/8LD37mfWk=",
"MapleMono-CN": "sha256-BF8VP6uZHgyuy/X0iie43jdJ6zyJUCXHlzHt6fOPEEQ=",
"MapleMono-NF-CN-unhinted": "sha256-8PSw/qGYXjpaazyY99bOQFbM+QOkJfizrmll8DTGwq8=",
"MapleMono-NF-CN": "sha256-q3wIvSszhOLyZkqvgvipQ2eEvG9K3Sf2o5hrpHS2vD8=",
"MapleMono-NF-unhinted": "sha256-7KEs6EtgfdO2DZIFGlHAWdIzKqKDaq7aRTG08HEYihw=",
"MapleMono-NF": "sha256-If/kKAFiyOs5NnxXeDOGsLSZRsCdhDmgOtP0SuN96pg=",
"MapleMono-OTF": "sha256-5XsHz8QsruS4oNfwazEfAWXSPr+mX+a5ayUPe5DF/nc=",
"MapleMono-TTF-AutoHint": "sha256-gmBHcBQk8GuWhdVF+TCB23Bh0raB5HVSwHNacVOScWM=",
"MapleMono-TTF": "sha256-n4kivPRcI80jEj7dRX3/SKyWHiBiiXXoY4jEV7eCSSI=",
"MapleMono-Variable": "sha256-8US2XL/RTIeWHatHeLv7/yWib5Vv7rdOyNC5qosRXw0=",
"MapleMono-Woff2": "sha256-f6khGfztBDMX8q7o9VlvLA2YikPoNDqxCf0KVxAR498=",
"MapleMonoNL-CN-unhinted": "sha256-qmtqUCoaWpqGIfIGOBlUU2WIm6vUOUP3S/SyUCCQSSE=",
"MapleMonoNL-CN": "sha256-rs5WcOBR9SYVsCFog6CY04RstSfZmbwo4HuwpeGw/V8=",
"MapleMonoNL-NF-CN-unhinted": "sha256-p8J1tiBXxus2xTvV884QjT8N19vV/uIlz/bCIIGCUp0=",
"MapleMonoNL-NF-CN": "sha256-aDutuElaeOrcKBjNxi096SEylvsSHVe5Fmcj3yoT19M=",
"MapleMonoNL-NF-unhinted": "sha256-fcAQa79JDpxB6A4bAGpY5K9RZhVTmoVnyHx72pRtHxE=",
"MapleMonoNL-NF": "sha256-HZByDLhGkJPDV7t0LXsINLDMYKso19bJD72MiWU/8N4=",
"MapleMonoNL-OTF": "sha256-4zjWL0g7BubP8lVswUe4nPuLHV0rBsAHD/TwmROVXdI=",
"MapleMonoNL-TTF-AutoHint": "sha256-9Q4MdpzfiTZB9QFbH3K2O66hkEQmJdgjPRA1iGG51yc=",
"MapleMonoNL-TTF": "sha256-PM5Dy1lU5MX5nilxHA34x5jBNYp4m8BknJ/aHrprxpY=",
"MapleMonoNL-Variable": "sha256-jvUfLi+DLTCHkdNuKMgcVp49MMeRiVVjwdIVXNKOaYc=",
"MapleMonoNL-Woff2": "sha256-SOCpyCMfXS9atPD2g58dTK67M61rJkoYOIolveCjVYY=",
"MapleMonoNormal-CN-unhinted": "sha256-X6cnYCp2V7pNLxeYE7BmxQncOfes6Vl4TTpONb10xrI=",
"MapleMonoNormal-CN": "sha256-FmZt06ZgRWTRemGMzxkQjU9B26FSQsAFXLc8b/Hv1Ko=",
"MapleMonoNormal-NF-CN-unhinted": "sha256-uRJEJVkcoAyK85V788UU29R9lH9Vuw9RbsrrSEOzdMU=",
"MapleMonoNormal-NF-CN": "sha256-nXENizBJawD/UgrYUNP9mU8m2mt9KH2Sy6vQeXFOmNI=",
"MapleMonoNormal-NF-unhinted": "sha256-qIDYALvHBz8g3V4/jaVAEz5ZIgfNSkLqrVv/AT6pRPM=",
"MapleMonoNormal-NF": "sha256-xWAhVQl9xsKXTJWNCfPBUV6gdHhmf9WUUrAYk2erTM0=",
"MapleMonoNormal-OTF": "sha256-EU4/dvUR68LaM/je41IyXTQyDxroJUTQ6GvkcaTHsSw=",
"MapleMonoNormal-TTF-AutoHint": "sha256-N7DM6nzYRi2zGXMlvc9FmwcWMLvC1bq1AULzsZu0c9E=",
"MapleMonoNormal-TTF": "sha256-HRy0W3srGzO54/VxFk+7q6m0iXFHcii47+Tcxz2RkzI=",
"MapleMonoNormal-Variable": "sha256-CE1XGv0AlbXRW9uRzXKN4pcQHqK4gtoOQyYLM3S4QZo=",
"MapleMonoNormal-Woff2": "sha256-tUvhscxn9r8P8DSJPMRmmUhIB7Owv5fI3fYCYP3CWtg=",
"MapleMonoNormalNL-CN-unhinted": "sha256-XT7cnDJsjNm8OFPqnBWMargcaWo9nl77K+4+DHuYZ4w=",
"MapleMonoNormalNL-CN": "sha256-6okDLMwtXgIiHfSapwKPk7ZKSSxGTBHFzg5STmgTO9Q=",
"MapleMonoNormalNL-NF-CN-unhinted": "sha256-6xQPEAlMjEFb0BaTSqC/4QfCcZYD8uUYMDOgGVFqdrs=",
"MapleMonoNormalNL-NF-CN": "sha256-z1xQa89ex5M4fOnl30Ay0O+eVpuP5644OpRVwE4s8qo=",
"MapleMonoNormalNL-NF-unhinted": "sha256-7BBO3nUUxFf/Nd1CWBukNjGIhc5MmvB8R7B5V0nTJ6I=",
"MapleMonoNormalNL-NF": "sha256-yd8HUSmsTq2RdTNaK0gkh8WpPfuf93vMUD9SZOU415s=",
"MapleMonoNormalNL-OTF": "sha256-nNbOJeqWG55IXWmShMMb2YTrjQe5Yz5A0y2zwwV9irI=",
"MapleMonoNormalNL-TTF-AutoHint": "sha256-/Dpk7Hb7h/VCU5dHR8AyVrrJTGNHHB6OMY85eJNhMhU=",
"MapleMonoNormalNL-TTF": "sha256-ydFuYEgK8o57s67lK1ZAxwTBpuM7fHFGZamQh7YmZcI=",
"MapleMonoNormalNL-Variable": "sha256-KcWDxyp2/kdehiL3/eE1I33so+pR7iFl4zSsKSygsWE=",
"MapleMonoNormalNL-Woff2": "sha256-f5MaDdfaBgxeR0rGlBr6LrCqyPalZjc2ffUVarD24aw="
}

View File

@@ -0,0 +1,61 @@
import sys
import re
import json
import base64
import argparse
import requests
from urllib.parse import urlparse
def process_github_release(url, token=None):
parsed = urlparse(url)
path_parts = parsed.path.strip('/').split('/')
if len(path_parts) < 5 or parsed.netloc != 'github.com':
raise ValueError("Invalid GitHub release URL format")
owner, repo, _, _, tag = path_parts[:5]
headers = {"Accept": "application/vnd.github.v3+json"}
if token:
headers["Authorization"] = f"Bearer {token}"
response = requests.get(
f"https://api.github.com/repos/{owner}/{repo}/releases/tags/{tag}",
headers=headers
)
if response.status_code != 200:
raise RuntimeError(f"Failed to fetch release info: {response.status_code} ({response.json().get('message')})")
release_data = response.json()
assets = release_data.get('assets', [])
result = {}
sha256_pattern = re.compile(r"^[a-fA-F0-9]{64}$")
for asset in assets:
if not asset['name'].endswith('.sha256'):
continue
download_url = asset['browser_download_url']
content_response = requests.get(download_url, headers=headers)
if content_response.status_code != 200:
raise RuntimeError(
f"Failed to download {asset['name']}: "
f"{content_response.status_code} {content_response.text}"
)
hex_hash = content_response.text.strip()
if not sha256_pattern.match(hex_hash):
raise ValueError(f"Invalid SHA256 format in {asset['name']}")
try:
byte_data = bytes.fromhex(hex_hash)
base64_hash = base64.b64encode(byte_data).decode('utf-8')
except Exception as e:
raise RuntimeError(f"Error processing {asset['name']}: {str(e)}")
filename = asset['name'][:-7]
result[filename] = f"sha256-{base64_hash}"
output_file = f"{repo}_{tag}_hashes.json"
with open(output_file, 'w', encoding='utf-8') as f:
json.dump(result, f, indent=2, ensure_ascii=False)
print(f"Successfully generated {output_file}")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Process GitHub release hashes')
parser.add_argument('url', help='GitHub release URL')
parser.add_argument('-t', '--token', help='GitHub API token (optional)')
args = parser.parse_args()
try:
process_github_release(args.url, args.token)
except Exception as e:
print(f"Error: {str(e)}")
sys.exit(1)

View File

@@ -0,0 +1,67 @@
{
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.mplus;
};
};
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;
};
};
}

View File

@@ -0,0 +1,28 @@
lib:
let
ls = lib.licenses;
in
licenseString:
builtins.getAttr licenseString (
(
with builtins;
lib.trivial.pipe (attrValues ls) [
(filter (l: l ? spdxId))
(map (l: lib.attrsets.nameValuePair l.spdxId l))
listToAttrs
]
)
// {
"Bitstream-Vera AND MIT" = with ls; [
bitstreamVera
mit
];
"LicenseRef-Monofur" = ls.free; # upstream `src/unpatched-fonts/Monofur/LICENSE.txt`
"LicenseRef-UbuntuFont" = ls.ufl;
"LicenseRef-VicFieger" = ls.free; # upstream `src/unpatched-fonts/HeavyData/Vic Fieger License.txt`
"MIT OR OFL-1.1-no-RFN" = ls.mit;
"OFL-1.1-RFN" = ls.ofl;
"OFL-1.1-no-RFN or LGPL-2.1-only" = ls.ofl;
"OFL-1.1-no-RFN" = ls.ofl;
}
)

View File

@@ -0,0 +1,103 @@
{
lib,
stdenvNoCC,
fetchurl,
}:
let
releaseInfo = lib.trivial.importJSON ./manifests/release.json;
fontsInfo = lib.trivial.importJSON ./manifests/fonts.json;
checksums = lib.trivial.importJSON ./manifests/checksums.json;
releaseVersion = lib.removePrefix "v" releaseInfo.tag_name;
convertAttrName =
name:
let
lowerName = lib.strings.toLower name;
in
if builtins.match "^[[:digit:]].*" lowerName != null then "_" + lowerName else lowerName;
convertVersion =
version: if builtins.match "^[[:digit:]].*" version != null then "+" + version else "";
convertLicense = import ./convert-license.nix lib;
makeNerdFont =
{
caskName,
description,
folderName,
licenseId,
patchedName,
version,
...
}:
stdenvNoCC.mkDerivation {
pname = "nerd-fonts-" + lib.strings.toLower caskName;
version = releaseVersion + convertVersion version;
src =
let
filename = folderName + ".tar.xz";
url = "https://github.com/ryanoasis/nerd-fonts/releases/download/${releaseInfo.tag_name}/${filename}";
sha256 = checksums.${filename};
in
fetchurl {
inherit url sha256;
};
sourceRoot = ".";
installPhase =
let
dirName = lib.strings.concatStrings (lib.strings.splitString " " patchedName);
in
''
runHook preInstall
dst_opentype=$out/share/fonts/opentype/NerdFonts/${dirName}
dst_truetype=$out/share/fonts/truetype/NerdFonts/${dirName}
find -name \*.otf -exec mkdir -p $dst_opentype \; -exec cp -p {} $dst_opentype \;
find -name \*.ttf -exec mkdir -p $dst_truetype \; -exec cp -p {} $dst_truetype \;
runHook postInstall
'';
passthru = {
inherit releaseVersion;
updateScript = {
command = ./update.py;
supportedFeatures = [ "commit" ];
};
};
meta = {
description = "Nerd Fonts: " + description;
license = lib.unique (
(with lib.licenses; [
# > Nerd Fonts source fonts, patched fonts, and folders with explicit OFL SIL files
ofl
# > Nerd Fonts original source code files (such as `.sh`, `.py`, `font-patcher` and others)
mit
])
++ lib.toList (convertLicense licenseId)
);
homepage = "https://nerdfonts.com/";
changelog = "https://github.com/ryanoasis/nerd-fonts/blob/${releaseInfo.tag_name}/changelog.md";
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [
doronbehar
rc-zb
];
};
};
nerdFonts = lib.trivial.pipe fontsInfo [
(map (font: lib.nameValuePair (convertAttrName font.caskName) (makeNerdFont font)))
builtins.listToAttrs
];
in
nerdFonts

View File

@@ -0,0 +1,72 @@
{
"0xProto.tar.xz": "effaa4c257c1f25e6d2d50679e9b845eab36b346dea9ee26f4405da1a21e6428",
"3270.tar.xz": "6d9dd76987968e8a0b30d3ae4d18b8139d6ddf6cd53409272dbc596654ea38b1",
"AdwaitaMono.tar.xz": "39b7598b2ec30111d1ace82b274809e5d0930e241683c1c91f5b4c7e64a975cf",
"Agave.tar.xz": "fe4879b0cff2d33d7fb08d1c8ba4e0cad9f44843644fe284fda1e89addf9c4ab",
"AnonymousPro.tar.xz": "7ebace54eda35943062eaad9dd4f16de24390b672f31bff45475b82acb1955c0",
"Arimo.tar.xz": "006464de19502bd49a72265058811665b62b823509bbbd2e7181ba87046b6b08",
"AtkinsonHyperlegibleMono.tar.xz": "8643ab571f547c6af0352a08e617ba7303965b2882ab9f36d61e8d4680761a59",
"AurulentSansMono.tar.xz": "a0d642ace8f9d616a9c9cbbe46e188c60ddf7486b0cf2685a3558e06aba2c284",
"BigBlueTerminal.tar.xz": "9df627ec74a21f4da8df4821dba85cabcc452f95b636e8802eeaa2e6f3129e13",
"BitstreamVeraSansMono.tar.xz": "59162ab2d67d39827e497beda03fbe6327d3535d2ee3b1dd7050fdeafe1f9c36",
"CascadiaCode.tar.xz": "804b3d311665a059140466fe142cc76cf14ef0695b7c4d3a174f7f8fba46b6e3",
"CascadiaMono.tar.xz": "7c22db8c8460ef62abffbb6d5c7b212507de0798a4a762fa2a005a8bc4c90fc6",
"CodeNewRoman.tar.xz": "2db8def7863ea49b6ef69f353988d7e0f73a8646722e5946932740d76eb46b25",
"ComicShannsMono.tar.xz": "23d90d18dae663b7d0dcdb4edd2f5087eecb40b00f046a1f46a9abf3ecb47651",
"CommitMono.tar.xz": "44cdabae7708de3548fdd78ed59cdbb1fedbca18e16644047ed4a23623a530ca",
"Cousine.tar.xz": "63bc50fc2b88897096626cf9e835d4237ee0052f9bfd902dc1f5304c693c32e6",
"D2Coding.tar.xz": "5b4e8c53599ee79067a4439bfbf31bb3f1b40e93ac6493f718b48feaf972173d",
"DaddyTimeMono.tar.xz": "854c8cbf59e1fcc48f114408d93f63cad70c6ba8eefad5bf3071bd9dd8ef48f8",
"DejaVuSansMono.tar.xz": "0e58ff9c1f9378922b7f324fdba953929d88d61b36aedd80ee43964567b226cc",
"DepartureMono.tar.xz": "f099f71bc240fb59ffeaba50d26206b32df7e54051e49d6837a1702e4d3b4f3f",
"DroidSansMono.tar.xz": "43ad0a4e238ad078300d0aa2ebca5f7aaf6ff2cdb25c5cfe8191b79aab7d0af2",
"EnvyCodeR.tar.xz": "b631d34ab3e3e26aba7169b382d573d82bc6647d3ddae67e9ce28481f64715e7",
"FantasqueSansMono.tar.xz": "462b5490475fb8560dded4eb6cdd9cfd0049b800acee329094def095557d0ffd",
"FiraCode.tar.xz": "d83fb093e0e05a531cd6f19886a6ceb884a4fa5ea3b53cf099fc1f30c5b3e47d",
"FiraMono.tar.xz": "2e4adc97fefdfa2ad70a6e6e79bc0418acd401a305bcb5fcd848a84e03e35a74",
"GeistMono.tar.xz": "43ef3d73cadddea5be746e20c9f27fbaa59ceb106b8b26f7245ba2de2e46b1f6",
"Go-Mono.tar.xz": "81c879e6a86dd6e6cb94d7a73322bf39f06b3294a727effb5a5bb5c7f9274fd6",
"Gohu.tar.xz": "458b08f1216c18a46fc3e00701d6d171a4d536192b0885c041d8cc1befb6b44d",
"Hack.tar.xz": "1d00a1435638084174516975840854368a45ac30bb0bad2c0c49db713b5925f0",
"Hasklig.tar.xz": "e82418895a7036158baf9a425faea7de1fe332267b218341eec44c6b5071d1ad",
"HeavyData.tar.xz": "ed0d49911ae0caa1d625ae64832b49b4c94e90fa2ec0b1e5e7df440ccb28698b",
"Hermit.tar.xz": "206ae23c386dcb84a2dfaca678af36123fbaff1fb402326021973485018467f3",
"IBMPlexMono.tar.xz": "95e6ecaa5dfb9a96f27a6b6edc7be396fb6df30bc311a6f7e15cad56a30051c2",
"Inconsolata.tar.xz": "47df94d3826a9f3e94b4c596a78f5baaddfb27f25bdb7906c5cf65caf8962eb2",
"InconsolataGo.tar.xz": "0407ab5ddd9f6a9af5f178d5fa1732cbf8275c4fe6e03793adbe48bfd6c04884",
"InconsolataLGC.tar.xz": "59b5961b83f0fd64ef579099ca0209dd706d5025feac813c80fcc2d0648d717f",
"IntelOneMono.tar.xz": "9d55174210a512c6c9d0601532033d05d9e8817c760cb9ccca3c6c9c4ff6d7c1",
"Iosevka.tar.xz": "213ee24cda99ca84d0a8326de133e7e8b2baf9ba23659ce829f589f771d357d2",
"IosevkaTerm.tar.xz": "cad9da572d25e3413f7a15a319d2f3c9e7e915ee016baa99e0d88fc08cf5b781",
"IosevkaTermSlab.tar.xz": "8990ca82b481a02734cb96f46db789716735ca8f6c4bf89d800899a593a1f0ca",
"JetBrainsMono.tar.xz": "ef552a3e638f25125c6ad4c51176a6adcdce295ab1d2ffacf0db060caf8c1582",
"Lekton.tar.xz": "2a7fa12bf2b376307c9ca2501227b0d91dcae25c453ec095e5f768a2ca5b6fe9",
"LiberationMono.tar.xz": "64a9519dd6b75179a9363f9c8a0cefe2984ec8578394ced66e9d0fffd2be922f",
"Lilex.tar.xz": "1d011e82a59aec26bff5564ca90a8e51636364e5b7f79417708aa2c846c633b3",
"MPlus.tar.xz": "9c03e388d0ff2e0bc28be9bf6ab95f1e0260c5828b3159b18867a9e7a1f17f7b",
"MartianMono.tar.xz": "e12f5ca02756268e794d06d9cb2ada93d021ec915f5a43ec2cd77355022f3624",
"Meslo.tar.xz": "a57936d96aefb5cfff0660f3294210ee04705529af6cf811e2274b0923a03939",
"Monaspace.tar.xz": "5fdb97828e1a23fd28ea5ed0e7d15cdebb77ef079aaa48b93f1526764b40ef8c",
"Monofur.tar.xz": "539dc64f089b189c5f14ee60df6368742cc63ccc3be753bd3c8bfba7632fe068",
"Monoid.tar.xz": "5c6efd6fe2f2856d5294748dc751770d1c8889665f42687a0ac8f1b3a86a3299",
"Mononoki.tar.xz": "5c9b3035d45aabfe1fb3ce5e3028130043398cecc1409b20fe8273692192726e",
"NerdFontsSymbolsOnly.tar.xz": "7f8c090da3b0eaa7108646bf34cbbb6ed13d5358a72460522108b06c7ecd716a",
"Noto.tar.xz": "e28b31609d17fc50bdf9e6730c947a61b0e474af726c2c044c39bc78fcd9bfde",
"OpenDyslexic.tar.xz": "2155e95e9c7b12d785dc589033290a8caff07c11cf1697ec3ad0bda37e3b0433",
"Overpass.tar.xz": "4d6d7e8b91840bb2b18bc7ac427f979183e68b6b061db58b4139ad5679bdc36f",
"ProFont.tar.xz": "c6d595ac9f7e0d6ac87c4c57e26c7515c544e8e5ac553c5a215394d12b201a8f",
"ProggyClean.tar.xz": "910c51cb06ff3233daee1d045e606ed77c290ea25dd1a54378e0517601f4785c",
"Recursive.tar.xz": "a047ac2e724c1614ef4350af83f35cd1d044d8d20e6477c319172b860b19329a",
"RobotoMono.tar.xz": "4bc63bf0105c664e466e62cb2fd1c143b310877de93dc35b3b5d48e0e4cb6702",
"ShareTechMono.tar.xz": "11bb01a73894f932a3702551245aa0c57d121ebf59dd293fac5ceac81af822d1",
"SourceCodePro.tar.xz": "d52d97b66c4c5d6d9d99c88df55148faf39738f244485026f22f8e47407744f4",
"SpaceMono.tar.xz": "d159c6f13291723f1821d1064a7d3e0933d96297d55bab27d76861472af68111",
"Terminus.tar.xz": "e857b18a99701528f873275b6012792caf6e30c34c512ee92cda51520140054f",
"Tinos.tar.xz": "c54f03f38fbf897f34235bc5989500361251f61220cf63afedd730edd221714e",
"Ubuntu.tar.xz": "534bf0ffb311a993fd23666a7f3e4f4a0cfc0662abfa8b81594705cceefb69e3",
"UbuntuMono.tar.xz": "a13cf890ef10517c59e812ced167245f2db47d37d2b03c9fb43ddef023a3e776",
"UbuntuSans.tar.xz": "0a399b03565c577ae2da9f8362e6276b0adb13bac288e49fec085c517243e27b",
"VictorMono.tar.xz": "67bb8c729aedbe2e0258435c78e52bb1753618a1d3d7c0c94e6f1c47763a56a9",
"ZedMono.tar.xz": "7dfff6bb0e45143c33703c3fdf3ff77b00f3617fef29671c7ff6af166dcf31a0",
"iA-Writer.tar.xz": "0156f309d942d9066a83005dd42588719a1755fb78e345e5f22ff582da46211b"
}

View File

@@ -0,0 +1,562 @@
[
{
"caskName": "0xproto",
"description": "A programming font focused on source code legibility",
"folderName": "0xProto",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "0xProto",
"version": "2.300"
},
{
"caskName": "3270",
"description": "Derived from the x3270 font, a modern format of a font with high nostalgic value",
"folderName": "3270",
"licenseId": "BSD-3-Clause",
"patchedName": "3270",
"version": "3.0.1"
},
{
"caskName": "adwaita-mono",
"description": "The monospace typeface for GNOME",
"folderName": "AdwaitaMono",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "AdwaitaMono",
"version": "32.4"
},
{
"caskName": "agave",
"description": "A small, monospace, outline font that is geometrically regular and simple",
"folderName": "Agave",
"licenseId": "MIT",
"patchedName": "Agave",
"version": "37"
},
{
"caskName": "anonymice",
"description": "Inspired by Anonymous 9 on Macintosh, since 2009, distinct `O`, `0`, `I`, `l`, `1`",
"folderName": "AnonymousPro",
"licenseId": "OFL-1.1-RFN",
"patchedName": "AnonymicePro",
"version": "1.002"
},
{
"caskName": "arimo",
"description": "Metrically similar to Arial, pan-European WGL character set, sans serif",
"folderName": "Arimo",
"licenseId": "Apache-2.0",
"patchedName": "Arimo",
"version": "1.33"
},
{
"caskName": "atkynson-mono",
"description": "A monospaced font designed to improve legibility and readability for individuals with low vision",
"folderName": "AtkinsonHyperlegibleMono",
"licenseId": "OFL-1.1-RFN",
"patchedName": "AtkynsonMono",
"version": "2.001"
},
{
"caskName": "aurulent-sans-mono",
"description": "Sans serif, designed by Stephen G. Hartke which also created Verily Serif",
"folderName": "AurulentSansMono",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "AurulentSansM",
"version": "-"
},
{
"caskName": "bigblue-terminal",
"description": "Nostalgic, closely based on IBM's 8x14 EGA/VGA charset",
"folderName": "BigBlueTerminal",
"licenseId": "CC-BY-SA-4.0",
"patchedName": "BigBlueTerm",
"version": "-"
},
{
"caskName": "bitstream-vera-sans-mono",
"description": "Dotted zero, compact lowercase characters",
"folderName": "BitstreamVeraSansMono",
"licenseId": "Bitstream-Vera",
"patchedName": "BitstromWera",
"version": "1.1"
},
{
"caskName": "blex-mono",
"description": "It's global, it's versatile and it's distinctly IBM",
"folderName": "IBMPlexMono",
"licenseId": "OFL-1.1-RFN",
"patchedName": "BlexMono",
"version": "2.004 (6.4.0)"
},
{
"caskName": "caskaydia-cove",
"description": "A fun, new monospaced font that includes programming ligatures and is designed to enhance the modern look and feel of the Windows Terminal",
"folderName": "CascadiaCode",
"licenseId": "OFL-1.1-RFN",
"patchedName": "CaskaydiaCove",
"version": "2407.24"
},
{
"caskName": "caskaydia-mono",
"description": "Like Cascadia Code but without any ligatures",
"folderName": "CascadiaMono",
"licenseId": "OFL-1.1-RFN",
"patchedName": "CaskaydiaMono",
"version": "2407.24"
},
{
"caskName": "code-new-roman",
"description": "Tunable, slashed zeros, compact smaller characters",
"folderName": "CodeNewRoman",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "CodeNewRoman",
"version": "2.0"
},
{
"caskName": "comic-shanns-mono",
"description": "The very typeface youve been trained to recognize since childhood",
"folderName": "ComicShannsMono",
"licenseId": "MIT",
"patchedName": "ComicShannsMono",
"version": "1.3.1"
},
{
"caskName": "commit-mono",
"description": "An anonymous and neutral programming typeface",
"folderName": "CommitMono",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "CommitMono",
"version": "1.143"
},
{
"caskName": "cousine",
"description": "Similar to Courier New with better readablitiy, dotted zeros",
"folderName": "Cousine",
"licenseId": "Apache-2.0",
"patchedName": "Cousine",
"version": "1.211"
},
{
"caskName": "d2coding",
"description": "A coding font for Koreans. This is the variant with ligatures.",
"folderName": "D2Coding",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "D2CodingLigature",
"version": "1.3.2"
},
{
"caskName": "daddy-time-mono",
"description": "A monospaced font for programmers and other terminal groupies",
"folderName": "DaddyTimeMono",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "DaddyTimeMono",
"version": "1.2.3"
},
{
"caskName": "dejavu-sans-mono",
"description": "Dotted zero, based on the Bitstream Vera Fonts with a wider range of character",
"folderName": "DejaVuSansMono",
"licenseId": "Bitstream-Vera",
"patchedName": "DejaVuSansM",
"version": "2.37"
},
{
"caskName": "departure-mono",
"description": "A monospaced pixel font with a lo-fi, techy vibe",
"folderName": "DepartureMono",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "DepartureMono",
"version": "1.422"
},
{
"caskName": "droid-sans-mono",
"description": "Good for small screens or font sizes",
"folderName": "DroidSansMono",
"licenseId": "Apache-2.0",
"patchedName": "DroidSansM",
"version": "1.00-113"
},
{
"caskName": "envy-code-r",
"description": "Fully-scalable monospaced font designed for programming and command prompts",
"folderName": "EnvyCodeR",
"licenseId": "OFL-1.1-RFN",
"patchedName": "EnvyCodeR",
"version": "0.79"
},
{
"caskName": "fantasque-sans-mono",
"description": "\"Wibbly-wobbly handwriting-like fuzziness\", takes some inspiration from Inconsolata and Monaco",
"folderName": "FantasqueSansMono",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "FantasqueSansM",
"version": "1.8.0"
},
{
"caskName": "fira-code",
"description": "Programming ligatures, extension of Fira Mono font, enlarged operators",
"folderName": "FiraCode",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "FiraCode",
"version": "6.2"
},
{
"caskName": "fira-mono",
"description": "Mozilla typeface, dotted zero",
"folderName": "FiraMono",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "FiraMono",
"version": "3.206"
},
{
"caskName": "geist-mono",
"description": "Monospaced typeface designed to be used in code editors, diagrams, terminals, and other textbased interfaces where code is represented",
"folderName": "GeistMono",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "GeistMono",
"version": "1.401"
},
{
"caskName": "go-mono",
"description": "Created specifically for the Go project, looks particularly clear for use with the Go language",
"folderName": "Go-Mono",
"licenseId": "BSD-3-Clause-Clear",
"patchedName": "GoMono",
"version": "2.010"
},
{
"caskName": "gohufont",
"description": "Bitmap font, tall capitals and ascenders, small serifs",
"folderName": "Gohu",
"licenseId": "WTFPL",
"patchedName": "GohuFont",
"version": "2.0"
},
{
"caskName": "hack",
"description": "Dotted zero, short descenders, expands upon work done for Bitstream Vera & DejaVu, legible at common sizes",
"folderName": "Hack",
"licenseId": "Bitstream-Vera AND MIT",
"patchedName": "Hack",
"version": "3.003"
},
{
"caskName": "hasklug",
"description": "Monospaced ligatures, makes composite glyphs (e.g. ->) more reabable, especially in Haskell",
"folderName": "Hasklig",
"licenseId": "OFL-1.1-RFN",
"patchedName": "Hasklug",
"version": "1.2"
},
{
"caskName": "heavy-data",
"description": "Novel and unique design, dotted zero",
"folderName": "HeavyData",
"licenseId": "LicenseRef-VicFieger",
"patchedName": "HeavyData",
"version": "1"
},
{
"caskName": "hurmit",
"description": "Symbols stand out from common text",
"folderName": "Hermit",
"licenseId": "OFL-1.1-RFN",
"patchedName": "Hurmit",
"version": "2.0"
},
{
"caskName": "im-writing",
"description": "A heavy modification of IBM's Plex font",
"folderName": "iA-Writer",
"licenseId": "OFL-1.1-RFN",
"patchedName": "iMWriting",
"version": "Dec 2018"
},
{
"caskName": "inconsolata",
"description": "Slashed zero, takes inspiration from many different fonts and glyphs, subtle curves in lowercase",
"folderName": "Inconsolata",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "Inconsolata",
"version": "3.000"
},
{
"caskName": "inconsolata-go",
"description": "Inconsolata with straight quotes",
"folderName": "InconsolataGo",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "InconsolataGo",
"version": "1.013"
},
{
"caskName": "inconsolata-lgc",
"description": "Inconsolata with added the Cyrillic alphabet",
"folderName": "InconsolataLGC",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "Inconsolata LGC",
"version": "1.13"
},
{
"caskName": "intone-mono",
"description": "Expressive monospaced font family thats built with clarity, legibility, and the needs of developers in mind",
"folderName": "IntelOneMono",
"licenseId": "OFL-1.1-RFN",
"patchedName": "IntoneMono",
"version": "1.4.0"
},
{
"caskName": "iosevka",
"description": "Narrow and horizontally tight characters, slashed zero",
"folderName": "Iosevka",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "Iosevka",
"version": "33.2.1"
},
{
"caskName": "iosevka-term",
"description": "A narrower variant focusing terminal uses: Arrows and geometric symbols will be narrow to follow typical terminal usages",
"folderName": "IosevkaTerm",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "IosevkaTerm",
"version": "33.2.1"
},
{
"caskName": "iosevka-term-slab",
"description": "Nice as Iosevka but with slab serifs",
"folderName": "IosevkaTermSlab",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "IosevkaTermSlab",
"version": "33.2.1"
},
{
"caskName": "jetbrains-mono",
"description": "JetBrains officially created font for developers",
"folderName": "JetBrainsMono",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "JetBrainsMono",
"version": "2.304"
},
{
"caskName": "lekton",
"description": "Very light and thin characters, sharp m's, `0` and `O` very similar",
"folderName": "Lekton",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "Lekton",
"version": "34"
},
{
"caskName": "liberation",
"description": "`0` and `O` very similar, very short tight descenders",
"folderName": "LiberationMono",
"licenseId": "OFL-1.1-RFN",
"patchedName": "LiterationMono",
"version": "2.1.5"
},
{
"caskName": "lilex",
"description": "Modern with ligatures",
"folderName": "Lilex",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "Lilex",
"version": "2.600"
},
{
"caskName": "martian-mono",
"description": "Free and open-source monospaced font from Evil Martians",
"folderName": "MartianMono",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "MartianMono",
"version": "1.1.0"
},
{
"caskName": "meslo-lg",
"description": "Slashed zeros, customized version of Apple's Menlo",
"folderName": "Meslo",
"licenseId": "Apache-2.0",
"patchedName": "MesloLG",
"version": "1.21"
},
{
"caskName": "monaspace",
"description": "Five matching fonts all having 'texture healing' to improve legibility",
"folderName": "Monaspace",
"licenseId": "OFL-1.1-RFN",
"patchedName": "Monaspice",
"version": "1.200"
},
{
"caskName": "monofur",
"description": "Dotted zeros, slightly exaggerated curvy characters, compact characters",
"folderName": "Monofur",
"licenseId": "LicenseRef-Monofur",
"patchedName": "Monofur",
"version": "1.0"
},
{
"caskName": "monoid",
"description": "Ligatures, distinguishable glyphs with short ascenders & descenders, large operators & punctuation",
"folderName": "Monoid",
"licenseId": "MIT OR OFL-1.1-no-RFN",
"patchedName": "Monoid",
"version": "0.61"
},
{
"caskName": "mononoki",
"description": "Keeps in mind differentiation of characters and resolution sizes",
"folderName": "Mononoki",
"licenseId": "OFL-1.1-RFN",
"patchedName": "Mononoki",
"version": "1.6"
},
{
"caskName": "m+",
"description": "Multiple styles and weights, many glyph sets (e.g. Kana glyphs)",
"folderName": "MPlus",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "M+",
"version": "1.007"
},
{
"caskName": "noto",
"description": "`0` and `O` very similar, characters are either very curvy or straight lined",
"folderName": "Noto",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "Noto",
"version": "div"
},
{
"caskName": "open-dyslexic",
"description": "Designed specifically to alleviate reading errors caused by dyslexia",
"folderName": "OpenDyslexic",
"licenseId": "Bitstream-Vera",
"patchedName": "OpenDyslexic",
"version": "2.001"
},
{
"caskName": "overpass",
"description": "An open source font family inspired by Highway Gothic",
"folderName": "Overpass",
"licenseId": "OFL-1.1-no-RFN or LGPL-2.1-only",
"patchedName": "Overpass",
"version": "3.0.5"
},
{
"caskName": "profont",
"description": "Looks best with anti-aliasing turned off, squared off character corners, vertically tight small `s`",
"folderName": "ProFont",
"licenseId": "MIT",
"patchedName": "ProFont",
"version": "2.3/2.2"
},
{
"caskName": "proggy-clean-tt",
"description": "Designed particularly for use at small point sizes",
"folderName": "ProggyClean",
"licenseId": "MIT",
"patchedName": "ProggyClean",
"version": "2004/04/15"
},
{
"caskName": "recursive-mono",
"description": "inspired by casual script signpainting, 4 variants",
"folderName": "Recursive",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "RecMono",
"version": "1.085"
},
{
"caskName": "roboto-mono",
"description": "Dashed zero, curved and straight character lines",
"folderName": "RobotoMono",
"licenseId": "Apache-2.0",
"patchedName": "RobotoMono",
"version": "3.0"
},
{
"caskName": "shure-tech-mono",
"description": "Dotted zeros, distinguishable 1 and l, curved and straight character lines",
"folderName": "ShareTechMono",
"licenseId": "OFL-1.1-RFN",
"patchedName": "ShureTechMono",
"version": "1.003"
},
{
"caskName": "sauce-code-pro",
"description": "Monospaced font family for user interface and coding environments",
"folderName": "SourceCodePro",
"licenseId": "OFL-1.1-RFN",
"patchedName": "SauceCodePro",
"version": "2.042"
},
{
"caskName": "space-mono",
"description": "Squarish character lines, dotted zero, aggressive parethesis",
"folderName": "SpaceMono",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "SpaceMono",
"version": "1.001"
},
{
"caskName": "symbols-only",
"description": "Just the Nerd Font Icons. I.e Symbol font only",
"folderName": "NerdFontsSymbolsOnly",
"licenseId": "MIT",
"patchedName": "Symbols",
"version": "latest"
},
{
"caskName": "terminess-ttf",
"description": "Squarish characters that are slightly askew",
"folderName": "Terminus",
"licenseId": "OFL-1.1-RFN",
"patchedName": "Terminess",
"version": "4.49.2"
},
{
"caskName": "tinos",
"description": "Some similarities to Times New Roman, designed by Steve Matteson, includes pan-European WGL character set",
"folderName": "Tinos",
"licenseId": "Apache-2.0",
"patchedName": "Tinos",
"version": "1.23"
},
{
"caskName": "ubuntu",
"description": "Specially created for Ubuntu",
"folderName": "Ubuntu",
"licenseId": "LicenseRef-UbuntuFont",
"patchedName": "Ubuntu",
"version": "0.83"
},
{
"caskName": "ubuntu-mono",
"description": "Dotted zeros, used the `n`, `o`, `H` & `O` Latin characters as a base for design",
"folderName": "UbuntuMono",
"licenseId": "LicenseRef-UbuntuFont",
"patchedName": "UbuntuMono",
"version": "0.80"
},
{
"caskName": "ubuntu-sans",
"description": "Refreshed version of Ubuntu and Ubuntu Mono fonts",
"folderName": "UbuntuSans",
"licenseId": "LicenseRef-UbuntuFont",
"patchedName": "UbuntuSans",
"version": "1.006"
},
{
"caskName": "victor-mono",
"description": "Clean, crisp and narrow, with a large x-height and clear punctuation",
"folderName": "VictorMono",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "VictorMono",
"version": "1.5.6"
},
{
"caskName": "zed-mono",
"description": "Zed Mono is a more rounded version of Iosevka",
"folderName": "ZedMono",
"licenseId": "OFL-1.1-no-RFN",
"patchedName": "ZedMono",
"version": "1.2.0"
}
]

View File

@@ -0,0 +1,3 @@
{
"tag_name": "v3.4.0"
}

View File

@@ -0,0 +1,91 @@
#! /usr/bin/env nix-shell
#! nix-shell -p python3 -i python3
import os
import urllib.request as ureq
import json
import html
if not all(
f"UPDATE_NIX_{v}" in os.environ
for v in ["NAME", "PNAME", "OLD_VERSION", "ATTR_PATH"]
) or not os.environ['UPDATE_NIX_ATTR_PATH'].startswith("nerd-fonts."):
raise Exception(
"Please don't run this script manually, only with:\n"
"nix-shell maintainers/scripts/update.nix --argstr path nerd-fonts "
"--argstr commit true"
)
RELEASE_INFO_URL = "https://api.github.com/repos/ryanoasis/nerd-fonts/releases/latest"
FONTS_INFO_URL_TEMPLATE = "https://raw.githubusercontent.com/ryanoasis/nerd-fonts/refs/tags/{}/bin/scripts/lib/fonts.json"
SHA256_URL_TEMPLATE = "https://github.com/ryanoasis/nerd-fonts/releases/download/{}/SHA-256.txt"
RELEASE_INFO_FILENAME = "release.json"
FONTS_INFO_FILENAME = "fonts.json"
CHECKSUMS_FILENAME = "checksums.json"
def fetchjson(url):
with ureq.urlopen(url) as r:
return json.loads(r.read())
def storejson(path, obj):
with open(path, "w", encoding="utf-8") as f:
json.dump(obj, f, indent=2, ensure_ascii=False)
# Needed to satisfy EditorConfig's rules
f.write('\n')
def slicedict(d, ks):
return {k: html.unescape(d[k]) for k in ks}
os.chdir(os.path.join(os.path.dirname(os.path.abspath(__file__)), "manifests"))
release_info = slicedict(
fetchjson(RELEASE_INFO_URL),
["tag_name"]
)
tag_name = release_info["tag_name"]
with open(RELEASE_INFO_FILENAME, "r", encoding="utf-8") as f:
former_tag_name = json.load(f)["tag_name"]
if tag_name == former_tag_name:
raise Exception("no newer version available")
# See: https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#supported-features
print(json.dumps(
[
{
"attrPath": "nerd-fonts",
"oldVersion": former_tag_name.removeprefix("v"),
"newVersion": tag_name.removeprefix("v"),
},
],
indent=2
))
storejson(RELEASE_INFO_FILENAME, release_info)
storejson(
FONTS_INFO_FILENAME,
[
slicedict(
item,
[
"caskName",
"description",
"folderName",
"licenseId",
"patchedName",
"version",
]
)
for item in fetchjson(FONTS_INFO_URL_TEMPLATE.format(tag_name))["fonts"]
],
)
storejson(
CHECKSUMS_FILENAME,
{
filename: sha256
for row in ureq.urlopen(SHA256_URL_TEMPLATE.format(tag_name))
for sha256, filename in [row.decode('utf-8').split()]
if filename.endswith(".tar.xz")
},
)

View File

@@ -0,0 +1,97 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
}:
let
mkOpenRelayTypeface =
name:
{ directory, meta }:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "open-relay-${name}";
version = "2025-09-01";
src = fetchFromGitHub {
owner = "kreativekorp";
repo = "open-relay";
tag = finalAttrs.version;
hash = "sha256-+vG9gzbb3x7Fh3xIpUJZRpclz1qT+gyTSqmOtKJXZtw=";
};
installPhase = ''
runHook preInstall
install -D -m444 -t "$out/share/fonts/truetype" "${directory}/"*.ttf
install -D -m644 -t "$out/share/doc/${finalAttrs.pname}-${finalAttrs.version}" "${directory}/OFL.txt"
runHook postInstall
'';
meta = {
homepage = "https://www.kreativekorp.com/software/fonts/index.shtml";
description = "Free and open source fonts from Kreative Software";
license = lib.licenses.ofl;
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [
linus
toastal
];
}
// meta;
});
in
lib.mapAttrs mkOpenRelayTypeface {
constructium = {
directory = "Constructium";
meta = {
homepage = "https://www.kreativekorp.com/software/fonts/constructium/";
description = "Fork of SIL Gentium designed specifically to support constructed scripts as encoded in the Under-ConScript Unicode Registry";
longDescription = ''
Constructium is a fork of SIL Gentium designed specifically to support
constructed scripts as encoded in the Under-ConScript Unicode Registry.
It is ideal for mixed Latin, Greek, Cyrillic, IPA, and conlang text in
web sites and documents.
'';
};
};
fairfax = {
directory = "Fairfax";
meta = {
homepage = "https://www.kreativekorp.com/software/fonts/fairfax/";
description = "6×12 bitmap font supporting many Unicode blocks & scripts as well as constructed scripts";
longDescription = ''
Fairfax is a 6×12 bitmap font for terminals, text editors, IDEs, etc. It
supports many scripts and a large number of Unicode blocks as well as
constructed scripts as encoded in the Under-ConScript Unicode Registry,
pseudographics and semigraphics, and tons of private use characters. It
has been superceded by Fairfax HD but is still maintained.
'';
};
};
fairfax-hd = {
directory = "FairfaxHD";
meta = {
homepage = "https://www.kreativekorp.com/software/fonts/fairfaxhd/";
description = "Halfwidth scalable monospace font supporting many Unicode blocks & script as well as constructed scripts";
longDescription = ''
Fairfax HD is a halfwidth scalable monospace font for terminals, text
editors, IDEs, etc. It supports many scripts and a large number of
Unicode blocks as well as constructed scripts as encoded in the
Under-ConScript Unicode Registry, pseudographics and semigraphics, and
tons of private use characters.
'';
};
};
kreative-square = {
directory = "KreativeSquare";
meta = {
homepage = "https://www.kreativekorp.com/software/fonts/ksquare/";
description = "Fullwidth scalable monospace font designed specifically to support pseudographics, semigraphics, and private use characters";
};
};
}

View File

@@ -0,0 +1,77 @@
diff --git a/helpers/generate-fonts-runner.sh b/helpers/generate-fonts-runner.sh
index 21267e50f..873b5c664 100755
--- a/helpers/generate-fonts-runner.sh
+++ b/helpers/generate-fonts-runner.sh
@@ -25,10 +25,10 @@ mkdir -p "$build_dir"
# Change these to enable/disable formats
# Remember to update font/README.md accordingly
-methods_black=(glyf)
-methods_color=(cbdt glyf_colr_0 glyf_colr_1 sbix picosvgz untouchedsvgz)
+#methods_black=(glyf)
+#methods_color=(cbdt glyf_colr_0 glyf_colr_1 sbix picosvgz untouchedsvgz)
-saturations=(black color)
+#saturations=(black color)
for saturation in "${saturations[@]}"; do
case "$saturation" in
black)
@@ -43,6 +43,7 @@ for saturation in "${saturations[@]}"; do
mkdir -p "$build_dir/$saturation"
for method in "${methods[@]}"; do
+ if [ -z "$method" ]; then continue; fi
cat >"$build_dir/$saturation/OpenMoji-$saturation-$method.toml" <<-EOF
output_file = "$build_dir/$saturation/OpenMoji-$saturation-$method.ttf"
color_format = "$method"
@@ -55,10 +56,7 @@ default = 400
[master.regular]
style_name = "Regular"
-
-# To quickly check build reverse comments below
-srcs = ["/mnt/$saturation/svg/*.svg"]
-# srcs = ["/mnt/$saturation/svg/1F923.svg", "/mnt/$saturation/svg/1F1E9-1F1F0.svg"]
+srcs = ["$(pwd)/$saturation/svg/*.svg"]
[master.regular.position]
wght = 400
@@ -71,7 +69,7 @@ EOF
for method in "${methods[@]}"; do
# Generate XML for font
sed "s/Color/${saturation^}/;" \
- /mnt/data/OpenMoji-Color.ttx \
+ data/OpenMoji-Color.ttx \
> "$build_dir/$saturation/OpenMoji-$saturation-$method.ttx"
# Add version to XML
@@ -89,25 +87,21 @@ EOF
# Compress with WOFF2
woff2_compress "$build_dir/fonts/OpenMoji-$saturation-$method/OpenMoji-$saturation-$method.ttf"
-
- # Generate font demo
- /mnt/helpers/generate-font-demo.js "OpenMoji-$saturation-$method.woff2" "$build_dir/fonts/OpenMoji-$saturation-$method"
done
done
-for colr_version in 0 1; do
+for colr_version in "${maximumColorVersions[@]}"; do
+ if [ -z "$colr_version" ]; then continue; fi
# Make TTF with both COLR and SVG font data in it
mkdir -p "$build_dir/fonts/OpenMoji-color-colr${colr_version}_svg"
- maximum_color \
+ maximum_color --build_dir="$build_dir/color" \
"$build_dir/fonts/OpenMoji-color-glyf_colr_${colr_version}/OpenMoji-color-glyf_colr_${colr_version}.ttf"\
--output_file "$build_dir/fonts/OpenMoji-color-colr${colr_version}_svg/OpenMoji-color-colr${colr_version}_svg.ttf"
woff2_compress "$build_dir/fonts/OpenMoji-color-colr${colr_version}_svg/OpenMoji-color-colr${colr_version}_svg.ttf"
- /mnt/helpers/generate-font-demo.js\
- "OpenMoji-color-colr${colr_version}_svg.woff2"\
- "$build_dir/fonts/OpenMoji-color-colr${colr_version}_svg"
+ rm -rf "$build_dir/fonts/OpenMoji-color-glyf_colr_${colr_version}"
done
echo "Done building fonts!"

View File

@@ -0,0 +1,109 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
nanoemoji,
python3Packages,
woff2,
xmlstarlet,
# available color formats: ["cbdt" "glyf_colr_0" "glyf_colr_1" "sbix" "picosvgz" "untouchedsvgz"]
# available black formats: ["glyf"]
fontFormats ? [
"glyf"
"cbdt"
"glyf_colr_0"
"glyf_colr_1"
],
# when at least one of the glyf_colr_0/1 formats is specified, whether to build maximum color fonts
# "none" to not build any, "svg" to build colr+svg, "bitmap" to build cbdt+colr+svg fonts
buildMaximumColorFonts ? "bitmap",
}:
let
# all available methods
methods = {
black = [ "glyf" ];
color = [
"cbdt"
"glyf_colr_0"
"glyf_colr_1"
"sbix"
"picosvgz"
"untouchedsvgz"
];
};
in
assert lib.asserts.assertEachOneOf "fontFormats" fontFormats (methods.black ++ methods.color);
assert lib.asserts.assertOneOf "buildMaximumColorFonts" buildMaximumColorFonts [
"none"
"bitmap"
"svg"
];
stdenvNoCC.mkDerivation rec {
pname = "openmoji";
version = "16.0.0";
src = fetchFromGitHub {
owner = "hfg-gmuend";
repo = "openmoji";
rev = version;
hash = "sha256-4dYtLaABu88z25Ud/cuOECajxSJWR01qcTIZNWN7Fhw=";
};
patches = [
# fix paths and variables for nix build and skip generating font demos
./build.patch
];
nativeBuildInputs = [
nanoemoji
python3Packages.fonttools
woff2
xmlstarlet
];
methods_black = builtins.filter (m: builtins.elem m fontFormats) methods.black;
methods_color = builtins.filter (m: builtins.elem m fontFormats) methods.color;
saturations =
lib.optional (methods_black != [ ]) "black" ++ lib.optional (methods_color != [ ]) "color";
maximumColorVersions = lib.optionals (buildMaximumColorFonts != "none") (
lib.optional (builtins.elem "glyf_colr_0" fontFormats) "0"
++ lib.optional (builtins.elem "glyf_colr_1" fontFormats) "1"
);
postPatch = lib.optionalString (buildMaximumColorFonts == "bitmap") ''
substituteInPlace helpers/generate-fonts-runner.sh \
--replace 'maximum_color' 'maximum_color --bitmaps'
'';
buildPhase = ''
runHook preBuild
bash helpers/generate-fonts-runner.sh "$(pwd)/build" "${version}"
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/share/fonts/truetype $out/share/fonts/woff2
cp build/fonts/*/*.ttf $out/share/fonts/truetype/
cp build/fonts/*/*.woff2 $out/share/fonts/woff2/
runHook postInstall
'';
meta = with lib; {
license = licenses.cc-by-sa-40;
maintainers = with maintainers; [
_999eagle
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";
};
}

View File

@@ -0,0 +1,67 @@
{
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 = "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=";
};
}

View File

@@ -0,0 +1,141 @@
{
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 = "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 = "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.005R";
hash = "sha256-oCTPF1lJSEfNR6rkN5vLPcUwAXxwnz9QPuDtkY3ZKVI=";
zip = ".zip";
prefix = "01_";
};
serif = makeSuperOTC {
family = "serif";
description = "serif";
rev = "2.003R";
hash = "sha256-buaJq1eJSuNa9gSnPpXDcr2gMGYQ/6F5pHCOjNR6eV8=";
zip = ".zip";
prefix = "01_";
};
mono = makeSuperOTC {
family = "mono";
description = "monospaced";
rev = "1.002";
hash = "sha256-DBkkSN6QhI8R64M2h2iDqaNtxluJZeSJYAz8x6ZzWME=";
};
sans-vf-otf = makeVariable {
family = "sans";
version = "2.005";
hash = "sha256-7/THncqTE6IpPezcX14eYRRC8WR/xPv0XjfOPEfF8aU=";
format = "otf";
};
sans-vf-ttf = makeVariable {
family = "sans";
version = "2.005";
hash = "sha256-CL5kjZzCiNvdcwiFflTlarINpeYxvuqZH+4ayiIQdD8=";
format = "ttf";
};
serif-vf-otf = makeVariable {
family = "serif";
version = "2.003";
hash = "sha256-a6295Ukha9QY5ByMr2FUy13j5gZ1itnezvfJWmJjqt0=";
format = "otf";
};
serif-vf-ttf = makeVariable {
family = "serif";
version = "2.003";
hash = "sha256-F+FUQunfyAEBVV10lZxC3dzGTWhHgHzpTO8CjC3n4WY=";
format = "ttf";
};
}

View File

@@ -0,0 +1,80 @@
{
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

View File

@@ -0,0 +1,97 @@
{
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 = [ ];
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";
};
}

View File

@@ -0,0 +1,63 @@
{
lib,
stdenvNoCC,
fetchFromGitLab,
breeze-icons,
gtk3,
gnome-icon-theme,
hicolor-icon-theme,
mint-x-icons,
pantheon,
jdupes,
}:
stdenvNoCC.mkDerivation rec {
pname = "BeautyLine";
version = "2.4";
src = fetchFromGitLab {
owner = "garuda-linux";
repo = "themes-and-settings/artwork/beautyline";
rev = "0df6f5df71c19496f9a873f8a52fbb5e84e95b12";
hash = "sha256-SsYW4H1qam7kQJ3E4/vHJJOv2E4Pdk3itGncWa6YTqw=";
};
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; [ lwb-2021 ];
};
}

View File

@@ -0,0 +1,30 @@
{
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; [ AdsonCicilioti ];
};
}

View File

@@ -0,0 +1,56 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
gtk3,
breeze-icons,
pantheon,
gnome-icon-theme,
hicolor-icon-theme,
}:
stdenvNoCC.mkDerivation rec {
pname = "flat-remix-icon-theme";
version = "20240201";
src = fetchFromGitHub {
owner = "daniruiz";
repo = "flat-remix";
rev = version;
sha256 = "sha256-3TkBRgoT2AW0Sb0CrXdxh53/jYARAMFC/TIj/r/zruo=";
};
nativeBuildInputs = [
gtk3
];
propagatedBuildInputs = [
breeze-icons
pantheon.elementary-icon-theme
gnome-icon-theme
hicolor-icon-theme
];
dontFixup = true;
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
symlinkParentIconThemes
recordPropagatedDependencies
'';
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 = [ ];
};
}

View File

@@ -0,0 +1,30 @@
{
stdenvNoCC,
fetchFromGitHub,
theme,
lib,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "gruppled-cursors";
version = "1.0.0";
src = fetchFromGitHub {
owner = "nim65s";
repo = "gruppled-cursors";
rev = "v${finalAttrs.version}";
hash = "sha256-ejlgdogjIYevZvB23si6bEeU6qY7rWXflaUyVk5MzqU=";
};
installPhase = ''
mkdir -p $out/share/icons/${theme}
cp -r ${theme}/{cursors,index.theme} $out/share/icons/${theme}
'';
meta = with lib; {
description = "Gruppled Cursors theme";
homepage = "https://github.com/nim65s/gruppled-cursors";
license = licenses.gpl2Only;
maintainers = with maintainers; [ nim65s ];
};
})

View File

@@ -0,0 +1,30 @@
{
stdenvNoCC,
fetchFromGitHub,
theme,
lib,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "gruppled-lite-cursors";
version = "1.0.0";
src = fetchFromGitHub {
owner = "nim65s";
repo = "gruppled-lite-cursors";
rev = "v${finalAttrs.version}";
hash = "sha256-adCXYu8v6mFKXubVQb/RCZXS87//YgixQp20kMt7KT8=";
};
installPhase = ''
mkdir -p $out/share/icons/${theme}
cp -r ${theme}/{cursors,index.theme} $out/share/icons/${theme}
'';
meta = with lib; {
description = "Gruppled Lite Cursors theme";
homepage = "https://github.com/nim65s/gruppled-lite-cursors";
license = licenses.gpl2Only;
maintainers = with maintainers; [ nim65s ];
};
})

View File

@@ -0,0 +1,46 @@
{
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 = "gruvbox-dark-icons-gtk";
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 ];
};
}

View File

@@ -0,0 +1,56 @@
{
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 = "la-capitaine-icon-theme";
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 ];
};
}

View File

@@ -0,0 +1,55 @@
{
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;
};
}

View File

@@ -0,0 +1,62 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
gtk3,
adwaita-icon-theme,
breeze-icons,
gnome-icon-theme,
hicolor-icon-theme,
gitUpdater,
}:
stdenvNoCC.mkDerivation rec {
pname = "numix-icon-theme";
version = "25.01.31";
src = fetchFromGitHub {
owner = "numixproject";
repo = "numix-icon-theme";
rev = version;
sha256 = "sha256-LON73XRVZQxbEMJ32qKXU/TYf6Q8nWU9wms7eT/DHa8=";
};
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 ];
};
}

View File

@@ -0,0 +1,57 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
gtk3,
breeze-icons,
gnome-icon-theme,
papirus-icon-theme,
hicolor-icon-theme,
}:
stdenv.mkDerivation {
pname = "papirus-maia-icon-theme";
version = "2019-07-26";
src = fetchFromGitHub {
owner = "Ste74";
repo = "papirus-maia-icon-theme";
rev = "90d47c817cc0edeed8b5a90335e669948ff4a116";
sha256 = "0d6lvdg5nw5wfaq8lxszcws174vg12ywkrqzn6czimhmhp48jf5p";
};
nativeBuildInputs = [
cmake
gtk3
];
propagatedBuildInputs = [
breeze-icons
gnome-icon-theme
papirus-icon-theme
hicolor-icon-theme
];
dontDropIconThemeCache = true;
dontWrapQtApps = true;
postPatch = ''
substituteInPlace CMakeLists.txt --replace /usr "$out"
'';
postInstall = ''
for theme in $out/share/icons/*; do
gtk-update-icon-cache $theme
done
'';
meta = {
description = "Manjaro variation of Papirus icon theme";
homepage = "https://github.com/Ste74/papirus-maia-icon-theme";
license = lib.licenses.lgpl3;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ romildo ];
};
}

View File

@@ -0,0 +1,53 @@
{
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 = "Basic set of icons";
homepage = "https://tango.freedesktop.org/Tango_Icon_Library";
platforms = platforms.linux;
license = licenses.publicDomain;
};
}

View File

@@ -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

View File

@@ -0,0 +1,33 @@
{
fetchurl,
lib,
newCatalog,
}:
newCatalog {
name = "json-patch-schemastore";
displayName = "JSON Patch as maintained by the https://www.schemastore.org community";
version = "2024-11-26";
groups = {
"JSON Patch" = {
"https://json.schemastore.org/json-patch.json" = fetchurl {
name = "json-patch-schema";
# Note that we don't use the json.schemastore.org URLs directly, as those are mutable resources.
# Make sure to update the version above!
url = "https://github.com/schemastore/schemastore/raw/138439cd4f9d7bf57d6747b674ce5bbcffbfafdc/src/schemas/json/json-patch.json";
hash = "sha256-vrqlgvlU61aEO6jd1SLLEqJDZG1k+eTBozcyPmhUp2U=";
};
};
};
extraDescription = ''
A JSON Patch is a sequence of editing and checking operations to perform against another JSON document.
It is specified in IETF RFC 6902: https://datatracker.ietf.org/doc/html/rfc6902/
The schema is maintained by the community at https://www.schemastore.org, which is a collection of JSON Schemas for various purposes.
'';
meta = {
maintainers = with lib.maintainers; [ roberth ];
license = lib.licenses.asl20;
changelog = "https://github.com/schemastore/schemastore/commits/master/src/schemas/json/json-patch.json";
};
}

View File

@@ -0,0 +1,39 @@
{
fetchurl,
lib,
newCatalog,
}:
newCatalog {
name = "json-schema";
displayName = "JSON Schema Metaschemas";
groups = {
"JSON Schema" = {
"http://json-schema.org/draft-04/schema#" = fetchurl {
name = "json-schema-draft-04";
url = "https://json-schema.org/draft-04/schema";
hash = "sha256-4UidC0dV8CeTMCWR0/y48Htok6gqlPJIlfjk7fEbguI=";
};
"http://json-schema.org/draft-06/schema#" = fetchurl {
name = "json-schema-draft-06";
url = "https://json-schema.org/draft-06/schema";
hash = "sha256-AGTogLohS/8c7lEeZ4++SMmCbdNZ6R4kI/w23mey6+E=";
};
"http://json-schema.org/draft-07/schema#" = fetchurl {
name = "json-schema-draft-07";
url = "https://json-schema.org/draft-07/schema";
hash = "sha256-aS4dFl5Hr8tfEbLOHGOWNf+oNANdbstrzzCHSB2uhAQ=";
};
# Unclear how newer metaschemas should be handled, so leaving them out for now.
# https://github.com/roberth/json-schema-catalog-rs/issues/8
};
};
meta = {
maintainers = with lib.maintainers; [ roberth ];
# https://github.com/json-schema-org/json-schema-spec/blob/main/LICENSE
license = [
lib.licenses.bsd3
lib.licenses.afl3
];
};
}

View File

@@ -0,0 +1,28 @@
{
lib,
newScope,
json-schema-catalog-rs,
jsonschema-cli,
}:
let
inherit (lib) concatMapAttrs optionalAttrs;
inherit (lib.strings) hasSuffix removeSuffix;
jsonSchemaCatalogs = lib.makeScope newScope (
self:
{
inherit ((self.callPackage ./lib.nix { }).lib) newCatalog;
tests = self.callPackage ./tests.nix { };
}
// concatMapAttrs (
k: v:
optionalAttrs (v == "regular" && hasSuffix ".nix" k) {
${removeSuffix ".nix" k} = self.callPackage (./catalogs + "/${k}") { };
}
) (builtins.readDir ./catalogs)
);
in
{
# Exported to `pkgs`
inherit jsonSchemaCatalogs;
}

View File

@@ -0,0 +1,120 @@
{
lib,
json-schema-catalog-rs,
runCommand,
jq,
}:
let
/**
A somewhat opinionated method for constructing a JSON Schema Catalog from files in a Nix store.
The input is a slightly simpler format:
```nix
{
name = "my-catalog"; # derivation name, default displayName
displayName = "My Catalog"; # optional
groups = {
"Group One" = {
"https://example.com/schemas/one-v1.json" = pkgs.fetchurl { ... };
"https://example.com/schemas/one-v2.json" = pkgs.fetchurl { ... };
"https://example.com/schemas/one-common.json" = pkgs.fetchurl { ... };
};
"Group Two" = {
"https://example.com/schemas/two-v1.json" = ./two-v1.json; # Files can be local
};
};
}
```
*/
newCatalog =
{
name,
displayName ? name,
groups,
version ? null,
extraDescription ? null,
meta ? { },
}:
let
# lazyDerivation tidies up the package attributes
package = lib.lazyDerivation {
derivation = drv;
passthru = {
name = "catalog-${name}";
internals = drv;
}
// lib.optionalAttrs (version != null) {
inherit version;
};
meta = {
description = "JSON Schema Catalog for ${displayName}";
longDescription =
let
licenses = lib.toList meta.license;
show = license: license.fullName or license;
theLicensesApply =
if lib.length licenses == 1 then
"The package license, ${show (lib.head licenses)}, applies"
else
"The package licenses, ${lib.concatMapStringsSep " / " show licenses}, apply";
in
''
A JSON Schema Catalog is a mapping from URIs to JSON Schema documents.
It enables offline use, e.g. in build processes, and therefore it improves performance, robustness and safety.
${lib.optionalString (extraDescription != null) "\n${extraDescription}\n"}
${theLicensesApply} to the schemas in this catalog. The catalog file itself is licensed under the terms of the Nix expression that governs it, e.g. MIT in the case of Nixpkgs.
'';
}
// meta;
};
drvArgs = {
pname = name;
catalogJson = builtins.toJSON {
name = displayName;
groups = lib.mapAttrsToList (name: group: {
inherit name;
# TODO dedup the longest common prefix by putting it in baseLocation
baseLocation = "/";
schemas = lib.mapAttrsToList (id: location: {
inherit id;
inherit location;
}) group;
}) groups;
};
passAsFile = [ "catalogJson" ];
passthru = {
inherit groups;
};
nativeBuildInputs = [
jq
json-schema-catalog-rs
];
}
// lib.optionalAttrs (version != null) {
inherit version;
};
drv = runCommand "${package.name}${lib.optionalString (version != null) "-${version}"}" drvArgs ''
out_dir="$out/share/json-schema-catalogs"
out_file="$out_dir/$name.json"
mkdir -p "$out_dir"
# Write the catalog JSON. `jq` formats it nicely.
jq . <"$catalogJsonPath" >"$out_file"
json-schema-catalog check "$out_file"
'';
in
package;
in
{
lib =
# Exported as part of `pkgs.jsonSchemaCatalogs`
{
inherit newCatalog;
};
}

View File

@@ -0,0 +1,69 @@
{
json-schema,
lib,
json-schema-catalog-rs,
runCommand,
}:
lib.recurseIntoAttrs {
test-with-json-schema-catalog-rs =
runCommand "json-schema-catalogs-integration-test"
{
nativeBuildInputs = [
json-schema
json-schema-catalog-rs
];
}
''
cat >example.json <<"EOF"
{
"$id": "https://example.com/schemas/integration-test.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Integration Test",
"type": "object",
"oneOf": [
{
"$ref": "http://json-schema.org/draft-07/schema#"
},
{
"$ref": "http://json-schema.org/draft-07/schema#/definitions/yolo"
},
{
"$ref": "./foo.json#/definitions/bar"
}
]
}
EOF
cat >example.json.expected <<"EOF"
{
"$id": "https://example.com/schemas/integration-test.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"oneOf": [
{
"$ref": "file://${
json-schema.internals.groups."JSON Schema"."http://json-schema.org/draft-07/schema#"
}#"
},
{
"$ref": "file://${
json-schema.internals.groups."JSON Schema"."http://json-schema.org/draft-07/schema#"
}#/definitions/yolo"
},
{
"$ref": "./foo.json#/definitions/bar"
}
],
"title": "Integration Test",
"type": "object"
}
EOF
( set -x;
! grep '##' example.json.expected
)
json-schema-catalog replace --verbose example.json > example.json.out
diff -U3 --color=always example.json.expected example.json.out
touch $out
'';
}

View File

@@ -0,0 +1,72 @@
{
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=";
};
};
}

View File

@@ -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;

View File

@@ -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

View File

@@ -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;

View File

@@ -0,0 +1,50 @@
{
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 = "Set of default and supplemental wallpapers for Fedora";
license = licenses.cc-by-sa-40;
platforms = platforms.unix;
maintainers = [ ];
};
}

View File

@@ -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;
}

View File

@@ -0,0 +1,6 @@
{
"commit": "c074fec58a2c83bfb17c273302005fe2625207f1",
"url": "https://github.com/commercialhaskell/all-cabal-hashes/archive/c074fec58a2c83bfb17c273302005fe2625207f1.tar.gz",
"sha256": "1my6xrg3m694fr3k5386yx5wqd2j0wdxfx6g3scnh5af0sx2hx0w",
"msg": "Update from Hackage at 2025-09-14T21:34:10Z"
}

View File

@@ -0,0 +1,5 @@
{ callPackage }:
{
wallpapers = callPackage ./wallpapers.nix { };
}

View File

@@ -0,0 +1,441 @@
{
lib,
stdenv,
fetchurl,
}:
let
mkNixBackground =
{
name,
src,
description,
license ? lib.licenses.free,
}:
let
pkg = stdenv.mkDerivation {
inherit name src;
dontUnpack = true;
installPhase = ''
runHook preInstall
# 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
runHook postInstall
'';
passthru = {
gnomeFilePath = "${pkg}/share/backgrounds/nixos/${src.name}";
kdeFilePath = "${pkg}/share/wallpapers/${name}/contents/images/${src.name}";
};
meta = with lib; {
inherit description license;
homepage = "https://github.com/NixOS/nixos-artwork";
platforms = platforms.all;
};
};
in
pkg;
in
rec {
binary-black = mkNixBackground {
name = "binary-black-2024-02-15";
description = "Black binary wallpaper for Nix";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/8957e93c95867faafec7f9988cedddd6837859fa/wallpapers/nix-wallpaper-binary-black.png";
hash = "sha256-mhSh0wz2ntH/kri3PF5ZrFykjjdQLhmlIlDDGFQIYWw=";
};
license = lib.licenses.cc-by-sa-40;
};
binary-blue = mkNixBackground {
name = "binary-blue-2024-02-15";
description = "Blue binary wallpaper for Nix";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/8957e93c95867faafec7f9988cedddd6837859fa/wallpapers/nix-wallpaper-binary-blue.png";
hash = "sha256-oVIRSgool/CsduGingDr0FuJJIkGtfQHXYn0JBI2eho=";
};
license = lib.licenses.cc-by-sa-40;
};
binary-red = mkNixBackground {
name = "binary-red-2024-02-15";
description = "Red binary wallpaper for Nix";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/8957e93c95867faafec7f9988cedddd6837859fa/wallpapers/nix-wallpaper-binary-red.png";
hash = "sha256-18UvtroyuAnluJ3EoLJWJAwN8T83s/ImPtsr5QTqvAA=";
};
license = lib.licenses.cc-by-sa-40;
};
binary-white = mkNixBackground {
name = "binary-white-2024-02-15";
description = "White binary wallpaper for Nix";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/8957e93c95867faafec7f9988cedddd6837859fa/wallpapers/nix-wallpaper-binary-white.png";
hash = "sha256-imj+OmuhTNxRtE54715wWQUA7pe1f32+q3qi2V37i8U=";
};
license = lib.licenses.cc-by-sa-40;
};
catppuccin-frappe = mkNixBackground {
name = "catppuccin-frappe-2024-02-15";
description = "Catppuccin Frappé colorscheme wallpaper for NixOS";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/97444e18b7fe97705e8caedd29ae05e62cb5d4b7/wallpapers/nixos-wallpaper-catppuccin-frappe.png";
hash = "sha256-wtBffKK9rqSJo8+7Wo8OMruRlg091vdroyUZj5mDPfI=";
};
license = lib.licenses.cc-by-sa-40;
};
catppuccin-latte = mkNixBackground {
name = "catppuccin-latte-2024-02-15";
description = "Catppuccin Latte colorscheme wallpaper for NixOS";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/97444e18b7fe97705e8caedd29ae05e62cb5d4b7/wallpapers/nixos-wallpaper-catppuccin-latte.png";
hash = "sha256-Y6WCwmHOLBStj1D9mcU2082y1fhAFHna01ajfUHxehk=";
};
license = lib.licenses.cc-by-sa-40;
};
catppuccin-macchiato = mkNixBackground {
name = "catppuccin-macchiato-2024-02-15";
description = "Catppuccin Macchiato colorscheme wallpaper for NixOS";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/97444e18b7fe97705e8caedd29ae05e62cb5d4b7/wallpapers/nixos-wallpaper-catppuccin-macchiato.png";
hash = "sha256-SkXrLbHvBOItJ7+8vW+6iXV+2g0f8bUJf9KcCXYOZF0=";
};
license = lib.licenses.cc-by-sa-40;
};
catppuccin-mocha = mkNixBackground {
name = "catppuccin-mocha-2024-02-15";
description = "Catppuccin Mochacolorscheme wallpaper for NixOS";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/97444e18b7fe97705e8caedd29ae05e62cb5d4b7/wallpapers/nixos-wallpaper-catppuccin-mocha.png";
hash = "sha256-fmKFYw2gYAYFjOv4lr8IkXPtZfE1+88yKQ4vjEcax1s=";
};
license = lib.licenses.cc-by-sa-40;
};
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";
hash = "sha256-SykeFJXCzkeaxw06np0QkJCK28e0k30PdY8ZDVcQnh4=";
};
license = lib.licenses.cc-by-sa-40;
};
gear = mkNixBackground {
name = "gear-2022-04-19";
description = "3D wallpaper for Nix";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/bcdd2770f5f4839fddc9b503e68db2bc3a87ca4d/wallpapers/nix-wallpaper-gear.png";
hash = "sha256-2sT6b49/iClTs9QuUvpmZ5gcIeXI9kebs5IqgQN1RL8=";
};
license = lib.licenses.cc-by-sa-40;
};
gnome-dark = simple-dark-gray-bottom;
gradient-grey = mkNixBackground {
name = "gradient-grey-2018-10-20";
description = "Simple grey gradient background for NixOS";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/3f7695afe75239720a32d6c38df7c9888b5ed581/wallpapers/NixOS-Gradient-grey.png";
hash = "sha256-Tf4Xruf608hpl7YwL4Mq9l9egBOCN+W4KFKnqrgosLE=";
};
# license not clarified
};
moonscape = mkNixBackground {
name = "moonscape-2022-04-19";
description = "3D wallpaper for Nix";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/bcdd2770f5f4839fddc9b503e68db2bc3a87ca4d/wallpapers/nix-wallpaper-moonscape.png";
hash = "sha256-AR3W8avHzQLxMNLfD/A1efyZH+vAdTLKllEhJwBl0xc=";
};
license = lib.licenses.cc-by-sa-40;
};
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";
hash = "sha256-xZbNK8s3/ooRvyeHGxhcYnnifeGAiAnUjw9EjJTWbLE=";
};
license = lib.licenses.cc0;
};
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";
hash = "sha256-EMSD1XQLaqHs0NbLY0lS1oZ4rKznO+h9XOGDS121m9c=";
};
license = lib.licenses.cc-by-sa-40;
};
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";
hash = "sha256-nhIUtCy/Hb8UbuxXeL3l3FMausjQrnjTVi1B3GkL9B8=";
};
license = lib.licenses.cc-by-sa-40;
};
nineish-solarized-dark = mkNixBackground {
name = "nineish-dark-gray-2021-07-20";
description = "Solarized dark Nix background inspired by simpler times";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/f99638d8d1a11d97a99ff7e0e1e7df58c28643ff/wallpapers/nix-wallpaper-nineish-solarized-dark.png";
hash = "sha256-ZBrk9izKvsY4Hzsr7YovocCbkRVgUN9i/y1B5IzOOKo=";
};
license = lib.licenses.cc-by-sa-40;
};
nineish-solarized-light = mkNixBackground {
name = "nineish-dark-light-2021-07-20";
description = "Solarized light Nix background inspired by simpler times";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/f99638d8d1a11d97a99ff7e0e1e7df58c28643ff/wallpapers/nix-wallpaper-nineish-solarized-light.png";
hash = "sha256-gb5s5ePdw7kuIL3SI8VVhOcLcHu0cHMJJ623vg1kz40=";
};
license = lib.licenses.cc-by-sa-40;
};
nineish-catppuccin-frappe-alt = mkNixBackground {
name = "nineish-catppuccin-frappe-alt-2025-01-27";
description = "Alternative Catppuccin Frappe wallpaper for Nix inspired by simpler times";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/33856d7837cb8ba76c4fc9e26f91a659066ee31f/wallpapers/nix-wallpaper-nineish-catppuccin-frappe-alt.png";
hash = "sha256-ZbtgfBE09FhCTPPCzDlOrSoRUmv1lmhxiNTvHDldF/4=";
};
license = lib.licenses.cc-by-sa-40;
};
nineish-catppuccin-frappe = mkNixBackground {
name = "nineish-catppuccin-frappe-2025-01-27";
description = "Catppuccin Frappe wallpaper for Nix inspired by simpler times";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/33856d7837cb8ba76c4fc9e26f91a659066ee31f/wallpapers/nix-wallpaper-nineish-catppuccin-frappe.png";
hash = "sha256-/HAtpGwLxjNfJvX5/4YZfM8jPNStaM3gisK8+ImRmQ4=";
};
license = lib.licenses.cc-by-sa-40;
};
nineish-catppuccin-latte-alt = mkNixBackground {
name = "nineish-catppuccin-latte-alt-2025-01-27";
description = "Alternative Catppuccin Latte wallpaper for Nix inspired by simpler times";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/33856d7837cb8ba76c4fc9e26f91a659066ee31f/wallpapers/nix-wallpaper-nineish-catppuccin-latte-alt.png";
hash = "sha256-UyUQ4YQYlJrjoUX6qU6cGWjhA1AnIpQgniQermUtO2w=";
};
license = lib.licenses.cc-by-sa-40;
};
nineish-catppuccin-latte = mkNixBackground {
name = "nineish-catppuccin-latte-2025-01-27";
description = "Catppuccin Latte wallpaper for Nix inspired by simpler times";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/33856d7837cb8ba76c4fc9e26f91a659066ee31f/wallpapers/nix-wallpaper-nineish-catppuccin-latte.png";
hash = "sha256-+DirQiQ1TUeB+e2AeJD8mWjt0OTWtrqkeqZrVr5v5iY=";
};
license = lib.licenses.cc-by-sa-40;
};
nineish-catppuccin-macchiato-alt = mkNixBackground {
name = "nineish-catppuccin-macchiato-alt-2025-01-27";
description = "Alternative Catppuccin Macchiato wallpaper for Nix inspired by simpler times";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/33856d7837cb8ba76c4fc9e26f91a659066ee31f/wallpapers/nix-wallpaper-nineish-catppuccin-macchiato-alt.png";
hash = "sha256-OUT0SsToRH5Zdd+jOwhr9iVBoVNUKhUkJNBYFDKZGOU=";
};
license = lib.licenses.cc-by-sa-40;
};
nineish-catppuccin-macchiato = mkNixBackground {
name = "nineish-catppuccin-macchiato-2025-01-27";
description = "Catppuccin Macchiato wallpaper for Nix inspired by simpler times";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/33856d7837cb8ba76c4fc9e26f91a659066ee31f/wallpapers/nix-wallpaper-nineish-catppuccin-macchiato.png";
hash = "sha256-1JWgytxOvI0hwkCk+1hdZqhLB0u5aHEyEcsmlo4kMuw=";
};
license = lib.licenses.cc-by-sa-40;
};
nineish-catppuccin-mocha-alt = mkNixBackground {
name = "nineish-catppuccin-mocha-alt-2025-01-27";
description = "Alternative Catppuccin Mocha wallpaper for Nix inspired by simpler times";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/33856d7837cb8ba76c4fc9e26f91a659066ee31f/wallpapers/nix-wallpaper-nineish-catppuccin-mocha-alt.png";
hash = "sha256-ThDrZIJIyO2DdIW41sV6iYyCNhM89cwHr8l6DAfbXjI=";
};
license = lib.licenses.cc-by-sa-40;
};
nineish-catppuccin-mocha = mkNixBackground {
name = "nineish-catppuccin-mocha-2025-01-27";
description = "Catppuccin Mocha wallpaper for Nix inspired by simpler times";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/33856d7837cb8ba76c4fc9e26f91a659066ee31f/wallpapers/nix-wallpaper-nineish-catppuccin-mocha.png";
hash = "sha256-zlYqSid5Q1L5sUrAcvR+7aN2jImiuoR9gygBRk8x9Wo=";
};
license = lib.licenses.cc-by-sa-40;
};
recursive = mkNixBackground {
name = "recursive-2022-04-19";
description = "3D wallpaper for Nix";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/bcdd2770f5f4839fddc9b503e68db2bc3a87ca4d/wallpapers/nix-wallpaper-recursive.png";
hash = "sha256-YvFrlysNGMwJ7eMFOoz0KI8AjoPN3ao+AVOgnVZzkFE=";
};
license = lib.licenses.cc-by-sa-40;
};
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";
hash = "sha256-utrcjzfeJoFOpUbFY2eIUNCKy5rjLt57xIoUUssJmdI=";
};
license = lib.licenses.cc0;
};
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";
hash = "sha256-JaLHdBxwrphKVherDVe5fgh+3zqUtpcwuNbjwrBlAok=";
};
license = lib.licenses.cc0;
};
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";
hash = "sha256-Sd52CEw/pHmk6Cs+yrM/8wscG9bvYuECylQd27ybRmw=";
};
# license not clarified
};
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";
hash = "sha256-JUyzf9dYRyLQmxJPKptDxXL7yRqAFt5uM0C9crkkEY4=";
};
# license not clarified
};
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";
hash = "sha256-Ylo5H5OrU/t9vwLbfO0OyPIsB/0vS5iUPTt/G3YHzUQ=";
};
license = lib.licenses.cc0;
};
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";
hash = "sha256-WnKjgvnn5Rg4R3xaJQ2mhBHQqCfl9jV6Xx3hEXW+uZk=";
};
license = lib.licenses.cc0;
};
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";
hash = "sha256-1MoPwytw8kBiy+Sx70xmHnxMJgqEaOR9YEgQMO6bEjM=";
};
license = lib.licenses.cc0;
};
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";
hash = "sha256-o3GqbFZ/18ScLOlAL6GRy54l8P/U6wUeeK4HtPkZw4Q=";
};
license = lib.licenses.cc0;
};
waterfall = mkNixBackground {
name = "waterfall-2022-04-19";
description = "3D wallpaper for Nix";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/bcdd2770f5f4839fddc9b503e68db2bc3a87ca4d/wallpapers/nix-wallpaper-waterfall.png";
hash = "sha256-ULFNUZPU9khDG6rtkMskLe5sYpUcrJVvcFvEkpvXjMM=";
};
license = lib.licenses.cc-by-sa-40;
};
watersplash = mkNixBackground {
name = "watersplash-2022-04-19";
description = "3D wallpaper for Nix";
src = fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/bcdd2770f5f4839fddc9b503e68db2bc3a87ca4d/wallpapers/nix-wallpaper-watersplash.png";
hash = "sha256-6Gdjzq3hTvUH7GeZmZnf+aOQruFxReUNEryAvJSgycQ=";
};
license = lib.licenses.cc-by-sa-40;
};
}

View File

@@ -0,0 +1,41 @@
{
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;
};
}

View File

@@ -0,0 +1,41 @@
{
lib,
stdenv,
fetchurl,
unzip,
}:
let
src = fetchurl {
url = "http://www.oasis-open.org/docbook/sgml/4.1/docbk41.zip";
sha256 = "04b3gp4zkh9c5g9kvnywdkdfkcqx3kjc04j4mpkr4xk7lgqgrany";
};
isoents = fetchurl {
url = "https://web.archive.org/web/20250220122223/http://xml.coverpages.org/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;
};
}

View File

@@ -0,0 +1,33 @@
{
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
";
}

View File

@@ -0,0 +1,21 @@
{
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";
};
}

View File

@@ -0,0 +1,21 @@
{
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";
};
}

View File

@@ -0,0 +1,21 @@
{
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";
};
}

View File

@@ -0,0 +1,21 @@
{
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";
};
}

View File

@@ -0,0 +1,33 @@
{
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;
};
}

View File

@@ -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>

View File

@@ -0,0 +1,109 @@
{
lib,
stdenv,
replaceVars,
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
(replaceVars ./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 = [ ];
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";
};
}

View File

@@ -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]|

View File

@@ -0,0 +1,73 @@
{
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 = "adwaita-qt";
rev = version;
sha256 = "sha256-K/+SL52C+M2OC4NL+mhBnm/9BwH0KNNTGIDmPwuUwkM=";
};
nativeBuildInputs = [
cmake
ninja
];
buildInputs = [
qtbase
]
++ lib.optionals stdenv.hostPlatform.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 = "Style to bend Qt applications to look like they belong into GNOME Shell";
homepage = "https://github.com/FedoraQt/adwaita-qt";
license = licenses.gpl2Plus;
maintainers = [ ];
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,69 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
gtk-engine-murrine,
}:
stdenvNoCC.mkDerivation {
pname = "andromeda-gtk-theme";
version = "0-unstable-2024-06-24";
srcs = [
(fetchFromGitHub {
owner = "EliverLara";
repo = "Andromeda-gtk";
rev = "1d86d5cab146a1841bfe2e5c4f0a109b315cfd98";
hash = "sha256-YzmNo7WZjF/BLKgT2wJXk0ms8bb5AydFcfPzFmRrhkU=";
name = "Andromeda";
})
(fetchFromGitHub {
owner = "EliverLara";
repo = "Andromeda-gtk";
rev = "7b0f5508269695054306eec10bd56ef5598ddf4a";
hash = "sha256-Bi5G3zs1bFYbOf74864eZHPUIJvBbByQNtDfqkNUSxo=";
name = "Andromeda-standard-buttons";
})
];
sourceRoot = ".";
propagatedUserEnvPkgs = [
gtk-engine-murrine
];
installPhase = ''
runHook preInstall
mkdir -p $out/share/themes
cp -a Andromeda* $out/share/themes
# remove uneeded files, which are not distributed in https://www.gnome-look.org/p/2039961/
rm -rf $out/share/themes/*/.gitignore
rm -rf $out/share/themes/*/Art
rm -rf $out/share/themes/*/LICENSE
rm -rf $out/share/themes/*/README.md
rm -rf $out/share/themes/*/{package.json,package-lock.json,Gulpfile.js}
rm -rf $out/share/themes/*/src
rm -rf $out/share/themes/*/cinnamon/*.scss
rm -rf $out/share/themes/*/gnome-shell/{earlier-versions,extensions,*.scss}
rm -rf $out/share/themes/*/gtk-2.0/{assets.svg,assets.txt,links.fish,render-assets.sh}
rm -rf $out/share/themes/*/gtk-3.0/{apps,widgets,*.scss}
rm -rf $out/share/themes/*/gtk-4.0/{apps,widgets,*.scss}
rm -rf $out/share/themes/*/xfwm4/{assets,render_assets.fish}
runHook postInstall
'';
meta = with lib; {
description = "Elegant dark theme for gnome, mate, budgie, cinnamon, xfce";
homepage = "https://github.com/EliverLara/Andromeda-gtk";
license = licenses.gpl3Only;
platforms = platforms.linux;
maintainers = with maintainers; [
jakedevs
romildo
];
};
}

View File

@@ -0,0 +1,39 @@
{
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 ];
};
}

View File

@@ -0,0 +1,39 @@
{
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 ];
};
}

View File

@@ -0,0 +1,39 @@
{
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 = "Flat and light theme with a modern look";
homepage = "https://github.com/EliverLara/${themeName}";
license = licenses.gpl3;
platforms = platforms.all;
maintainers = with maintainers; [ alexarice ];
};
}

View File

@@ -0,0 +1,62 @@
{
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 = "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.
'';
};
}

View File

@@ -0,0 +1,67 @@
{
lib,
formats,
stdenvNoCC,
fetchFromGitHub,
qtgraphicaleffects,
/*
An example of how you can override the background with a NixOS wallpaper
*
* environment.systemPackages = [
* (pkgs.elegant-sddm.override {
* themeConfig.General = {
background = "${pkgs.nixos-artwork.wallpapers.simple-dark-gray-bottom.gnomeFilePath}";
* };
* })
* ];
*/
themeConfig ? null,
}:
let
user-cfg = (formats.ini { }).generate "theme.conf.user" themeConfig;
in
stdenvNoCC.mkDerivation {
pname = "elegant-sddm";
version = "unstable-2024-02-08";
src = fetchFromGitHub {
owner = "surajmandalcell";
repo = "Elegant-sddm";
rev = "3102e880f46a1b72c929d13cd0a3fb64f973952a";
hash = "sha256-yn0fTYsdZZSOcaYlPCn8BUIWeFIKcTI1oioTWqjYunQ=";
};
propagatedBuildInputs = [
qtgraphicaleffects
];
dontWrapQtApps = true;
installPhase = ''
runHook preInstall
mkdir -p "$out/share/sddm/themes"
cp -r Elegant/ "$out/share/sddm/themes/Elegant"
''
+ (lib.optionalString (lib.isAttrs themeConfig) ''
ln -sf ${user-cfg} $out/share/sddm/themes/Elegant/theme.conf.user
'')
+ ''
runHook postInstall
'';
postFixup = ''
mkdir -p $out/nix-support
echo ${qtgraphicaleffects} >> $out/nix-support/propagated-user-env-packages
'';
meta = with lib; {
description = "Sleek and stylish SDDM theme crafted in QML";
homepage = "https://github.com/surajmandalcell/Elegant-sddm";
license = licenses.gpl3;
maintainers = with maintainers; [ GaetanLepage ];
};
}

View File

@@ -0,0 +1,41 @@
{
stdenv,
fetchFromGitHub,
theme,
lib,
}:
stdenv.mkDerivation rec {
pname = "gtk-theme-framework";
version = "0.2.3";
src = fetchFromGitHub {
owner = "jaxwilko";
repo = "gtk-theme-framework";
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 = [ ];
};
}

View File

@@ -0,0 +1,45 @@
{
stdenv,
fetchFromGitHub,
cmake,
extra-cmake-modules,
wrapQtAppsHook,
qtbase,
kwin,
kcmutils,
libepoxy,
libxcb,
lib,
}:
stdenv.mkDerivation rec {
pname = "kde-rounded-corners";
version = "0.8.5";
src = fetchFromGitHub {
owner = "matinlotfali";
repo = "KDE-Rounded-Corners";
rev = "v${version}";
hash = "sha256-ef63PVG0JOHY4zyq5M5oAAcxtfhm1XOvpsxgSeXvgDo=";
};
nativeBuildInputs = [
cmake
extra-cmake-modules
wrapQtAppsHook
];
buildInputs = [
kcmutils
kwin
libepoxy
libxcb
qtbase
];
meta = with lib; {
description = "Rounds the corners of your windows";
homepage = "https://github.com/matinlotfali/KDE-Rounded-Corners";
license = licenses.gpl3Only;
maintainers = with maintainers; [ devusb ];
};
}

View File

@@ -0,0 +1,41 @@
{
stdenv,
fetchFromGitHub,
cmake,
extra-cmake-modules,
wrapQtAppsHook,
kwin,
lib,
}:
stdenv.mkDerivation rec {
pname = "sierra-breeze-enhanced";
version = "2.1.1";
src = fetchFromGitHub {
owner = "kupiqu";
repo = "SierraBreezeEnhanced";
rev = if version == "2.1.1" then "V.2.1.1" else "V${version}";
hash = "sha256-7mQnJCQr/zm9zEdg2JPr7jQn8uajyCXvyYRQZWxG+Q8=";
};
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; [ A1ca7raz ];
};
}

View File

@@ -0,0 +1,109 @@
{
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 = "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 ];
};
}

View File

@@ -0,0 +1,73 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
unstableGitUpdater,
}:
# NOTE:
#
# In order to use the qogir sddm theme, the packages
# kdePackages.plasma-desktop and kdePackages.qtsvg should be added to
# the option services.displayManager.sddm.extraPackages of the sddm
# module:
#
# environment.systemPackages = with pkgs; [
# qogir-kde
# ];
#
# services.displayManager.sddm = {
# enable = true;
# package = pkgs.kdePackages.sddm;
# theme = "Qogir";
# extraPackages = with pkgs; [
# kdePackages.plasma-desktop
# kdePackages.qtsvg
# ];
# };
stdenvNoCC.mkDerivation {
pname = "qogir-kde";
version = "0-unstable-2024-12-21";
src = fetchFromGitHub {
owner = "vinceliuice";
repo = "qogir-kde";
rev = "31e7bbf94e905ef40d262d2bc6063156df252470";
hash = "sha256-zgXwYmpD31vs2Gyg21m0MdOkwqzSn6V21Kva+nvNeVI=";
};
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 = unstableGitUpdater { };
meta = {
description = "Flat Design theme for KDE Plasma desktop";
homepage = "https://github.com/vinceliuice/Qogir-kde";
license = lib.licenses.gpl3Only;
platforms = lib.platforms.all;
maintainers = [ lib.maintainers.romildo ];
};
}

View File

@@ -0,0 +1,107 @@
{
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 = [ ];
};
}

View File

@@ -0,0 +1,61 @@
{
pkgs,
lib,
stdenvNoCC,
themeConfig ? null,
embeddedTheme ? "astronaut",
}:
stdenvNoCC.mkDerivation rec {
pname = "sddm-astronaut";
version = "1.0-unstable-2025-01-05";
src = pkgs.fetchFromGitHub {
owner = "Keyitdev";
repo = "sddm-astronaut-theme";
rev = "11c0bf6147bbea466ce2e2b0559e9a9abdbcc7c3";
hash = "sha256-gBSz+k/qgEaIWh1Txdgwlou/Lfrfv3ABzyxYwlrLjDk=";
};
dontWrapQtApps = true;
propagatedBuildInputs = with pkgs.kdePackages; [
qtsvg
qtmultimedia
qtvirtualkeyboard
];
installPhase =
let
iniFormat = pkgs.formats.ini { };
configFile = iniFormat.generate "" { General = themeConfig; };
basePath = "$out/share/sddm/themes/sddm-astronaut-theme";
sedString = "ConfigFile=Themes/";
in
''
mkdir -p ${basePath}
cp -r $src/* ${basePath}
''
+ lib.optionalString (embeddedTheme != "astronaut") ''
# Replaces astronaut.conf with embedded theme in metadata.desktop on line 9.
# ConfigFile=Themes/astronaut.conf.
sed -i "s|^${sedString}.*\\.conf$|${sedString}${embeddedTheme}.conf|" ${basePath}/metadata.desktop
''
+ lib.optionalString (themeConfig != null) ''
chmod u+w ${basePath}/Themes/
ln -sf ${configFile} ${basePath}/Themes/${embeddedTheme}.conf.user
'';
meta = {
description = "Modern looking qt6 sddm theme";
homepage = "https://github.com/${src.owner}/${src.repo}";
license = lib.licenses.gpl3;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [
danid3v
uxodb
];
};
}

View File

@@ -0,0 +1,46 @@
{
pkgs,
lib,
stdenvNoCC,
themeConfig ? null,
}:
stdenvNoCC.mkDerivation rec {
pname = "sddm-sugar-dark";
version = "1.2";
src = pkgs.fetchFromGitHub {
owner = "MarianArlt";
repo = "sddm-sugar-dark";
rev = "v${version}";
hash = "sha256-C3qB9hFUeuT5+Dos2zFj5SyQegnghpoFV9wHvE9VoD8=";
};
dontWrapQtApps = true;
buildInputs = with pkgs.libsForQt5.qt5; [ qtgraphicaleffects ];
installPhase =
let
iniFormat = pkgs.formats.ini { };
configFile = iniFormat.generate "" { General = themeConfig; };
basePath = "$out/share/sddm/themes/sugar-dark";
in
''
mkdir -p ${basePath}
cp -r $src/* ${basePath}
''
+ lib.optionalString (themeConfig != null) ''
ln -sf ${configFile} ${basePath}/theme.conf.user
'';
meta = {
description = "Dark SDDM theme from the sugar family";
homepage = "https://github.com/${src.owner}/${pname}";
license = lib.licenses.gpl3;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ danid3v ];
};
}