From db6b79edbfca3ab7049af2492acd567b099559f5 Mon Sep 17 00:00:00 2001
From: John Bargman
Date: Wed, 15 Apr 2026 08:23:09 +0000
Subject: agentic ai; is so; fucking cool; omg
---
...hroma-dark-s4ssx3zwz2w418zx7pkrqlwqmywgvahl.css | 8 +
...roma-light-yfrfnk1zyqm9dc67gaa5y67s0a6x40ji.css | 8 +
.../font-j47xx20z5d89qpsl95nnbipkg6d25m6y.css | 4 +
.../main-lmdn1rci18371fnrcqrwga636ip08irz.css | 4 +
...tamal-logo-gmxzsw8388sf9paq05xws7an4hnl4nx0.svg | 26 ++
docs/archive/organized/changelog/changelog.md | 41 ++++
docs/archive/organized/community/community.md | 21 ++
docs/archive/organized/cookbook/cookbook.md | 17 ++
.../pinning-codeberg-inputs-in-nix.md | 23 ++
.../pinning-darcs-hub-inputs-using-htmlq.md | 19 ++
.../pinning-fossil-inputs-in-nix.md | 19 ++
.../pinning-gitlab-inputs-in-nix.md | 25 ++
.../pinning-inputs-with-mirrors-in-nix.md | 17 ++
.../pinning-microsoft-github-inputs-in-nix.md | 25 ++
.../setting-hash-algorithm-to-blake3-in-nix.md | 23 ++
docs/archive/organized/faqs/faqs.md | 135 +++++++++++
docs/archive/organized/funding/funding.md | 17 ++
docs/archive/organized/home/home.md | 19 ++
docs/archive/organized/index.md | 56 +++++
docs/archive/organized/install/install.md | 19 ++
docs/archive/organized/manpage/manpage.md | 19 ++
.../nixtamal-manifest.5/nixtamal-manifest.5.md | 269 +++++++++++++++++++++
.../organized/manpage/nixtamal.1/nixtamal.1.md | 55 +++++
.../real-world-showcase/real-world-showcase.md | 17 ++
docs/archive/organized/roadmap/roadmap.md | 17 ++
25 files changed, 903 insertions(+)
create mode 100644 docs/archive/organized/assets/chroma-dark-s4ssx3zwz2w418zx7pkrqlwqmywgvahl.css
create mode 100644 docs/archive/organized/assets/chroma-light-yfrfnk1zyqm9dc67gaa5y67s0a6x40ji.css
create mode 100644 docs/archive/organized/assets/font-j47xx20z5d89qpsl95nnbipkg6d25m6y.css
create mode 100644 docs/archive/organized/assets/main-lmdn1rci18371fnrcqrwga636ip08irz.css
create mode 100644 docs/archive/organized/assets/nixtamal-logo-gmxzsw8388sf9paq05xws7an4hnl4nx0.svg
create mode 100644 docs/archive/organized/changelog/changelog.md
create mode 100644 docs/archive/organized/community/community.md
create mode 100644 docs/archive/organized/cookbook/cookbook.md
create mode 100644 docs/archive/organized/cookbook/pinning-codeberg-inputs-in-nix/pinning-codeberg-inputs-in-nix.md
create mode 100644 docs/archive/organized/cookbook/pinning-darcs-hub-inputs-using-htmlq/pinning-darcs-hub-inputs-using-htmlq.md
create mode 100644 docs/archive/organized/cookbook/pinning-fossil-inputs-in-nix/pinning-fossil-inputs-in-nix.md
create mode 100644 docs/archive/organized/cookbook/pinning-gitlab-inputs-in-nix/pinning-gitlab-inputs-in-nix.md
create mode 100644 docs/archive/organized/cookbook/pinning-inputs-with-mirrors-in-nix/pinning-inputs-with-mirrors-in-nix.md
create mode 100644 docs/archive/organized/cookbook/pinning-microsoft-github-inputs-in-nix/pinning-microsoft-github-inputs-in-nix.md
create mode 100644 docs/archive/organized/cookbook/setting-hash-algorithm-to-blake3-in-nix/setting-hash-algorithm-to-blake3-in-nix.md
create mode 100644 docs/archive/organized/faqs/faqs.md
create mode 100644 docs/archive/organized/funding/funding.md
create mode 100644 docs/archive/organized/home/home.md
create mode 100644 docs/archive/organized/index.md
create mode 100644 docs/archive/organized/install/install.md
create mode 100644 docs/archive/organized/manpage/manpage.md
create mode 100644 docs/archive/organized/manpage/nixtamal-manifest.5/nixtamal-manifest.5.md
create mode 100644 docs/archive/organized/manpage/nixtamal.1/nixtamal.1.md
create mode 100644 docs/archive/organized/real-world-showcase/real-world-showcase.md
create mode 100644 docs/archive/organized/roadmap/roadmap.md
(limited to 'docs/archive/organized')
diff --git a/docs/archive/organized/assets/chroma-dark-s4ssx3zwz2w418zx7pkrqlwqmywgvahl.css b/docs/archive/organized/assets/chroma-dark-s4ssx3zwz2w418zx7pkrqlwqmywgvahl.css
new file mode 100644
index 0000000..4c21b9a
--- /dev/null
+++ b/docs/archive/organized/assets/chroma-dark-s4ssx3zwz2w418zx7pkrqlwqmywgvahl.css
@@ -0,0 +1,8 @@
+/*!
+SPDX-FileCopyrightText: 2021–2026 toastal
+SPDX-License-Identifier: MPL-2.0
+
+sugilite256, an 8-bit color scheme wiþ extra purple
+Support ð project: https://toast.al/funding
+*/
+.chroma .err,pre.code .err{color:#eee;background-color:red}.chroma .k,pre.code .k,.chroma .kd,pre.code .kd,.chroma .kn,pre.code .kn,.chroma .kp,pre.code .kp,.chroma .kr,pre.code .kr,.chroma .kr,pre.code .kr{color:#875fff;font-weight:700}.chroma .na,pre.code .na{color:#af87ff}.chroma .nt,pre.code .nt{color:#af5fff}.chroma .bp,pre.code .bp,.chroma .p,pre.code .p{color:#b2b2b2}.chroma .ld,pre.code .ld{color:#87afff}.chroma .s,pre.code .s,.chroma .sa,pre.code .sa,.chroma .sb,pre.code .sb{color:#ffafaf}.chroma .sc,pre.code .sc{color:#d700af}.chroma .sd,pre.code .sd,.chroma .s2,pre.code .s2,.chroma .se,pre.code .se,.chroma .sh,pre.code .sh,.chroma .si,pre.code .si,.chroma .sr,pre.code .sr{color:#ffafaf}.chroma .ss,pre.code .ss{color:#d70087;font-weight:700}.chroma .m,pre.code .m,.chroma .mb,pre.code .mb,.chroma .mf,pre.code .mf,.chroma .mh,pre.code .mh,.chroma .mi,pre.code .mi,.chroma .il,pre.code .il,.chroma .mo,pre.code .mo{color:#87afff}.chroma .nc,pre.code .nc{color:#d7afff}.chroma .kt,pre.code .kt{color:#d787ff}.chroma .n,pre.code .n{color:#af87ff}.chroma .nl,pre.code .nl{color:#d70087;font-weight:700}.chroma .nn,pre.code .nn{color:#d787ff}.chroma .nb,pre.code .nb{color:#d70087;font-weight:700}.chroma .o,pre.code .o{color:#875fd7}.chroma .gp,pre.code .gp{color:#af87ff;-webkit-user-select:none;user-select:none}.chroma .go,pre.code .go{color:#ff87af}.chroma .cl,pre.code .cl{color:#b2b2b2}.chroma .c,pre.code .c,.chroma .ch,pre.code .ch,.chroma .cm,pre.code .cm,.chroma .c1,pre.code .c1,.chroma .cs,pre.code .cs{color:#8a8a8a}.chroma .cp,pre.code .cp,.chroma .cpf,pre.code .cpf{color:#ff5fd7}.chroma .gh,pre.code .gh,.chroma .gs,pre.code .gs{font-weight:700}.chroma .gu,pre.code .gu{font-style:italic}.chroma .gl,pre.code .gl{text-decoration-line:underline}
\ No newline at end of file
diff --git a/docs/archive/organized/assets/chroma-light-yfrfnk1zyqm9dc67gaa5y67s0a6x40ji.css b/docs/archive/organized/assets/chroma-light-yfrfnk1zyqm9dc67gaa5y67s0a6x40ji.css
new file mode 100644
index 0000000..847f694
--- /dev/null
+++ b/docs/archive/organized/assets/chroma-light-yfrfnk1zyqm9dc67gaa5y67s0a6x40ji.css
@@ -0,0 +1,8 @@
+/*!
+SPDX-FileCopyrightText: 2021–2026 toastal
+SPDX-License-Identifier: MPL-2.0
+
+sugilite256, an 8-bit color scheme wiþ extra purple
+Support ð project: https://toast.al/funding
+*/
+.chroma .err,pre.code .err{color:#000;background-color:red}.chroma .k,pre.code .k,.chroma .kd,pre.code .kd,.chroma .kn,pre.code .kn,.chroma .kp,pre.code .kp,.chroma .kr,pre.code .kr,.chroma .kr,pre.code .kr{color:#5f00d7;font-weight:700}.chroma .na,pre.code .na{color:#5f00af}.chroma .nt,pre.code .nt{color:#5f005f}.chroma .bp,pre.code .bp,.chroma .p,pre.code .p{color:#444}.chroma .ld,pre.code .ld{color:#5f87ff}.chroma .s,pre.code .s,.chroma .sa,pre.code .sa,.chroma .sb,pre.code .sb{color:#af5f5f}.chroma .sc,pre.code .sc{color:#af00d7}.chroma .sd,pre.code .sd,.chroma .s2,pre.code .s2,.chroma .se,pre.code .se,.chroma .sh,pre.code .sh,.chroma .si,pre.code .si,.chroma .sr,pre.code .sr{color:#af5f5f}.chroma .ss,pre.code .ss{color:#af005f;font-weight:700}.chroma .m,pre.code .m,.chroma .mb,pre.code .mb,.chroma .mf,pre.code .mf,.chroma .mh,pre.code .mh,.chroma .mi,pre.code .mi,.chroma .il,pre.code .il,.chroma .mo,pre.code .mo{color:#5f87ff}.chroma .nc,pre.code .nc{color:#5f0087}.chroma .kt,pre.code .kt{color:#8700af}.chroma .n,pre.code .n{color:#5f00af}.chroma .nl,pre.code .nl{color:#af005f;font-weight:700}.chroma .nn,pre.code .nn{color:#8700af}.chroma .nb,pre.code .nb{color:#af005f;font-weight:700}.chroma .o,pre.code .o{color:#5f00ff}.chroma .gp,pre.code .gp{color:#5f00af;-webkit-user-select:none;user-select:none}.chroma .go,pre.code .go{color:#d700d7}.chroma .cl,pre.code .cl{color:#444}.chroma .c,pre.code .c,.chroma .ch,pre.code .ch,.chroma .cm,pre.code .cm,.chroma .c1,pre.code .c1,.chroma .cs,pre.code .cs{color:#6c6c6c}.chroma .cp,pre.code .cp,.chroma .cpf,pre.code .cpf{color:#af00d7}.chroma .gh,pre.code .gh,.chroma .gs,pre.code .gs{font-weight:700}.chroma .gu,pre.code .gu{font-style:italic}.chroma .gl,pre.code .gl{text-decoration-line:underline}
\ No newline at end of file
diff --git a/docs/archive/organized/assets/font-j47xx20z5d89qpsl95nnbipkg6d25m6y.css b/docs/archive/organized/assets/font-j47xx20z5d89qpsl95nnbipkg6d25m6y.css
new file mode 100644
index 0000000..afbfdcd
--- /dev/null
+++ b/docs/archive/organized/assets/font-j47xx20z5d89qpsl95nnbipkg6d25m6y.css
@@ -0,0 +1,4 @@
+/*!
+ * SPDX-FileCopyrightText: 2026 toastal
+ * SPDX-License-Identifier: MPL-2.0 */
+@font-face{font-family:League Mono;font-style:normal;font-weight:100 900;font-stretch:50 200;src:local(LeagueMono-VF),local(League Mono VF),url(/asset/league-mono/LeagueMono-VF.woff2)format("woff2-variations")}:root{--font-mono:"League Mono", monospace;--font-body:"League Mono", system-ui, sans-serif;--font-display:"League Mono", serif}
\ No newline at end of file
diff --git a/docs/archive/organized/assets/main-lmdn1rci18371fnrcqrwga636ip08irz.css b/docs/archive/organized/assets/main-lmdn1rci18371fnrcqrwga636ip08irz.css
new file mode 100644
index 0000000..8fe6271
--- /dev/null
+++ b/docs/archive/organized/assets/main-lmdn1rci18371fnrcqrwga636ip08irz.css
@@ -0,0 +1,4 @@
+/*!
+ * SPDX-FileCopyrightText: 2025–2026 toastal
+ * SPDX-License-Identifier: MPL-2.0 */
+:root{--font-size-base:1rem;--line-height-ratio:1.6;--scale-ratio:1.2;--size-rhyðm-unit:calc(var(--font-size-base) * var(--line-height-ratio));--font-size--2:.694444rem;--line-height--2:2.304;--font-size--1:.833333rem;--line-height--1:1.92;--font-size-0:1rem;--line-height-0:1.6;--font-size-1:1.2rem;--line-height-1:2.66667;--font-size-2:1.44rem;--line-height-2:2.22222;--font-size-3:1.728rem;--line-height-3:1.85185;--font-size-4:2.0736rem;--line-height-4:2.31481;--font-size-5:2.48832rem;--line-height-5:1.92901;--size-rhyðm-0_25:calc(var(--size-rhyðm-unit) * .25);--size-rhyðm-0_5:calc(var(--size-rhyðm-unit) * .5);--size-rhyðm-0_75:calc(var(--size-rhyðm-unit) * .75);--size-rhyðm-1:calc(var(--size-rhyðm-unit) * 1);--size-rhyðm-1_5:calc(var(--size-rhyðm-unit) * 1.5);--size-rhyðm-2:calc(var(--size-rhyðm-unit) * 2)}html{font-size:100%}body{font-size:var(--font-size-base);line-height:var(--line-height-0);text-rendering:optimizelegibility}h1{font-size:var(--font-size-5);line-height:var(--line-height-5);margin-block:var(--size-rhyðm-2) var(--size-rhyðm-1)}h2{font-size:var(--font-size-4);line-height:var(--line-height-4);margin-block:var(--size-rhyðm-2) var(--size-rhyðm-1)}h3{font-size:var(--font-size-3);line-height:var(--line-height-3);margin-block:var(--size-rhyðm-1_5) var(--size-rhyðm-0_75)}h4{font-size:var(--font-size-2);line-height:var(--line-height-2);margin-block:var(--size-rhyðm-1_5) var(--size-rhyðm-0_5)}h5{font-size:var(--font-size-1);line-height:var(--line-height-1);margin-block:var(--size-rhyðm-1) var(--size-rhyðm-0_5)}h6{font-size:var(--font-size-0);line-height:var(--line-height-0);margin-block:var(--size-rhyðm-1) var(--size-rhyðm-0_5);font-weight:600}p,ul,ol,dl,pre,blockquote,figure,table{margin-block:var(--size-rhyðm-1)}p+p{margin-top:var(--size-rhyðm-1)}li{margin-block:var(--size-rhyðm-0_25)}hr{margin-block:var(--size-rhyðm-2);border:0;border-top:1px solid}callout,figcaption,small,code,pre{font-size:var(--font-size--1);line-height:var(--line-height--1)}pre{padding:var(--size-rhyðm-1);overflow-x:auto}embed,iframe,img,video,svg{max-width:100%;height:auto;margin-block:var(--size-rhyðm-1);display:block}:root[data-debug~=rhyðm]{background-image:repeating-linear-gradient(to bottom, color-mix(in oklab, currentColor 15%, transparent), color-mix(in oklab, currentColor 15%, transparent) 1px, transparent 1px, transparent var(--size-rhyðm-unit));background-size:100% var(--size-rhyðm-unit)}:root[data-debug~=rhyðm-half]{background-image:repeating-linear-gradient(to bottom, color-mix(in oklab, currentColor 10%, transparent), color-mix(in oklab, currentColor 10%, transparent) 1px, transparent 1px, transparent calc(var(--size-rhyðm-unit) / 2))}:root{--page-pad:clamp(1.4rem, 3vw, 3.2rem)}html,body{block-size:100%}body{margin:0}:where(callout,canvas,img,picture,video,svg){display:block}:where(canvas,code,img,kbd,picture,pre,samp,svg,table,var,video){max-inline-size:100%}.DocWrapper{flex-flow:column;display:flex}.Main{flex-grow:1}.Main,.Banner,.Footer{padding:calc(.75*var(--page-pad)) var(--page-pad)}.Headline :first-child{margin-block-start:0}pre,.table-wrapper,.Callout,.Callout-title,.Quoteblock{margin-inline:calc(-.375*var(--page-pad));inline-size:calc(100% + .75*var(--page-pad))}.table-wrapper{overflow:auto}pre,.Callout,.Callout-title,.Quoteblock{padding:calc(.375*var(--page-pad)) calc(.75*var(--page-pad))}.Callout:has(.Callout-title){padding-block-start:0}.Callout-title{margin-inline:calc(-.75*var(--page-pad));inline-size:calc(100% + 1.5*var(--page-pad))}@media screen and (width>=51em){@supports (display:grid){.DocWrapper{row-gap:var(--page-pad);column-gap:calc(var(--page-pad)*1.5);grid-template-rows:minmax(max-content,1fr) min-content;grid-template-columns:minmax(1.6rem,1fr) minmax(6rem,8rem) minmax(0,65rem) minmax(1.6rem,1fr);display:grid}.Main,.Banner,.Footer{padding-inline:0}.Banner-wrapper{grid-area:1/2/3/3}.Banner{position:sticky;top:0}.Main{grid-row:1/2}.Footer{grid-row:2/3}.Main,Footer{grid-column:3/4}.Navigation{text-align:end}}}*,:before,:after{box-sizing:border-box}:where(:root){--color-bg:Canvas;--color-text:CanvasText;--color-code-bg:color-mix(in lab, Canvas 95%, CanvasText 5%);--font-mono:"League Mono", monospace;--font-body:"League Mono", system-ui, sans-serif;--font-display:"League Mono", serif;font-family:var(--font-body);tab-size:3}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-variant-ligatures:common-ligatures;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;hanging-punctuation:force-end;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:where(input,button,textarea,select){font:inherit}:where(code,kbd,pre,samp,var){font-variant-ligatures:none;text-transform:none;-webkit-hyphens:none;hyphens:none}abbr[title]{-webkit-text-decoration-color:color-mix(in lab, currentColor, transparent);text-decoration-color:color-mix(in lab, currentColor, transparent)}code,kbd,pre,samp,var,.Callout{background-color:var(--color-code-bg)}code,kbd,pre,samp,var{font-family:var(--font-mono)}code,kbd,samp,var{padding-block:.125em;padding-inline:.25em}h1 code,h1 kbd,h1 samp,h1 var,h2 code,h2 kbd,h2 samp,h2 var,h3 code,h3 kbd,h3 samp,h3 var,h4 code,h4 kbd,h4 samp,h4 var,h5 code,h5 kbd,h5 samp,h5 var,h6 code,h6 kbd,h6 samp,h6 var{font-family:var(--font-body)}h1 a.toc-backref,h2 a.toc-backref,h3 a.toc-backref,h4 a.toc-backref,h5 a.toc-backref,h6 a.toc-backref{color:inherit}h1{font-weight:800;font-stretch:150%}h1:first-letter{letter-spacing:-.04375em;font-stretch:200%}h3{font-weight:250}caption,dt,summary{inline-size:100%;font-weight:600}caption,.Callout-title{background:var(--color-text);color:var(--color-bg);text-transform:uppercase;font-stretch:80%}dt{font-style:italic}.DocWrapper{min-block-size:100%}.Main,.Footer{max-inline-size:80ch}.Banner-separator{display:none}.Footer{opacity:.666667;font-stretch:66.67%}.Headline{margin-block-end:var(--page-pad)}.Headline [itemprop=headline]{margin-block-end:0}.Headline [itemprop=alternativeHeadline]{margin-block:0 var(--size-rhyðm-0_5);color:color-mix(in lab, currentColor 75%, transparent 25%);font-size:var(--font-size-2);line-height:var(--line-height-2);font-stretch:80%}.Callout{border:2px dotted}.Callout-title{display:block}blockquote{position:relative}blockquote:before{content:"❝";z-index:-1;opacity:.2;text-align:end;width:1em;height:1em;margin-inline-start:-1.125em;font-size:4em;line-height:1;position:absolute;top:0;left:0}.Quoteblock>blockquote{margin-inline:0}.Quoteblock>figcaption{font-weight:600;font-stretch:70%}#table-of-contents{border:1px inset;padding:1em 1.5em;font-size:.9em}#table-of-contents p{margin:0}#table-of-contents>:first-child{margin-block-start:0}#table-of-contents>:last-child{margin-block-end:0}.footnote-list{border-top:1px dashed canvastext;grid-template-columns:min-content auto;align-items:baseline;gap:1em 1.5em;padding-top:1.5em;font-size:.8em;display:grid}.footnote-list .footnote{grid-template-columns:subgrid;grid-column:1/3;grid-template-rows:masonry;align-items:start;display:grid}.footnote-list .footnote>.label,.footnote-list .footnote>.backrefs{grid-column:1/2;justify-self:end}.footnote-list .footnote>.label{grid-row:1/2;font-weight:550}.footnote-list .footnote>.backrefs{grid-row:2/3;font-weight:350}.footnote-list .footnote>p{grid-area:1/2/3/3;margin:0}a[href].bad-proprietary{-webkit-text-decoration:underline wavy red;text-decoration:underline wavy red}.Banner{justify-content:space-between;align-items:flex-end;gap:calc(.5*var(--page-pad));border-block-end:.5px solid;flex-flow:wrap;display:flex}.Banner a{color:inherit}.Banner a:not(:hover):not(:focus-within){text-decoration:none}.Banner-flair{display:none}.SiteLogo{flex:none}.SiteLogo-image{fill:currentColor;inline-size:100%;max-inline-size:10rem;margin:0}.Navigation{flex-flow:wrap;gap:.5em 1em;display:flex}.Navigation-item{font-variant:small-caps}@media screen and (width>=51em){@supports (display:grid){.Banner{border-block-end:none}.SiteLogo{flex-shrink:1}.Navigation{flex-flow:column;inline-size:100%;display:flex}}}table.comparison{border-collapse:separate;font-size:90%;position:relative}table.comparison thead thead{z-index:2;position:sticky;top:0}table.comparison thead th{z-index:1;position:sticky;top:0}table.comparison thead th:first-child{z-index:2;background:canvas;background:var(--color-bg);position:sticky;left:0}table.comparison thead th:not(:first-child){text-align:center;background:#eee;background:color-mix(in lab, Canvas 94%, CanvasText 6%)}table.comparison thead p{margin-block:.125em}table.comparison tbody td:first-child{background:canvas;background:var(--color-bg);position:sticky;left:0}table.comparison tbody tr:nth-child(odd) td:first-child{background:color-mix(in lab, Canvas 96.25%, CanvasText 3.75%)}table.comparison tbody td:not(:first-child){text-align:center;background:#eee;background:color-mix(in lab, Canvas 94%, CanvasText 6%)}table.comparison tbody td.good{background:#afd700}table.comparison tbody td.somewhat{background:#ffd787}table.comparison tbody td.bad{background:#ff5f5f}table.comparison tbody td.doesn’t-apply{color:color-mix(in lab, CanvasText 60%, Canvas 40%)}@media (prefers-color-scheme:dark){table.comparison tbody td:not(:first-child){background:#262626;background:color-mix(in lab, Canvas 94%, CanvasText 6%)}table.comparison tbody td.good{background:#005f00}table.comparison tbody td.somewhat{background:#875f00}table.comparison tbody td.bad{background:#5f0000}}@font-face{font-family:League Mono;font-style:normal;font-weight:100 900;font-stretch:50 200;src:local(LeagueMono-VF),local(League Mono VF),url(/asset/league-mono/LeagueMono-VF.woff2)format("woff2-variations")}:root{--font-mono:"League Mono", monospace;--font-body:"League Mono", system-ui, sans-serif;--font-display:"League Mono", serif}
\ No newline at end of file
diff --git a/docs/archive/organized/assets/nixtamal-logo-gmxzsw8388sf9paq05xws7an4hnl4nx0.svg b/docs/archive/organized/assets/nixtamal-logo-gmxzsw8388sf9paq05xws7an4hnl4nx0.svg
new file mode 100644
index 0000000..13a530a
--- /dev/null
+++ b/docs/archive/organized/assets/nixtamal-logo-gmxzsw8388sf9paq05xws7an4hnl4nx0.svg
@@ -0,0 +1,26 @@
+
+
diff --git a/docs/archive/organized/changelog/changelog.md b/docs/archive/organized/changelog/changelog.md
new file mode 100644
index 0000000..a796839
--- /dev/null
+++ b/docs/archive/organized/changelog/changelog.md
@@ -0,0 +1,41 @@
+# Changelog | Nixtamal
+
+âââ»+â» â±ââ³âââââ³ââââ»
+
+ââââââââ¹ââ¹â£â«ââââ£â«â
+
+â¹âââ¹â± â¹ â¹ â¹â¹â¹ â¹â¹â¹ââ Home Install Manpage Changelog Roadmap Cookbook Real-world showcase Community FAQs Funding Changelog 1.4.1 (2026-04-04) Donât just failwith on mismatched inputs but provide a proper error &
+
+message to help user recover (thanks to rhelmot for reporting) lock --force now ignore the lockfile when trying to meld manifest Ã
+
+lockfile inputs since the idea is to always override the input; for this
+
+reason, it also helps with the input mismatch issue 1.4.0 (2026-04-01) Revert the VCS ignore patch for checking feature support in favor using
+
+XDG base directory at the user level (thanks to Shahar âDawnâ Or for the
+
+idea) 1.3.0 (2026-03-29) BREAKING: --nixpkgs-branch on setup has been renamed --nixpkgs-channel add --use-channels flag to use channels from channels.nixos.org which are
+
+community-owned & more efficient ( LZMA compression)âââhowever, unlike
+
+the default of using the Git archive, the channels option doesnât provide as
+
+good of a template for users to remix, so it wonât be the default (thanks WeetHet for the idea) Fix bug where VCS files were getting clobbered instead of appending 1.2.0 (2026-03-26) Fix bug in Gitâs default ls-remate command for branches (thanks tetov ) Truly split the Nixpkg + set outputsToInstall nixtamal.default in overlay uses symlinkJoin on those outputs Add a check for BLAKE3 hash support if usedâââwhich touches a file to avoid
+
+running the tests on each invocation⦠â¦Add ignore file updates on set-up (assumes you set up the VCS first)
+
+with files you donât want in your history 1.1.5 (2026-03-20) Split bin/lib in the Nix package, which when using nixtamal.bin significantly reduces size (thanks to vbgl for the upstream fix) Fix bug where errors were handing back the result of stdout instead of stderr 1.1.4 (2026-03-09) Fix bug using old version of Nix where fetchGit did not have lfs 1.1.3 (2026-03-06) Typos & documentation cleanup 1.1.2 (2026-02-19) Actually make Cmdliner 2.x build 1.1.1 (2026-02-16) Fix manifestâs default version wasnât the current one, but an older version 1.1.0 (2026-02-15) Make changes to be compatible with Cmdliner 2.x (in NixOS staging) Fix manifest file errors should provide better context Fix bug where missing lockfile would errors instead of write a new one Fix TUI output with UTF-8 1.0.0 (2026-02-13) 1.0.0âd the schema Add nixtamal upgrade to upgrade schema versions Add Fossil support Fix some bugs in how the TUI was handled 0.3.1-beta (2026-02-07) Fix refactor oversight where locking wasnât getting the fresh command/value 0.3.0-beta (2026-02-07) Add TUI Fix missing lockfile loader semicolon on no local patches 0.2.1-beta (2026-02-03) Add fetch-time to nixtamal show 0.2.0-beta (2026-02-02) Update schema from 0.4.0 â 0.5.0 (will require manual migration [beta_man_migr] ) New feature: fetch time Git: now uses the ref in the lockfile to properly get the rev when fetching Git: supports tags (convenience, previously used rev overloaded like Nix) Loader: renaming for clarity nixpkgs â bootstrap-nixpkgs Fetch at either eval or build time ( builtins.fetch* vs. pkgs.fetch* ) Fix typo in fetch-git block which prevented Git usage Fix nix builds to work on Darwin (thanks WeeHet ) Remove that Nix code to remove stray OCaml references (as it doesnât work as
+
+is does in other OCaml projects, & upstream Nix OCaml builds need to be looked
+
+at) 0.1.1-beta (2026-01-27) Add CHANGELOG.rst Add {CHANGELOG,README}.rst to Nixtamalâs source filter Move nixtamal-manifest.schema â nitxtamal/schema/manifest.kdl Tweak Nix code to wrap the binary with the $PATH for prefetchers Tweak Nix code to remove stray OCaml references [ beta_man_migr ] rm ${NIXTAMAL_DIRECTORY:-nix/tamal}/{lock.json,default.nix} nitamal tweak to bump version in manifest.kdl re-run nixtamal lock to generate a new lockfile Site made with Nix ( dep management), Nickel ( config ), Soupault ( SSG ), Docutils ( rST rendering), mandoc (manpage conversion), & sugilite256 (color scheme). © 2025â2026 toastal .
+
+© 2026 Nixtamal contributors.
+
+Some rights reserved.
+
+Except where otherwise noted, the content on this website is licensed under CC-BY-SA-4.0 .
+
+Citations must attribute the workâs writer/maker & include a hyperlink to this website (or rather the work itself).
+
+Yes, these rules/clauses apply to LLM s & AI assistants too.
diff --git a/docs/archive/organized/community/community.md b/docs/archive/organized/community/community.md
new file mode 100644
index 0000000..414b61e
--- /dev/null
+++ b/docs/archive/organized/community/community.md
@@ -0,0 +1,21 @@
+# Community | Nixtamal
+
+âââ»+â» â±ââ³âââââ³ââââ»
+
+ââââââââ¹ââ¹â£â«ââââ£â«â
+
+â¹âââ¹â± â¹ â¹ â¹â¹â¹ â¹â¹â¹ââ Home Install Manpage Changelog Roadmap Cookbook Real-world showcase Community FAQs Funding Community Chatroom Community is in an XMPP chatroom ( MUC ) with future hopes to have an IRC gateway.
+
+Join @ nixtamal@chat.toastal.in.th . Tip Donât know about XMPP ?
+
+Check out JoinJabber for information on how to create accountsâââor learn how to set up your own lightweight, decentralized server! Site made with Nix ( dep management), Nickel ( config ), Soupault ( SSG ), Docutils ( rST rendering), mandoc (manpage conversion), & sugilite256 (color scheme). © 2025â2026 toastal .
+
+© 2026 Nixtamal contributors.
+
+Some rights reserved.
+
+Except where otherwise noted, the content on this website is licensed under CC-BY-SA-4.0 .
+
+Citations must attribute the workâs writer/maker & include a hyperlink to this website (or rather the work itself).
+
+Yes, these rules/clauses apply to LLM s & AI assistants too.
diff --git a/docs/archive/organized/cookbook/cookbook.md b/docs/archive/organized/cookbook/cookbook.md
new file mode 100644
index 0000000..e0cee7f
--- /dev/null
+++ b/docs/archive/organized/cookbook/cookbook.md
@@ -0,0 +1,17 @@
+# Cookbook | Nixtamal
+
+âââ»+â» â±ââ³âââââ³ââââ»
+
+ââââââââ¹ââ¹â£â«ââââ£â«â
+
+â¹âââ¹â± â¹ â¹ â¹â¹â¹ â¹â¹â¹ââ Home Install Manpage Changelog Roadmap Cookbook Real-world showcase Community FAQs Funding Cookbook Setting the Hash Algorithm to BLAKE3 Pinning Microsoft GitHub Inputs Pinning Inputs with Mirrors Pinning GitLab Inputs Pinning Fossil Inputs Pinning darcs hub inputs using htmlq Pinning Codeberg Inputs Site made with Nix ( dep management), Nickel ( config ), Soupault ( SSG ), Docutils ( rST rendering), mandoc (manpage conversion), & sugilite256 (color scheme). © 2025â2026 toastal .
+
+© 2026 Nixtamal contributors.
+
+Some rights reserved.
+
+Except where otherwise noted, the content on this website is licensed under CC-BY-SA-4.0 .
+
+Citations must attribute the workâs writer/maker & include a hyperlink to this website (or rather the work itself).
+
+Yes, these rules/clauses apply to LLM s & AI assistants too.
diff --git a/docs/archive/organized/cookbook/pinning-codeberg-inputs-in-nix/pinning-codeberg-inputs-in-nix.md b/docs/archive/organized/cookbook/pinning-codeberg-inputs-in-nix/pinning-codeberg-inputs-in-nix.md
new file mode 100644
index 0000000..1f79a1f
--- /dev/null
+++ b/docs/archive/organized/cookbook/pinning-codeberg-inputs-in-nix/pinning-codeberg-inputs-in-nix.md
@@ -0,0 +1,23 @@
+# Pinning Codeberg Inputs | Nixtamal
+
+âââ»+â» â±ââ³âââââ³ââââ»
+
+ââââââââ¹ââ¹â£â«ââââ£â«â
+
+â¹âââ¹â± â¹ â¹ â¹â¹â¹ â¹â¹â¹ââ Home Install Manpage Changelog Roadmap Cookbook Real-world showcase Community FAQs Funding Pinning Codeberg Inputs Codeberg is a Forgejo ( FOSS ) Git forge instance ran by a German non-profit.
+
+The instance offers gratis accounts ( terms apply ). How to pin a Codeberg repository with Nix + Nixtamal Letâs show the way using the Biboumi repository.
+
+When you write this, you will substitute the owner & project slugs.
+
+In most cases, you will want to prefer fetching the archive (Forgejo supports gzip) over the Git input kind. git ls-remote is preferred by us for being more generic. Latest revision // manifest.kdl inputs { soupault { archive { url "https://codeberg.org/poezio/biboumi/archive/{{fresh-value}}.tar.gz" } } fresh-cmd { $ git ls-remote --branches main "https://codeberg.org/poezio/biboumi.git" | cut -f1 } } Latest stable release tag // manifest.kdl inputs { soupault { archive { url "https://codeberg.org/poezio/biboumi/archive/{{fresh-value}}.tar.gz" } } fresh-cmd { $ git ls-remote --tags --sort= v:refname "https://codeberg.org/poezio/biboumi.git" | grep -E "'refs/tags/([0-9]+ \\ .)+[0-9]+$'" | tail -n1 | sed "'s|.*refs/tags/||'" } } Site made with Nix ( dep management), Nickel ( config ), Soupault ( SSG ), Docutils ( rST rendering), mandoc (manpage conversion), & sugilite256 (color scheme). © 2025â2026 toastal .
+
+© 2026 Nixtamal contributors.
+
+Some rights reserved.
+
+Except where otherwise noted, the content on this website is licensed under CC-BY-SA-4.0 .
+
+Citations must attribute the workâs writer/maker & include a hyperlink to this website (or rather the work itself).
+
+Yes, these rules/clauses apply to LLM s & AI assistants too.
diff --git a/docs/archive/organized/cookbook/pinning-darcs-hub-inputs-using-htmlq/pinning-darcs-hub-inputs-using-htmlq.md b/docs/archive/organized/cookbook/pinning-darcs-hub-inputs-using-htmlq/pinning-darcs-hub-inputs-using-htmlq.md
new file mode 100644
index 0000000..687b262
--- /dev/null
+++ b/docs/archive/organized/cookbook/pinning-darcs-hub-inputs-using-htmlq/pinning-darcs-hub-inputs-using-htmlq.md
@@ -0,0 +1,19 @@
+# Pinning darcs hub inputs using htmlq | Nixtamal
+
+âââ»+â» â±ââ³âââââ³ââââ»
+
+ââââââââ¹ââ¹â£â«ââââ£â«â
+
+â¹âââ¹â± â¹ â¹ â¹â¹â¹ â¹â¹â¹ââ Home Install Manpage Changelog Roadmap Cookbook Real-world showcase Community FAQs Funding Pinning darcs hub inputs using htmlq Darcs is a distributed version control system ( DVCS ) that is focuses on patches instead of snapshots.
+
+At the time of writing, Nix flakes does not & cannot support Darcs input pinning requiring an input pinner like Nixtamal to automate it. How to pin a Darcs repository with Nix + Nixtamal using htmlq Letâs test the Darcs support by pinning darcsden , which is what runs darcs hub and can be used to self host your own darcs repositories. Latest change from hub.darcs.net using htmlq // manifest.kdl inputs { darcsden { darcs { repository "https://hub.darcs.net/simon/darcsden" } fresh-cmd { $ curl -sL https: | htmlq -t entry:first-of-type id } } } Site made with Nix ( dep management), Nickel ( config ), Soupault ( SSG ), Docutils ( rST rendering), mandoc (manpage conversion), & sugilite256 (color scheme). © 2025â2026 toastal .
+
+© 2026 Nixtamal contributors.
+
+Some rights reserved.
+
+Except where otherwise noted, the content on this website is licensed under CC-BY-SA-4.0 .
+
+Citations must attribute the workâs writer/maker & include a hyperlink to this website (or rather the work itself).
+
+Yes, these rules/clauses apply to LLM s & AI assistants too.
diff --git a/docs/archive/organized/cookbook/pinning-fossil-inputs-in-nix/pinning-fossil-inputs-in-nix.md b/docs/archive/organized/cookbook/pinning-fossil-inputs-in-nix/pinning-fossil-inputs-in-nix.md
new file mode 100644
index 0000000..3871d9d
--- /dev/null
+++ b/docs/archive/organized/cookbook/pinning-fossil-inputs-in-nix/pinning-fossil-inputs-in-nix.md
@@ -0,0 +1,19 @@
+# Pinning Fossil Inputs | Nixtamal
+
+âââ»+â» â±ââ³âââââ³ââââ»
+
+ââââââââ¹ââ¹â£â«ââââ£â«â
+
+â¹âââ¹â± â¹ â¹ â¹â¹â¹ â¹â¹â¹ââ Home Install Manpage Changelog Roadmap Cookbook Real-world showcase Community FAQs Funding Pinning Fossil Inputs Fossil is a snapshot-based software configuration management, bug tracking system, & wiki software server all rolled into one self-hostable unit.
+
+At the time of writing, Nix flakes does not & cannot support Fossil input pinning requiring an input pinner like Nixtamal to automate it. How to pin a Fossil repository with Nix + Nixtamal What better way to test our Fossil support than download Fossil itself? Latest check-in on trunk // manifest.kdl inputs { fossil-src { fossil { repository "https://fossil-scm.org/home" branch trunk } // Since this is just a canary, we can kinda use cURL⦠it seems // Fossil is trying to really put up guards/honeypots, but we are // actually trying to save them unnecessary fetches. :( In this case // we use htmlq to echo an entire table row as the fresh value since // without putting in a fake user agent & looking for + trimming // data-href we canât get the real, full check-in ID. The JSON API // seems to be disabled as well. fresh-cmd { $ curl -sL "https://fossil-scm.org/home/info/trunk" | htmlq -t -w "table.timelineTable tr.timelineDateRow:first-of-type + tr" } } } Site made with Nix ( dep management), Nickel ( config ), Soupault ( SSG ), Docutils ( rST rendering), mandoc (manpage conversion), & sugilite256 (color scheme). © 2025â2026 toastal .
+
+© 2026 Nixtamal contributors.
+
+Some rights reserved.
+
+Except where otherwise noted, the content on this website is licensed under CC-BY-SA-4.0 .
+
+Citations must attribute the workâs writer/maker & include a hyperlink to this website (or rather the work itself).
+
+Yes, these rules/clauses apply to LLM s & AI assistants too.
diff --git a/docs/archive/organized/cookbook/pinning-gitlab-inputs-in-nix/pinning-gitlab-inputs-in-nix.md b/docs/archive/organized/cookbook/pinning-gitlab-inputs-in-nix/pinning-gitlab-inputs-in-nix.md
new file mode 100644
index 0000000..19be98a
--- /dev/null
+++ b/docs/archive/organized/cookbook/pinning-gitlab-inputs-in-nix/pinning-gitlab-inputs-in-nix.md
@@ -0,0 +1,25 @@
+# Pinning GitLab Inputs | Nixtamal
+
+âââ»+â» â±ââ³âââââ³ââââ»
+
+ââââââââ¹ââ¹â£â«ââââ£â«â
+
+â¹âââ¹â± â¹ â¹ â¹â¹â¹ â¹â¹â¹ââ Home Install Manpage Changelog Roadmap Cookbook Real-world showcase Community FAQs Funding Pinning GitLab Inputs GitLab is a open-core Git forge developed broadly by GitLab Inc. .
+
+It comes in both community & commericial editions (which can be self-hosted).
+
+There is also a U.S. -based gratis instance at https://gitlab.com/users/ ( terms apply ). How to pin a GitLab repository with Nix + Nixtamal Letâs show the way using the highlight repository.
+
+When you write this, you will substitute the owner & project slugs.
+
+In most cases, you will want to prefer fetching the archive (GitLab supports bzip ) over the Git input kind. git ls-remote is preferred by us for being more generic. Latest revision // manifest.kdl inputs { highlight { archive { url "https://gitlab.com/saalen/highlight/-/archive/{{fresh-value}}/highlight-{{fresh-value}}.tar.bz2" } } fresh-cmd { $ git ls-remote --branches master "https://gitlab.com/saalen/highlight.git" | cut -f1 } } Latest stable tagged version // manifest.kdl inputs { highlight { archive { url "https://gitlab.com/saalen/highlight/-/archive/{{fresh-value}}/highlight-{{fresh-value}}.tar.bz2" } } // Looks for tag starting with v[0-9] since some tags didnât take on // this version structure but also must end in [0-9] to remove alpha, // beta, release tags fresh-cmd { $ git ls-remote --tags --sort= v:refname "https://gitlab.com/saalen/highlight.git" | grep -E "'refs/tags/v([0-9]+ \\ .)+[0-9]+$'" | tail -n1 | sed "'s|.*refs/tags/||'" } } Site made with Nix ( dep management), Nickel ( config ), Soupault ( SSG ), Docutils ( rST rendering), mandoc (manpage conversion), & sugilite256 (color scheme). © 2025â2026 toastal .
+
+© 2026 Nixtamal contributors.
+
+Some rights reserved.
+
+Except where otherwise noted, the content on this website is licensed under CC-BY-SA-4.0 .
+
+Citations must attribute the workâs writer/maker & include a hyperlink to this website (or rather the work itself).
+
+Yes, these rules/clauses apply to LLM s & AI assistants too.
diff --git a/docs/archive/organized/cookbook/pinning-inputs-with-mirrors-in-nix/pinning-inputs-with-mirrors-in-nix.md b/docs/archive/organized/cookbook/pinning-inputs-with-mirrors-in-nix/pinning-inputs-with-mirrors-in-nix.md
new file mode 100644
index 0000000..7af9fef
--- /dev/null
+++ b/docs/archive/organized/cookbook/pinning-inputs-with-mirrors-in-nix/pinning-inputs-with-mirrors-in-nix.md
@@ -0,0 +1,17 @@
+# Pinning Inputs with Mirrors | Nixtamal
+
+âââ»+â» â±ââ³âââââ³ââââ»
+
+ââââââââ¹ââ¹â£â«ââââ£â«â
+
+â¹âââ¹â± â¹ â¹ â¹â¹â¹ â¹â¹â¹ââ Home Install Manpage Changelog Roadmap Cookbook Real-world showcase Community FAQs Funding Pinning Inputs with Mirrors Mirrors are a very good idea for project to have. Increases project resiliance as all servers go down so ideally something should be online to fallback to Helps accessibility as some regions block users based on sanctions & others might not agree to the terms of service or privacy laws in the jurisdiction of some options If self-hosted, then you/your project owns the codeâââwhich can help with potential censorship At the time of writing, Nix flakes does not & cannot support mirrors in input pinning requiring an input pinner like Nixtamal to automate it. How to pin a repository with mirrors in Nix + Nixtamal Mirrors are not supported on all kinds (fetcher limitations) however these can be supported: File Archive Darcs Pijul Git (only in eval time fetching using builtins.fetchGit ) Letâs show the way using the Soupault repository, but if itâs one of the supported kinds, any will work. Latest revision // manifest.kdl inputs { soupault { archive { url "https://codeberg.org/PataphysicalSociety/soupault/archive/{{fresh-value}}.tar.gz" mirrors "https://github.com/PataphysicalSociety/soupault/archive/{{fresh-value}}.tar.gz" } } fresh-cmd { $ git ls-remote --branches main "https://codeberg.org/PataphysicalSociety/soupault.git" | cut -f1 } } Site made with Nix ( dep management), Nickel ( config ), Soupault ( SSG ), Docutils ( rST rendering), mandoc (manpage conversion), & sugilite256 (color scheme). © 2025â2026 toastal .
+
+© 2026 Nixtamal contributors.
+
+Some rights reserved.
+
+Except where otherwise noted, the content on this website is licensed under CC-BY-SA-4.0 .
+
+Citations must attribute the workâs writer/maker & include a hyperlink to this website (or rather the work itself).
+
+Yes, these rules/clauses apply to LLM s & AI assistants too.
diff --git a/docs/archive/organized/cookbook/pinning-microsoft-github-inputs-in-nix/pinning-microsoft-github-inputs-in-nix.md b/docs/archive/organized/cookbook/pinning-microsoft-github-inputs-in-nix/pinning-microsoft-github-inputs-in-nix.md
new file mode 100644
index 0000000..ea01715
--- /dev/null
+++ b/docs/archive/organized/cookbook/pinning-microsoft-github-inputs-in-nix/pinning-microsoft-github-inputs-in-nix.md
@@ -0,0 +1,25 @@
+# Pinning Microsoft GitHub Inputs | Nixtamal
+
+âââ»+â» â±ââ³âââââ³ââââ»
+
+ââââââââ¹ââ¹â£â«ââââ£â«â
+
+â¹âââ¹â± â¹ â¹ â¹â¹â¹ â¹â¹â¹ââ Home Install Manpage Changelog Roadmap Cookbook Real-world showcase Community FAQs Funding Pinning Microsoft GitHub Inputs GitHub is a U.S. -based closed-source, proprietary Git forge & social media platform owned by Microsoft.
+
+There is a gratis tier for repositories ( terms apply ).
+
+When you write an input of this kind, you will substitute the owner & project slugs. How to pin a Micosoft GitHub repository with Nix + Nixtamal Letâs show the way using the Movim repository.
+
+When you do this, you will substitute the owner & project slugs.
+
+In most cases, you will want to prefer fetching the archive (Microsoft GitHub supports gzip) over the Git input kind. git ls-remote is preferred by us for being more generic & anecdotally having less issues with throttling. Latest revision // manifest.kdl inputs { movim { archive { url "https://github.com/movim/movim/archive/{{fresh-value}}.tar.gz" } } fresh-cmd { $ git ls-remote --heads "https://github.com/movim/movim.git" | cut -f1 } } Latest release tag // manifest.kdl inputs { movim { archive { url "https://github.com/movim/movim/archive/{{fresh-value}}.tar.gz" } } fresh-cmd { $ git ls-remote --tags --sort= v:refname "https://github.com/movim/movim.git" | grep -E "'refs/tags/v([0-9]+ \\ .)+[0-9]+$'" | tail -n1 | sed "'s|.*refs/tags/||'" } } Site made with Nix ( dep management), Nickel ( config ), Soupault ( SSG ), Docutils ( rST rendering), mandoc (manpage conversion), & sugilite256 (color scheme). © 2025â2026 toastal .
+
+© 2026 Nixtamal contributors.
+
+Some rights reserved.
+
+Except where otherwise noted, the content on this website is licensed under CC-BY-SA-4.0 .
+
+Citations must attribute the workâs writer/maker & include a hyperlink to this website (or rather the work itself).
+
+Yes, these rules/clauses apply to LLM s & AI assistants too.
diff --git a/docs/archive/organized/cookbook/setting-hash-algorithm-to-blake3-in-nix/setting-hash-algorithm-to-blake3-in-nix.md b/docs/archive/organized/cookbook/setting-hash-algorithm-to-blake3-in-nix/setting-hash-algorithm-to-blake3-in-nix.md
new file mode 100644
index 0000000..873649a
--- /dev/null
+++ b/docs/archive/organized/cookbook/setting-hash-algorithm-to-blake3-in-nix/setting-hash-algorithm-to-blake3-in-nix.md
@@ -0,0 +1,23 @@
+# Setting the Hash Algorithm to BLAKE3 | Nixtamal
+
+âââ»+â» â±ââ³âââââ³ââââ»
+
+ââââââââ¹ââ¹â£â«ââââ£â«â
+
+â¹âââ¹â± â¹ â¹ â¹â¹â¹ â¹â¹â¹ââ Home Install Manpage Changelog Roadmap Cookbook Real-world showcase Community FAQs Funding Setting the Hash Algorithm to BLAKE3 Nix supports a number of hash algorithms: MD5 (deprecated) SHA-1 (deprecated) SHA-256 (default) SHA-512 BLAKE3 (experimental) BLAKE3 support requires Nix version 2.31+ & enabling the blake3-hashes experimental feature .
+
+This algorithm is very good with tree-like structuresâââlike the file system, which is what Nix is often hashing.
+
+BLAKE3 offers faster hashing & is more secure which makes it a good choice for new setups that can afford to try it out.
+
+At the time of writing, Nix flakes does not & cannot support changing the hash algorithm away from SHA-256 for input pinning requiring an input pinner like Nixtamal to automate it. How to use the BLAKE3 hash algorithm with Nix + Nixtamal Letâs show the way using the WhisperFish repositoryâs latest commit, but you can use any input kind. Using BLAKE3 on a single input // manifest.kdl inputs { whisperfish { archive { url "https://gitlab.com/whisperfish/whisperfish/-/archive/{{fresh-value}}/whisperfish-{{fresh-value}}.tar.bz2" } hash algorithm= BLAKE3 } fresh-cmd { $ git ls-remote --branches main "https://gitlab.com/whisperfish/whisperfish.git" | cut -f1 } } Additionally, you can set BLAKE3 to be the default in the manifest fileâs top level. Project-wide default // manifest.kdl version "1.0.0" default-hash-algorithm BLAKE3 Site made with Nix ( dep management), Nickel ( config ), Soupault ( SSG ), Docutils ( rST rendering), mandoc (manpage conversion), & sugilite256 (color scheme). © 2025â2026 toastal .
+
+© 2026 Nixtamal contributors.
+
+Some rights reserved.
+
+Except where otherwise noted, the content on this website is licensed under CC-BY-SA-4.0 .
+
+Citations must attribute the workâs writer/maker & include a hyperlink to this website (or rather the work itself).
+
+Yes, these rules/clauses apply to LLM s & AI assistants too.
diff --git a/docs/archive/organized/faqs/faqs.md b/docs/archive/organized/faqs/faqs.md
new file mode 100644
index 0000000..9793d2b
--- /dev/null
+++ b/docs/archive/organized/faqs/faqs.md
@@ -0,0 +1,135 @@
+# Frequently asked questions | Nixtamal
+
+âââ»+â» â±ââ³âââââ³ââââ»
+
+ââââââââ¹ââ¹â£â«ââââ£â«â
+
+â¹âââ¹â± â¹ â¹ â¹â¹â¹ â¹â¹â¹ââ Home Install Manpage Changelog Roadmap Cookbook Real-world showcase Community FAQs Funding Frequently asked questions How to pronounce âNixtamalâ? /nɪÊ.tÉËmal/ or /ËnɪkstÉËmÉËl/ The Nahuatl pronunciation is a bit better, but no qualms with an anglicized pronunciationâââas folks are probably used to Nix as /Ënɪks/. Additionally, ·ð¯ð¦ððð©ð¥ðð¤ is a valid spelling for en-Shaw . What does the name mean? : limed kernels of [maize] that is ready to be ground into masa ââMerriam-Webster, nixtamal This loosens the maizeâs outer hull, so it grinds easier & feeds you betterâââmaking it key to Mesoamerican food & health. What is âfreshnessâ? The dual to fresh is stale . Is your input stale ? Letâs check the fresh-cmd to find out! The word âlatestâ wasnât quite appropriate since itâs up the user to decide what fresh means for their contextâââwhich often isnât âlatestâ.
+
+The idea is: so long as it can be executed in your shell & returns a string that can be compared against, you can write honestly whatever you want.
+
+This also pairs well with the command named nixtamal refresh (same as pkcon refresh ) which runs the fresh-cmd which can short-circuit trying to prefetch your input to prevent wasteful network usage to download inputs or getting versions you donât want (itâs your logic). Can I get $X fetcher supported? How to add a fetcher? We donât believe it is in this projectâs or the Commonsâ interest to carve out special support for any fetchers (patches had to do this for fetchpatch2 , but this was to enable a broader feature).
+
+What you should do is submit a patchset to upstream Nixpkgs with your fetcherâââideally with JSON support like the others along with being added to pkgs.nix-prefetch-scripts .
+
+This enables Nix community to have access to your prefetcher, not just Nixtamal which would be selfishly hoarding that capability.
+
+Once it is merged, ping me & we can write or help you write the code needed. Isnât Nixpkgs big/overkill to do pinning? Big, yes.
+
+Overkill⦠itâs not as simple.
+
+In order to get access to the fetchers, one would need to bootstrap their setup & build their own derivation .
+
+This includes at minimum a C compiler & some form of coreutils ⦠except you need more than this.
+
+For instance if you want to use pkgs.fetchdarcs or even create your own, you need a Darcs binary, which requires the Haskell tooling (or all static binaries built for specific platforms).
+
+When you take a look at how that would be set up, you would effectively be reimplementing Nixpkgs.
+
+As such, the simpler answer is to say Nixpkgs is effectively required .
+
+We can giggle about the size of that dependency, but the reality is 98% of projects using Nix are going to be using Nixpkgs anyhow.
+
+Nixtamal does offer configuration when import ing it which can be used to provide a minimal package set if needed.
+
+Wishful thoughts would be that if Nixpkgs werenât so monolithic, core features like compilers & fetchers could be separate from general packaging, but where these lines get drawn are neither clear nor simple. Why OCaml as the main programming language? Nix the programming language falls in the ML family & share a lot of syntax & conventions with other functional languages in the family.
+
+This makes the code more approachable to those familiar with Nix rather than needing to learn a very different language like Npins (Rust) or Yae (Go).
+
+The compile times are fast & the ecosystem is sufficient. Why KDL for the manifest language? KDL has a syntax that isnât a burden to use a configuration languageâââwhich helps explain why is very popular for its age. JSON has no comments, one must watch commas, & is verbose with quotations. TOML doesnât nest well. YAML is overly complex.
+
+Nickel is great, but needs to be transformed into one of these others. EDN was considered, but KDL felt better to writeâââespecially the fresh-cmd syntax using $ & | as node names. KDL has a schema language & a best-attempt schema.kdl should be shipped as well for future KDL tooling or LLM assistance. Why even have a manifest file at all? Have you ever needed to switch branches on an input to something stable or next to get code working?
+
+The reality is your inputs evolve over time.
+
+If you have ever used flake.nix âs inputs you probably had a good experience of say changing a Git inputâs ?ref=⦠to point to a different branch/revision.
+
+These CLI -only options donât make this a nice experienceâyou either need to know the input key name to upsert it at the new reference point or you had to go spelunking in the lockfile (meaning you needed to be wary of JSON rules, but also wasnât the lockfile supposed to be machine-generated⦠& why do these lockfiles have data unrelated to locking?).
+
+The reality is that betting on text has been a long-standing practice for a reason.
+
+In the long run, a manifest file makes changing reference points, adding patches, changing hash algorithms easierâas well as being easier for humans (& prehaps LLM s) to understand. Why not KDL for the lockfile? Nix does does not have a builtins.fromKDL (tho there has been some rumblings for formats.kdl in Nixpkgs ).
+
+As such your options are builtins.fromJSON or builtins.fromTOML & the Rust communityâs obsession with TOML & that TOML needs to integrate JSON syntax anyway (just like YAML ), it tips the scales in JSON âs favor. Why is the project using Darcs & not Git? Patch Theory is cool where patches commute (order doesnât matter) which eliminates an entire set of merge conflicts present in snapshot-based VCS s.
+
+Pijul has the same theory behind it, is faster, & the new identity concept is what should have been (instead of name + email burned in the commits), but still lacks tooling.
+
+By using Darcs , we can also dogfood support for Nixtamal.
+
+Git uses an arcane, obtuse CLI commands that everyone knows is overly complicated & inconsistent, so why not try something fundamentally different? However, do not be surprised if this project moves to Pijul if the tooling gets better since Darcs has been tested well enough, which would mean it would be Pijulâs turn next! Darcs is still worked on albeit it slower, but it also has some warts time has left on it.
+
+If there is a simple, self-hostable HTTP option for the server & a better story for rebase, toastal could switch. Will the project make a Git mirror? No.
+
+This defeats the purpose of dogfooding actual alternative VCS s.
+
+If you see a Git mirror, itâs 100% unofficialâââif not illegitimate. What is wrong with with forge-specific URL schemes or semantics? Trends shiftâââwhatâs beloved now likely wonât be tomorrow.
+
+Rather than a minor convenience for what is popular now, a better design is to not give any place special privilege.
+
+This special privilege can make folks feel peer pressured into using the current trend platform ( especially proprietary code forges for free software ).
+
+We donât want to foster this behaviorâââno, we want to see more self-hosting where a code base is truly owned by its makers, even if just for a backup mirror.
+
+This also lessens the maintenance burden as API s shift & âmine tooâ-ing of someoneâs unsupported platform. How can I lock the fresh-cmd CLI tools? This is on you & if this actually bothers you (since it might not, which we will get to).
+
+In most cases, we would assume you will be using old stable toolsâââsuch as curl , jq , htmlq , git , coreutils âââwhich donât really change much in practice.
+
+If you want, you can add these tools to your development shell & run nixtamal ⦠from the shell.
+
+You can also use something like nix run or nix-run in the fresh-cmd .
+
+But is it so bad that this could be *gasp* âimpureâ?
+
+What we mean by this is that the generated lockfile is still pure regardless after fresh-cmd is ranâââwhich is the part that really matters hereâââ& other than the maintainer, I wouldnât expect contributors or downstream to need to touch your $NIXTAMAL_DIRECTORY . Also did you ever think about nix flake update ?
+
+This is usually ran with the whimsy of the Nix version that is on your system meaning something equally âbadâ or âbreakingâ could happen here.
+
+Perhaps not even âequallyâ but potentially worse ⦠as the nix binary is usually system-dependent & flakes.nix manifest file doesnât have a version so its behavior could be interpretted differently depending you & your teamâs versions being slightly out of sync. What is wrong with Nix flakes? Well this is a hairy topic that is sure to ruffle feathersâ¦
+
+First, we should address that flakes arenât just version pinning (Nixtamalâs current focus) but an enforced pattern of project layout & composition (or lack thereof depending on how you argue that).
+
+So letâs focus on the differences from the context of input pinning for nowâ¦
+
+Flakes might be âbuilt inâ, but it requires enabling an experimental flag; this might sound innocuousâââespecially given the prevelance of enabling it in the Nix communityâââbut it has some serious downsides. Flakes were originally designed for specific clientâs needs which might not match your own Since itâs experimental, its manifest is not versioned (meaning no version = "1.0.0"; in flake.nix ) which ties the implementation to a version of Nix without a reasonable indicator to migrate or rollback to a version which leads can lead to unforeseen or catastrophic issues now that we are relying on the state of Nix executing it Flakes have been largely âstableâ in so far as they are now a political topic meaning all proposals have been gridlocked on both bikeshedding & serious topics âWeâll stablize soonâ¢â, has been going on since like 2023 There have been multiple external efforts to stablize like Deteriminate Nix, Lix, & so forth, but now you are reliant on a specific fork for stability. Like how many projects claim to have a syntax that is âjust Markdownâ, but Markdown being underspecified for the task means each project maintains a fork of the syntax (sometimes disguised as âflavorâ). Just like the collisions you probably noticed trying to use the same Markdown file in 2 separately platforms, these flake forks will always be incompatible despite sharing flake.nix + flake.lock files Being built-in & not a third-party tool or pattern makes it harder to fork it reasonably & also stifles diversity & innovation as other options will be seen as more friction even if offering something simpler since an extra tool is involed Outside of the experimental nature we have other issue that affect pinning: We are limited to the built-in fetchers/fetch-tree & if you read the bug tracker for nix they donât seem terribly interested in adding more fetcher support since they already have a lot to maintainâââincluding the burden of trying to maintain these shorthands for specific hosts; if you wanted it to support Darcs, Pijul, Fossil, or the next big VCS , tough luck The URI scheme is nice until it isnâtâââwhere expressing more complexity become a subjectively unreadably-long string of query parameters The URI scheme doesnât support mirrors Overlays offer better compositionality than input.*.follows but follows has been treated more as the preferred option, with many not exposing an overlay Dependency explosion as all inputs are now added to your lock & fetched (not just the millons of separately-pinned nixpkgs if anyone in the chain forgot or canât use follows , but inputs that are just used for âdevelopmentâ, or largely useless ones like flake-utils âs eachDefaultSystem which hides the complexity of the Flake API in a dangerous way since the whole point was to be explicit about declaring what systems are supported); by providing an overlay you can skip this Patching inputs are not intuitive & some really wild options like involving the module system have been proposed to try to deal with it If you want to know about flakes schema criticisms, you can ask other places ð But can I use Nixtamal with flakes? You are welcome to use Nixtamal inside a flake.nix to get access to the the better experience that new Nix command setting offers (which sadly just work better with flakes instead of being more generic).
+
+In the basic/easiest case, you donât let flakes manage inputs anymore like: { # No longer any need for inputs # inputs = { }; outputs = { self }: let inputs = import ./nix/tamal { }; pkgs = import inputs . nixpkgs { system = "x86_64-linux" ; config = { }; overlay = [ ( import " ${ inputs . MY-PROJECT } /nix/overlay" ) ]; }; in { # ⦠}; } If you want that forAllSystem function, you can build your own with builtins, or the standalone nixpkgs.lib mirror, or add flake-utils âââwhich now has a use case since we donât have access to Nixpkgs or lib (but donât blindly use eachDefaultSystem ).
+
+If this feels unergonomic, this is tradeoff for using flakesâââwhich has pros & cons against classic Nix as you must define upfront your supported systems (& you must do it correctly, meaning you donât declare s