* New directory modules/programs that contains system-wide
configuration for specific programs. For instance, ssh.nix provides the configuration for the SSH client; ssmtp.nix provides the configuration for the `ssmtp' MTA. svn path=/nixos/branches/modular-nixos/; revision=15757
This commit is contained in:
parent
2c34a4b8c0
commit
2d7beac377
6 changed files with 114 additions and 81 deletions
|
@ -134,33 +134,8 @@ let
|
|||
target = "skel/.bashrc";
|
||||
}
|
||||
|
||||
{ # SSH configuration. Slight duplication of the sshd_config
|
||||
# generation in the sshd service.
|
||||
source = pkgs.writeText "ssh_config" ''
|
||||
${if config.services.sshd.forwardX11 then ''
|
||||
ForwardX11 yes
|
||||
XAuthLocation ${pkgs.xorg.xauth}/bin/xauth
|
||||
'' else ''
|
||||
ForwardX11 no
|
||||
''}
|
||||
'';
|
||||
target = "ssh/ssh_config";
|
||||
}
|
||||
]
|
||||
|
||||
# Configuration for ssmtp.
|
||||
++ optional config.networking.defaultMailServer.directDelivery {
|
||||
source = let cfg = config.networking.defaultMailServer; in pkgs.writeText "ssmtp.conf" ''
|
||||
MailHub=${cfg.hostName}
|
||||
FromLineOverride=YES
|
||||
${if cfg.domain != "" then "rewriteDomain=${cfg.domain}" else ""}
|
||||
UseTLS=${if cfg.useTLS then "YES" else "NO"}
|
||||
UseSTARTTLS=${if cfg.useSTARTTLS then "YES" else "NO"}
|
||||
#Debug=YES
|
||||
'';
|
||||
target = "ssmtp/ssmtp.conf";
|
||||
}
|
||||
|
||||
# A bunch of PAM configuration files for various programs.
|
||||
++ (map
|
||||
(program:
|
||||
|
|
|
@ -71,7 +71,6 @@ let
|
|||
(import ../../helpers/info-wrapper.nix {inherit (pkgs) bash texinfo writeScriptBin;})
|
||||
]
|
||||
++ pkgs.lib.optional config.services.bitlbee.enable pkgs.bitlbee
|
||||
++ pkgs.lib.optional config.networking.defaultMailServer.directDelivery pkgs.ssmtp
|
||||
++ config.environment.extraPackages
|
||||
++ pkgs.lib.optional config.fonts.enableFontDir config.system.build.x11Fonts
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[ # This file have been generated by gen-module-list.sh
|
||||
[ # This file has been generated by gen-module-list.sh
|
||||
./config/fonts.nix
|
||||
./config/i18n.nix
|
||||
./config/nsswitch.nix
|
||||
|
@ -8,6 +8,8 @@
|
|||
./config/users-groups.nix
|
||||
./installer/grub/grub.nix
|
||||
./legacy.nix
|
||||
./programs/ssh.nix
|
||||
./programs/ssmtp.nix
|
||||
./security/setuid-wrappers.nix
|
||||
./security/sudo.nix
|
||||
./services/audio/alsa.nix
|
||||
|
|
20
modules/programs/ssh.nix
Normal file
20
modules/programs/ssh.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Global configuration for the SSH client.
|
||||
|
||||
{config, pkgs, ...}:
|
||||
|
||||
{
|
||||
environment.etc =
|
||||
[ { # SSH configuration. Slight duplication of the sshd_config
|
||||
# generation in the sshd service.
|
||||
source = pkgs.writeText "ssh_config" ''
|
||||
${if config.services.sshd.forwardX11 then ''
|
||||
ForwardX11 yes
|
||||
XAuthLocation ${pkgs.xorg.xauth}/bin/xauth
|
||||
'' else ''
|
||||
ForwardX11 no
|
||||
''}
|
||||
'';
|
||||
target = "ssh/ssh_config";
|
||||
}
|
||||
];
|
||||
}
|
91
modules/programs/ssmtp.nix
Normal file
91
modules/programs/ssmtp.nix
Normal file
|
@ -0,0 +1,91 @@
|
|||
# Configuration for `ssmtp', a trivial mail transfer agent that can
|
||||
# replace sendmail/postfix on simple systems. It delivers email
|
||||
# directly to an SMTP server defined in its configuration file, wihout
|
||||
# queueing mail locally.
|
||||
|
||||
{config, pkgs, ...}:
|
||||
|
||||
with pkgs.lib;
|
||||
|
||||
let
|
||||
|
||||
options = {
|
||||
|
||||
networking.defaultMailServer = {
|
||||
|
||||
directDelivery = mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
description = "
|
||||
Use the trivial Mail Transfer Agent (MTA)
|
||||
<command>ssmtp</command> package to allow programs to send
|
||||
e-mail. If you don't want to run a ``real'' MTA like
|
||||
<command>sendmail</command> or <command>postfix</command> on
|
||||
your machine, set this option to <literal>true</literal>, and
|
||||
set the option
|
||||
<option>networking.defaultMailServer.hostName</option> to the
|
||||
host name of your preferred mail server.
|
||||
";
|
||||
};
|
||||
|
||||
hostName = mkOption {
|
||||
example = "mail.example.org";
|
||||
description = "
|
||||
The host name of the default mail server to use to deliver
|
||||
e-mail.
|
||||
";
|
||||
};
|
||||
|
||||
domain = mkOption {
|
||||
default = "";
|
||||
example = "example.org";
|
||||
description = "
|
||||
The domain from which mail will appear to be sent.
|
||||
";
|
||||
};
|
||||
|
||||
useTLS = mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
description = "
|
||||
Whether TLS should be used to connect to the default mail
|
||||
server.
|
||||
";
|
||||
};
|
||||
|
||||
useSTARTTLS = mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
description = "
|
||||
Whether the STARTTLS should be used to connect to the default
|
||||
mail server. (This is needed for TLS-capable mail servers
|
||||
running on the default SMTP port 25.)
|
||||
";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
cfg = config.networking.defaultMailServer;
|
||||
|
||||
in
|
||||
|
||||
mkIf cfg.directDelivery {
|
||||
require = [options];
|
||||
|
||||
environment.etc =
|
||||
[ { source = pkgs.writeText "ssmtp.conf" ''
|
||||
MailHub=${cfg.hostName}
|
||||
FromLineOverride=YES
|
||||
${if cfg.domain != "" then "rewriteDomain=${cfg.domain}" else ""}
|
||||
UseTLS=${if cfg.useTLS then "YES" else "NO"}
|
||||
UseSTARTTLS=${if cfg.useSTARTTLS then "YES" else "NO"}
|
||||
#Debug=YES
|
||||
'';
|
||||
target = "ssmtp/ssmtp.conf";
|
||||
}
|
||||
];
|
||||
|
||||
environment.extraPackages = [pkgs.ssmtp];
|
||||
}
|
|
@ -85,60 +85,6 @@ in
|
|||
";
|
||||
};
|
||||
|
||||
defaultMailServer = {
|
||||
|
||||
directDelivery = mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
description = "
|
||||
Use the trivial Mail Transfer Agent (MTA)
|
||||
<command>ssmtp</command> package to allow programs to send
|
||||
e-mail. If you don't want to run a ``real'' MTA like
|
||||
<command>sendmail</command> or <command>postfix</command> on
|
||||
your machine, set this option to <literal>true</literal>, and
|
||||
set the option
|
||||
<option>networking.defaultMailServer.hostName</option> to the
|
||||
host name of your preferred mail server.
|
||||
";
|
||||
};
|
||||
|
||||
hostName = mkOption {
|
||||
example = "mail.example.org";
|
||||
description = "
|
||||
The host name of the default mail server to use to deliver
|
||||
e-mail.
|
||||
";
|
||||
};
|
||||
|
||||
domain = mkOption {
|
||||
default = "";
|
||||
example = "example.org";
|
||||
description = "
|
||||
The domain from which mail will appear to be sent.
|
||||
";
|
||||
};
|
||||
|
||||
useTLS = mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
description = "
|
||||
Whether TLS should be used to connect to the default mail
|
||||
server.
|
||||
";
|
||||
};
|
||||
|
||||
useSTARTTLS = mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
description = "
|
||||
Whether the STARTTLS should be used to connect to the default
|
||||
mail server. (This is needed for TLS-capable mail servers
|
||||
running on the default SMTP port 25.)
|
||||
";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue