use writers from nixpkgs

This makes the evaluation of krops pure (no import from derivation)
and makes it faster since the fetchGit result might be garbage collected.
This commit is contained in:
Jörg Thalheim 2020-02-17 17:40:50 +00:00
parent f1b7112ac3
commit d51f353cb3
No known key found for this signature in database
GPG Key ID: 003F2096411B5F92
3 changed files with 11 additions and 23 deletions

View File

@ -1,15 +1,7 @@
{ overlays ? [], ... }@args:
let
nix-writers = builtins.fetchGit {
url = https://cgit.krebsco.de/nix-writers/;
rev = "c528cf970e292790b414b4c1c8c8e9d7e73b2a71";
};
in
import <nixpkgs> (args // {
overlays = [
(import ./overlay.nix)
(import "${nix-writers}/pkgs")
] ++ overlays;
})

View File

@ -2,7 +2,7 @@ let
lib = import ../../lib;
in
{ exec, nix, openssh, populate, writeDash }: rec {
{ nix, openssh, populate, writers }: rec {
build = target:
remoteCommand target (lib.concatStringsSep " " [
@ -18,17 +18,14 @@ in
}";
remoteCommand = target: command:
exec "build.${target.host}" rec {
filename = "${openssh}/bin/ssh";
argv = lib.flatten [
filename
writers.writeDash "build.${target.host}" ''
exec ${openssh}/bin/ssh ${lib.escapeShellArgs (lib.flatten [
(lib.optionals (target.user != "") ["-l" target.user])
"-p" target.port
"-t"
target.host
(if target.sudo then "sudo ${command}" else command)
];
};
(if target.sudo then "sudo ${command}" else command)])}
'';
writeCommand = name: {
command ? (targetPath: "echo ${targetPath}"),
@ -39,7 +36,7 @@ in
}: let
target' = lib.mkTarget target;
in
writeDash name ''
writers.writeDash name ''
set -efu
${populate { inherit backup force source; target = target'; }}
${remoteCommand target' (command target'.path)}
@ -60,7 +57,7 @@ in
else lib.mkTarget buildTarget;
target' = lib.mkTarget target;
in
writeDash name ''
writers.writeDash name ''
set -efu
${lib.optionalString (buildTarget' != target')
(populate { inherit backup force source; target = buildTarget'; })}
@ -88,7 +85,7 @@ in
target' = lib.mkTarget target;
in
assert lib.isLocalTarget target';
writeDash name ''
writers.writeDash name ''
set -efu
${populate { inherit backup force source; target = target'; }} >&2
NIX_PATH=${lib.escapeShellArg target'.path} \
@ -99,5 +96,4 @@ in
--show-trace \
'<nixpkgs/nixos>'
'';
}

View File

@ -1,7 +1,7 @@
with import ../../lib;
with shell;
{ coreutils, dash, findutils, git, jq, openssh, pass, rsync, writeDash }:
{ coreutils, dash, findutils, git, jq, openssh, pass, rsync, writers }:
let
check = { force, target }: let
@ -145,7 +145,7 @@ let
populate = target: name: source: let
source' = source.${source.type};
target' = target // { path = "${target.path}/${name}"; };
in writeDash "populate.${target'.host}.${name}" ''
in writers.writeDash "populate.${target'.host}.${name}" ''
set -efu
${pop.${source.type} target' source'}
'';
@ -196,7 +196,7 @@ let
in
{ backup ? false, force ? false, source, target }:
writeDash "populate.${target.host}" ''
writers.writeDash "populate.${target.host}" ''
set -efu
${check { inherit force target; }}
set -x