1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
================================================================================
Nixtamal
================================================================================
--------------------------------------------------------------------------------
Fulfilling input pinning for Nix (& hopefully more)
--------------------------------------------------------------------------------
:author: toastal
.. role:: ac
.. role:: t
Pronunciation
/ˈnɪʃˌtəmˌal/ *or* /ˈnɪksˌtəˌmal/
Maker
toastal
Put out
2025-12
Languages
• OCaml
• Nix
• :ac:`KDL`
• :ac:`JSON`
Purpose
================================================================================
Nixtamal is a tool to pin input version like its predecessors :t:`niv`,
:t:`npins`, :t:`Pinch`, :t:`Yae`\, & so on — as well as Nix’s experimental
:t:`flakes`. Features include:
• supports mirrors for fetching [1]_
• supports patch-based :ac:`VCS`\s, like Pijul & Darcs, in a first-class sense
(tho ``nixpkgs`` will be required due to Nix ``builtins`` fetchers limitations)
• uses a :ac:`KDL` manifest file with templating instead of :ac:`CLI` input
for inputs
• supports arbitrary commands for getting the latest change
• does not give any special privilege to any specific code forges
• source code & community will never be hosted on a proprietary,
privacy-invasive, megacorporate platform with obligations to shareholders or
venture capital
• licensed for your freedom
• ML-family programming (feels closer to Nix)
Future goals:
• ``nixtamal heal`` for common pitfalls in ``manifest.kdl``
• :ac:`TUI`?
• provide a flake-like specification for project layout, but with less holes
License
===============================================================================
Depending on the content, this project is licensed under one of
• :t:`GNU General Public License, version 3.0 later` (``GPL-3.0-or-later``)
• :t:`GNU Lesser General Public License version 2.1 or later`
(``LGPL-2.1-or-later``) with & without the :t:`OCaml LGPL Linking Exception`
(``OCaml-LGPL-linking-exception``)
• :t:`ISC License` (``ISC``)
• :t:`Creative Commons Attribution-ShareAlike 4.0 International`
(``CC-BY-SA-4.0``)
For details read ``LICENSE.txt`` with full license texts at ``license/``.
Pitching in
================================================================================
Currently this is best done by sending a patchset to
`toastal+nixtamal@posteo.net`_ or :ac:`DM` me a remote to clone @
`toastal@toastal.in.th`_.
Community is in an :ac:`XMPP` :ac:`MUC` (chatroom) with future hopes to have an
:ac:`IRC` gateway. Join @ <xmpp:nixtamal@chat.toastal.in.th?join>.
..
Additionally, please read the ``PITCHING_IN.rst`` file for other
information/expectations.
.. _toastal+nixtamal@posteo.net: mailto:toastal+nixtamal@posteo.net
.. _toastal@toastal.in.th: xmpp:toastal@toastal.in.th
Funding
================================================================================
See choices at the `maker’s website <https://toast.al/funding>`_.
.. [1] :ac:`WIP` with upstream Nixpkgs
• Darcs: https://github.com/NixOS/nixpkgs/pull/467172
• Pijul: https://github.com/NixOS/nixpkgs/pull/467890
.. vim: set textwidth=80
|