Skip to content

Commit

Permalink
make purge script more robust
Browse files Browse the repository at this point in the history
  • Loading branch information
siddarthkay committed Dec 15, 2023
1 parent 6f3bf98 commit 68df406
Showing 1 changed file with 30 additions and 6 deletions.
36 changes: 30 additions & 6 deletions nix/scripts/purge.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ nix_purge_darwin_multi_user_service() {
cd /Library/LaunchDaemons
NIX_SERVICES=(org.nixos.darwin-store.plist org.nixos.nix-daemon.plist)
for NIX_SERVICE in "${NIX_SERVICES[@]}"; do
sudo launchctl unload "${NIX_SERVICE}"
sudo launchctl remove "${NIX_SERVICE}"
sudo launchctl unload "${NIX_SERVICE}" || true
sudo launchctl remove "${NIX_SERVICE}" || true
done
}

Expand All @@ -41,15 +41,39 @@ nix_purge_darwin_multi_user_users() {
nix_purge_darwin_multi_user_volumes() {
sudo sed -i.bkp '/nix/d' /etc/synthetic.conf
sudo sed -i.bkp '/nix/d' /etc/fstab
sudo diskutil apfs deleteVolume /nix

# Attempt to delete the volume
if ! sudo diskutil apfs deleteVolume /nix; then
echo "Failed to unmount /nix because it is in use."

# Identify the process using the volume
local pid=$(lsof +D /nix | awk 'NR==2{print $2}')
if [ -n "$pid" ]; then
echo "The volume /nix is in use by process ID $pid."

# Ask the user whether to terminate the process
read -p "Do you want to terminate this process? (y/n): " choice
if [[ $choice == "y" ]]; then
sudo kill $pid
echo "Process $pid terminated."
else
echo "Process not terminated. Please close it manually and retry."
return 1
fi
else
echo "No process found using /nix. Manual intervention required."
return 1
fi
fi

echo -e "${YLW}You will need to reboot your system!${RST}" >&2
}

nix_purge_multi_user() {
if [[ $(uname -s) == "Darwin" ]]; then
nix_purge_darwin_multi_user_service
nix_purge_darwin_multi_user_users
nix_purge_darwin_multi_user_volumes
nix_purge_darwin_multi_user_service || true
nix_purge_darwin_multi_user_users || true
nix_purge_darwin_multi_user_volumes || true
else
nix_purge_linux_multi_user_service
nix_purge_linux_multi_user_users
Expand Down

0 comments on commit 68df406

Please sign in to comment.