logoalt Hacker News

bergkvistlast Monday at 1:01 AM3 repliesview on HN

If you are using an Apple Silicon laptop and you want to deploy to an x86-64 Linux box, this can get a bit annoying due needing to deal with cross compilation in nix.


Replies

diarrhealast Monday at 3:10 PM

The Make target I use to deploy in this manner (MacBook to x86-64, single machine) is simply:

    server:
        @echo "Deploying machine (with ssh-agent forwarding): '$(MACHINE)'"
        NIX_SSHOPTS="-A" \
        nix run nixpkgs#nixos-rebuild -- switch \
        --flake .#$(MACHINE) \
        --target-host $(MACHINE).$(DOMAIN) \
        --build-host $(MACHINE).$(DOMAIN) \
        --no-reexec \
        --verbose \
        --sudo

Which has been working well. I admit I do not understand what all of these flags do in detail.

This uses ssh agent forwarding, and then sudo via PAM. That allows for passwordless sudo. Building (well, activating) without sudo is pretty involved last I checked, I could not get it to work.

JamesSwiftlast Monday at 1:09 PM

You can easily spin up a linux builder vm or I just have a dedicated remote builder on my network which I offload to

graham33last Monday at 5:36 AM

You can have an x86-64 remote builder, or use a service like nixbuild.net, rather than use cross-compilation.