67 lines
1.5 KiB
Markdown
67 lines
1.5 KiB
Markdown
# microvm
|
|
|
|
[microvm](https://github.com/microvm-nix/microvm.nix) NixOS configuration.
|
|
|
|
## Setup
|
|
|
|
To be able to rebuild remotely and for convenient ssh access, add the uvm host to your Home Manager ssh configuration:
|
|
|
|
```nix
|
|
programs.ssh.matchBlocks = {
|
|
uvm = {
|
|
host = "uvm";
|
|
hostname = "localhost";
|
|
port = 2222;
|
|
user = "root";
|
|
checkHostIP = false;
|
|
};
|
|
};
|
|
```
|
|
|
|
Create a new directory and initialize the template inside of it:
|
|
|
|
```bash
|
|
mkdir -p microvm
|
|
cd microvm
|
|
nix flake init -t git+https://git.sid.ovh/sid/synix#microvm
|
|
```
|
|
|
|
Add your public key to the NixOS configuration. See [`config/configuration.nix`](./config/configuration.nix).
|
|
|
|
## Usage
|
|
|
|
Run VM:
|
|
|
|
```bash
|
|
nix run .#microvm
|
|
```
|
|
|
|
Or with `tmux`:
|
|
|
|
```bash
|
|
tmux new-session -s microvm 'nix run .#microvm'
|
|
```
|
|
|
|
> `tmux` is available in the Nix development shell.
|
|
|
|
SSH into VM:
|
|
|
|
```bash
|
|
ssh uvm
|
|
```
|
|
|
|
Remote rebuilding:
|
|
|
|
```bash
|
|
nix run .#rebuild <build-host> uvm
|
|
```
|
|
|
|
> Note: `<build-host>` needs to be a remote host where you login as root via ssh with no password.
|
|
|
|
If you need to use remote sudo, you can also use [synix's rebuild script](https://git.sid.ovh/sid/synix/blob/master/modules/nixos/common/rebuild.sh) for remote rebuilds. But then, the root user password cannot be empty:
|
|
|
|
```bash
|
|
rebuild -p . -H uvm -T uvm -B <build-host>
|
|
```
|
|
|
|
You might want to set up [PAM's SSH agent Auth](https://search.nixos.org/options?channel=unstable&query=sshAgentAuth) or use an [askpass helper](https://search.nixos.org/options?channel=unstable&query=askpass).
|