nix-darwin icon indicating copy to clipboard operation
nix-darwin copied to clipboard

Installing Rosetta 2

Open flexwie opened this issue 1 year ago • 5 comments

Is there a nix-darwin way to enabling rosetta support for Apple silicon Macs?

flexwie avatar Sep 28 '23 05:09 flexwie

Not currently, but you could do something like:

{
  system.activationScripts.extraActivation.text = ''
    softwareupdate --install-rosetta --agree-to-license
  '';
}

One possible issue with making a nix-darwin module for this is that there isn't an uninstaller as far as I'm aware so disabling a nix-darwin option wouldn't be able to uninstall Rosetta.

Enzime avatar Sep 29 '23 13:09 Enzime

It is possible to uninstall Rosetta, but the issue is getting around SIP because Rosetta is protected by it. Disabling/enabling SIP requires a reboot each time, and as far as I know, you have to perform the disabling/enabling in recovery mode.

Here's an article about uninstalling Rosetta 2: https://machow2.com/uninstall-rosetta-mac/

jpickwell avatar Oct 24 '23 21:10 jpickwell

Perhaps there is an angle of having this and other advanced options, but the pre-requisite is having SIP disabled? If you want to uninstall, you can automate the process of rebooting into recovery mode: https://apple.stackexchange.com/questions/366857/how-can-i-enter-recovery-mode-for-mac-os-on-an-imac-remotely

But as the comments say in that post, there is no way to run commands remotely, or any pre-meditated commands. And I think that is by Apple's design of a recovery mode. So it does not make sense to have an option like this unless you already have SIP disabled.

Does it make sense to add this as an option but only if SIP is disabled?

I am not opposed to that, but if that is not viable, I don't think this makes sense to keep open.

xav-ie avatar Dec 26 '23 08:12 xav-ie

I would accept PRs that add an option that installs Rosetta without being able to uninstall it as I think this is a feature a lot of people use and the uninstall part isn't very common as far as I can tell.

For implementing the uninstaller, if the option defaults to null and is then explicitly set to false then we could detect if macOS is booted with SIP disabled and if it is then we perform the uninstall, otherwise we could show users instructions for disabling SIP.

Enzime avatar Dec 26 '23 11:12 Enzime

I am thinking about working on a or for this :). I need to learn more about sip though, bc I think you can partially disable it, not just ‘csrutil disable’.

xav-ie avatar Jan 03 '24 14:01 xav-ie