Monorepo for Tangled tangled.org

hacking.md: mac-specific VM instructions

On a Mac, to build Tangled's VM with Nix, you first have
to set up a Linux builder for Nix. With the help of
@winter, I was able to do so in the way described here.

It would be helpful to develop easier ways to do it, but
this is the easiest one I know at the moment.

Signed-off-by: Ilya Grigoriev <ilyagr@users.noreply.github.com>

Changed files
+42 -2
docs
+42 -2
docs/hacking.md
··· 48 48 redis-server 49 49 ``` 50 50 51 - ## running a knot 51 + ## running knots and spindles in a VM 52 52 53 53 An end-to-end knot setup requires setting up a machine with 54 54 `sshd`, `AuthorizedKeysCommand`, and git user, which is 55 55 quite cumbersome. So the nix flake provides a 56 56 `nixosConfiguration` to do so. 57 57 58 + ### Mac-specific: setting up a Nix builder 59 + 60 + In order to build Tangled's dev VM on macOS, you will first need to set up a 61 + Linux Nix builder. The recommended way to do so is to run a 62 + [`darwin.linux-builder` VM][darwin builder vm] and to register it in `nix.conf` 63 + as a builder for Linux with the same architecture as your Mac (`linux-aarch64` 64 + if you are using Apple Silicon). 65 + 66 + > IMPORTANT: You must build `darwin.linux-builder` somewhere other than inside 67 + > the tangled repo so that it doesn't conflict with the other VM. For example, 68 + > you can do 69 + > 70 + > ```shell 71 + > cd $(mktemp -d buildervm.XXXXX) && nix run nixpkgs#darwin.linux-builder 72 + > ``` 73 + > 74 + > to store the builder VM in a temporary dir. 75 + > 76 + > You should read and follow [all the other intructions][darwin builder vm] to 77 + > avoid subtle problems. 78 + 79 + Alternatively, you can use any other method to set up a Linux machine with `nix` 80 + installed that you can `sudo ssh` into (in other words, root user on your Mac 81 + has to be able to ssh into the Linux machine without entering a password) and 82 + that has the same architecture as your Mac. See [remote builder instructions] 83 + for how to register such a builder in `nix.conf`. 84 + 85 + > WARNING: If you'd like to use 86 + > [`nixos-lima`](https://github.com/nixos-lima/nixos-lima) or 87 + > [Orbstack](https://orbstack.dev/), note that setting them up so that `sudo 88 + > ssh` works can be tricky. It seems to be [possible with 89 + > Orbstack](https://github.com/orgs/orbstack/discussions/1669). 90 + 91 + [darwin builder vm]: 92 + https://nixos.org/manual/nixpkgs/unstable/#sec-darwin-builder 93 + [remote builder instructions]: 94 + https://nix.dev/manual/nix/2.28/advanced-topics/distributed-builds.html#requirements 95 + 96 + ### Running a knot on a dev VM 97 + 58 98 To begin, grab your DID from http://localhost:3000/settings. 59 99 Then, set `TANGLED_VM_KNOT_OWNER` and 60 100 `TANGLED_VM_SPINDLE_OWNER` to your DID. ··· 97 137 git push local-dev main 98 138 ``` 99 139 100 - ## running a spindle 140 + ### running a spindle 101 141 102 142 The above VM should already be running a spindle on 103 143 `localhost:6555`. Head to http://localhost:3000/spindles and