From 2d7beac3773e929093a06099c328d67836f5dab6 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 27 May 2009 23:59:14 +0000 Subject: [PATCH] * 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 --- etc/default.nix | 25 ---------- modules/config/system-path.nix | 1 - modules/module-list.nix | 4 +- modules/programs/ssh.nix | 20 ++++++++ modules/programs/ssmtp.nix | 91 ++++++++++++++++++++++++++++++++++ system/options.nix | 54 -------------------- 6 files changed, 114 insertions(+), 81 deletions(-) create mode 100644 modules/programs/ssh.nix create mode 100644 modules/programs/ssmtp.nix diff --git a/etc/default.nix b/etc/default.nix index 7cffdf082aad..6b15245e4cb1 100644 --- a/etc/default.nix +++ b/etc/default.nix @@ -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: diff --git a/modules/config/system-path.nix b/modules/config/system-path.nix index 41903297252a..c5708a530624 100644 --- a/modules/config/system-path.nix +++ b/modules/config/system-path.nix @@ -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 diff --git a/modules/module-list.nix b/modules/module-list.nix index 19fc5d10fbfc..96e276df98d2 100644 --- a/modules/module-list.nix +++ b/modules/module-list.nix @@ -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 diff --git a/modules/programs/ssh.nix b/modules/programs/ssh.nix new file mode 100644 index 000000000000..c325a4bea34d --- /dev/null +++ b/modules/programs/ssh.nix @@ -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"; + } + ]; +} diff --git a/modules/programs/ssmtp.nix b/modules/programs/ssmtp.nix new file mode 100644 index 000000000000..a0ecf763528e --- /dev/null +++ b/modules/programs/ssmtp.nix @@ -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) + ssmtp package to allow programs to send + e-mail. If you don't want to run a ``real'' MTA like + sendmail or postfix on + your machine, set this option to true, and + set the 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]; +} diff --git a/system/options.nix b/system/options.nix index f070d8674164..8e3308174e73 100644 --- a/system/options.nix +++ b/system/options.nix @@ -85,60 +85,6 @@ in "; }; - defaultMailServer = { - - directDelivery = mkOption { - default = false; - example = true; - description = " - Use the trivial Mail Transfer Agent (MTA) - ssmtp package to allow programs to send - e-mail. If you don't want to run a ``real'' MTA like - sendmail or postfix on - your machine, set this option to true, and - set the 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.) - "; - }; - - }; - };