aboutsummaryrefslogblamecommitdiff
path: root/nixops/modules/ssh/default.nix
blob: 81b7751b96ddf5e367383c703995c4eeae9c1374 (plain) (tree)
1
2
3
4
5
6
7
8
9
10









                                                             


                        
                        


                                             
                                      
                                                                                         


                                                                       




                                                    
                                                                                                                              








                                    
{ lib, pkgs, config, mylibs, myconfig, ... }:
{
  config = {
    networking.firewall.allowedTCPPorts = [ 22 ];

    services.openssh.extraConfig = ''
      AuthorizedKeysCommand     /etc/ssh/ldap_authorized_keys
      AuthorizedKeysCommandUser nobody
      '';

    mySecrets.keys = [{
      dest = "ssh-ldap";
      user = "nobody";
      group = "nogroup";
      permissions = "0400";
      text = myconfig.env.sshd.ldap.password;
    }];
    system.activationScripts.sshd = ''
      install -Dm400 -o nobody -g nogroup -T /var/secrets/ssh-ldap /etc/ssh/ldap_password
      '';
    # ssh is strict about parent directory having correct rights, don't
    # move it in the nix store.
    environment.etc."ssh/ldap_authorized_keys" = let
      ldap_authorized_keys =
        mylibs.wrap {
          name = "ldap_authorized_keys";
          file = ./ldap_authorized_keys.sh;
          paths = [ pkgs.which pkgs.gitolite pkgs.openldap pkgs.stdenv.shellPackage pkgs.gnugrep pkgs.gnused pkgs.coreutils ];
        };
    in {
      enable = true;
      mode = "0755";
      user = "root";
      source = ldap_authorized_keys;
    };
  };
}