diff options
| author | Crash Over Burn | 2026-04-14 13:05:33 +0000 |
|---|---|---|
| committer | Β·ππ΄πππ©π€ | 2026-04-14 13:05:33 +0000 |
| commit | e6c901d2e5430a3815109b38ced11a4f695f0226 (patch) | |
| tree | 07a4cf8846035d5968f7a78007f71cc1fc6dd6fc /README.rst | |
| parent | 26fef65e28c3f085d33a5d222aa1dbac245ec435 (diff) | |
| download | nixtaml-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.rst | 269 |
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 |
