anchor.diff:  let
     cfg = config.services.shout;
     shoutHome = "/var/lib/shout";
  +
  +  defaultConfig = pkgs.runCommand "config.js" {} ''
  +    EDITOR=true ${pkgs.shout}/bin/shout config --home $PWD
  +    mv config.js $out
  +  '';
  +
  +  configFile = if (cfg.configFile != null) then cfg.configFile else ''
  +    var _ = require('${pkgs.shout}/lib/node_modules/shout/node_modules/lodash')
  +
  +    module.exports = _.merge(
  +      {},
  +      require('${defaultConfig}'),
  +      ${builtins.toJSON cfg.config}
  +    )
  +  '';
   
   in {
     options.services.shout = {
  
positive.code:       wantedBy = [ "multi-user.target" ];
        wants = [ "network-online.target" ];
        after = [ "network-online.target" ];
        preStart = if isNull cfg.configFile then ""
                   else ''
                     ln -sf ${pkgs.writeText "config.js" cfg.configFile} \
                            ${shoutHome}/config.js
                   '';
        script = concatStringsSep " " [
          "${pkgs.shout}/bin/shout"
          (if cfg.private then "--private" else "--public")
  
negative.code: 
      configFile = mkOption {
        type = types.nullOr types.lines;
        default = configFile;
        description = ''
          Contents of Shout's <filename>config.js</filename> file.
  
          Used for backward compatibility, recommended way is now to use
          the <literal>config</literal> option.
  
          Documentation: http://shout-irc.com/docs/server/configuration.html
        '';
      };
  
      config = mkOption {
        default = {};
        type = types.attrs;
        example = {
          displayNetwork = false;
          defaults = {
            name = "Your Network";
            host = "localhost";
            port = 6697;
          };
        };
        description = ''
          Shout <filename>config.js</filename> contents as attribute set (will be
          converted to JSON to generate the configuration file).
  
          The options defined here will be merged to the default configuration file.
  
          Documentation: http://shout-irc.com/docs/server/configuration.html
        '';
  