Author: eelco
Date: Thu May 17 18:43:45 2012
New Revision: 34158
URL: https://nixos.org/websvn/nix/?rev=34158&sc=1

Log:
* Support globbing in the source attribute of environment.etc entries.

Modified:
   nixos/trunk/modules/services/security/fail2ban.nix
   nixos/trunk/modules/system/etc/make-etc.sh

Modified: nixos/trunk/modules/services/security/fail2ban.nix
==============================================================================
--- nixos/trunk/modules/services/security/fail2ban.nix  Thu May 17 18:19:48 
2012        (r34157)
+++ nixos/trunk/modules/services/security/fail2ban.nix  Thu May 17 18:43:45 
2012        (r34158)
@@ -90,10 +90,10 @@
         { source = jailConf;
           target = "fail2ban/jail.conf";
         }
-        { source = "${pkgs.fail2ban}/etc/fail2ban/action.d";
+        { source = "${pkgs.fail2ban}/etc/fail2ban/action.d/*.conf";
           target = "fail2ban/action.d";
         }
-        { source = "${pkgs.fail2ban}/etc/fail2ban/filter.d";
+        { source = "${pkgs.fail2ban}/etc/fail2ban/filter.d/*.conf";
           target = "fail2ban/filter.d";
         }
       ];

Modified: nixos/trunk/modules/system/etc/make-etc.sh
==============================================================================
--- nixos/trunk/modules/system/etc/make-etc.sh  Thu May 17 18:19:48 2012        
(r34157)
+++ nixos/trunk/modules/system/etc/make-etc.sh  Thu May 17 18:43:45 2012        
(r34158)
@@ -1,23 +1,42 @@
 source $stdenv/setup
 
-ensureDir $out/etc
+mkdir -p $out/etc
 
+set -f
 sources_=($sources)
 targets_=($targets)
 modes_=($modes)
+set +f
+
 for ((i = 0; i < ${#targets_[@]}; i++)); do
-    ensureDir $out/etc/$(dirname ${targets_[$i]})
-    if ! test -e $out/etc/${targets_[$i]}; then
-        ln -s ${sources_[$i]} $out/etc/${targets_[$i]};
+    source="${sources_[$i]}"
+    target="${targets_[$i]}"
+
+    if [[ "$source" =~ '*' ]]; then
+
+        # If the source name contains '*', perform globbing.
+        mkdir -p $out/etc/$target
+        for fn in $source; do
+            ln -s "$fn" $out/etc/$target/
+        done
+
     else
-        echo "Duplicate entry ${targets_[$i]} -> ${sources_[$i]}"
-        if test "$(readlink $out/etc/${targets_[$i]})" != "${sources_[$i]}"; 
then
-            echo "Mismatched duplicate entry $(readlink 
$out/etc/${targets_[$i]}) <-> ${sources_[$i]}"
-            exit 1
+        
+        mkdir -p $out/etc/$(dirname $target)
+        if ! [ -e $out/etc/$target ]; then
+            ln -s $source $out/etc/$target
+        else
+            echo "Duplicate entry $target -> $source"
+            if test "$(readlink $out/etc/$target)" != "$source"; then
+                echo "Mismatched duplicate entry $(readlink $out/etc/$target) 
<-> $source"
+                exit 1
+            fi
+        fi
+        
+        if test "${modes_[$i]}" != symlink; then
+            echo "${modes_[$i]}" > $out/etc/$target.mode
         fi
-    fi;
-    if test "${modes_[$i]}" != symlink; then
-        echo "${modes_[$i]}" > $out/etc/${targets_[$i]}.mode
+        
     fi
 done
 
_______________________________________________
nix-commits mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-commits

Reply via email to