nixos/user/services/ssh-office.nix
2024-10-31 13:14:45 +01:00

45 lines
933 B
Nix

{ pkgs, config, ... }:
let
sshotp = pkgs.writeScriptBin "sshotp"
''
#!/usr/bin/env expect
set stty_init -echo
set timeout 300
set totp [lindex $argv 0];
puts "Our TOTP $totp"
spawn ssh -D 20000 dresden.uio.no
expect {
-re {.*(Verification_Code):} {
send -- "$totp\r"
exp_continue
}
-re {.*dresden.*} {
wait
}
}
'';
ssh-dresden = pkgs.writeShellApplication {
name = "ssh-dresden";
runtimeInputs = [ pkgs.rbw pkgs.expect ];
text = ''
#!/usr/bin/env bash
totp=$(rbw get -f "TOTP" rlogin)
expect -f ${sshotp}/bin/sshotp "$totp"
'';
};
in
{
systemd.user.services.ssh-office = {
Unit = {
Description = "Office ssh session";
};
Service = {
Type = "simple";
ExecStart = "${ssh-dresden}/bin/ssh-dresden";
Restart = "never";
};
};
}