mirror of
https://cgit.krebsco.de/krops
synced 2024-11-23 03:29:48 +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:
|
{ overlays ? [], ... }@args:
|
||||||
|
|
||||||
let
|
|
||||||
nix-writers = builtins.fetchGit {
|
|
||||||
url = https://cgit.krebsco.de/nix-writers/;
|
|
||||||
rev = "c528cf970e292790b414b4c1c8c8e9d7e73b2a71";
|
|
||||||
};
|
|
||||||
in
|
|
||||||
|
|
||||||
import <nixpkgs> (args // {
|
import <nixpkgs> (args // {
|
||||||
overlays = [
|
overlays = [
|
||||||
(import ./overlay.nix)
|
(import ./overlay.nix)
|
||||||
(import "${nix-writers}/pkgs")
|
|
||||||
] ++ overlays;
|
] ++ overlays;
|
||||||
})
|
})
|
||||||
|
|
|
@ -2,7 +2,7 @@ let
|
||||||
lib = import ../../lib;
|
lib = import ../../lib;
|
||||||
in
|
in
|
||||||
|
|
||||||
{ exec, nix, openssh, populate, writeDash }: rec {
|
{ nix, openssh, populate, writers }: rec {
|
||||||
|
|
||||||
build = target:
|
build = target:
|
||||||
remoteCommand target (lib.concatStringsSep " " [
|
remoteCommand target (lib.concatStringsSep " " [
|
||||||
|
@ -18,17 +18,14 @@ in
|
||||||
}";
|
}";
|
||||||
|
|
||||||
remoteCommand = target: command:
|
remoteCommand = target: command:
|
||||||
exec "build.${target.host}" rec {
|
writers.writeDash "build.${target.host}" ''
|
||||||
filename = "${openssh}/bin/ssh";
|
exec ${openssh}/bin/ssh ${lib.escapeShellArgs (lib.flatten [
|
||||||
argv = lib.flatten [
|
|
||||||
filename
|
|
||||||
(lib.optionals (target.user != "") ["-l" target.user])
|
(lib.optionals (target.user != "") ["-l" target.user])
|
||||||
"-p" target.port
|
"-p" target.port
|
||||||
"-t"
|
"-t"
|
||||||
target.host
|
target.host
|
||||||
(if target.sudo then "sudo ${command}" else command)
|
(if target.sudo then "sudo ${command}" else command)])}
|
||||||
];
|
'';
|
||||||
};
|
|
||||||
|
|
||||||
writeCommand = name: {
|
writeCommand = name: {
|
||||||
command ? (targetPath: "echo ${targetPath}"),
|
command ? (targetPath: "echo ${targetPath}"),
|
||||||
|
@ -39,7 +36,7 @@ in
|
||||||
}: let
|
}: let
|
||||||
target' = lib.mkTarget target;
|
target' = lib.mkTarget target;
|
||||||
in
|
in
|
||||||
writeDash name ''
|
writers.writeDash name ''
|
||||||
set -efu
|
set -efu
|
||||||
${populate { inherit backup force source; target = target'; }}
|
${populate { inherit backup force source; target = target'; }}
|
||||||
${remoteCommand target' (command target'.path)}
|
${remoteCommand target' (command target'.path)}
|
||||||
|
@ -60,7 +57,7 @@ in
|
||||||
else lib.mkTarget buildTarget;
|
else lib.mkTarget buildTarget;
|
||||||
target' = lib.mkTarget target;
|
target' = lib.mkTarget target;
|
||||||
in
|
in
|
||||||
writeDash name ''
|
writers.writeDash name ''
|
||||||
set -efu
|
set -efu
|
||||||
${lib.optionalString (buildTarget' != target')
|
${lib.optionalString (buildTarget' != target')
|
||||||
(populate { inherit backup force source; target = buildTarget'; })}
|
(populate { inherit backup force source; target = buildTarget'; })}
|
||||||
|
@ -88,7 +85,7 @@ in
|
||||||
target' = lib.mkTarget target;
|
target' = lib.mkTarget target;
|
||||||
in
|
in
|
||||||
assert lib.isLocalTarget target';
|
assert lib.isLocalTarget target';
|
||||||
writeDash name ''
|
writers.writeDash name ''
|
||||||
set -efu
|
set -efu
|
||||||
${populate { inherit backup force source; target = target'; }} >&2
|
${populate { inherit backup force source; target = target'; }} >&2
|
||||||
NIX_PATH=${lib.escapeShellArg target'.path} \
|
NIX_PATH=${lib.escapeShellArg target'.path} \
|
||||||
|
@ -99,5 +96,4 @@ in
|
||||||
--show-trace \
|
--show-trace \
|
||||||
'<nixpkgs/nixos>'
|
'<nixpkgs/nixos>'
|
||||||
'';
|
'';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
with import ../../lib;
|
with import ../../lib;
|
||||||
with shell;
|
with shell;
|
||||||
|
|
||||||
{ coreutils, dash, findutils, git, jq, openssh, pass, rsync, writeDash }:
|
{ coreutils, dash, findutils, git, jq, openssh, pass, rsync, writers }:
|
||||||
|
|
||||||
let
|
let
|
||||||
check = { force, target }: let
|
check = { force, target }: let
|
||||||
|
@ -145,7 +145,7 @@ let
|
||||||
populate = target: name: source: let
|
populate = target: name: source: let
|
||||||
source' = source.${source.type};
|
source' = source.${source.type};
|
||||||
target' = target // { path = "${target.path}/${name}"; };
|
target' = target // { path = "${target.path}/${name}"; };
|
||||||
in writeDash "populate.${target'.host}.${name}" ''
|
in writers.writeDash "populate.${target'.host}.${name}" ''
|
||||||
set -efu
|
set -efu
|
||||||
${pop.${source.type} target' source'}
|
${pop.${source.type} target' source'}
|
||||||
'';
|
'';
|
||||||
|
@ -196,7 +196,7 @@ let
|
||||||
in
|
in
|
||||||
|
|
||||||
{ backup ? false, force ? false, source, target }:
|
{ backup ? false, force ? false, source, target }:
|
||||||
writeDash "populate.${target.host}" ''
|
writers.writeDash "populate.${target.host}" ''
|
||||||
set -efu
|
set -efu
|
||||||
${check { inherit force target; }}
|
${check { inherit force target; }}
|
||||||
set -x
|
set -x
|
||||||
|
|
Loading…
Reference in a new issue