nixpkgs/modules/programs/ssh.nix
Mathijs Kwik f31fefdfd9 splitted ssh/sshd X11 forwarding logic. Backward compatible change.
You can now set the forwardX11 config option for the ssh client and server separately.

For server, the option means "allow clients to request X11 forwarding".
For client, the option means "request X11 forwarding by default on all connections".

I don't think it made sense to couple them. I might not even run the server on some machines.
Also, I ssh to a lot of machines, and rarely want X11 forwarding. The times I want it,
I use the -X/-Y option, or set it in my ~/.ssh/config.

I also decoupled the 'XAuthLocation' logic from forwardX11.
For my case where ssh client doesn't want forwarding by default, it still wants to set the path for the cases I do need it.

As this flag is the one that pulls in X11 dependencies, I changed the minimal profile and the no-x-libs config to check that instead now.

svn path=/nixos/trunk/; revision=33407
2012-03-25 15:42:05 +00:00

59 lines
1.6 KiB
Nix

# Global configuration for the SSH client.
{config, pkgs, ...}:
with pkgs.lib;
let cfg = config.programs.ssh;
cfgd = config.services.openssh;
in
{
###### interface
options = {
programs.ssh = {
forwardX11 = mkOption {
default = cfgd.forwardX11;
description = ''
Whether to request X11 forwarding on outgoing connections by default.
This is useful for running graphical programs on the remote machine and have them display to your local X11 server.
Historically, this value has depended on the value used by the local sshd daemon, but there really isn't a relation between the two.
'';
};
setXAuthLocation = mkOption {
default = true;
description = ''
Whether to set the path to xauth for X11-forwarded connections.
Pulls in X11 dependency.
'';
};
};
};
assertions = [{ assertion = if cfg.forwardX11 then cfg.setXAuthLocation else true;
msg = "cannot enable X11 forwarding without setting xauth location";}];
config = {
environment.etc =
[ { # SSH configuration. Slight duplication of the sshd_config
# generation in the sshd service.
source = pkgs.writeText "ssh_config" ''
${optionalString cfg.setXAuthLocation ''
XAuthLocation ${pkgs.xorg.xauth}/bin/xauth
''}
${if cfg.forwardX11 then ''
ForwardX11 yes
'' else ''
ForwardX11 no
''}
'';
target = "ssh/ssh_config";
}
];
};
}