mirror of
https://cgit.krebsco.de/krops
synced 2024-12-23 02:09:51 +01:00
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:
parent
f1b7112ac3
commit
d51f353cb3
3 changed files with 11 additions and 23 deletions
|
@ -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;
|
||||
})
|
||||
|
|
|
@ -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>'
|
||||
'';
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue