Author: rob
Date: Mon Dec 20 14:14:29 2010
New Revision: 25211
URL: https://svn.nixos.org/websvn/nix/?rev=25211&sc=1

Log:
updated hydra mirror module

Modified:
   nixos/trunk/modules/services/backup/hydra-mirror.nix

Modified: nixos/trunk/modules/services/backup/hydra-mirror.nix
==============================================================================
--- nixos/trunk/modules/services/backup/hydra-mirror.nix        Mon Dec 20 
13:29:50 2010        (r25210)
+++ nixos/trunk/modules/services/backup/hydra-mirror.nix        Mon Dec 20 
14:14:29 2010        (r25211)
@@ -3,16 +3,30 @@
 with pkgs.lib;
 
 let 
-  cfg = config.services.hydraChannelMirror ;
+
+  cfg = config.services.hydraChannelMirror;
+
   mirrorChannel = pkgs.fetchsvn {
     url = 
https://svn.nixos.org/repos/nix/release/trunk/channels/mirror-channel.pl;
-    rev = 24132;
-    sha256 = "02xvswbbr2sj9k1wfraa0j9053vf6w88nhk15qwzs8nkm180n820";
+    rev = 25210;
+    sha256 = "0gspqid1rpsj1z1mr29nakh7di278nlv6v2knafvmm3g8ah3yxgz";
   };
-  cronjob = jobset : ''
-    ${cfg.period} root ENABLE_PATCHES=1 
PATH=${config.environment.nix}/libexec/nix:$PATH perl 
-I${config.environment.nix}/libexec/nix ${mirrorChannel} 
${cfg.hydraURL}/jobset/${jobset.project}/${jobset.jobset}/channel/latest 
${cfg.dataDir}/channels/${jobset.relURL} ${cfg.dataDir}/nars 
${cfg.mirrorURL}/nars ${cfg.dataDir}/patches ${cfg.mirrorURL}/patches ${if 
jobset.nixexprs == "" then "" else 
"${cfg.hydraURL}/job/${jobset.project}/${jobset.jobset}/${jobset.nixexprs}/latest/download-by-type/file/source-dist"}
 >> ${cfg.dataDir}/logs/${jobset.name}.log
-  '';
+
+  cronjob = jobset:
+    "${cfg.period} ${cfg.user}"
+    + optionalString cfg.enableBinaryPatches " ENABLE_PATCHES=1"
+    + " perl -I${config.environment.nix}/libexec/nix ${mirrorChannel}"
+    + " 
${cfg.hydraURL}/jobset/${jobset.project}/${jobset.jobset}/channel/latest"
+    + " ${cfg.dataDir}/${jobset.project}/channels/${jobset.name}"
+    + " ${cfg.dataDir}/nars"
+    + " ${cfg.mirrorURL}/nars"
+    + " ${cfg.dataDir}/patches"
+    + " ${cfg.mirrorURL}/patches"
+    + " ${if jobset.nixexprs == "" then "" else 
"${cfg.hydraURL}/job/${jobset.project}/${jobset.jobset}/${jobset.nixexprs}/latest/download-by-type/file/source-dist"}"
+    + " >> ${cfg.dataDir}/logs/${jobset.name}.log 2>&1\n";
+
 in
+
 {
   options = {
   
@@ -33,8 +47,15 @@
         '';
       };
 
+      user = mkOption {
+        default = "hydra-mirror";
+        description = ''
+          User running the Hydra mirror script.
+        '';
+      };
+
       jobsets = mkOption {
-        default = [ rec { name = "nixpkgs-unstable"; project = "nixpkgs"; 
jobset = "trunk"; nixexprs = "tarball"; relURL = "nixpkgs/channels/${name}"; } 
];
+        default = [ { name = "nixpkgs-unstable"; project = "nixpkgs"; jobset = 
"trunk"; nixexprs = "tarball"; } ];
         description = ''
           List of jobsets to mirror.
         '';
@@ -60,25 +81,41 @@
           Location of Hydra mirror data
         '';
       };
+
+      enableBinaryPatches = mkOption {
+        default = false;
+        description = ''
+          Whether to enable generating binary patches for the mirrored 
channels.
+        '';
+      };
     };
 
   };
 
   config = mkIf cfg.enable {
   
-    services.cron.systemCronJobs = map cronjob cfg.jobsets ;
+    users.extraUsers = singleton
+      { name = cfg.user; };
+
+    services.cron.systemCronJobs = map cronjob cfg.jobsets;
 
     system.activationScripts.hydraChannelMirror = stringAfter [ "stdio" 
"users" ]
       ''
         mkdir -m 0755 -p ${cfg.dataDir}
+        chown ${cfg.user} ${cfg.dataDir}
+
         mkdir -m 0755 -p ${cfg.dataDir}/nars
+        chown ${cfg.user} ${cfg.dataDir}/nars
+
         mkdir -m 0755 -p ${cfg.dataDir}/patches
-        mkdir -m 0755 -p ${cfg.dataDir}/channels
-        ln -fs ${cfg.dataDir}/nars ${cfg.dataDir}/channels/nars 
-        ln -fs ${cfg.dataDir}/patches ${cfg.dataDir}/channels/patches 
+        chown ${cfg.user} ${cfg.dataDir}/patches
+
         mkdir -m 0755 -p ${cfg.dataDir}/logs
+        chown ${cfg.user} ${cfg.dataDir}/logs
+
         ${concatMapStrings (j : ''
-        mkdir -m 0755 -p ${cfg.dataDir}/channels/${j.relURL}
+          mkdir -m 0755 -p ${cfg.dataDir}/{j.project}/channels/${j.name}
+          chown ${cfg.user} ${cfg.dataDir}/{j.project}/channels/${j.name}
         '') cfg.jobsets}
       '';
     
_______________________________________________
nix-commits mailing list
[email protected]
http://mail.cs.uu.nl/mailman/listinfo/nix-commits

Reply via email to