Merge remote-tracking branch 'origin/master' into staging

Conflicts:
	pkgs/servers/serfdom/default.nix
This commit is contained in:
Eelco Dolstra 2014-07-01 11:25:41 +02:00
commit 06fc1ec34d
244 changed files with 5400 additions and 908 deletions

View File

@ -88,6 +88,8 @@
url = http://www.eclipse.org/legal/epl-v10.html;
};
free = "free";
gpl2 = {
shortName = "GPLv2";
fullName = "GNU General Public License version 2";
@ -130,6 +132,12 @@
url = http://www.opensource.org/licenses/ISC;
};
ipa = {
shortName = "IPA 1.0";
fullName = "IPA Font License v1.0";
url = http://ipafont.ipa.go.jp/ipafont/;
};
ipl10 = {
shortName = "IPL 1.0";
fullName = "IBM Public License Version 1.0";
@ -243,6 +251,12 @@
unfreeRedistributableFirmware = "unfree-redistributable-firmware";
wadalab = {
shortName = "wadalab";
fullName = "Wadalab Font License";
url = https://fedoraproject.org/wiki/Licensing:Wadalab?rd=Licensing/Wadalab;
};
zlib = {
shortName = "zlib";
fullName = "zlib license";

View File

@ -6,6 +6,7 @@
_1126 = "Christian Lask <mail@elfsechsundzwanzig.de>";
aforemny = "Alexander Foremny <alexanderforemny@googlemail.com>";
ak = "Alexander Kjeldaas <ak@formalprivacy.com>";
akc = "Anders Claesson <akc@akc.is>";
algorith = "Dries Van Daele <dries_van_daele@telenet.be>";
all = "Nix Committers <nix-commits@lists.science.uu.nl>";
@ -37,6 +38,7 @@
emery = "Emery Hemingway <emery@vfemail.net>";
ertes = "Ertugrul Söylemez <ertesx@gmx.de>";
falsifian = "James Cook <james.cook@utoronto.ca>";
flosse = "Markus Kohlhase <mail@markus-kohlhase.de>";
fuuzetsu = "Mateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk>";
garbas = "Rok Garbas <rok@garbas.si>";
goibhniu = "Cillian de Róiste <cillian.deroiste@gmail.com>";

View File

@ -194,7 +194,7 @@ rec {
is transformed into
[ { boot = set1; } { boot = mkIf cond set2; services mkIf cond set3; } ].
[ { boot = set1; } { boot = mkIf cond set2; services = mkIf cond set3; } ].
This transform is the critical step that allows mkIf conditions
to refer to the full configuration without creating an infinite

View File

@ -9,8 +9,8 @@
<xsl:template match="logfile">
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<script type="text/javascript" src="treebits.js" />
<link rel="stylesheet" href="logfile.css" type="text/css" />
<title>Log File</title>

View File

@ -37,7 +37,7 @@ rec {
# `driver' is the script that runs the network.
runTests = driver:
stdenv.mkDerivation {
name = "vm-test-run";
name = "vm-test-run-${driver.testName}";
requiredSystemFeatures = [ "kvm" "nixos-test" ];
@ -68,9 +68,10 @@ rec {
makeTest =
{ testScript, makeCoverageReport ? false, ... } @ t:
{ testScript, makeCoverageReport ? false, name ? "unnamed", ... } @ t:
let
testDriverName = "nixos-test-driver-${name}";
nodes = buildVirtualNetwork (
t.nodes or (if t ? machine then { machine = t.machine; } else { }));
@ -88,10 +89,11 @@ rec {
# Generate onvenience wrappers for running the test driver
# interactively with the specified network, and for starting the
# VMs from the command line.
driver = runCommand "nixos-test-driver"
driver = runCommand testDriverName
{ buildInputs = [ makeWrapper];
testScript = testScript';
preferLocalBuild = true;
testName = name;
}
''
mkdir -p $out/bin

View File

@ -32,12 +32,12 @@ in
kdc = mkOption {
default = "kerberos.mit.edu";
description = "Kerberos Domain Controller";
description = "Kerberos Domain Controller.";
};
kerberosAdminServer = mkOption {
default = "kerberos.mit.edu";
description = "Kerberos Admin Server";
description = "Kerberos Admin Server.";
};
};

View File

@ -6,8 +6,12 @@ let
sysctlOption = mkOptionType {
name = "sysctl option value";
check = x: isBool x || isString x || isInt x || isNull x;
merge = args: defs: (last defs).value; # FIXME: hacky way to allow overriding in configuration.nix.
check = val:
let
checkType = x: isBool x || isString x || isInt x || isNull x;
in
checkType val || (val._type or "" == "override" && checkType val.content);
merge = loc: defs: mergeOneOption loc (filterOverrides defs);
};
in

View File

@ -97,6 +97,16 @@ if [ -n "$upgrade" -a -z "$_NIXOS_REBUILD_REEXEC" ]; then
nix-channel --update nixos
fi
# Make sure that we use the Nix package we depend on, not something
# else from the PATH for nix-{env,instantiate,build}. This is
# important, because NixOS defaults the architecture of the rebuilt
# system to the architecture of the nix-* binaries used. So if on an
# amd64 system the user has an i686 Nix package in her PATH, then we
# would silently downgrade the whole system to be i686 NixOS on the
# next reboot.
if [ -z "$_NIXOS_REBUILD_REEXEC" ]; then
export PATH=@nix@/bin:$PATH
fi
# Re-execute nixos-rebuild from the Nixpkgs tree.
if [ -z "$_NIXOS_REBUILD_REEXEC" -a -n "$canRun" ]; then

View File

@ -32,6 +32,7 @@ let
nixos-rebuild = makeProg {
name = "nixos-rebuild";
src = ./nixos-rebuild.sh;
nix = config.nix.package;
};
nixos-generate-config = makeProg {

View File

@ -134,6 +134,7 @@
teamspeak = 124;
influxdb = 125;
nsd = 126;
gitolite = 127;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!

View File

@ -147,6 +147,7 @@
./services/misc/felix.nix
./services/misc/folding-at-home.nix
./services/misc/gpsd.nix
./services/misc/gitolite.nix
./services/misc/nix-daemon.nix
./services/misc/nix-gc.nix
./services/misc/nix-ssh-serve.nix
@ -216,6 +217,7 @@
./services/networking/prayer.nix
./services/networking/privoxy.nix
./services/networking/quassel.nix
./services/networking/radicale.nix
./services/networking/radvd.nix
./services/networking/rdnssd.nix
./services/networking/rpcbind.nix

View File

@ -22,7 +22,7 @@ in
interval = 5;
};
description = ''
Parameters to be written to <filename>/etc/atoprc</filename>
Parameters to be written to <filename>/etc/atoprc</filename>.
'';
};

View File

@ -19,8 +19,8 @@ in
environment.variables =
{ LOCATE_PATH = "/var/cache/locatedb";
NIXPKGS_CONFIG = "/etc/nix/nixpkgs-config.nix";
PAGER = "less -R";
EDITOR = "nano";
PAGER = mkDefault "less -R";
EDITOR = mkDefault "nano";
};
environment.sessionVariables =

View File

@ -189,7 +189,9 @@ let
session required pam_env.so envfile=${config.system.build.pamEnvironment}
session required pam_unix.so
${optionalString cfg.setLoginUid
"session required pam_loginuid.so"}
"session ${
if config.boot.isContainer then "optional" else "required"
} pam_loginuid.so"}
${optionalString cfg.updateWtmp
"session required ${pkgs.pam}/lib/security/pam_lastlog.so silent"}
${optionalString config.users.ldap.enable

View File

@ -68,7 +68,7 @@ in
users.extraUsers = optionalAttrs (cfg.user == "openldap") (singleton
{ name = "openldap";
group = "openldap";
group = cfg.group;
uid = config.ids.uids.openldap;
});

View File

@ -50,7 +50,7 @@ in
user = mkOption {
default = "redis";
description = "User account under which Redis runs";
description = "User account under which Redis runs.";
};
pidFile = mkOption {
@ -60,26 +60,26 @@ in
port = mkOption {
default = 6379;
description = "The port for Redis to listen to";
description = "The port for Redis to listen to.";
type = with types; int;
};
bind = mkOption {
default = null; # All interfaces
description = "The IP interface to bind to";
description = "The IP interface to bind to.";
example = "127.0.0.1";
};
unixSocket = mkOption {
default = null;
description = "The path to the socket to bind to";
description = "The path to the socket to bind to.";
example = "/var/run/redis.sock";
};
logLevel = mkOption {
default = "notice"; # debug, verbose, notice, warning
example = "debug";
description = "Specify the server verbosity level, options: debug, verbose, notice, warning";
description = "Specify the server verbosity level, options: debug, verbose, notice, warning.";
type = with types; string;
};
@ -110,19 +110,19 @@ in
dbFilename = mkOption {
default = "dump.rdb";
description = "The filename where to dump the DB";
description = "The filename where to dump the DB.";
type = with types; string;
};
dbpath = mkOption {
default = "/var/lib/redis";
description = "The DB will be written inside this directory, with the filename specified using the 'dbFilename' configuration";
description = "The DB will be written inside this directory, with the filename specified using the 'dbFilename' configuration.";
type = with types; string;
};
slaveOf = mkOption {
default = null; # { ip, port }
description = "An attribute set with two attributes: ip and port to which this redis instance acts as a slave";
description = "An attribute set with two attributes: ip and port to which this redis instance acts as a slave.";
example = { ip = "192.168.1.100"; port = 6379; };
};
@ -154,26 +154,26 @@ in
appendFsync = mkOption {
default = "everysec"; # no, always, everysec
description = "How often to fsync the append-only log, options: no, always, everysec";
description = "How often to fsync the append-only log, options: no, always, everysec.";
type = with types; string;
};
slowLogLogSlowerThan = mkOption {
default = 10000;
description = "Log queries whose execution take longer than X in milliseconds";
description = "Log queries whose execution take longer than X in milliseconds.";
example = 1000;
type = with types; int;
};
slowLogMaxLen = mkOption {
default = 128;
description = "Maximum number of items to keep in slow log";
description = "Maximum number of items to keep in slow log.";
type = with types; int;
};
extraConfig = mkOption {
default = "";
description = "Extra configuration options for redis.conf";
description = "Extra configuration options for redis.conf.";
type = with types; string;
};
};

View File

@ -17,6 +17,11 @@ in
description = "Enable logstash";
};
enableWeb = mkOption {
default = false;
description = "Enable logstash web interface";
};
inputConfig = mkOption {
default = ''stdin { type => "example" }'';
description = "Logstash input configuration";
@ -62,7 +67,7 @@ in
config = mkIf cfg.enable {
systemd.services.logstash = with pkgs; {
description = "Logstash daemon";
description = "Logstash Daemon";
wantedBy = [ "multi-user.target" ];
serviceConfig = {
@ -78,7 +83,7 @@ in
output {
${cfg.outputConfig}
}
''}";
''} ${optionalString cfg.enableWeb "-- web"}";
};
};
};

View File

@ -0,0 +1,66 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.gitolite;
pubkeyFile = pkgs.writeText "gitolite-admin.pub" cfg.adminPubkey;
in
{
options = {
services.gitolite = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Enable gitolite management under the
<literal>gitolite</literal> user. The Gitolite home
directory is <literal>/var/lib/gitolite</literal>. After
switching to a configuration with Gitolite enabled, you can
then run <literal>git clone
gitolite@host:gitolite-admin.git</literal> to manage it further.
'';
};
adminPubkey = mkOption {
type = types.str;
description = ''
Initial administrative public key for Gitolite. This should
be an SSH Public Key. Note that this key will only be used
once, upon the first initialization of the Gitolite user.
'';
};
};
};
config = mkIf cfg.enable {
users.extraUsers.gitolite = {
description = "Gitolite user";
home = "/var/lib/gitolite";
createHome = true;
uid = config.ids.uids.gitolite;
useDefaultShell = true;
};
systemd.services."gitolite-init" = {
description = "Gitolite initialization";
wantedBy = [ "multi-user.target" ];
serviceConfig.User = "gitolite";
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
path = [ pkgs.gitolite pkgs.git pkgs.perl pkgs.bash pkgs.openssh ];
script = ''
cd /var/lib/gitolite
mkdir -p .gitolite/logs
if [ ! -d repositories ]; then
gitolite setup -pk ${pubkeyFile}
fi
gitolite setup # Upgrade if needed
'';
};
environment.systemPackages = [ pkgs.gitolite pkgs.git ];
};
}

View File

@ -0,0 +1,48 @@
{config, lib, pkgs, ...}:
with lib;
let
cfg = config.services.radicale;
confFile = pkgs.writeText "radicale.conf" cfg.config;
in
{
options = {
services.radicale.enable = mkOption {
type = types.bool;
default = false;
description = ''
Enable Radicale CalDAV and CardDAV server
'';
};
services.radicale.config = mkOption {
type = types.string;
default = "";
description = ''
Radicale configuration, this will set the service
configuration file
'';
};
};
config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.pythonPackages.radicale ];
jobs.radicale = {
description = "A Simple Calendar and Contact Server";
startOn = "started network-interfaces";
exec = "${pkgs.pythonPackages.radicale}/bin/radicale -C ${confFile} -d";
daemonType = "fork";
};
};
}

View File

