Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Any advice on getting the determinate installer and nix-darwin (via flakes) to be more seamless together? I have a decent setup, but the install/remove is clunkier than it needs to be because

1) on install, nix-darwin complains about the nix.conf that determinate sets up

2) on uninstall, determinate complains about nix-darwin being installed



1. I don't think this could be called seamless. But I just don't use the normal Nix-Darwin installer. I:

  a. build darwin-rebuild from the Nix-Darwin flake
  b. do a darwin-rebuild build --flake of the target system
  c. delete all of the files Nix-Darwin will complain about colliding with upon first install, including `/etc/nix/nix.conf`
  d. run the activation scripts in the built system directly, like
     ./result/activate-user
     sudo ./result/activate
For (d), make sure you run them in that order because it's actually the user activation script which ensures that /run/current-system exists.

For (c), just inspect the files in `result/etc` (or wherever you put the symlink to your built system, or directly from the Nix store) and compare them to what already exists in `/etc`, e.g.,

  find result/etc/ -type l | sed -E 's|^result||g' | xargs -I{} sh -c "test -f '{}' && echo '{}'"
should give you a list of files to nuke or back up or whatever, if you're trying to automate this.

2. Nix-Darwin has its own uninstaller whose job is to go remove all the references to `/etc/static` from `/etc` and some launchd crap, which are the bits and pieces that the Determinate Nix Installer finds and complains about when you try to uninstall Nix with an active Nix-Darwin installation. The uninstaller gets installed by default (try `less $(which darwin-uninstaller)`), but if it's missing for some reason you can also run it from the flake like `nix run github:LnL7/nix-darwin#darwin-uninstaller`.


Yeah, I actually have a slightly more streamlined version of step 1 by running the flake directly, I am just annoyed that I have to manually get involved (and I also have to manually reconcile options that determinate sets in the nix.conf, by translating them into my nix-darwin config).


> and I also have to manually reconcile options that determinate sets in the nix.conf, by translating them into my nix-darwin config

This is what I used to do to appease the installer before. After some options changed and I was like 'you know what, I'm happy with the ones I set; if I have already built the system before I run the activation script, then it's fine to delete /etc/nix/nix.conf.'.

The Nix-Darwin installer isn't a great option for me anyway because it assumes your darwin-config will live in ~/.nixpkgs/darwin-configuration.nix, but I like to keep it in /etc/nix-darwin/configuration.nix for a more NixOS-like convention.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: