diff options
Diffstat (limited to 'nixpkgs/nixos/modules/services/networking/asterisk.nix')
-rw-r--r-- | nixpkgs/nixos/modules/services/networking/asterisk.nix | 84 |
1 files changed, 26 insertions, 58 deletions
diff --git a/nixpkgs/nixos/modules/services/networking/asterisk.nix b/nixpkgs/nixos/modules/services/networking/asterisk.nix index af091d55c01b..5a1d03f07211 100644 --- a/nixpkgs/nixos/modules/services/networking/asterisk.nix +++ b/nixpkgs/nixos/modules/services/networking/asterisk.nix @@ -14,28 +14,9 @@ let # Add filecontents from files of useTheseDefaultConfFiles to confFiles, do not override defaultConfFiles = subtractLists (attrNames cfg.confFiles) cfg.useTheseDefaultConfFiles; - allConfFiles = - cfg.confFiles // - builtins.listToAttrs (map (x: { name = x; - value = builtins.readFile (cfg.package + "/etc/asterisk/" + x); }) - defaultConfFiles); - - asteriskEtc = pkgs.stdenv.mkDerivation - ((mapAttrs' (name: value: nameValuePair - # Fudge the names to make bash happy - ((replaceChars ["."] ["_"] name) + "_") - (value) - ) allConfFiles) // - { - confFilesString = concatStringsSep " " ( - attrNames allConfFiles - ); - - name = "asterisk-etc"; - + allConfFiles = { # Default asterisk.conf file - # (Notice that astetcdir will be set to the path of this derivation) - asteriskConf = '' + "asterisk.conf".text = '' [directories] astetcdir => /etc/asterisk astmoddir => ${cfg.package}/lib/asterisk/modules @@ -48,43 +29,28 @@ let astrundir => /run/asterisk astlogdir => /var/log/asterisk astsbindir => ${cfg.package}/sbin + ${cfg.extraConfig} ''; - extraConf = cfg.extraConfig; # Loading all modules by default is considered sensible by the authors of # "Asterisk: The Definitive Guide". Secure sites will likely want to # specify their own "modules.conf" in the confFiles option. - modulesConf = '' + "modules.conf".text = '' [modules] autoload=yes ''; # Use syslog for logging so logs can be viewed with journalctl - loggerConf = '' + "logger.conf".text = '' [general] [logfiles] syslog.local0 => notice,warning,error ''; + } // + mapAttrs (name: text: { inherit text; }) cfg.confFiles // + listToAttrs (map (x: nameValuePair x { source = cfg.package + "/etc/asterisk/" + x; }) defaultConfFiles); - buildCommand = '' - mkdir -p "$out" - - # Create asterisk.conf, pointing astetcdir to the path of this derivation - echo "$asteriskConf" | sed "s|@out@|$out|g" > "$out"/asterisk.conf - echo "$extraConf" >> "$out"/asterisk.conf - - echo "$modulesConf" > "$out"/modules.conf - - echo "$loggerConf" > "$out"/logger.conf - - # Config files specified in confFiles option override all other files - for i in $confFilesString; do - conf=$(echo "$i"_ | sed 's/\./_/g') - echo "''${!conf}" > "$out"/"$i" - done - ''; - }); in { @@ -93,7 +59,7 @@ in enable = mkOption { type = types.bool; default = false; - description = '' + description = lib.mdDoc '' Whether to enable the Asterisk PBX server. ''; }; @@ -106,9 +72,9 @@ in verbose=3 debug=3 ''; - description = '' + description = lib.mdDoc '' Extra configuration options appended to the default - <literal>asterisk.conf</literal> file. + `asterisk.conf` file. ''; }; @@ -161,19 +127,19 @@ in '''; } ''; - description = '' + description = lib.mdDoc '' Sets the content of config files (typically ending with - <literal>.conf</literal>) in the Asterisk configuration directory. + `.conf`) in the Asterisk configuration directory. - Note that if you want to change <literal>asterisk.conf</literal>, it - is preferable to use the <option>services.asterisk.extraConfig</option> - option over this option. If <literal>"asterisk.conf"</literal> is - specified with the <option>confFiles</option> option (not recommended), - you must be prepared to set your own <literal>astetcdir</literal> + Note that if you want to change `asterisk.conf`, it + is preferable to use the {option}`services.asterisk.extraConfig` + option over this option. If `"asterisk.conf"` is + specified with the {option}`confFiles` option (not recommended), + you must be prepared to set your own `astetcdir` path. See - <link xlink:href="http://www.asterisk.org/community/documentation"/> + <http://www.asterisk.org/community/documentation> for more examples of what is possible here. ''; }; @@ -182,9 +148,9 @@ in default = [ "ari.conf" "acl.conf" "agents.conf" "amd.conf" "calendar.conf" "cdr.conf" "cdr_syslog.conf" "cdr_custom.conf" "cel.conf" "cel_custom.conf" "cli_aliases.conf" "confbridge.conf" "dundi.conf" "features.conf" "hep.conf" "iax.conf" "pjsip.conf" "pjsip_wizard.conf" "phone.conf" "phoneprov.conf" "queues.conf" "res_config_sqlite3.conf" "res_parking.conf" "statsd.conf" "udptl.conf" "unistim.conf" ]; type = types.listOf types.str; example = [ "sip.conf" "dundi.conf" ]; - description = ''Sets these config files to the default content. The default value for + description = lib.mdDoc ''Sets these config files to the default content. The default value for this option contains all necesscary files to avoid errors at startup. - This does not override settings via <option>services.asterisk.confFiles</option>. + This does not override settings via {option}`services.asterisk.confFiles`. ''; }; @@ -193,7 +159,7 @@ in type = types.listOf types.str; example = [ "-vvvddd" "-e" "1024" ]; - description = '' + description = lib.mdDoc '' Additional command line arguments to pass to Asterisk. ''; }; @@ -201,7 +167,7 @@ in type = types.package; default = pkgs.asterisk; defaultText = literalExpression "pkgs.asterisk"; - description = "The Asterisk package to use."; + description = lib.mdDoc "The Asterisk package to use."; }; }; }; @@ -209,7 +175,9 @@ in config = mkIf cfg.enable { environment.systemPackages = [ cfg.package ]; - environment.etc.asterisk.source = asteriskEtc; + environment.etc = mapAttrs' (name: value: + nameValuePair "asterisk/${name}" value + ) allConfFiles; users.users.asterisk = { name = asteriskUser; |