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