From d36d2e631e4baceed0a8c0c00859ebb2ab8cb82f Mon Sep 17 00:00:00 2001 From: tv Date: Fri, 13 Nov 2026 21:28:11 +0100 Subject: 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. --- pkgs/populate/rust.nix | 47 ----------------------------------------------- 1 file changed, 47 deletions(-) delete mode 100644 pkgs/populate/rust.nix (limited to 'pkgs/populate/rust.nix') 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 -'' -- cgit v1.3.1