dotfiles/files/qvm-copy-dotfiles
Ben Grande 84bae87dc5
fix: discover non-root username at runtime
Useful when Dom0 has the non-default username, less useful for DomUs.

Fixes: https://github.com/ben-grande/qusal/issues/43
2024-04-30 16:02:49 +02:00

41 lines
1.4 KiB
Bash
Executable File

#!/bin/sh
##
## SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
##
## SPDX-License-Identifier: AGPL-3.0-or-later
##
## Benefits of this method:
## - faster than salt, no need for a dispvm.
## - preserve permisions, salt-ssh doesnt.
## Disadvantages:
## - files need be copied to dom0 preserving permissions or setting again.
##
## Commands to run:
## sudo ./qvm-copy-dotfiles QUBE
set -eu
test -n "${1:-}" || { echo "usage: ${0##*/} QUBE"; exit 1; }
test "$(id -u)" = "0" || { echo "Program requires root."; exit 1; }
vm="$1"
qvm-check "$vm" >/dev/null 2>&1 || { echo "VM doesn't exist: '$vm'"; exit 1; }
test -f ./setup.sh || { echo "File doesn't exist: './setup.sh'"; exit 1; }
if test "$vm" = "dom0"; then
sh ./dotfiles/setup.sh
user_name="$(getent group qubes | awk -F "[:,]" '{print $4}')"
user_home="$(getent passwd "${user_name}" | awk -F ":" '{print $6}')"
sudo -u "${user_name}" mkdir -pv "${user_home}/.cache"
tmpdir="$(sudo -u "${user_name}" mktemp -d "${user_home}/.cache/XXXXXX")"
trap 'rm -rf -- "$tmpdir"' EXIT INT HUP QUIT ABRT
cp -r ./dotfiles "$tmpdir"
chown -R "${user_name}:${user_name}" "$tmpdir"
sudo -u "${user_name}" "$tmpdir/dotfiles/setup.sh"
exit
fi
qvm-run -q "$vm" -- "rm -rf ~/QubesIncoming/dom0/files"
qvm-copy-to-vm "$vm" ../files
qvm-run -q "$vm" -- "sh ~/QubesIncoming/dom0/files/setup.sh"
qvm-run -q "$vm" -- "rm -rf ~/QubesIncoming/dom0/files"