diff options
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/module-list.nix | 3 | ||||
-rw-r--r-- | nixos/modules/programs/zsh/oh-my-zsh.nix | 4 | ||||
-rw-r--r-- | nixos/modules/rename.nix | 4 | ||||
-rw-r--r-- | nixos/modules/services/logging/SystemdJournal2Gelf.nix | 59 | ||||
-rw-r--r-- | nixos/modules/services/mail/mlmmj.nix | 52 | ||||
-rw-r--r-- | nixos/modules/services/networking/charybdis.nix | 76 |
6 files changed, 151 insertions, 47 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index a358344a8880..a3405c069b34 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -239,8 +239,9 @@ ./services/logging/logrotate.nix ./services/logging/logstash.nix ./services/logging/rsyslogd.nix - ./services/logging/syslogd.nix + ./services/logging/SystemdJournal2Gelf.nix ./services/logging/syslog-ng.nix + ./services/logging/syslogd.nix ./services/mail/dovecot.nix ./services/mail/dspam.nix ./services/mail/exim.nix diff --git a/nixos/modules/programs/zsh/oh-my-zsh.nix b/nixos/modules/programs/zsh/oh-my-zsh.nix index 335f596ca80f..446c05da39d0 100644 --- a/nixos/modules/programs/zsh/oh-my-zsh.nix +++ b/nixos/modules/programs/zsh/oh-my-zsh.nix @@ -3,11 +3,11 @@ with lib; let - cfg = config.programs.zsh.oh-my-zsh; + cfg = config.programs.zsh.ohMyZsh; in { options = { - programs.zsh.oh-my-zsh = { + programs.zsh.ohMyZsh = { enable = mkOption { default = false; description = '' diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix index 3b64feeaa909..c3fb5758edeb 100644 --- a/nixos/modules/rename.nix +++ b/nixos/modules/rename.nix @@ -210,5 +210,9 @@ with lib; (mkRenamedOptionModule [ "programs" "zsh" "syntax-highlighting" "enable" ] [ "programs" "zsh" "syntaxHighlighting" "enable" ]) (mkRenamedOptionModule [ "programs" "zsh" "syntax-highlighting" "highlighters" ] [ "programs" "zsh" "syntaxHighlighting" "highlighters" ]) (mkRenamedOptionModule [ "programs" "zsh" "syntax-highlighting" "patterns" ] [ "programs" "zsh" "syntaxHighlighting" "patterns" ]) + (mkRenamedOptionModule [ "programs" "zsh" "oh-my-zsh" "enable" ] [ "programs" "zsh" "ohMyZsh" "enable" ]) + (mkRenamedOptionModule [ "programs" "zsh" "oh-my-zsh" "theme" ] [ "programs" "zsh" "ohMyZsh" "theme" ]) + (mkRenamedOptionModule [ "programs" "zsh" "oh-my-zsh" "custom" ] [ "programs" "zsh" "ohMyZsh" "custom" ]) + (mkRenamedOptionModule [ "programs" "zsh" "oh-my-zsh" "plugins" ] [ "programs" "zsh" "ohMyZsh" "plugins" ]) ]; } diff --git a/nixos/modules/services/logging/SystemdJournal2Gelf.nix b/nixos/modules/services/logging/SystemdJournal2Gelf.nix new file mode 100644 index 000000000000..e90d9e7a12b6 --- /dev/null +++ b/nixos/modules/services/logging/SystemdJournal2Gelf.nix @@ -0,0 +1,59 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let cfg = config.services.SystemdJournal2Gelf; +in + +{ options = { + services.SystemdJournal2Gelf = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable SystemdJournal2Gelf. + ''; + }; + + graylogServer = mkOption { + type = types.string; + example = "graylog2.example.com:11201"; + description = '' + Host and port of your graylog2 input. This should be a GELF + UDP input. + ''; + }; + + extraOptions = mkOption { + type = types.string; + default = ""; + description = '' + Any extra flags to pass to SystemdJournal2Gelf. Note that + these are basically <literal>journalctl</literal> flags. + ''; + }; + + package = mkOption { + type = types.package; + default = pkgs.systemd-journal2gelf; + description = '' + SystemdJournal2Gelf package to use. + ''; + }; + + }; + }; + + config = mkIf cfg.enable { + systemd.services.SystemdJournal2Gelf = { + description = "SystemdJournal2Gelf"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + ExecStart = "${cfg.package}/bin/SystemdJournal2Gelf ${cfg.graylogServer} --follow ${cfg.extraOptions}"; + Restart = "on-failure"; + RestartSec = "30"; + }; + }; + }; +} \ No newline at end of file diff --git a/nixos/modules/services/mail/mlmmj.nix b/nixos/modules/services/mail/mlmmj.nix index 4a01745eb8b6..b6439b44fb5f 100644 --- a/nixos/modules/services/mail/mlmmj.nix +++ b/nixos/modules/services/mail/mlmmj.nix @@ -4,6 +4,8 @@ with lib; let + concatMapLines = f: l: lib.concatStringsSep "\n" (map f l); + cfg = config.services.mlmmj; stateDir = "/var/lib/mlmmj"; spoolDir = "/var/spool/mlmmj"; @@ -16,13 +18,24 @@ let listAddress = domain: list: "${list}@${domain}"; customHeaders = domain: list: [ "List-Id: ${list}" "Reply-To: ${list}@${domain}" ]; footer = domain: list: "To unsubscribe send a mail to ${list}+unsubscribe@${domain}"; - createList = d: l: '' - ${pkgs.coreutils}/bin/mkdir -p ${listCtl d l} - echo ${listAddress d l} > ${listCtl d l}/listaddress - echo "${lib.concatStringsSep "\n" (customHeaders d l)}" > ${listCtl d l}/customheaders - echo ${footer d l} > ${listCtl d l}/footer - echo ${subjectPrefix l} > ${listCtl d l}/prefix - ''; + createList = d: l: + let ctlDir = listCtl d l; in + '' + for DIR in incoming queue queue/discarded archive text subconf unsubconf \ + bounce control moderation subscribers.d digesters.d requeue \ + nomailsubs.d + do + mkdir -p '${listDir d l}'/"$DIR" + done + ${pkgs.coreutils}/bin/mkdir -p ${ctlDir} + echo ${listAddress d l} > '${ctlDir}/listaddress' + [ ! -e ${ctlDir}/customheaders ] && \ + echo "${lib.concatStringsSep "\n" (customHeaders d l)}" > '${ctlDir}/customheaders' + [ ! -e ${ctlDir}/footer ] && \ + echo ${footer d l} > '${ctlDir}/footer' + [ ! -e ${ctlDir}/prefix ] && \ + echo ${subjectPrefix l} > '${ctlDir}/prefix' + ''; in { @@ -63,6 +76,16 @@ in description = "The collection of hosted maillists"; }; + maintInterval = mkOption { + type = types.str; + default = "20min"; + description = '' + Time interval between mlmmj-maintd runs, see + <citerefentry><refentrytitle>systemd.time</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> for format information. + ''; + }; + }; }; @@ -93,7 +116,7 @@ in mlmmj unix - n n - - pipe flags=ORhu user=mlmmj argv=${pkgs.mlmmj}/bin/mlmmj-receive -F -L ${spoolDir}/$nexthop ''; - extraAliases = concatMapStrings (alias cfg.listDomain) cfg.mailLists; + extraAliases = concatMapLines (alias cfg.listDomain) cfg.mailLists; extraConfig = '' transport_maps = hash:${stateDir}/transports @@ -107,17 +130,15 @@ in system.activationScripts.mlmmj = '' ${pkgs.coreutils}/bin/mkdir -p ${stateDir} ${spoolDir}/${cfg.listDomain} ${pkgs.coreutils}/bin/chown -R ${cfg.user}:${cfg.group} ${spoolDir} - ${lib.concatMapStrings (createList cfg.listDomain) cfg.mailLists} - echo ${lib.concatMapStrings (virtual cfg.listDomain) cfg.mailLists} > ${stateDir}/virtuals - echo ${lib.concatMapStrings (transport cfg.listDomain) cfg.mailLists} > ${stateDir}/transports + ${concatMapLines (createList cfg.listDomain) cfg.mailLists} + echo "${concatMapLines (virtual cfg.listDomain) cfg.mailLists}" > ${stateDir}/virtuals + echo "${concatMapLines (transport cfg.listDomain) cfg.mailLists}" > ${stateDir}/transports ${pkgs.postfix}/bin/postmap ${stateDir}/virtuals ${pkgs.postfix}/bin/postmap ${stateDir}/transports ''; systemd.services."mlmmj-maintd" = { description = "mlmmj maintenance daemon"; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { User = cfg.user; Group = cfg.group; @@ -125,6 +146,11 @@ in }; }; + systemd.timers."mlmmj-maintd" = { + description = "mlmmj maintenance timer"; + timerConfig.OnUnitActiveSec = cfg.maintInterval; + wantedBy = [ "timers.target" ]; + }; }; } diff --git a/nixos/modules/services/networking/charybdis.nix b/nixos/modules/services/networking/charybdis.nix index 2f7d006b8816..c354ec61fe23 100644 --- a/nixos/modules/services/networking/charybdis.nix +++ b/nixos/modules/services/networking/charybdis.nix @@ -51,6 +51,17 @@ in ''; }; + motd = mkOption { + type = types.nullOr types.lines; + default = null; + description = '' + Charybdis MOTD text. + + Charybdis will read its MOTD from /etc/charybdis/ircd.motd . + If set, the value of this option will be written to this path. + ''; + }; + }; }; @@ -58,39 +69,42 @@ in ###### implementation - config = mkIf cfg.enable { - - users.extraUsers = singleton { - name = cfg.user; - description = "Charybdis IRC daemon user"; - uid = config.ids.uids.ircd; - group = cfg.group; - }; - - users.extraGroups = singleton { - name = cfg.group; - gid = config.ids.gids.ircd; - }; - - systemd.services.charybdis = { - description = "Charybdis IRC daemon"; - wantedBy = [ "multi-user.target" ]; - environment = { - BANDB_DBPATH = "${cfg.statedir}/ban.db"; + config = mkIf cfg.enable (lib.mkMerge [ + { + users.extraUsers = singleton { + name = cfg.user; + description = "Charybdis IRC daemon user"; + uid = config.ids.uids.ircd; + group = cfg.group; }; - serviceConfig = { - ExecStart = "${charybdis}/bin/charybdis-ircd -foreground -logfile /dev/stdout -configfile ${configFile}"; - Group = cfg.group; - User = cfg.user; - PermissionsStartOnly = true; # preStart needs to run with root permissions - }; - preStart = '' - ${coreutils}/bin/mkdir -p ${cfg.statedir} - ${coreutils}/bin/chown ${cfg.user}:${cfg.group} ${cfg.statedir} - ''; - }; + users.extraGroups = singleton { + name = cfg.group; + gid = config.ids.gids.ircd; + }; - }; + systemd.services.charybdis = { + description = "Charybdis IRC daemon"; + wantedBy = [ "multi-user.target" ]; + environment = { + BANDB_DBPATH = "${cfg.statedir}/ban.db"; + }; + serviceConfig = { + ExecStart = "${charybdis}/bin/charybdis-ircd -foreground -logfile /dev/stdout -configfile ${configFile}"; + Group = cfg.group; + User = cfg.user; + PermissionsStartOnly = true; # preStart needs to run with root permissions + }; + preStart = '' + ${coreutils}/bin/mkdir -p ${cfg.statedir} + ${coreutils}/bin/chown ${cfg.user}:${cfg.group} ${cfg.statedir} + ''; + }; + } + + (mkIf (cfg.motd != null) { + environment.etc."charybdis/ircd.motd".text = cfg.motd; + }) + ]); } |