Kieran's opinionated (and probably slightly dumb) nix config
ssh#
Declarative SSH config with per-host options and zmx (persistent tmux-like sessions over SSH) integration.
Options#
All options under atelier.ssh:
| Option | Type | Default | Description |
|---|---|---|---|
enable |
bool | false |
Enable SSH config management |
extraConfig |
string | "" |
Raw SSH config appended to the end |
zmx#
| Option | Type | Default | Description |
|---|---|---|---|
zmx.enable |
bool | false |
Install zmx and autossh |
zmx.hosts |
list of strings | [] |
Host patterns to auto-attach via zmx |
When zmx is enabled for a host, the SSH config injects RemoteCommand, RequestTTY force, and ControlMaster/ControlPersist settings. Shell aliases are also added: zmls, zmk, zma, ash.
Hosts#
Per-host config under atelier.ssh.hosts.<name>:
| Option | Type | Default | Description |
|---|---|---|---|
hostname |
string | — | SSH hostname or IP |
port |
int or null | null |
SSH port |
user |
string or null | null |
SSH user |
identityFile |
string or null | null |
Path to SSH key |
forwardAgent |
bool | false |
Forward SSH agent |
zmx |
bool | false |
Enable zmx for this host |
extraOptions |
attrsOf string | {} |
Arbitrary SSH options |
Example#
atelier.ssh = {
enable = true;
zmx.enable = true;
zmx.hosts = [ "terebithia" "ember" ];
hosts = {
terebithia = {
hostname = "terebithia";
user = "kierank";
forwardAgent = true;
zmx = true;
};
"github.com" = {
identityFile = "~/.ssh/id_rsa";
};
};
};