Merge recent master into staging

Hydra: ?compare=1150594
This commit is contained in:
Vladimír Čunát 2014-09-06 16:51:14 +02:00
commit 06fea81c6e
140 changed files with 5000 additions and 2572 deletions

View File

@ -84,8 +84,7 @@ hello-2.3 A program that produces a familiar, friendly greeting
<section><title>Standard meta-attributes</title>
<para>The following meta-attributes have a standard
interpretation:</para>
<para>It is expected that each meta-attribute is one of the following:</para>
<variablelist>
@ -112,12 +111,23 @@ interpretation:</para>
package.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>version</varname></term>
<listitem><para>Package version.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>homepage</varname></term>
<listitem><para>The packages homepage. Example:
<literal>http://www.gnu.org/software/hello/manual/</literal></para></listitem>
</varlistentry>
<varlistentry>
<term><varname>downloadPage</varname></term>
<listitem><para>The page where a link to the current version can be found. Example:
<literal>http://ftp.gnu.org/gnu/hello/</literal></para></listitem>
</varlistentry>
<varlistentry>
<term><varname>license</varname></term>
<listitem><para>The license for the package. One from the
@ -195,6 +205,16 @@ meta.hydraPlatforms = [];
they are fixed.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>updateWalker</varname></term>
<listitem><para>If set to <literal>true</literal>, the package is
tested to be updated correctly by the <literal>update-walker.sh</literal>
script without additional settings. Such packages have
<varname>meta.version</varname> set and their homepage (or
the page specified by <varname>meta.downloadPage</varname>) contains
a direct link to the package tarball.</para></listitem>
</varlistentry>
</variablelist>
@ -256,9 +276,9 @@ to indicate the specific license:
</variablelist>
</para>
</section>
</chapter>

View File

@ -17,11 +17,6 @@
<refsynopsisdiv>
<cmdsynopsis>
<command>nixos-option</command>
<group choice="opt">
<option>-v</option>
<option>-d</option>
<option>-l</option>
</group>
<arg choice='plain'><replaceable>option.name</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>
@ -31,50 +26,13 @@
<para>This command evaluates the configuration specified in
<filename>/etc/nixos/configuration.nix</filename> and returns the properties
of the option name given as argument. By default, it returns the value of
the option.</para>
of the option name given as argument.</para>
<para>When the option name is not an option, the command prints the list of
attributes contained in the attribute set.</para>
</refsection>
<refsection><title>Options</title>
<para>This command accepts the following options:</para>
<variablelist>
<varlistentry>
<term><option>--value</option>, <option>-v</option></term>
<listitem>
<para>Returns the value of the option. This is the default operation
if no other options are defined.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--description</option>, <option>-d</option></term>
<listitem>
<para>Return the default value, the example and the description of the
option when available.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--lookup</option>, <option>-l</option></term>
<listitem>
<para>Return the locations where the option is declared and where it
is defined. This is extremely useful to find sources of errors in
your configuration.</para>
</listitem>
</varlistentry>
</variablelist>
</refsection>
<refsection><title>Environment</title>
<variablelist>
@ -103,27 +61,21 @@ grub
initScript
$ nixos-option boot.loader.grub.enable
true</screen></para>
Value:
true
<para>Prints option information:
Default:
true
<screen>$ nixos-option -d networking.hostName
Default: "nixos"
Description:
The name of the machine. Leave it empty if you want to obtain
it from a DHCP server (if using DHCP).</screen></para>
Whether to enable the GNU GRUB boot loader.
<para>Find the locations which are declaring and defining an option:
<screen>$ nixos-option -l hardware.firmware
Declared by:
/mnt/data/nix-sources/nixos/modules/services/hardware/udev.nix
"/path/to/nixpkgs/nixos/modules/system/boot/loader/grub/grub.nix"
Defined by:
/path/to/nixpkgs/nixos/modules/system/boot/kernel.nix
/path/to/nixpkgs/nixos/modules/hardware/network/rt73.nix
/path/to/nixpkgs/nixos/modules/hardware/network/intel-3945abg.nix
/path/to/nixpkgs/nixos/modules/hardware/network/intel-2200bg.nix</screen></para>
"/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/nixos/modules/system/boot/loader/grub/grub.nix"
</screen></para>
</refsection>

View File

@ -10,10 +10,12 @@ let
systemWide = cfg.enable && cfg.systemWide;
nonSystemWide = cfg.enable && !cfg.systemWide;
uid = config.ids.uids.pulseaudio;
gid = config.ids.gids.pulseaudio;
ids = config.ids;
stateDir = "/run/pulse";
uid = ids.uids.pulseaudio;
gid = ids.gids.pulseaudio;
stateDir = "/var/run/pulse";
# Create pulse/client.conf even if PulseAudio is disabled so
# that we can disable the autospawn feature in programs that
@ -138,6 +140,8 @@ in {
group = "pulse";
extraGroups = [ "audio" ];
description = "PulseAudio system service user";
home = stateDir;
createHome = true;
};
users.extraGroups.pulse.gid = gid;
@ -147,10 +151,6 @@ in {
wantedBy = [ "sound.target" ];
before = [ "sound.target" ];
environment.PULSE_RUNTIME_PATH = stateDir;
preStart = ''
mkdir -p --mode 755 ${stateDir}
chown -R pulse:pulse ${stateDir}
'';
serviceConfig = {
ExecStart = "${cfg.package}/bin/pulseaudio -D --log-level=${cfg.daemon.logLevel} --system --use-pid-file -n --file=${cfg.configFile}";
PIDFile = "${stateDir}/pid";

View File

@ -11,7 +11,7 @@ let
# The Grub image.
grubImage = pkgs.runCommand "grub_eltorito" {}
''
${pkgs.grub2}/bin/grub-mkimage -O i386-pc -o tmp biosdisk iso9660 help linux linux16 chain png jpeg echo gfxmenu reboot
${pkgs.grub2}/bin/grub-mkimage -p /boot/grub -O i386-pc -o tmp biosdisk iso9660 help linux linux16 chain png jpeg echo gfxmenu reboot
cat ${pkgs.grub2}/lib/grub/*/cdboot.img tmp > $out
''; # */

View File

@ -20,6 +20,13 @@ sub uniq {
return @res;
}
sub runCommand {
my ($cmd) = @_;
open FILE, "$cmd 2>&1 |" or die "Failed to execute: $cmd\n";
my @ret = <FILE>;
close FILE;
return ($?, @ret);
}
# Process the command line.
my $outDir = "/etc/nixos";
@ -304,10 +311,13 @@ foreach my $fs (read_file("/proc/self/mountinfo")) {
# Maybe this is a bind-mount of a filesystem we saw earlier?
if (defined $fsByDev{$fields[2]}) {
my $path = $fields[3]; $path = "" if $path eq "/";
my $base = $fsByDev{$fields[2]};
$base = "" if $base eq "/";
$fileSystems .= <<EOF;
# Make sure this isn't a btrfs subvolume
my ($status, @msg) = runCommand("btrfs subvol show $rootDir$mountPoint");
if (join("", @msg) =~ /ERROR:/) {
my $path = $fields[3]; $path = "" if $path eq "/";
my $base = $fsByDev{$fields[2]};
$base = "" if $base eq "/";
$fileSystems .= <<EOF;
fileSystems.\"$mountPoint\" =
{ device = \"$base$path\";
fsType = \"none\";
@ -315,7 +325,8 @@ foreach my $fs (read_file("/proc/self/mountinfo")) {
};
EOF
next;
next;
}
}
$fsByDev{$fields[2]} = $mountPoint;
@ -337,6 +348,30 @@ EOF
}
}
# Is this a btrfs filesystem?
if ($fsType eq "btrfs") {
my ($status, @id_info) = runCommand("btrfs subvol show $rootDir$mountPoint");
if ($status != 0 || join("", @msg) =~ /ERROR:/) {
die "Failed to retreive subvolume info for $mountPoint\n";
}
my @ids = join("", @id_info) =~ m/Object ID:[ \t\n]*([^ \t\n]*)/;
if ($#ids > 0) {
die "Btrfs subvol name for $mountPoint listed multiple times in mount\n"
} elsif ($#ids == 0) {
my ($status, @path_info) = runCommand("btrfs subvol list $rootDir$mountPoint");
if ($status != 0) {
die "Failed to find $mountPoint subvolume id from btrfs\n";
}
my @paths = join("", @path_info) =~ m/ID $ids[0] [^\n]* path ([^\n]*)/;
if ($#paths > 0) {
die "Btrfs returned multiple paths for a single subvolume id, mountpoint $mountPoint\n";
} elsif ($#paths != 0) {
die "Btrfs did not return a path for the subvolume at $mountPoint\n";
}
push @extraOptions, "subvol=$paths[0]";
}
}
# Emit the filesystem.
$fileSystems .= <<EOF;
fileSystems.\"$mountPoint\" =

View File

@ -7,6 +7,9 @@
# * nix-env -p /nix/var/nix/profiles/system -i <nix-expr for the configuration>
# * install the boot loader
# Ensure a consistent umask.
umask 0022
# Re-exec ourselves in a private mount namespace so that our bind
# mounts get cleaned up automatically.
if [ "$(id -u)" = 0 ]; then
@ -243,7 +246,7 @@ chroot $mountPoint /nix/var/nix/profiles/system/activate
# Ask the user to set a root password.
if [ -t 0 ] ; then
echo "setting root password..."
chroot $mountPoint passwd
chroot $mountPoint /var/setuid-wrappers/passwd
fi

View File

@ -11,9 +11,6 @@ usage () {
# Process Arguments #
#####################
desc=false
defs=false
value=false
xml=false
verbose=false
@ -24,14 +21,11 @@ for arg; do
if test -z "$argfun"; then
case $arg in
-*)
longarg=""
sarg="$arg"
longarg=""
while test "$sarg" != "-"; do
case $sarg in
--*) longarg=$arg; sarg="--";;
-d*) longarg="$longarg --description";;
-v*) longarg="$longarg --value";;
-l*) longarg="$longarg --lookup";;
-*) usage;;
esac
# remove the first letter option
@ -42,9 +36,6 @@ for arg; do
esac
for larg in $longarg; do
case $larg in
--description) desc=true;;
--value) value=true;;
--lookup) defs=true;;
--xml) xml=true;;
--verbose) verbose=true;;
--help) usage;;
@ -67,16 +58,6 @@ for arg; do
fi
done
if $xml; then
value=true
desc=true
defs=true
fi
if ! $defs && ! $desc; then
value=true
fi
if $verbose; then
set -x
else
@ -95,8 +76,7 @@ evalAttr(){
local prefix="$1"
local strict="$2"
local suffix="$3"
echo "(import <nixos> {}).$prefix${option:+.$option}${suffix:+.$suffix}" |
evalNix ${strict:+--strict}
echo "(import <nixos> {}).$prefix${option:+.$option}${suffix:+.$suffix}" | evalNix ${strict:+--strict}
}
evalOpt(){
@ -189,35 +169,35 @@ EOF
fi
if test "$(evalOpt "_type" 2> /dev/null)" = '"option"'; then
$value && evalCfg 1
echo "Value:"
evalCfg 1
if $desc; then
$value && echo;
echo
if default=$(evalOpt "default" - 2> /dev/null); then
echo "Default: $default"
else
echo "Default: <None>"
fi
if example=$(evalOpt "example" - 2> /dev/null); then
echo "Example: $example"
fi
echo "Description:"
eval printf $(evalOpt "description")
echo "Default:"
if default=$(evalOpt "default" - 2> /dev/null); then
echo "$default"
else
echo "<None>"
fi
if $defs; then
$desc || $value && echo;
printPath () { echo " $1"; }
echo "Declared by:"
nixMap printPath "$(findSources "declarations")"
echo ""
echo "Defined by:"
nixMap printPath "$(findSources "files")"
echo ""
echo
if example=$(evalOpt "example" - 2> /dev/null); then
echo "Example: $example"
fi
echo "Description:"
echo
eval printf $(evalOpt "description")
echo $desc;
printPath () { echo " $1"; }
echo "Declared by:"
nixMap printPath "$(findSources "declarations")"
echo
echo "Defined by:"
nixMap printPath "$(findSources "files")"
echo
else
# echo 1>&2 "Warning: This value is not an option."

View File

@ -38,6 +38,7 @@ let
nixos-generate-config = makeProg {
name = "nixos-generate-config";
src = ./nixos-generate-config.pl;
path = [ pkgs.btrfsProgs ];
perl = "${pkgs.perl}/bin/perl -I${pkgs.perlPackages.FileSlurp}/lib/perl5/site_perl";
};

View File

@ -10,6 +10,9 @@ with lib;
../profiles/clone-config.nix
];
# FIXME: UUID detection is currently broken
boot.loader.grub.fsIdentifier = "provided";
# Allow mounting of shared folders.
users.extraUsers.demo.extraGroups = [ "vboxsf" ];

View File

@ -150,6 +150,7 @@
zookeeper = 140;
dnsmasq = 141;
uhub = 142;
yandexdisk=143;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!

5
nixos/modules/module-list.nix Normal file → Executable file
View File

@ -161,10 +161,13 @@
./services/misc/folding-at-home.nix
./services/misc/gitolite.nix
./services/misc/gpsd.nix
./services/misc/mesos-master.nix
./services/misc/mesos-slave.nix
./services/misc/nix-daemon.nix
./services/misc/nix-gc.nix
./services/misc/nixos-manual.nix
./services/misc/nix-ssh-serve.nix
./services/misc/phd.nix
./services/misc/rippled.nix
./services/misc/rogue.nix
./services/misc/siproxd.nix
@ -192,6 +195,8 @@
./services/network-filesystems/openafs-client/default.nix
./services/network-filesystems/rsyncd.nix
./services/network-filesystems/samba.nix
./services/network-filesystems/diod.nix
./services/network-filesystems/yandex-disk.nix
./services/networking/amuled.nix
./services/networking/atftpd.nix
./services/networking/avahi-daemon.nix

View File

@ -0,0 +1,103 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.mesos.master;
in {
options.services.mesos = {
master = {
enable = mkOption {
description = "Whether to enable the Mesos Master.";
default = false;
type = types.uniq types.bool;
};
port = mkOption {
description = "Mesos Master port";
default = 5050;
type = types.int;
};
zk = mkOption {
description = ''
ZooKeeper URL (used for leader election amongst masters).
May be one of:
zk://host1:port1,host2:port2,.../mesos
zk://username:password@host1:port1,host2:port2,.../mesos
'';
type = types.str;
};
workDir = mkOption {
description = "The Mesos work directory.";
default = "/var/lib/mesos/master";
type = types.str;
};
extraCmdLineOptions = mkOption {
description = ''
Extra command line options for Mesos Master.
See https://mesos.apache.org/documentation/latest/configuration/
'';
default = [ "" ];
type = types.listOf types.string;
example = [ "--credentials=VALUE" ];
};
quorum = mkOption {
description = ''
The size of the quorum of replicas when using 'replicated_log' based
registry. It is imperative to set this value to be a majority of
masters i.e., quorum > (number of masters)/2.
If 0 will fall back to --registry=in_memory.
'';
default = 0;
type = types.int;
};
logLevel = mkOption {
description = ''
The logging level used. Possible values:
'INFO', 'WARNING', 'ERROR'
'';
default = "INFO";
type = types.str;
};
};
};
config = mkIf cfg.enable {
systemd.services.mesos-master = {
description = "Mesos Master";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
serviceConfig = {
ExecStart = ''
${pkgs.mesos}/bin/mesos-master \
--port=${toString cfg.port} \
--zk=${cfg.zk} \
${if cfg.quorum == 0 then "--registry=in_memory" else "--registry=replicated_log --quorum=${cfg.quorum}"} \
--work_dir=${cfg.workDir} \
--logging_level=${cfg.logLevel} \
${toString cfg.extraCmdLineOptions}
'';
PermissionsStartOnly = true;
};
preStart = ''
mkdir -m 0700 -p ${cfg.workDir}
'';
};
};
}

View File

@ -0,0 +1,93 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.mesos.slave;
in {
options.services.mesos = {
slave = {
enable = mkOption {
description = "Whether to enable the Mesos Slave.";
default = false;
type = types.uniq types.bool;
};
port = mkOption {
description = "Mesos Slave port";
default = 5051;
type = types.int;
};
master = mkOption {
description = ''
May be one of:
zk://host1:port1,host2:port2,.../path
zk://username:password@host1:port1,host2:port2,.../path
'';
type = types.str;
};
withHadoop = mkOption {
description = "Add the HADOOP_HOME to the slave.";
default = false;
type = types.bool;
};
workDir = mkOption {
description = "The Mesos work directory.";
default = "/var/lib/mesos/slave";
type = types.str;
};
extraCmdLineOptions = mkOption {
description = ''
Extra command line options for Mesos Slave.
See https://mesos.apache.org/documentation/latest/configuration/
'';
default = [ "" ];
type = types.listOf types.string;
example = [ "--gc_delay=3days" ];
};
logLevel = mkOption {
description = ''
The logging level used. Possible values:
'INFO', 'WARNING', 'ERROR'
'';
default = "INFO";
type = types.str;
};
};
};
config = mkIf cfg.enable {
systemd.services.mesos-slave = {
description = "Mesos Slave";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
serviceConfig = {
ExecStart = ''
${pkgs.mesos}/bin/mesos-slave \
--port=${toString cfg.port} \
--master=${cfg.master} \
${optionalString cfg.withHadoop "--hadoop-home=${pkgs.hadoop}"} \
--work_dir=${cfg.workDir} \
--logging_level=${cfg.logLevel} \
${toString cfg.extraCmdLineOptions}
'';
PermissionsStartOnly = true;
};
preStart = ''
mkdir -m 0700 -p ${cfg.workDir}
'';
};
};
}

View File

@ -0,0 +1,52 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.phd;
in
{
###### interface
options = {
services.phd = {
enable = mkOption {
default = false;
description = "
Enable daemons for phabricator.
";
};
};
};
###### implementation
config = mkIf cfg.enable {
systemd.services.phd = {
path = [ pkgs.phabricator pkgs.php pkgs.mercurial pkgs.git pkgs.subversion ];
after = [ "httpd.service" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${pkgs.phabricator}/phabricator/bin/phd start";
ExecStop = "${pkgs.phabricator}/phabricator/bin/phd stop";
User = "wwwrun";
RestartSec = "30s";
Restart = "always";
StartLimitInterval = "1m";
};
};
};
}

View File