@ -27,37 +27,37 @@ in {
options.services.elasticsearch = {
enable = mkOption {
description = "Whether to enable elasticsearch";
description = "Whether to enable elasticsearch.";
default = false;
type = types.uniq types.bool;
};
host = mkOption {
description = "Elasticsearch listen address";
description = "Elasticsearch listen address.";
default = "127.0.0.1";
type = types.str;
};
port = mkOption {
description = "Elasticsearch port to listen for HTTP traffic";
description = "Elasticsearch port to listen for HTTP traffic.";
default = 9200;
type = types.int;
};
tcp_port = mkOption {
description = "Elasticsearch port for the node to node communication";
description = "Elasticsearch port for the node to node communication.";
default = 9300;
type = types.int;
};
cluster_name = mkOption {
description = "Elasticsearch name that identifies your cluster for auto-discovery";
description = "Elasticsearch name that identifies your cluster for auto-discovery.";
default = "elasticsearch";
type = types.str;
};
extraConf = mkOption {
description = "Extra configuration for elasticsearch";
description = "Extra configuration for elasticsearch.";
default = "";
type = types.str;
example = ''
@ -70,7 +70,7 @@ in {
};
logging = mkOption {
description = "Elasticsearch logging configuration";
description = "Elasticsearch logging configuration.";
default = ''
rootLogger: INFO, console
logger:
@ -95,7 +95,7 @@ in {
};
extraCmdLineOptions = mkOption {
description = "Extra command line options for the elasticsearch launcher";
description = "Extra command line options for the elasticsearch launcher.";
default = [];
type = types.listOf types.string;
example = [ "-Djava.net.preferIPv4Stack=true" ];
@ -107,7 +107,7 @@ in {
config = mkIf cfg.enable {
systemd.services.elasticsearch = {
description = "Elasticsearch daemon";
description = "Elasticsearch Daemon";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
environment = { ES_HOME = cfg.dataDir; };

View File

@ -594,17 +594,17 @@ in
message = "SSL is enabled for HTTPD, but sslServerCert and/or sslServerKey haven't been specified."; }
];
users.extraUsers = optional (mainCfg.user == "wwwrun")
users.extraUsers = optionalAttrs (mainCfg.user == "wwwrun") (singleton
{ name = "wwwrun";
group = "wwwrun";
group = mainCfg.group;
description = "Apache httpd user";
uid = config.ids.uids.wwwrun;
};
});
users.extraGroups = optional (mainCfg.group == "wwwrun")
users.extraGroups = optionalAttrs (mainCfg.group == "wwwrun") (singleton
{ name = "wwwrun";
gid = config.ids.gids.wwwrun;
};
});
environment.systemPackages = [httpd] ++ concatMap (svc: svc.extraPath) allSubservices;

View File

@ -16,28 +16,28 @@ let
enable = mkOption {
default = false;
type = types.bool;
description = "The block device is backed by an encrypted one, adds this device as a initrd luks entry";
description = "The block device is backed by an encrypted one, adds this device as a initrd luks entry.";
};
blkDev = mkOption {
default = null;
example = "/dev/sda1";
type = types.uniq (types.nullOr types.string);
description = "Location of the backing encrypted device";
description = "Location of the backing encrypted device.";
};
label = mkOption {
default = null;
example = "rootfs";
type = types.uniq (types.nullOr types.string);
description = "Label of the backing encrypted device";
description = "Label of the backing encrypted device.";
};
keyFile = mkOption {
default = null;
example = "/root/.swapkey";
type = types.uniq (types.nullOr types.string);
description = "File system location of keyfile";
description = "File system location of keyfile.";
};
};
};

View File

@ -1,6 +1,7 @@
# Test whether `avahi-daemon' and `libnss-mdns' work as expected.
import ./make-test.nix {
name = "avahi";
nodes = {
one =

View File

@ -23,6 +23,7 @@ let
in
{
name = "bittorrent";
nodes =
{ tracker =

View File

@ -6,6 +6,8 @@
with import ../lib/build-vms.nix { inherit nixos nixpkgs system; };
rec {
name = "check-filesystems";
nodes = {
share = {pkgs, config, ...}: {
services.nfs.server.enable = true;

View File

@ -1,6 +1,7 @@
# Test for NixOS' container support.
import ./make-test.nix {
name = "containers";
machine =
{ config, pkgs, ... }:

View File

@ -1,4 +1,5 @@
import ./make-test.nix ({ pkgs, ... }: {
name = "firefox";
machine =
{ config, pkgs, ... }:

View File

@ -1,6 +1,7 @@
# Test the firewall module.
import ./make-test.nix {
name = "firewall";
nodes =
{ walled =

View File

@ -1,4 +1,5 @@
import ./make-test.nix {
name = "gnome3";
machine =
{ config, pkgs, ... }:

View File

@ -1,4 +1,5 @@
import ./make-test.nix {
name = "gnome3_12";
machine =
{ config, pkgs, ... }:

View File

@ -1,6 +1,8 @@
# This test runs influxdb and checks if influxdb is up and running
import ./make-test.nix {
name = "influxdb";
nodes = {
one = { config, pkgs, ... }: {
services.influxdb.enable = true;

View File

@ -215,10 +215,11 @@ let
'';
makeInstallerTest =
makeInstallerTest = name:
{ createPartitions, testChannel ? false, useEFI ? false, grubVersion ? 2, grubDevice ? "/dev/vda" }:
makeTest {
inherit iso;
name = "installer-" + name;
nodes = if testChannel then { inherit webserver; } else { };
testScript = testScriptFun {
inherit createPartitions testChannel useEFI grubVersion grubDevice;
@ -233,7 +234,7 @@ in {
# The (almost) simplest partitioning scheme: a swap partition and
# one big filesystem partition.
simple = makeInstallerTest
simple = makeInstallerTest "simple"
{ createPartitions =
''
$machine->succeed(
@ -251,7 +252,7 @@ in {
};
# Same as the previous, but now with a separate /boot partition.
separateBoot = makeInstallerTest
separateBoot = makeInstallerTest "separateBoot"
{ createPartitions =
''
$machine->succeed(
@ -273,7 +274,7 @@ in {
# Create two physical LVM partitions combined into one volume group
# that contains the logical swap and root partitions.
lvm = makeInstallerTest
lvm = makeInstallerTest "lvm"
{ createPartitions =
''
$machine->succeed(
@ -295,7 +296,7 @@ in {
'';
};
swraid = makeInstallerTest
swraid = makeInstallerTest "swraid"
{ createPartitions =
''
$machine->succeed(
@ -328,7 +329,7 @@ in {
};
# Test a basic install using GRUB 1.
grub1 = makeInstallerTest
grub1 = makeInstallerTest "grub1"
{ createPartitions =
''
$machine->succeed(
@ -348,7 +349,7 @@ in {
};
# Test an EFI install.
efi = makeInstallerTest
efi = makeInstallerTest "efi"
{ createPartitions =
''
$machine->succeed(
@ -369,6 +370,7 @@ in {
# Rebuild the CD configuration with a little modification.
rebuildCD = makeTest
{ inherit iso;
name = "rebuild-CD";
nodes = { };
testScript =
''

View File

@ -2,6 +2,7 @@
# solicication/advertisement using radvd works.
import ./make-test.nix {
name = "ipv6";
nodes =
{ client = { config, pkgs, ... }: { };

View File

@ -4,6 +4,7 @@
# 3. jenkins service not started on slave node
import ./make-test.nix {
name = "jenkins";
nodes = {

View File

@ -1,4 +1,5 @@
import ./make-test.nix ({ pkgs, ... }: {
name = "kde4";
machine =
{ config, pkgs, ... }:

View File

@ -1,6 +1,7 @@
# Test whether fast reboots via kexec work.
import ./make-test.nix {
name = "kexec";
machine = { config, pkgs, ... }:
{ virtualisation.vlans = [ ]; };

View File

@ -1,6 +1,7 @@
import ./make-test.nix ({ pkgs, latestKernel ? false, ... }:
{
name = "login";
machine =
{ config, pkgs, lib, ... }:

View File

@ -2,6 +2,7 @@
# elasticsearch is started.
import ./make-test.nix {
name = "logstash";
nodes = {
one =

View File

@ -1,6 +1,7 @@
# Miscellaneous small tests that don't warrant their own VM run.
import ./make-test.nix {
name = "misc";
machine =
{ config, lib, pkgs, ... }:

View File

@ -1,6 +1,8 @@
# Simple example to showcase distributed tests using NixOS VMs.
import ./make-test.nix {
name = "mpich";
nodes = {
master =
{ config, pkgs, ... }: {

View File

@ -7,6 +7,8 @@ let
};
in
{
name = "mumble";
nodes = {
server = { config, pkgs, ... }: {
services.murmur.enable = true;

View File

@ -2,6 +2,7 @@
# machine.
import ./make-test.nix {
name = "munin";
nodes = {
one =

View File

@ -6,6 +6,8 @@ let
in
{
name = "mysql-replication";
nodes = {
master =
{ pkgs, config, ... }:

View File

@ -1,4 +1,5 @@
import ./make-test.nix {
name = "mysql";
nodes = {
master =

View File

@ -5,6 +5,7 @@
# for the client.
import ./make-test.nix {
name = "nat";
nodes =
{ client =

View File

@ -17,6 +17,7 @@ let
in
{
name = "nfs";
nodes =
{ client1 = client;

View File

@ -1,4 +1,22 @@
import ./make-test.nix ({ pkgs, ... }: {
import ./make-test.nix ({ pkgs, ... }:
let
snakeOilPrivateKey = pkgs.writeText "privkey.snakeoil" ''
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIHQf/khLvYrQ8IOika5yqtWvI0oquHlpRLTZiJy5dRJmoAoGCCqGSM49
AwEHoUQDQgAEKF0DYGbBwbj06tA3fd/+yP44cvmwmHBWXZCKbS+RQlAKvLXMWkpN
r1lwMyJZoSGgBHoUahoYjTh9/sJL7XLJtA==
-----END EC PRIVATE KEY-----
'';
snakeOilPublicKey = pkgs.lib.concatStrings [
"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHA"
"yNTYAAABBBChdA2BmwcG49OrQN33f/sj+OHL5sJhwVl2Qim0vkUJQCry1zFpKTa"
"9ZcDMiWaEhoAR6FGoaGI04ff7CS+1yybQ= sakeoil"
];
in {
name = "openssh";
nodes = {
@ -9,6 +27,9 @@ import ./make-test.nix ({ pkgs, ... }: {
services.openssh.enable = true;
security.pam.services.sshd.limits =
[ { domain = "*"; item = "memlock"; type = "-"; value = 1024; } ];
users.extraUsers.root.openssh.authorizedKeys.keys = [
snakeOilPublicKey
];
};
client =
@ -23,15 +44,25 @@ import ./make-test.nix ({ pkgs, ... }: {
$server->waitForUnit("sshd");
$server->succeed("mkdir -m 700 /root/.ssh");
$server->copyFileFromHost("key.pub", "/root/.ssh/authorized_keys");
subtest "manual-authkey", sub {
$server->succeed("mkdir -m 700 /root/.ssh");
$server->copyFileFromHost("key.pub", "/root/.ssh/authorized_keys");
$client->succeed("mkdir -m 700 /root/.ssh");
$client->copyFileFromHost("key", "/root/.ssh/id_dsa");
$client->succeed("chmod 600 /root/.ssh/id_dsa");
$client->succeed("mkdir -m 700 /root/.ssh");
$client->copyFileFromHost("key", "/root/.ssh/id_dsa");
$client->succeed("chmod 600 /root/.ssh/id_dsa");
$client->waitForUnit("network.target");
$client->succeed("ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server 'echo hello world' >&2");
$client->succeed("ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server 'ulimit -l' | grep 1024");
$client->waitForUnit("network.target");
$client->succeed("ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server 'echo hello world' >&2");
$client->succeed("ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server 'ulimit -l' | grep 1024");
};
subtest "configured-authkey", sub {
$client->succeed("cat ${snakeOilPrivateKey} > privkey.snakeoil");
$client->succeed("chmod 600 privkey.snakeoil");
$client->succeed("ssh -o UserKnownHostsFile=/dev/null" .
" -o StrictHostKeyChecking=no -i privkey.snakeoil" .
" server true");
};
'';
})

View File

@ -63,6 +63,8 @@ let
logvol / --size=1000 --grow --fstype=ext4 --name=root --vgname=nixos
'';
in {
name = "partitiion";
machine = { config, pkgs, ... }: {
environment.systemPackages = [
pkgs.pythonPackages.nixpart

View File

@ -1,4 +1,5 @@
import ./make-test.nix ({ pkgs, ... }: {
name = "phabricator";
nodes = {
storage =

View File

@ -1,6 +1,7 @@
# Test printing via CUPS.
import ./make-test.nix ({pkgs, ... }: {
name = "printing";
nodes = {

View File

@ -14,6 +14,7 @@ let
in
{
name = "proxy";
nodes =
{ proxy =

View File

@ -13,6 +13,7 @@ let
in
rec {
name = "quake3";
makeCoverageReport = true;

View File

@ -1,6 +1,7 @@
# This test runs rabbitmq and checks if rabbitmq is up and running.
import ./make-test.nix ({ pkgs, ... }: {
name = "rabbitmq";
nodes = {
one = { config, pkgs, ... }: {

View File

@ -1,4 +1,5 @@
import ./make-test.nix {
name = "simple"
machine = { config, pkgs, ... }: { };

View File

@ -32,6 +32,7 @@ let
in
{
name = "subversion";
nodes =
{ webserver =

View File

@ -1,4 +1,5 @@
import ./make-test.nix {
name = "tomcat";
nodes = {
server =

View File

@ -1,4 +1,5 @@
import ./make-test.nix ({ pkgs, ... }: {
name = "trac";
nodes = {
storage =

View File

@ -10,6 +10,7 @@ let
in
{
name = "udisks2";
machine =
{ config, pkgs, ... }:

View File

@ -1,4 +1,5 @@
import ./make-test.nix {
name = "xfce";
machine =
{ config, pkgs, ... }:

View File

@ -0,0 +1,25 @@
{ stdenv, fetchurl, flac, lame, zlib, libjpeg, libvorbis, libtheora, libxml2
, lzo, libdvdread, pkgconfig, x264, libmpeg2, xvidcore }:
stdenv.mkDerivation rec {
name = "transcode-1.1.7";
src = fetchurl {
url = "https://bitbucket.org/france/transcode-tcforge/downloads/${name}.tar.bz2";
sha256 = "1e4e72d8e0dd62a80b8dd90699f5ca64c9b0cb37a5c9325c184166a9654f0a92";
};
buildInputs = [ flac lame zlib libjpeg libvorbis libtheora libxml2 lzo
libdvdread pkgconfig x264 libmpeg2 xvidcore ];
configureFlags = "--disable-ffmpeg --disable-libavcodec --disable-libavformat
--enable-lzo --enable-ogg --enable-vorbis --enable-theora --enable-libxml2
--enable-x264 --enable-libmpeg2 --enable-xvid";
enableParallelBuilding = true;
meta = with stdenv.lib; {
description = "Suite of command line utilities for transcoding video and audio codecs, and for converting beween different container formats";
homepage = http://www.transcoding.org/;
license = licenses.lgpl2Plus;
platforms = platforms.linux;
};
}

View File

@ -1,15 +1,16 @@
{ cabal, emacs, haskellSrcExts }:
{ cabal, emacs, haskellMode, haskellSrcExts }:
cabal.mkDerivation (self: {
pname = "structured-haskell-mode";
version = "1.0.2";
sha256 = "1lwdhlr38y5hdr78nplplr3q0hrjhryw378f1857qh0lvp03gwl2";
version = "1.0.3";
sha256 = "0axmw8bj51q8v0wd4jp6giw9dnv0mp7kp8yd16s4nm4hcqgrh5h2";
isLibrary = false;
isExecutable = true;
buildDepends = [ haskellSrcExts ];
buildDepends = [ haskellSrcExts haskellMode ];
buildTools = [ emacs ];
postInstall = ''
emacs -L elisp --batch -f batch-byte-compile "elisp/"*.el
emacs -L elisp -L ${haskellMode}/share/emacs/site-lisp \
--batch -f batch-byte-compile "elisp/"*.el
install -d $out/share/emacs/site-lisp
install "elisp/"*.el "elisp/"*.elc $out/share/emacs/site-lisp
'';

View File

@ -21,7 +21,7 @@ composableDerivation {
# latest release
args.fetchhg {
url = "https://vim.googlecode.com/hg/";
tag = "v7-4-316";
rev = "v7-4-316";
sha256 = "0scxx33p1ky0wihk04xqpd6rygp1crm0hx446zbjwbsjj6xxn7sx";
};

View File

@ -7,7 +7,7 @@ stdenv.mkDerivation rec {
src = fetchhg {
url = "https://vim.googlecode.com/hg/";
tag = "v7-4-316";
rev = "v7-4-316";
sha256 = "0scxx33p1ky0wihk04xqpd6rygp1crm0hx446zbjwbsjj6xxn7sx";
};

View File

@ -6,7 +6,7 @@ stdenv.mkDerivation rec {
src = fetchhg {
url = "http://code.google.com/p/photivo/";
tag = "d687864489da";
rev = "d687864489da";
sha256 = "0f6y18k7db2ci6xn664zcwm1g1k04sdv7gg1yd5jk41bndjb7z8h";
};

View File

@ -0,0 +1,31 @@
{ stdenv, lib, go, fetchurl }:
stdenv.mkDerivation rec {
version = "0.7";
name = "camlistore-${version}";
src = fetchurl {
url = "https://github.com/bradfitz/camlistore/archive/0.7.tar.gz";
sha256 = "0lc35x2b9llrnma0m5czivly0c3l4lh3ldw9hwn83lkh8n0bzn11";
};
buildInputs = [ go ];
buildPhase = ''
go run make.go
rm bin/README
'';
installPhase = ''
ensureDir $out/bin
cp bin/* $out/bin
'';
meta = with stdenv.lib; {
description = "Camlistore is a way of storing, syncing, sharing, modelling and backing up content";
homepage = https://camlistore.org;
license = licenses.asl20;
maintainers = with maintainers; [ cstrahan ];
platforms = platforms.unix;
};
}

View File

@ -1,15 +1,15 @@
{ stdenv, fetchurl, gettext, kdelibs, makeWrapper, qca2, qca2_ossl, qjson }:
{ stdenv, fetchurl, gettext, kdelibs, libXtst, makeWrapper, qca2, qca2_ossl, qjson }:
stdenv.mkDerivation rec {
name = "kdeconnect-${version}";
version = "0.5.2.1";
version = "0.7";
src = fetchurl {
url = "http://download.kde.org/unstable/kdeconnect/0.5.2/src/kdeconnect-kde-${version}.tar.xz";
sha256 = "0g632ha7xcqf839c4h0dz5637bz6gnn2gz76dc0qq09zbrq49i08";
url = "http://download.kde.org/unstable/kdeconnect/${version}/src/kdeconnect-kde-${version}.tar.xz";
sha256 = "0a8g3avg9x5j07cf3c16i4w65q3fn1cbs8zxgq0vl14rzdy09q2j";
};
buildInputs = [ gettext kdelibs makeWrapper qca2 qca2_ossl qjson ];
buildInputs = [ gettext kdelibs libXtst makeWrapper qca2 qca2_ossl qjson ];
postInstall = ''
wrapProgram $out/lib/kde4/libexec/kdeconnectd --prefix QT_PLUGIN_PATH : ${qca2_ossl}/lib/qt4/plugins

View File

@ -1,23 +1,25 @@
{ stdenv, fetchurl }:
{ stdenv, fetchgit }:
stdenv.mkDerivation rec {
name = "makeself-2.1.5";
src = fetchurl {
url = "http://megastep.org/makeself/makeself.run";
sha256 = "0khs19xpid4ng0igrjyz3vsi6a5xyixrrrhgdxpdhd2wnf5nc9w2";
name = "makeself-2.2.0";
src = fetchgit {
url = "https://github.com/megastep/makeself.git";
rev = "b836b9281ae99abe1865608b065551da56c80719";
sha256 = "f7c97f0f8ad8128f2f1b54383319f2cc44cbb05b60ced222784debdf326f23ad";
};
unpackPhase = "sh ${src}";
installPhase = ''
cd ${name}
mkdir -p $out/{bin,share/{${name},man/man1}}
mv makeself.lsm README $out/share/${name}
mv makeself.lsm README.md $out/share/${name}
mv makeself.sh $out/bin/makeself
mv makeself.1 $out/share/man/man1/
mv makeself-header.sh $out/share/${name}
sed -e 's|HEADER=`dirname $0`/makeself-header.sh|HEADER=`dirname $0`/../share/${name}/makeself-header.sh|' -i $out/bin/makeself
'';
meta = {
meta = with stdenv.lib; {
homepage = http://megastep.org/makeself;
description = "Utility to create self-extracting packages";
license = licenses.gpl2;
maintainer = maintainers.wmertens;
platforms = platforms.all;
};
}

View File

@ -2,13 +2,13 @@
cabal.mkDerivation (self: {
pname = "nc-indicators";
version = "0.1";
sha256 = "19amwfcbwfxcj0gr7w0vgxl427l43q3l2s3n3zsxhqwkfblxmfy5";
version = "0.2";
sha256 = "0z3h0d3cl0xapysq5sh1rnbp8fg8adlq0x3i4ql9xin9in29q27q";
isLibrary = false;
isExecutable = true;
buildDepends = [ attoparsec gtk hflags lens pipes stm ];
meta = {
homepage = "https://github.com/nilcons/nc-indicators/issues";
homepage = "https://github.com/nilcons/nc-indicators";
description = "CPU load and memory usage indicators for i3bar";
license = self.stdenv.lib.licenses.asl20;
platforms = self.ghc.meta.platforms;

View File

@ -40,7 +40,7 @@ pythonPackages.buildPythonPackage rec {
src = fetchhg {
url = "https://code.google.com/p/ocropus.ocropy";
tag = "a6e0fbd820ce";
rev = "a6e0fbd820ce";
sha256 = "1s0v0gd6psfjp6lghwl2dj49h18mgf2n2z8hqzw8430nzhglnlvr";
};

View File

@ -1,5 +1,5 @@
{ stdenv, fetchgit, pkgconfig, makeWrapper, libsoup, webkit, gtk3, gnutls, json_c,
m4, glib_networking, gsettings_desktop_schemas }:
m4, glib_networking, gsettings_desktop_schemas, dconf }:
stdenv.mkDerivation {
name = "dwb-2014-06-17";
@ -19,7 +19,7 @@ stdenv.mkDerivation {
preFixup=''
wrapProgram "$out/bin/dwb" \
--prefix GIO_EXTRA_MODULES : "${glib_networking}/lib/gio/modules" \
--prefix GIO_EXTRA_MODULES : "${glib_networking}/lib/gio/modules:${dconf}/lib/gio/modules" \
--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:$out/share"
wrapProgram "$out/bin/dwbem" \
--prefix GIO_EXTRA_MODULES : "${glib_networking}/lib/gio/modules"

View File

@ -0,0 +1,337 @@
# This file is generated from generate_nix.rb
# Execute the following command in a temporary directory to update the file.
#
# ruby generate_nix.rb > default.nix
{ stdenv, fetchurl, config
, alsaLib
, atk
, cairo
, cups
, dbus_glib
, dbus_libs
, fontconfig
, freetype
, gconf
, gdk_pixbuf
, glib
, glibc
, gst_plugins_base
, gstreamer
, gtk
, libX11
, libXScrnSaver
, libXext
, libXinerama
, libXrender
, libXt
, libcanberra
, libgnome
, libgnomeui
, mesa
, nspr
, nss
, pango
, heimdal
, pulseaudio
, systemd
}:
let
version = "30.0";
sources = [
{ locale = "ach"; arch = "linux-i686"; sha256 = "44d2fc9d491b6c001e35cff6e5f1c38c8561d24f8fe2dfb4d79365bcabe965ea"; }
{ locale = "ach"; arch = "linux-x86_64"; sha256 = "e9fb52a3b82a1434b7fa3bae606749819672c96ce8678c51f1fdbc68520e26bf"; }
{ locale = "af"; arch = "linux-i686"; sha256 = "bfce74c891ea370ce4e0fe43d578c3c0050d2655fff7372806ed6be338b2c438"; }
{ locale = "af"; arch = "linux-x86_64"; sha256 = "18408a9c3f3b8c4d9f8cfe067ac23ddcdd3d3a7a22892ba8d74de5679a064db6"; }
{ locale = "an"; arch = "linux-i686"; sha256 = "601efbf7944408ba1ac35831eaa92c4910cd904bfadc32895ff8d756c70ae934"; }
{ locale = "an"; arch = "linux-x86_64"; sha256 = "0ba4c272ebac9ecafe5dbfb7fbba1cd2790d126f5b1756ab9a323c94b644df0b"; }
{ locale = "ar"; arch = "linux-i686"; sha256 = "23ea3168aea75b044fa217b78b01a2dc8c9dd92171d726c4a78c23cffc474469"; }
{ locale = "ar"; arch = "linux-x86_64"; sha256 = "dae2c1634e17b8c3e276e4c758c4d4c3b1b0d6006adac8e420c13b6f09a6cf53"; }
{ locale = "as"; arch = "linux-i686"; sha256 = "7d36bd4589556374822f2ab5dd102d557257b5e0b529d1c963f96e9ab6a08850"; }
{ locale = "as"; arch = "linux-x86_64"; sha256 = "c13ccf3546bafcfeb41c33762e41af249306d4bcfd3ad7fc957db481372be0dc"; }
{ locale = "ast"; arch = "linux-i686"; sha256 = "853310674d7011956d760883af15b8e343250f8fc3acb3067e0f5a3d978c06ff"; }
{ locale = "ast"; arch = "linux-x86_64"; sha256 = "2b938081e8672ed5ae16c40c6300e585a26f54da278726f48b98f3ca3e065662"; }
{ locale = "be"; arch = "linux-i686"; sha256 = "b9acce210f2adf188ba9a3d92774a846a263baa5e076bb9452b89ca5609d6ac8"; }
{ locale = "be"; arch = "linux-x86_64"; sha256 = "dd2a33ee1ed8c848454b6e64a0c1527f193d070e4d867c4f13fa84f39c9bfecd"; }
{ locale = "bg"; arch = "linux-i686"; sha256 = "ee060cd395ef28bbad4be74aa42e2a51e7ad866183d139bffbcc7634dc94d738"; }
{ locale = "bg"; arch = "linux-x86_64"; sha256 = "11a5dd807083da8c3132d9d6518dc674642418eff1fccf68e451ac67b90f141a"; }
{ locale = "bn-BD"; arch = "linux-i686"; sha256 = "339d286f7f8f469bb6f9f85a8b21a745ecc42717dc91c21c7db88822e9be661a"; }
{ locale = "bn-BD"; arch = "linux-x86_64"; sha256 = "fc3f06743a84a7684e43cd4efedb02a126dd119f6141da49c6120f1bbcdf9392"; }
{ locale = "bn-IN"; arch = "linux-i686"; sha256 = "c585982368f258a8a728f782c37428311f0b6a6512231c077a439dd93645c3a2"; }
{ locale = "bn-IN"; arch = "linux-x86_64"; sha256 = "00b9af4425050ec42b4a45a3c4a16700edcc66297331b601950fb81421ef8eb4"; }
{ locale = "br"; arch = "linux-i686"; sha256 = "b86d944592f16f5f0e558106e3464248e3d686f45527a40fb64aaa79d9f73422"; }
{ locale = "br"; arch = "linux-x86_64"; sha256 = "b894c12508f0b0a892154ea61fb2bb01947929041a63518f7c405ed976cc4d3f"; }
{ locale = "bs"; arch = "linux-i686"; sha256 = "f7da0fead608f63c4a5be92fed9e0109fbe7288948d15dde05e10bba80b47743"; }
{ locale = "bs"; arch = "linux-x86_64"; sha256 = "1cb090f9b16bcae95055377bc14a531697c480ad50e3a098dbd572770924d558"; }
{ locale = "ca"; arch = "linux-i686"; sha256 = "0b36330715f8909e1515c535a06f4e3fdd7660de11b3424b4ce88f336561935f"; }
{ locale = "ca"; arch = "linux-x86_64"; sha256 = "c6e9e545d09e589fd5fbfd2c6482a5ef366c470e294823b3ba05c5e728bca2c2"; }
{ locale = "cs"; arch = "linux-i686"; sha256 = "ff1ca239be0e99b923c63c5bbc425dd2989bc40dbdc82dd731d7173fd539406a"; }
{ locale = "cs"; arch = "linux-x86_64"; sha256 = "fe8472d6a4bf9fcda3caef51449fc3e20e1fbadbb772b330a012ffa7219afae3"; }
{ locale = "csb"; arch = "linux-i686"; sha256 = "db1b7dbc7b0cd564a04b3a37827e8d77277cd7ba6a59403c45115d34e637f463"; }
{ locale = "csb"; arch = "linux-x86_64"; sha256 = "023dd75e02f41a2ce9991fb40a8a46767f1a10da876a390035a084c5b97bd9d2"; }
{ locale = "cy"; arch = "linux-i686"; sha256 = "9a6ac60099b03bdeb71c1a7739dafeff4b1682ffc43997191196e1f590421afa"; }
{ locale = "cy"; arch = "linux-x86_64"; sha256 = "a5f2030fb08c0dd6dff95310209ed7c6ee613680dd500f00e30e26c547f9c249"; }
{ locale = "da"; arch = "linux-i686"; sha256 = "99a893ac19b0ca28177c8957d7296e6deef9ddb36a6b5b17823cb1e6fc9ec683"; }
{ locale = "da"; arch = "linux-x86_64"; sha256 = "69f29e795f203fe47e22daf1259c2ecfb39c362babefbbccb31405f4632f236b"; }
{ locale = "de"; arch = "linux-i686"; sha256 = "925aac0800ce63a88fadc945da40b00ed6dde327637821518a372d7affb6e450"; }
{ locale = "de"; arch = "linux-x86_64"; sha256 = "d86c5d2102a95ff5a6e580a1ca7af25c2f470211182ef70e988b29b195be6dd4"; }
{ locale = "el"; arch = "linux-i686"; sha256 = "af07fac82dea32d33bd6bc440e2a645eb160d196cf0d4883b878d3d2c584f81a"; }
{ locale = "el"; arch = "linux-x86_64"; sha256 = "fcc96c25422837f19f9ff6cde02c81c4a5a3b7c8e6809b90c8761519571db1f6"; }
{ locale = "en-GB"; arch = "linux-i686"; sha256 = "758f7bb669743d6067e416c26f43806b16ddd16511a6818373e70960cbbd7151"; }
{ locale = "en-GB"; arch = "linux-x86_64"; sha256 = "d46ba3d642bf43fca46dfb29efb5d08a15f114eb9facc868e86c31f7c9c98014"; }
{ locale = "en-US"; arch = "linux-i686"; sha256 = "4bca44a1ba94bf5616f7ea650e37cd3e5a719546def9e4a08ee88aedbc3a4db6"; }
{ locale = "en-US"; arch = "linux-x86_64"; sha256 = "3303cc600153d0198dace9826b6883aa510d4e380aa985b092b1da67ad865625"; }
{ locale = "en-ZA"; arch = "linux-i686"; sha256 = "13736870573863aab644bf2be2219fe4b5c6bde4bd79b84f22e12d39e7cda6e0"; }
{ locale = "en-ZA"; arch = "linux-x86_64"; sha256 = "7e88fa9f355f6787d38e75d86d5b592a1a2cec208255f276887f53a12beb9e97"; }
{ locale = "eo"; arch = "linux-i686"; sha256 = "ae4446e223c0169dd0b56db58760fdb323a2bec8135e45c79d385d895b64cee8"; }
{ locale = "eo"; arch = "linux-x86_64"; sha256 = "202f61dd8e5506594ae70bbee9150d86c8037887f8345871dc5c1c9e498b1d66"; }
{ locale = "es-AR"; arch = "linux-i686"; sha256 = "8fb276ed26fd46fceb029fbade706cb6e55d2958f03400ec1290784c533888c4"; }
{ locale = "es-AR"; arch = "linux-x86_64"; sha256 = "78130525d30d7c592bb63d7cedf3ab5db804d457c4d127d90b93d94501ad7b3c"; }
{ locale = "es-CL"; arch = "linux-i686"; sha256 = "ef6bf393a681f4a08031eeda61bba3614ebfab222fed43f9f8b21cfa8eb3862e"; }
{ locale = "es-CL"; arch = "linux-x86_64"; sha256 = "e56224bca0ebfab9eedecafafd792e48cb67e3f8741c4d5a94c8f74f634cecf6"; }
{ locale = "es-ES"; arch = "linux-i686"; sha256 = "9e007e6aa0f8aa3d1fac5dc13e98f81c23e6ff1e574545c021f8f7feeff86ce2"; }
{ locale = "es-ES"; arch = "linux-x86_64"; sha256 = "d4ff94f46fd086300992a30a1c4a8aa97ad7164d6cd26e82b20b5d0680b38169"; }
{ locale = "es-MX"; arch = "linux-i686"; sha256 = "9db42a0557838b23ac4937adfec407804e624e679e9ffd6da739d17cdfbaab78"; }
{ locale = "es-MX"; arch = "linux-x86_64"; sha256 = "d42d619d6da78d0bbcb32b0a93a2eaa623eadb3a5af43e5b8b14400e6e969779"; }
{ locale = "et"; arch = "linux-i686"; sha256 = "5947822f3f02bd4ba530ad978de1a9d237981e3abdf1598e44095c650794d1ff"; }
{ locale = "et"; arch = "linux-x86_64"; sha256 = "7521a4db287bb928f50b64817f3631e96ea4cead81b1a84ab7c3b930b3450e86"; }
{ locale = "eu"; arch = "linux-i686"; sha256 = "44095e98e74205fa012a2c0c636de3fe9cfb79d5729abf15214c1e7734946014"; }
{ locale = "eu"; arch = "linux-x86_64"; sha256 = "2032dfbc82a9aca1a2f4cf67e6089400bf305d13906f048c5c9b906a7201a9fb"; }
{ locale = "fa"; arch = "linux-i686"; sha256 = "469b8008287c93e152e762e82fb61644384c1e2631a6c45033503652daed09b1"; }
{ locale = "fa"; arch = "linux-x86_64"; sha256 = "61ea0d8941d22083f918d014d56a613788d1f4f549e5a62d50a1f9071439a36f"; }
{ locale = "ff"; arch = "linux-i686"; sha256 = "81a0083e5e4136e3ab3e6db0e2adcedfae7572722655a9cb8b9ca388c6057342"; }
{ locale = "ff"; arch = "linux-x86_64"; sha256 = "0efe16da918288754a3af816d72448a73690eb71b110cf3ff0586ee7505b9735"; }
{ locale = "fi"; arch = "linux-i686"; sha256 = "a0ee069e7c3100b921aab7c54c5d32741df4e058f52cb7f42acb2643bd534b30"; }
{ locale = "fi"; arch = "linux-x86_64"; sha256 = "55c84d504603d648e7d72a2fb8badb0bc9148cb376bb0cc6054f091867cb2613"; }
{ locale = "fr"; arch = "linux-i686"; sha256 = "9c9abea13db23ef5ef8c9a3ccb5a0702b44a8db2402f43f01a478eb61e7ddf34"; }
{ locale = "fr"; arch = "linux-x86_64"; sha256 = "ce26fc67cbc2031880ffa3529a59ca4122016258ab1c023e23247c26308b6a3e"; }
{ locale = "fy-NL"; arch = "linux-i686"; sha256 = "4a734880ed65a207d98630647a341644df4f68149c50ce5e683bb21b5c27f2c6"; }
{ locale = "fy-NL"; arch = "linux-x86_64"; sha256 = "bace955c686456d7894ca7bc1cf854eb158d6183050318efc73768e232c9a413"; }
{ locale = "ga-IE"; arch = "linux-i686"; sha256 = "4801f40ebd820b8f229cfcd04a04351fcee9f78268af1c9863089ef6c64d736a"; }
{ locale = "ga-IE"; arch = "linux-x86_64"; sha256 = "c417c0182e6f706473bc4b7cf8c14aec96f96e21c17b8593b71ff38c97f7e9d2"; }
{ locale = "gd"; arch = "linux-i686"; sha256 = "15a9d316d472d2918eff0c6f02600e40a8f62d7ef53ab14c57537fdda0b5257a"; }
{ locale = "gd"; arch = "linux-x86_64"; sha256 = "8fcdcf093148222865a905586774dae5d805ef22c01afadeaabe3f0c7b315dba"; }
{ locale = "gl"; arch = "linux-i686"; sha256 = "83b0ccfe7cf7166899d17b2c9b1ea8effda9cf02024698f8db8f943a388bb3dc"; }
{ locale = "gl"; arch = "linux-x86_64"; sha256 = "550026595e6e59405b5869183af056ba5a60a303270f1a176ef25e3db1c70289"; }
{ locale = "gu-IN"; arch = "linux-i686"; sha256 = "7e7dc86fa805808931ba57455b99c9273a4b0aa60998affce3c4b06f0ae7fc70"; }
{ locale = "gu-IN"; arch = "linux-x86_64"; sha256 = "e0f35d7fe7875785e3749131cf86c5cbea5cbd7b3abd2c2c69f5f8376d3e53d7"; }
{ locale = "he"; arch = "linux-i686"; sha256 = "5c200c8da3209c2120a8576c30ab609331b52807d0640daaa1a70f665c776969"; }
{ locale = "he"; arch = "linux-x86_64"; sha256 = "6923a64d1ac5453453f148d38f116faca41be5b1d0a13d4f128bb73db67cb8e2"; }
{ locale = "hi-IN"; arch = "linux-i686"; sha256 = "6a7e5d06169d6dd87e505012604c93a28440156a3f81e6fe24d567f9c2b2a919"; }
{ locale = "hi-IN"; arch = "linux-x86_64"; sha256 = "56801593b9dd5ecefed8d7eaf438879dd23006ffff9a31c543861259dedf8263"; }
{ locale = "hr"; arch = "linux-i686"; sha256 = "4573cd0269639d122496bcaf842d8c741f4d54e8f57d0690b97d8e7e86ee7e74"; }
{ locale = "hr"; arch = "linux-x86_64"; sha256 = "753984384829229601fbe55d0b6615f3432fdf9babe908fb642f6ac79c749727"; }
{ locale = "hu"; arch = "linux-i686"; sha256 = "c330478e6e77eff117bce58e17661b83a30308f0a680f648fbf06d1c00f3883c"; }
{ locale = "hu"; arch = "linux-x86_64"; sha256 = "9d118ba236aa7a9b517278c375aa4e4fa65f85c71b8bea9c41702f6ae7b815cb"; }
{ locale = "hy-AM"; arch = "linux-i686"; sha256 = "48c1691073b6ede77f5c5d5ae07af7372f17b9f52fd92950c2cca0a01b3b340e"; }
{ locale = "hy-AM"; arch = "linux-x86_64"; sha256 = "beda26cefeeeeee59ea52fdd28e1e3025ca4cc3124541fc6825100a61eb398d8"; }
{ locale = "id"; arch = "linux-i686"; sha256 = "8cf6d0bc2d4bcc68a5ddc935c3bd6ed19a63284dc3227e849be729645a6171d4"; }
{ locale = "id"; arch = "linux-x86_64"; sha256 = "8be5900b83840871ffb6faba08fea9b35f9f396cae08b228c68e333719fb819f"; }
{ locale = "is"; arch = "linux-i686"; sha256 = "7c167389105063b84d507b09c689fa18bf854fd695010c8273b9711b21a24034"; }
{ locale = "is"; arch = "linux-x86_64"; sha256 = "c79321c83c9e654f6eaf96ddf5d24f279d517fbf35dfdf923acf026124919598"; }
{ locale = "it"; arch = "linux-i686"; sha256 = "a3eb17e0eda3cbf8ffbbd1ecd1716929ac87a801f060dd8ed5291298667775a9"; }
{ locale = "it"; arch = "linux-x86_64"; sha256 = "3742453f0748911b393fed804e5827f014cc595a9df4516438dfa163d5050411"; }
{ locale = "ja"; arch = "linux-i686"; sha256 = "fa030c64e04766ae5200370586c08b2f25627343586cd8a0486e583f345c466e"; }
{ locale = "ja"; arch = "linux-x86_64"; sha256 = "fddeae03ffdfef0f6cc999807e001ea931c15b1833da48655bcb5845f1e017a3"; }
{ locale = "kk"; arch = "linux-i686"; sha256 = "39d94b10fa751faf7423e5d43cd07ef4485ff26e21e47d106d2268058e2f33d9"; }
{ locale = "kk"; arch = "linux-x86_64"; sha256 = "1dc7138dd5c08088479c5e7e8054d7ed640504860a0043ecea2c8b0c9c1892f9"; }
{ locale = "km"; arch = "linux-i686"; sha256 = "0d12a305de4a63fc6c6394bd4044f44ca3626cbc41ca9ef1adad6d5041f6f1fd"; }
{ locale = "km"; arch = "linux-x86_64"; sha256 = "7710091695dd100b7f33585fce58c54fec462a96540a7d791f1935088f21fadf"; }
{ locale = "kn"; arch = "linux-i686"; sha256 = "b039e6a1114522ccae10b89ab794a222966fbf0914513b3c14f05c082a78b922"; }
{ locale = "kn"; arch = "linux-x86_64"; sha256 = "cf82965b25d3990a57d861d688f1bd69e5b069fe281937274060ebe36ddbb8a6"; }
{ locale = "ko"; arch = "linux-i686"; sha256 = "8b9378d39d7b42852c2bb537b0e85312760c343e6485826ed949ab4617293025"; }
{ locale = "ko"; arch = "linux-x86_64"; sha256 = "4b946a0cbedad2b8d0c3598c04eeb058cea05d6d7e6388e4cfa3146a40f7c449"; }
{ locale = "ku"; arch = "linux-i686"; sha256 = "11950c4a54c6a165e924fb6e68bcc46d63b5fddfcd2561c58a0ce401c0146d36"; }
{ locale = "ku"; arch = "linux-x86_64"; sha256 = "37a07a4e059580c31433b419bcd61d928ad1db7e607cf8443378472d54b61b78"; }
{ locale = "lij"; arch = "linux-i686"; sha256 = "c0efca49f31800a3773b0d05add56b195d1cbea287108803bb1ef5249a0dc94f"; }
{ locale = "lij"; arch = "linux-x86_64"; sha256 = "6e4b2d8c5e9942bc469f722110ba310b2ccdc4dda6e3baee93ae54012ae658a2"; }
{ locale = "lt"; arch = "linux-i686"; sha256 = "acde9010aa815f6645868b03f3d68d9a24c450ed830f063e2846ac1219ee628b"; }
{ locale = "lt"; arch = "linux-x86_64"; sha256 = "c2491cd3e5d11c302d7ec3191d646e2073c46f69966fc382901a93d16fb0c902"; }
{ locale = "lv"; arch = "linux-i686"; sha256 = "7411de62c4d8c01c8bb15b3f2dfc2e2ed17755e2f9856ead8e5e0fd05971ffd5"; }
{ locale = "lv"; arch = "linux-x86_64"; sha256 = "e8e57e629396eb180e0041a50ae98ecb2292f514d423423748e4d4cebc54fb59"; }
{ locale = "mai"; arch = "linux-i686"; sha256 = "26a053e48f4e6f04e4856a0dcb26e577a6ddb99afc883786d9c260d57e5e4a6d"; }
{ locale = "mai"; arch = "linux-x86_64"; sha256 = "86be2c736aa5ccf926d44f24afdb2d40c28444b5bd6cf090f9a847199b38b492"; }
{ locale = "mk"; arch = "linux-i686"; sha256 = "dcf7759bcde70158298ad9e2434e37d4e8240e00589a83dd8dbba53c35466a58"; }
{ locale = "mk"; arch = "linux-x86_64"; sha256 = "056297d6404794a8da78aeceb620b0ebbcb38a693ee1079cc02e4d0411e40ec3"; }
{ locale = "ml"; arch = "linux-i686"; sha256 = "2d632b3a5b60f18955906adca80b7ac7af3bfa39d03afd308efd1136cfc8971d"; }
{ locale = "ml"; arch = "linux-x86_64"; sha256 = "b54a9d47cadeae4f92d22a362ca887a18a16ef64500149ac8eb9355dbbe5971b"; }
{ locale = "mr"; arch = "linux-i686"; sha256 = "e66b22488bf2c772fa6d29cf43f3e9c1aa2a1a867620a1144af8cb92c2647651"; }
{ locale = "mr"; arch = "linux-x86_64"; sha256 = "da982205e9b659dd66ab05ca815324642bed2117e668e67ad620bb2d87c5d1c8"; }
{ locale = "ms"; arch = "linux-i686"; sha256 = "ad39ffa6d6d765c1e983d885f5d139a28e481d536068d517b4807137fa8d3036"; }
{ locale = "ms"; arch = "linux-x86_64"; sha256 = "fb1b6ed5e2e7247beb69f3d0ad937f76ce7c1107ccdad742ff5085d4b3a8da98"; }
{ locale = "nb-NO"; arch = "linux-i686"; sha256 = "5220da4627863f9fa1c11886e9c19c315547afafa96c98b22a1a4359c75f1056"; }
{ locale = "nb-NO"; arch = "linux-x86_64"; sha256 = "5f9d60faadc7b76b010cd9cf35922b1881377b535e8afc5d9b974651156df866"; }
{ locale = "nl"; arch = "linux-i686"; sha256 = "357b28841ea861b8297a4986460d1d265b27202c37bb296dcc69224f9b07fc51"; }
{ locale = "nl"; arch = "linux-x86_64"; sha256 = "9a8505da2fe045ab6c2a2277d2d043374a26f106a5966b00f42e22fb26cf929a"; }
{ locale = "nn-NO"; arch = "linux-i686"; sha256 = "f115bb50d1e052584caf7363db875ae222ee37449fa151e2f313c157a6274d76"; }
{ locale = "nn-NO"; arch = "linux-x86_64"; sha256 = "2e7829a8a20c946bddce13b7b3d1b3600f90d90d2438f3eb69188d47203b264d"; }
{ locale = "or"; arch = "linux-i686"; sha256 = "9ad48bdf2b7f1deedb05bdcc49740d5075ebf6ec228d82a7ed455c6bb36d7cb0"; }
{ locale = "or"; arch = "linux-x86_64"; sha256 = "a007bc73fb1ea7765016e9faebac2c4f5e0111a45b3d75d1e55f4de8931796a2"; }
{ locale = "pa-IN"; arch = "linux-i686"; sha256 = "8a38d2b1516ed4b58e36d266cd25a5bd10548f9e412076c9b4f1f27256c98c2a"; }
{ locale = "pa-IN"; arch = "linux-x86_64"; sha256 = "664fa562261532d0f6bad10b84e15d47b69073768c2d12986c8d776eb1af8ddd"; }
{ locale = "pl"; arch = "linux-i686"; sha256 = "3bb8963f1e3dcdb22cc55feebb2583fefd6f3760f4e6f2cc754174079d4ca07f"; }
{ locale = "pl"; arch = "linux-x86_64"; sha256 = "710f1d86d2974d6ad3c63ebc0873518fd59f218ba07b27d06fb75c83af2c632e"; }
{ locale = "pt-BR"; arch = "linux-i686"; sha256 = "cd2fafbd2291bad8481c4086db3c2973a7869b28a5e68a5ff199079814c6b3fc"; }
{ locale = "pt-BR"; arch = "linux-x86_64"; sha256 = "f0ba5dc2366757841afb9c9f7799c40667304c36efe7da284202e8e7a45aa1fc"; }
{ locale = "pt-PT"; arch = "linux-i686"; sha256 = "051af14810ad0cee4487757833f1f5b4a6f6f903f3cecf00d00410c1324d9ce4"; }
{ locale = "pt-PT"; arch = "linux-x86_64"; sha256 = "82102b33dc1989bc3aa49da3915baf7e4012afe6e4bd7f80a301dfe847f3dbbe"; }
{ locale = "rm"; arch = "linux-i686"; sha256 = "02051668e46d98f4e2e5becc3192f6173dfdf3a48cc82264c5821be06c5e12a0"; }
{ locale = "rm"; arch = "linux-x86_64"; sha256 = "9600c1d272785b946058ffac9e57a8b1701d065f24fa940ad22e4b5aec2efad9"; }
{ locale = "ro"; arch = "linux-i686"; sha256 = "7f17cbd3041396135eee08eac597c8c6a936e5a33d67d2b5de8ae157a56719ad"; }
{ locale = "ro"; arch = "linux-x86_64"; sha256 = "ba1de85abe53a7d66f6311d6a202d91f86e871bace168cf60a759ab0e17eccdb"; }
{ locale = "ru"; arch = "linux-i686"; sha256 = "9dcd0c2b5671fc5849b01f2932504a7217fca9a4b4eca8e9b6ff8f5a146517e2"; }
{ locale = "ru"; arch = "linux-x86_64"; sha256 = "725214900968e4e648d3d13635bf72d34910eb31a30b83a3e7ba9c5c4085c2d7"; }
{ locale = "si"; arch = "linux-i686"; sha256 = "d22ed75aa727351efcdba1cffe8e24ff305943c9a3072cac08b004677cf6a028"; }
{ locale = "si"; arch = "linux-x86_64"; sha256 = "89d60c682413949a6dad4b7fd49cc4508c4e067fe5847c5f21d5e25a953f195f"; }
{ locale = "sk"; arch = "linux-i686"; sha256 = "4ecbc58df00eaf4fafb1c33a93493bdd3e544562a67c60e2d4d93da90d369261"; }
{ locale = "sk"; arch = "linux-x86_64"; sha256 = "75baa2c5153e282e2671d6222b7fc8c3b9cfc2b9ee0a595a4451fd314a928fb4"; }
{ locale = "sl"; arch = "linux-i686"; sha256 = "53e2ae3525d0bd2005a86bf7ed3f27ca66906ddfceb85a738bd60e46ba2df773"; }
{ locale = "sl"; arch = "linux-x86_64"; sha256 = "2dcc5592a49767dc3f2a7d40387bb550fd36724419ff567f9d107e32b2cf2d6d"; }
{ locale = "son"; arch = "linux-i686"; sha256 = "d3b7372c59b21d0393768197517b3666ab78705b04a6e84a3345da031bad3776"; }
{ locale = "son"; arch = "linux-x86_64"; sha256 = "fc017e7a18701880c7a54c23a0f77a6521aae17880dbc562e2b37167ba918fa0"; }
{ locale = "sq"; arch = "linux-i686"; sha256 = "7f9c9100c559ebfbfff35adc694199079930f4bf9f1f6a820c0e17d80ea0e12b"; }
{ locale = "sq"; arch = "linux-x86_64"; sha256 = "0f3fcddabab8263eb4c238942c45c0b5efc20c169948da24c56ed401a85209dc"; }
{ locale = "sr"; arch = "linux-i686"; sha256 = "6281e2f849b3c530ff383cfd4cdc4ab06115362c3d57ba8133a9f799af08e815"; }
{ locale = "sr"; arch = "linux-x86_64"; sha256 = "368ca83faa5ef3640f71d977916614369ebac1622681e828b75e9abf6ebeb425"; }
{ locale = "sv-SE"; arch = "linux-i686"; sha256 = "9f77f497fc3e8c585bd546c0bb95c92f9f37d683e092c0762b3fe0022b6d39b5"; }
{ locale = "sv-SE"; arch = "linux-x86_64"; sha256 = "0aa21764f0ca58591e3cfebba75196edd51a8fdbadb738f036994178c9612a67"; }
{ locale = "ta"; arch = "linux-i686"; sha256 = "463ce70405d84945c201cca56c84171e097e6a0420d38cd453a0836fad82f09c"; }
{ locale = "ta"; arch = "linux-x86_64"; sha256 = "db7e78bc1f4bcb573474806d19324eca58f42008fb0b0fa856f701f1430aeefd"; }
{ locale = "te"; arch = "linux-i686"; sha256 = "18643daf675f8ef9785a0039d012c3a8ce96f4d228426651c5f09c292cbfb335"; }
{ locale = "te"; arch = "linux-x86_64"; sha256 = "d9f8a260fc47b608fd523c61e9c6981776997f4b7fc247e794be32d177abfbc0"; }
{ locale = "th"; arch = "linux-i686"; sha256 = "e03b80d55d2a545ab3219c5e88ed6b7d6974945e32321a2fc96039a6996638f6"; }
{ locale = "th"; arch = "linux-x86_64"; sha256 = "0416fd2b7e7ddde59a101fcba8258622a83b739effb327984fa8405e634c2121"; }
{ locale = "tr"; arch = "linux-i686"; sha256 = "75a49ce141c9a04254185b62af72c7e8c214e19e5257ff308b294aee6ac49a28"; }
{ locale = "tr"; arch = "linux-x86_64"; sha256 = "0845a554b299b848d35894144d3ba5c7e0b808bcc9b2732e904463258ca73cb7"; }
{ locale = "uk"; arch = "linux-i686"; sha256 = "a89f58c0f20a3ff7e609f572a4786f06b48886b7e2d303824417f42af49c8df2"; }
{ locale = "uk"; arch = "linux-x86_64"; sha256 = "b45768588aaf80917c8ad40d62835cc96c3dadf97715234e66542b96eeb8db8e"; }
{ locale = "vi"; arch = "linux-i686"; sha256 = "3fc35e59ecbbdf1b76b5b66e962a60eb724d9514d622879108725bcf7881fd1e"; }
{ locale = "vi"; arch = "linux-x86_64"; sha256 = "88116edeeecbfe1ac03af0da26aff84bc3aa5ba00574e899ec08e0d68243f509"; }
{ locale = "xh"; arch = "linux-i686"; sha256 = "a3afd3ac14049c72a9be28fb9a0849e4d3c5c2f13cb160c480988c4231679329"; }
{ locale = "xh"; arch = "linux-x86_64"; sha256 = "569587e9cc4cd99899d2939367d56f2e4e9ae333b583064a648f05a8b0b58e2c"; }
{ locale = "zh-CN"; arch = "linux-i686"; sha256 = "358e44998142e56356b839a51dff97fe85e6293424bd0c148decf61f01b6125b"; }
{ locale = "zh-CN"; arch = "linux-x86_64"; sha256 = "7b5a84dbbe361a775aaadad8fd328e24f6cf2e336297f1d5906f51ff5d3dfae7"; }
{ locale = "zh-TW"; arch = "linux-i686"; sha256 = "cf2cb9bed37dffe178a524ef5fe983e0e8b18f17c999e98474ae13e012da54da"; }
{ locale = "zh-TW"; arch = "linux-x86_64"; sha256 = "aa0f1c5fb96dc4585e70fbcc291c6842be25e5d59be8bf39e8dc0232e9f1a76c"; }
{ locale = "zu"; arch = "linux-i686"; sha256 = "775f6507ae8d6c2ef6e29e6b4d00453dcf9a0c9651eb9da482c78b5ebe64f2cd"; }
{ locale = "zu"; arch = "linux-x86_64"; sha256 = "603510372a52497a8e41468dbc193afa25b0615f504f4548201deb89f27bd354"; }
];
arch = if stdenv.system == "i686-linux"
then "linux-i686"
else "linux-x86_64";
isPrefixOf = prefix: string:
builtins.substring 0 (builtins.stringLength prefix) string == prefix;
sourceMatches = locale: source:
(isPrefixOf source.locale locale) && source.arch == arch;
systemLocale = config.i18n.defaultLocale or "en-US";
defaultSource = stdenv.lib.findFirst (sourceMatches "en-US") {} sources;
source = stdenv.lib.findFirst (sourceMatches systemLocale) defaultSource sources;
in
stdenv.mkDerivation {
name = "firefox-bin-${version}";
src = fetchurl {
url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/${version}/${source.arch}/${source.locale}/firefox-${version}.tar.bz2";
inherit (source) sha256;
};
phases = "unpackPhase installPhase";
libPath = stdenv.lib.makeLibraryPath
[ stdenv.gcc.gcc
alsaLib
atk
cairo
cups
dbus_glib
dbus_libs
fontconfig
freetype
gconf
gdk_pixbuf
glib
glibc
gst_plugins_base
gstreamer
gtk
libX11
libXScrnSaver
libXext
libXinerama
libXrender
libXt
libcanberra
libgnome
libgnomeui
mesa
nspr
nss
pango
heimdal
pulseaudio
systemd
] + ":" + stdenv.lib.makeSearchPath "lib64" [
stdenv.gcc.gcc
];
# "strip" after "patchelf" may break binaries.
# See: https://github.com/NixOS/patchelf/issues/10
dontStrip = 1;
installPhase =
''
mkdir -p "$prefix/usr/lib/firefox-bin-${version}"
cp -r * "$prefix/usr/lib/firefox-bin-${version}"
mkdir -p "$out/bin"
ln -s "$prefix/usr/lib/firefox-bin-${version}/firefox" "$out/bin/"
for executable in \
firefox mozilla-xremote-client firefox-bin plugin-container \
updater crashreporter webapprt-stub
do
patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
"$out/usr/lib/firefox-bin-${version}/$executable"
done
for executable in \
firefox mozilla-xremote-client firefox-bin plugin-container \
updater crashreporter webapprt-stub libxul.so
do
patchelf --set-rpath "$libPath" \
"$out/usr/lib/firefox-bin-${version}/$executable"
done
# Create a desktop item.
mkdir -p $out/share/applications
cat > $out/share/applications/firefox.desktop <<EOF
[Desktop Entry]
Type=Application
Exec=$out/bin/firefox
Icon=$out/lib/firefox-bin-${version}/chrome/icons/default/default256.png
Name=Firefox
GenericName=Web Browser
Categories=Application;Network;
EOF
'';
meta = with stdenv.lib; {
description = "Mozilla Firefox, free web browser";
homepage = http://www.mozilla.org/firefox/;
license = {
shortName = "unfree"; # not sure
fullName = "unfree";
url = http://www.mozilla.org/en-US/foundation/trademarks/policy/;
};
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,217 @@
# TODO share code with thunderbird-bin/generate_nix.rb
version = if ARGV.empty?
"latest"
else
ARGV[0]
end
base_path = "download-installer.cdn.mozilla.net/pub/firefox/releases"
arches = ["linux-i686", "linux-x86_64"]
arches.each do |arch|
system("wget", "--recursive", "--continue", "--no-parent", "--reject-regex", ".*\\?.*", "--reject", "xpi", "http://#{base_path}/#{version}/#{arch}/")
end
locales = Dir.glob("#{base_path}/#{version}/#{arches[0]}/*").map do |path|
File.basename(path)
end.sort
locales.delete("index.html")
locales.delete("xpi")
# real version number, e.g. "30.0" instead of "latest".
real_version = Dir.glob("#{base_path}/#{version}/#{arches[0]}/#{locales[0]}/firefox-*")[0].match(/firefox-([0-9.]*)/)[1][0..-2]
locale_arch_path_tuples = locales.flat_map do |locale|
arches.map do |arch|
path = Dir.glob("#{base_path}/#{version}/#{arch}/#{locale}/firefox-*")[0]
[locale, arch, path]
end
end
paths = locale_arch_path_tuples.map do |tuple| tuple[2] end
hashes = IO.popen(["sha256sum", "--binary", *paths]) do |input|
input.each_line.map do |line|
$stderr.puts(line)
line.match(/^[0-9a-f]*/)[0]
end
end
puts(<<"EOH")
# This file is generated from generate_nix.rb
# Execute the following command in a temporary directory to update the file.
#
# ruby generate_nix.rb > default.nix
{ stdenv, fetchurl, config
, alsaLib
, atk
, cairo
, cups
, dbus_glib
, dbus_libs
, fontconfig
, freetype
, gconf
, gdk_pixbuf
, glib
, glibc
, gst_plugins_base
, gstreamer
, gtk
, libX11
, libXScrnSaver
, libXext
, libXinerama
, libXrender
, libXt
, libcanberra
, libgnome
, libgnomeui
, mesa
, nspr
, nss
, pango
, heimdal
, pulseaudio
, systemd
}:
let
version = "#{real_version}";
sources = [
EOH
locale_arch_path_tuples.zip(hashes) do |tuple, hash|
locale, arch, path = tuple
puts(%Q| { locale = "#{locale}"; arch = "#{arch}"; sha256 = "#{hash}"; }|)
end
puts(<<'EOF')
];
arch = if stdenv.system == "i686-linux"
then "linux-i686"
else "linux-x86_64";
isPrefixOf = prefix: string:
builtins.substring 0 (builtins.stringLength prefix) string == prefix;
sourceMatches = locale: source:
(isPrefixOf source.locale locale) && source.arch == arch;
systemLocale = config.i18n.defaultLocale or "en-US";
defaultSource = stdenv.lib.findFirst (sourceMatches "en-US") {} sources;
source = stdenv.lib.findFirst (sourceMatches systemLocale) defaultSource sources;
in
stdenv.mkDerivation {
name = "firefox-bin-${version}";
src = fetchurl {
url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/${version}/${source.arch}/${source.locale}/firefox-${version}.tar.bz2";
inherit (source) sha256;
};
phases = "unpackPhase installPhase";
libPath = stdenv.lib.makeLibraryPath
[ stdenv.gcc.gcc
alsaLib
atk
cairo
cups
dbus_glib
dbus_libs
fontconfig
freetype
gconf
gdk_pixbuf
glib
glibc
gst_plugins_base
gstreamer
gtk
libX11
libXScrnSaver
libXext
libXinerama
libXrender
libXt
libcanberra
libgnome
libgnomeui
mesa
nspr
nss
pango
heimdal
pulseaudio
systemd
] + ":" + stdenv.lib.makeSearchPath "lib64" [
stdenv.gcc.gcc
];
# "strip" after "patchelf" may break binaries.
# See: https://github.com/NixOS/patchelf/issues/10
dontStrip = 1;
installPhase =
''
mkdir -p "$prefix/usr/lib/firefox-bin-${version}"
cp -r * "$prefix/usr/lib/firefox-bin-${version}"
mkdir -p "$out/bin"
ln -s "$prefix/usr/lib/firefox-bin-${version}/firefox" "$out/bin/"
for executable in \
firefox mozilla-xremote-client firefox-bin plugin-container \
updater crashreporter webapprt-stub
do
patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
"$out/usr/lib/firefox-bin-${version}/$executable"
done
for executable in \
firefox mozilla-xremote-client firefox-bin plugin-container \
updater crashreporter webapprt-stub libxul.so
do
patchelf --set-rpath "$libPath" \
"$out/usr/lib/firefox-bin-${version}/$executable"
done
# Create a desktop item.
mkdir -p $out/share/applications
cat > $out/share/applications/firefox.desktop <<EOF
[Desktop Entry]
Type=Application
Exec=$out/bin/firefox
Icon=$out/lib/firefox-bin-${version}/chrome/icons/default/default256.png
Name=Firefox
GenericName=Web Browser
Categories=Application;Network;
EOF
'';
meta = with stdenv.lib; {
description = "Mozilla Firefox, free web browser";
homepage = http://www.mozilla.org/firefox/;
license = {
shortName = "unfree"; # not sure
fullName = "unfree";
url = http://www.mozilla.org/en-US/foundation/trademarks/policy/;
};
platforms = platforms.linux;
};
}
EOF

View File

@ -4,11 +4,11 @@
, gsm, speex, portaudio, spandsp, libuuid
}:
stdenv.mkDerivation rec {
version = "0.4.3";
version = "0.4.11";
name = "baresip-${version}";
src=fetchurl {
url = "http://www.creytiv.com/pub/baresip-${version}.tar.gz";
sha256 = "03vpzn0c3mybnwn84ha3yci780qsjm669dwja1srj0hbrq81rbil";
sha256 = "1ql5h9ily9jncp9w302v3b2ldx613kc60zlqv0v0ln8hsm8q6bc5";
};
buildInputs = [zlib openssl libre librem pkgconfig
cairo mpg123 gstreamer gst_ffmpeg gst_plugins_base gst_plugins_bad gst_plugins_good
@ -41,5 +41,9 @@ stdenv.mkDerivation rec {
platforms = with stdenv.lib.platforms; linux;
maintainers = with stdenv.lib.maintainers; [raskin];
license = with stdenv.lib.licenses; bsd3;
inherit version;
downloadPage = "http://www.creytiv.com/pub/";
updateWalker = true;
downloadURLRegexp = "/baresip-.*[.]tar[.].*";
};
}

View File

@ -1,20 +1,18 @@
{ stdenv, fetchurl, alsaLib, libXv, libXi, libXrender, libXrandr, zlib, glib
{ stdenv, fetchurl, libXv, libXi, libXrender, libXrandr, zlib, glib
, libXext, libX11, libXScrnSaver, libSM, qt4, libICE, freetype, fontconfig
, pulseaudio, usePulseAudio, lib }:
, pulseaudio, lib, ... }:
assert stdenv.system == "i686-linux";
stdenv.mkDerivation rec {
name = "skype-4.2.0.13";
name = "skype-4.3.0.37";
src = fetchurl {
url = "http://download.skype.com/linux/${name}.tar.bz2";
sha256 = "137kp6c0v4z7n7pp4hwrx4gjgk4knwj815dc6swh44lb5cj1c5m5";
sha256 = "0bc9kck99rcsqzxzw3j6vnw5byvr8c9wixrx609zp255g0wxr6cc";
};
buildInputs =
lib.optional usePulseAudio pulseaudio ++ [
alsaLib
buildInputs = [
stdenv.glibc
stdenv.gcc.gcc
libXv
@ -27,6 +25,7 @@ stdenv.mkDerivation rec {
libXi
libXrender
libXrandr
pulseaudio
freetype
fontconfig
zlib
@ -44,13 +43,13 @@ stdenv.mkDerivation rec {
fullPath=$fullPath''${fullPath:+:}$i/lib
done
dynlinker="$(cat $NIX_GCC/nix-support/dynamic-linker)"
patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
--set-rpath "$fullPath" $out/libexec/skype/skype
cat > $out/bin/skype << EOF
#!${stdenv.shell}
export PULSE_LATENCY_MSEC=60 # workaround for pulseaudio glitches
export LD_LIBRARY_PATH=$fullPath:$LD_LIBRARY_PATH
$dynlinker $out/libexec/skype/skype --resources=$out/libexec/skype "\$@"
$out/libexec/skype/skype --resources=$out/libexec/skype "\$@"
EOF
chmod +x $out/bin/skype

View File

@ -1,11 +0,0 @@
--- bip-0.8.8/src/lex.l.orig
+++ bip-0.8.8/src/lex.l
@@ -16,7 +16,7 @@
int linec;
#include "util.h"
extern list_t *root_list;
-void yyparse(void);
+int yyparse(void);
void free_conf(list_t*);
int conf_error;
typedef struct bip bip_t;

View File

@ -2,8 +2,8 @@
let
version = "0.8.8";
sha256 = "7ca3fb96f5ee6b76eb398d7ea45344ea24855344ced11632241a33353bba05d7";
version = "0.8.9";
sha256 = "0q942g9lyd8pjvqimv547n6vik5759r9npw3ws3bdj4ixxqhz59w";
# fetches patches from a gentoo mirror
fetchPatch =
@ -25,19 +25,12 @@ in stdenv.mkDerivation {
# includes an important security patch
patches = map fetchPatch [
{ file = "bip-0.8.8-configure.patch";
sha256 = "286e169745e6cd768f0cb95bbc9589ca2bda497eb06461174549b80a459d901c";
}
{ file = "bip-CVE-2012-0806.patch";
sha256 = "e47523095ee1d717c762ca0195520026c6ea2c30d8adcf434d276d42f052d506";
}
{ file = "bip-freenode.patch";
sha256 = "a67e582f89cc6a32d5bb48c7e8ceb647b889808c2c8798ae3eb27d88869b892f";
}
];
postPatch = ''
patch -p1 < ${./bip-0.8.8-yyparse.patch}
'';
configureFlags = [ "--disable-pie" ];
@ -48,5 +41,7 @@ in stdenv.mkDerivation {
description = "An IRC proxy (bouncer)";
homepage = http://bip.milkypond.org/;
license = stdenv.lib.licenses.gpl2;
downloadPage= "https://projects.duckcorp.org/projects/bip/files";
inherit version;
};
}

View File

@ -14,62 +14,20 @@
, autoconf, automake, openldap, bash, hunspell, librdf_redland, nss, nspr
, libwpg, dbus_glib, glibc, qt4, kde4, clucene_core, libcdr, lcms, vigra
, unixODBC, mdds, saneBackends, mythes, libexttextcat, libvisio
, fontsConf, pkgconfig, libzip, bluez5, libtool, maven
, fontsConf, pkgconfig, libzip, bluez5, libtool, maven, libe-book_00
, libmwaw_02, libatomic_ops, graphite2, harfbuzz
, langs ? [ "en-US" "en-GB" "ca" "ru" "eo" "fr" "nl" "de" "sl" ]
}:
let
langsSpaces = stdenv.lib.concatStringsSep " " langs;
major = "4";
minor = "0";
minor = "2";
patch = "5";
tweak = "2";
subdir = "${major}.${minor}.${patch}";
version = "${subdir}${if tweak == "" then "" else "."}${tweak}";
# configure phase dependency
liborcus = stdenv.mkDerivation rec {
version = "0.3.0";
name = "liborcus-${version}";
src = fetchurl {
url = "http://dev-www.libreoffice.org/src/8755aac23317494a9028569374dc87b2-liborcus_0.3.0.tar.bz2";
sha256 = "0xrw13s390mcpm50apclydl38sw2sdq27csrr1k0d39jna2990ih";
};
configureFlags = "--disable-werror";
buildInputs = [ zlib boost mdds pkgconfig libixion libzip ];
};
# configure phase dependency
liblangtag = stdenv.mkDerivation rec {
version = "0.4.0";
name = "liblangtag-${version}";
src = fetchurl {
url = "http://dev-www.libreoffice.org/src/54e578c91b1b68e69c72be22adcb2195-${name}.tar.bz2";
sha256 = "1bjb0fxjmvzxlhr5by9wgisf6w5yvy6wgfzfkjyw6igk39fivdyb";
};
buildInputs = [ libtool pkgconfig libxml2 ];
};
# doesn't work with srcs versioning
libmspub = stdenv.mkDerivation rec {
version = "0.0.6";
name = "libmspub-${version}";
src = fetchurl {
url = "http://dev-www.libreoffice.org/src/${name}.tar.gz";
sha256 = "1zdcvnm0dpac5yqdv34hq9j38cnhyqzyjgb19iyp54ajnwfjhmcq";
};
configureFlags = "--disable-werror";
buildInputs = [ zlib libwpd libwpg pkgconfig boost icu ];
};
# doesn't exist in srcs
libixion = stdenv.mkDerivation rec {
version = "0.5.0";
@ -85,9 +43,12 @@ let
buildInputs = [ boost mdds pkgconfig ];
};
fetchThirdParty = {name, md5}: fetchurl {
fetchThirdParty = {name, md5, brief}: fetchurl {
inherit name md5;
url = "http://dev-www.libreoffice.org/src/${md5}-${name}";
url = if brief then
"http://dev-www.libreoffice.org/src/${name}"
else
"http://dev-www.libreoffice.org/src/${md5}-${name}";
};
fetchSrc = {name, sha256}: fetchurl {
@ -104,14 +65,14 @@ let
translations = fetchSrc {
name = "translations";
sha256 = "0x96wlwr5m7w4k3ygydzak3ycq35hjq60vfi6nfxczlr8pfjyjxv";
sha256 = "0nv47r043w151687ks06w786h8azi8gylxma9c7qyjbdj6cdb2ly";
};
# TODO: dictionaries
help = fetchSrc {
name = "help";
sha256 = "0nab5jcgrrgn0v1yrm18nl9avp4vifbas48l1absz3jmzf9wka7b";
sha256 = "1kbkdngq39gfq2804v6vnllax4gqs25zlfk6y561iiipld1ncc5v";
};
};
@ -121,7 +82,7 @@ stdenv.mkDerivation rec {
src = fetchurl {
url = "http://download.documentfoundation.org/libreoffice/src/${subdir}/libreoffice-${version}.tar.xz";
sha256 = "195g1iab7j2x7sl326xbq7vya412ns57xrwpv9hqdrb7iiz2n8la";
sha256 = "4bf7898d7d0ba918a8f6668eff0904a549e5a2de837854716e6d996f121817d5";
};
# Openoffice will open libcups dynamically, so we link it directly
@ -135,7 +96,7 @@ stdenv.mkDerivation rec {
postUnpack = ''
mkdir -v $sourceRoot/src
'' + (stdenv.lib.concatMapStrings (f: "ln -sv ${f} $sourceRoot/src/${f.outputHash}-${f.name}\n") srcs.third_party)
'' + (stdenv.lib.concatMapStrings (f: "ln -sv ${f} $sourceRoot/src/${f.outputHash}-${f.name}\nln -sv ${f} $sourceRoot/src/${f.name}\n") srcs.third_party)
+ ''
ln -sv ${srcs.help} $sourceRoot/src/${srcs.help.name}
tar xf $sourceRoot/src/${srcs.help.name} -C $sourceRoot/../
@ -149,6 +110,8 @@ stdenv.mkDerivation rec {
-e 's,! */usr/bin/perl,!${perl}/bin/perl,' -e 's,! */usr/bin/env perl,!${perl}/bin/perl,' \
-e 's,! */usr/bin/python,!${python3}/bin/${python3.executable},' -e 's,! */usr/bin/env python,!${python3}/bin/${python3.executable},'
#sed -i 's,ANT_OPTS+="\(.*\)",ANT_OPTS+=\1,' apache-commons/java/*/makefile.mk
patch -Np1 -i ${./ooxmlexport.diff};
'';
QT4DIR = qt4;
@ -162,6 +125,10 @@ stdenv.mkDerivation rec {
"--with-parallelism=$NIX_BUILD_CORES"
"--with-lang=${langsSpaces}"
);
chmod a+x ./bin/unpack-sources
# It is used only as an indicator of the proper current directory
touch solenv/inc/target.mk
'';
makeFlags = "SHELL=${bash}/bin/bash";
@ -172,9 +139,6 @@ stdenv.mkDerivation rec {
# This is required as some cppunittests require fontconfig configured
export FONTCONFIG_FILE=${fontsConf}
# Fix sysui: wants to create a tar for root
sed -i -e 's,--own.*root,,' sysui/desktop/slackware/makefile.mk
# This to aovid using /lib:/usr/lib at linking
sed -i '/gb_LinkTarget_LDFLAGS/{ n; /rpath-link/d;}' solenv/gbuild/platform/unxgcc.mk
@ -199,7 +163,7 @@ stdenv.mkDerivation rec {
'';
configureFlags = [
"--with-vender=NixOS"
"--with-vendor=NixOS"
# Without these, configure does not finish
"--without-junit"
@ -219,11 +183,11 @@ stdenv.mkDerivation rec {
"--without-doxygen"
# I imagine this helps. Copied from go-oo.
"--disable-epm"
"--disable-mathmldtd"
# Modified on every upgrade, though
"--disable-kde"
"--disable-postgresql-sdbc"
"--with-package-format=native"
"--enable-epm"
"--with-jdk-home=${jdk}/lib/openjdk"
"--with-ant-home=${ant}/lib/ant"
"--without-afms"
@ -235,10 +199,17 @@ stdenv.mkDerivation rec {
"--without-system-jars"
"--without-system-altlinuxhyph"
"--without-system-lpsolve"
"--without-system-graphite"
"--without-system-npapi-headers"
"--without-system-libcmis"
"--without-system-mozilla"
"--without-system-libetonyek"
"--without-system-libfreehand"
"--without-system-libodfgen"
"--without-system-libabw"
"--without-system-firebird"
"--without-system-orcus"
"--without-system-liblangtag"
"--without-system-libmspub"
];
checkPhase = ''
@ -253,11 +224,11 @@ stdenv.mkDerivation rec {
hunspell icu jdk kde4.kdelibs lcms libcdr libexttextcat unixODBC libjpeg
libmspack librdf_redland librsvg libsndfile libvisio libwpd libwpg libX11
libXaw libXext libXi libXinerama libxml2 libxslt libXtst
libXdmcp libpthreadstubs mdds mesa mythes
libXdmcp libpthreadstubs mesa mythes
neon nspr nss openldap openssl ORBit2 pam perl pkgconfigUpstream poppler
python3 sablotron saneBackends tcsh unzip vigra which zip zlib
mdds bluez5 glibc libmspub libixion liborcus liblangtag
libxshmfence
mdds bluez5 glibc libixion
libxshmfence libe-book_00 libmwaw_02 libatomic_ops graphite2 harfbuzz
];
meta = with stdenv.lib; {

View File

@ -6,15 +6,39 @@ cat <<EOF
[
EOF
read file
while read file; do
if [[ "$file" == @* ]]; then
break
fi
write_entry(){
echo '{'
echo " name = \"${file:33}\";"
echo " md5 = \"${file:0:32}\";"
echo " name = \"${name}\";"
echo " md5 = \"${md5}\";"
echo " brief = ${brief};"
echo '}'
}
while read line; do
case "$line" in
\#*)
echo Skipping comment: "$line" >&2;
;;
*_MD5SUM\ :=*)
read tbline;
line=${line##* };
tbline=${tbline##* };
md5=$line
name=$tbline;
brief=true;
write_entry;
;;
*_TARBALL\ :=*)
line=${line##* };
md5=${line:0:32};
name=${line:33};
brief=false;
write_entry;
;;
*)
echo Skipping: "$line" >&2;
;;
esac
done
echo ']'

View File

@ -1,114 +1,467 @@
[
{
name = "glibc-2.1.3-stub.tar.gz";
md5 = "4a660ce8466c9df01f19036435425c3a";
name = "libabw-0.0.2.tar.bz2";
md5 = "40fa48e03b1e28ae0325cc34b35bc46d";
brief = true;
}
{
name = "ucpp-1.3.2.tar.gz";
md5 = "0168229624cfac409e766913506961a8";
name = "libcdr-0.0.15.tar.bz2";
md5 = "fbcd8619fc6646f41d527c1329102998";
brief = true;
}
{
name = "commons-logging-1.1.1-src.tar.gz";
md5 = "3c219630e4302863a9a83d0efde889db";
name = "libe-book-0.0.3.tar.bz2";
md5 = "2f1ceaf2ac8752ed278e175447d9b978";
brief = true;
}
{
name = "liblayout-0.2.10.zip";
md5 = "db60e4fde8dd6d6807523deb71ee34dc";
name = "libetonyek-0.0.4.tar.bz2";
md5 = "3c50bc60394d1f2675fbf9bd22581363";
brief = true;
}
{
name = "hsqldb_1_8_0.zip";
md5 = "17410483b5b5f267aa18b7e00b65e6e0";
name = "libfreehand-0.0.0.tar.bz2";
md5 = "496dd00028afcc19f896b01394769043";
brief = true;
}
{
name = "rhino1_5R5.zip";
md5 = "798b2ffdc8bcfe7bca2cf92b62caf685";
name = "libmspub-0.0.6.tar.bz2";
md5 = "1120705cd0f0d9bd5506360bf57b6c2e";
brief = true;
}
{
name = "bsh-2.0b1-src.tar.gz";
md5 = "ea570af93c284aa9e5621cd563f54f4d";
name = "libmwaw-0.2.0.tar.bz2";
md5 = "d794625f156a9fb1c53b3f8a8aa13b5e";
brief = true;
}
{
name = "xmlsec1-1.2.14.tar.gz";
md5 = "1f24ab1d39f4a51faf22244c94a6203f";
name = "libodfgen-0.0.4.tar.bz2";
md5 = "e5483d1f0b71e64c367c1194b54b0f53";
brief = true;
}
{
name = "librepository-1.1.6.zip";
md5 = "8ce2fcd72becf06c41f7201d15373ed9";
name = "libvisio-0.0.31.tar.bz2";
md5 = "82628333418f101a20cd21f980cf9f40";
brief = true;
}
{
name = "libbase-1.1.6.zip";
md5 = "eeb2c7ddf0d302fba4bfc6e97eac9624";
name = "Firebird-2.5.2.26540-0.tar.bz2";
md5 = "21154d2004e025c8a3666625b0357bb5";
brief = true;
}
{
name = "lp_solve_5.5.tar.gz";
md5 = "26b3e95ddf3d9c077c480ea45874b3b8";
name = "harfbuzz-0.9.23.tar.bz2";
md5 = "a4a9b548577e2ee22f0887937da5fd6c";
brief = true;
}
{
name = "libloader-1.1.6.zip";
md5 = "97b2d4dba862397f446b217e2b623e71";
name = "libatomic_ops-7_2d.zip";
md5 = "c0b86562d5aa40761a87134f83e6adcf";
brief = true;
}
{
name = "graphite2-1.2.0.tgz";
md5 = "f5ef3f7f10fa8c3542c6a085a233080b";
name = "libeot-0.01.tar.bz2";
md5 = "aa24f5dd2a2992f4a116aa72af817548";
brief = true;
}
{
name = "jakarta-tomcat-5.0.30-src.tar.gz";
md5 = "2a177023f9ea8ec8bd00837605c5df1b";
name = "language-subtag-registry-2014-03-27.tar.bz2";
md5 = "504af523f5d1a5590bbeb6a4b55e8a97";
brief = true;
}
{
name = "hyphen-2.8.4.tar.gz";
md5 = "a2f6010987e1c601274ab5d63b72c944";
name = "Adobe-Core35_AFMs-314.tar.gz";
md5 = "1756c4fa6c616ae15973c104cd8cb256";
brief = false;
}
{
name = "libserializer-1.1.6.zip";
md5 = "f94d9870737518e3b597f9265f4e9803";
}
{
name = "commons-lang-2.3-src.tar.gz";
md5 = "2ae988b339daec234019a7066f96733e";
}
{
name = "libxml-1.1.7.zip";
md5 = "ace6ab49184e329db254e454a010f56d";
name = "commons-codec-1.6-src.tar.gz";
md5 = "2e482c7567908d334785ce7d69ddfff7";
brief = false;
}
{
name = "commons-httpclient-3.1-src.tar.gz";
md5 = "2c9b0f83ed5890af02c0df1c1776f39b";
brief = false;
}
{
name = "commons-codec-1.3-src.tar.gz";
md5 = "af3c3acf618de6108d65fcdc92b492e1";
name = "commons-lang-2.4-src.tar.gz";
md5 = "625ff5f2f968dd908bca43c9469d6e6b";
brief = false;
}
{
name = "libformula-1.1.7.zip";
md5 = "3404ab6b1792ae5f16bbd603bd1e1d03";
name = "commons-logging-1.1.1-src.tar.gz";
md5 = "3c219630e4302863a9a83d0efde889db";
brief = false;
}
{
name = "libcmis-0.3.0.tar.gz";
md5 = "b2371dc7cf4811c9d32146eec913d296";
name = "boost_1_54_0.tar.bz2";
md5 = "15cb8c0803064faef0c4ddf5bc5ca279";
brief = false;
}
{
name = "swingExSrc.zip";
md5 = "35c94d2df8893241173de1d16b6034c0";
name = "bsh-2.0b1-src.tar.gz";
md5 = "ea570af93c284aa9e5621cd563f54f4d";
brief = false;
}
{
name = "cairo-1.10.2.tar.gz";
md5 = "f101a9e88b783337b20b2e26dfd26d5f";
brief = false;
}
{
name = "clucene-core-2.3.3.4.tar.gz";
md5 = "48d647fbd8ef8889e5a7f422c1bfda94";
brief = false;
}
{
name = "libcmis-0.4.1.tar.gz";
md5 = "22f8a85daf4a012180322e1f52a7563b";
brief = false;
}
{
name = "cppunit-1.13.1.tar.gz";
md5 = "ac4781e01619be13461bb2d562b94a7b";
brief = false;
}
{
name = "ConvertTextToNumber-1.3.2.oxt";
md5 = "451ccf439a36a568653b024534669971";
brief = false;
}
{
name = "curl-7.33.0.tar.bz2";
md5 = "57409d6bf0bd97053b8378dbe0cadcef";
brief = false;
}
{
name = "epm-3.7.tar.gz";
md5 = "3ade8cfe7e59ca8e65052644fed9fca4";
brief = false;
}
{
name = "expat-2.1.0.tar.gz";
md5 = "dd7dab7a5fea97d2a6a43f511449b7cd";
brief = false;
}
{
name = "fontconfig-2.8.0.tar.gz";
md5 = "77e15a92006ddc2adbb06f840d591c0e";
brief = false;
}
{
name = "crosextrafonts-20130214.tar.gz";
md5 = "368f114c078f94214a308a74c7e991bc";
brief = false;
}
{
name = "crosextrafonts-carlito-20130920.tar.gz";
md5 = "c74b7223abe75949b4af367942d96c7a";
brief = false;
}
{
name = "dejavu-fonts-ttf-2.33.zip";
md5 = "f872f4ac066433d8ff92f5e316b36ff9";
brief = false;
}
{
name = "gentiumbasic-fonts-1.10.zip";
md5 = "35efabc239af896dfb79be7ebdd6e6b9";
brief = false;
}
{
name = "liberation-fonts-ttf-1.07.3.tar.gz";
md5 = "b3174b11c2b6a341f5c99b31088bd67b";
brief = false;
}
{
name = "liberation-fonts-ttf-2.00.1.tar.gz";
md5 = "5c781723a0d9ed6188960defba8e91cf";
brief = false;
}
{
name = "LinLibertineG-20120116.zip";
md5 = "e7a384790b13c29113e22e596ade9687";
brief = false;
}
{
name = "open-sans-font-ttf-1.10.tar.gz";
md5 = "7a15edea7d415ac5150ea403e27401fd";
brief = false;
}
{
name = "pt-serif-font-1.0000W.tar.gz";
md5 = "c3c1a8ba7452950636e871d25020ce0d";
brief = false;
}
{
name = "source-code-font-1.009.tar.gz";
md5 = "0279a21fab6f245e85a6f85fea54f511";
brief = false;
}
{
name = "source-sans-font-1.036.tar.gz";
md5 = "1e9ddfe25ac9577da709d7b2ea36f939";
brief = false;
}
{
name = "freetype-2.4.8.tar.bz2";
md5 = "dbf2caca1d3afd410a29217a9809d397";
brief = false;
}
{
name = "graphite2-1.2.3.tgz";
md5 = "7042305e4208af4c2d5249d814ccce58";
brief = false;
}
{
name = "hsqldb_1_8_0.zip";
md5 = "17410483b5b5f267aa18b7e00b65e6e0";
brief = false;
}
{
name = "hunspell-1.3.2.tar.gz";
md5 = "3121aaf3e13e5d88dfff13fb4a5f1ab8";
brief = false;
}
{
name = "hyphen-2.8.4.tar.gz";
md5 = "a2f6010987e1c601274ab5d63b72c944";
brief = false;
}
{
name = "icu4c-52_1-src.tgz";
md5 = "9e96ed4c1d99c0d14ac03c140f9f346c";
brief = false;
}
{
name = "flow-engine-0.9.4.zip";
md5 = "ba2930200c9f019c2d93a8c88c651a0f";
}
{
name = "sacjava-1.3.zip";
md5 = "39bb3fcea1514f1369fcfc87542390fd";
}
{
name = "libwps-0.2.7.tar.bz2";
md5 = "d197bd6211669a2fa4ca648faf04bcb1";
}
{
name = "libfonts-1.1.6.zip";
md5 = "3bdf40c0d199af31923e900d082ca2dd";
brief = false;
}
{
name = "flute-1.1.6.zip";
md5 = "d8bd5eed178db6e2b18eeed243f85aa8";
brief = false;
}
{
name = "libbase-1.1.6.zip";
md5 = "eeb2c7ddf0d302fba4bfc6e97eac9624";
brief = false;
}
{
name = "libfonts-1.1.6.zip";
md5 = "3bdf40c0d199af31923e900d082ca2dd";
brief = false;
}
{
name = "libformula-1.1.7.zip";
md5 = "3404ab6b1792ae5f16bbd603bd1e1d03";
brief = false;
}
{
name = "liblayout-0.2.10.zip";
md5 = "db60e4fde8dd6d6807523deb71ee34dc";
brief = false;
}
{
name = "libloader-1.1.6.zip";
md5 = "97b2d4dba862397f446b217e2b623e71";
brief = false;
}
{
name = "librepository-1.1.6.zip";
md5 = "8ce2fcd72becf06c41f7201d15373ed9";
brief = false;
}
{
name = "libserializer-1.1.6.zip";
md5 = "f94d9870737518e3b597f9265f4e9803";
brief = false;
}
{
name = "libxml-1.1.7.zip";
md5 = "ace6ab49184e329db254e454a010f56d";
brief = false;
}
{
name = "sacjava-1.3.zip";
md5 = "39bb3fcea1514f1369fcfc87542390fd";
brief = false;
}
{
name = "jpegsrc.v8d.tar.gz";
md5 = "52654eb3b2e60c35731ea8fc87f1bd29";
brief = false;
}
{
name = "JLanguageTool-1.7.0.tar.bz2";
md5 = "b63e6340a02ff1cacfeadb2c42286161";
brief = false;
}
{
name = "lcms2-2.4.tar.gz";
md5 = "861ef15fa0bc018f9ddc932c4ad8b6dd";
brief = false;
}
{
name = "libexttextcat-3.4.3.tar.bz2";
md5 = "ae330b9493bd4503ac390106ff6060d7";
brief = false;
}
{
name = "liblangtag-0.5.1.tar.bz2";
md5 = "36271d3fa0d9dec1632029b6d7aac925";
brief = false;
}
{
name = "xmlsec1-1.2.14.tar.gz";
md5 = "1f24ab1d39f4a51faf22244c94a6203f";
brief = false;
}
{
name = "libxml2-2.9.1.tar.gz";
md5 = "9c0cfef285d5c4a5c80d00904ddab380";
brief = false;
}
{
name = "libxslt-1.1.28.tar.gz";
md5 = "9667bf6f9310b957254fdcf6596600b7";
brief = false;
}
{
name = "lp_solve_5.5.tar.gz";
md5 = "26b3e95ddf3d9c077c480ea45874b3b8";
brief = false;
}
{
name = "mariadb-native-client-1.0.0.tar.bz2";
md5 = "05f84c95b610c21c5fd510d10debcabf";
brief = false;
}
{
name = "mdds_0.10.3.tar.bz2";
md5 = "aa5ca9d1ed1082890835afab26400a39";
brief = false;
}
{
name = "mysql-connector-c++-1.1.0.tar.gz";
md5 = "0981bda6548a8c8233ffce2b6e4b2a23";
brief = false;
}
{
name = "mythes-1.2.3.tar.gz";
md5 = "46e92b68e31e858512b680b3b61dc4c1";
brief = false;
}
{
name = "neon-0.29.5.tar.gz";
md5 = "ff369e69ef0f0143beb5626164e87ae2";
brief = false;
}
{
name = "nss-3.15.3-with-nspr-4.10.2.tar.gz";
md5 = "06beb053e257d9e22641339c905c6eba";
brief = false;
}
{
name = "openldap-2.4.31.tgz";
md5 = "804c6cb5698db30b75ad0ff1c25baefd";
brief = false;
}
{
name = "openssl-1.0.1e.tar.gz";
md5 = "66bf6f10f060d561929de96f9dfe5b8c";
brief = false;
}
{
name = "liborcus-0.5.1.tar.bz2";
md5 = "ea2acaf140ae40a87a952caa75184f4d";
brief = false;
}
{
name = "pixman-0.24.4.tar.bz2";
md5 = "c63f411b3ad147db2bcce1bf262a0e02";
brief = false;
}
{
name = "libpng-1.5.10.tar.gz";
md5 = "9e5d864bce8f06751bbd99962ecf4aad";
brief = false;
}
{
name = "poppler-0.22.5.tar.gz";
md5 = "1cd27460f7e3379d1eb109cfd7bcdb39";
brief = false;
}
{
name = "postgresql-9.2.1.tar.bz2";
md5 = "c0b4799ea9850eae3ead14f0a60e9418";
brief = false;
}
{
name = "Python-3.3.3.tar.bz2";
md5 = "f3ebe34d4d8695bf889279b54673e10c";
brief = false;
}
{
name = "raptor2-2.0.9.tar.gz";
md5 = "4ceb9316488b0ea01acf011023cf7fff";
brief = false;
}
{
name = "rasqal-0.9.30.tar.gz";
md5 = "b12c5f9cfdb6b04efce5a4a186b8416b";
brief = false;
}
{
name = "redland-1.0.16.tar.gz";
md5 = "32f8e1417a64d3c6f2c727f9053f55ea";
brief = false;
}
{
name = "rhino1_5R5.zip";
md5 = "798b2ffdc8bcfe7bca2cf92b62caf685";
brief = false;
}
{
name = "swingExSrc.zip";
md5 = "35c94d2df8893241173de1d16b6034c0";
brief = false;
}
{
name = "ucpp-1.3.2.tar.gz";
md5 = "0168229624cfac409e766913506961a8";
brief = false;
}
{
name = "vigra1.6.0.tar.gz";
md5 = "d62650a6f908e85643e557a236ea989c";
brief = false;
}
{
name = "libwpd-0.9.9.tar.bz2";
md5 = "a3dcac551fae5ebbec16e844810828c4";
brief = false;
}
{
name = "libwpg-0.2.2.tar.bz2";
md5 = "b85436266b2ac91d351ab5684b181151";
brief = false;
}
{
name = "libwps-0.2.9.tar.bz2";
md5 = "46eb0e7f213ad61bd5dee0c494132cb0";
brief = false;
}
{
name = "xsltml_2.1.2.zip";
md5 = "a7983f859eafb2677d7ff386a023bc40";
brief = false;
}
{
name = "zlib-1.2.7.tar.bz2";
md5 = "2ab442d169156f34c379c968f3f482dd";
brief = false;
}
]

View File

@ -0,0 +1,31 @@
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx 2014-06-12 12:25:19.000000000 +0400
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx 2014-06-12 12:25:20.000000000 +0400
@@ -547,17 +547,17 @@
getRun(xParagraph, 5, " After.");
}
-DECLARE_OOXMLEXPORT_TEST(test1Table1Page, "1-table-1-page.docx")
-{
- // 2 problem for this document after export:
- // - invalid sectPr inserted at the beginning of the page
- // - font of empty cell is not preserved, leading to change in rows height
- uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
- uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
- uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
- xCursor->jumpToLastPage();
- CPPUNIT_ASSERT_EQUAL(sal_Int16(1), xCursor->getPage());
-}
+/// DECLARE_OOXMLEXPORT_TEST(test1Table1Page, "1-table-1-page.docx")
+/// {
+/// // 2 problem for this document after export:
+/// // - invalid sectPr inserted at the beginning of the page
+/// // - font of empty cell is not preserved, leading to change in rows height
+/// uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+/// uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
+/// uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
+/// xCursor->jumpToLastPage();
+/// CPPUNIT_ASSERT_EQUAL(sal_Int16(1), xCursor->getPage());
+/// }
DECLARE_OOXMLEXPORT_TEST(testTextFrames, "textframes.odt")
{

View File

@ -5,13 +5,13 @@ stdenv.mkDerivation rec {
src = fetchbzr {
url = "https://code.launchpad.net/~kicad-stable-committers/kicad/stable";
revision = 4024;
rev = 4024;
sha256 = "1sv1l2zpbn6439ccz50p05hvqg6j551aqra551wck9h3929ghly5";
};
srcLibrary = fetchbzr {
url = "http://bazaar.launchpad.net/~kicad-lib-committers/kicad/library";
revision = 293;
rev = 293;
sha256 = "1wn9a4nhqyjzzfkq6xm7ag8n5n10xy7gkq6i7yry7wxini7pzv1i";
};

View File

@ -6,7 +6,7 @@ stdenv.mkDerivation rec {
src = fetchhg {
url = "https://bitbucket.org/alanmi/abc";
tag = "03e221443d71e49e56cbc37f1907ee3b0ff3e7c9";
rev = "03e221443d71e49e56cbc37f1907ee3b0ff3e7c9";
sha256 = "0ahrqg718y7xpv939f6x8w1kqh7wsja4pw8hca7j67j0qjdgb4lm";
};

View File

@ -0,0 +1,46 @@
{ stdenv, fetchurl, pkgconfig, smlnj, rsync }:
stdenv.mkDerivation rec {
name = "twelf-${version}";
version = "1.7.1";
src = fetchurl {
url = "http://twelf.plparty.org/releases/twelf-src-${version}.tar.gz";
sha256 = "0fi1kbs9hrdrm1x4k13angpjasxlyd1gc3ys8ah54i75qbcd9c4i";
};
buildInputs = [ pkgconfig smlnj rsync ];
buildPhase = ''
export SMLNJ_HOME=${smlnj}
make smlnj
'';
installPhase = ''
ensureDir $out/bin
rsync -av bin/* $out/bin/
ensureDir $out/share/emacs/site-lisp/twelf/
rsync -av emacs/ $out/share/emacs/site-lisp/twelf/
ensureDir $out/share/twelf/examples
rsync -av examples/ $out/share/twelf/examples/
ensureDir $out/share/twelf/vim
rsync -av vim/ $out/share/twelf/vim/
'';
meta = {
description = "Twelf logic proof assistant";
longDescription = ''
Twelf is a language used to specify, implement, and prove properties of
deductive systems such as programming languages and logics. Large
research projects using Twelf include the TALT typed assembly language,
a foundational proof-carrying-code system, and a type safety proof for
Standard ML.
'';
homepage = http://twelf.org/wiki/Main_Page;
license = "MIT";
maintainers = with stdenv.lib.maintainers; [ jwiegley ];
platforms = stdenv.lib.platforms.unix;
};
}

View File

@ -9,7 +9,7 @@ stdenv.mkDerivation {
src = fetchdarcs {
url = "http://lama.univ-savoie.fr/~raffalli/GlSurf";
tag = "3.3";
rev = "3.3";
sha256 = ""; md5="";
};

View File

@ -95,4 +95,7 @@ rec {
darcsToGit = callPackage ./darcs-to-git { };
gitflow = callPackage ./gitflow { };
git-remote-hg = callPackage ./git-remote-hg { };
}

View File

@ -0,0 +1,35 @@
{ stdenv, fetchgit, mercurial, makeWrapper,
asciidoc, xmlto, dbus, docbook_xsl, docbook_xml_dtd_45, libxslt, libxml2
}:
stdenv.mkDerivation rec {
rev = "185852eac44c25ae2e8d3b3fb6c9630e754e6363";
version = "v0.2-185852eac44c25ae2e8d3b3fb6c9630e754e6363";
name = "git-remote-hg-${version}";
src = fetchgit {
inherit rev;
url = "git://github.com/felipec/git-remote-hg.git";
sha256 = "1hc65nvxq7if1imwffyxia0i6vnkbax09gfcl9vq9yffzi8xzzfy";
};
buildInputs = [ mercurial.python mercurial makeWrapper
asciidoc xmlto dbus docbook_xsl docbook_xml_dtd_45 libxslt libxml2
];
doCheck = false;
installFlags = "HOME=\${out}";
postInstall = ''
wrapProgram $out/bin/git-remote-hg \
--prefix PYTHONPATH : "$(echo ${mercurial}/lib/python*/site-packages):$(echo ${mercurial.python}/lib/python*/site-packages)${stdenv.lib.concatMapStrings (x: ":$(echo ${x}/lib/python*/site-packages)") mercurial.pythonPackages}"
'';
meta = with stdenv.lib; {
homepage = "https://github.com/felipec/git-remote-hg";
description = "semi-official Mercurial bridge from Git project, once installed, it allows you to clone, fetch and push to and from Mercurial repositories as if they were Git ones";
license = licenses.gpl2;
maintainers = [ maintainers.garbas ];
};
}

View File

@ -10,7 +10,7 @@
let
version = "1.9.4";
version = "2.0.1";
svn = subversionClient.override { perlBindings = true; };
@ -21,7 +21,7 @@ stdenv.mkDerivation {
src = fetchurl {
url = "https://www.kernel.org/pub/software/scm/git/git-${version}.tar.xz";
sha256 = "1shxa49lsxn81qpfi60wh7rn5ci4zjgljvr0qczdmnqzd8w1zyvb";
sha256 = "1pylqr2qzndy92x3pq8hkwsb3garww2jxb167s6hshrva81s24mb";
};
patches = [ ./docbook2texi.patch ./symlinks-in-bin.patch ./cert-path.patch ];

View File

@ -0,0 +1,37 @@
{ stdenv, fetchurl, perl, git, fetchgit }:
stdenv.mkDerivation rec {
name = "gitolite-${version}";
version = "3.6.1";
src = fetchgit {
url = "git://github.com/sitaramc/gitolite";
rev = "refs/tags/v${version}";
sha256 = "47e0e9c3137b05af96c091494ba918d61d1d3396749a04d63e7949ebcc6c6dca";
leaveDotGit = true;
};
buildInputs = [ perl git ];
buildPhase = "true";
patchPhase = ''
substituteInPlace ./install --replace " 2>/dev/null" ""
substituteInPlace src/lib/Gitolite/Hooks/PostUpdate.pm \
--replace /usr/bin/perl "/usr/bin/env perl"
substituteInPlace src/lib/Gitolite/Hooks/Update.pm \
--replace /usr/bin/perl "/usr/bin/env perl"
'';
installPhase = ''
mkdir -p $out/bin
git tag v${version} # Gitolite requires a tag for the version information :/
perl ./install -to $out/bin
'';
meta = {
description = "Finely-grained git repository hosting";
homepage = "http://gitolite.com/gitolite/index.html";
license = stdenv.lib.licenses.gpl2;
platforms = stdenv.lib.platforms.unix;
maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
};
}

View File

@ -5,7 +5,7 @@ stdenv.mkDerivation rec {
src = fetchhg {
url = http://hg.suckless.org/tabbed;
tag = "d7542a6f6dc5";
rev = "d7542a6f6dc5";
sha256 = "1963jsazfmh5k7923c1mfwppz1xbh48z16j0sa64fiscq22as2gj";
};

View File

@ -82,9 +82,7 @@ assert !enableStaticLibraries -> versionOlder "7.7" ghc.version;
# the default download location for Cabal packages is Hackage,
# you still have to specify the checksum
src = fetchurl {
# cannot use mirrors system because of subtly different directory structures
urls = ["http://hackage.haskell.org/packages/archive/${self.pname}/${self.version}/${self.fname}.tar.gz"
"http://hdiff.luite.com/packages/archive/${self.pname}/${self.fname}.tar.gz"];
url = "mirror://hackage/${self.pname}/${self.fname}.tar.gz";
inherit (self) sha256;
};

View File

@ -1,9 +1,9 @@
source "$stdenv/setup"
header "exporting \`$url' (revision $revision) into \`$out'"
header "exporting \`$url' (revision $rev) into \`$out'"
# Perform a lightweight checkout so that we don't end up importing
# all the repository's history.
bzr -Ossl.cert_reqs=none export -r "$revision" --format=dir "$out" "$url"
bzr -Ossl.cert_reqs=none export -r "$rev" --format=dir "$out" "$url"
stopNest

View File

@ -1,5 +1,5 @@
{ stdenv, bazaar }:
{ url, revision, sha256 }:
{ url, rev, sha256 }:
stdenv.mkDerivation {
name = "bzr-export";
@ -11,5 +11,5 @@ stdenv.mkDerivation {
outputHashMode = "recursive";
outputHash = sha256;
inherit url revision;
inherit url rev;
}

View File

@ -2,9 +2,9 @@ source $stdenv/setup
tagtext=""
tagflags=""
if test -n "$tag"; then
tagtext="(tag $tag) "
tagflags="--tag=$tag"
if test -n "$rev"; then
tagtext="(tag $rev) "
tagflags="--tag=$rev"
elif test -n "$context"; then
tagtext="(context) "
tagflags="--context=$context"

View File

@ -1,4 +1,4 @@
{stdenv, darcs, nix}: {url, tag ? null, context ? null, md5 ? "", sha256 ? ""}:
{stdenv, darcs, nix}: {url, rev ? null, context ? null, md5 ? "", sha256 ? ""}:
stdenv.mkDerivation {
name = "fetchdarcs";
@ -9,5 +9,5 @@ stdenv.mkDerivation {
outputHashMode = "recursive";
outputHash = if sha256 == "" then md5 else sha256;
inherit url tag context;
inherit url rev context;
}

View File

@ -217,7 +217,9 @@ clone_user_rev() {
fi;;
esac
echo "git revision is $(cd $dir && (git rev-parse $rev 2> /dev/null || git rev-parse refs/heads/fetchgit) | tail -n1)"
local full_revision=$(cd $dir && (git rev-parse $rev 2> /dev/null || git rev-parse refs/heads/fetchgit) | tail -n1)
echo "git revision is $full_revision"
echo "git human-readable version is $(cd $dir && (git describe $full_revision 2> /dev/null || git describe --tags $full_revision 2> /dev/null || echo -- none --))"
# Allow doing additional processing before .git removal
eval "$NIX_PREFETCH_GIT_CHECKOUT_HOOK"

View File

@ -1,9 +1,9 @@
source $stdenv/setup
header "getting $url${tag:+ ($tag)} into $out"
header "getting $url${rev:+ ($rev)} into $out"
hg clone --insecure "$url" hg-clone
hg archive -q -y ${tag:+-r "$tag"} --cwd hg-clone $out
hg archive -q -y ${rev:+-r "$rev"} --cwd hg-clone $out
rm -f $out/.hg_archival.txt
stopNest

View File

@ -1,4 +1,4 @@
{stdenv, mercurial, nix}: {name ? null, url, tag ? null, md5 ? null, sha256 ? null}:
{stdenv, mercurial, nix}: {name ? null, url, rev ? null, md5 ? null, sha256 ? null}:
# TODO: statically check if mercurial as the https support if the url starts woth https.
stdenv.mkDerivation {
@ -13,6 +13,6 @@ stdenv.mkDerivation {
outputHashMode = "recursive";
outputHash = if md5 != null then md5 else sha256;
inherit url tag;
inherit url rev;
preferLocalBuild = true;
}

View File

@ -20,6 +20,12 @@ rec {
http://kent.dl.sourceforge.net/sourceforge/
];
# SourceForge.jp.
sourceforgejp = [
http://osdn.dl.sourceforge.jp/
http://jaist.dl.sourceforge.jp/
];
# GNU (http://www.gnu.org/prep/ftp.html).
gnu = [
# This one redirects to a (supposedly) nearby and (supposedly) up-to-date

View File

@ -0,0 +1,153 @@
#! /bin/sh -e
usage(){
echo >&2 "syntax: nix-prefetch-zip [OPTIONS] [URL [EXPECTED-HASH]]
Options:
--url url The url of the archive to fetch.
--name name The name to use for the store path (defaults to \`basename \$url\`).
--hash hash The hash of unpacked archive.
--hash-type type Use the specified cryptographic hash algorithm, which can be one of md5, sha1, and sha256.
--leave-root Keep the root directory of the archive.
--help Show this help text.
"
exit 1
}
argi=0
argfun=""
for arg; do
if test -z "$argfun"; then
case $arg in
--url) argfun=set_url;;
--name) argfun=set_name;;
--hash) argfun=set_expHash;;
--hash-type) argfun=set_hashType;;
--leave-root) leaveRoot=true;;
--help) usage;;
*) argi=$(($argi + 1))
case $argi in
1) url=$arg;;
2) rev=$arg;;
3) expHash=$arg;;
*) echo "Unexpected argument: $arg" >&2
usage
;;
esac
;;
esac
else
case $argfun in
set_*)
var=$(echo $argfun | sed 's,^set_,,')
eval "$var=\$arg"
;;
esac
argfun=""
fi
done
if [ -z "$url" ]; then
echo "Error: No --url flag given" >&2
usage
fi
if [ -z "$name" ]; then
name=$(basename "$url")
fi
if test -z "$hashType"; then
hashType=sha256
fi
hashFormat="--base32"
tmp=$(mktemp -d 2>/dev/null || mktemp -d -t "$$")
trap "rm -rf '$tmp'" EXIT
unpackDir=$tmp/unpacked/$name
mkdir -p $unpackDir
downloadedFile=$tmp/$name
unpackFile() {
local curSrc="$1"
case "$curSrc" in
*.tar.xz | *.tar.lzma)
# Don't rely on tar knowing about .xz.
xz -d < $curSrc | tar xf -
;;
*.tar | *.tar.* | *.tgz | *.tbz2)
# GNU tar can automatically select the decompression method
# (info "(tar) gzip").
tar xf $curSrc
;;
*.zip)
unzip -qq $curSrc
;;
*)
echo "source archive $curSrc has unknown type" >&2
exit 1
;;
esac
}
# If the hash was given, a file with that hash may already be in the
# store.
if test -n "$expHash"; then
finalPath=$(nix-store --print-fixed-path --recursive "$hashType" "$expHash" "$name")
if ! nix-store --check-validity "$finalPath" 2> /dev/null; then
finalPath=
fi
hash=$expHash
fi
# If we don't know the hash or a path with that hash doesn't exist,
# download the file and add it to the store.
if test -z "$finalPath"; then
curl="curl \
--location --max-redirs 20 \
--disable-epsv \
--insecure"
if ! $curl --fail "$url" --output "$downloadedFile"; then
echo "error: could not download $url" >&2
exit 1
fi
cd $unpackDir
unpackFile "$downloadedFile"
# FIXME: handle zip files that contain a single regular file.
if [ -z "$leaveRoot" ]; then
shopt -s dotglob
if [ $(ls -d $unpackDir/* | wc -l) != 1 ]; then
echo "error: zip file must contain a single directory."
exit 1
fi
fn=$(cd "$unpackDir" && echo *)
mv $unpackDir/$fn/* "$unpackDir/"
rmdir "$unpackDir/$fn"
fi
# Compute the hash.
hash=$(nix-hash --type $hashType $hashFormat $unpackDir)
if ! test -n "$QUIET"; then echo "hash is $hash" >&2; fi
# Add the downloaded file to the Nix store.
finalPath=$(nix-store --add-fixed --recursive "$hashType" $unpackDir)
if test -n "$expHash" -a "$expHash" != "$hash"; then
echo "hash mismatch for URL \`$url'"
exit 1
fi
fi
if ! test -n "$QUIET"; then echo "path is $finalPath" >&2; fi
echo $hash
if test -n "$PRINT_PATH"; then
echo $finalPath
fi

View File

@ -1,9 +1,27 @@
# Parses a /nix/store/*-closure file and prints
# various information.
# By default, the nodes in the graph are printed to stdout.
# If the environment variable printManifest is set,
# then the graph is written as a manifest.
# If printRegistration is set, then the graph is written
# as a registration file for a manifest is written
# in the `nix-store --load-db' format.
use strict;
use File::Basename;
my %storePaths;
my %refs;
# Each argument on the command line is a graph file.
# The graph file contains line-triples and a variable
# number of references:
# <store-path>
# <deriver>
# <count>
# <ref-#1>
# ...
# <ref-#count>
foreach my $graph (@ARGV) {
open GRAPH, "<$graph" or die;

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