diff options
Diffstat (limited to 'accounts/gkleen@sif/systemd.nix')
| -rw-r--r-- | accounts/gkleen@sif/systemd.nix | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/accounts/gkleen@sif/systemd.nix b/accounts/gkleen@sif/systemd.nix index a89b46c2..14669a1e 100644 --- a/accounts/gkleen@sif/systemd.nix +++ b/accounts/gkleen@sif/systemd.nix | |||
| @@ -6,7 +6,7 @@ let | |||
| 6 | cfg = config.home-manager.users.${userName}; | 6 | cfg = config.home-manager.users.${userName}; |
| 7 | 7 | ||
| 8 | autossh-socks-script = pkgs.writeScript "autossh" '' | 8 | autossh-socks-script = pkgs.writeScript "autossh" '' |
| 9 | #!${pkgs.zsh}/bin/zsh -xe | 9 | #!${lib.getExe pkgs.zsh} -xe |
| 10 | 10 | ||
| 11 | host="''${1%:*}" | 11 | host="''${1%:*}" |
| 12 | port="''${1#*:}" | 12 | port="''${1#*:}" |
| @@ -15,31 +15,29 @@ let | |||
| 15 | cmd=() | 15 | cmd=() |
| 16 | 16 | ||
| 17 | if [[ -n "''${SSHPASS_SECRET}" ]]; then | 17 | if [[ -n "''${SSHPASS_SECRET}" ]]; then |
| 18 | cmd+=(${pkgs.sshpassSecret}/bin/sshpass-secret) | 18 | cmd+=(${lib.getExe' pkgs.sshpassSecret "sshpass-secret"}) |
| 19 | cmd+=("''${(@s/:/)SSHPASS_SECRET}") | 19 | cmd+=("''${(@s/:/)SSHPASS_SECRET}") |
| 20 | cmd+=(--) | 20 | cmd+=(--) |
| 21 | fi | 21 | fi |
| 22 | 22 | ||
| 23 | cmd+=(${pkgs.openssh}/bin/ssh -vN -D localhost:''${port} "''${host}") | 23 | cmd+=(${lib.getExe' pkgs.openssh "ssh"} -vN -D localhost:''${port} "''${host}") |
| 24 | 24 | ||
| 25 | ( exec -a "''${cmd[1]}" -- ''${cmd} ) & | 25 | ( exec -a "''${cmd[1]}" -- ''${cmd} ) & |
| 26 | pid=$! | 26 | pid=$! |
| 27 | 27 | ||
| 28 | newpid="" | 28 | newpid="" |
| 29 | i=200 | 29 | i=200 |
| 30 | while ! newpid=$(${pkgs.lsof}/bin/lsof -Pi @localhost:"''${port}" -sTCP:LISTEN -t); do | 30 | while ! newpid=$(${lib.getExe pkgs.lsof} -Pi @localhost:"''${port}" -sTCP:LISTEN -t); do |
| 31 | if ! kill -0 "''${pid}"; then | 31 | if ! kill -0 "''${pid}"; then |
| 32 | wait "''${pid}" | 32 | wait "''${pid}" |
| 33 | exit $? | 33 | exit $? |
| 34 | fi | 34 | fi |
| 35 | [[ "''${i}" -gt 0 ]] || exit 1 | 35 | [[ "''${i}" -gt 0 ]] || exit 1 |
| 36 | i=$((''${i} - 1)) | 36 | i=$((''${i} - 1)) |
| 37 | ${pkgs.coreutils}/bin/sleep 0.1 | 37 | ${lib.getExe' pkgs.coreutils "sleep"} 0.1 |
| 38 | done | 38 | done |
| 39 | 39 | ||
| 40 | ${config.systemd.package}/bin/systemd-notify --ready | 40 | ${lib.getExe' config.systemd.package "systemd-notify"} --pid=''${newpid} --ready |
| 41 | |||
| 42 | wait "''${pid}" "''${newpid}" | ||
| 43 | ''; | 41 | ''; |
| 44 | in { | 42 | in { |
| 45 | tmpfiles.rules = [ | 43 | tmpfiles.rules = [ |
| @@ -146,7 +144,7 @@ in { | |||
| 146 | Service.ExecStart = "${pkgs.bluez}/bin/mpris-proxy"; | 144 | Service.ExecStart = "${pkgs.bluez}/bin/mpris-proxy"; |
| 147 | Install.WantedBy = [ "default.target" ]; | 145 | Install.WantedBy = [ "default.target" ]; |
| 148 | }; | 146 | }; |
| 149 | "autossh-socks@proxy.mathw0h:8119" = { | 147 | "autossh-socks@proxy.ssh.math.lmu.de:8119" = { |
| 150 | Service = { | 148 | Service = { |
| 151 | Type = "notify"; | 149 | Type = "notify"; |
| 152 | NotifyAccess = "all"; | 150 | NotifyAccess = "all"; |
| @@ -154,7 +152,7 @@ in { | |||
| 154 | Restart = "always"; | 152 | Restart = "always"; |
| 155 | RestartSec = "23s"; | 153 | RestartSec = "23s"; |
| 156 | ExecStart = "${autossh-socks-script} \"%I\""; | 154 | ExecStart = "${autossh-socks-script} \"%I\""; |
| 157 | Environment = [ "SSHPASS_SECRET=gkleen@mathw0g.math.lmu.de" ]; | 155 | Environment = [ "SSHPASS_SECRET=gkleen@ssh.math.lmu.de" ]; |
| 158 | }; | 156 | }; |
| 159 | Unit = { | 157 | Unit = { |
| 160 | StopWhenUnneeded = true; | 158 | StopWhenUnneeded = true; |
| @@ -175,6 +173,22 @@ in { | |||
| 175 | StopWhenUnneeded = true; | 173 | StopWhenUnneeded = true; |
| 176 | }; | 174 | }; |
| 177 | }; | 175 | }; |
| 176 | "autossh-socks@proxy.mathw0h:8123" = { | ||
| 177 | Service = { | ||
| 178 | Type = "notify"; | ||
| 179 | NotifyAccess = "all"; | ||
| 180 | WorkingDirectory = "~"; | ||
| 181 | Restart = "always"; | ||
| 182 | RestartSec = "23s"; | ||
| 183 | ExecStart = "${autossh-socks-script} \"%I\""; | ||
| 184 | Environment = [ "SSHPASS_SECRET=gkleen@mathw0h.mathinst.loc" ]; | ||
| 185 | }; | ||
| 186 | Unit = { | ||
| 187 | StopWhenUnneeded = true; | ||
| 188 | StartLimitInterval = "180s"; | ||
| 189 | StartLimitBurst = 7; | ||
| 190 | }; | ||
| 191 | }; | ||
| 178 | swayidle = { | 192 | swayidle = { |
| 179 | Service = { | 193 | Service = { |
| 180 | RuntimeDirectory = "swayidle"; | 194 | RuntimeDirectory = "swayidle"; |
| @@ -356,7 +370,7 @@ in { | |||
| 356 | Service = { | 370 | Service = { |
| 357 | ExecStart = "${config.systemd.package}/lib/systemd/systemd-socket-proxyd --exit-idle-time=10s localhost:${toString (port + 1)}"; | 371 | ExecStart = "${config.systemd.package}/lib/systemd/systemd-socket-proxyd --exit-idle-time=10s localhost:${toString (port + 1)}"; |
| 358 | }; | 372 | }; |
| 359 | }) [{ host = "proxy.mathw0h"; port = 8118; } { host = "proxy.vidhar"; port = 8120; }]); | 373 | }) [{ host = "proxy.ssh.math.lmu.de"; port = 8118; } { host = "proxy.vidhar"; port = 8120; } { host = "proxy.mathw0h"; port = 8122; }]); |
| 360 | sockets = listToAttrs (map (port: nameValuePair "proxy-to-autossh-socks@${toString port}" { | 374 | sockets = listToAttrs (map (port: nameValuePair "proxy-to-autossh-socks@${toString port}" { |
| 361 | Socket = { | 375 | Socket = { |
| 362 | ListenStream = "%I"; | 376 | ListenStream = "%I"; |
| @@ -364,7 +378,7 @@ in { | |||
| 364 | Install = { | 378 | Install = { |
| 365 | WantedBy = ["default.target"]; | 379 | WantedBy = ["default.target"]; |
| 366 | }; | 380 | }; |
| 367 | }) [8118 8120]) // { | 381 | }) [8118 8120 8122]) // { |
| 368 | "yt-dlp" = { | 382 | "yt-dlp" = { |
| 369 | Socket = { | 383 | Socket = { |
| 370 | SocketMode = "0600"; | 384 | SocketMode = "0600"; |
