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,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)