summaryrefslogtreecommitdiff
path: root/pkgs/darwin-uninstaller/configuration.nix
diff options
context:
space:
mode:
authorMike Vink <59492084+ivi-vink@users.noreply.github.com>2025-01-16 22:22:34 +0100
committerGitHub <noreply@github.com>2025-01-16 22:22:34 +0100
commit8e7bd91f353caacc0bc4105f573eb3e17f09e03a (patch)
treec5059edcbebd9644290cad7c653c49a36d593021 /pkgs/darwin-uninstaller/configuration.nix
parent6bd39d420578aacf7c0bab7de3e7027b952115ae (diff)
parentbd921223ba7cdac346477d7ea5204d6f4736fcc6 (diff)
Merge branch 'LnL7:master' into masterHEADmaster
Diffstat (limited to 'pkgs/darwin-uninstaller/configuration.nix')
-rw-r--r--pkgs/darwin-uninstaller/configuration.nix45
1 files changed, 24 insertions, 21 deletions
diff --git a/pkgs/darwin-uninstaller/configuration.nix b/pkgs/darwin-uninstaller/configuration.nix
index 6487774..295477a 100644
--- a/pkgs/darwin-uninstaller/configuration.nix
+++ b/pkgs/darwin-uninstaller/configuration.nix
@@ -1,4 +1,4 @@
-{ lib, ... }:
+{ lib, pkgs, ... }:
with lib;
@@ -7,46 +7,49 @@ with lib;
assertions = mkForce [];
system.activationScripts.checks.text = mkForce "";
- # Disable etc, launchd, ...
environment.etc = mkForce {};
launchd.agents = mkForce {};
launchd.daemons = mkForce {};
launchd.user.agents = mkForce {};
+ # Don't try to reload `nix-daemon`
+ nix.useDaemon = mkForce false;
+
system.activationScripts.postUserActivation.text = mkAfter ''
- if test -L ~/.nix-defexpr/channels/darwin; then
+ if [[ -L ~/.nix-defexpr/channels/darwin ]]; then
nix-channel --remove darwin || true
fi
'';
system.activationScripts.postActivation.text = mkAfter ''
- if test -L /Applications/Nix\ Apps; then
+ if [[ -L /Applications/Nix\ Apps ]]; then
rm /Applications/Nix\ Apps
fi
- if test -L /etc/static; then
+ if [[ -L /etc/static ]]; then
rm /etc/static
fi
- if test -O /nix/store; then
- if ! test -e /Library/LaunchDaemons/org.nixos.nix-daemon.plist; then
- sudo rm /Library/LaunchDaemons/org.nixos.nix-daemon.plist || true
- sudo launchctl remove org.nixos.nix-daemon 2> /dev/null || true
+ # If the Nix Store is owned by root then we're on a multi-user system
+ if [[ -O /nix/store ]]; then
+ if [[ -e /nix/var/nix/profiles/default/Library/LaunchDaemons/org.nixos.nix-daemon.plist ]]; then
sudo cp /nix/var/nix/profiles/default/Library/LaunchDaemons/org.nixos.nix-daemon.plist /Library/LaunchDaemons/org.nixos.nix-daemon.plist
sudo launchctl load -w /Library/LaunchDaemons/org.nixos.nix-daemon.plist
fi
-
- if ! grep -q etc/profile.d/nix-daemon.sh /etc/bashrc; then
- echo >&2 "Found no nix-daemon.sh reference in /etc/bashrc"
- echo >&2 "add this snippet back to /etc/bashrc:"
- echo >&2
- echo >&2 " # Nix"
- echo >&2 " if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then"
- echo >&2 " . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh'"
- echo >&2 " fi"
- echo >&2 " # End Nix"
- echo >&2
- fi
fi
+
+ # grep will return 1 when no lines matched which makes this line fail with `set -eo pipefail`
+ dscl . -list /Users UserShell | { grep "\s/run/" || true; } | awk '{print $1}' | while read -r user; do
+ shell=$(dscl . -read /Users/"$user" UserShell)
+ if [[ "$shell" != */bin/zsh ]]; then
+ echo >&2 "warning: changing $user's shell from $shell to /bin/zsh"
+ fi
+
+ dscl . -create /Users/"$user" UserShell /bin/zsh
+ done
+
+ while IFS= read -r -d "" file; do
+ mv "$file" "''${file%.*}"
+ done < <(find /etc -name '*.before-nix-darwin' -follow -print0)
'';
}