mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-12-26 04:43:09 +03:00
Merge recent master into staging
Hydra: ?compare=1150594
This commit is contained in:
commit
06fea81c6e
24
doc/meta.xml
24
doc/meta.xml
@ -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 package’s 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>
|
||||
|
||||
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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";
|
||||
|
@ -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
|
||||
''; # */
|
||||
|
||||
|
@ -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,6 +311,9 @@ 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]}) {
|
||||
# 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 "/";
|
||||
@ -317,6 +327,7 @@ foreach my $fs (read_file("/proc/self/mountinfo")) {
|
||||
EOF
|
||||
next;
|
||||
}
|
||||
}
|
||||
$fsByDev{$fields[2]} = $mountPoint;
|
||||
|
||||
# We don't know how to handle FUSE filesystems.
|
||||
@ -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\" =
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
echo "Default:"
|
||||
if default=$(evalOpt "default" - 2> /dev/null); then
|
||||
echo "Default: $default"
|
||||
echo "$default"
|
||||
else
|
||||
echo "Default: <None>"
|
||||
echo "<None>"
|
||||
fi
|
||||
echo
|
||||
if example=$(evalOpt "example" - 2> /dev/null); then
|
||||
echo "Example: $example"
|
||||
fi
|
||||
echo "Description:"
|
||||
echo
|
||||
eval printf $(evalOpt "description")
|
||||
fi
|
||||
|
||||
if $defs; then
|
||||
$desc || $value && echo;
|
||||
echo $desc;
|
||||
|
||||
printPath () { echo " $1"; }
|
||||
|
||||
echo "Declared by:"
|
||||
nixMap printPath "$(findSources "declarations")"
|
||||
echo ""
|
||||
echo
|
||||
echo "Defined by:"
|
||||
nixMap printPath "$(findSources "files")"
|
||||
echo ""
|
||||
fi
|
||||
echo
|
||||
|
||||
else
|
||||
# echo 1>&2 "Warning: This value is not an option."
|
||||
|
@ -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";
|
||||
};
|
||||
|
||||
|
@ -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" ];
|
||||
|
||||
|
@ -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
5
nixos/modules/module-list.nix
Normal file → Executable 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
|
||||
|
103
nixos/modules/services/misc/mesos-master.nix
Normal file
103
nixos/modules/services/misc/mesos-master.nix
Normal 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}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
93
nixos/modules/services/misc/mesos-slave.nix
Normal file
93
nixos/modules/services/misc/mesos-slave.nix
Normal 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}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
}
|
52
nixos/modules/services/misc/phd.nix
Normal file
52
nixos/modules/services/misc/phd.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
}
|
159
nixos/modules/services/network-filesystems/diod.nix
Normal file
159
nixos/modules/services/network-filesystems/diod.nix
Normal 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}";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
104
nixos/modules/services/network-filesystems/yandex-disk.nix
Normal file
104
nixos/modules/services/network-filesystems/yandex-disk.nix
Normal 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}'
|
||||
'';
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
53
nixos/modules/services/networking/copy-com.nix
Normal file
53
nixos/modules/services/networking/copy-com.nix
Normal 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}";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -11,6 +11,9 @@ let
|
||||
conf-file=/etc/dnsmasq-conf.conf
|
||||
resolv-file=/etc/dnsmasq-resolv.conf
|
||||
''}
|
||||
${flip concatMapStrings cfg.servers (server: ''
|
||||
server=${server}
|
||||
'')}
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
|
||||
@ -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";
|
||||
};
|
||||
|
@ -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
|
||||
'';
|
||||
|
||||
|
@ -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";
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -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
|
||||
|
@ -1,35 +1,30 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
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
|
||||
'';
|
||||
};
|
||||
with lib;
|
||||
|
||||
let
|
||||
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
|
||||
'';
|
||||
|
||||
}
|
||||
|
@ -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";}];
|
||||
|
||||
})
|
||||
|
||||
];
|
||||
|
@ -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 {
|
||||
|
@ -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 ];
|
||||
|
||||
|
@ -148,6 +148,10 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
boot.loader.grub = mkIf inInitrd {
|
||||
zfsSupport = true;
|
||||
};
|
||||
|
||||
systemd.services."zpool-import" = {
|
||||
description = "Import zpools";
|
||||
after = [ "systemd-udev-settle.service" ];
|
||||
|
@ -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";
|
||||
wantedBy = [ "network.target" (subsystemDevice i.name) ];
|
||||
path = [ pkgs.iproute ];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
ExecStart = "${pkgs.tunctl}/bin/tunctl -t '${i.name}' -u '${i.virtualOwner}'";
|
||||
ExecStop = "${pkgs.tunctl}/bin/tunctl -d '${i.name}'";
|
||||
};
|
||||
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
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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 {};
|
||||
|
@ -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",
|
||||
);
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
@ -32,9 +32,16 @@ import ./make-test.nix ({ pkgs, ... }: {
|
||||
}];
|
||||
};
|
||||
|
||||
phd = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
mysql = {
|
||||
enable = true;
|
||||
package = pkgs.mysql;
|
||||
extraOptions = ''
|
||||
sql_mode=STRICT_ALL_TABLES
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -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";
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
21
pkgs/applications/graphics/kgraphviewer/default.nix
Normal file
21
pkgs/applications/graphics/kgraphviewer/default.nix
Normal 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 ];
|
||||
};
|
||||
}
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
}
|
||||
|
71
pkgs/applications/misc/bitcoin/dogecoin.nix
Normal file
71
pkgs/applications/misc/bitcoin/dogecoin.nix
Normal 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; };
|
||||
|
||||
}
|
34
pkgs/applications/misc/fme/default.nix
Normal file
34
pkgs/applications/misc/fme/default.nix
Normal 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;
|
||||
};
|
||||
}
|
@ -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
|
||||
}:
|
||||
|
||||
@ -21,6 +22,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";
|
||||
license = licenses.gpl2Plus;
|
||||
|
@ -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 ];
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
57
pkgs/applications/misc/xiphos/default.nix
Normal file
57
pkgs/applications/misc/xiphos/default.nix
Normal 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;
|
||||
};
|
||||
}
|
@ -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 =
|
||||
|
@ -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)" \
|
||||
|
58
pkgs/applications/networking/copy-com/default.nix
Normal file
58
pkgs/applications/networking/copy-com/default.nix
Normal 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;
|
||||
};
|
||||
}
|
@ -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
|
||||
|
@ -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];
|
||||
|
@ -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 "$@"
|
||||
}
|
||||
|
29
pkgs/data/fonts/baekmuk-ttf/default.nix
Normal file
29
pkgs/data/fonts/baekmuk-ttf/default.nix
Normal 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";
|
||||
};
|
||||
}
|
||||
|
40
pkgs/data/fonts/proggyfonts/default.nix
Normal file
40
pkgs/data/fonts/proggyfonts/default.nix
Normal 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;
|
||||
};
|
||||
}
|
@ -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";
|
||||
|
@ -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;
|
||||
|
@ -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 ];
|
||||
|
@ -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 ];
|
||||
|
@ -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
|
||||
|
@ -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 ];
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -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 ];
|
||||
|
@ -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";
|
||||
|
@ -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 ];
|
||||
|
@ -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" ];
|
||||
|
@ -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" ];
|
||||
|
@ -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
|
||||
|
@ -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";
|
||||
|
@ -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
|
||||
|
@ -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 ];
|
||||
|
@ -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 ];
|
||||
|
@ -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 ];
|
||||
|
@ -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 = [
|
||||
|
@ -46,7 +46,7 @@ stdenv.mkDerivation {
|
||||
'';
|
||||
|
||||
license = licenses.epl10;
|
||||
platforms = platforms.linux;
|
||||
platforms = platforms.unix;
|
||||
maintainers = [ maintainers.the-kenny ];
|
||||
};
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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 ];
|
||||
|
@ -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 = [
|
||||
|
17
pkgs/development/libraries/haskell/hindent/default.nix
Normal file
17
pkgs/development/libraries/haskell/hindent/default.nix
Normal 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;
|
||||
};
|
||||
})
|
@ -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" ;
|
||||
|
@ -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/;
|
||||
};
|
||||
|
@ -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";
|
||||
|
@ -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 ];
|
||||
|
47
pkgs/development/libraries/qscintilla/default.nix
Normal file
47
pkgs/development/libraries/qscintilla/default.nix
Normal 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
|
||||
};
|
||||
}
|
@ -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
@ -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";
|
||||
|
@ -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,31 +9,30 @@
|
||||
|
||||
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
|
||||
@ -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
|
||||
|
@ -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!";
|
||||
|
||||
@ -40,6 +40,13 @@ stdenv.mkDerivation {
|
||||
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
|
||||
do
|
||||
|
@ -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;
|
||||
@ -64,7 +68,37 @@ rec {
|
||||
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;
|
||||
|
@ -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
|
@ -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" />";
|
||||
|
@ -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
|
||||
|
@ -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" />
|
||||
@ -20,12 +20,12 @@ let
|
||||
});
|
||||
in
|
||||
{
|
||||
<xsl:for-each select="sdk:platform">
|
||||
<xsl:for-each select="sdk:platform[sdk:api-level < 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" />";
|
||||
|
@ -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>
|
@ -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"
|
||||
}
|
||||
|
@ -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>
|
||||
|
@ -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";
|
||||
|
||||
};
|
||||
};
|
||||
|
@ -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";
|
||||
|
||||
};
|
||||
};
|
||||
|
1562
pkgs/development/mobile/androidenv/repository-10.xml
Normal file
1562
pkgs/development/mobile/androidenv/repository-10.xml
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
17
pkgs/development/mobile/androidenv/support-repository.nix
Normal file
17
pkgs/development/mobile/androidenv/support-repository.nix
Normal 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 ];
|
||||
}
|
@ -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) 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.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 RECIPIENT’S 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 Recipient’s 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 sublicensee’s 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 Recipient’s 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>
|
@ -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) 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.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 Intels 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 RECIPIENTS 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 Intels 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 Intels and its sublicensees 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 Recipients 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 Intels 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 Intels 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
Loading…
Reference in New Issue
Block a user