Skip to content

Commit b3024bc

Browse files
committed
feat(ssh): add declarative device registry with tailscale nc proxyCommand
1 parent e16ce80 commit b3024bc

1 file changed

Lines changed: 29 additions & 6 deletions

File tree

programs/openssh.nix

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,44 @@
1-
{ pkgs, ... }:
1+
{ config, pkgs, lib, ... }:
22

3+
let
4+
devices = {
5+
smartphone = {
6+
magicDns = "galaxy-s10";
7+
sshPort = 8022;
8+
};
9+
tablet = {
10+
magicDns = "pedros-tab-s6-lite";
11+
sshPort = 8022;
12+
};
13+
};
14+
15+
tailscaleSocket = "${config.home.homeDirectory}/.tailscaled.sock";
16+
17+
mkSshBlock = alias: dev: {
18+
hostname = dev.magicDns;
19+
port = dev.sshPort;
20+
proxyCommand = "${pkgs.tailscale}/bin/tailscale --socket=${tailscaleSocket} nc %h %p";
21+
};
22+
23+
deviceBlocks = lib.mapAttrs mkSshBlock devices;
24+
25+
magicDnsNames = lib.concatStringsSep " "
26+
(lib.mapAttrsToList (_: dev: dev.magicDns) devices);
27+
in
328
{
4-
home.packages = [
5-
pkgs.openssh
6-
];
29+
home.packages = [ pkgs.openssh ];
730

831
programs.ssh = {
932
enable = true;
1033
enableDefaultConfig = false;
1134

12-
matchBlocks = {
35+
matchBlocks = deviceBlocks // {
1336
"*.ts.net 100.*" = {
1437
user = "brantes";
1538
identityFile = "~/.ssh/id_ed25519";
1639
};
1740

18-
"galaxy-s10 pedros-tab-s6-lite smartphone tablet" = {
41+
"${magicDnsNames}" = {
1942
port = 8022;
2043
};
2144

0 commit comments

Comments
 (0)