@ -0,0 +1,159 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.diod;
diodBool = b: if b then "1" else "0";
diodConfig = pkgs.writeText "diod.conf" ''
allsquash = ${diodBool cfg.allsquash}
auth_required = ${diodBool cfg.authRequired}
exportall = ${diodBool cfg.exportall}
exportopts = "${concatStringsSep "," cfg.exportopts}"
exports = { ${concatStringsSep ", " (map (s: ''"${s}"'' ) cfg.exports)} }
listen = { ${concatStringsSep ", " (map (s: ''"${s}"'' ) cfg.listen)} }
logdest = "${cfg.logdest}"
nwthreads = ${toString cfg.nwthreads}
squashuser = "${cfg.squashuser}"
statfs_passthru = ${diodBool cfg.statfsPassthru}
userdb = ${diodBool cfg.userdb}
${cfg.extraConfig}
'';
in
{
options = {
services.diod = {
enable = mkOption {
type = types.bool;
default = false;
description = "Whether to enable the diod 9P file server.";
};
listen = mkOption {
type = types.listOf types.str;
default = [ ];
description = ''
[ "IP:PORT" [,"IP:PORT",...] ]
List the interfaces and ports that diod should listen on.
'';
};
exports = mkOption {
type = types.listOf types.path;
default = [];
description = ''
List the file systems that clients will be allowed to mount. All paths should
be fully qualified. The exports table can include two types of element:
a string element (as above),
or an alternate table element form { path="/path", opts="ro" }.
In the alternate form, the (optional) opts attribute is a comma-separated list
of export options. The two table element forms can be mixed in the exports
table. Note that although diod will not traverse file system boundaries for a
given mount due to inode uniqueness constraints, subdirectories of a file
system can be separately exported.
'';
};
exportall = mkOption {
type = types.bool;
default = true;
description = ''
Export all file systems listed in /proc/mounts. If new file systems are mounted
after diod has started, they will become immediately mountable. If there is a
duplicate entry for a file system in the exports list, any options listed in
the exports entry will apply.
'';
};
exportopts = mkOption {
type = types.listOf types.str;
default = [];
description = ''
Establish a default set of export options. These are overridden, not appended
to, by opts attributes in an "exports" entry.
'';
};
nwthreads = mkOption {
type = types.int;
default = 16;
description = ''
Sets the (fixed) number of worker threads created to handle 9P
requests for a unique aname.
'';
};
authRequired = mkOption {
type = types.bool;
default = false;
description = ''
Allow clients to connect without authentication, i.e. without a valid MUNGE credential.
'';
};
userdb = mkOption {
type = types.bool;
default = false;
description = ''
This option disables password/group lookups. It allows any uid to attach and
assumes gid=uid, and supplementary groups contain only the primary gid.
'';
};
allsquash = mkOption {
type = types.bool;
default = true;
description = ''
Remap all users to "nobody". The attaching user need not be present in the
password file.
'';
};
squashuser = mkOption {
type = types.str;
default = "nobody";
description = ''
Change the squash user. The squash user must be present in the password file.
'';
};
logdest = mkOption {
type = types.str;
default = "syslog:daemon:err";
description = ''
Set the destination for logging.
The value has the form of "syslog:facility:level" or "filename".
'';
};
statfsPassthru = mkOption {
type = types.bool;
default = false;
description = ''
This option configures statfs to return the host file system's type
rather than V9FS_MAGIC.
'';
};
extraConfig = mkOption {
type = types.lines;
default = "";
description = "Extra configuration options for diod.conf.";
};
};
};
config = mkIf config.services.diod.enable {
environment.systemPackages = [ pkgs.diod ];
systemd.services.diod = {
description = "diod 9P file server";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
ExecStart = "${pkgs.diod}/sbin/diod -c ${diodConfig}";
};
};
};
}

View File

@ -0,0 +1,104 @@
{ config, pkgs, ... }:
with pkgs.lib;
let
cfg = config.services.yandex-disk;
dir = "/var/lib/yandex-disk";
u = if cfg.user != null then cfg.user else "yandexdisk";
in
{
###### interface
options = {
services.yandex-disk = {
enable = mkOption {
default = false;
description = "
Whether to enable Yandex-disk client. See https://disk.yandex.ru/
";
};
username = mkOption {
default = "";
type = types.string;
description = ''
Your yandex.com login name.
'';
};
password = mkOption {
default = "";
type = types.string;
description = ''
Your yandex.com password. Warning: it will be world-readable in /nix/store.
'';
};
user = mkOption {
default = null;
description = ''
The user the yandex-disk daemon should run as.
'';
};
directory = mkOption {
default = "/home/Yandex.Disk";
description = "The directory to use for Yandex.Disk storage";
};
};
};
###### implementation
config = mkIf cfg.enable {
users.extraUsers = mkIf (cfg.user == null) [ {
name = u;
uid = config.ids.uids.yandexdisk;
group = "nogroup";
home = dir;
} ];
systemd.services.yandex-disk = {
description = "Yandex-disk server";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
# FIXME: have to specify ${directory} here as well
unitConfig.RequiresMountsFor = dir;
script = ''
mkdir -p -m 700 ${dir}
chown ${u} ${dir}
if ! test -d "${cfg.directory}" ; then
mkdir -p -m 755 ${cfg.directory} ||
exit 1
fi
${pkgs.su}/bin/su -s ${pkgs.stdenv.shell} ${u} \
-c '${pkgs.yandex-disk}/bin/yandex-disk token -p ${cfg.password} ${cfg.username} ${dir}/token'
${pkgs.su}/bin/su -s ${pkgs.stdenv.shell} ${u} \
-c '${pkgs.yandex-disk}/bin/yandex-disk start --no-daemon -a ${dir}/token -d ${cfg.directory}'
'';
};
};
}

View File

@ -0,0 +1,53 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.copy-com;
in
{
options = {
services.copy-com = {
enable = mkOption {
default = false;
description = "
Enable the copy.com client.
The first time copy.com is run, it needs to be configured. Before enabling run
copy_console manually.
";
};
user = mkOption {
description = "The user for which copy should run.";
};
debug = mkOption {
default = false;
description = "Output more.";
};
};
};
config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.postfix ];
systemd.services."copy-com-${cfg.user}" = {
description = "Copy.com Client";
after = [ "network.target" "local-fs.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${pkgs.copy-com}/bin/copy_console ${if cfg.debug then "-consoleOutput -debugToConsole=dirwatch,path-watch,csm_path,csm -debug -console" else ""}";
User = "${cfg.user}";
};
};
};
}

View File

@ -11,7 +11,10 @@ let
conf-file=/etc/dnsmasq-conf.conf
resolv-file=/etc/dnsmasq-resolv.conf
''}
${cfg.extraConfig}
${flip concatMapStrings cfg.servers (server: ''
server=${server}
'')}
${cfg.extraConfig}
'';
in
@ -43,12 +46,10 @@ in
default = [];
example = [ "8.8.8.8" "8.8.4.4" ];
description = ''
The parameter to dnsmasq -S.
The DNS servers which dnsmasq should query.
'';
};
extraConfig = mkOption {
type = types.string;
default = "";
@ -67,8 +68,8 @@ in
config = mkIf config.services.dnsmasq.enable {
environment.systemPackages = [ dnsmasq ]
++ (if cfg.resolveLocalQueries then [ pkgs.openresolv ] else []);
networking.nameservers =
optional cfg.resolveLocalQueries "127.0.0.1";
services.dbus.packages = [ dnsmasq ];
@ -83,10 +84,14 @@ in
description = "dnsmasq daemon";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
path = [ dnsmasq ];
preStart = ''
touch /etc/dnsmasq-{conf,resolv}.conf
dnsmasq --test
'';
serviceConfig = {
Type = "dbus";
BusName = "uk.org.thekelleys.dnsmasq";
ExecStartPre = "${dnsmasq}/bin/dnsmasq --test";
ExecStart = "${dnsmasq}/bin/dnsmasq -k --enable-dbus --user=dnsmasq -C ${dnsmasqConf}";
ExecReload = "${dnsmasq}/bin/kill -HUP $MAINPID";
};

View File

@ -75,6 +75,17 @@ in
'';
};
networking.nat.forwardPorts = mkOption {
type = types.listOf types.attrs;
default = [];
example = [ { sourcePort = 8080; destination = "10.0.0.1:80"; } ];
description =
''
List of forwarded ports from the external interface to
internal destinations by using DNAT.
'';
};
};
@ -118,6 +129,14 @@ in
-s '${range}' -o ${cfg.externalInterface} ${dest}
'') cfg.internalIPs}
# NAT from external ports to internal ports.
${concatMapStrings (fwd: ''
iptables -w -t nat -A PREROUTING \
-i ${cfg.externalInterface} -p tcp \
--dport ${builtins.toString fwd.sourcePort} \
-j DNAT --to-destination ${fwd.destination}
'') cfg.forwardPorts}
echo 1 > /proc/sys/net/ipv4/ip_forward
'';

View File

@ -6,8 +6,6 @@ let
cfg = config.services.unbound;
username = "unbound";
stateDir = "/var/lib/unbound";
access = concatMapStrings (x: " access-control: ${x} allow\n") cfg.allowedAccess;
@ -21,21 +19,13 @@ let
confFile = pkgs.writeText "unbound.conf" ''
server:
directory: "${stateDir}"
username: ${username}
# make sure unbound can access entropy from inside the chroot.
# e.g. on linux the use these commands (on BSD, devfs(8) is used):
# mount --bind -n /dev/random /etc/unbound/dev/random
# and mount --bind -n /dev/log /etc/unbound/dev/log
username: unbound
chroot: "${stateDir}"
# logfile: "${stateDir}/unbound.log" #uncomment to use logfile.
pidfile: "${stateDir}/unbound.pid"
verbosity: 1 # uncomment and increase to get more logging.
pidfile: ""
${interfaces}
${access}
${forward}
${cfg.extraConfig}
${forward}
'';
in
@ -82,7 +72,7 @@ in
environment.systemPackages = [ pkgs.unbound ];
users.extraUsers = singleton {
name = username;
name = "unbound";
uid = config.ids.uids.unbound;
description = "unbound daemon user";
home = stateDir;
@ -96,8 +86,18 @@ in
wants = [" nss-lookup.target" ];
wantedBy = [ "multi-user.target" ];
path = [ pkgs.unbound ];
serviceConfig.ExecStart = "${pkgs.unbound}/sbin/unbound -d -c ${confFile}";
preStart = ''
mkdir -m 0755 -p ${stateDir}/dev/
cp ${confFile} ${stateDir}/unbound.conf
chown unbound ${stateDir}
touch ${stateDir}/dev/random
${pkgs.utillinux}/bin/mount --bind -n /dev/random ${stateDir}/dev/random
'';
serviceConfig = {
ExecStart = "${pkgs.unbound}/sbin/unbound -d -c ${stateDir}/unbound.conf";
ExecStopPost="${pkgs.utillinux}/bin/umount ${stateDir}/dev/random";
};
};
};

View File

@ -35,7 +35,7 @@ let
bindir = pkgs.buildEnv {
name = "cups-progs";
paths = cfg.drivers;
pathsToLink = [ "/lib/cups" "/share/cups" "/bin" ];
pathsToLink = [ "/lib/cups" "/share/cups" "/bin" "/etc/cups" ];
postBuild = cfg.bindirCmds;
};
@ -89,6 +89,20 @@ in
'';
};
clientConf = mkOption {
type = types.lines;
default = "";
example =
''
ServerName server.example.com
Encryption Never
'';
description = ''
The contents of the client configuration.
(<filename>client.conf</filename>)
'';
};
drivers = mkOption {
type = types.listOf types.path;
example = literalExample "[ pkgs.splix ]";
@ -124,6 +138,14 @@ in
environment.systemPackages = [ cups ];
environment.variables.CUPS_SERVERROOT = "/etc/cups";
environment.etc = [
{ source = pkgs.writeText "client.conf" cfg.clientConf;
target = "cups/client.conf";
}
];
services.dbus.packages = [ cups ];
# Cups uses libusb to talk to printers, and does not use the

View File

@ -1,35 +1,30 @@
{ config, lib, pkgs, ... }:
with lib;
let
phabricatorRoot = pkgs.stdenv.mkDerivation rec {
version = "2014-05-12";
name = "phabricator-${version}";
srcLibphutil = pkgs.fetchgit {
url = git://github.com/facebook/libphutil.git;
rev = "2f3b5a1cf6ea464a0250d4b1c653a795a90d2716";
sha256 = "9598cec400984dc149162f1e648814a54ea0cd34fcd529973dc83f5486fdd9fd";
};
srcArcanist = pkgs.fetchgit {
url = git://github.com/facebook/arcanist.git;
rev = "54c377448db8dbc40f0ca86d43c837d30e493485";
sha256 = "086db3c0d1154fbad23e7c6def31fd913384ee20247b329515838b669c3028e0";
};
srcPhabricator = pkgs.fetchgit {
url = git://github.com/facebook/phabricator.git;
rev = "1644ef185ecf1e9fca3eb6b16351ef46b19d110f";
sha256 = "e1135e4ba76d53f48aad4161563035414ed7e878f39a8a34a875a01b41b2a084";
};
buildCommand = ''
mkdir -p $out
cp -R ${srcLibphutil} $out/libphutil
cp -R ${srcArcanist} $out/arcanist
cp -R ${srcPhabricator} $out/phabricator
'';
};
phabricatorRoot = pkgs.phabricator;
in {
enablePHP = true;
extraApacheModules = [ "mod_rewrite" ];
DocumentRoot = "${phabricatorRoot}/phabricator/webroot";
options = {
git = mkOption {
default = true;
description = "Enable git repositories.";
};
mercurial = mkOption {
default = true;
description = "Enable mercurial repositories.";
};
subversion = mkOption {
default = true;
description = "Enable subversion repositories.";
};
};
extraConfig = ''
DocumentRoot ${phabricatorRoot}/phabricator/webroot
@ -38,4 +33,18 @@ in {
RewriteRule ^/favicon.ico - [L,QSA]
RewriteRule ^(.*)$ /index.php?__path__=$1 [B,L,QSA]
'';
extraServerPath = [
"${pkgs.which}"
"${pkgs.diffutils}"
] ++
(if config.mercurial then ["${pkgs.mercurial}"] else []) ++
(if config.subversion then ["${pkgs.subversion}"] else []) ++
(if config.git then ["${pkgs.git}"] else []);
startupScript = pkgs.writeScript "activatePhabricator" ''
mkdir -p /var/repo
chown wwwrun /var/repo
'';
}

View File

@ -6,7 +6,8 @@ let
cfg = config.boot.loader.grub;
realGrub = if cfg.version == 1 then pkgs.grub else pkgs.grub2;
realGrub = if cfg.version == 1 then pkgs.grub
else pkgs.grub2.override { zfsSupport = cfg.zfsSupport; };
grub =
# Don't include GRUB if we're only generating a GRUB menu (e.g.,
@ -25,11 +26,12 @@ let
inherit (cfg)
version extraConfig extraPerEntryConfig extraEntries
extraEntriesBeforeNixOS extraPrepareConfig configurationLimit copyKernels timeout
default devices explicitBootRoot;
default devices fsIdentifier;
path = (makeSearchPath "bin" [
pkgs.coreutils pkgs.gnused pkgs.gnugrep pkgs.findutils pkgs.diffutils
pkgs.coreutils pkgs.gnused pkgs.gnugrep pkgs.findutils pkgs.diffutils pkgs.btrfsProgs
pkgs.utillinux
]) + ":" + (makeSearchPath "sbin" [
pkgs.mdadm
pkgs.mdadm pkgs.utillinux
]);
});
@ -209,12 +211,26 @@ in
'';
};
explicitBootRoot = mkOption {
default = "";
type = types.str;
fsIdentifier = mkOption {
default = "uuid";
type = types.addCheck types.str
(type: type == "uuid" || type == "label" || type == "provided");
description = ''
The relative path of /boot within the parent volume. Leave empty
if /boot is not a btrfs subvolume.
Determines how grub will identify devices when generating the
configuration file. A value of uuid / label signifies that grub
will always resolve the uuid or label of the device before using
it in the configuration. A value of provided means that grub will
use the device name as show in <command>df</command> or
<command>mount</command>. Note, zfs zpools / datasets are ignored
and will always be mounted using their labels.
'';
};
zfsSupport = mkOption {
default = false;
type = types.bool;
description = ''
Whether grub should be build against libzfs.
'';
};
@ -260,6 +276,9 @@ in
${pkgs.coreutils}/bin/cp -pf "${v}" "/boot/${n}"
'') config.boot.loader.grub.extraFiles);
assertions = [{ assertion = !cfg.zfsSupport || cfg.version == 2;
message = "Only grub version 2 provides zfs support";}];
})
];

View File

