1{ hadoop, pkgs }:
2let
3 propertyXml = name: value: ''
4 <property>
5 <name>${name}</name>
6 <value>${builtins.toString value}</value>
7 </property>
8 '';
9 siteXml = fileName: properties: pkgs.writeTextDir fileName ''
10 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
11 <!-- generated by NixOS -->
12 <configuration>
13 ${builtins.concatStringsSep "\n" (pkgs.lib.mapAttrsToList propertyXml properties)}
14 </configuration>
15 '';
16 userFunctions = ''
17 hadoop_verify_logdir() {
18 echo Skipping verification of log directory
19 }
20 '';
21in
22pkgs.buildEnv {
23 name = "hadoop-conf";
24 paths = [
25 (siteXml "core-site.xml" hadoop.coreSite)
26 (siteXml "hdfs-site.xml" hadoop.hdfsSite)
27 (siteXml "mapred-site.xml" hadoop.mapredSite)
28 (siteXml "yarn-site.xml" hadoop.yarnSite)
29 (pkgs.writeTextDir "hadoop-user-functions.sh" userFunctions)
30 ];
31}