unify home-manager configurations of workmac and main laptop

- manually inspected changes of "workmac" branch
- modularised out some config parts into modules
This commit is contained in:
Trolli Schmittlauch 2024-03-17 19:18:53 +01:00
parent 2bdff39416
commit f14b290937
12 changed files with 875 additions and 472 deletions

View file

@ -0,0 +1,79 @@
{ pkgs, ... }:
''
# rsync -rlptzv --progress --delete --exclude=.git --exclude=.vscode --exclude=result --exclude=channels/ /Users/os/src/fc.qemu os@hydra01:
# rsync -rlptzv --progress --rsh="ssh -J fcio-whq-jump" --delete --exclude=.git --exclude=.vscode --exclude=result --exclude=channels/ /Users/os/src/fc-nixos/ os@patty:fc-nixos/
DEFAULT_JUMPHOST="fcio-whq-jump"
_parse_rsync_args() {
# reset pre-defined variables that are read and manipulated throughout this function
unset JUMPHOST
# arrays are bash or zsh specific
RSYNC_OPTS=("-rlptzv" "--progress" "--delete" "--exclude=.git" "--exclude=.vscode" "--exclude=result" "--exclude=channels/" "--exclude=.mypy_cache")
while getopts ':Jj:' OPT; do
case $OPT in
j)
if [ -n "$JUMPHOST" ]; then
echo "-j and -J are conflicting arguments" >&2
return 1
fi
JUMPHOST="$OPTARG"
;;
J)
if [ -n "$JUMPHOST" ]; then
echo "-j and -J are conflicting arguments" >&2
return 1
fi
JUMPHOST="$DEFAULT_JUMPHOST"
;;
?)
echo "rsyncrepo [-J] [-j <jumphost>] <directory> <hostname>"
return 1
;;
esac
done
# trim CLI parameters
shift "$(($OPTIND -1))"
RR_FROM="$1"
RR_TO="$2"
}
_do_rsync() {
# parameter check
if [ -z "$1" ] || [ -z "$2" ]; then
echo "Missing arguments, required: <directory> <hostname>" >&2
return 1
fi
if [ -n "$JUMPHOST" ]; then
RSYNC_OPTS+=("--rsh=/Users/os/.nix-profile/bin/ssh -J ''${JUMPHOST}")
fi
for OPTI in "''${RSYNC_OPTS[@]}"; do
echo "$OPTI"
done
# we always sync /path/to/dir/ to hostname:dir
RR_DEST="''${2}:$(basename $(realpath "''${1}"))"
echo "Syncing ''${1} to ''${RR_DEST}"
# ensure trailing slash for src to avoid recreating directory
${pkgs.rsync}/bin/rsync "''${RSYNC_OPTS[@]}" "''${1}/" "''${RR_DEST}"
}
rsyncrepo() {
_parse_rsync_args "$@"
# inherits parsed arguments through variables
_do_rsync "$RR_FROM" "$RR_TO"
}
rsynchydra() {
_parse_rsync_args "$@"
_do_rsync "$RR_FROM" "hydra01"
}
''

View file

@ -0,0 +1,19 @@
{ pkgs, ... }:
''
ssh-loop () {
setopt shwordsplit
local hosts=$1
local cmd=$2
for x in $1; do echo $x; ${pkgs.openssh}/bin/ssh $x.fcio.net -o StrictHostKeyChecking=no -C "$2"; done
}
ssh-loop-parallel () {
setopt shwordsplit
local hosts=$1
local cmd=$2
for x in $1; do echo $x; ${pkgs.openssh}/bin/ssh $x.fcio.net -o StrictHostKeyChecking=no -C "$2" 2>&1 | sed -e "s/^/$x: /;" & done
wait
}
''