From 841ddf3e6d5472362e45f3dbc079a368285467f9 Mon Sep 17 00:00:00 2001 From: tv Date: Fri, 13 Nov 2026 18:46:19 +0000 Subject: populate: draw flake inputs natively in Rust The program decides how to draw inputs and derive copies of flake and flake-input sources itself. The target runs fixed snippets, which send back what it needs to know: where paths resolve to and what's there, the lock files of flakes as nix flake metadata prints them, and what tells whether a derived copy needs to be made again. The program checks that drawn inputs exist in the lock files, computes the keys of derived copies, and writes generated flakes. Derived copies get the same keys as with the shell implementation, so switching implementations doesn't make them again. --- pkgs/populate/docs/design.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'pkgs/populate/docs') diff --git a/pkgs/populate/docs/design.md b/pkgs/populate/docs/design.md index 3340ccf..9e606b2 100644 --- a/pkgs/populate/docs/design.md +++ b/pkgs/populate/docs/design.md @@ -177,12 +177,12 @@ Populate runs rsync, Git, ssh, and Nix as programs, found in `PATH`. ## Status The program delivers all source types, draws inputs from sources, makes -backups, and prunes. Drawing inputs, in `src/flake.rs`, builds the same -shell code that `shell.nix` generates, with every value quoted; it moves -to Rust like delivering flake and flake-input sources did, in -`src/flake_input.rs`, which reads what Nix prints as JSON itself, and runs -fixed snippets on the target that send JSON or store paths back. - -The jq programs in `flake-jq.nix`, which the shell implementation and the -jq test use, have equivalents in Rust, with the jq test's cases as unit -tests. +backups, and prunes. It decides what to do itself: the snippets it runs +on the target send back what it needs to know, e.g. what Nix prints as +JSON, where paths resolve to, or store paths. Delivering flake and +flake-input sources is in `src/flake_input.rs`, drawing inputs and +deriving copies in `src/flake.rs`. + +The jq programs and Nix functions in `flake-jq.nix`, which the shell +implementation and the jq test use, have equivalents in Rust, with unit +tests, among them the jq test's cases. -- cgit v1.3.1