#!/bin/sh ## ## SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. ## ## 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"