mirror of
https://cgit.krebsco.de/krops
synced 2024-11-26 21:19:47 +01:00
krops writeDeploy: add useNixOutputMonitor parameter
This commit is contained in:
parent
3aa04be96f
commit
625bd446dd
2 changed files with 71 additions and 7 deletions
23
README.md
23
README.md
|
@ -136,6 +136,29 @@ Create the sentinel file (`/var/src/.populate`) before syncing the new source.
|
||||||
|
|
||||||
Specifies which `nixos-rebuild` operation to perform.
|
Specifies which `nixos-rebuild` operation to perform.
|
||||||
|
|
||||||
|
### `useNixOutputMonitor` (optional, defaults to `"opportunistic"`)
|
||||||
|
|
||||||
|
Specifies when to pipe `nixos-rebuild`'s output to
|
||||||
|
[nom](https://github.com/maralorn/nix-output-monitor).
|
||||||
|
|
||||||
|
Supported values:
|
||||||
|
|
||||||
|
* `"opportunistic"` (default) -
|
||||||
|
Use `nom` only if it is present on the target machine.
|
||||||
|
|
||||||
|
* `"optimistic"` -
|
||||||
|
Use `nom`, assuming it is present on the target machine.
|
||||||
|
|
||||||
|
* `"pessimistic"` -
|
||||||
|
Use `nom` via `nix-shell` on the target machine.
|
||||||
|
|
||||||
|
* `true` -
|
||||||
|
Use `nom`.
|
||||||
|
If it is not present on the target machine, then use it via `nix-shell`.
|
||||||
|
|
||||||
|
* `false` -
|
||||||
|
Don't use `nom`
|
||||||
|
|
||||||
## writeTest
|
## writeTest
|
||||||
|
|
||||||
Very similiar to writeDeploy, but just builds the system on the target without
|
Very similiar to writeDeploy, but just builds the system on the target without
|
||||||
|
|
|
@ -4,10 +4,16 @@ in
|
||||||
|
|
||||||
{ nix, openssh, populate, writers }: rec {
|
{ nix, openssh, populate, writers }: rec {
|
||||||
|
|
||||||
rebuild = args: target:
|
rebuild = {
|
||||||
runShell target {} "nixos-rebuild -I ${lib.escapeShellArg target.path} ${
|
useNixOutputMonitor
|
||||||
lib.concatMapStringsSep " " lib.escapeShellArg args
|
}:
|
||||||
}";
|
args: target:
|
||||||
|
runShell target {}
|
||||||
|
(withNixOutputMonitor useNixOutputMonitor /* sh */ ''
|
||||||
|
nixos-rebuild -I ${
|
||||||
|
lib.concatMapStringsSep " " lib.escapeShellArg ([target.path] ++ args)
|
||||||
|
}
|
||||||
|
'');
|
||||||
|
|
||||||
runShell = target: {
|
runShell = target: {
|
||||||
allocateTTY ? false
|
allocateTTY ? false
|
||||||
|
@ -24,7 +30,41 @@ in
|
||||||
(if allocateTTY then "-t" else "-T")
|
(if allocateTTY then "-t" else "-T")
|
||||||
target.extraOptions
|
target.extraOptions
|
||||||
target.host
|
target.host
|
||||||
command'])}
|
command'
|
||||||
|
])}
|
||||||
|
'';
|
||||||
|
|
||||||
|
withNixOutputMonitor = mode_: command: let
|
||||||
|
mode =
|
||||||
|
lib.getAttr (lib.typeOf mode_) {
|
||||||
|
bool = lib.toJSON mode_;
|
||||||
|
string = mode_;
|
||||||
|
};
|
||||||
|
in /* sh */ ''
|
||||||
|
printf '# use nix-output-monitor: %s\n' ${lib.escapeShellArg mode} >&2
|
||||||
|
${lib.getAttr mode rec {
|
||||||
|
opportunistic = /* sh */ ''
|
||||||
|
if command -v nom >/dev/null; then
|
||||||
|
${optimistic}
|
||||||
|
else
|
||||||
|
${false}
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
optimistic = /* sh */ ''
|
||||||
|
(${command}) 2>&1 | nom
|
||||||
|
'';
|
||||||
|
pessimistic = /* sh */ ''
|
||||||
|
nix-shell -p nix-output-monitor --run ${lib.escapeShellArg optimistic}
|
||||||
|
'';
|
||||||
|
true = /* sh */ ''
|
||||||
|
if command -v nom >/dev/null; then
|
||||||
|
${optimistic}
|
||||||
|
else
|
||||||
|
${pessimistic}
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
false = command;
|
||||||
|
}}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
writeCommand = name: {
|
writeCommand = name: {
|
||||||
|
@ -51,7 +91,8 @@ in
|
||||||
force ? false,
|
force ? false,
|
||||||
operation ? "switch",
|
operation ? "switch",
|
||||||
source,
|
source,
|
||||||
target
|
target,
|
||||||
|
useNixOutputMonitor ? "opportunistic"
|
||||||
}: let
|
}: let
|
||||||
buildTarget' =
|
buildTarget' =
|
||||||
if buildTarget == null
|
if buildTarget == null
|
||||||
|
@ -65,7 +106,7 @@ in
|
||||||
${lib.optionalString (buildTarget' != target')
|
${lib.optionalString (buildTarget' != target')
|
||||||
(populate { inherit backup force source; target = buildTarget'; })}
|
(populate { inherit backup force source; target = buildTarget'; })}
|
||||||
${populate { inherit backup force source; target = target'; }}
|
${populate { inherit backup force source; target = target'; }}
|
||||||
${rebuild ([
|
${rebuild { inherit useNixOutputMonitor; } ([
|
||||||
operation
|
operation
|
||||||
] ++ lib.optionals crossDeploy [
|
] ++ lib.optionals crossDeploy [
|
||||||
"--no-build-nix"
|
"--no-build-nix"
|
||||||
|
|
Loading…
Reference in a new issue