refactor: change to litterate config

Configuration is now held by the `.org` files. All `.nix` files are
tangled from the org-mode files.
This commit is contained in:
2026-10-11 16:55:06 +02:00
parent 5f4a7a4a42
commit 0cb44b51e7
82 changed files with 3419 additions and 592 deletions
-6
View File
@@ -1,7 +1,3 @@
# Baseline variant of Bun for x86_64-linux CPUs without AVX2 support.
# The regular `bun` from nixpkgs requires AVX2 and crashes with SIGILL on older hardware.
#
# Version is typically kept in sync with nixpkgs's `bun` (passed via `callPackage`).
{
lib,
stdenvNoCC,
@@ -13,8 +9,6 @@
stdenv,
version ? "1.3.13",
}: let
# When updating `version`, compute the new hash with:
# nix store prefetch-file "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-linux-x64-baseline.zip"
hash = {
"1.3.13" = "sha256-nYokKSpwaAkCBdqsCloiP19pc29Sh+N7+I07QDHtx1A=";
};
+88
View File
@@ -0,0 +1,88 @@
# https://cairns.gg/
{
stdenv,
fetchzip,
makeWrapper,
lib,
fontconfig,
freetype,
libx11,
libxext,
libxrandr,
libxinerama,
libxi,
libxcursor,
libxrender,
libxfixes,
libxtst,
libxcb,
libxkbcommon,
libglvnd,
libICE,
libSM,
dbus,
libxshmfence,
}:
stdenv.mkDerivation rec {
pname = "cairn";
version = "0.9.11";
src = fetchzip {
url = "https://download.cairns.gg/releases/${version}/${pname}-${version}-linux-x64.tar.gz";
hash = "sha256-UbjeEbP4o6y+0j1oeF3RwqTuunGB5wD0CSpdFDk97/U=";
};
nativeBuildInputs = [makeWrapper];
dontBuild = true;
dontPatchELF = true;
dontStrip = true;
installPhase = ''
runHook preInstall
install -Dm755 $src/cairn $out/bin/cairn
wrapProgram $out/bin/cairn \
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [
stdenv.cc.cc.lib
fontconfig
freetype
libx11
libxext
libxrandr
libxinerama
libxi
libxcursor
libxrender
libxfixes
libxtst
libxcb
libxkbcommon
libglvnd
libICE
libSM
dbus
libxshmfence
]}
mkdir -p $out/share/applications
cat > $out/share/applications/cairn.desktop <<EOF
[Desktop Entry]
Version=0.9.11
Name=Cairns
Comment=Modpacks for Vintage Story
Exec=$out/bin/cairn
Icon=cairn
Terminal=false
Type=Application
Categories=Games
EOF
install -Dm644 ${./cairn.svg} $out/share/icons/hicolor/scalable/apps/${pname}.svg
runHook postInstall
'';
meta = {
description = "Modpacks for Vintage Story";
homepage = "https://cairns.gg/";
platforms = ["x86_64-linux"];
};
}
+73
View File
@@ -0,0 +1,73 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024">
<!--
Cairn: the stack of stones you build so you can find the exact way back.
Palette is the game's own Vintagestory.API.Client.GuiStyle, the same source the
launcher's theme draws from, so the icon sits next to the app rather than merely
near it. Stones lighten as they rise and the cap is ColorRust1 — the accent already
carried by the Play button and the selected tab.
Constraint that drove the shapes: this has to survive 16x16 in a Windows taskbar.
So the silhouette does the work — a clear taper, five stones, dark gaps wide enough
to still separate them when each is barely two pixels tall. Detail is layered on
top for the sizes that can show it, and is expendable below them.
-->
<defs>
<linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#37291F"/>
<stop offset="1" stop-color="#191210"/>
</linearGradient>
<radialGradient id="glow" cx="0.5" cy="0.60" r="0.58">
<stop offset="0" stop-color="#C89A5E" stop-opacity="0.26"/>
<stop offset="1" stop-color="#C89A5E" stop-opacity="0"/>
</radialGradient>
<linearGradient id="s1" x1="0.15" y1="0" x2="0.6" y2="1">
<stop offset="0" stop-color="#D3B78C"/><stop offset="1" stop-color="#836A4E"/>
</linearGradient>
<linearGradient id="s2" x1="0.15" y1="0" x2="0.6" y2="1">
<stop offset="0" stop-color="#DFC393"/><stop offset="1" stop-color="#927A58"/>
</linearGradient>
<linearGradient id="s3" x1="0.15" y1="0" x2="0.6" y2="1">
<stop offset="0" stop-color="#E9CD9B"/><stop offset="1" stop-color="#A28560"/>
</linearGradient>
<linearGradient id="s4" x1="0.15" y1="0" x2="0.6" y2="1">
<stop offset="0" stop-color="#F3D6A2"/><stop offset="1" stop-color="#B0906A"/>
</linearGradient>
<linearGradient id="s5" x1="0.15" y1="0" x2="0.6" y2="1">
<stop offset="0" stop-color="#F0801F"/><stop offset="1" stop-color="#9C4108"/>
</linearGradient>
</defs>
<rect width="1024" height="1024" rx="228" fill="url(#bg)"/>
<rect width="1024" height="1024" rx="228" fill="url(#glow)"/>
<!-- Grounds the stack without committing to a horizon line. -->
<ellipse cx="512" cy="880" rx="322" ry="27" fill="#0F0B09" opacity="0.5"/>
<!--
Each stone is tilted a few degrees, and no two share a width-to-height ratio, so the
stack looks built by hand rather than turned on a lathe. The dark outline is what
keeps the gaps legible once antialiasing starts merging neighbours.
-->
<g stroke="#171110" stroke-width="8">
<ellipse cx="512" cy="788" rx="286" ry="84" fill="url(#s1)" transform="rotate(-2.5 512 788)"/>
<ellipse cx="490" cy="612" rx="236" ry="74" fill="url(#s2)" transform="rotate(3.5 490 612)"/>
<ellipse cx="532" cy="458" rx="190" ry="68" fill="url(#s3)" transform="rotate(-4.5 532 458)"/>
<ellipse cx="498" cy="322" rx="146" ry="53" fill="url(#s4)" transform="rotate(6 498 322)"/>
<ellipse cx="520" cy="204" rx="103" ry="46" fill="url(#s5)" transform="rotate(-4 520 204)"/>
</g>
<!--
Top-lit highlights: they give the stones volume at 128px and up, and simply dissolve
into the fill below that, which is the correct behaviour for detail this fine.
-->
<g fill="#FFFFFF" opacity="0.20">
<ellipse cx="470" cy="748" rx="150" ry="26" transform="rotate(-2.5 470 748)"/>
<ellipse cx="452" cy="578" rx="124" ry="23" transform="rotate(3.5 452 578)"/>
<ellipse cx="498" cy="428" rx="100" ry="21" transform="rotate(-4.5 498 428)"/>
<ellipse cx="470" cy="299" rx="76" ry="16" transform="rotate(6 470 299)"/>
<ellipse cx="498" cy="184" rx="54" ry="14" transform="rotate(-4 498 184)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB