* 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:
Eelco Dolstra 2009-05-27 23:59:14 +00:00
parent 2c34a4b8c0
commit 2d7beac377
6 changed files with 114 additions and 81 deletions

View File

@ -134,33 +134,8 @@ let
target = "skel/.bashrc"; 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. # A bunch of PAM configuration files for various programs.
++ (map ++ (map
(program: (program:

View File

@ -71,7 +71,6 @@ let
(import ../../helpers/info-wrapper.nix {inherit (pkgs) bash texinfo writeScriptBin;}) (import ../../helpers/info-wrapper.nix {inherit (pkgs) bash texinfo writeScriptBin;})
] ]
++ pkgs.lib.optional config.services.bitlbee.enable pkgs.bitlbee ++ pkgs.lib.optional config.services.bitlbee.enable pkgs.bitlbee
++ pkgs.lib.optional config.networking.defaultMailServer.directDelivery pkgs.ssmtp
++ config.environment.extraPackages ++ config.environment.extraPackages
++ pkgs.lib.optional config.fonts.enableFontDir config.system.build.x11Fonts ++ pkgs.lib.optional config.fonts.enableFontDir config.system.build.x11Fonts

View File

@ -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/fonts.nix
./config/i18n.nix ./config/i18n.nix
./config/nsswitch.nix ./config/nsswitch.nix
@ -8,6 +8,8 @@
./config/users-groups.nix ./config/users-groups.nix
./installer/grub/grub.nix ./installer/grub/grub.nix
./legacy.nix ./legacy.nix
./programs/ssh.nix
./programs/ssmtp.nix
./security/setuid-wrappers.nix ./security/setuid-wrappers.nix
./security/sudo.nix ./security/sudo.nix
./services/audio/alsa.nix ./services/audio/alsa.nix

20
modules/programs/ssh.nix Normal file
View 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";
}
];
}

View 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];
}

View File

@ -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.)
";
};
};
}; };