summaryrefslogtreecommitdiff
path: root/README.rst
diff options
context:
space:
mode:
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