{ pkgs, ... }:
{
  "git.ymir" =
    { hostname = "ymir.yggdrasil.li";
      user = "gitolite";
      identityFile = "~/.ssh/gkleen@sif.midgard.yggdrasil";
    };
  "git.yggdrasil.li" =
    { user = "gitolite";
      identityFile = "~/.ssh/gkleen@sif.midgard.yggdrasil";
    };
  "borg.munin" =
    { hostname = "u120515.your-storagebox.de";
      user = "u120515";
      identityFile = "~/.ssh/borg.munin";
      port = 23;
    };
  "munin" =
    { hostname = "u120515.your-storagebox.de";
      user = "u120515";
      identityFile = "~/.ssh/munin";
    };
  "ymir" =
    { hostname = "ymir.yggdrasil.li";
      identityFile = "~/.ssh/gkleen@sif.midgard.yggdrasil";
    };
  "surtr" =
    { hostname = "surtr.yggdrasil";
      identityFile = "~/.ssh/gkleen@sif.midgard.yggdrasil";
    };
  "surtr.yggdrasil.li" =
    { identityFile = "~/.ssh/gkleen@sif.midgard.yggdrasil";
    };
  "heimdallr" =
    { hostname = "heimdallr.asgard.yggdrasil";
      user = "root";
      identityFile = "~/.ssh/gkleen@sif.midgard.yggdrasil";
    };
  "gitlab2.rz.ifi.lmu.de" =
    { user = "git";
      identityFile = "~/.ssh/gkleen@gitlab2.rz.ifi.lmu.de";
    };
  "gitlab2.cip.ifi.lmu.de" =
    { user = "git";
      identityFile = "~/.ssh/gkleen@sif.midgard.yggdrasil";
    };
  "gitlab.ifi.lmu.de" =
    { user = "git";
      identityFile = "~/.ssh/kleen@gitlab.ifi.lmu.de";
    };
  "hel".hostname = "hel.midgard.yggdrasil";
  "blackbeard" =
    { hostname = "blackbeard.tcs.ifi.lmu.de";
      user = "pi";
      identityFile = "~/.ssh/blackbeard";
    };
  "github.com" =
    { user = "git";
      identityFile = "~/.ssh/gkleen@github.com";
    };
  "ullr.playat.ch" =
    { hostname = "ullr.playat.ch";
      user = "minecraft";
      identityFile = "~/.ssh/minecraft@ullr.playat.ch";
    };
  "ullr" =
    { hostname = "185.170.112.70";
      identityFile = "~/.ssh/gkleen@sif.midgard.yggdrasil";
    };
  "testworx" =
    { hostname = "testworx.tcs.ifi.lmu.de";
      user = "root";
      port = 30363;
      identityFile = "~/.ssh/testworx";
    };
  "remote.cip.ifi.lmu.de" =
    { user = "kleen";
      identityFile = "~/.ssh/gkleen@sif.midgard.yggdrasil";
    };
  "uniworx3" =
    { hostname = "uniworx3.ifi.lmu.de";
      user = "root";
      identityFile = "~/.ssh/uni2work";
    };
  "uniworx4" =
    { hostname = "uniworx4.ifi.lmu.de";
      user = "root";
      identityFile = "~/.ssh/uni2work";
    };
  "jump.uniworx4" =
    { hostname = "uniworx4.ifi.lmu.de";
      user = "sshjump";
      identityFile = "~/.ssh/sshjump.uni2work";
    };
  "uni2workgw" =
    { hostname = "uni2workgw.ifi.lmu.de";
      user = "root";
      identityFile = "~/.ssh/uni2work";
    };
  "uniworxdb2" =
    { hostname = "uniworxdb2";
      proxyJump = "uniworx4";
      user = "root";
      identityFile = "~/.ssh/uni2work";
    };
  "uniworx5" =
    { hostname = "uniworx5.ifi.lmu.de";
      user = "root";
      identityFile = "~/.ssh/uni2work";
    };
  "gate2" =
    { hostname = "gate2.tcs.ifi.lmu.de";
      user = "gkleen";
      identityFile = "~/.ssh/tcs";
      serverAliveInterval = 0;
    };
  "proxy.gate2" =
    { hostname = "gate2.tcs.ifi.lmu.de";
      user = "gkleen";
      identityFile = "~/.ssh/proxy.gkleen@tcs.ifi.lmu.de";
      dynamicForwards = [ { port = 8118; } ];
      serverAliveInterval = 0;
      extraOptions = {
        ExitOnForwardFailure = "yes";
      };
    };
  "jump.gate2" =
     { hostname = "gate2.tcs.ifi.lmu.de";
       user = "gkleen";
       identityFile = "~/.ssh/proxy.gkleen@tcs.ifi.lmu.de";
       serverAliveInterval = 0;
       extraOptions = {
         ExitOnForwardFailure = "yes";
       };
     };
  "gate" =
    { hostname = "gate.tcs.ifi.lmu.de";
      user = "gkleen";
      identityFile = "~/.ssh/tcs";
    };
  "proxy.gate" =
    { hostname = "gate.tcs.ifi.lmu.de";
      user = "gkleen";
      identityFile = "~/.ssh/proxy.gkleen@tcs.ifi.lmu.de";
      dynamicForwards = [ { port = 8118; } ];
      extraOptions = {
        ExitOnForwardFailure = "yes";
      };
    };
  "jump.gate" =
     { hostname = "gate.tcs.ifi.lmu.de";
       user = "gkleen";
       identityFile = "~/.ssh/proxy.gkleen@tcs.ifi.lmu.de";
       extraOptions = {
         ExitOnForwardFailure = "yes";
       };
     };
  "oregon" =
    { hostname = "oregon.tcs.ifi.lmu.de";
      user = "root";
      identityFile = "~/.ssh/tcs";
    };
  "proxy.oregon" =
    { hostname = "oregon.tcs.ifi.lmu.de";
      user = "root";
      identityFile = "~/.ssh/tcs";
      dynamicForwards = [ { port = 8113; } ];
      extraOptions = {
        ExitOnForwardFailure = "yes";
      };
    };
  "witbank" =
    { hostname = "witbank.tcs.ifi.lmu.de";
      user = "uni2work";
      identityFile = "~/.ssh/letz";
    };
  "ubuntu1804" =
    { hostname = "192.168.122.30";
      identityFile = "~/.ssh/gkleen@sif.midgard.yggdrasil";
      forwardAgent = true;
    };
  "gitlab.haskell.org" =
    { hostname = "gitlab.haskell.org";
      identityFile = "~/.ssh/gkleen@gitlab.haskell.org";
    };
  "gitlab.lrz.de" =
    { hostname = "gitlab.lrz.de";
      user = "git";
      identityFile = "~/.ssh/gkleen@gitlab.lrz.de";
    };
  "gitlab-ce.lrz.de" =
    { hostname = "gitlab-ce.lrz.de";
      extraOptions.AddressFamily = "inet";
      user = "git";
      identityFile = "~/.ssh/gkleen@gitlab-ce.lrz.de";
    };
  "uni2work-dev2" =
    { hostname = "uni2work-dev2.ifi.lmu.de";
      user = "gkleen";
      identityFile = "~/.ssh/uni2work";
      proxyJump = "jump.uniworx4";
    };
  "uni2work-dev1" =
    { hostname = "uni2work-dev1.ifi.lmu.de";
      user = "gkleen";
      identityFile = "~/.ssh/uni2work";
      proxyJump = "jump.uniworx4";
      localForwards = [
        { bind = { address = "localhost"; port = 3940; };
          host = { address = "localhost"; port = 3940; };
        }
        { bind = { address = "localhost"; port = 9020; };
          host = { address = "localhost"; port = 9020; };
        }
        { bind = { address = "localhost"; port = 9021; };
          host = { address = "localhost"; port = 9021; };
        }

        { bind = { address = "localhost"; port = 3178; };
          host = { address = "localhost"; port = 3178; };
        }
        { bind = { address = "localhost"; port = 8258; };
          host = { address = "localhost"; port = 8258; };
        }
        { bind = { address = "localhost"; port = 8259; };
          host = { address = "localhost"; port = 8259; };
        }
      ];
      remoteForwards = [
        { host = { address = "/run/user/1000/emacs/server"; };
          bind = { address = "/home/gkleen/.ssh/emacs-server"; };
        }
      ];
    };
  "vidhar" =
    { hostname = "vidhar.yggdrasil";
      identityFile = "~/.ssh/gkleen@sif.midgard.yggdrasil";
    };
  "forward.vidhar" =
    { hostname = "vidhar.yggdrasil";
      identityFile = "~/.ssh/gkleen@sif.midgard.yggdrasil";
      forwardAgent = true;
      remoteForwards = [
        { host = { address = "/run/user/1000/gnupg/S.gpg-agent"; };
          bind = { address = "/run/user/1000/gnupg/S.gpg-agent"; };
        }
        { host = { address = "/run/user/1000/gnupg/S.gpg-agent.extra"; };
          bind = { address = "/run/user/1000/gnupg/S.gpg-agent.extra"; };
        }
      ];
      extraOptions = {
        StreamLocalBindUnlink = "yes";
        ExitOnForwardFailure = "yes";
        ControlPath = "none";
        ControlMaster = "no";
      };
    };
  "init.vidhar" =
    { hostname = "10.141.0.1";
      user = "root";
      identityFile = "~/.ssh/gkleen@sif.midgard.yggdrasil";
      extraOptions = {
        UserKnownHostsFile = "/dev/null";
        StrictHostKeyChecking = "no";
      };
    };
  "sif" =
    { identityFile = "~/.ssh/gkleen@sif.midgard.yggdrasil";
    };
  "unison.vidhar" =
    { hostname = "vidhar.yggdrasil";
      identityFile = "~/.ssh/unison.gkleen@vidhar.yggdrasil";
      extraOptions = {
        BatchMode = "yes";
        ControlMaster = "no";
      };
    };
  "proxy.vidhar" =
    { hostname = "vidhar.yggdrasil";
      identityFile = "~/.ssh/gkleen@sif.midgard.yggdrasil";
      extraOptions = {
        ControlPath = "none";
        ExitOnForwardFailure = "yes";
        ServerAliveCountMax = "15";
        ServerAliveInterval = "2";
      };
    };
  "math60" =
    { hostname = "math60.math.lmu.de";
    };
  "mathw0d" =
    { hostname = "mathw0d.mathinst.loc";
      proxyJump = "mathw0h";
    };
  "mathw0e" =
    { hostname = "mathw0e.mathinst.loc";
      proxyJump = "mathw0h";
    };
  "mathw0f" =
    { hostname = "mathw0f.mathinst.loc";
      proxyJump = "mathw0h";
    };
  "mathw0g" =
    { hostname = "mathw0g.mathinst.loc";
    };
  "mathw0h" =
    { hostname = "mathw0h.mathinst.loc";
    };
  "proxy.mathw0g" =
    { hostname = "mathw0g.mathinst.loc";
      extraOptions = {
        ControlPath = "none";
        ExitOnForwardFailure = "yes";
        ServerAliveCountMax = "15";
        ServerAliveInterval = "2";
      };
    };
  "proxy.mathw0h" =
    { hostname = "mathw0h.mathinst.loc";
      proxyJump = "proxy.mathw0g";
      extraOptions = {
        ControlPath = "none";
        ExitOnForwardFailure = "yes";
        ServerAliveCountMax = "15";
        ServerAliveInterval = "2";
      };
    };
  "vrt-kvm06" =
    { hostname = "vrt-kvm06";
      proxyJump = "mathw0e";
      user = "root";
      extraOptions = {
        PasswordAuthentication = "yes";
        KbdInteractiveAuthentication = "yes";
      };
    };
  "vrt-kvm05" =
    { hostname = "vrt-kvm05";
      proxyJump = "mathw0e";
      user = "root";
      extraOptions = {
        PasswordAuthentication = "yes";
        KbdInteractiveAuthentication = "yes";
      };
    };
  "vrt-kvm04" =
    { hostname = "vrt-kvm04";
      proxyJump = "mathw0e";
      user = "root";
      extraOptions = {
        PasswordAuthentication = "yes";
        KbdInteractiveAuthentication = "yes";
      };
    };
  "vrt-kvm02" =
    { hostname = "vrt-kvm02";
      proxyJump = "mathw0e";
      user = "root";
      extraOptions = {
        PasswordAuthentication = "yes";
        KbdInteractiveAuthentication = "yes";
      };
    };
  "vrt-kvm03" =
    { hostname = "vrt-kvm03";
      proxyJump = "mathw0e";
      user = "root";
      extraOptions = {
        PasswordAuthentication = "yes";
        KbdInteractiveAuthentication = "yes";
      };
    };
  "vrt-kvm01" =
    { hostname = "vrt-kvm01";
      proxyJump = "mathw0e";
      user = "root";
      extraOptions = {
        PasswordAuthentication = "yes";
        KbdInteractiveAuthentication = "yes";
      };
    };
  "tts-www01" =
    { hostname = "tts-www01.mathinst.loc";
      proxyJump = "mathw0h";
      user = "root";
    };
  "vpn-wg01" =
    { hostname = "vpn-wg01.mathinst.loc";
      proxyJump = "mathw0h";
      user = "root";
    };
  "repo-apt01" =
    { hostname = "repo-apt01.mathinst.loc";
      proxyJump = "mathw0h";
      user = "root";
    };
  "ldap-lmumr01" =
    { hostname = "ldap-lmumr01.mathinst.loc";
      proxyJump = "mathw0h";
      user = "root";
    };
  "mail-mi01" =
    { hostname = "mail-mi01.mathinst.loc";
      proxyJump = "mathw0h";
    };
  "mail-www02" =
    { hostname = "mail-www02.mathinst.loc";
      proxyJump = "mathw0h";
    };
  "dpl-fai01" =
    { hostname = "dpl-fai01.mathinst.loc";
      user = "root";
    };
  "math05" =
    { hostname = "math05.mathinst.loc";
      proxyJump = "mathw0h";
      extraOptions.KexAlgorithms = "+diffie-hellman-group1-sha1";
    };
  "switch01" =
    { hostname = "switch01.mgmt.yggdrasil";
      user = "admin";
      identityFile = "~/.ssh/admin@switch01.yggdrasil";
      extraOptions = {
        KexAlgorithms = "+diffie-hellman-group1-sha1";
        # HostKeyAlgorithms = "+ssh-dss";
        Ciphers = "+aes256-cbc";
        MACs = "+hmac-sha1";
      };
    };
  "ap01" =
    { hostname = "ap01.mgmt.yggdrasil";
      user = "root";
      identityFile = "~/.ssh/gkleen@sif.midgard.yggdrasil";
    };
  "yggdrasil.borgbase" =
    { hostname = "nx69hpl8.repo.borgbase.com";
      user = "nx69hpl8";
      identityFile = "~/.ssh/borgbase";
    };
  "www-mi01" =
    { hostname = "www-mi01.mathinst.loc";
      proxyJump = "mathw0h";
    };
  "cip04" =
    { hostname = "cip04.cipmath.loc";
      proxyJump = "mathw0h";
    };
  "mgmt-cls01" =
    { user = "root";
      hostname = "mgmt-cls01.cipmath.loc";
      proxyJump = "ssh.math.lmu.de";
    };
  "mgmt01" =
    { hostname = "mgmt01.mathinst.loc";
      proxyJump = "mathw0h";
      user = "root";
    };
  "ssh-lb01" =
    { hostname = "ssh-lb01.mathinst.loc";
      proxyJump = "mgmt01";
      user = "root";
    };
  "rdp-lb01" =
    { hostname = "rdp-lb01.mathinst.loc";
      proxyJump = "mgmt01";
      user = "root";
    };
  "ssh01" = { hostname = "ssh01.mathinst.loc"; proxyJump = "mgmt01"; };
  "ssh02" = { hostname = "ssh02.mathinst.loc"; proxyJump = "mgmt01"; };
  "rdlx01" = { hostname = "rdlx01.mathinst.loc"; proxyJump = "mgmt01"; };
  "rdlx02" = { hostname = "rdlx02.mathinst.loc"; proxyJump = "mgmt01"; };
  "math0d" =
    { hostname = "math0d.mathinst.loc";
      proxyJump = "mathw0h";
    };
  "dhcp01" =
    { hostname = "dhcp01.mathinst.loc";
      user = "root";
      proxyJump = "mathw0h";
    };
  "dhcp02" =
    { hostname = "dhcp02.mathinst.loc";
      user = "root";
      proxyJump = "mathw0h";
    };
  "cc-gpu-l01" =
    { hostname = "cc-gpu-l01.mathinst.loc";
    };
  "cc-gpu-m01" =
    { hostname = "cc-gpu-m01.mathinst.loc";
      proxyJump = "cc-gpu-l01";
    };
  "cc-gpu-n01" =
    { hostname = "cc-gpu-n01.mathinst.loc";
      proxyJump = "cc-gpu-m01";
    };
  "cc-gpu-n02" =
    { hostname = "cc-gpu-n02.mathinst.loc";
      proxyJump = "cc-gpu-m01";
    };
  "gitlab.com" =
    { hostname = "gitlab.com";
      user = "git";
      identityFile = "~/.ssh/gitlab.com";
    };
  "*.uniworx.de" =
    { user = "gkleen";
      identityFile = "~/.ssh/gkleen@uniworx.de";
      certificateFile = "~/.ssh/gkleen@uniworx.de-cert.pub";
      extraOptions = {
        UpdateHostKeys = "no";
        UserKnownHostsFile = toString (pkgs.writeText "ssh_known_hosts" ''
          @cert-authority *.uniworx.de ${builtins.readFile ./ssh/uniworx.de-ca.pub}
        '');
      };
    };
  "srv01.uniworx.de" =
    { match = "host srv01.uniworx.de user gkleen";
      localForwards = [
        { bind = { address = "localhost"; port = 3665; };
          host = { address = "localhost"; port = 3665; };
        }
        { bind = { address = "localhost"; port = 8745; };
          host = { address = "localhost"; port = 8745; };
        }
        { bind = { address = "localhost"; port = 8746; };
          host = { address = "localhost"; port = 8746; };
        }
      ];
      remoteForwards = [
        { host = { address = "/run/user/1000/emacs/server"; };
          bind = { address = "/home/gkleen/.ssh/emacs-server"; };
        }
      ];
      extraOptions = {
        StreamLocalBindUnlink = "yes";
      };
    };
  "gitlab.uniworx.de" =
    { user = "git";
      identityFile = "~/.ssh/gkleen@gitlab.uniworx.de";
    };
  "col-crpd01" =
    { hostname = "col-crpd01.mathinst.loc";
      proxyJump = "mgmt01";
      user = "root";
    };
  "nas*" =
    { proxyJump = "mathw0e";
      user = "admin";
      extraOptions = {
        PasswordAuthentication = "yes";
        KbdInteractiveAuthentication = "yes";
        HostKeyAlgorithms = "+ecdsa-sha2-nistp256";
      };
    };
  "game01" =
    { hostname = "game01.yggdrasil.li";
      user = "factorio";
      identityFile = "~/.ssh/gkleen@sif.midgard.yggdrasil";
    };
}