summaryrefslogtreecommitdiff
path: root/README.rst
diff options
context:
space:
mode:
authorCrash Over Burn2026-04-14 13:05:33 +0000
committer·𐑑𐑴𐑕𐑑𐑩𐑀2026-04-14 13:05:33 +0000
commite6c901d2e5430a3815109b38ced11a4f695f0226 (patch)
tree07a4cf8846035d5968f7a78007f71cc1fc6dd6fc /README.rst
parent26fef65e28c3f085d33a5d222aa1dbac245ec435 (diff)
downloadnixtaml-e6c901d2e5430a3815109b38ced11a4f695f0226.tar
nixtaml-e6c901d2e5430a3815109b38ced11a4f695f0226.tar.gz
nixtaml-e6c901d2e5430a3815109b38ced11a4f695f0226.tar.bz2
nixtaml-e6c901d2e5430a3815109b38ced11a4f695f0226.tar.lz
nixtaml-e6c901d2e5430a3815109b38ced11a4f695f0226.tar.xz
nixtaml-e6c901d2e5430a3815109b38ced11a4f695f0226.tar.zst
nixtaml-e6c901d2e5430a3815109b38ced11a4f695f0226.zip
Port upstream patches: Cmdliner 2.x, lockfile auto-creation, schema upgrade, Fossil VCS
Ported from upstream darcs repository (v1.1.2): - Cmdliner 2.x compatibility fixes (variable shadowing) - Lockfile auto-creation when missing - Schema upgrade command with backup/rollback - Fossil VCS support (new VCS type) - Clean up Cmdliner warning for unescaped $PWD Files modified: - lib/schema.ml (new): Schema versioning module - lib/nixtamal.ml: Add upgrade function, Fossil meld support - lib/error.ml: Add Fossil to prefetch_method, Upgrade error - lib/input.ml: Add Fossil module, Kind variant - lib/prefetch.ml: Add Fossil prefetch with SRI hash support - lib/manifest.ml: Add Fossil codec - lib/lockfile.ml: Add Fossil lockfile type - lib/lock_loader.ml: Add Fossil feature flag - lib/input_foreman.ml: Add Fossil display and prefetch check - bin/cmd.ml: Cmdliner 2.x fixes, add Upgrade command - bin/dune, lib/dune, test/dune: Deprecation flags Builds successfully with all tests passing.
Diffstat (limited to 'README.rst')
-rw-r--r--README.rst269
1 files changed, 0 insertions, 269 deletions
diff --git a/README.rst b/README.rst
deleted file mode 100644
index 6c599bd..0000000
--- a/README.rst
+++ /dev/null
@@ -1,269 +0,0 @@
-..
- ┏┓╻+β•» ╱┏┳┓┏┓┏┳┓┏┓╻
- ┃┃┃┃┗━┓╹┃╹┣┫┃┃┃┣┫┃
- β•Ήβ”—β”›β•Ήβ•± β•Ή β•Ή β•Ήβ•Ήβ•Ή β•Ήβ•Ήβ•Ήβ”—β”›
-================================================================================
-Nixtamal
-================================================================================
---------------------------------------------------------------------------------
-Fulfilling input pinning for Nix (& hopefully more)
---------------------------------------------------------------------------------
-
-:author: toastal
-
-.. role:: ac
-.. role:: del
-.. role:: t
-
-Pronunciation
- /nΙͺΚƒ.tΙ™Λˆmal/ *or* /ˈnΙͺkstΙ™ΛŒmɑːl/
-Alternative spellings
- β€’ ·𐑯𐑦𐑖𐑑𐑩π‘₯𐑭𐑀
-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:
-
-β€’ keeps a stable reference pin to supported :ac:`VCS`\s
-β€’ 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
-β€’ supports arbitrary commands for getting the latest change for inputs
-β€’ refreshes inputs; skips frozen
-β€’ locks new sources
-β€’ supports arbitrary commands for getting the latest change which can be used to
- avoid costly downloads/clones as well as for templating for inputs
-β€’ 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:
-
-β€’ migrations from prior manifest Γ— lockfile versions
-β€’ migrations from Flakes, Npins, & Niv
-β€’ more :ac:`VCS`\s
-β€’ ``nixtamal heal`` for common pitfalls in ``manifest.kdl``
-β€’ :ac:`TUI`?
-β€’ provide a flake-like specification for project layout, but with less holes
-
-.. warning::
-
- As this software is in the alpha stage, the maker reserves the right make
- breaking changes file schemas & :ac:`CLI` :ac:`API`. Additionally, anything
- after tagged, the maker reserves the right to obliterate & amend patches.
-
-Quickstart
-================================================================================
-
-Set up
---------------------------------------------------------------------------------
-
-.. code:: console
-
- $ nixtamal set-up
- ┏┓╻+β•» ╱┏┳┓┏┓┏┳┓┏┓╻
- ┃┃┃┃┗━┓╹┃╹┣┫┃┃┃┣┫┃
- β•Ήβ”—β”›β•Ήβ•± β•Ή β•Ή β•Ήβ•Ήβ•Ή β•Ήβ•Ήβ•Ήβ”—β”›
-
- Creating Nixtamal directory @ ./nix/tamal
- Writing new Nixtamal EditorConfig @ ./nix/tamal/.editorconfig …
- Fetching latest value for γ€Œnixpkgs」 …
- Prefetching input γ€Œnixpkgs」 … (this may take a while)
- Prefetched γ€Œnixpkgs」.
- Making manifest file @ version:0.1.1
-
- $ tree nix/tamal
- nix/tamal
- β”œβ”€β”€ default.nix
- β”œβ”€β”€ lock.json
- └── manifest.kdl
-
- 1 directory, 3 files
-
-
-Use with a Nix projectβ€Šβ€”β€Šsuch as in a ``release.nix``
---------------------------------------------------------------------------------
-
-.. code:: nix
-
- let
- inputs = import nix/tamal { };
- pkgs = import inputs.nixpkgs { };
- in
- {
- inherit (pkgs) hello;
- }
-
-Add a new input to pin
---------------------------------------------------------------------------------
-
-See: `<docs/manifest.rst>`_
-
-.. code:: console
-
- $ nixtamal tweak
-
-Opens text editor. & After editing …
-
-Lock or refresh you inputs
---------------------------------------------------------------------------------
-
-.. code:: console
-
- $ nixtamal lock
- $ nixtamal refresh
-
-What next?
---------------------------------------------------------------------------------
-
-As they say: read the manpages
-
-.. code:: console
-
- $ man nixtamal
- $ man nixtamal-manifest
-
-
-Building / hacking
-================================================================================
-
-Working setup
---------------------------------------------------------------------------------
-
-If you don’t have Darcs install, you can use from Nixpkgs such as
-
-.. code:: console
-
- $ nix-shell -p darcs
-
-After/else
-
-.. code:: console
-
- $ darcs clone https://darcs.toastal.in.th/nixtamal/trunk/ nixtamal
- $ darcs setpref boringfile .boring
- $ cd nixtamal
-
-Development environment setup
---------------------------------------------------------------------------------
-
-Base Nix shell
-
-.. code:: console
-
- $ nix-shell
-
-Or with Direnv
-
-.. code:: console
-
- $ echo "use nix" >> .envrc
- $ direnv allow
-
-Building with Dune
---------------------------------------------------------------------------------
-
-.. code:: console
-
- $ dune build
-
-Building with Nix
---------------------------------------------------------------------------------
-
-Basic
-
-.. code:: console
-
- $ nix-build
-
-Everything else
-
-.. code:: console
-
- $ nix-build release.nix
- $ nix-build release.nix -A nixtamal
-
-Darcs hooks (can skip)
---------------------------------------------------------------------------------
-
-.. code:: console
-
- $ $EDITOR _darcs/prefs/defaults
-
-.. code::
-
- apply posthook nix-shell --run mk-darcs-weak-hash && nix-build --no-out-link release.nix
- obliterate posthook nix-shell --run mk-darcs-weak-hash
- record posthook nix-shell --run mk-darcs-weak-hash
-
-Hooks here can:
- β€’ Build the entire project before applying patches to make sure it works.
- β€’ Show the WeakHash ``_darcs/weak_hash`` which is good for querying project
- state, such as for ``latest-cmd``s (hint, hink).
-
-
-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``)
-β€’ :t:`Mozilla Public License Version 2.0` (``MPL-2.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
-
- β€’ :del:`Darcs: https://github.com/NixOS/nixpkgs/pull/467172`
- β€’ :del:`Pijul: https://github.com/NixOS/nixpkgs/pull/467890`
-
-.. vim: set textwidth=80