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

Add support for deploying to a Mac (nix-darwin) #34

Open
srid opened this issue Oct 27, 2022 · 6 comments
Open

Add support for deploying to a Mac (nix-darwin) #34

srid opened this issue Oct 27, 2022 · 6 comments

Comments

@srid
Copy link

srid commented Oct 27, 2022

I'd like the ability to deploy to a remote Mac machine (say, a Mac mini server) from another Mac machine (say, a Macbook). nixinate is currently hardcoded to deploy nixosConfigurations.foo using nixos-rebuild. To support macOS, we simply want to be able to deploy darwinConfigurations.foo using darwin-rebuild; everything else would more or less remain the same. Here's a demonstration of what this looks like without nixinate:

      apps.aarch64-darwin.deploy-macmini = {
        type = "app";
        program =
          let
            host = "[email protected]";
            machine = "myhost";
            pkgs = inputs.nixpkgs.legacyPackages.aarch64-darwin;
          in
          (pkgs.writeShellApplication {
            name = "deploy-to-mac";
            text = ''
              set -x
              nix copy ${self} --to ssh://${host}
              ssh -t ${host} "darwin-rebuild switch --flake ${self}#${machine}"
            '';
          }) + "/bin/deploy-to-mac";
      };
@srid
Copy link
Author

srid commented Oct 27, 2022

Better,

''
nix copy ${self} --to ssh://${host}
nix copy ${self.darwinConfigurations.${machine}.system} --to ssh://${host}
ssh -t ${host} "${self.darwinConfigurations.${machine}.system}/sw/bin/darwin-rebuild switch --flake ${self}#${machine}"
'';

@MatthewCroughan
Copy link
Owner

Buy me a Mac, and I'll do it. I may remove macOS from the supported system until I own the hardware.

Avoid running nix copy multiple times. Anyone using password protected keys, such as a Yubikey, will have to type in their credentials once each time you perform a nix copy.

@Fresheyeball
Copy link
Contributor

@MatthewCroughan feel free to use the Mac in our data center

@MatthewCroughan
Copy link
Owner

@Fresheyeball Sorry. I cannot test or develop on a remote Mac, since purity cannot be guaranteed. I also would not have control over the HCI agent that runs on it. If I'm going to develop this at all, I need a real Mac locally. I can probably do x86_64-darwin in a VM myself though. What if I want to change the Base OS version in order to test it? I can't do that with the data center Mac. It is not sufficient.

@Fresheyeball
Copy link
Contributor

I think it's sufficient to get some support. Maybe not everything, but you are welcome to it regardless, and I do think it's enough for this one issue.

@MatthewCroughan
Copy link
Owner

I won't add features that I can't test into Nixinate. See the full integration test I have for Nixinate here, I wouldn't be able to replicate this on Darwin. https://github.com/MatthewCroughan/nixinate/tree/master/tests

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

3 participants