diff options
| author | tv <tv@krebsco.de> | 2026-11-13 21:28:11 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-11-13 21:28:11 +0100 |
| commit | d36d2e631e4baceed0a8c0c00859ebb2ab8cb82f (patch) | |
| tree | 98227d0091b8b23c0c69dcc3e5a770a0da291a37 /pkgs/populate/rust.nix | |
| parent | bcffc9b0a00f3c49db71fe61e8185b9b8e281e55 (diff) | |
populate: drop the shell implementation
Populate is the program in Rust only. pkgs.populate checks its arguments,
and returns a script running the program with them as JSON. The
arguments it took for the shell implementation, dash, jq, and
implementation, stay accepted and unused, so overrides setting them keep
working.
Copying flakes to remote targets using sudo gets refused during
evaluation, as before, by checks.nix, and by the program for specs from
elsewhere.
The jq test goes with the jq programs; the program's unit tests cover
their equivalents.
Diffstat (limited to 'pkgs/populate/rust.nix')
| -rw-r--r-- | pkgs/populate/rust.nix | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/pkgs/populate/rust.nix b/pkgs/populate/rust.nix deleted file mode 100644 index 4582532..0000000 --- a/pkgs/populate/rust.nix +++ /dev/null @@ -1,47 +0,0 @@ -# Populate's arguments, checked and as JSON, for the program in this -# directory, which delivers the sources. -{ coreutils, findutils, git, nix, openssh, pass, passage, program, rsync -, writers -}: - -with import ../../lib; - -let - checks = import ./checks.nix; -in - -{ backup ? false, force ? false, prune ? false, source, target }: -assert checks.checkTargetPath target.path; -assert all checks.checkSourceName (attrNames source); -assert checks.checkInputs source; -let - # Store paths in the arguments stay dependencies of the script, so - # building it builds them. - spec = toJSON { - version = 1; - inherit backup force prune source; - target = { - inherit (target) host path; - user = target.user or null; - port = if target.port or null == null then null else toString target.port; - sudo = target.sudo or false; - extraOptions = target.extraOptions or []; - # Decided during evaluation, like the other functions of krops do. - local = isLocalTarget target; - }; - }; -in -writers.writeDash "populate.${target.host}" /* sh */ '' - set -efu - echo + "$0" >&2 - # The tools populate depends on, in front of others of the same name. - PATH=${makeBinPath [ - coreutils findutils git nix openssh pass passage rsync - ]}''${PATH:+:$PATH} - export PATH - # On a file descriptor of its own, so the commands populate runs keep - # standard input. The JSON is a single line, which can't be the delimiter. - exec ${program}/bin/populate /dev/fd/3 3<<'EOF' - ${spec} - EOF -'' |
