Merge remote-tracking branch 'ni/master'
This commit is contained in:
commit
fde07d4e5e
7
Makefile
7
Makefile
|
@ -83,7 +83,12 @@ deploy:
|
|||
$(MAKE) populate debug=false
|
||||
$(ssh) $(target_user)@$(target_host) -p $(target_port) \
|
||||
env STOCKHOLM_VERSION="$$STOCKHOLM_VERSION" \
|
||||
nixos-rebuild $(rebuild-command) --show-trace -I $(target_path)
|
||||
nixos-rebuild -Q $(rebuild-command) --show-trace -I $(target_path) \
|
||||
|& if type whatsupnix 2>/dev/null; then \
|
||||
whatsupnix $(target_user)@$(target_host):$(target_port); \
|
||||
else \
|
||||
cat; \
|
||||
fi
|
||||
|
||||
# usage: make populate system=foo
|
||||
populate: populate-target = \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ bash, coreutils, gawk, nix, makeWrapper, stdenv }:
|
||||
{ bash, coreutils, gawk, makeWrapper, nix, openssh, stdenv }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "whatsupnix";
|
||||
|
@ -8,7 +8,7 @@ stdenv.mkDerivation {
|
|||
mkdir -p $out/bin
|
||||
cat - ${./whatsupnix.bash} > $out/bin/whatsupnix <<\EOF
|
||||
#! ${bash}/bin/bash
|
||||
export PATH=${stdenv.lib.makeBinPath [ coreutils gawk nix ]}
|
||||
export PATH=${stdenv.lib.makeBinPath [ coreutils gawk nix openssh ]}
|
||||
EOF
|
||||
chmod +x $out/bin/whatsupnix
|
||||
'';
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
# Usage:
|
||||
#
|
||||
# set -o pipefail
|
||||
# nix-build ... -Q ... | whatsupnix
|
||||
# nix-build ... -Q ... | whatsupnix [user@target[:port]]
|
||||
#
|
||||
|
||||
|
||||
|
@ -18,17 +18,46 @@ trap 'rm -f -- "$broken"' EXIT
|
|||
|
||||
exec >&2
|
||||
|
||||
$GAWK -v broken="$broken" -f <(cat - <<- 'AWK'
|
||||
match($0, /builder for .*(\/nix\/store\/.+\.drv).* failed/, m) {
|
||||
$GAWK -v broken="$broken" '
|
||||
match($0, /^builder for ‘(\/nix\/store\/[^’]+\.drv)’ failed/, m) {
|
||||
print m[1] >> broken
|
||||
}
|
||||
{ print $0 }
|
||||
AWK
|
||||
)
|
||||
'
|
||||
|
||||
case $# in
|
||||
0)
|
||||
print_log() {
|
||||
$NIX_STORE -l "$1"
|
||||
}
|
||||
;;
|
||||
1)
|
||||
remote_user=${1%%@*}
|
||||
if test "$remote_user" = "$1"; then
|
||||
remote_user=root
|
||||
else
|
||||
set -- "${1#$remote_user@}"
|
||||
fi
|
||||
remote_port=${1##*:}
|
||||
if test "$remote_port" = "$1"; then
|
||||
remote_port=22
|
||||
else
|
||||
set -- "${1%:$remote_port}"
|
||||
fi
|
||||
remote_host=$1
|
||||
print_log() {
|
||||
ssh "$remote_user@$remote_host" -p "$remote_port" \
|
||||
nix-store -l "$1"
|
||||
}
|
||||
;;
|
||||
*)
|
||||
echo "usage: whatsupnix [[USER@]HOST[:PORT]]" >&2
|
||||
exit 1
|
||||
esac
|
||||
|
||||
export NIX_PAGER='' # for nix-store
|
||||
while read -r drv; do
|
||||
title="** FAILED $drv LOG **"
|
||||
title="** FAILED $drv LOG **"
|
||||
frame=${title//?/*}
|
||||
|
||||
echo "$frame"
|
||||
|
@ -36,7 +65,7 @@ while read -r drv; do
|
|||
echo "$frame"
|
||||
echo
|
||||
|
||||
$NIX_STORE -l "$drv"
|
||||
print_log "$drv"
|
||||
|
||||
echo
|
||||
done < "$broken"
|
||||
|
|
|
@ -27,7 +27,7 @@ with import <stockholm/lib>;
|
|||
<secrets>
|
||||
./audit.nix
|
||||
./backup.nix
|
||||
./bash.nix
|
||||
./bash
|
||||
./htop.nix
|
||||
./nginx
|
||||
./ssh.nix
|
||||
|
|
Loading…
Reference in a new issue