From bb441b38d0ca6992db6fa5ff0373a6431773b82c Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Mon, 25 Nov 2024 15:19:01 +0100 Subject: [PATCH] Force running actions as setup-user --- scripts/lib/action.fish | 66 ++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 30 deletions(-) diff --git a/scripts/lib/action.fish b/scripts/lib/action.fish index d59254c2..87969e77 100644 --- a/scripts/lib/action.fish +++ b/scripts/lib/action.fish @@ -10,14 +10,15 @@ function runActionSetup -V dir and runHook prepareNix || installNixPkgs and echo "Flagging repository as safe..." - and sudo git config --system --add safe.directory (realpath "$(status dirname)/../..") + and sudo git config --system --add safe.directory (realpath -m "$(status dirname)/../..") and runHook actionPreRun || true end -function runActionConfigure +function runActionConfigure -V dir and if [ -z "$CONFIG_NAME" ] + source "$dir/settings.fish" selectProfile config - set -x CONFIG_NAME "$config" + set -gx CONFIG_NAME "$config" end end @@ -37,39 +38,44 @@ function runAction -V dir end function runSetupUserAction -V dir - if [ (id -u) -eq 0 ] + source "$dir/settings.fish" + runActionSetup + runActionConfigure + set -l env "CONFIG_NAME=$CONFIG_NAME" + set -l name (getOSConfig setupUser.name) + + if [ "$USER" != "$name" ] set -l cmdline (cat /proc/$fish_pid/cmdline | string split0) - if [ -z "$TMUX" ] - runActionSetup - tmux new-session -e "CONFIG_NAME=$CONFIG_NAME" $cmdline + if [ (id -u) -ne 0 ] + sudo --set-home --preserve-env $cmdline else - source "$dir/settings.fish" - runActionConfigure - set -l sudoConfig "/etc/sudoers.d/PortValhalla" - set -l name (getOSConfig setupUser.name) + if [ -z "$TMUX" ] + tmux new-session -e "$env" $cmdline + else + set -l sudoConfig "/etc/sudoers.d/PortValhalla" - and begin - echo "Creating setup user" + begin + echo "Creating setup user" - and useradd \ - --comment "PortValhalla Setup User" \ - --system \ - --no-user-group \ - --groups nix-users \ - --create-home \ - --uid (getOSConfig setupUser.id --json) \ - "$name" + and useradd \ + --comment "PortValhalla Setup User" \ + --system \ + --groups nix-users \ + --create-home \ + --uid (getOSConfig setupUser.id --json) \ + "$name" + + and begin + echo "$name ALL=(ALL:ALL) NOPASSWD: ALL" + end >"$sudoConfig" + + and sudo --preserve-env --set-home --user "$name" $cmdline + disposeAction + rm "$sudoConfig" + userdel -rf "$name" + end end - - and begin - echo "$name ALL=(ALL:ALL) NOPASSWD: ALL" - end >"$sudoConfig" - - and sudo --preserve-env --set-home --user "$name" $cmdline - disposeAction - rm "$sudoConfig" - userdel -rf "$name" end else $argv