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

Installer fails with /etc/ file conflicts when running on a fresh Determinate Nix Installer install

Open epetousis opened this issue 5 months ago • 1 comments

I ran the nix-darwin flake installer, immediately after running the Determinate Nix installer. I got a couple of conflicts:

epetousis@evan-mba ~ % nix run nix-darwin -- switch --flake ~/.local/share/dotfiles
building the system configuration...
warning: Ignoring setting 'auto-allocate-uids' because experimental feature 'auto-allocate-uids' is not enabled
warning: Ignoring setting 'impure-env' because experimental feature 'configurable-impure-env' is not enabled
Password:
error: Unexpected files in /etc, aborting activation
The following files have unrecognized content and would be overwritten:

  /etc/nix/nix.conf
  /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 took a look and it's basically just a few defaults getting overwritten, plus Determinate Nix Installer's upgrade-nix-store-path-url, which is probably not ideal to have nix-darwin overwrite. Is there meant to be support for this setup at the moment?

epetousis avatar Feb 22 '24 00:02 epetousis

Here's the contents of both files with their SHA256 hashes (on request of @Enzime):

/etc/zshenv

# Set up Nix only on SSH connections
# See: https://github.com/DeterminateSystems/nix-installer/pull/714
if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ] && [ -n "${SSH_CONNECTION}" ] && [ "${SHLVL}" -eq 1 ]; then
    . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh'
fi
# End Nix

Checksum: d07015be6875f134976fce84c6c7a77b512079c1c5f9594dfa65c70b7968b65f /etc/zshenv.before-nix-darwin

/etc/nix/nix.conf
# See `/nix/nix-installer --version` for the version details.

build-users-group = nixbld
experimental-features = nix-command flakes repl-flake
bash-prompt-prefix = (nix:$name)\040
max-jobs = auto
extra-nix-path = nixpkgs=flake:nixpkgs
upgrade-nix-store-path-url = https://install.determinate.systems/nix-upgrade/stable/universal

Checksum: 5d23e6d7015756c6f300f8cd558ec4d9234ca61deefd4f2478e91a49760b0747 /etc/nix/nix.conf.before-nix-darwin

epetousis avatar Feb 22 '24 01:02 epetousis

Is there anything special I need to do to use the new checksums?

I still get the error while running nix run nix-darwin -- switch --flake . with my flake.nix

{
  description = "Example Darwin system flake";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
    nix-darwin.url = "github:LnL7/nix-darwin";
    nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
  };

  outputs = inputs@{ self, nix-darwin, nixpkgs }:
  let
    configuration = { pkgs, ... }: {
      # List packages installed in system profile. To search by name, run:
      # $ nix-env -qaP | grep wget
      environment.systemPackages = (with pkgs; [
	neovim
	direnv
        ]);

      # Auto upgrade nix package and the daemon service.
      services.nix-daemon.enable = true;
      # nix.package = pkgs.nix;

      # Necessary for using flakes on this system.
      nix.settings.experimental-features = "nix-command flakes";

      # Create /etc/zshrc that loads the nix-darwin environment.
      programs.zsh.enable = true;  # default shell on catalina

      # Set Git commit hash for darwin-version.
      system.configurationRevision = self.rev or self.dirtyRev or null;

      # Used for backwards compatibility, please read the changelog before changing.
      # $ darwin-rebuild changelog
      system.stateVersion = 4;

      # The platform the configuration will be used on.
      nixpkgs = {
        config.allowUnfree = true;
	hostPlatform = "x86_64-darwin";
      };
  };
  in
  {
    # Build darwin flake using:
    # $ darwin-rebuild build --flake .#Macbook-Pro-13-Early-2015
    darwinConfigurations."Macbook-Pro-13-Early-2015" = nix-darwin.lib.darwinSystem {
      modules = [ configuration ];
    };

    # Expose the package set, including overlays, for convenience.
    darwinPackages = self.darwinConfigurations."Macbook-Pro-13-Early-2015".pkgs;
  };
}

dmuiX avatar Feb 24 '24 12:02 dmuiX

I spent some time working thought the manual install...

First I get this error:

warning: unknown setting 'upgrade-nix-store-path-url'

I even made a blank /etc/nix.conf and nothing seems to work there.

I wonder if its a permission issue or something... but very annoying I will say for sure.

I tried the manual install thinking I'd make some progress maybe:

	nix-channel --add https://github.com/LnL7/nix-darwin/archive/master.tar.gz darwin
	nix-channel --update
	export NIX_PATH=darwin-config=$HOME/.nixpkgs/darwin-configuration.nix:$HOME/.nix-defexpr/channels:$NIX_PATH

	$(nix-build '<darwin>' -A system --no-out-link)/sw/bin/darwin-rebuild build
	$(nix-build '<darwin>' -A system --no-out-link)/sw/bin/darwin-rebuild switch

jeeftor avatar Apr 26 '24 18:04 jeeftor

However I think the issue is this:

image

Looks like Darwin expects a symlink into /etc/static/nix/nix.conf

jeeftor avatar Apr 26 '24 18:04 jeeftor