nixos/user/services/ssh-office.nix

46 lines
941 B
Nix
Raw Normal View History

2024-03-20 14:15:46 +00:00
{ 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";
2024-03-21 14:51:35 +00:00
Restart = "always";
2024-03-20 14:15:46 +00:00
};
Install = {
WantedBy = [ "default.target" ];
};
};
}