@ -1,5 +1,6 @@
use strict;
use warnings;
use Class::Struct;
use XML::LibXML;
use File::Basename;
use File::Path;
@ -27,6 +28,14 @@ sub writeFile {
close FILE or die;
}
sub runCommand {
my ($cmd) = @_;
open FILE, "$cmd 2>/dev/null |" or die "Failed to execute: $cmd\n";
my @ret = <FILE>;
close FILE;
return ($?, @ret);
}
my $grub = get("grub");
my $grubVersion = int(get("version"));
my $extraConfig = get("extraConfig");
@ -39,7 +48,7 @@ my $configurationLimit = int(get("configurationLimit"));
my $copyKernels = get("copyKernels") eq "true";
my $timeout = int(get("timeout"));
my $defaultEntry = int(get("default"));
my $explicitBootRoot = get("explicitBootRoot");
my $fsIdentifier = get("fsIdentifier");
$ENV{'PATH'} = get("path");
die "unsupported GRUB version\n" if $grubVersion != 1 && $grubVersion != 2;
@ -48,23 +57,114 @@ print STDERR "updating GRUB $grubVersion menu...\n";
mkpath("/boot/grub", 0, 0700);
# Discover whether /boot is on the same filesystem as / and
# /nix/store. If not, then all kernels and initrds must be copied to
# /boot, and all paths in the GRUB config file must be relative to the
# root of the /boot filesystem. `$bootRoot' is the path to be
# prepended to paths under /boot.
my $bootRoot = "/boot";
if (stat("/")->dev != stat("/boot")->dev) {
$bootRoot = "";
$copyKernels = 1;
} elsif (stat("/boot")->dev != stat("/nix/store")->dev) {
# /boot.
if (stat("/boot")->dev != stat("/nix/store")->dev) {
$copyKernels = 1;
}
if ($explicitBootRoot ne "") {
$bootRoot = $explicitBootRoot;
# Discover information about the location of /boot
struct(Fs => {
device => '$',
type => '$',
mount => '$',
});
sub GetFs {
my ($dir) = @_;
my ($status, @dfOut) = runCommand("df -T $dir");
if ($status != 0 || $#dfOut != 1) {
die "Failed to retrieve output about $dir from `df`";
}
my @boot = split(/[ \n\t]+/, $dfOut[1]);
return Fs->new(device => $boot[0], type => $boot[1], mount => $boot[6]);
}
struct (Grub => {
path => '$',
search => '$',
});
my $driveid = 1;
sub GrubFs {
my ($dir) = @_;
my $fs = GetFs($dir);
my $path = "/" . substr($dir, length($fs->mount));
my $search = "";
if ($grubVersion > 1) {
# ZFS is completely separate logic as zpools are always identified by a label
# or custom UUID
if ($fs->type eq 'zfs') {
my $sid = index($fs->device, '/');
if ($sid < 0) {
$search = '--label ' . $fs->device;
$path = '/@' . $path;
} else {
$search = '--label ' . substr($fs->device, 0, $sid);
$path = '/' . substr($fs->device, $sid) . '/@' . $path;
}
} else {
my %types = ('uuid' => '--fs-uuid', 'label' => '--label');
if ($fsIdentifier eq 'provided') {
# If the provided dev is identifying the partition using a label or uuid,
# we should get the label / uuid and do a proper search
my @matches = $fs->device =~ m/\/dev\/disk\/by-(label|uuid)\/(.*)/;
if ($#matches > 1) {
die "Too many matched devices"
} elsif ($#matches == 1) {
$search = "$types{$matches[0]} $matches[1]"
}
} else {
# Determine the identifying type
$search = $types{$fsIdentifier} . ' ';
# Based on the type pull in the identifier from the system
my ($status, @devInfo) = runCommand("blkid -o export @{[$fs->device]}");
if ($status != 0) {
die "Failed to get blkid info for @{[$fs->mount]} on @{[$fs->device]}";
}
my @matches = join("", @devInfo) =~ m/@{[uc $fsIdentifier]}=([^\n]*)/;
if ($#matches != 0) {
die "Couldn't find a $types{$fsIdentifier} for @{[$fs->device]}\n"
}
$search .= $matches[0];
}
# BTRFS is a special case in that we need to fix the referrenced path based on subvolumes
if ($fs->type eq 'btrfs') {
my ($status, @id_info) = runCommand("btrfs subvol show @{[$fs->mount]}");
if ($status != 0) {
die "Failed to retrieve subvolume info for @{[$fs->mount]}\n";
}
my @ids = join("", @id_info) =~ m/Object ID:[ \t\n]*([^ \t\n]*)/;
if ($#ids > 0) {
die "Btrfs subvol name for @{[$fs->device]} listed multiple times in mount\n"
} elsif ($#ids == 0) {
my ($status, @path_info) = runCommand("btrfs subvol list @{[$fs->mount]}");
if ($status != 0) {
die "Failed to find @{[$fs->mount]} subvolume id from btrfs\n";
}
my @paths = join("", @path_info) =~ m/ID $ids[0] [^\n]* path ([^\n]*)/;
if ($#paths > 0) {
die "Btrfs returned multiple paths for a single subvolume id, mountpoint @{[$fs->mount]}\n";
} elsif ($#paths != 0) {
die "Btrfs did not return a path for the subvolume at @{[$fs->mount]}\n";
}
$path = "/$paths[0]$path";
}
}
}
if (not $search eq "") {
$search = "search --set=drive$driveid " . $search;
$path = "(\$drive$driveid)$path";
$driveid += 1;
}
}
return Grub->new(path => $path, search => $search);
}
my $grubBoot = GrubFs("/boot");
my $grubStore = GrubFs("/nix/store");
# Generate the header.
my $conf .= "# Automatically generated. DO NOT EDIT THIS FILE!\n";
@ -76,12 +176,17 @@ if ($grubVersion == 1) {
";
if ($splashImage) {
copy $splashImage, "/boot/background.xpm.gz" or die "cannot copy $splashImage to /boot\n";
$conf .= "splashimage $bootRoot/background.xpm.gz\n";
$conf .= "splashimage " . $grubBoot->path . "/background.xpm.gz\n";
}
}
else {
if ($copyKernels == 0) {
$conf .= "
" . $grubStore->search;
}
$conf .= "
" . $grubBoot->search . "
if [ -s \$prefix/grubenv ]; then
load_env
fi
@ -102,7 +207,7 @@ else {
set timeout=$timeout
fi
if loadfont $bootRoot/grub/fonts/unicode.pf2; then
if loadfont " . $grubBoot->path . "/grub/fonts/unicode.pf2; then
set gfxmode=640x480
insmod gfxterm
insmod vbe
@ -116,7 +221,7 @@ else {
copy $splashImage, "/boot/background.png" or die "cannot copy $splashImage to /boot\n";
$conf .= "
insmod png
if background_image $bootRoot/background.png; then
if background_image " . $grubBoot->path . "/background.png; then
set color_normal=white/black
set color_highlight=black/white
else
@ -138,7 +243,7 @@ mkpath("/boot/kernels", 0, 0755) if $copyKernels;
sub copyToKernelsDir {
my ($path) = @_;
return $path unless $copyKernels;
return $grubStore->path . substr($path, length("/nix/store")) unless $copyKernels;
$path =~ /\/nix\/store\/(.*)/ or die;
my $name = $1; $name =~ s/\//-/g;
my $dst = "/boot/kernels/$name";
@ -151,7 +256,7 @@ sub copyToKernelsDir {
rename $tmp, $dst or die "cannot rename $tmp to $dst\n";
}
$copied{$dst} = 1;
return "$bootRoot/kernels/$name";
return $grubBoot->path . "/kernels/$name";
}
sub addEntry {
@ -178,6 +283,10 @@ sub addEntry {
$conf .= " " . ($xen ? "module" : "initrd") . " $initrd\n\n";
} else {
$conf .= "menuentry \"$name\" {\n";
$conf .= $grubBoot->search . "\n";
if ($copyKernels == 0) {
$conf .= $grubStore->search . "\n";
}
$conf .= " $extraPerEntryConfig\n" if $extraPerEntryConfig;
$conf .= " multiboot $xen $xenParams\n" if $xen;
$conf .= " " . ($xen ? "module" : "linux") . " $kernel $kernelParams\n";
@ -195,7 +304,7 @@ addEntry("NixOS - Default", $defaultConfig);
$conf .= "$extraEntries\n" unless $extraEntriesBeforeNixOS;
# extraEntries could refer to @bootRoot@, which we have to substitute
$conf =~ s/\@bootRoot\@/$bootRoot/g;
$conf =~ s/\@bootRoot\@/$grubBoot->path/g;
# Emit submenus for all system profiles.
sub addProfile {

View File

@ -30,9 +30,7 @@ in
config = mkIf (!config.boot.isContainer && config.powerManagement.cpuFreqGovernor != null) {
boot.kernelModules = [ "acpi-cpufreq" "speedstep-lib" "pcc-cpufreq"
"cpufreq_${cfg.cpuFreqGovernor}"
];
boot.kernelModules = [ "cpufreq_${cfg.cpuFreqGovernor}" ];
environment.systemPackages = [ cpupower ];

View File

@ -133,7 +133,7 @@ in
};
boot.initrd = mkIf inInitrd {
kernelModules = [ "spl" "zfs" ] ;
kernelModules = [ "spl" "zfs" ];
extraUtilsCommands =
''
cp -v ${zfsPkg}/sbin/zfs $out/bin
@ -148,6 +148,10 @@ in
'';
};
boot.loader.grub = mkIf inInitrd {
zfsSupport = true;
};
systemd.services."zpool-import" = {
description = "Import zpools";
after = [ "systemd-udev-settle.service" ];

View File

@ -1,6 +1,7 @@
{ config, lib, pkgs, ... }:
{ config, lib, pkgs, utils, ... }:
with lib;
with utils;
let
@ -10,6 +11,10 @@ let
hasSits = cfg.sits != { };
hasBonds = cfg.bonds != { };
# We must escape interfaces due to the systemd interpretation
subsystemDevice = interface:
"sys-subsystem-net-devices-${escapeSystemdPath interface}.device";
addrOpts = v:
assert v == 4 || v == 6;
{
@ -138,8 +143,6 @@ let
Whether this interface is virtual and should be created by tunctl.
This is mainly useful for creating bridges between a host a virtual
network such as VPN or a virtual machine.
Defaults to tap device, unless interface contains "tun" in its name.
'';
};
@ -151,6 +154,15 @@ let
'';
};
virtualType = mkOption {
default = null;
type = types.nullOr (types.addCheck types.str (v: v == "tun" || v == "tap"));
description = ''
The explicit type of interface to create. Accepts tun or tap strings.
Also accepts null to implicitly detect the type of device.
'';
};
proxyARP = mkOption {
default = false;
type = types.bool;
@ -596,8 +608,8 @@ in
nameValuePair "${i.name}-cfg"
{ description = "Configuration of ${i.name}";
wantedBy = [ "network-interfaces.target" ];
bindsTo = [ "sys-subsystem-net-devices-${i.name}.device" ];
after = [ "sys-subsystem-net-devices-${i.name}.device" ];
bindsTo = [ (subsystemDevice i.name) ];
after = [ (subsystemDevice i.name) ];
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
path = [ pkgs.iproute pkgs.gawk ];
@ -673,26 +685,32 @@ in
'');
};
createTunDevice = i: nameValuePair "${i.name}"
createTunDevice = i: nameValuePair "${i.name}-netdev"
{ description = "Virtual Network Interface ${i.name}";
requires = [ "dev-net-tun.device" ];
after = [ "dev-net-tun.device" ];
wantedBy = [ "network.target" ];
requiredBy = [ "sys-subsystem-net-devices-${i.name}.device" ];
serviceConfig =
{ Type = "oneshot";
RemainAfterExit = true;
ExecStart = "${pkgs.tunctl}/bin/tunctl -t '${i.name}' -u '${i.virtualOwner}'";
ExecStop = "${pkgs.tunctl}/bin/tunctl -d '${i.name}'";
};
wantedBy = [ "network.target" (subsystemDevice i.name) ];
path = [ pkgs.iproute ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
};
script = ''
ip tuntap add dev "${i.name}" \
${optionalString (i.virtualType != null) "mode ${i.virtualType}"} \
user "${i.virtualOwner}"
'';
postStop = ''
ip link del ${i.name}
'';
};
createBridgeDevice = n: v:
let
deps = map (i: "sys-subsystem-net-devices-${i}.device") v.interfaces;
createBridgeDevice = n: v: nameValuePair "${n}-netdev"
(let
deps = map subsystemDevice v.interfaces;
in
{ description = "Bridge Interface ${n}";
wantedBy = [ "network.target" "sys-subsystem-net-devices-${n}.device" ];
wantedBy = [ "network.target" (subsystemDevice n) ];
bindsTo = deps;
after = deps;
serviceConfig.Type = "oneshot";
@ -725,14 +743,14 @@ in
ip link set "${n}" down
brctl delbr "${n}"
'';
};
});
createBondDevice = n: v:
let
deps = map (i: "sys-subsystem-net-devices-${i}.device") v.interfaces;
createBondDevice = n: v: nameValuePair "${n}-netdev"
(let
deps = map subsystemDevice v.interfaces;
in
{ description = "Bond Interface ${n}";
wantedBy = [ "network.target" "sys-subsystem-net-devices-${n}.device" ];
wantedBy = [ "network.target" (subsystemDevice n) ];
bindsTo = deps;
after = deps;
serviceConfig.Type = "oneshot";
@ -764,14 +782,14 @@ in
ifenslave -d "${n}"
ip link delete "${n}"
'';
};
});
createSitDevice = n: v:
let
deps = optional (v.dev != null) "sys-subsystem-net-devices-${v.dev}.device";
createSitDevice = n: v: nameValuePair "${n}-netdev"
(let
deps = optional (v.dev != null) (subsystemDevice v.dev);
in
{ description = "6-to-4 Tunnel Interface ${n}";
wantedBy = [ "network.target" "sys-subsystem-net-devices-${n}.device" ];
wantedBy = [ "network.target" (subsystemDevice n) ];
bindsTo = deps;
after = deps;
serviceConfig.Type = "oneshot";
@ -790,14 +808,14 @@ in
postStop = ''
ip link delete "${n}"
'';
};
});
createVlanDevice = n: v:
let
deps = [ "sys-subsystem-net-devices-${v.interface}.device" ];
createVlanDevice = n: v: nameValuePair "${n}-netdev"
(let
deps = [ (subsystemDevice v.interface) ];
in
{ description = "Vlan Interface ${n}";
wantedBy = [ "network.target" "sys-subsystem-net-devices-${n}.device" ];
wantedBy = [ "network.target" (subsystemDevice n) ];
bindsTo = deps;
after = deps;
serviceConfig.Type = "oneshot";
@ -812,15 +830,15 @@ in
postStop = ''
ip link delete "${n}"
'';
};
});
in listToAttrs (
map configureInterface interfaces ++
map createTunDevice (filter (i: i.virtual) interfaces))
// mapAttrs createBridgeDevice cfg.bridges
// mapAttrs createBondDevice cfg.bonds
// mapAttrs createSitDevice cfg.sits
// mapAttrs createVlanDevice cfg.vlans
// mapAttrs' createBridgeDevice cfg.bridges
// mapAttrs' createBondDevice cfg.bonds
// mapAttrs' createSitDevice cfg.sits
// mapAttrs' createVlanDevice cfg.vlans
// { "network-setup" = networkSetup; };
# Set the host and domain names in the activation script. Don't

View File

@ -59,6 +59,7 @@ in
config = mkIf cfg.enable (mkMerge [
{ environment.systemPackages = [ pkgs.docker ];
users.extraGroups.docker.gid = config.ids.gids.docker;
}
(mkIf cfg.socketActivation {

View File

@ -52,6 +52,11 @@ in rec {
(all nixos.tests.installer.lvm)
(all nixos.tests.installer.separateBoot)
(all nixos.tests.installer.simple)
(all nixos.tests.installer.simpleLabels)
(all nixos.tests.installer.simpleProvided)
(all nixos.tests.installer.btrfsSimple)
(all nixos.tests.installer.btrfsSubvols)
(all nixos.tests.installer.btrfsSubvolDefault)
(all nixos.tests.ipv6)
(all nixos.tests.kde4)
(all nixos.tests.login)

View File

@ -231,7 +231,8 @@ in rec {
tests.installer.simpleLabels = forAllSystems (system: (import tests/installer.nix { inherit system; }).simpleLabels.test);
tests.installer.simpleProvided = forAllSystems (system: (import tests/installer.nix { inherit system; }).simpleProvided.test);
tests.installer.btrfsSimple = forAllSystems (system: (import tests/installer.nix { inherit system; }).btrfsSimple.test);
#tests.installer.btrfsSubvols = forAllSystems (system: (import tests/installer.nix { inherit system; }).btrfsSubvols.test);
tests.installer.btrfsSubvols = forAllSystems (system: (import tests/installer.nix { inherit system; }).btrfsSubvols.test);
tests.installer.btrfsSubvolDefault = forAllSystems (system: (import tests/installer.nix { inherit system; }).btrfsSubvolDefault.test);
tests.influxdb = callTest tests/influxdb.nix {};
tests.ipv6 = callTest tests/ipv6.nix {};
tests.jenkins = callTest tests/jenkins.nix {};

View File

@ -35,8 +35,8 @@ let
# The configuration to install.
makeConfig = { testChannel, useEFI, grubVersion, grubDevice }: pkgs.writeText "configuration.nix"
''
makeConfig = { testChannel, useEFI, grubVersion, grubDevice, grubIdentifier }:
pkgs.writeText "configuration.nix" ''
{ config, pkgs, modulesPath, ... }:
{ imports =
@ -54,6 +54,7 @@ let
''}
boot.loader.grub.device = "${grubDevice}";
boot.loader.grub.extraConfig = "serial; terminal_output.serial";
boot.loader.grub.fsIdentifier = "${grubIdentifier}";
''}
environment.systemPackages = [ ${optionalString testChannel "pkgs.rlwrap"} ];
@ -93,7 +94,7 @@ let
# disk, and then reboot from the hard disk. It's parameterized with
# a test script fragment `createPartitions', which must create
# partitions and filesystems.
testScriptFun = { createPartitions, testChannel, useEFI, grubVersion, grubDevice }:
testScriptFun = { createPartitions, testChannel, useEFI, grubVersion, grubDevice, grubIdentifier }:
let
# FIXME: OVMF doesn't boot from virtio http://www.mail-archive.com/edk2-devel@lists.sourceforge.net/msg01501.html
iface = if useEFI || grubVersion == 1 then "scsi" else "virtio";
@ -161,7 +162,7 @@ let
$machine->succeed("cat /mnt/etc/nixos/hardware-configuration.nix >&2");
$machine->copyFileFromHost(
"${ makeConfig { inherit testChannel useEFI grubVersion grubDevice; } }",
"${ makeConfig { inherit testChannel useEFI grubVersion grubDevice grubIdentifier; } }",
"/mnt/etc/nixos/configuration.nix");
# Perform the installation.
@ -216,13 +217,13 @@ let
makeInstallerTest = name:
{ createPartitions, testChannel ? false, useEFI ? false, grubVersion ? 2, grubDevice ? "/dev/vda" }:
{ createPartitions, testChannel ? false, useEFI ? false, grubVersion ? 2, grubDevice ? "/dev/vda", grubIdentifier ? "uuid" }:
makeTest {
inherit iso;
name = "installer-" + name;
nodes = if testChannel then { inherit webserver; } else { };
testScript = testScriptFun {
inherit createPartitions testChannel useEFI grubVersion grubDevice;
inherit createPartitions testChannel useEFI grubVersion grubDevice grubIdentifier;
};
};
@ -461,11 +462,36 @@ in {
"mount LABEL=root /mnt",
"btrfs subvol create /mnt/boot",
"btrfs subvol create /mnt/nixos",
"btrfs subvol create /mnt/nixos/default",
"umount /mnt",
"mount -o defaults,subvol=nixos LABEL=root /mnt",
"mount -o defaults,subvol=nixos/default LABEL=root /mnt",
"mkdir /mnt/boot",
"mount -o defaults,subvol=boot LABEL=root /mnt/boot",
);
'';
};
# Test to see if we can detect default and aux subvolumes correctly
btrfsSubvolDefault = makeInstallerTest "btrfsSubvolDefault" {
createPartitions = ''
$machine->succeed(
"sgdisk -Z /dev/vda",
"sgdisk -n 1:0:+1M -n 2:0:+1G -N 3 -t 1:ef02 -t 2:8200 -t 3:8300 -c 3:root /dev/vda",
"mkswap /dev/vda2 -L swap",
"swapon -L swap",
"mkfs.btrfs -L root /dev/vda3",
"btrfs device scan",
"mount LABEL=root /mnt",
"btrfs subvol create /mnt/badpath",
"btrfs subvol create /mnt/badpath/boot",
"btrfs subvol create /mnt/nixos",
"btrfs subvol set-default \$(btrfs subvol list /mnt | grep 'nixos' | awk '{print \$2}') /mnt",
"umount /mnt",
"mount -o defaults LABEL=root /mnt",
"mkdir -p /mnt/badpath/boot", # Help ensure the detection mechanism is actually looking up subvolumes
"mkdir /mnt/boot",
"mount -o defaults,subvol=badpath/boot LABEL=root /mnt/boot",
);
'';
};
}

View File

@ -32,9 +32,16 @@ import ./make-test.nix ({ pkgs, ... }: {
}];
};
phd = {
enable = true;
};
mysql = {
enable = true;
package = pkgs.mysql;
extraOptions = ''
sql_mode=STRICT_ALL_TABLES
'';
};
};

View File

@ -1,5 +1,6 @@
{ pkgs, stdenv, fetchurl, python, buildPythonPackage, pythonPackages, mygpoclient, intltool,
ipodSupport ? true, libgpod, gpodderHome ? "", gpodderDownloadDir ? "" }:
ipodSupport ? true, libgpod, gpodderHome ? "", gpodderDownloadDir ? "",
gnome3, hicolor_icon_theme }:
with pkgs.lib;
@ -7,14 +8,18 @@ let
inherit (pythonPackages) coverage feedparser minimock sqlite3 dbus pygtk eyeD3;
in buildPythonPackage rec {
name = "gpodder-3.7.0";
name = "gpodder-3.8.0";
src = fetchurl {
url = "http://gpodder.org/src/${name}.tar.gz";
sha256 = "fa90ef4bdd3fd9eef95404f7f43f70912ae3ab4f8d24078484a2f3e11b14dc47";
sha256 = "0731f08f4270c81872b841b55200ae80feb4502706397d0085079471fb9a8fe4";
};
buildInputs = [ coverage feedparser minimock sqlite3 mygpoclient intltool ];
buildInputs = [
coverage feedparser minimock sqlite3 mygpoclient intltool
gnome3.gnome_icon_theme gnome3.gnome_icon_theme_symbolic
hicolor_icon_theme
];
propagatedBuildInputs = [ feedparser dbus mygpoclient sqlite3 pygtk eyeD3 ]
++ stdenv.lib.optional ipodSupport libgpod;
@ -26,7 +31,30 @@ in buildPythonPackage rec {
preFixup = ''
wrapProgram $out/bin/gpodder \
${optionalString (gpodderHome != "") "--set GPODDER_HOME ${gpodderHome}"} \
${optionalString (gpodderDownloadDir != "") "--set GPODDER_DOWNLOAD_DIR ${gpodderDownloadDir}"}
${optionalString (gpodderDownloadDir != "") "--set GPODDER_DOWNLOAD_DIR ${gpodderDownloadDir}"} \
--prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
'';
# The `wrapPythonPrograms` script in the postFixup phase breaks gpodder. The
# easiest way to fix this is to call wrapPythonPrograms and then to clean up
# the wrapped file.
postFixup = ''
wrapPythonPrograms
if test -e $out/nix-support/propagated-build-inputs; then
ln -s $out/nix-support/propagated-build-inputs $out/nix-support/propagated-user-env-packages
fi
createBuildInputsPth build-inputs "$buildInputStrings"
for inputsfile in propagated-build-inputs propagated-native-build-inputs; do
if test -e $out/nix-support/$inputsfile; then
createBuildInputsPth $inputsfile "$(cat $out/nix-support/$inputsfile)"
fi
done
sed -i "$out/bin/..gpodder-wrapped-wrapped" -e '{
/import sys; sys.argv/d
}'
'';
installPhase = "DESTDIR=/ PREFIX=$out make install";

View File

@ -1,14 +1,14 @@
{ fetchurl, stdenv, ncurses, boehmgc, perl, help2man }:
{ fetchurl, stdenv, pkgconfig, ncurses, boehmgc, perl, help2man }:
stdenv.mkDerivation rec {
name = "zile-2.4.9";
name = "zile-2.4.11";
src = fetchurl {
url = "mirror://gnu/zile/${name}.tar.gz";
sha256 = "0j801c28ypm924rw3lqyb6khxyslg6ycrv16wmmwcam0mk3mj6f7";
sha256 = "1k593y1xzvlj52q0gyhcx2lllws4sg84b8r9pcginjb1vjypplhz";
};
buildInputs = [ ncurses boehmgc ];
buildInputs = [ pkgconfig ncurses boehmgc ];
nativeBuildInputs = [ help2man perl ];
# `help2man' wants to run Zile, which fails when cross-compiling.
@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
# XXX: Work around cross-compilation-unfriendly `gl_FUNC_FSTATAT' macro.
preConfigure = "export gl_cv_func_fstatat_zero_flag=yes";
meta = {
meta = with stdenv.lib; {
description = "Lightweight Emacs clone";
longDescription = ''
@ -45,8 +45,10 @@ stdenv.mkDerivation rec {
homepage = http://www.gnu.org/software/zile/;
license = stdenv.lib.licenses.gpl3Plus;
license = licenses.gpl3Plus;
maintainers = [ ];
maintainers = with maintainers; [ pSub ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,21 @@
{ stdenv, fetchurl, kdelibs, automoc4, boost, pkgconfig, graphviz, gettext }:
stdenv.mkDerivation rec {
name = "kgraphviewer-${version}";
version = "2.1.90";
src = fetchurl {
url = "mirror://kde/unstable/kgraphviewer/${version}/src/${name}.tar.xz";
sha256 = "13zhjs57xavzrj4nrlqs35n35ihvzij7hgbszf5fhlp2a4d4rrqs";
};
buildInputs = [ kdelibs automoc4 boost pkgconfig graphviz gettext ];
meta = with stdenv.lib; {
description = "A Graphviz dot graph viewer for KDE";
license = licenses.gpl2;
platforms = platforms.linux;
maintainers = [ maintainers.lethalman ];
};
}

View File

@ -80,51 +80,4 @@ in rec {
};
};
dogecoin = (buildAltcoin rec {
walletName = "dogecoin";
version = "1.8.0";
src = fetchurl {
url = "https://github.com/dogecoin/dogecoin/archive/v${version}.tar.gz";
sha256 = "8a33958c04213cd621aa3c86910477813af22512f03b47c98995d20d31f3f935";
};
extraBuildInputs = [ autogen autoconf automake pkgconfig db utillinux protobuf ];
meta = {
description = "Wow, such coin, much shiba, very rich";
longDescription = "wow";
homepage = http://www.dogecoin.com/;
maintainers = [ maintainers.offline maintainers.edwtjo ];
};
}).override rec {
patchPhase = ''
sed -i \
-e 's,BDB_CPPFLAGS=$,BDB_CPPFLAGS="-I${db}/include",g' \
-e 's,BDB_LIBS=$,BDB_LIBS="-L${db}/lib",g' \
-e 's,bdbdirlist=$,bdbdirlist="${db}/include",g' \
src/m4/dogecoin_find_bdb51.m4
'';
dogeConfigure = ''
./autogen.sh \
&& ./configure --prefix=$out \
--with-incompatible-bdb \
--with-boost-libdir=${boost}/lib \
'';
dogeInstall = ''
install -D "src/dogecoin-cli" "$out/bin/dogecoin-cli"
install -D "src/dogecoind" "$out/bin/dogecoind"
'';
configurePhase = dogeConfigure + "--with-gui";
installPhase = dogeInstall + "install -D src/qt/dogecoin-qt $out/bin/dogecoin-qt";
};
dogecoind = dogecoin.override rec {
gui = false;
makefile = "Makefile";
preBuild = "";
configurePhase = dogecoin.dogeConfigure + "--without-gui";
installPhase = dogecoin.dogeInstall;
};
}

View File

@ -0,0 +1,71 @@
{ fetchurl, stdenv, pkgconfig
, openssl, boost, zlib, miniupnpc, qt4, qrencode, glib, protobuf
, utillinux, autogen, autoconf, autobuild, automake, db }:
with stdenv.lib;
let
mkAutotoolCoin =
{ name, version, withGui, src, meta }:
stdenv.mkDerivation {
inherit src meta;
name = name + (toString (optional (!withGui) "d")) + "-" + version;
buildInputs = [ autogen autoconf automake pkgconfig openssl
boost zlib miniupnpc db utillinux protobuf ]
++ optionals withGui [ qt4 qrencode ];
patchPhase = ''
sed -i \
-e 's,BDB_CPPFLAGS=$,BDB_CPPFLAGS="-I${db}/include",g' \
-e 's,BDB_LIBS=$,BDB_LIBS="-L${db}/lib",g' \
-e 's,bdbdirlist=$,bdbdirlist="${db}/include",g' \
src/m4/dogecoin_find_bdb51.m4
'';
configurePhase = ''
./autogen.sh \
&& ./configure --prefix=$out \
--with-incompatible-bdb \
--with-boost-libdir=${boost}/lib \
${ if withGui then "--with-gui" else "" }
'';
installPhase = ''
install -D "src/dogecoin-cli" "$out/bin/dogecoin-cli"
install -D "src/dogecoind" "$out/bin/dogecoind"
${ if withGui then "install -D src/qt/dogecoin-qt $out/bin/dogecoin-qt" else "" }
'';
};
mkDogeCoin = { withGui }:
mkAutotoolCoin rec {
name = "dogecoin";
version = "1.8.0";
inherit withGui;
src = fetchurl {
url = "https://github.com/dogecoin/dogecoin/archive/v${version}.tar.gz";
sha256 = "8a33958c04213cd621aa3c86910477813af22512f03b47c98995d20d31f3f935";
};
meta = {
description = "Wow, such coin, much shiba, very rich";
longDescription = "wow";
homepage = http://www.dogecoin.com/;
license = licenses.mit;
maintainers = with maintainers; [ edwtjo offline ];
};
};
in {
dogecoin = mkDogeCoin { withGui = true; };
dogecoind = mkDogeCoin { withGui = false; };
}

View File

@ -0,0 +1,34 @@
{ stdenv, fetchurl, pkgconfig, autoconf, automake, gettext
, fluxbox, bc, gtkmm, glibmm, libglademm, libsigcxx
}:
stdenv.mkDerivation rec{
name = "fme-${version}";
version = "1.1.3";
src = fetchurl {
url = "https://github.com/rdehouss/fme/archive/v${version}.tar.gz";
sha256 = "d1c81a6a38c0faad02943ad65d6d0314bd205c6de841669a2efe43e4c503e63d";
};
buildInputs = [ pkgconfig autoconf automake gettext fluxbox bc gtkmm glibmm libglademm libsigcxx ];
preConfigure = ''
./autogen.sh
'';
meta = {
description = "Editor for Fluxbox menus";
longDescription = ''
Fluxbox Menu Editor is a menu editor for the Window Manager Fluxbox written in C++
with the libraries Gtkmm, Glibmm, libglademm and gettext for internationalization.
Its user-friendly interface will help you to edit, delete, move (Drag and Drop)
a row, a submenu, etc very easily.
'';
homepage = https://github.com/rdehouss/fme/;
license = stdenv.lib.licenses.gpl2;
maintainers = [ stdenv.lib.maintainers.AndersonTorres ];
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -1,5 +1,6 @@
{ stdenv, fetchurl, cmake, qt4, perl, shared_mime_info, libvorbis, taglib
, flac, libsamplerate, libdvdread, lame, libsndfile, libmad, gettext
, transcode, cdrdao, dvdplusrwtools, vcdimager
, kdelibs, kdemultimedia, automoc4, phonon, libkcddb ? null
}:
@ -20,6 +21,11 @@ stdenv.mkDerivation rec {
];
enableParallelBuilding = true;
# at runtime, k3b needs the executables cdrdao, cdrecord, dvd+rw-format,
# eMovix, growisofs, mkisofs, normalize, readcd, transcode, vcdxbuild,
# vcdxminfo, and vcdxrip
propagatedUserEnvPkgs = [ transcode dvdplusrwtools cdrdao vcdimager ];
meta = with stdenv.lib; {
description = "CD/DVD Burning Application for KDE";

View File

@ -1,10 +1,10 @@
{ stdenv, fetchurl, cmake, libgcrypt, qt4, xlibs, ... }:
stdenv.mkDerivation {
name = "keepassx2-2.0alpha5";
name = "keepassx2-2.0alpha6";
src = fetchurl {
url = "https://github.com/keepassx/keepassx/archive/2.0-alpha5.tar.gz";
sha256 = "1vxj306zhrr38mvsy3vpjlg6d0xwlcvsi3l69nhhwzkccsc4smfm";
url = "https://github.com/keepassx/keepassx/archive/2.0-alpha6.tar.gz";
sha256 = "592f9995b13c4f84724fb24a0078162246397eedccd467daaf0fd3608151f2b0";
};
buildInputs = [ cmake libgcrypt qt4 xlibs.libXtst ];

View File

@ -6,11 +6,11 @@ assert stdenv.isLinux -> cryptopp != null;
with stdenv.lib;
stdenv.mkDerivation rec {
name = "synergy-1.5.0";
name = "synergy-1.5.1";
src = fetchurl {
url = "http://synergy-project.org/files/packages/synergy-1.5.0-r2278-Source.tar.gz";
sha256 = "097hk9v01lwzs7ly6ynadxmjh7ad68l5si7w4qmjn6z7l8b61gv6";
url = "http://synergy-project.org/files/packages/${name}-r2398-Source.tar.gz";
sha256 = "19q8ck15f0jgpbzlm34dzp046wf3iiwa21s1qfyj5sj7xjxwa367";
};
patches = optional stdenv.isLinux ./cryptopp.patch;

View File

@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
'';
homepage = http://www.insilmaril.de/vym/;
license = stdenv.lib.licenses.gpl2;
maintainer = stdenv.lib.maintainers.AndersonTorres;
maintainer = [ stdenv.lib.maintainers.AndersonTorres ];
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -0,0 +1,57 @@
{stdenv, fetchurl, pkgconfig
, python
, intltool
, docbook2x, docbook_xml_dtd_412, libxslt
, sword, clucene_core
, gnome_doc_utils
, libgsf, gconf
, gtkhtml, libgtkhtml, libglade, scrollkeeper
, webkitgtk
, dbus_glib, enchant, isocodes, libuuid
}:
stdenv.mkDerivation rec {
name = "xiphos-${version}";
version = "3.2.1";
src = fetchurl {
url = "http://downloads.sourceforge.net/project/gnomesword/Xiphos/${version}/${name}.tar.gz";
sha256 = "0xff31f89as1p7fn3vq8ishjhbmx6qhc25msh5ypa0zg8hm5dxbb";
};
buildInputs = [ pkgconfig python intltool docbook2x docbook_xml_dtd_412 libxslt sword clucene_core gnome_doc_utils libgsf gconf gtkhtml libgtkhtml libglade scrollkeeper webkitgtk dbus_glib enchant isocodes libuuid ];
prePatch = ''
patchShebangs .;
'';
preConfigure = ''
export CLUCENE_HOME=${clucene_core};
export SWORD_HOME=${sword};
'';
configurePhase = ''
python waf configure --prefix=$out
'';
buildPhase = ''
python waf build
'';
installPhase = ''
python waf install
'';
meta = {
description = "A GTK Bible study tool";
longDescription = ''
Xiphos (formerly known as GnomeSword) is a Bible study tool written for Linux, UNIX,
and Windows using GTK, offering a rich and featureful environment for reading, study,
and research using modules from The SWORD Project and elsewhere.
'';
homepage = http://www.xiphos.org/;
license = stdenv.lib.licenses.gpl2Plus;
maintainers = [ stdenv.lib.maintainers.AndersonTorres ];
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -15,14 +15,14 @@
assert stdenv.gcc ? libc && stdenv.gcc.libc != null;
let version = "31.0"; in
let version = "32.0"; in
stdenv.mkDerivation rec {
name = "firefox-${version}";
src = fetchurl {
url = "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${version}/source/firefox-${version}.source.tar.bz2";
sha1 = "a6c3e25ee3aeb7da42db2aaeb50a385d63532beb";
sha1 = "5cb7644af9741ebcdb3a21b777362913908c8f41";
};
buildInputs =

View File

@ -13,6 +13,7 @@ let
[ mesa
xorg.libXt
xorg.libX11
xorg.libXrender
cairo
libpng
gtk
@ -47,20 +48,20 @@ stdenv.mkDerivation rec {
name = "google-talk-plugin-${version}";
# You can get the upstream version and SHA-1 hash from the following URLs:
# http://dl.google.com/linux/talkplugin/deb/dists/stable/main/binary-amd64/Packages
# http://dl.google.com/linux/talkplugin/deb/dists/stable/main/binary-i386/Packages
version = "5.1.5.0";
# curl -s http://dl.google.com/linux/talkplugin/deb/dists/stable/main/binary-amd64/Packages | grep -E 'Version|SHA1'
# curl -s http://dl.google.com/linux/talkplugin/deb/dists/stable/main/binary-i386/Packages | grep -E 'Version|SHA1'
version = "5.4.2.0";
src =
if stdenv.system == "x86_64-linux" then
fetchurl {
url = "${baseURL}/google-talkplugin_${version}-1_amd64.deb";
sha1 = "fc830f4c7f5816f4578ec73e6d4aef059ad4a0b1";
sha1 = "d75fad757750b4830c4e401ade92b4993e2a4ab2";
}
else if stdenv.system == "i686-linux" then
fetchurl {
url = "${baseURL}/google-talkplugin_${version}-1_i386.deb";
sha1 = "9b7043c3585b3479ba11aabb7b8af755a61df963";
sha1 = "410872377b0bdac06b580c5e1755a3a3c712144b";
}
else throw "Google Talk does not support your platform.";
@ -72,22 +73,18 @@ stdenv.mkDerivation rec {
''
plugins=$out/lib/mozilla/plugins
mkdir -p $plugins
cp opt/google/talkplugin/libnp*.so $plugins
cp opt/google/talkplugin/*.so $plugins
patchelf --set-rpath "${makeLibraryPath [ stdenv.gcc.gcc xorg.libX11 ]}:${stdenv.gcc.gcc}/lib64" \
$plugins/libnpgoogletalk.so
for i in libnpgoogletalk.so libppgoogletalk.so libppo1d.so; do
patchelf --set-rpath "${makeLibraryPath [ stdenv.gcc.gcc xorg.libX11 ]}:${stdenv.gcc.gcc}/lib64" $plugins/$i
done
patchelf --set-rpath "$out/libexec/google/talkplugin/lib:${rpathPlugin}:${stdenv.gcc.gcc}/lib64" \
$plugins/libnpgtpo3dautoplugin.so
for i in libgoogletalkremoting.so libnpo1d.so; do
patchelf --set-rpath "$out/libexec/google/talkplugin/lib:${rpathPlugin}:${stdenv.gcc.gcc}/lib64" $plugins/$i
done
mkdir -p $out/libexec/google/talkplugin
cp -prd opt/google/talkplugin/{GoogleTalkPlugin,locale,windowpicker.glade} $out/libexec/google/talkplugin/
mkdir -p $out/libexec/google/talkplugin/lib
cp opt/google/talkplugin/lib/libCg* $out/libexec/google/talkplugin/lib/
patchelf --set-rpath "$out/libexec/google/talkplugin/lib" \
$out/libexec/google/talkplugin/lib/libCgGL.so
cp -prd opt/google/talkplugin/{data,GoogleTalkPlugin,locale,remoting24x24.png,windowpicker.glade} $out/libexec/google/talkplugin/
patchelf \
--set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \

View File

@ -0,0 +1,58 @@
{ stdenv, coreutils, fetchurl, patchelf, gcc }:
let
arch = if stdenv.system == "x86_64-linux" then "x86_64"
else if stdenv.system == "i686-linux" then "x86"
else if stdenv.system == "armv6-linux" then "armv6h"
else throw "Copy.com client for: ${stdenv.system} not supported!";
interpreter = if stdenv.system == "x86_64-linux" then "ld-linux-x86-64.so.2"
else if stdenv.system == "i686-linux" then "ld-linux.so.2"
else if stdenv.system == "armv6-linux" then "ld-linux.so.2"
else throw "Copy.com client for: ${stdenv.system} not supported!";
appdir = "opt/copy";
in stdenv.mkDerivation {
name = "copy-com-1.4";
src = fetchurl {
# Note: copy.com doesn't version this file. Annoying.
url = "https://copy.com/install/linux/Copy.tgz";
sha256 = "f8da6dbfdaac71c4c4e9102671cf8fbe4ac5cb1dac63464783b8b62a7939b6fa";
};
buildInputs = [ coreutils patchelf ];
phases = "unpackPhase installPhase";
installPhase = ''
mkdir -p $out/opt
cp -r ${arch} "$out/${appdir}"
ensureDir "$out/bin"
ln -s "$out/${appdir}/CopyConsole" "$out/bin/copy_console"
ln -s "$out/${appdir}/CopyAgent" "$out/bin/copy_agent"
ln -s "$out/${appdir}/CopyCmd" "$out/bin/copy_cmd"
patchelf --set-interpreter ${stdenv.glibc}/lib/${interpreter} \
"$out/${appdir}/CopyConsole"
RPATH=${gcc.gcc}/lib:$out/${appdir}
echo "updating rpaths to: $RPATH"
find "$out/${appdir}" -type f -a -perm +0100 \
-print -exec patchelf --force-rpath --set-rpath "$RPATH" {} \;
'';
meta = {
homepage = http://copy.com;
description = "Copy.com Client";
# Closed Source unfortunately.
license = stdenv.lib.licenses.unfree;
maintainers = with stdenv.lib.maintainers; [ nathan-gs ];
# NOTE: Copy.com itself only works on linux, so this is ok.
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -1,5 +1,5 @@
{ stdenv, fetchurl, makeWrapper, go, lxc, sqlite, iproute, bridge_utils, devicemapper,
btrfsProgs, iptables, bash, e2fsprogs}:
btrfsProgs, iptables, bash, e2fsprogs, xz}:
stdenv.mkDerivation rec {
name = "docker-${version}";
@ -22,9 +22,9 @@ stdenv.mkDerivation rec {
'';
installPhase = ''
install -Dm755 ./bundles/${version}/dynbinary/docker-${version} $out/bin/docker
install -Dm755 ./bundles/${version}/dynbinary/dockerinit-${version} $out/bin/dockerinit
wrapProgram $out/bin/docker --prefix PATH : "${iproute}/sbin:sbin:${lxc}/bin:${iptables}/sbin:${e2fsprogs}/sbin"
install -Dm755 ./bundles/${version}/dynbinary/docker-${version} $out/libexec/docker/docker
install -Dm755 ./bundles/${version}/dynbinary/dockerinit-${version} $out/libexec/docker/dockerinit
makeWrapper $out/libexec/docker/docker $out/bin/docker --prefix PATH : "${iproute}/sbin:sbin:${lxc}/bin:${iptables}/sbin:${e2fsprogs}/sbin:${xz}/bin"
# systemd
install -Dm644 ./contrib/init/systemd/docker.service $out/etc/systemd/system/docker.service

View File

@ -1,5 +1,7 @@
{stdenv, git, cacert}:
{url, rev ? "HEAD", md5 ? "", sha256 ? "", leaveDotGit ? false, fetchSubmodules ? true}:
{url, rev ? "HEAD", md5 ? "", sha256 ? "", leaveDotGit ? false, fetchSubmodules ? true
, name ? "git-export"
}:
/* NOTE:
fetchgit has one problem: git fetch only works for refs.
@ -26,7 +28,7 @@
assert md5 != "" || sha256 != "";
stdenv.mkDerivation {
name = "git-export";
inherit name;
builder = ./builder.sh;
fetcher = ./nix-prefetch-git;
buildInputs = [git];

View File

@ -96,10 +96,7 @@ filterExisting() {
# Syntax: wrapProgram <PROGRAM> <MAKE-WRAPPER FLAGS...>
wrapProgram() {
local prog="$1"
local progBasename=$(basename $prog)
local hiddenDir="$(dirname $prog)/../wrapped-bin/.$progBasename-wrapped-bin"
mkdir -p $hiddenDir
local hidden="$(cd "$hiddenDir"; pwd)/$progBasename"
local hidden="$(dirname "$prog")/.$(basename "$prog")"-wrapped
mv $prog $hidden
makeWrapper $hidden $prog "$@"
}

View File

@ -0,0 +1,29 @@
{ stdenv, fetchurl }:
stdenv.mkDerivation rec {
name = "baekmuk-ttf-2.2";
src = fetchurl {
url = "http://kldp.net/frs/download.php/1429/${name}.tar.gz";
sha256 = "08ab7dffb55d5887cc942ce370f5e33b756a55fbb4eaf0b90f244070e8d51882";
};
dontBuild = true;
installPhase = let
fonts_dir = "$out/share/fonts";
doc_dir = "$out/share/doc/${name}";
in ''
mkdir -pv ${fonts_dir}
mkdir -pv ${doc_dir}
cp ttf/*.ttf ${fonts_dir}
cp COPYRIGHT* ${doc_dir}
'';
meta = {
description = "Korean font";
homepage = "http://kldp.net/projects/baekmuk/";
license = "BSD-like";
};
}

View File

@ -0,0 +1,40 @@
{ stdenv, fetchurl, mkfontdir, mkfontscale }:
# adapted from https://aur.archlinux.org/packages/proggyfonts/
stdenv.mkDerivation rec {
name = "proggyfonts-0.1";
src = fetchurl {
url = "http://kaictl.net/software/${name}.tar.gz";
sha256 = "1plcm1sjpa3hdqhhin48fq6zmz3ndm4md72916hd8ff0w6596q0n";
};
buildInputs = [ mkfontdir mkfontscale ];
installPhase =
''
mkdir -p $out/share/doc/$name $out/share/fonts/misc $out/share/fonts/truetype
cp Licence.txt $out/share/doc/$name/LICENSE
for f in *.pcf; do
gzip -c "$f" > $out/share/fonts/misc/"$f".gz
done
cp *.bdf $out/share/fonts/misc
cp *.ttf $out/share/fonts/truetype
for f in misc truetype; do
cd $out/share/fonts/$f
mkfontscale
mkfontdir
done
'';
meta = with stdenv.lib; {
homepage = http://upperbounds.net;
description = "A set of fixed-width screen fonts that are designed for code listings";
license = licenses.mit;
platforms = platforms.all;
};
}

View File

@ -1,7 +1,7 @@
{stdenv, fetchurl, unzip }:
stdenv.mkDerivation rec {
name = "symbola-7.12";
name = "symbola-7.17";
src = fetchurl {
url = "http://users.teilar.gr/~g1951d/Symbola.zip";

View File

@ -5,11 +5,11 @@
, libcanberra_gtk3, bogofilter, gst_all_1, procps, p11_kit }:
stdenv.mkDerivation rec {
name = "evolution-3.12.2";
name = "evolution-3.12.5";
src = fetchurl {
url = "mirror://gnome/sources/evolution/3.12/${name}.tar.xz";
sha256 = "60742334aaf1e3b9f044c2003c44a37be5905b166e24580e9e6e6c5ae1b9f948";
sha256 = "08y1qiydbbk4fq8rrql9sgbwsny8bwz6f7m5kbbj5zjqvf1baksj";
};
doCheck = true;

View File

@ -4,11 +4,11 @@
, gnome3, librsvg, gdk_pixbuf, file }:
stdenv.mkDerivation rec {
name = "gedit-3.12.1";
name = "gedit-3.12.2";
src = fetchurl {
url = "mirror://gnome/sources/gedit/3.12/${name}.tar.xz";
sha256 = "8e3edc62102934a8be708b0fdf27b86368fa9ede885628283bf8e91b26bbb67f";
sha256 = "0lxnswqa0ysr57cqh062wp41sd76p6q7y3mnkl7rligd5c8hnikm";
};
propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];

View File

@ -4,11 +4,11 @@
, makeWrapper, itstool, gnome3, librsvg, gst_all_1 }:
stdenv.mkDerivation rec {
name = "gnome-music-3.12.2";
name = "gnome-music-3.12.2.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-music/3.12/${name}.tar.xz";
sha256 = "ec4807018166aabed0263cb3ffce672e1fc1a3e959f48a5ad48b8eb08ddb451a";
sha256 = "1vwzjv5001pg37qc0sh4ph3srqwg3vgibbdlqpim9w2k70l9j34z";
};
propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];

View File

@ -11,11 +11,11 @@
# TODO: enable more features
stdenv.mkDerivation rec {
name = "empathy-3.12.2";
name = "empathy-3.12.5";
src = fetchurl {
url = "mirror://gnome/sources/empathy/3.12/${name}.tar.xz";
sha256 = "414d0c6b1a30b1afbf35ad04b0b9ff3ada3e06fab797a50a7147cdfe0905e7cd";
sha256 = "0rhgpiv75aafmdh6r7d4ci59lnxqmmwg9hvsa5b3mk7j2d2pma86";
};
propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard

View File

@ -4,11 +4,11 @@
stdenv.mkDerivation rec {
name = "evolution-data-server-3.12.2";
name = "evolution-data-server-3.12.5";
src = fetchurl {
url = "mirror://gnome/sources/evolution-data-server/3.12/${name}.tar.xz";
sha256 = "91c95e17a8c1cd1086dafcd99a40bdf8f5993770f251f8b0a10e5395e3f5a3b6";
sha256 = "d3a2f832f823cb2a41467926dcaec984a15b2cb51ef89cf41267e337ca750811";
};
buildInputs = with gnome3;
@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; {
platforms = platforms.linux;
maintainers = [ maintainers.lethalman ];
};
}

View File

@ -5,11 +5,11 @@
# TODO: enable more folks backends
stdenv.mkDerivation rec {
name = "folks-0.9.6";
name = "folks-0.9.8";
src = fetchurl {
url = "mirror://gnome/sources/folks/0.9/${name}.tar.xz";
sha256 = "a67e055b5a2724a34a80946e2940c4c0ad708cb1f4e0a09407c6b69a5e40267f";
sha256 = "09cbs3ihcswpi1wg8xbjmkqjbhnxa1idy1fbzmz0gah7l5mxmlfj";
};
propagatedBuildInputs = [ glib gnome3.libgee sqlite ];

View File

@ -3,11 +3,11 @@
, itstool, gnome3, librsvg, gdk_pixbuf }:
stdenv.mkDerivation rec {
name = "gnome-calculator-3.12.1";
name = "gnome-calculator-3.12.3";
src = fetchurl {
url = "mirror://gnome/sources/gnome-calculator/3.12/${name}.tar.xz";
sha256 = "15a75bbe19f6d2280d864f0504f6fc5b1f148fea9738b5548b64b7b8c0c64740";
sha256 = "0bn3agh3g22iradfpzkc19a2b33b1mbf0ciy1hf2sijrczi24410";
};
NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0";

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, pkgconfig, file, gnome3, itstool, libxml2, intltool }:
stdenv.mkDerivation rec {
name = "gnome-user-docs-3.12.1";
name = "gnome-user-docs-3.12.2";
src = fetchurl {
url = "mirror://gnome/sources/gnome-user-docs/3.12/${name}.tar.xz";
sha256 = "bfd084d72c688d6efb0c34bb572a704cc2ce093c97a33390eaffb5e42158d418";
sha256 = "1cj45lpa74vkbxyila3d6pn5m1gh51nljp9fjirxmzwi1h6wg7jd";
};
buildInputs = [ pkgconfig gnome3.yelp itstool libxml2 intltool ];

View File

@ -3,11 +3,11 @@
, gmime, json_glib, avahi, tracker, itstool }:
stdenv.mkDerivation rec {
name = "grilo-plugins-0.2.12";
name = "grilo-plugins-0.2.13";
src = fetchurl {
url = "mirror://gnome/sources/grilo-plugins/0.2/${name}.tar.xz";
sha256 = "15bed8a633c81b251920ab677d455433e641388f605277ca88e549cc89012b48";
sha256 = "008jwm5ydl0k25p3d2fkcail40fj9y3qknihxb5fg941p8qlhm55";
};
installFlags = [ "GRL_PLUGINS_DIR=$(out)/lib/grilo-0.2" ];

View File

@ -2,11 +2,11 @@
, libxml2, gnome3, gobjectIntrospection, libsoup }:
stdenv.mkDerivation rec {
name = "grilo-0.2.10";
name = "grilo-0.2.11";
src = fetchurl {
url = "mirror://gnome/sources/grilo/0.2/${name}.tar.xz";
sha256 = "559a2470fe541b0090bcfdfac7a33e92dba967727bbab6d0eca70e5636a77b25";
sha256 = "8a52c37521de80d6caf08a519a708489b9e2b097c2758a0acaab6fbd26d30ea6";
};
configureFlags = [ "--enable-grl-pls" "--enable-grl-net" ];

View File

@ -3,11 +3,11 @@
stdenv.mkDerivation rec {
name = "gtksourceview-${version}";
version = "3.12.2";
version = "3.12.3";
src = fetchurl {
url = "mirror://gnome/sources/gtksourceview/3.12/gtksourceview-${version}.tar.xz";
sha256 = "62a31eee00f633d7959efb7eec44049ebd0345d670265853dcd21c057f3f30ad";
sha256 = "1xzmw9n9zbkaasl8xi7s5h49wiv5dq4qf8hr2pzjkack3ai5j6gk";
};
buildInputs = [ pkgconfig atk cairo glib gtk3 pango

View File

@ -5,11 +5,11 @@
, gnome3, librsvg, gdk_pixbuf, file }:
stdenv.mkDerivation rec {
name = "totem-3.12.1";
name = "totem-3.12.2";
src = fetchurl {
url = "mirror://gnome/sources/totem/3.12/${name}.tar.xz";
sha256 = "dd168cdd4051d01131d47c24fa45bfd08b6ccf45900ac4b64bae47f6f47a35e3";
sha256 = "1law033wxbs8v3l2fk0p1v8lf9m45dm997yhq0cmqgw10jxxiybn";
};
doCheck = true;
@ -39,8 +39,6 @@ stdenv.mkDerivation rec {
rm $out/share/icons/hicolor/icon-theme.cache
'';
patches = [ ./fix_files_loss.patch ];
meta = with stdenv.lib; {
homepage = https://wiki.gnome.org/Apps/Videos;
description = "Movie player for the GNOME desktop based on GStreamer";

View File

@ -1,72 +0,0 @@
From 524c9e39a0ca6f2d1699e6e6d9ba3db1ea80d9f9 Mon Sep 17 00:00:00 2001
From: Bastien Nocera <hadess@hadess.net>
Date: Thu, 15 May 2014 19:28:35 +0200
Subject: main: Fix potential data loss when removing multiple files
We were using a list of GtkTreePaths and deleting the items one-by-one
when the user clicked the "Delete" button. But after the first deletion,
the tree model would have changed, and instead of pointing to the 2nd
item we wanted to delete, the GtkTreePath would have pointed to another
item, usually not one that we wanted to delete.
We now use GtkTreeRowReferences, which will always point to the same
row, as long as it exists.
https://bugzilla.gnome.org/show_bug.cgi?id=729778
diff --git a/src/totem-grilo.c b/src/totem-grilo.c
index 2133d77..0cff0d6 100644
--- a/src/totem-grilo.c
+++ b/src/totem-grilo.c
@@ -2074,7 +2074,8 @@ static void
delete_foreach (gpointer data,
gpointer user_data)
{
- GtkTreePath *path = data;
+ GtkTreeRowReference *ref = data;
+ GtkTreePath *path;
GtkTreeModel *view_model = user_data;
GtkTreeIter iter;
GrlSource *source;
@@ -2085,8 +2086,11 @@ delete_foreach (gpointer data,
GtkTreeModel *model;
GtkTreeIter real_model_iter;
- if (!gtk_tree_model_get_iter (view_model, &iter, path))
+ path = gtk_tree_row_reference_get_path (ref);
+ if (!path || !gtk_tree_model_get_iter (view_model, &iter, path)) {
+ g_warning ("An item that was scheduled for removal isn't available any more");
return;
+ }
gtk_tree_model_get (view_model, &iter,
MODEL_RESULTS_CONTENT, &media,
@@ -2151,14 +2155,23 @@ delete_cb (TotemSelectionToolbar *bar,
TotemGrilo *self)
{
GtkTreeModel *model;
- GList *list;
+ GList *list, *l;
g_signal_handlers_block_by_func (self->priv->browser, "view-selection-changed", self);
model = gd_main_view_get_model (GD_MAIN_VIEW (self->priv->browser));
list = gd_main_view_get_selection (GD_MAIN_VIEW (self->priv->browser));
+
+ /* GList of GtkTreePaths to a GList of GtkTreeRowReferences */
+ for (l = list; l != NULL; l = l->next) {
+ GtkTreeRowReference *ref;
+
+ ref = gtk_tree_row_reference_new (model, l->data);
+ gtk_tree_path_free (l->data);
+ l->data = ref;
+ }
g_list_foreach (list, delete_foreach, model);
- g_list_free_full (list, (GDestroyNotify) gtk_tree_path_free);
+ g_list_free_full (list, (GDestroyNotify) gtk_tree_row_reference_free);
g_signal_handlers_unblock_by_func (self->priv->browser, "view-selection-changed", self);
--
cgit v0.10.1

View File

@ -8,11 +8,11 @@
, libpng, libexif, libgsf, libuuid, bzip2 }:
stdenv.mkDerivation rec {
name = "tracker-1.0.1";
name = "tracker-1.0.3";
src = fetchurl {
url = "mirror://gnome/sources/tracker/1.0/${name}.tar.xz";
sha256 = "76e7918e62526a8209f9c9226f82abe592a6332826ac7c12e6e405063181e889";
sha256 = "11pqcldgh07mjn38dlbj6ry5qkfbpf79ln5sqx7q86hhqzh3712h";
};
propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];

View File

@ -3,14 +3,14 @@
stdenv.mkDerivation rec {
versionMajor = "0.36";
versionMinor = "2";
versionMinor = "3";
moduleName = "vte";
name = "${moduleName}-${versionMajor}.${versionMinor}";
src = fetchurl {
url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz";
sha256 = "f45eed3aed823068c7563345ea947be0e6ddb3dacd74646e6d7d26a921e04345";
sha256 = "54e5b07be3c0f7b158302f54ee79d4de1cb002f4259b6642b79b1e0e314a959c";
};
buildInputs = [ gobjectIntrospection intltool pkgconfig gnome3.glib gnome3.gtk3 ncurses ];

View File

@ -5,11 +5,11 @@
, gnome3, librsvg, gnome_doc_utils, webkitgtk }:
stdenv.mkDerivation rec {
name = "geary-0.6.0";
name = "geary-0.6.2";
src = fetchurl {
url = "mirror://gnome/sources/geary/0.6/${name}.tar.xz";
sha256 = "44ad1dc2c81c50006c751f8e72aa817f07002188da4c29e158060524a1962715";
sha256 = "0ap40mpj89sx82kcxlhl9gipq34ks2b70yhiv9s8zc5wg0nm7rpg";
};
propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];

View File

@ -82,8 +82,8 @@ let version = "4.8.3";
# Antlr (optional) allows the Java `gjdoc' tool to be built. We want a
# binary distribution here to allow the whole chain to be bootstrapped.
javaAntlr = fetchurl {
url = http://www.antlr.org/download/antlr-3.1.3.jar;
sha256 = "1f41j0y4kjydl71lqlvr73yagrs2jsg1fjymzjz66mjy7al5lh09";
url = http://www.antlr.org/download/antlr-4.4-complete.jar;
sha256 = "02lda2imivsvsis8rnzmbrbp8rh1kb8vmq4i67pqhkwz7lf8y6dz";
};
xlibs = [

View File

@ -46,7 +46,7 @@ stdenv.mkDerivation {
'';
license = licenses.epl10;
platforms = platforms.linux;
platforms = platforms.unix;
maintainers = [ maintainers.the-kenny ];
};
}

View File

@ -1,7 +1,7 @@
{ stdenv, fetchurl, gfortran, readline, ncurses, perl, flex, texinfo, qhull
, libX11, graphicsmagick, pcre, liblapack, pkgconfig, mesa, fltk
, fftw, fftwSinglePrec, zlib, curl, qrupdate
, qt ? null, ghostscript ? null, llvm ? null, hdf5 ? null,glpk ? null
, qt ? null, qscintilla ? null, ghostscript ? null, llvm ? null, hdf5 ? null,glpk ? null
, suitesparse ? null, gnuplot ? null, openjdk ? null, python ? null
}:
@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
graphicsmagick pcre liblapack pkgconfig mesa fltk zlib curl
fftw fftwSinglePrec qrupdate ]
++ (stdenv.lib.optional (qt != null) qt)
++ (stdenv.lib.optional (qscintilla != null) qscintilla)
++ (stdenv.lib.optional (ghostscript != null) ghostscript)
++ (stdenv.lib.optional (llvm != null) llvm)
++ (stdenv.lib.optional (hdf5 != null) hdf5)

View File

@ -1,11 +1,11 @@
{ fetchurl, stdenv, pkgconfig, clutter, gtk3, glib, cogl }:
stdenv.mkDerivation rec {
name = "clutter-gst-2.0.10";
name = "clutter-gst-2.0.12";
src = fetchurl {
url = "mirror://gnome/sources/clutter-gst/2.0/${name}.tar.xz";
sha256 = "f00cf492a6d4f1036c70d8a0ebd2f0f47586ea9a9b49b1ffda79c9dc7eadca00";
sha256 = "1dgzpd5l5ld622b8185c3khvvllm5hfvq4q1a1mgzhxhj8v4bwf2";
};
propagatedBuildInputs = [ clutter gtk3 glib cogl ];

View File

@ -8,8 +8,8 @@
cabal.mkDerivation (self: {
pname = "haste-compiler";
version = "0.4.1";
sha256 = "15v4c6rxz4n0wmiys6mam8xprcdq8kxnhpwcqnljshr8wlyihn8b";
version = "0.4.2";
sha256 = "0agbd21c7mgzxyg6lwjl3n8w2r7xcrv3811y0x86rg7q1m7z730m";
isLibrary = true;
isExecutable = true;
buildDepends = [

View File

@ -0,0 +1,17 @@
# This file was auto-generated by cabal2nix. Please do NOT edit manually!
{ cabal, dataDefault, haskellSrcExts, mtl, text }:
cabal.mkDerivation (self: {
pname = "hindent";
version = "2.1";
sha256 = "0gvrh26d1d6d1fy4qfpwrghdrlvk82mkya8vaz0xnrs89p9gr9rz";
isLibrary = true;
isExecutable = true;
buildDepends = [ dataDefault haskellSrcExts mtl text ];
meta = {
description = "Extensible Haskell pretty printer";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
};
})

View File

@ -7,9 +7,9 @@ stdenv.mkDerivation rec {
project = "json-glib";
major = "1";
minor = "0";
patchlevel = "0";
patchlevel = "2";
extension = "xz";
sha256 = "dbf558d2da989ab84a27e4e13daa51ceaa97eb959c2c2f80976c9322a8f4cdde";
sha256 = "887bd192da8f5edc53b490ec51bf3ffebd958a671f5963e4f3af32c22e35660a";
};
configureflags= "--with-introspection" ;

View File

@ -39,8 +39,8 @@ stdenv.mkDerivation rec {
[
qknight
];
platforms = with stdenv.lib.platforms;
linux;
platforms = stdenv.lib.platforms.linux;
hydraPlatforms = [];
license = stdenv.lib.licenses.bsd2;
homepage = https://google.github.io/liquidfun/;
};

View File

@ -1,13 +1,13 @@
{ stdenv, fetchurl }:
let version = "4.10.6"; in
let version = "4.10.7"; in
stdenv.mkDerivation {
name = "nspr-${version}";
src = fetchurl {
url = "http://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v${version}/src/nspr-${version}.tar.gz";
sha1 = "3hzcslcfql1rg7drvcn4nmrigy7jfgwz";
sha256 = "389af5cfa863ea9bc6de7b30c15f8a4f9bddd8002f8c6fdc8b33caef43893938";
};
preConfigure = "cd nspr";

View File

@ -11,11 +11,11 @@ let
in stdenv.mkDerivation rec {
name = "nss-${version}";
version = "3.16.3";
version = "3.16.4";
src = fetchurl {
url = "http://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_16_3_RTM/src/${name}.tar.gz";
sha256 = "657711ff7a4058043b69019a66f44101d0234eae2b6b80ab900439dbf02add60";
url = "http://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_16_4_RTM/src/${name}.tar.gz";
sha256 = "adcd1e655fd9508e7f13847452fd5887a835eff882e3f0d3c42dfcd651650b77";
};
buildInputs = [ nspr perl zlib sqlite ];

View File

@ -0,0 +1,47 @@
{ stdenv, fetchurl, qt }:
stdenv.mkDerivation rec {
pname = "qscintilla";
version = "2.8.3";
name = "${pname}-${version}";
src = fetchurl {
url = "mirror://sourceforge/pyqt/QScintilla2/QScintilla-2.8.3/${name}.tar.gz";
sha256 = "fb94e6d61c3ccd4bf167d5f092629e619f7069d42207469458998b761a7cf505";
};
buildInputs = [ qt ];
preConfigure = ''
cd Qt4Qt5
sed -i -e "s,\$\$\\[QT_INSTALL_LIBS\\],$out/libs," \
-e "s,\$\$\\[QT_INSTALL_HEADERS\\],$out/include/," \
-e "s,\$\$\\[QT_INSTALL_TRANSLATIONS\\],$out/share/qt/translations," \
-e "s,\$\$\\[QT_INSTALL_DATA\\],$out/share/qt," \
qscintilla.pro
qmake qscintilla.pro
'';
# TODO PyQt Support.
meta = {
description = "A Qt port of the Scintilla text editing library";
longDescription = ''
QScintilla is a port to Qt of Neil Hodgson's Scintilla C++ editor
control.
As well as features found in standard text editing components,
QScintilla includes features especially useful when editing and
debugging source code. These include support for syntax styling,
error indicators, code completion and call tips. The selection
margin can contain markers like those used in debuggers to
indicate breakpoints and the current line. Styling choices are
more open than with many editors, allowing the use of
proportional fonts, bold and italics, multiple foreground and
background colours and multiple fonts.
'';
homepage = http://www.riverbankcomputing.com/software/qscintilla/intro;
license = stdenv.lib.licenses.gpl2; # and gpl3 and commercial
};
}

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
version = "1.7.2";
version = "1.7.3";
name = "sword-${version}";
src = fetchurl {
url = "http://www.crosswire.org/ftpmirror/pub/sword/source/v1.7/${name}.tar.gz";
sha256 = "ac7aace0ecb7a405d4b4b211ee1ae5b2250bb5c57c9197179747c9e830787871";
sha256 = "1sm9ivypsx3mraqnziic7qkxjx1b7crvlln0zq6cnpjx2pzqfgas";
};
buildInputs = [ pkgconfig icu clucene_core curl ];

File diff suppressed because it is too large Load Diff

View File

@ -209,8 +209,8 @@ in
google_apis_19 = buildGoogleApis {
name = "google_apis-19";
src = fetchurl {
url = https://dl-ssl.google.com/android/repository/google_apis-19_r01.zip;
sha1 = "6c530a8318446e4da1e3ab7d2abd154bc493bc5a";
url = https://dl-ssl.google.com/android/repository/google_apis-19_r07.zip;
sha1 = "150f5a3fec4f03313ca770b90126605619bd713c";
};
meta = {
description = "Android + Google APIs";

View File

@ -1,5 +1,5 @@
{ stdenv, stdenv_32bit, fetchurl, unzip, makeWrapper
, platformTools, buildTools, support, platforms, sysimages, addons
, platformTools, buildTools, support, supportRepository, platforms, sysimages, addons
, zlib_32bit
, libX11_32bit, libxcb_32bit, libXau_32bit, libXdmcp_32bit, libXext_32bit, mesa_32bit, alsaLib_32bit
, libX11, libXext, libXrender, libxcb, libXau, libXdmcp, libXtst, mesa, alsaLib
@ -9,36 +9,35 @@
stdenv.mkDerivation rec {
name = "android-sdk-${version}";
version = "22.6.2";
version = "23.0.2";
src = if (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux")
then fetchurl {
url = "http://dl.google.com/android/android-sdk_r${version}-linux.tgz";
md5 = "ff1541418a44d894bedc5cef10622220";
md5 = "94a8c62086a7398cc0e73e1c8e65f71e";
}
else if stdenv.system == "x86_64-darwin" then fetchurl {
url = "http://dl.google.com/android/android-sdk_r${version}-macosx.zip";
md5 = "2a319c862dd1dcf450bfe2a6b3d9c608";
md5 = "322787b0e6c629d926c28690c79ac0d8";
}
else throw "platform not ${stdenv.system} supported!";
buildCommand = ''
mkdir -p $out/libexec
cd $out/libexec
unpackFile $src;
unpackFile $src
cd android-sdk-*/tools
${stdenv.lib.optionalString (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux")
''
# There are a number of native binaries. We must patch them to let them find the interpreter and libstdc++
for i in dmtracedump emulator emulator-arm emulator-mips emulator-x86 hprof-conv mksdcard sqlite3
for i in emulator emulator-arm emulator-mips emulator-x86 mksdcard
do
patchelf --set-interpreter ${stdenv_32bit.gcc.libc}/lib/ld-linux.so.2 $i
patchelf --set-rpath ${stdenv_32bit.gcc.gcc}/lib $i
done
${stdenv.lib.optionalString (stdenv.system == "x86_64-linux") ''
# We must also patch the 64-bit emulator instances, if needed
@ -49,17 +48,6 @@ stdenv.mkDerivation rec {
done
''}
# These tools also need zlib in addition to libstdc++
for i in etc1tool zipalign
do
patchelf --set-interpreter ${stdenv_32bit.gcc.libc}/lib/ld-linux.so.2 $i
patchelf --set-rpath ${stdenv_32bit.gcc.gcc}/lib:${zlib_32bit}/lib $i
done
# The android script has a hardcoded reference to /bin/ls that must be patched
sed -i -e "s|/bin/ls|ls|" android
# The android script used SWT and wants to dynamically load some GTK+ stuff.
# The following wrapper ensures that they can be found:
wrapProgram `pwd`/android \
@ -139,6 +127,15 @@ stdenv.mkDerivation rec {
cd ..
# Symlink required extras
mkdir -p extras/android
cd extras/android
ln -s ${supportRepository}/m2repository
cd ../..
# Symlink required platforms
mkdir -p platforms

View File

@ -1,15 +1,15 @@
{stdenv, stdenv_32bit, fetchurl, unzip, zlib_32bit}:
stdenv.mkDerivation {
name = "android-build-tools-r18.1.0";
name = "android-build-tools-r20";
src = if (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux")
then fetchurl {
url = https://dl-ssl.google.com/android/repository/build-tools_r18.1-linux.zip;
sha1 = "f314a0599e51397f0886fe888b50dd98f2f050d8";
url = https://dl-ssl.google.com/android/repository/build-tools_r20-linux.zip;
sha1 = "b688905526a5584d1327a662d871a635ff502758";
}
else if stdenv.system == "x86_64-darwin" then fetchurl {
url = https://dl-ssl.google.com/android/repository/build-tools_r18.1-macosx.zip;
sha1 = "16ddb299b8b43063e5bb3387ec17147c5053dfd8";
url = https://dl-ssl.google.com/android/repository/build-tools_r20-macosx.zip;
sha1 = "1240f629411c108a714c4ddd756937c7fab93f83";
}
else throw "System ${stdenv.system} not supported!";
@ -39,6 +39,13 @@ stdenv.mkDerivation {
do
patchelf --set-rpath ${stdenv_32bit.gcc.gcc}/lib:`pwd` $i
done
# These binaries also need zlib in addition to libstdc++
for i in zipalign
do
patchelf --set-interpreter ${stdenv_32bit.gcc.libc}/lib/ld-linux.so.2 $i
patchelf --set-rpath ${stdenv_32bit.gcc.gcc}/lib:${zlib_32bit}/lib $i
done
# These binaries need to find libstdc++, libgcc_s, and zlib
for i in aapt dexdump

View File

@ -16,6 +16,10 @@ rec {
inherit (pkgs) stdenv fetchurl unzip;
};
supportRepository = import ./support-repository.nix {
inherit (pkgs) stdenv fetchurl unzip;
};
platforms = if (pkgs.stdenv.system == "i686-linux" || pkgs.stdenv.system == "x86_64-linux")
then import ./platforms-linux.nix {
inherit (pkgs) stdenv fetchurl unzip;
@ -39,7 +43,7 @@ rec {
inherit (pkgs) freetype fontconfig glib gtk atk mesa file alsaLib jdk;
inherit (pkgs.xorg) libX11 libXext libXrender libxcb libXau libXdmcp libXtst;
inherit platformTools buildTools support platforms sysimages addons;
inherit platformTools buildTools support supportRepository platforms sysimages addons;
stdenv_32bit = pkgs_i686.stdenv;
zlib_32bit = pkgs_i686.zlib;
@ -63,8 +67,38 @@ rec {
abiVersions = [ "armeabi-v7a" ];
useGoogleAPIs = true;
};
androidsdk_2_3_3 = androidsdk {
platformVersions = [ "10" ];
abiVersions = [ "armeabi-v7a" ];
useGoogleAPIs = true;
};
androidsdk_3_0 = androidsdk {
platformVersions = [ "11" ];
abiVersions = [ "armeabi-v7a" ];
useGoogleAPIs = true;
};
androidsdk_3_1 = androidsdk {
platformVersions = [ "12" ];
abiVersions = [ "armeabi-v7a" ];
useGoogleAPIs = true;
};
androidsdk_3_2 = androidsdk {
platformVersions = [ "13" ];
abiVersions = [ "armeabi-v7a" ];
useGoogleAPIs = true;
};
androidsdk_4_0 = androidsdk {
platformVersions = [ "14" ];
abiVersions = [ "armeabi-v7a" ];
useGoogleAPIs = true;
};
androidsdk_4_0_3 = androidsdk {
platformVersions = [ "15" ];
abiVersions = [ "armeabi-v7a" ];
useGoogleAPIs = true;

View File

@ -5,10 +5,9 @@ android list sdk | grep 'Parse XML:' | cut -f8- -d\ # | xargs -n 1 curl -O
# we skip the intel addons, as they are Windows+osX only
# we skip the default sys-img (arm?) because it is empty
curl -o repository-8.xml https://dl-ssl.google.com/android/repository/repository-8.xml
curl -o repository-10.xml https://dl-ssl.google.com/android/repository/repository-10.xml
curl -o addon.xml https://dl-ssl.google.com/android/repository/addon.xml
curl -o sys-img-mips.xml https://dl-ssl.google.com/android/repository/sys-img/mips/sys-img.xml
curl -o sys-img-x86.xml https://dl-ssl.google.com/android/repository/sys-img/x86/sys-img.xml
curl -o sys-img.xml https://dl-ssl.google.com/android/repository/sys-img/android/sys-img.xml
./generate-addons.sh
./generate-platforms.sh

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:sdk="http://schemas.android.com/sdk/android/addon/5">
xmlns:sdk="http://schemas.android.com/sdk/android/addon/7">
<xsl:output omit-xml-declaration="yes" indent="no" />
<xsl:template match="/sdk:sdk-addon">
@ -23,8 +23,8 @@ in
google_apis_<xsl:value-of select="sdk:api-level" /> = buildGoogleApis {
name = "<xsl:value-of select="sdk:name-id" />-<xsl:value-of select="sdk:api-level" />";
src = fetchurl {
url = https://dl-ssl.google.com/android/repository/<xsl:value-of select="sdk:archives/sdk:archive[@os='any']/sdk:url" />;
sha1 = "<xsl:value-of select="sdk:archives/sdk:archive[@os='any']/sdk:checksum[@type='sha1']" />";
url = https://dl-ssl.google.com/android/repository/<xsl:value-of select="sdk:archives/sdk:archive/sdk:url" />;
sha1 = "<xsl:value-of select="sdk:archives/sdk:archive/sdk:checksum[@type='sha1']" />";
};
meta = {
description = "<xsl:value-of select="sdk:description" />";

View File

@ -1,4 +1,4 @@
#!/bin/sh -e
xsltproc --stringparam os linux generate-platforms.xsl repository-8.xml > platforms-linux.nix
xsltproc --stringparam os macosx generate-platforms.xsl repository-8.xml > platforms-macosx.nix
xsltproc --stringparam os linux generate-platforms.xsl repository-10.xml > platforms-linux.nix
xsltproc --stringparam os macosx generate-platforms.xsl repository-10.xml > platforms-macosx.nix

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:sdk="http://schemas.android.com/sdk/android/repository/8">
xmlns:sdk="http://schemas.android.com/sdk/android/repository/10">
<xsl:param name="os" />
<xsl:output omit-xml-declaration="yes" indent="no" />
@ -10,7 +10,7 @@
let
buildPlatform = args:
stdenv.mkDerivation (args // {
stdenv.mkDerivation (args // {
buildInputs = [ unzip ];
buildCommand = ''
mkdir -p $out
@ -20,12 +20,12 @@ let
});
in
{
<xsl:for-each select="sdk:platform">
<xsl:for-each select="sdk:platform[sdk:api-level &lt; 20]">
platform_<xsl:value-of select="sdk:api-level" /> = buildPlatform {
name = "android-platform-<xsl:value-of select="sdk:version" />";
src = fetchurl {
url = https://dl-ssl.google.com/android/repository/<xsl:value-of select="sdk:archives/sdk:archive[@os=$os or @os='any']/sdk:url" />;
sha1 = "<xsl:value-of select="sdk:archives/sdk:archive[@os=$os or @os='any']/sdk:checksum[@type='sha1']" />";
url = <xsl:value-of select="sdk:archives/sdk:archive[sdk:host-os=$os or count(sdk:host-os) = 0]/sdk:url" />;
sha1 = "<xsl:value-of select="sdk:archives/sdk:archive[sdk:host-os=$os or count(sdk:host-os) = 0]/sdk:checksum[@type='sha1']" />";
};
meta = {
description = "<xsl:value-of select="sdk:description" />";

View File

@ -1,21 +0,0 @@
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:str="http://exslt.org/strings"
xmlns:sdk="http://schemas.android.com/sdk/android/sys-img/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:param name="abi" />
<xsl:output omit-xml-declaration="yes" indent="no" />
<xsl:template match="/sdk:sdk-sys-img">
<xsl:for-each select="sdk:system-image">
sysimg_<xsl:value-of select="sdk:abi" />_<xsl:value-of select="sdk:api-level" /> = buildSystemImage {
name = "<xsl:value-of select="sdk:abi" />-<xsl:value-of select="sdk:api-level" />";
src = fetchurl {
url = https://dl-ssl.google.com/android/repository/sys-img/<xsl:value-of select="$abi" />/<xsl:value-of select="sdk:archives/sdk:archive[@os='any']/sdk:url" />;
sha1 = "<xsl:value-of select="sdk:archives/sdk:archive[@os='any']/sdk:checksum[@type='sha1']" />";
};
};
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

View File

@ -17,9 +17,7 @@ in
{
EOF
xsltproc generate-sysimages.xsl repository-8.xml >> sysimages.nix
xsltproc --stringparam abi x86 generate-sysimages-others.xsl sys-img-x86.xml >> sysimages.nix
xsltproc --stringparam abi mips generate-sysimages-others.xsl sys-img-mips.xml >> sysimages.nix
xsltproc generate-sysimages.xsl sys-img.xml >> sysimages.nix
cat >> sysimages.nix << "EOF"
}

View File

@ -2,17 +2,17 @@
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:str="http://exslt.org/strings"
xmlns:sdk="http://schemas.android.com/sdk/android/repository/8">
xmlns:sdk="http://schemas.android.com/sdk/android/sys-img/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:output omit-xml-declaration="yes" indent="no" />
<xsl:template match="/sdk:sdk-repository">
<xsl:template match="/sdk:sdk-sys-img">
<xsl:for-each select="sdk:system-image">
sysimg_<xsl:value-of select="sdk:abi" />_<xsl:value-of select="sdk:api-level" /> = buildSystemImage {
name = "<xsl:value-of select="sdk:abi" />-<xsl:value-of select="sdk:api-level" />";
name = "sysimg-<xsl:value-of select="sdk:abi" />-<xsl:value-of select="sdk:api-level" />";
src = fetchurl {
url = https://dl-ssl.google.com/android/repository/<xsl:value-of select="sdk:archives/sdk:archive[@os='any']/sdk:url" />;
sha1 = "<xsl:value-of select="sdk:archives/sdk:archive[@os='any']/sdk:checksum[@type='sha1']" />";
url = <xsl:if test="not(starts-with(sdk:archives/sdk:archive/sdk:url, 'https://'))">https://dl-ssl.google.com/android/repository/sys-img/android/</xsl:if><xsl:value-of select="sdk:archives/sdk:archive/sdk:url" />;
sha1 = "<xsl:value-of select="sdk:archives/sdk:archive/sdk:checksum[@type='sha1']" />";
};
};
</xsl:for-each>

View File

@ -3,7 +3,7 @@
let
buildPlatform = args:
stdenv.mkDerivation (args // {
stdenv.mkDerivation (args // {
buildInputs = [ unzip ];
buildCommand = ''
mkdir -p $out
@ -219,13 +219,13 @@ in
};
platform_19 = buildPlatform {
name = "android-platform-4.4";
name = "android-platform-4.4.2";
src = fetchurl {
url = https://dl-ssl.google.com/android/repository/android-19_r01.zip;
sha1 = "96281811998272dce46e8285d15fce444a3d5a96";
url = https://dl-ssl.google.com/android/repository/android-19_r03.zip;
sha1 = "5f33d8fd36a384fe2b170035e04a29c274a9ef95";
};
meta = {
description = "Android SDK Platform 4.4";
description = "Android SDK Platform 4.4.2";
};
};

View File

@ -3,7 +3,7 @@
let
buildPlatform = args:
stdenv.mkDerivation (args // {
stdenv.mkDerivation (args // {
buildInputs = [ unzip ];
buildCommand = ''
mkdir -p $out
@ -219,13 +219,13 @@ in
};
platform_19 = buildPlatform {
name = "android-platform-4.4";
name = "android-platform-4.4.2";
src = fetchurl {
url = https://dl-ssl.google.com/android/repository/android-19_r01.zip;
sha1 = "96281811998272dce46e8285d15fce444a3d5a96";
url = https://dl-ssl.google.com/android/repository/android-19_r03.zip;
sha1 = "5f33d8fd36a384fe2b170035e04a29c274a9ef95";
};
meta = {
description = "Android SDK Platform 4.4";
description = "Android SDK Platform 4.4.2";
};
};

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,17 @@
{stdenv, fetchurl, unzip}:
stdenv.mkDerivation {
name = "android-support-repository-r5";
src = fetchurl {
url = http://dl-ssl.google.com/android/repository/android_m2repository_r05.zip;
sha1 = "2ee9723da079ba0d4fe2a185e00ded842de96f13";
};
buildCommand = ''
mkdir -p $out
cd $out
unzip $src
'';
buildInputs = [ unzip ];
}

View File

@ -1,132 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
-->
<sdk:sdk-sys-img xmlns:sdk="http://schemas.android.com/sdk/android/sys-img/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<sdk:license id="mips-android-sysimage-license" type="text">
<![CDATA[
MIPS Technologies, Inc. (“MIPS”) Internal Evaluation License Agreement for MIPS Android™ System Images for Android Software Development Kit (SDK):
This Internal Evaluation License Agreement (this "Agreement") is entered into by and between MIPS and you (as an individual developer or a legal entity -- identified below as “Recipient”). MIPS shall make the Evaluation Software available to Recipient as described in accordance with the terms and conditions set forth below.
By clicking on the “Accept” button, downloading, installing, or otherwise using the Evaluation Materials (defined below), you agree to be bound by the terms of this Agreement effective as of the date you click “Accept” (the “Effective Date”), and if doing so on behalf of an entity, you represent that you are authorized to bind the entity to the terms and conditions of this Agreement. If you do not agree to be bound by the terms and conditions of this Agreement, do not download, install, or use the Evaluation Materials.
1. DEFINITIONS. These terms shall have the following meanings:
1.1 “MIPS” shall mean MIPS Technologies, Inc., a Delaware corporation having a principal place of business at: 955 East Arques Ave., Sunnyvale, CA 94085
1.2 “Evaluation Software” shall mean MIPS Android™ emulator system images for Android Software Development Kit (SDK), as made available to Recipient.
1.3 “Evaluation Materials" means, collectively, the Evaluation Software (in source and/or object code form) and documentation (including, without limitation, any design documents, specifications, reference manuals, and other related materials) related to the Evaluation Software as made available to Recipient.
1.4 “Open Source Software” means any software that requires (as a condition of use, modification and/or distribution of such software) that such software or other software incorporated into, derived from or distributed with such software (a) be disclosed or distributed in source code form; or (b) be licensed by the user to third parties for the purpose of making and/or distributing derivative works; or (c) be redistributable at no charge. Open Source Software includes, without limitation, software licensed or distributed under any of the following licenses or distribution models, or licenses or distribution models substantially similar to any of the following: (a) GNUs General Public License (GPL) or Lesser/Library GPL (LGPL), (b) the Artistic License (e.g., PERL), (c) the Mozilla Public License, (d) the Netscape Public License, (e) the Sun Community Source License (SCSL), (f) the Sun Industry Source License (SISL), (g) the Apache Software license and (h) the Common Public License (CPL).
1.5 “Pre-Release Materials” means “alpha” or “beta” designated pre-release features, which may not be fully functional, which MIPS may substantially modify in producing any production version of the Evaluation Materials, and/or which is still under development by MIPS and/or MIPS suppliers.
2. PURPOSE. MIPS desires to make the Evaluation Materials available to Recipient solely for Recipient's internal evaluation of the Evaluation Software to evaluate the desirability of cooperating with MIPS in developing products that are compatible with the Evaluation Software and/or to advise MIPS as to possible modifications to the Evaluation Software. Recipient may not disclose, distribute, modify (except to facilitate the above-mentioned internal evaluation), or make commercial use of the Evaluation Materials or any modifications of the Evaluation Materials.
THE EVALUATION MATERIALS ARE PROVIDED FOR EVALUATION PURPOSES ONLY AND MAY NOT BE MODIFIED (EXCEPT TO FACILITATE THE INTERNAL EVALUATION) OR DISTRIBUTED BY RECIPIENT OR INCORPORATED INTO RECIPIENTS PRODUCTS OR SOFTWARE. PLEASE CONTACT A MIPS SALES REPRESENTATIVE TO LEARN ABOUT THE AVAILABILITY AND COST OF A COMMERCIAL VERSION OF THE EVALUATION SOFTWARE.
3. TITLE. Title to the Evaluation Materials remains with MIPS or its suppliers. Recipient shall not mortgage, pledge or encumber the Evaluation Materials in any way. Recipient shall return all Evaluation Materials, keeping no copies, upon termination or expiration of this Agreement.
4. LICENSE. MIPS grants Recipient a royalty-free, personal, nontransferable, nonexclusive license under its copyrights to use the Evaluation Software only for the purposes described in paragraph 2 above and only for a period beginning on the Effective Date and extending to the first anniversary of the Effective Date (the “Evaluation Period”). Unless otherwise communicated in writing by MIPS to Recipient, to the extent the Evaluation Software is provided in more than one delivery or release (each, a “Release”) the license grant in this Section 4 and the Evaluation Period shall apply to each Release, in which case the Evaluation Period shall begin on the date that the Release is made generally available and continue to the first anniversary of such date. Recipient may not make modifications to the Evaluation Software. Recipient shall not disassemble, reverse-engineer, or decompile any software that is not provided to Recipient in source code form.
EXCEPT AS PROVIDED HEREIN, NO OTHER LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY OTHER MIPS INTELLECTUAL PROPERTY RIGHTS IS GRANTED TO THE RECIPIENT. OTHER THAN AS EXPLICITLY SET FORTH IN PARAGRAPH 2 ABOVE, NO RIGHT TO COPY, TO REPRODUCE, TO MODIFY, OR TO CREATE DERIVATIVE WORKS OF, THE EVALUATION MATERIALS IS GRANTED HEREIN.
5. NO OBLIGATION. Recipient shall have no duty to purchase or license any product from MIPS. MIPS and its suppliers shall have no obligation to provide support for, or develop a non-evaluation version of, the Evaluation Software or to license any version of it.
6. MODIFICATIONS. This Agreement does not obligate Recipient to provide MIPS with comments or suggestions regarding Evaluation Materials. However, should Recipient provide MIPS with comments or suggestions for the modification, correction, improvement or enhancement of (a) the Evaluation Materials or (b) MIPS products or processes which may embody the Evaluation Materials, then Recipient agrees to grant and hereby grants to MIPS a non-exclusive, irrevocable, worldwide, fully paid-up, royalty-free license, with the right to sublicense MIPS licensees and customers, under Recipients Intellectual property rights, to use and disclose such comments and suggestions in any manner MIPS chooses and to display, perform, copy, make, have made, use, sell, offer to sell, import, and otherwise dispose of MIPS and its sublicensees products embodying such comments and suggestions in any manner and via any media MIPS chooses, without reference to the source.
7. WARRANTY DISCLAIMER. MIPS AND ITS SUPPLIERS MAKE NO WARRANTIES WITH RESPECT TO EVALUATION MATERIALS, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, OR ANY IMPLIED WARRANTY OF NONINFRINGEMENT WITH RESPECT TO THIRD PARTY INTELLECTUAL PROPERTY. RECIPIENT ACKNOWLEDGES AND AGREES THAT THE EVALUATION MATERIALS ARE PROVIDED “AS IS,” WITHOUT WARRANTY OF ANY KIND.
8. LIMITATION OF LIABILITY. MIPS AND ITS SUPPLIERS SHALL NOT BE LIABLE FOR ANY PROPERTY DAMAGE, PERSONAL INJURY, LOSS OF PROFITS, INTERRUPTION OF BUSINESS OR FOR ANY DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL OR INCIDENTAL DAMAGES, HOWEVER CAUSED OR ALLEGED, WHETHER FOR BREACH OF WARRANTY, CONTRACT, STRICT LIABILITY OR OTHERWISE, INCLUDING WITHOUT LIMITATION, UNDER TORT OR OTHER LEGAL THEORY. MIPS AND ITS SUPPLIERS DISCLAIM ANY AND ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS OF ANY KIND RELATING TO THE EVALUATION MATERIALS.
9. EXPIRATION. MIPS may terminate this Agreement immediately after a breach by Recipient or otherwise at MIPS reasonable discretion and upon five (5) business days notice to Recipient.
10. GENERAL.
10.1 Controlling Law. This Agreement shall be governed by California law excluding its choice of law rules. With the exception of MIPS rights to enforce its intellectual property rights and any confidentiality obligations under this Agreement or any licenses distributed with the Evaluation Materials, all disputes and any claims arising under or relating to this Agreement shall be subject to the exclusive jurisdiction and venue of the state and federal courts located in Santa Clara County, California. Each party hereby agrees to jurisdiction and venue in the courts set forth in the preceding sentence. The parties agree that the United Nations Convention on Contracts for the International Sale of Goods is specifically excluded from application to this Agreement. The parties consent to the personal jurisdiction of the above courts.
10.2 Remedies. Recipient acknowledges and agrees that any breach of confidentiality obligations under this Agreement or any licenses distributed with the Evaluation Materials, as well as any disclosure, commercialization, or public use of the Evaluation Materials, would cause irreparable injury to MIPS, and therefore Recipient agrees to consent to, and hereby consents to, the grant of an injunction by any court of competent jurisdiction in the event of an actual or threatened breach.
10.3 Assignment. Recipient may not delegate, assign or transfer this Agreement, the license granted or any of Recipients rights, obligations, or duties hereunder, expressly, by implication, by operation of law, by way of merger (regardless of whether Recipient is the surviving entity) or acquisition, or otherwise and any attempt to do so, without MIPS express prior written consent, shall be ineffective, null and void. MIPS may freely assign this Agreement, and its rights and obligations hereunder, in its sole discretion.
10.4 Entire Agreement. This Agreement constitutes the entire agreement between Recipient and MIPS and supersedes in their entirety any and all oral or written agreements previously existing between Recipient and MIPS with respect to the subject matter hereof. This Agreement may only be amended or supplemented by a writing that refers explicitly to this Agreement and that is signed or otherwise accepted by duly authorized representatives of Recipient and MIPS.
10.5 Severability. In the event that any provision of this Agreement is finally adjudicated to be unenforceable or invalid under any applicable law, such unenforceability or invalidity shall not render this Agreement unenforceable or invalid as a whole, and, in such event, such unenforceable or invalid provision shall be interpreted so as to best accomplish the objectives of such provision within the limits of applicable law or applicable court decisions.
10.6 Export Regulations / Export Control. Recipient shall not export, either directly or indirectly, any product, service or technical data or system incorporating the Evaluation Materials without first obtaining any required license or other necessary approval from the U.S. Department of Commerce or any other governing agency or department of the United States Government. In the event any product is exported from the United States or re-exported from a foreign destination by Recipient, Recipient shall ensure that the distribution and export/re-export or import of the product is in compliance with all applicable laws, regulations, orders, or other restrictions of the U.S. Export Administration Regulations and the appropriate foreign government. Recipient agrees that neither it nor any of its subsidiaries will export/re-export any technical data, process, product, or service, directly or indirectly, to any country for which the United States government or any agency thereof or the foreign government from where it is shipping requires an export license, or other governmental approval, without first obtaining such license or approval. Recipient also agrees to implement measures to ensure that foreign national employees are authorized to receive any information controlled by U.S. export control laws. An export is "deemed" to take place when information is released to a foreign national wherever located.
10.7 Special Terms for Pre-Release Materials. If so indicated in the description of the Evaluation Software, the Evaluation Software may contain Pre-Release Materials. Recipient hereby understands, acknowledges and agrees that: (i) Pre-Release Materials may not be fully tested and may contain bugs or errors; (ii) Pre-Release materials are not suitable for commercial release in their current state; (iii) regulatory approvals for Pre-Release Materials (such as UL or FCC) have not been obtained, and Pre-Release Materials may therefore not be certified for use in certain countries or environments or may not be suitable for certain applications and (iv) MIPS can provide no assurance that it will ever produce or make generally available a production version of the Pre-Release Materials . MIPS is not under any obligation to develop and/or release or offer for sale or license a final product based upon the Pre-Release Materials and may unilaterally elect to abandon the Pre-Release Materials or any such development platform at any time and without any obligation or liability whatsoever to Recipient or any other person.
ANY PRE-RELEASE MATERIALS ARE NON-QUALIFIED AND, AS SUCH, ARE PROVIDED “AS IS” AND “AS AVAILABLE”, POSSIBLY WITH FAULTS, AND WITHOUT REPRESENTATION OR WARRANTY OF ANY KIND.
10.8 Open Source Software. In the event Open Source software is included with Evaluation Software, such Open Source software is licensed pursuant to the applicable Open Source software license agreement identified in the Open Source software comments in the applicable source code file(s) and/or file header as indicated in the Evaluation Software. Additional detail may be available (where applicable) in the accompanying on-line documentation. With respect to the Open Source software, nothing in this Agreement limits any rights under, or grants rights that supersede, the terms of any applicable Open Source software license agreement.
]]>
</sdk:license>
<sdk:system-image>
<sdk:revision>1</sdk:revision>
<sdk:description>Android 4.0.4</sdk:description>
<sdk:api-level>15</sdk:api-level>
<sdk:abi>mips</sdk:abi>
<sdk:uses-license ref="mips-android-sysimage-license"/>
<sdk:archives>
<sdk:archive os="any">
<sdk:size>117503178</sdk:size>
<sdk:checksum type="sha1">a753bb4a6783124dad726c500ce9aec9d2c1b2d9</sdk:checksum>
<sdk:url>sysimg_mips-15_r01.zip</sdk:url>
</sdk:archive>
</sdk:archives>
</sdk:system-image>
<sdk:system-image>
<sdk:revision>4</sdk:revision>
<!-- mipsia repo tag qa-dev-mips-jb-20130123,
github.com/MIPS branch dev-mips-jb, tag mips-jb-4.1.2_r1m1
repo init -u git://github.com/MIPS/manifests.git
-b dev-mips-jb -m mips-jb-4.1.2_r1m1.xml -->
<sdk:description>Android 4.1.2</sdk:description>
<sdk:api-level>16</sdk:api-level>
<sdk:abi>mips</sdk:abi>
<sdk:uses-license ref="mips-android-sysimage-license"/>
<sdk:archives>
<sdk:archive os="any">
<sdk:size>122482530</sdk:size>
<sdk:checksum type="sha1">67943c54fb3943943ffeb05fdd39c0b753681f6e</sdk:checksum>
<sdk:url>sysimg_mips-16_r04.zip</sdk:url>
</sdk:archive>
</sdk:archives>
</sdk:system-image>
<sdk:system-image>
<sdk:revision>1</sdk:revision>
<!-- mipsia repo tag qa-dev-mips-jb-mr1-20121219,
github.com/MIPS tag mips-jb-4.2.1_r1 -->
<sdk:description>Android 4.2.1</sdk:description>
<sdk:api-level>17</sdk:api-level>
<sdk:abi>mips</sdk:abi>
<sdk:uses-license ref="mips-android-sysimage-license"/>
<sdk:archives>
<sdk:archive os="any">
<sdk:size>131781761</sdk:size>
<sdk:checksum type="sha1">f0c6e153bd584c29e51b5c9723cfbf30f996a05d</sdk:checksum>
<sdk:url>sysimg_mips-17_r01.zip</sdk:url>
</sdk:archive>
</sdk:archives>
</sdk:system-image>
</sdk:sdk-sys-img>

View File

@ -1,154 +0,0 @@
<!--
* Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License.
-->
<sdk:sdk-sys-img xmlns:sdk="http://schemas.android.com/sdk/android/sys-img/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<sdk:license id="intel-android-sysimage-license" type="text">
<![CDATA[
Intel Corporation Internal Evaluation License Agreement for x86 Android* System Images for Android Software Development Kit (SDK)
This Internal Evaluation License Agreement (this "Agreement") is entered into by and between Intel and you (as an individual developer or a legal entity -- identified below as Recipient). Intel shall provide the Evaluation Software to Recipient as described in accordance with the Internal Evaluation License Terms and Conditions.
Definitions.
These terms shall have the following meanings:
"Intel" or "INTEL"
Intel Corporation
With an Address of:
2200 Mission College Blvd.
Santa Clara, CA 95052
Office of the General Counsel
Mail Stop: RNB-4-51
Attn: Software and Services Group Legal
"Evaluation Software"
The x86 Android* emulator system images for Android Software Development Kit (SDK), as provided by Intel.
INTERNAL EVALUATION LICENSE TERMS AND CONDITIONS
1. DEFINITIONS.
1.1 Additional Defined Terms. "Agreement", "Evaluation Software", "Intel", "Non-disclosure Agreement", "Recipient", and "Effective Date" shall have the meanings ascribed to them on the signature page(s) of this Agreement.
1.2 Evaluation Materials means, collectively, the Evaluation Software (in source and/or object code form) and documentation (including, without limitation, any design documents, specifications and other related materials) related to the Evaluation Software.
1.3 "Open Source Software" means any software that requires as a condition of use, modification and/or distribution of such software that such software or other software incorporated into, derived from or distributed with such software (a) be disclosed or distributed in source code form; or (b) be licensed by the user to third parties for the purpose of making and/or distributing derivative works; or (c) be redistributable at no charge. Open Source Software includes, without limitation, software licensed or distributed under any of the following licenses or distribution models, or licenses or distribution models substantially similar to any of the following: (a) GNU’s General Public License (GPL) or Lesser/Library GPL (LGPL), (b) the Artistic License (e.g., PERL), (c) the Mozilla Public License, (d) the Netscape Public License, (e) the Sun Community Source License (SCSL), (f) the Sun Industry Source License (SISL), (g) the Apache Software license and (h) the Common Public License (CPL).
1.4 "Pre-Release Materials" means "alpha" or "beta" designated pre-release features, which may not be fully functional, which Intel may substantially modify in producing any production version of the Evaluation Materials and/or is still under development by Intel and/or Intel’s suppliers.
2. PURPOSE. Intel desires to provide the Evaluation Materials to Recipient solely for Recipient's internal evaluation of the Evaluation Software and other Intel products, to evaluate the desirability of cooperating with Intel in developing products based on the Evaluation Software and/or to advise Intel as to possible modifications to the Evaluation Software. Recipient may not disclose, distribute or make commercial use of the Evaluation Materials or any modifications to the Evaluation Materials.
THE EVALUATION MATERIALS ARE PROVIDED FOR EVALUATION PURPOSES ONLY AND MAY NOT BE DISTRIBUTED BY RECIPIENT OR INCORPORATED INTO RECIPIENT’S PRODUCTS OR SOFTWARE. PLEASE CONTACT AN INTEL SALES REPRESENTATIVE TO LEARN ABOUT THE AVAILABILITY AND COST OF A COMMERICAL VERSION OF THE EVALUATION SOFTWARE.
3. TITLE. Title to the Evaluation Materials remains with Intel or its suppliers. Recipient shall not mortgage, pledge or encumber the Evaluation Materials in any way. Recipient shall return all Evaluation Materials, keeping no copies, upon termination or expiration of this Agreement.
4. LICENSE. Intel grants Recipient a royalty-free, personal, nontransferable, nonexclusive license under its copyrights to use the Evaluation Software only for the purposes described in paragraph 2 above. Unless otherwise communicated in writing by Intel to Recipient, to the extent the Evaluation Software is provided in more than one delivery or release (each, a "Release") the license grant in this Section 4 and the Evaluation Period shall apply to each Release. Recipient may not make modifications to the Evaluation Software. Recipient shall not disassemble, reverse-engineer, or decompile any software not provided to Recipient in source code form.
EXCEPT AS PROVIDED HEREIN, NO OTHER LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY OTHER INTELLECTUAL PROPERTY RIGHTS IS GRANTED TO THE RECIPIENT.
5. NO OBLIGATION. Recipient shall have no duty to purchase or license any product from Intel. Intel and its suppliers shall have no obligation to provide support for, or develop a non-evaluation version of, the Evaluation Software or to license any version of it.
6. MODIFICATIONS. This Agreement does NOT obligate Recipient to provide Intel with comments or suggestions regarding Evaluation Materials. However, should Recipient provide Intel with comments or suggestions for the modification, correction, improvement or enhancement of (a) the Evaluation Materials or (b) Intel products or processes which may embody the Evaluation Materials, Recipient grants to Intel a non-exclusive, irrevocable, worldwide, royalty-free license, with the right to sublicense Intel’s licensees and customers, under Recipient intellectual property rights, the rights to use and disclose such comments and suggestions in any manner Intel chooses and to display, perform, copy, make, have made, use, sell, offer to sell, import, and otherwise dispose of Intel’s and its sublicensee’s products embodying such comments and suggestions in any manner and via any media Intel chooses, without reference to the source.
7. WARRANTY DISCLAIMER. INTEL AND ITS SUPPLIERS MAKE NO WARRANTIES WITH RESPECT TO EVALUATION MATERIALS, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, OR ANY IMPLIED WARRANTY OF NONINFRINGEMENT. THE EVALUATION MATERIALS ARE PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND.
8. LIMITATION OF LIABILITY. INTEL AND ITS SUPPLIERS SHALL NOT BE LIABLE FOR ANY PROPERTY DAMAGE, PERSONAL INJURY, LOSS OF PROFITS, INTERRUPTION OF BUSINESS OR ANY SPECIAL, CONSEQUENTIAL OR INCIDENTAL DAMAGES, HOWEVER CAUSED, WHETHER FOR BREACH OF WARRANTY, CONTRACT, STRICT LIABILITY OR OTHERWISE. INTEL AND ITS SUPPLIERS DISCLAIM ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS RELATING TO THE EVALUATION MATERIALS.
9. EXPIRATION. Intel may terminate this Agreement immediately after a breach by Recipient.
10. GENERAL.
10.1 Controlling Law. Any claims arising under or relating to this Agreement shall be governed by the internal substantive laws of the State of Delaware or federal courts located in Delaware, without regard to principles of conflict of laws. Each party hereby agrees to jurisdiction and venue in the courts of the State of Delaware for all disputes and litigation arising under or relating to this Agreement. The parties agree that the United Nations Convention on Contracts for the International Sale of Goods is specifically excluded from application to this Agreement. The parties consent to the personal jurisdiction of the above courts.
10.2 Remedies. Recipient acknowledges that any disclosure, commercialization, or public use of the Evaluation Materials would cause irreparable injury to Intel and consents to the grant of an injunction by any court of competent jurisdiction in the event of a threatened breach.
10.3 Assignment. Recipient may not delegate, assign or transfer this Agreement, the license granted or any of Recipient’s rights or duties hereunder, expressly, by implication, by operation of law, by way of merger (regardless of whether Recipient is the surviving entity) or acquisition, or otherwise and any attempt to do so, without Intel’s express prior written consent, shall be null and void. Intel may assign this Agreement, and its rights and obligations hereunder, in its sole discretion.
10.4 Entire Agreement. This Agreement constitutes the entire agreement between Recipient and Intel and supersedes in their entirety any and all oral or written agreements previously existing between Recipient and Intel with respect to the subject matter hereof. This Agreement supersedes any and all "click-to-accept" or shrink-wrapped licenses, in hard-copy or electronic form, embedded in or included with the Evaluation Materials. This Agreement may only be amended or supplemented by a writing that refers explicitly to this Agreement and that is signed by duly authorized representatives of Recipient and Intel. Without limiting the foregoing, terms and conditions on any purchase orders or similar materials submitted by Recipient to Intel, and any terms contained in Intel’s standard acknowledgment form that are in conflict with these terms, shall be of no force or effect.
10.5 Severability. In the event that any provision of this Agreement shall be unenforceable or invalid under any applicable law or be so held by applicable court decision, such unenforceability or invalidity shall not render this Agreement unenforceable or invalid as a whole, and, in such event, such provision shall be changed and interpreted so as to best accomplish the objectives of such unenforceable or invalid provision within the limits of applicable law or applicable court decisions.
10.6 Export Regulations / Export Control. Recipient shall not export, either directly or indirectly, any product, service or technical data or system incorporating the Evaluation Materials without first obtaining any required license or other approval from the U.S. Department of Commerce or any other agency or department of the United States Government. In the event any product is exported from the United States or re-exported from a foreign destination by Recipient, Recipient shall ensure that the distribution and export/re-export or import of the product is in compliance with all laws, regulations, orders, or other restrictions of the U.S. Export Administration Regulations and the appropriate foreign government. Recipient agrees that neither it nor any of its subsidiaries will export/re-export any technical data, process, product, or service, directly or indirectly, to any country for which the United States government or any agency thereof or the foreign government from where it is shipping requires an export license, or other governmental approval, without first obtaining such license or approval. Recipient also agrees to implement measures to ensure that foreign national employees are authorized to receive any information controlled by U.S. export control laws. An export is "deemed" to take place when information is released to a foreign national wherever located.
10.7 Special Terms for Pre-Release Materials. If so indicated in the description of the Evaluation Software, the Evaluation Software may contain Pre-Release Materials. Recipient hereby understands, acknowledges and agrees that: (i) Pre-Release Materials may not be fully tested and may contain bugs or errors; (ii) Pre-Release materials are not suitable for commercial release in their current state; (iii) regulatory approvals for Pre-Release Materials (such as UL or FCC) have not been obtained, and Pre-Release Materials may therefore not be certified for use in certain countries or environments and (iv) Intel can provide no assurance that it will ever produce or make generally available a production version of the Pre-Release Materials . Intel is not under any obligation to develop and/or release or offer for sale or license a final product based upon the Pre-Release Materials and may unilaterally elect to abandon the Pre-Release Materials or any such development platform at any time and without any obligation or liability whatsoever to Recipient or any other person.
10.8 Open Source Software. In the event Open Source software is included with Evaluation Software, such Open Source software is licensed pursuant to the applicable Open Source software license agreement identified in the Open Source software comments in the applicable source code file(s) and/or file header provided with Evaluation Software. Additional detail may be provided (where applicable) in the accompanying on-line documentation. With respect to the Open Source software, nothing in this Agreement limits any rights under, or grants rights that supersede, the terms of any applicable Open Source software license agreement.
ANY PRE-RELEASE MATERIALS ARE NON-QUALIFIED AND, AS SUCH, ARE PROVIDED POSSIBLY WITH FAULTS
]]>
</sdk:license>
<!-- SYSTEM IMAGES ........................ -->
<sdk:system-image>
<sdk:description>Android SDK Platform 2.3.7</sdk:description>
<sdk:revision>2</sdk:revision>
<sdk:api-level>10</sdk:api-level>
<sdk:abi>x86</sdk:abi>
<sdk:uses-license ref="intel-android-sysimage-license"/>
<sdk:archives>
<sdk:archive arch="any" os="any">
<sdk:size>55463895</sdk:size>
<sdk:checksum type="sha1">34e2436f69606cdfe35d3ef9112f0c64e3ff021d</sdk:checksum>
<sdk:url>sysimg_x86-10_r02.zip</sdk:url>
</sdk:archive>
</sdk:archives>
</sdk:system-image>
<sdk:system-image>
<sdk:description>Android SDK Platform 4.0.4</sdk:description>
<sdk:revision>1</sdk:revision>
<sdk:api-level>15</sdk:api-level>
<sdk:abi>x86</sdk:abi>
<sdk:uses-license ref="intel-android-sysimage-license"/>
<sdk:archives>
<sdk:archive arch="any" os="any">
<sdk:size>112619605</sdk:size>
<sdk:checksum type="sha1">d540325952e0f097509622b9e685737584b83e40</sdk:checksum>
<sdk:url>sysimg_x86-15_r01.zip</sdk:url>
</sdk:archive>
</sdk:archives>
</sdk:system-image>
<sdk:system-image>
<sdk:description>Android SDK Platform 4.1.1</sdk:description>
<sdk:revision>1</sdk:revision>
<sdk:api-level>16</sdk:api-level>
<sdk:abi>x86</sdk:abi>
<sdk:uses-license ref="intel-android-sysimage-license"/>
<sdk:archives>
<sdk:archive arch="any" os="any">
<sdk:size>131840348</sdk:size>
<sdk:checksum type="sha1">9d35bcaa4f9b40443941f32b8a50337f413c021a</sdk:checksum>
<sdk:url>sysimg_x86-16_r01.zip</sdk:url>
</sdk:archive>
</sdk:archives>
</sdk:system-image>
<sdk:system-image>
<sdk:description>Android SDK Platform 4.2</sdk:description>
<sdk:revision>1</sdk:revision>
<sdk:api-level>17</sdk:api-level>
<sdk:abi>x86</sdk:abi>
<sdk:uses-license ref="intel-android-sysimage-license"/>
<sdk:archives>
<sdk:archive arch="any" os="any">
<sdk:size>138799122</sdk:size>
<sdk:checksum type="sha1">ddb3313e8dcd07926003f7b828eafea1115ea35b</sdk:checksum>
<sdk:url>sysimg_x86-17_r01.zip</sdk:url>
</sdk:archive>
</sdk:archives>
</sdk:system-image>
<sdk:system-image>
<sdk:description>Android SDK Platform 4.3</sdk:description>
<sdk:revision>1</sdk:revision>
<sdk:api-level>18</sdk:api-level>
<sdk:abi>x86</sdk:abi>
<sdk:uses-license ref="intel-android-sysimage-license"/>
<sdk:archives>
<sdk:archive arch="any" os="any">
<sdk:size>155656419</sdk:size>
<sdk:checksum type="sha1">f11bc9fccd3e7e46c07d8b26e112a8d0b45966c1</sdk:checksum>
<sdk:url>sysimg_x86-18_r01.zip</sdk:url>
</sdk:archive>
</sdk:archives>
</sdk:system-image>
</sdk:sdk-sys-img>

Some files were not shown because too many files have changed in this diff Show More