Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Uninstalling fails to restore the system's zshrc and zshenv #912

Open
grahamc opened this issue Mar 22, 2024 · 1 comment
Open

Uninstalling fails to restore the system's zshrc and zshenv #912

grahamc opened this issue Mar 22, 2024 · 1 comment

Comments

@grahamc
Copy link
Contributor

grahamc commented Mar 22, 2024

After installing and uninstalling nix-darwin today, it looks like nix-darwin removed the zshenv and the standard zshrc file from /etc, but then doesn't restore them:

[130] grahamc@Grahams-MacBook-Pro> ls /etc/zsh*
/etc/zshenv.before-nix-darwin  /etc/zshrc.before-nix-darwin  /etc/zshrc_Apple_Terminal

which leaves the user in a semi-broken Nix and terminal state.

@nick-kadutskyi
Copy link

nick-kadutskyi commented Apr 14, 2024

I have the same problem and didn't get my /etc/zshenv, /etc/zshrc, /etc/nix/nix.config restored.

During installation I got:

❯ nix run nix-darwin -- switch --flake ~/.config/nix-darwin
warning: creating lock file '/Users/nick/.config/nix-darwin/flake.lock':
• Added input 'nix-darwin':
    'github:LnL7/nix-darwin/36524adc31566655f2f4d55ad6b875fb5c1a4083' (2024-03-30)
• Added input 'nix-darwin/nixpkgs':
    follows 'nixpkgs'
• Added input 'nixpkgs':
    'github:NixOS/nixpkgs/692ceb334b4fd60d61798dde895f6f122110f5fe' (2024-04-13)
building the system configuration...
Password:
setting up /run via /etc/synthetic.conf...
error: Unexpected files in /etc, aborting activation
The following files have unrecognized content and would be overwritten:

  /etc/zshenv

Please check there is nothing critical in these files, rename them by adding .before-nix-darwin to the end, and then try again.

I moved /etc/zshenv to /etc/zshen.before-nix-darwin and then rerun installation:

❯ nix run nix-darwin -- switch --flake ~/.config/nix-darwin
building the system configuration...
user defaults...
setting up user launchd services...
setting up /Applications/Nix Apps...
setting up pam...
applying patches...
setting up /etc...
system defaults...
setting up launchd services...
creating service org.nixos.activate-system
reloading service org.nixos.nix-daemon
reloading nix-daemon...
waiting for nix-daemon
waiting for nix-daemon
configuring networking...
setting nvram variables...

I checked those zsh* files and see that /etc/zshrc got renamed to /etc/zshrc.before-nix-darwin automatically.

After that I ran uninstall script:

❯ darwin-uninstaller

Uninstalling nix-darwin, this will:

    - remove /Applications/Nix Apps symlink
    - cleanup static /etc files
    - disable and remove all launchd services managed by nix-darwin
    - restore daemon service from nix installer (only when this is a multi-user install)

Proceed? [y/n] y
user defaults...
setting up user launchd services...
Password:
setting up /Applications/Nix Apps...
setting up pam...
applying patches...
setting up /etc...
system defaults...
setting up launchd services...
removing service org.nixos.activate-system
removing service org.nixos.nix-daemon
configuring networking...
setting nvram variables...
rm: cannot remove '/Library/LaunchDaemons/org.nixos.nix-daemon.plist': No such file or directory
grep: /etc/bashrc: No such file or directory
Found no nix-daemon.sh reference in /etc/bashrc
add this snippet back to /etc/bashrc:

    # Nix
    if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then
      . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh'
    fi
    # End Nix


NOTE: The /nix/var/nix/profiles/system* profiles still exist and won't be garbage collected.

Done!

*.before-nix-darwin did not get restored and now the nix and other stuff gets broken.

I don't know if I have the right expectation though that it should restore those files automatically.

Also it renamed and then didn't restore /etc/nix/nix.config which I caught by chance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants