Merge branch 'master' into nitrogen. Added maintainer and license.

Conflicts:
	pkgs/tools/X11/nitrogen/default.nix
This commit is contained in:
Jonathan Glines 2014-06-13 11:54:19 -06:00
commit 2784866ffd
378 changed files with 4407 additions and 1637 deletions

View File

@ -446,7 +446,7 @@ xlink:href='http://nixos.org/releases/nix/nix-0.10/'>Nix
<literal>stdenv</literal>; the formed changes the C compiler, and
the latter adds additional packages to the front of
<literal>stdenv</literal>s initial <envar>PATH</envar>, allowing
tools to be overriden.</para>
tools to be overridden.</para>
<para>For instance, the package <varname>strategoxt</varname>
doesnt build with the GNU Make in <literal>stdenv</literal>

View File

@ -56,7 +56,7 @@ details.)</para>
<para>Often it is necessary to override or modify some aspect of the
build. To make this easier, the standard environment breaks the
package build into a number of <emphasis>phases</emphasis>, all of
which can be overriden or modified individually: unpacking the
which can be overridden or modified individually: unpacking the
sources, applying patches, configuring, building, and installing.
(There are some others; see <xref linkend="ssec-stdenv-phases"/>.)
For instance, a package that doesnt supply a makefile but instead has
@ -233,7 +233,7 @@ specific parts of the build (e.g., unpacking the sources or installing
the binaries). Furthermore, it allows a nicer presentation of build
logs in the Nix build farm.</para>
<para>Each phase can be overriden in its entirety either by setting
<para>Each phase can be overridden in its entirety either by setting
the environment variable
<varname><replaceable>name</replaceable>Phase</varname> to a string
containing some shell commands to be executed, or by redefining the

View File

@ -17,6 +17,7 @@
arobyn = "Alexei Robyn <shados@shados.net>";
astsmtl = "Alexander Tsamutali <astsmtl@yandex.ru>";
aszlig = "aszlig <aszlig@redmoonstudios.org>";
auntie = "Jonathan Glines <auntieNeo@gmail.com>";
bbenoist = "Baptist BENOIST <return_0@live.com>";
bennofs = "Benno Fünfstück <benno.fuenfstueck@gmail.com>";
berdario = "Dario Bertini <berdario@gmail.com>";
@ -45,6 +46,7 @@
iElectric = "Domen Kozar <domen@dev.si>";
iyzsong = "Song Wenwu <iyzsong@gmail.com>";
jcumming = "Jack Cummings <jack@mudshark.org>";
joamaki = "Jussi Maki <joamaki@gmail.com>";
joelteon = "Joel Taylor <me@joelt.io>";
jwiegley = "John Wiegley <johnw@newartisans.com>";
kkallio = "Karn Kallio <tierpluspluslists@gmail.com>";

View File

@ -58,12 +58,13 @@ rec {
# Determine whether a string has given prefix/suffix.
hasPrefix = pref: str:
substring 0 (stringLength pref) str == pref;
eqStrings (substring 0 (stringLength pref) str) pref;
hasSuffix = suff: str:
let lenStr = stringLength str;
lenSuff = stringLength suff;
let
lenStr = stringLength str;
lenSuff = stringLength suff;
in lenStr >= lenSuff &&
substring (lenStr - lenSuff) lenStr str == suff;
eqStrings (substring (lenStr - lenSuff) lenStr str) suff;
# Convert a string to a list of characters (i.e. singleton strings).
@ -118,17 +119,21 @@ rec {
toLower = replaceChars upperChars lowerChars;
toUpper = replaceChars lowerChars upperChars;
# Appends string context from another string
addContextFrom = a: b: (substring 0 0 a)+b;
# Compares strings not requiring context equality
# Obviously, a workaround but works on all Nix versions
eqStrings = a: b: (a+(substring 0 0 b)) == ((substring 0 0 a)+b);
eqStrings = a: b: addContextFrom b a == addContextFrom a b;
# Cut a string with a separator and produces a list of strings which were
# separated by this separator. e.g.,
# `splitString "." "foo.bar.baz"' returns ["foo" "bar" "baz"].
splitString = sep: s:
splitString = _sep: _s:
let
sep = addContextFrom _s _sep;
s = addContextFrom _sep _s;
sepLen = stringLength sep;
sLen = stringLength s;
lastSearch = sub sLen sepLen;
@ -167,7 +172,7 @@ rec {
sufLen = stringLength suf;
sLen = stringLength s;
in
if sufLen <= sLen && suf == substring (sLen - sufLen) sufLen s then
if sufLen <= sLen && eqStrings suf (substring (sLen - sufLen) sufLen s) then
substring 0 (sLen - sufLen) s
else
s;

View File

@ -873,7 +873,7 @@ Any package in Nixpkgs that depends on <literal>emacs</literal> will
be passed your customised instance. (However, the value
<literal>pkgs.emacs</literal> in
<varname>nixpkgs.config.packageOverrides</varname> refers to the
original rather than overriden instance, to prevent an infinite
original rather than overridden instance, to prevent an infinite
recursion.)</para>
</section>

View File

@ -12,11 +12,11 @@ let
declarations = map (fn: stripPrefix fn) opt.declarations;
});
prefix = toString pkgs.path;
prefix = toString ../../..;
stripPrefix = fn:
if substring 0 (stringLength prefix) fn == prefix then
substring (add (stringLength prefix) 1) 1000 fn
substring (stringLength prefix + 1) 1000 fn
else
fn;

View File

@ -76,7 +76,7 @@ in
environment.systemPackages = [ glibcLocales ];
environment.variables =
environment.sessionVariables =
{ LANG = config.i18n.defaultLocale;
LOCALE_ARCHIVE = "/run/current-system/sw/lib/locale/locale-archive";
};

View File

@ -19,6 +19,7 @@ in
default = {};
description = ''
A set of environment variables used in the global environment.
These variables will be set on shell initialisation.
The value of each variable can be either a string or a list of
strings. The latter is concatenated, interspersed with colon
characters.
@ -148,6 +149,12 @@ in
system.build.binsh = pkgs.bashInteractive;
# Set session variables in the shell as well. This is usually
# unnecessary, but it allows changes to session variables to take
# effect without restarting the session (e.g. by opening a new
# terminal instead of logging out of X11).
environment.variables = config.environment.sessionVariables;
environment.etc."shells".text =
''
${concatStringsSep "\n" cfg.shells}

View File

@ -0,0 +1,56 @@
# This module defines a system-wide environment that will be
# initialised by pam_env (that is, not only in shells).
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.environment;
in
{
options = {
environment.sessionVariables = mkOption {
default = {};
description = ''
A set of environment variables used in the global environment.
These variables will be set by PAM.
The value of each variable can be either a string or a list of
strings. The latter is concatenated, interspersed with colon
characters.
'';
type = types.attrsOf (mkOptionType {
name = "a string or a list of strings";
merge = loc: defs:
let
defs' = filterOverrides defs;
res = (head defs').value;
in
if isList res then concatLists (getValues defs')
else if lessThan 1 (length defs') then
throw "The option `${showOption loc}' is defined multiple times, in ${showFiles (getFiles defs)}."
else if !isString res then
throw "The option `${showOption loc}' does not have a string value, in ${showFiles (getFiles defs)}."
else res;
});
apply = mapAttrs (n: v: if isList v then concatStringsSep ":" v else v);
};
};
config = {
system.build.pamEnvironment = pkgs.writeText "pam-environment"
''
${concatStringsSep "\n" (
(mapAttrsToList (n: v: ''${n}="${concatStringsSep ":" v}"'')
(zipAttrsWith (const concatLists) ([ (mapAttrs (n: v: [ v ]) cfg.sessionVariables) ]))))}
'';
};
}

View File

@ -30,7 +30,7 @@ in
config = {
environment.variables.TZDIR = "/etc/zoneinfo";
environment.sessionVariables.TZDIR = "/etc/zoneinfo";
systemd.globalEnvironment.TZDIR = tzdir;

View File

@ -0,0 +1,138 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.zramSwap;
devices = map (nr: "zram${toString nr}") (range 0 (cfg.numDevices - 1));
modprobe = "${config.system.sbin.modprobe}/sbin/modprobe";
in
{
###### interface
options = {
zramSwap = {
enable = mkOption {
default = false;
type = types.bool;
description = ''
Enable in-memory compressed swap space provided by the zram kernel
module. It is recommended to enable only for kernel 3.14 or higher.
'';
};
numDevices = mkOption {
default = 4;
type = types.int;
description = ''
Number of zram swap devices to create. It should be equal to the
number of CPU cores your system has.
'';
};
memoryPercent = mkOption {
default = 50;
type = types.int;
description = ''
Maximum amount of memory that can be used by the zram swap devices
(as a percentage of your total memory). Defaults to 1/2 of your total
RAM.
'';
};
priority = mkOption {
default = 5;
type = types.int;
description = ''
Priority of the zram swap devices. It should be a number higher than
the priority of your disk-based swap devices (so that the system will
fill the zram swap devices before falling back to disk swap).
'';
};
};
};
config = mkIf cfg.enable {
system.requiredKernelConfig = with config.lib.kernelConfig; [
(isModule "ZRAM")
];
# Disabling this for the moment, as it would create and mkswap devices twice,
# once in stage 2 boot, and again when the zram-reloader service starts.
# boot.kernelModules = [ "zram" ];
boot.extraModprobeConfig = ''
options zram num_devices=${toString cfg.numDevices}
'';
services.udev.extraRules = ''
KERNEL=="zram[0-9]*", ENV{SYSTEMD_WANTS}="zram-init-%k.service", TAG+="systemd"
'';
systemd.services =
let
createZramInitService = dev:
nameValuePair "zram-init-${dev}" {
description = "Init swap on zram-based device ${dev}";
bindsTo = [ "dev-${dev}.swap" ];
after = [ "dev-${dev}.device" "zram-reloader.service" ];
requires = [ "dev-${dev}.device" "zram-reloader.service" ];
before = [ "dev-${dev}.swap" ];
requiredBy = [ "dev-${dev}.swap" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStop = "${pkgs.stdenv.shell} -c 'echo 1 > /sys/class/block/${dev}/reset'";
};
script = ''
set -u
set -o pipefail
PATH=${pkgs.procps}/bin:${pkgs.gnugrep}/bin:${pkgs.gnused}/bin
# Calculate memory to use for zram
totalmem=$(free | grep -e "^Mem:" | sed -e 's/^Mem: *//' -e 's/ *.*//')
mem=$(((totalmem * ${toString cfg.memoryPercent} / 100 / ${toString cfg.numDevices}) * 1024))
echo $mem > /sys/class/block/${dev}/disksize
${pkgs.utillinux}/sbin/mkswap /dev/${dev}
'';
restartIfChanged = false;
};
in listToAttrs ((map createZramInitService devices) ++ [(nameValuePair "zram-reloader"
{
description = "Reload zram kernel module when number of devices changes";
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStartPre = "${modprobe} -r zram";
ExecStart = "${modprobe} zram";
ExecStop = "${modprobe} -r zram";
};
restartTriggers = [ cfg.numDevices ];
restartIfChanged = true;
})]);
swapDevices =
let
useZramSwap = dev:
{
device = "/dev/${dev}";
priority = cfg.priority;
};
in map useZramSwap devices;
};
}

View File

@ -19,7 +19,7 @@ with lib;
# ISO naming.
isoImage.isoName = "${config.isoImage.isoBaseName}-${config.system.nixosVersion}-${pkgs.stdenv.system}.iso";
isoImage.volumeID = substring 0 11 "NIXOS_${config.system.nixosVersion}";
isoImage.volumeID = substring 0 11 "NIXOS_ISO";
# Make the installer more likely to succeed in low memory
# environments. The kernel's overcommit heustistics bite us

View File

@ -6,4 +6,4 @@ let nodes = import networkExpr; in
with import ../../../../lib/testing.nix { inherit system; };
(complete { inherit nodes; testScript = ""; }).driver
(makeTest { inherit nodes; testScript = ""; }).driver

View File

@ -466,7 +466,7 @@ $bootLoaderConfig
# };
# List packages installed in system profile. To search by name, run:
# $ nix-env -qaP | grep wget
# \$ nix-env -qaP | grep wget
# environment.systemPackages = with pkgs; [
# wget
# ];

View File

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

View File

@ -14,12 +14,14 @@
./config/power-management.nix
./config/pulseaudio.nix
./config/shells-environment.nix
./config/system-environment.nix
./config/swap.nix
./config/sysctl.nix
./config/system-path.nix
./config/timezone.nix
./config/unix-odbc-drivers.nix
./config/users-groups.nix
./config/zram.nix
./hardware/all-firmware.nix
./hardware/cpu/intel-microcode.nix
./hardware/cpu/amd-microcode.nix
@ -205,6 +207,7 @@
./services/networking/networkmanager.nix
./services/networking/ngircd.nix
./services/networking/notbit.nix
./services/networking/nsd.nix
./services/networking/ntopng.nix
./services/networking/ntpd.nix
./services/networking/oidentd.nix
@ -255,6 +258,7 @@
./services/ttys/agetty.nix
./services/ttys/kmscon.nix
./services/web-servers/apache-httpd/default.nix
./services/web-servers/fcgiwrap.nix
./services/web-servers/jboss/default.nix
./services/web-servers/lighttpd/default.nix
./services/web-servers/lighttpd/cgit.nix
@ -322,6 +326,7 @@
./tasks/network-interfaces.nix
./tasks/scsi-link-power-management.nix
./tasks/swraid.nix
./tasks/trackpoint.nix
./testing/service-runner.nix
./virtualisation/container-config.nix
./virtualisation/containers.nix

View File

@ -19,13 +19,16 @@ in
environment.variables =
{ LOCATE_PATH = "/var/cache/locatedb";
NIXPKGS_CONFIG = "/etc/nix/nixpkgs-config.nix";
NIX_PATH =
PAGER = "less -R";
EDITOR = "nano";
};
environment.sessionVariables =
{ NIX_PATH =
[ "/nix/var/nix/profiles/per-user/root/channels/nixos"
"nixpkgs=/etc/nixos/nixpkgs"
"nixos-config=/etc/nixos/configuration.nix"
];
PAGER = "less -R";
EDITOR = "nano";
};
environment.profiles =

View File

@ -12,9 +12,11 @@ with lib;
}
];
environment.variables.OPENSSL_X509_CERT_FILE = "/etc/ssl/certs/ca-bundle.crt";
environment.variables.CURL_CA_BUNDLE = "/etc/ssl/certs/ca-bundle.crt";
environment.variables.GIT_SSL_CAINFO = "/etc/ssl/certs/ca-bundle.crt";
environment.sessionVariables =
{ OPENSSL_X509_CERT_FILE = "/etc/ssl/certs/ca-bundle.crt";
CURL_CA_BUNDLE = "/etc/ssl/certs/ca-bundle.crt";
GIT_SSL_CAINFO = "/etc/ssl/certs/ca-bundle.crt";
};
};

View File

@ -186,6 +186,7 @@ let
"password optional ${pkgs.samba}/lib/security/pam_smbpass.so nullok use_authtok try_first_pass"}
# Session management.
session required pam_env.so envfile=${config.system.build.pamEnvironment}
session required pam_unix.so
${optionalString cfg.setLoginUid
"session required pam_loginuid.so"}

View File

@ -58,9 +58,6 @@ in
# Don't edit this file. Set the NixOS option security.sudo.configFile instead.
# Environment variables to keep for root and %wheel.
Defaults:root,%wheel env_keep+=LOCALE_ARCHIVE
Defaults:root,%wheel env_keep+=NIX_CONF_DIR
Defaults:root,%wheel env_keep+=NIX_PATH
Defaults:root,%wheel env_keep+=TERMINFO_DIRS
Defaults:root,%wheel env_keep+=TERMINFO
@ -81,10 +78,13 @@ in
security.pam.services.sudo = { sshAgentAuth = true; };
environment.etc = singleton
{ source = pkgs.writeText "sudoers-in" cfg.configFile;
{ source =
pkgs.runCommand "sudoers"
{src = pkgs.writeText "sudoers-in" cfg.configFile; }
# Make sure that the sudoers file is syntactically valid.
# (currently disabled - NIXOS-66)
#"${pkgs.sudo}/sbin/visudo -f $src -c && cp $src $out";
"${pkgs.sudo.override {keepVisudo = true;}}/sbin/visudo -f $src -c &&
cp $src $out";
target = "sudoers";
mode = "0440";
};

View File

@ -126,6 +126,16 @@ in {
Extra configuration. Overrides any other cofiguration.
'';
};
configFile = mkOption {
type = types.string;
default = "/var/lib/couchdb/couchdb.ini";
description = ''
Custom configuration file. File needs to be readable and writable
from couchdb user/group.
'';
};
};
};
@ -146,11 +156,13 @@ in {
mkdir -p `dirname ${cfg.logFile}`;
mkdir -p ${cfg.databaseDir};
mkdir -p ${cfg.viewIndexDir};
touch ${cfg.configFile}
if [ "$(id -u)" = 0 ]; then
chown ${cfg.user}:${cfg.group} `dirname ${cfg.uriFile}`
chown ${cfg.user}:${cfg.group} ${cfg.uriFile}
chown ${cfg.user}:${cfg.group} ${cfg.databaseDir}
chown ${cfg.user}:${cfg.group} ${cfg.viewIndexDir}
chown ${cfg.user}:${cfg.group} ${cfg.configFile}
fi
'';
@ -158,7 +170,7 @@ in {
PermissionsStartOnly = true;
User = cfg.user;
Group = cfg.group;
ExecStart = "${cfg.package}/bin/couchdb -a ${configFile} -a ${pkgs.writeText "couchdb-extra.ini" cfg.extraConfig}";
ExecStart = "${cfg.package}/bin/couchdb -a ${configFile} -a ${pkgs.writeText "couchdb-extra.ini" cfg.extraConfig} -a ${cfg.configFile}";
};
};

View File

@ -125,13 +125,14 @@ in
after = [ "dbus.service" ]
++ optional config.services.httpd.enable "httpd.service"
++ optional config.services.mysql.enable "mysql.service"
++ optional config.services.postgresql.enable "postgresql.service"
++ optional config.services.tomcat.enable "tomcat.service"
++ optional config.services.svnserve.enable "svnserve.service"
++ optional config.services.mongodb.enable "mongodb.service";
restartIfChanged = false;
path = [ pkgs.nix pkgs.disnix pkgs.dysnomia ];
path = [ pkgs.nix pkgs.disnix dysnomia ];
environment = {
HOME = "/root";

View File

@ -318,7 +318,7 @@ in
};
# Set up the environment variables for running Nix.
environment.variables = cfg.envVars;
environment.sessionVariables = cfg.envVars;
environment.extraInit =
''

View File

@ -12,7 +12,7 @@ let
name = "graphite-config";
paths = lists.filter (el: el != null) [
(writeTextOrNull "carbon.conf" cfg.carbon.config)
(writeTextOrNull "storage-agregation.conf" cfg.carbon.storageAggregation)
(writeTextOrNull "storage-aggregation.conf" cfg.carbon.storageAggregation)
(writeTextOrNull "storage-schemas.conf" cfg.carbon.storageSchemas)
(writeTextOrNull "blacklist.conf" cfg.carbon.blacklist)
(writeTextOrNull "whitelist.conf" cfg.carbon.whitelist)
@ -47,19 +47,19 @@ in {
web = {
enable = mkOption {
description = "Whether to enable graphite web frontend";
description = "Whether to enable graphite web frontend.";
default = false;
type = types.uniq types.bool;
};
host = mkOption {
description = "Graphite web frontend listen address";
description = "Graphite web frontend listen address.";
default = "127.0.0.1";
type = types.str;
};
port = mkOption {
description = "Graphite web frontend port";
description = "Graphite web frontend port.";
default = 8080;
type = types.int;
};
@ -67,7 +67,7 @@ in {
carbon = {
config = mkOption {
description = "Content of carbon configuration file";
description = "Content of carbon configuration file.";
default = ''
[cache]
# Listen on localhost by default for security reasons
@ -83,13 +83,13 @@ in {
};
enableCache = mkOption {
description = "Whether to enable carbon cache, the graphite storage daemon";
description = "Whether to enable carbon cache, the graphite storage daemon.";
default = false;
type = types.uniq types.bool;
};
storageAggregation = mkOption {
description = "Defines how to aggregate data to lower-precision retentions";
description = "Defines how to aggregate data to lower-precision retentions.";
default = null;
type = types.uniq (types.nullOr types.string);
example = ''
@ -101,7 +101,7 @@ in {
};
storageSchemas = mkOption {
description = "Defines retention rates for storing metrics";
description = "Defines retention rates for storing metrics.";
default = "";
type = types.uniq (types.nullOr types.string);
example = ''
@ -112,21 +112,24 @@ in {
};
blacklist = mkOption {
description = "Any metrics received which match one of the experssions will be dropped";
description = "Any metrics received which match one of the experssions will be dropped.";
default = null;
type = types.uniq (types.nullOr types.string);
example = "^some\.noisy\.metric\.prefix\..*";
};
whitelist = mkOption {
description = "Only metrics received which match one of the experssions will be persisted";
description = "Only metrics received which match one of the experssions will be persisted.";
default = null;
type = types.uniq (types.nullOr types.string);
example = ".*";
};
rewriteRules = mkOption {
description = "Regular expression patterns that can be used to rewrite metric names in a search and replace fashion";
description = ''
Regular expression patterns that can be used to rewrite metric names
in a search and replace fashion.
'';
default = null;
type = types.uniq (types.nullOr types.string);
example = ''
@ -137,7 +140,7 @@ in {
};
enableRelay = mkOption {
description = "Whether to enable carbon relay, the carbon replication and sharding service";
description = "Whether to enable carbon relay, the carbon replication and sharding service.";
default = false;
type = types.uniq types.bool;
};
@ -154,13 +157,13 @@ in {
};
enableAggregator = mkOption {
description = "Whether to enable carbon agregator, the carbon buffering service";
description = "Whether to enable carbon agregator, the carbon buffering service.";
default = false;
type = types.uniq types.bool;
};
aggregationRules = mkOption {
description = "Defines if and how received metrics will be agregated";
description = "Defines if and how received metrics will be agregated.";
default = null;
type = types.uniq (types.nullOr types.string);
example = ''
@ -188,10 +191,7 @@ in {
};
restartTriggers = [
pkgs.pythonPackages.carbon
cfg.carbon.config
cfg.carbon.storageAggregation
cfg.carbon.storageSchemas
cfg.carbon.rewriteRules
configDir
];
preStart = ''
mkdir -p ${cfg.dataDir}/whisper
@ -212,7 +212,8 @@ in {
Group = "graphite";
};
restartTriggers = [
pkgs.pythonPackages.carbon cfg.carbon.config cfg.carbon.aggregationRules
pkgs.pythonPackages.carbon
configDir
];
};
@ -228,7 +229,8 @@ in {
Group = "graphite";
};
restartTriggers = [
pkgs.pythonPackages.carbon cfg.carbon.config cfg.carbon.relayRules
pkgs.pythonPackages.carbon
configDir
];
};
@ -271,7 +273,6 @@ in {
'';
restartTriggers = [
pkgs.python27Packages.graphite_web
pkgs.python27Packages.waitress
];
};

View File

@ -69,8 +69,8 @@ in
};
graphitePort = mkOption {
description = "Port of Graphite server";
default = config.services.graphite.web.port;
description = "Port of Graphite server (i.e. carbon-cache).";
default = 2003;
type = types.uniq types.int;
};

View File

@ -0,0 +1,751 @@
{ config, pkgs, ... }:
with pkgs.lib;
let
cfg = config.services.nsd;
username = "nsd";
stateDir = "/var/lib/nsd";
pidFile = stateDir + "/var/nsd.pid";
zoneFiles = pkgs.stdenv.mkDerivation {
preferLocalBuild = true;
name = "nsd-env";
buildCommand = concatStringsSep "\n"
[ "mkdir -p $out"
(concatStrings (mapAttrsToList (zoneName: zoneOptions: ''
cat > "$out/${zoneName}" <<_EOF_
${zoneOptions.data}
_EOF_
'') zoneConfigs))
];
};
configFile = pkgs.writeText "nsd.conf" ''
server:
username: ${username}
chroot: "${stateDir}"
# The directory for zonefile: files. The daemon chdirs here.
zonesdir: "${stateDir}"
# the list of dynamically added zones.
zonelistfile: "${stateDir}/var/zone.list"
database: "${stateDir}/var/nsd.db"
logfile: "${stateDir}/var/nsd.log"
pidfile: "${pidFile}"
xfrdfile: "${stateDir}/var/xfrd.state"
xfrdir: "${stateDir}/tmp"
# interfaces
${forEach " ip-address: " cfg.interfaces}
server-count: ${toString cfg.serverCount}
ip-transparent: ${yesOrNo cfg.ipTransparent}
do-ip4: ${yesOrNo cfg.ipv4}
do-ip6: ${yesOrNo cfg.ipv6}
port: ${toString cfg.port}
verbosity: ${toString cfg.verbosity}
hide-version: ${yesOrNo cfg.hideVersion}
identity: "${cfg.identity}"
${maybeString "nsid: " cfg.nsid}
tcp-count: ${toString cfg.tcpCount}
tcp-query-count: ${toString cfg.tcpQueryCount}
tcp-timeout: ${toString cfg.tcpTimeout}
ipv4-edns-size: ${toString cfg.ipv4EDNSSize}
ipv6-edns-size: ${toString cfg.ipv6EDNSSize}
${if cfg.statistics == null then "" else "statistics: ${toString cfg.statistics}"}
xfrd-reload-timeout: ${toString cfg.xfrdReloadTimeout}
zonefiles-check: ${yesOrNo cfg.zonefilesCheck}
rrl-size: ${toString cfg.ratelimit.size}
rrl-ratelimit: ${toString cfg.ratelimit.ratelimit}
rrl-whitelist-ratelimit: ${toString cfg.ratelimit.whitelistRatelimit}
${maybeString "rrl-slip: " cfg.ratelimit.slip}
${maybeString "rrl-ipv4-prefix-length: " cfg.ratelimit.ipv4PrefixLength}
${maybeString "rrl-ipv6-prefix-length: " cfg.ratelimit.ipv6PrefixLength}
${keyConfigFile}
remote-control:
control-enable: ${yesOrNo cfg.remoteControl.enable}
${forEach " control-interface: " cfg.remoteControl.interfaces}
control-port: ${toString cfg.port}
server-key-file: "${cfg.remoteControl.serverKeyFile}"
server-cert-file: "${cfg.remoteControl.serverCertFile}"
control-key-file: "${cfg.remoteControl.controlKeyFile}"
control-cert-file: "${cfg.remoteControl.controlCertFile}"
# zone files reside in "${zoneFiles}" linked to "${stateDir}/zones"
${concatStrings (mapAttrsToList zoneConfigFile zoneConfigs)}
${cfg.extraConfig}
'';
yesOrNo = b: if b then "yes" else "no";
maybeString = pre: s: if s == null then "" else ''${pre} "${s}"'';
forEach = pre: l: concatMapStrings (x: pre + x + "\n") l;
keyConfigFile = concatStrings (mapAttrsToList (keyName: keyOptions: ''
key:
name: "${keyName}"
algorithm: "${keyOptions.algorithm}"
include: "${stateDir}/private/${keyName}"
'') cfg.keys);
copyKeys = concatStrings (mapAttrsToList (keyName: keyOptions: ''
secret=$(cat "${keyOptions.keyFile}")
dest="${stateDir}/private/${keyName}"
echo " secret: \"$secret\"" > "$dest"
${pkgs.coreutils}/bin/chown ${username}:${username} "$dest"
${pkgs.coreutils}/bin/chmod 0400 "$dest"
'') cfg.keys);
zoneConfigFile = name: zone: ''
zone:
name: "${name}"
zonefile: "${stateDir}/zones/${name}"
${maybeString "outgoing-interface: " zone.outgoingInterface}
${forEach " rrl-whitelist: " zone.rrlWhitelist}
${forEach " allow-notify: " zone.allowNotify}
${forEach " request-xfr: " zone.requestXFR}
allow-axfr-fallback: ${yesOrNo zone.allowAXFRFallback}
${forEach " notify: " zone.notify}
notify-retry: ${toString zone.notifyRetry}
${forEach " provide-xfr: " zone.provideXFR}
'';
zoneConfigs = zoneConfigs' {} "" { children = cfg.zones; };
zoneConfigs' = parent: name: zone:
if !(zone ? children) || zone.children == null || zone.children == { }
# leaf -> actual zone
then listToAttrs [ (nameValuePair name (parent // zone)) ]
# fork -> pattern
else zipAttrsWith (name: head) (
mapAttrsToList (name: child: zoneConfigs' (parent // zone // { children = {}; }) name child)
zone.children
);
# fighting infinite recursion
zoneOptions = zoneOptionsRaw // childConfig zoneOptions1 true;
zoneOptions1 = zoneOptionsRaw // childConfig zoneOptions2 false;
zoneOptions2 = zoneOptionsRaw // childConfig zoneOptions3 false;
zoneOptions3 = zoneOptionsRaw // childConfig zoneOptions4 false;
zoneOptions4 = zoneOptionsRaw // childConfig zoneOptions5 false;
zoneOptions5 = zoneOptionsRaw // childConfig zoneOptions6 false;
zoneOptions6 = zoneOptionsRaw // childConfig null false;
childConfig = x: v: { options.children = { type = types.attrsOf x; visible = v; }; };
zoneOptionsRaw = types.submodule (
{ options, ... }:
{ options = {
children = mkOption {
default = {};
description = ''
Children zones inherit all options of their parents. Attributes
defined in a child will overwrite the ones of its parent. Only
leaf zones will be actually served. This way it's possible to
define maybe zones which share most attributes without
duplicating everything. This mechanism replaces nsd's patterns
in a save and functional way.
'';
};
allowNotify = mkOption {
type = types.listOf types.str;
default = [ ];
example = [ "192.0.2.0/24 NOKEY" "10.0.0.1-10.0.0.5 my_tsig_key_name"
"10.0.3.4&255.255.0.0 BLOCKED"
];
description = ''
Listed primary servers are allowed to notify this secondary server.
<screen><![CDATA[
Format: <ip> <key-name | NOKEY | BLOCKED>
<ip> either a plain IPv4/IPv6 address or range. Valid patters for ranges:
* 10.0.0.0/24 # via subnet size
* 10.0.0.0&255.255.255.0 # via subnet mask
* 10.0.0.1-10.0.0.254 # via range
A optional port number could be added with a '@':
* 2001:1234::1@1234
<key-name | NOKEY | BLOCKED>
* <key-name> will use the specified TSIG key
* NOKEY no TSIG signature is required
* BLOCKED notifies from non-listed or blocked IPs will be ignored
* ]]></screen>
'';
};
requestXFR = mkOption {
type = types.listOf types.str;
default = [];
example = [];
description = ''
Format: <code>[AXFR|UDP] &lt;ip-address&gt; &lt;key-name | NOKEY&gt;</code>
'';
};
allowAXFRFallback = mkOption {
type = types.bool;
default = true;
description = ''
If NSD as secondary server should be allowed to AXFR if the primary
server does not allow IXFR.
'';
};
notify = mkOption {
type = types.listOf types.str;
default = [];
example = [ "10.0.0.1@3721 my_key" "::5 NOKEY" ];
description = ''
This primary server will notify all given secondary servers about
zone changes.
<screen><![CDATA[
Format: <ip> <key-name | NOKEY>
<ip> a plain IPv4/IPv6 address with on optional port number (ip@port)
<key-name | NOKEY>
* <key-name> sign notifies with the specified key
* NOKEY don't sign notifies
]]></screen>
'';
};
notifyRetry = mkOption {
type = types.int;
default = 5;
description = ''
Specifies the number of retries for failed notifies. Set this along with notify.
'';
};
provideXFR = mkOption {
type = types.listOf types.str;
default = [];
example = [ "192.0.2.0/24 NOKEY" "192.0.2.0/24 my_tsig_key_name" ];
description = ''
Allow these IPs and TSIG to transfer zones, addr TSIG|NOKEY|BLOCKED
address range 192.0.2.0/24, 1.2.3.4&amp;255.255.0.0, 3.0.2.20-3.0.2.40
'';
};
outgoingInterface = mkOption {
type = types.nullOr types.str;
default = null;
example = "2000::1@1234";
description = ''
This address will be used for zone-transfere requests if configured
as a secondary server or notifications in case of a primary server.
Supply either a plain IPv4 or IPv6 address with an optional port
number (ip@port).
'';
};
rrlWhitelist = mkOption {
type = types.listOf types.str;
default = [];
description = ''
Whitelists the given rrl-types.
The RRL classification types are: nxdomain, error, referral, any,
rrsig, wildcard, nodata, dnskey, positive, all
'';
};
data = mkOption {
type = types.str;
default = "";
example = "";
description = ''
The actual zone data. This is the content of your zone file.
Use imports or pkgs.lib.readFile if you don't want this data in your config file.
'';
};
};
}
);
in
{
options = {
services.nsd = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Whether to enable the NSD authoritative domain name server.
'';
};
rootServer = mkOption {
type = types.bool;
default = false;
description = ''
Wheter if this server will be a root server (a DNS root server, you
usually don't want that).
'';
};
interfaces = mkOption {
type = types.listOf types.str;
default = [ "127.0.0.0" "::1" ];
description = ''
What addresses the server should listen to.
'';
};
serverCount = mkOption {
type = types.int;
default = 1;
description = ''
Number of NSD servers to fork. Put the number of CPUs to use here.
'';
};
ipTransparent = mkOption {
type = types.bool;
default = false;
description = ''
Allow binding to non local addresses.
'';
};
ipv4 = mkOption {
type = types.bool;
default = true;
description = ''
Wheter to listen on IPv4 connections.
'';
};
ipv6 = mkOption {
type = types.bool;
default = true;
description = ''
Wheter to listen on IPv6 connections.
'';
};
port = mkOption {
type = types.int;
default = 53;
description = ''
Port the service should bind do.
'';
};
verbosity = mkOption {
type = types.int;
default = 0;
description = ''
Verbosity level.
'';
};
hideVersion = mkOption {
type = types.bool;
default = true;
description = ''
Wheter NSD should answer VERSION.BIND and VERSION.SERVER CHAOS class queries.
'';
};
identity = mkOption {
type = types.str;
default = "unidentified server";
description = ''
Identify the server (CH TXT ID.SERVER entry).
'';
};
nsid = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
NSID identity (hex string, or "ascii_somestring").
'';
};
tcpCount = mkOption {
type = types.int;
default = 100;
description = ''
Maximum number of concurrent TCP connections per server.
'';
};
tcpQueryCount = mkOption {
type = types.int;
default = 0;
description = ''
Maximum number of queries served on a single TCP connection.
0 means no maximum.
'';
};
tcpTimeout = mkOption {
type = types.int;
default = 120;
description = ''
TCP timeout in seconds.
'';
};
ipv4EDNSSize = mkOption {
type = types.int;
default = 4096;
description = ''
Preferred EDNS buffer size for IPv4.
'';
};
ipv6EDNSSize = mkOption {
type = types.int;
default = 4096;
description = ''
Preferred EDNS buffer size for IPv6.
'';
};
statistics = mkOption {
type = types.nullOr types.int;
default = null;
description = ''
Statistics are produced every number of seconds. Prints to log.
If null no statistics are logged.
'';
};
xfrdReloadTimeout = mkOption {
type = types.int;
default = 1;
description = ''
Number of seconds between reloads triggered by xfrd.
'';
};
zonefilesCheck = mkOption {
type = types.bool;
default = true;
description = ''
Wheter to check mtime of all zone files on start and sighup.
'';
};
extraConfig = mkOption {
type = types.str;
default = "";
description = ''
Extra nsd config.
'';
};
ratelimit = mkOption {
type = types.submodule (
{ options, ... }:
{ options = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Enable ratelimit capabilities.
'';
};
size = mkOption {
type = types.int;
default = 1000000;
description = ''
Size of the hashtable. More buckets use more memory but lower
the chance of hash hash collisions.
'';
};
ratelimit = mkOption {
type = types.int;
default = 200;
description = ''
Max qps allowed from any query source.
0 means unlimited. With an verbosity of 2 blocked and
unblocked subnets will be logged.
'';
};
whitelistRatelimit = mkOption {
type = types.int;
default = 2000;
description = ''
Max qps allowed from whitelisted sources.
0 means unlimited. Set the rrl-whitelist option for specific
queries to apply this limit instead of the default to them.
'';
};
slip = mkOption {
type = types.nullOr types.int;
default = null;
description = ''
Number of packets that get discarded before replying a SLIP response.
0 disables SLIP responses. 1 will make every response a SLIP response.
'';
};
ipv4PrefixLength = mkOption {
type = types.nullOr types.int;
default = null;
description = ''
IPv4 prefix length. Addresses are grouped by netblock.
'';
};
ipv6PrefixLength = mkOption {
type = types.nullOr types.int;
default = null;
description = ''
IPv6 prefix length. Addresses are grouped by netblock.
'';
};
};
});
default = {
};
example = {};
description = ''
'';
};
remoteControl = mkOption {
type = types.submodule (
{ config, options, ... }:
{ options = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Wheter to enable remote control via nsd-control(8).
'';
};
interfaces = mkOption {
type = types.listOf types.str;
default = [ "127.0.0.1" "::1" ];
description = ''
Which interfaces NSD should bind to for remote control.
'';
};
port = mkOption {
type = types.int;
default = 8952;
description = ''
Port number for remote control operations (uses TLS over TCP).
'';
};
serverKeyFile = mkOption {
type = types.path;
default = "/etc/nsd/nsd_server.key";
description = ''
Path to the server private key, which is used by the server
but not by nsd-control. This file is generated by nsd-control-setup.
'';
};
serverCertFile = mkOption {
type = types.path;
default = "/etc/nsd/nsd_server.pem";
description = ''
Path to the server self signed certificate, which is used by the server
but and by nsd-control. This file is generated by nsd-control-setup.
'';
};
controlKeyFile = mkOption {
type = types.path;
default = "/etc/nsd/nsd_control.key";
description = ''
Path to the client private key, which is used by nsd-control
but not by the server. This file is generated by nsd-control-setup.
'';
};
controlCertFile = mkOption {
type = types.path;
default = "/etc/nsd/nsd_control.pem";
description = ''
Path to the client certificate signed with the server certificate.
This file is used by nsd-control and generated by nsd-control-setup.
'';
};
};
});
default = {
};
example = {};
description = ''
'';
};
keys = mkOption {
type = types.attrsOf (types.submodule (
{ options, ... }:
{ options = {
algorithm = mkOption {
type = types.str;
default = "hmac-sha256";
description = ''
Authentication algorithm for this key.
'';
};
keyFile = mkOption {
type = types.path;
description = ''
Path to the file which contains the actual base64 encoded
key. The key will be copied into "${stateDir}/private" before
NSD starts. The copied file is only accessibly by the NSD
user.
'';
};
};
}));
default = {
};
example = {
"tsig.example.org" = {
algorithm = "hmac-md5";
secret = "aaaaaabbbbbbccccccdddddd";
};
};
description = ''
Define your TSIG keys here.
'';
};
zones = mkOption {
type = types.attrsOf zoneOptions;
default = {};
example = {
"serverGroup1" = {
provideXFR = [ "10.1.2.3 NOKEY" ];
children = {
"example.com." = {
data = ''
$ORIGIN example.com.
$TTL 86400
@ IN SOA a.ns.example.com. admin.example.com. (
...
'';
};
"example.org." = {
data = ''
$ORIGIN example.org.
$TTL 86400
@ IN SOA a.ns.example.com. admin.example.com. (
...
'';
};
};
};
"example.net." = {
provideXFR = [ "10.3.2.1 NOKEY" ];
data = ''...'';
};
};
description = ''
Define your zones here. Zones can cascade other zones and therefore
inherit settings from parent zones. Look at the definition of
children to learn about inheritance and child zones.
The given example will define 3 zones (example.(com|org|net).). Both
example.com. and example.org. inherit their configuration from
serverGroup1.
'';
};
};
};
config = mkIf cfg.enable {
# this is not working :(
nixpkgs.config.nsd = {
ipv6 = cfg.ipv6;
ratelimit = cfg.ratelimit.enable;
rootServer = cfg.rootServer;
};
users.extraGroups = singleton {
name = username;
gid = config.ids.gids.nsd;
};
users.extraUsers = singleton {
name = username;
description = "NSD service user";
home = stateDir;
createHome = true;
uid = config.ids.uids.nsd;
group = username;
};
systemd.services.nsd = {
description = "NSD authoritative only domain name service";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
Type = "forking";
PIDFile = pidFile;
Restart = "always";
ExecStart = "${pkgs.nsd}/sbin/nsd -c ${configFile}";
};
preStart = ''
${pkgs.coreutils}/bin/mkdir -m 0700 -p "${stateDir}/private"
${pkgs.coreutils}/bin/mkdir -m 0700 -p "${stateDir}/tmp"
${pkgs.coreutils}/bin/mkdir -m 0700 -p "${stateDir}/var"
${pkgs.coreutils}/bin/touch "${stateDir}/don't touch anything in here"
${pkgs.coreutils}/bin/rm -f "${stateDir}/private/"*
${pkgs.coreutils}/bin/rm -f "${stateDir}/tmp/"*
${pkgs.coreutils}/bin/chown nsd:nsd -R "${stateDir}/private"
${pkgs.coreutils}/bin/chown nsd:nsd -R "${stateDir}/tmp"
${pkgs.coreutils}/bin/chown nsd:nsd -R "${stateDir}/var"
${pkgs.coreutils}/bin/rm -rf "${stateDir}/zones"
${pkgs.coreutils}/bin/cp -r "${zoneFiles}" "${stateDir}/zones"
${copyKeys}
'';
};
};
}

View File

@ -104,8 +104,9 @@ in {
after = [ "network-interfaces.target" ];
environment = { ES_HOME = cfg.dataDir; };
serviceConfig = {
ExecStart = "${pkgs.elasticsearch}/bin/elasticsearch -f -Des.path.conf=${configDir}";
ExecStart = "${pkgs.elasticsearch}/bin/elasticsearch -Des.path.conf=${configDir}";
User = "elasticsearch";
PermissionsStartOnly = true;
};
preStart = ''
mkdir -m 0700 -p ${cfg.dataDir}

View File

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

View File

@ -0,0 +1,49 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.fcgiwrap;
in {
options = {
services.fcgiwrap = {
enable = mkOption {
type = types.bool;
default = false;
description = "Whether to enable fcgiwrap, a server for running CGI applications over FastCGI.";
};
preforkProcesses = mkOption {
type = types.int;
default = 1;
description = "Number of processes to prefork.";
};
bindSocket = mkOption {
type = types.string;
default = "unix:/run/fcgiwrap.sock";
description = ''
Socket to bind to. Valid socket URLs are:
unix:/path/to/socket for Unix sockets
tcp:dot.ted.qu.ad:port for IPv4 sockets
tcp6:[ipv6_addr]:port for IPv6 sockets
'';
};
};
};
config = mkIf cfg.enable {
systemd.services.fcgiwrap = {
after = [ "nss-user-lookup.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${pkgs.fcgiwrap}/sbin/fcgiwrap -c ${builtins.toString cfg.preforkProcesses} -s ${cfg.bindSocket}";
};
};
};
}

View File

@ -119,6 +119,8 @@ in
startOn = "started network-interfaces";
stopOn = "stopping network-interfaces";
daemonType = "daemon";
preStart =
''
# Create the base directory
@ -327,10 +329,12 @@ in
done
''
else ""}
${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c 'CATALINA_BASE=${cfg.baseDir} JAVA_HOME=${pkgs.jdk} JAVA_OPTS="${cfg.javaOpts}" CATALINA_OPTS="${cfg.catalinaOpts}" ${tomcat}/bin/startup.sh'
'';
script = ''
${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c 'CATALINA_BASE=${cfg.baseDir} JAVA_HOME=${pkgs.jdk} JAVA_OPTS="${cfg.javaOpts}" CATALINA_OPTS="${cfg.catalinaOpts}" ${tomcat}/bin/startup.sh'
'';
postStop =
''
echo "Stopping tomcat..."

View File

@ -95,7 +95,7 @@ let
# kernel, systemd units, init scripts, etc.) as well as a script
# `switch-to-configuration' that activates the configuration and
# makes it bootable.
system = showWarnings (
baseSystem = showWarnings (
if [] == failed then pkgs.stdenv.mkDerivation {
name = "nixos-${config.system.nixosVersion}";
preferLocalBuild = true;
@ -118,6 +118,10 @@ let
perl = "${pkgs.perl}/bin/perl -I${pkgs.perlPackages.FileSlurp}/lib/perl5/site_perl";
} else throw "\nFailed assertions:\n${concatStringsSep "\n" (map (x: "- ${x}") failed)}");
# Replace runtime dependencies
system = fold ({ oldDependency, newDependency }: drv:
pkgs.replaceDependency { inherit oldDependency newDependency drv; }
) baseSystem config.system.replaceRuntimeDependencies;
in
@ -184,6 +188,33 @@ in
'';
};
system.replaceRuntimeDependencies = mkOption {
default = [];
example = lib.literalExample "[ ({ original = pkgs.openssl; replacement = pkgs.callPackage /path/to/openssl { ... }; }) ]";
type = types.listOf (types.submodule (
{ options, ... }: {
options.original = mkOption {
type = types.package;
description = "The original package to override.";
};
options.replacement = mkOption {
type = types.package;
description = "The replacement package.";
};
})
);
apply = map ({ original, replacement, ... }: {
oldDependency = original;
newDependency = replacement;
});
description = ''
List of packages to override without doing a full rebuild.
The original derivation and replacement derivation must have the same
name length, and ideally should have close-to-identical directory layout.
'';
};
};

View File

@ -60,12 +60,12 @@ touch /etc/fstab # to shut up mount
touch /etc/mtab # to shut up mke2fs
touch /etc/initrd-release
mkdir -p /proc
mount -t proc none /proc
mount -t proc proc /proc
mkdir -p /sys
mount -t sysfs none /sys
mount -t devtmpfs -o "size=@devSize@" none /dev
mount -t sysfs sysfs /sys
mount -t devtmpfs -o "size=@devSize@" devtmpfs /dev
mkdir -p /run
mount -t tmpfs -o "mode=0755,size=@runSize@" none /run
mount -t tmpfs -o "mode=0755,size=@runSize@" tmpfs /run
# Process the kernel command line.

View File

@ -36,9 +36,9 @@ mount -n -o remount,rw /
# stage 1, we need to do that here.
if [ ! -e /proc/1 ]; then
mkdir -m 0755 -p /proc
mount -n -t proc none /proc
mount -n -t proc proc /proc
mkdir -m 0755 -p /dev
mount -t devtmpfs none /dev
mount -t devtmpfs devtmpfs /dev
fi
@ -82,9 +82,9 @@ done
# More special file systems, initialise required directories.
mkdir -m 0755 /dev/shm
mount -t tmpfs -o "rw,nosuid,nodev,size=@devShmSize@" none /dev/shm
mount -t tmpfs -o "rw,nosuid,nodev,size=@devShmSize@" tmpfs /dev/shm
mkdir -m 0755 -p /dev/pts
[ -e /proc/bus/usb ] && mount -t usbfs none /proc/bus/usb # UML doesn't have USB by default
[ -e /proc/bus/usb ] && mount -t usbfs usbfs /proc/bus/usb # UML doesn't have USB by default
mkdir -m 01777 -p /tmp
mkdir -m 0755 -p /var /var/log /var/lib /var/db
mkdir -m 0755 -p /nix/var
@ -114,7 +114,7 @@ rm -rf /nix/var/nix/gcroots/tmp /nix/var/nix/temproots
if ! mountpoint -q /run; then
rm -rf /run
mkdir -m 0755 -p /run
mount -t tmpfs -o "mode=0755,size=@runSize@" none /run
mount -t tmpfs -o "mode=0755,size=@runSize@" tmpfs /run
fi
# Create a ramfs on /run/keys to hold secrets that shouldn't be
@ -122,7 +122,7 @@ fi
if ! mountpoint -q /run/keys; then
rm -rf /run/keys
mkdir /run/keys
mount -t ramfs none /run/keys
mount -t ramfs ramfs /run/keys
chown 0:96 /run/keys
chmod 0750 /run/keys
fi
@ -153,7 +153,7 @@ fi
# Create /var/setuid-wrappers as a tmpfs.
rm -rf /var/setuid-wrappers
mkdir -m 0755 -p /var/setuid-wrappers
mount -t tmpfs -o "mode=0755" none /var/setuid-wrappers
mount -t tmpfs -o "mode=0755" tmpfs /var/setuid-wrappers
# Run the script that performs all configuration activation that does

View File

@ -15,13 +15,13 @@ let
pkgs.runCommand "unit" { preferLocalBuild = true; inherit (unit) text; }
''
mkdir -p $out
echo -n "$text" > $out/${name}
echo -n "$text" > $out/${shellEscape name}
''
else
pkgs.runCommand "unit" { preferLocalBuild = true; }
''
mkdir -p $out
ln -s /dev/null $out/${name}
ln -s /dev/null $out/${shellEscape name}
'';
upstreamSystemUnits =
@ -187,9 +187,11 @@ let
"timers.target"
];
shellEscape = s: (replaceChars [ "\\" ] [ "\\\\" ] s);
makeJobScript = name: text:
let x = pkgs.writeTextFile { name = "unit-script"; executable = true; destination = "/bin/${name}"; inherit text; };
in "${x}/bin/${name}";
let x = pkgs.writeTextFile { name = "unit-script"; executable = true; destination = "/bin/${shellEscape name}"; inherit text; };
in "${x}/bin/${shellEscape name}";
unitConfig = { name, config, ... }: {
config = {

View File

@ -183,6 +183,15 @@ in
'';
};
networking.search = mkOption {
default = [];
example = [ "example.com" "local.domain" ];
type = types.listOf types.str;
description = ''
The list of search paths used when resolving domain names.
'';
};
networking.domain = mkOption {
default = "";
example = "home";
@ -424,6 +433,7 @@ in
${optionalString (cfg.nameservers != [] && cfg.domain != "") ''
domain ${cfg.domain}
''}
${optionalString (cfg.search != []) ("search " + concatStringsSep " " cfg.search)}
${flip concatMapStrings cfg.nameservers (ns: ''
nameserver ${ns}
'')}

View File

@ -0,0 +1,66 @@
{ config, lib, pkgs, ... }:
with lib;
{
###### interface
options = {
hardware.trackpoint = {
enable = mkOption {
default = false;
type = types.bool;
description = ''
Enable sensitivity and speed configuration for trackpoints.
'';
};
sensitivity = mkOption {
default = 128;
example = 255;
type = types.int;
description = ''
Configure the trackpoint sensitivity. By default, the kernel
configures 128.
'';
};
speed = mkOption {
default = 97;
example = 255;
type = types.int;
description = ''
Configure the trackpoint sensitivity. By default, the kernel
configures 97.
'';
};
};
};
###### implementation
config = mkIf config.hardware.trackpoint.enable {
jobs.trackpoint =
{ description = "Initialize trackpoint";
startOn = "started udev";
task = true;
script = ''
echo -n ${toString config.hardware.trackpoint.sensitivity} \
> /sys/devices/platform/i8042/serio1/sensitivity
echo -n ${toString config.hardware.trackpoint.speed} \
> /sys/devices/platform/i8042/serio1/speed
'';
};
};
}

View File

@ -31,7 +31,7 @@ EOF
}
my $ensureUniqueName = 0;
my $extraConfig = "";
my $extraConfig;
GetOptions(
"help" => sub { showHelp() },
@ -190,7 +190,7 @@ elsif ($action eq "update") {
# FIXME: may want to be more careful about clobbering the existing
# configuration.nix.
writeNixOSConfig $nixosConfigFile if defined $extraConfig;
writeNixOSConfig $nixosConfigFile if (defined $extraConfig && $extraConfig ne "");
system("nix-env", "-p", "$profileDir/system",
"-I", "nixos-config=$nixosConfigFile", "-f", "<nixpkgs/nixos>",

View File

@ -98,6 +98,10 @@ import ./make-test.nix {
$machine->succeed("touch /tmp2/x");
$machine->succeed("grep '/tmp2 tmpfs' /proc/mounts");
};
subtest "shell-vars", sub {
$machine->succeed('[ -n "$NIX_PATH" ]');
};
'';
}

View File

@ -1,28 +1,17 @@
{ stdenv, fetchurl, builderDefs }:
{ runCommand, fetchurl }:
let
let
src = fetchurl {
url = http://www.ladspa.org/ladspa_sdk/ladspa.h.txt;
sha256 = "1b908csn85ng9sz5s5d1mqk711cmawain2z8px2ajngihdrynb67";
};
in
let localDefs = builderDefs.passthru.function {
buildInputs = [];
inherit src;
};
in with localDefs;
let
copyFile = fullDepEntry ("
mkdir -p \$out/include
cp ${src} \$out/include/ladspa.h
") [minInit defEnsureDir];
in
stdenv.mkDerivation {
name = "ladspa.h";
builder = writeScript "ladspa.h-builder"
(textClosure localDefs [copyFile]);
meta = {
description = "LADSPA format audio plugins";
inherit src;
};
}
runCommand "ladspa.h"
{ meta.description = "LADSPA format audio plugins"; }
''
mkdir -p $out/include
cp ${src} $out/include/ladspa.h
''

View File

@ -0,0 +1,20 @@
{ stdenv, fetchurl, pkgconfig, alsaLib, libxmp }:
stdenv.mkDerivation rec {
name = "xmp-4.0.7";
meta = with stdenv.lib; {
description = "Extended module player";
homepage = "http://xmp.sourceforge.net/";
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ iyzsong ];
};
src = fetchurl {
url = "mirror://sourceforge/xmp/xmp/${name}.tar.gz";
sha256 = "0qgzzaxhshz5l7s21x89xb43pbbi0zap6a4lk4s7gjp1qca2agcw";
};
buildInputs = [ pkgconfig alsaLib libxmp ];
}

View File

@ -0,0 +1,68 @@
{ stdenv, fetchurl, buildEnv, makeDesktopItem, makeWrapper, zlib, glib, alsaLib
, dbus, gtk, atk, pango, freetype, fontconfig, libgnome_keyring3, gdk_pixbuf
, cairo, cups, expat, libgpgerror, nspr, gconf, nss, xlibs
}:
let
atomEnv = buildEnv {
name = "env-atom";
paths = [
stdenv.gcc.gcc zlib glib dbus gtk atk pango freetype libgnome_keyring3
fontconfig gdk_pixbuf cairo cups expat libgpgerror alsaLib nspr gconf nss
xlibs.libXrender xlibs.libX11 xlibs.libXext xlibs.libXdamage xlibs.libXtst
xlibs.libXcomposite xlibs.libXi xlibs.libXfixes
];
};
in stdenv.mkDerivation rec {
name = "atom-${version}";
version = "0.99.0";
src = fetchurl {
url = https://github.com/hotice/webupd8/raw/master/atom-linux64-0.99.0~git20140525.tar.xz;
sha256 = "55c2415c96e1182ae1517751cbea1db64e9962683b384cfe5e182aec10aebecd";
name = "${name}.tar.xz";
};
iconsrc = fetchurl {
url = https://raw.githubusercontent.com/atom/atom/master/resources/atom.png;
sha256 = "66dc0b432eed7bcd738b7c1b194e539178a83d427c78f103041981f2b840e030";
};
desktopItem = makeDesktopItem {
name = "atom";
exec = "atom";
icon = iconsrc;
comment = "A hackable text editor for the 21st Century";
desktopName = "Atom";
genericName = "Text editor";
categories = "Development;TextEditor";
};
buildInputs = [ atomEnv makeWrapper ];
phases = [ "installPhase" ];
installPhase = ''
ensureDir $out/share/atom
ensureDir $out/bin
tar -C $out/share/atom -xvf $src
patchelf --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
$out/share/atom/atom
patchelf --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
$out/share/atom/resources/app/apm/node_modules/atom-package-manager/bin/node
makeWrapper $out/share/atom/atom $out/bin/atom \
--prefix "LD_LIBRARY_PATH" : "${atomEnv}/lib:${atomEnv}/lib64"
# Create a desktop item.
mkdir -p "$out/share/applications"
cp "${desktopItem}"/share/applications/* "$out/share/applications/"
'';
meta = with stdenv.lib; {
description = "A hackable text editor for the 21st Century";
homepage = https://atom.io/;
license = [ licenses.mit ];
maintainers = [ maintainers.offline ];
platforms = [ "x86_64-linux" ];
};
}

View File

@ -1,11 +1,11 @@
{ fetchurl, stdenv, emacs, texinfo, which, texLive }:
stdenv.mkDerivation rec {
name = "org-8.2.6";
name = "org-8.2.7";
src = fetchurl {
url = "http://orgmode.org/${name}.tar.gz";
sha256 = "0f196r0n9m2np123sjabsqdw68h9qp6qr7l5v257am8qs7rj0jm1";
sha256 = "1n864hnjvx5n2gfi7n0xbwvb1k8l5rdh4a3vpbhw23hy8rx3bvaw";
};
buildInputs = [ emacs ];
@ -43,7 +43,7 @@ stdenv.mkDerivation rec {
license = "GPLv3+";
maintainers = with stdenv.lib.maintainers; [ chaoflow ];
maintainers = with stdenv.lib.maintainers; [ chaoflow pSub ];
platforms = stdenv.lib.platforms.gnu;
};
}

View File

@ -0,0 +1,24 @@
{ stdenv, fetchurl, emacs, unzip }:
stdenv.mkDerivation {
name = "sbt-mode-2014-06-05";
src = fetchurl {
url = "https://github.com/hvesalai/sbt-mode/archive/676f22d9658989de401d299ed0250db9b911574d.zip";
sha256 = "0b8qrr3yp48ggl757d3a6bz633mbf4zxqpcwsh47b1ckiwa3nb2h";
};
buildInputs = [ unzip emacs ];
installPhase = ''
mkdir -p "$out/share/emacs/site-lisp"
cp -v *.el *.elc "$out/share/emacs/site-lisp/"
'';
meta = {
homepage = "https://github.com/hvesalai/scala-mode2";
description = "An Emacs mode for editing Scala code";
license = "permissive";
};
}

View File

@ -0,0 +1,24 @@
{ stdenv, fetchurl, emacs, unzip }:
stdenv.mkDerivation {
name = "scala-mode2-2014-06-05";
src = fetchurl {
url = "https://github.com/hvesalai/scala-mode2/archive/af2dc30226c890ff7d49d727450f8006b90781df.zip";
sha256 = "1jj08li9lfg5291jzj170wa3cmyf3g2a0j80cy5307l0mdawp9vx";
};
buildInputs = [ unzip emacs ];
installPhase = ''
mkdir -p "$out/share/emacs/site-lisp"
cp -v *.el *.elc "$out/share/emacs/site-lisp/"
'';
meta = {
homepage = "https://github.com/hvesalai/scala-mode2";
description = "An Emacs mode for editing Scala code";
license = "permissive";
};
}

View File

@ -0,0 +1,93 @@
{ stdenv, stdenvAdapters, gccApple, fetchFromGitHub, ncurses, gettext,
pkgconfig, cscope, python, ruby, tcl, perl, luajit
}:
let inherit (stdenvAdapters.overrideGCC stdenv gccApple) mkDerivation;
in mkDerivation rec {
name = "macvim-${version}";
version = "7.4-73";
src = fetchFromGitHub {
owner = "b4winckler";
repo = "macvim";
rev = "snapshot-73";
sha256 = "0zv82y2wz8b482khkgbl08cnxq3pv5bm37c71wgfa0fzy3h12gcj";
};
enableParallelBuilding = true;
buildInputs = [
gettext ncurses pkgconfig luajit ruby tcl perl python
];
patches = [ ./macvim.patch ];
postPatch = ''
substituteInPlace src/MacVim/mvim --replace "# VIM_APP_DIR=/Applications" "VIM_APP_DIR=$out/Applications"
# Don't create custom icons.
substituteInPlace src/MacVim/icons/Makefile --replace '$(MAKE) -C makeicns' ""
substituteInPlace src/MacVim/icons/make_icons.py --replace "dont_create = False" "dont_create = True"
# Full path to xcodebuild
substituteInPlace src/Makefile --replace "xcodebuild" "/usr/bin/xcodebuild"
'';
configureFlags = [
#"--enable-cscope" # TODO: cscope doesn't build on Darwin yet
"--enable-fail-if-missing"
"--with-features=huge"
"--enable-gui=macvim"
"--enable-multibyte"
"--enable-nls"
"--enable-luainterp=dynamic"
"--enable-pythoninterp=dynamic"
"--enable-perlinterp=dynamic"
"--enable-rubyinterp=dynamic"
"--enable-tclinterp=yes"
"--with-luajit"
"--with-lua-prefix=${luajit}"
"--with-ruby-command=${ruby}/bin/ruby"
"--with-tclsh=${tcl}/bin/tclsh"
"--with-tlib=ncurses"
"--with-compiledby=Nix"
];
preConfigure = ''
DEV_DIR=$(/usr/bin/xcode-select -print-path)/Platforms/MacOSX.platform/Developer
configureFlagsArray+=(
"--with-developer-dir=$DEV_DIR"
)
'';
postInstall = ''
ensureDir $out/Applications
cp -r src/MacVim/build/Release/MacVim.app $out/Applications
rm $out/bin/{Vimdiff,Vimtutor,Vim,ex,rVim,rview,view}
cp src/MacVim/mvim $out/bin
cp src/vimtutor $out/bin
for prog in "vimdiff" "vi" "vim" "ex" "rvim" "rview" "view"; do
ln -s $out/bin/mvim $out/bin/$prog
done
# Fix rpaths
exe="$out/Applications/MacVim.app/Contents/MacOS/Vim"
libperl=$(dirname $(find ${perl} -name "libperl.dylib"))
install_name_tool -add_rpath ${luajit}/lib $exe
install_name_tool -add_rpath ${tcl}/lib $exe
install_name_tool -add_rpath ${python}/lib $exe
install_name_tool -add_rpath $libperl $exe
install_name_tool -add_rpath ${ruby}/lib $exe
'';
meta = with stdenv.lib; {
description = "Vim - the text editor - for Mac OS X";
homepage = https://github.com/b4winckler/macvim;
maintainers = with maintainers; [ cstrahan ];
platforms = platforms.darwin;
};
}

View File

@ -0,0 +1,159 @@
diff --git a/src/vimtutor b/src/vimtutor
index 70d9ec7..b565a1a 100755
--- a/src/vimtutor
+++ b/src/vimtutor
@@ -16,7 +16,7 @@ seq="vim vim8 vim75 vim74 vim73 vim72 vim71 vim70 vim7 vim6 vi"
if test "$1" = "-g"; then
# Try to use the GUI version of Vim if possible, it will fall back
# on Vim if Gvim is not installed.
- seq="gvim gvim8 gvim75 gvim74 gvim73 gvim72 gvim71 gvim70 gvim7 gvim6 $seq"
+ seq="mvim gvim gvim8 gvim75 gvim74 gvim73 gvim72 gvim71 gvim70 gvim7 gvim6 $seq"
shift
fi
diff --git a/src/auto/configure b/src/auto/configure
index bc9f074..9b9125e 100755
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -2252,7 +2252,7 @@ rm -f conftest.val
as_fn_set_status $ac_retval
} # ac_fn_c_compute_int
-cat >auto/config.log <<_ACEOF
+cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
@@ -2262,7 +2262,7 @@ generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
_ACEOF
-exec 5>>auto/config.log
+exec 5>>config.log
{
cat <<_ASUNAME
## --------- ##
@@ -5377,10 +5377,7 @@ $as_echo "no" >&6; }
fi
if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
- if test "x$MACOSX" = "xyes"; then
- MZSCHEME_LIBS="-framework Racket"
- MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
- elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
+ if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
@@ -5716,23 +5713,6 @@ $as_echo ">>> too old; need Perl version 5.003_01 or later <<<" >&6; }
fi
if test "x$MACOSX" = "xyes"; then
- dir=/System/Library/Perl
- darwindir=$dir/darwin
- if test -d $darwindir; then
- PERL=/usr/bin/perl
- else
- dir=/System/Library/Perl/5.8.1
- darwindir=$dir/darwin-thread-multi-2level
- if test -d $darwindir; then
- PERL=/usr/bin/perl
- fi
- fi
- if test -n "$PERL"; then
- PERL_DIR="$dir"
- PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
- PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
- PERL_LIBS="-L$darwindir/CORE -lperl"
- fi
PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
PERL_CFLAGS=`echo "$PERL_CFLAGS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
fi
@@ -5926,10 +5906,6 @@ __:
eof
eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
rm -f -- "${tmp_mkf}"
- if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
- "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
- vi_cv_path_python_plibs="-framework Python"
- else
if test "${vi_cv_var_python_version}" = "1.4"; then
vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
else
@@ -5937,7 +5913,6 @@ eof
fi
vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_BASEMODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
- fi
fi
@@ -6004,13 +5979,6 @@ rm -f core conftest.err conftest.$ac_objext \
$as_echo "no" >&6; }
fi
- if test -n "$MACSDK"; then
- PYTHON_CFLAGS=
- PYTHON_LIBS=-framework Python
- PYTHON_CONFDIR=
- PYTHON_GETPATH_CFLAGS=
- fi
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compile and link flags for Python are sane" >&5
$as_echo_n "checking if compile and link flags for Python are sane... " >&6; }
cflags_save=$CFLAGS
@@ -6853,11 +6821,7 @@ $as_echo "$tclver - OK" >&6; };
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of Tcl include" >&5
$as_echo_n "checking for location of Tcl include... " >&6; }
- if test "x$MACOSX" != "xyes"; then
tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/local/include/tcl$tclver /usr/include /usr/include/tcl$tclver"
- else
- tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
- fi
TCL_INC=
for try in $tclinc; do
if test -f "$try/tcl.h"; then
@@ -6875,12 +6839,8 @@ $as_echo "<not found>" >&6; }
if test -z "$SKIP_TCL"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of tclConfig.sh script" >&5
$as_echo_n "checking for location of tclConfig.sh script... " >&6; }
- if test "x$MACOSX" != "xyes"; then
tclcnf=`echo $tclinc | sed s/include/lib/g`
tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
- else
- tclcnf="/System/Library/Frameworks/Tcl.framework"
- fi
for try in $tclcnf; do
if test -f $try/tclConfig.sh; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $try/tclConfig.sh" >&5
@@ -7050,10 +7010,6 @@ $as_echo "$rubyhdrdir" >&6; }
if test -f "$rubylibdir/$librubya"; then
librubyarg="$librubyarg"
RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
- elif test -d "/System/Library/Frameworks/Ruby.framework"; then
- RUBY_LIBS="-framework Ruby"
- RUBY_CFLAGS="-DRUBY_VERSION=$rubyversion"
- librubyarg=
fi
if test "X$librubyarg" != "X"; then
@@ -14061,7 +14017,7 @@ fi
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>auto/config.log
+exec 5>>config.log
{
echo
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
@@ -14653,7 +14609,7 @@ if test "$no_create" != yes; then
ac_config_status_args="$ac_config_status_args --quiet"
exec 5>/dev/null
$SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
- exec 5>>auto/config.log
+ exec 5>>config.log
# Use ||, not &&, to avoid exiting from the if with $? = 1, which
# would make configure fail if this is the last instruction.
$ac_cs_success || as_fn_exit 1

View File

@ -5,6 +5,12 @@
, split, tasty, tastyHunit, tastyQuickcheck, time, transformersBase
, uniplate, unixCompat, unorderedContainers, utf8String, vty
, xdgBasedir
, withPango ? true
# User may need extra dependencies for their configuration file so we
# want to specify it here to have them available when wrapping the
# produced binary.
, extraDepends ? [ ]
}:
cabal.mkDerivation (self: {
@ -15,21 +21,43 @@ cabal.mkDerivation (self: {
isExecutable = true;
buildDepends = [
binary Cabal cautiousFile concreteTyperep dataDefault derive Diff
dlist dyre filepath fingertree glib gtk hashable hint lens mtl
pango parsec pointedlist QuickCheck random regexBase regexTdfa safe
dlist dyre filepath fingertree hashable hint lens mtl
parsec pointedlist QuickCheck random regexBase regexTdfa safe
split time transformersBase uniplate unixCompat unorderedContainers
utf8String vty xdgBasedir
];
] ++ (if withPango then [ pango gtk glib ] else [ ]) ++ extraDepends;
testDepends = [
filepath HUnit QuickCheck tasty tastyHunit tastyQuickcheck
];
buildTools = [ alex ];
configureFlags = "-fpango";
configureFlags = if withPango then "-fpango" else "-f-pango";
doCheck = false;
# https://ghc.haskell.org/trac/ghc/ticket/9170
noHaddock = self.ghc.version == "7.6.3";
# Allows Yi to find the libraries it needs at runtime.
postInstall = ''
mv $out/bin/yi $out/bin/.yi-wrapped
cat - > $out/bin/yi <<EOF
#! ${self.stdenv.shell}
# Trailing : is necessary for it to pick up Prelude &c.
export GHC_PACKAGE_PATH=$(${self.ghc.GHCGetPackages} ${self.ghc.version} \
| sed 's/-package-db\ //g' \
| sed 's/^\ //g' \
| sed 's/\ /:/g')\
:$out/lib/ghc-${self.ghc.version}/package.conf.d/yi-$version.installedconf:
eval exec $out/bin/.yi-wrapped "\$@"
EOF
chmod +x $out/bin/yi
'';
meta = {
homepage = "http://haskell.org/haskellwiki/Yi";
description = "The Haskell-Scriptable Editor";
license = "GPL";
license = self.stdenv.lib.licenses.gpl2;
platforms = self.ghc.meta.platforms;
maintainers = [ self.stdenv.lib.maintainers.fuuzetsu ];
};
})

View File

@ -1,4 +1,4 @@
{stdenv, fetchurlGnome, gtk, pkgconfig, perl, perlXMLParser, libxml2, gettext
{stdenv, fetchurl, fetchurlGnome, gtk, pkgconfig, perl, perlXMLParser, libxml2, gettext
, python, libxml2Python, docbook5, docbook_xsl, libxslt, intltool, libart_lgpl
, withGNOME ? false, libgnomeui }:
@ -11,6 +11,11 @@ stdenv.mkDerivation rec {
sha256 = "1qgawm7rrf4wd1yc0fp39ywv8gbz4ry1s16k00dzg5w6p67lfqd7";
};
correctPersistence = fetchurl {
url = https://launchpadlibrarian.net/132677658/persistence;
sha256 = "1rv6zv9i03bna4bdp1wzn72lg7kdwi900y1izdq0imibi54nxjsk";
};
buildInputs =
[ gtk perlXMLParser libxml2 gettext python libxml2Python docbook5
libxslt docbook_xsl libart_lgpl
@ -24,7 +29,17 @@ stdenv.mkDerivation rec {
# This file should normally require a gtk-update-icon-cache -q /usr/share/icons/hicolor command
# It have no reasons to exist in a redistribuable package
postInstall = "rm $out/share/icons/hicolor/icon-theme.cache";
postInstall = ''
rm $out/share/icons/hicolor/icon-theme.cache
cd "$out"/bin/
mv dia .dia-wrapped
echo '#! ${stdenv.shell}' >> dia
echo 'test -f "$HOME/.dia/persistence" || cp ${correctPersistence} "$HOME/.dia/persistence" ' >> dia
echo 'chmod u+rw "$HOME/.dia/persistence" ' >> dia
echo "\"$out/bin/"'.dia-wrapped" "$@"' >> dia
chmod a+x dia
'';
meta = {
description = "Gnome Diagram drawing software";

View File

@ -1,22 +1,23 @@
{ stdenv, makeWrapper, fetchurl, x11, imlib2, libjpeg, libpng, giblib
{ stdenv, makeWrapper, fetchurl, x11, imlib2, libjpeg, libpng
, libXinerama, curl }:
stdenv.mkDerivation rec {
name = "feh-2.11";
name = "feh-2.12";
src = fetchurl {
url = "http://feh.finalrewind.org/${name}.tar.bz2";
sha256 = "1y41ixsp5nhvb29hhiyh8g1g28lc0kki619skgxcv5iisc93dk4x";
sha256 = "0ckhidmsms2l5jycp0qf71jzmb3bpbhjq3bcgfpvfvszah7pmq30";
};
buildInputs = [makeWrapper x11 imlib2 giblib libjpeg libpng libXinerama curl ];
buildInputs = [makeWrapper x11 imlib2 libjpeg libpng libXinerama curl];
preBuild = ''
makeFlags="PREFIX=$out"
'';
postInstall = ''
wrapProgram "$out/bin/feh" --prefix PATH : "${libjpeg}/bin"
wrapProgram "$out/bin/feh" --prefix PATH : "${libjpeg}/bin" \
--add-flags '--theme=feh'
'';
meta = {

View File

@ -10,12 +10,14 @@ stdenv.mkDerivation {
sha256 = "1bbyl7jgigawmwc8r14znv8lb6lrcxh8zpvynrl6s800dr4yp9as";
};
configureFlags = ["--with-libpotrace"];
buildInputs = [ zlib ];
meta = {
homepage = http://potrace.sourceforge.net/;
description = "A tool for tracing a bitmap, which means, transforming a bitmap into a smooth, scalable image";
platforms = stdenv.lib.platforms.linux;
platforms = stdenv.lib.platforms.unix;
maintainers = [ stdenv.lib.maintainers.pSub ];
license = "GPL2";
};

View File

@ -1,14 +1,15 @@
{ stdenv, fetchurl, pkgconfig, gtk, imlib2, file } :
{ stdenv, fetchurl, pkgconfig, gtk, imlib2, file, lcms2, libexif } :
stdenv.mkDerivation (rec {
name = "qiv-2.2.4";
version = "2.3.1";
name = "qiv-${version}";
src = fetchurl {
url = "http://spiegl.de/qiv/download/${name}.tgz";
sha256 = "ed6078dc550c1dc2fe35c1e0f46463c13589a24b83d4f7101b71a7485e51abb7";
sha256 = "1rlf5h67vhj7n1y7jqkm9k115nfnzpwngj3kzqsi2lg676srclv7";
};
buildInputs = [ pkgconfig gtk imlib2 file ];
buildInputs = [ pkgconfig gtk imlib2 file lcms2 libexif ];
preBuild=''
substituteInPlace Makefile --replace /usr/local "$out"
@ -18,5 +19,6 @@ stdenv.mkDerivation (rec {
meta = {
description = "qiv (quick image viewer)";
homepage = http://spiegl.de/qiv/;
inherit version;
};
})

View File

@ -0,0 +1,3 @@
url http://spiegl.de/qiv/download/
version_link '[.]tgz$'
do_overwrite() { do_overwrite_just_version; }

View File

@ -4,11 +4,11 @@
}:
stdenv.mkDerivation rec {
name = "calibre-1.31.0";
name = "calibre-1.35.0";
src = fetchurl {
url = "mirror://sourceforge/calibre/${name}.tar.xz";
sha256 = "1fl42y8ppw8s51v66dqsrg1ib28yi6z5779r9wfvdbl9v1clilfc";
sha256 = "0pzxp1f9d4pw7vksdfkdz6fdgrb8jfwgh4fckjfrarqs039422bi";
};
inherit python;

View File

@ -0,0 +1,75 @@
{ stdenv, fetchgit, ocaml, mupdf, lablgl, mesa
, libX11, libXext, gtk3, freetype, zlib, openjpeg
, jbig2dec, libjpeg, ncurses }:
stdenv.mkDerivation {
name = "llpp-2014-05-26";
src = fetchgit {
url = "git://repo.or.cz/llpp.git";
rev = "902143de64d86b5714b3a59d2cc7085083b87249";
sha256 = "038xl4gbvm57na2lz1fw36sf43zaxq407zi2d53985vc33677j9s";
};
buildInputs = [ ocaml mupdf lablgl mesa libX11 libXext gtk3
freetype jbig2dec libjpeg openjpeg zlib ncurses ];
# The build phase was extracted from buildall.sh, because that script
# fetched the dependencies on its own.
buildPhase = ''
ccopt="-O"
ccopt="$ccopt -I ${jbig2dec}/include"
ccopt="$ccopt -I ${libjpeg}/include"
ccopt="$ccopt -I ${freetype}/include"
ccopt="$ccopt -I ${openjpeg}/include"
ccopt="$ccopt -I ${zlib}/include"
ccopt="$ccopt -I ${mupdf}/include"
ccopt="$ccopt -include ${freetype}/include/ft2build.h"
ccopt="$ccopt -D_GNU_SOURCE"
cclib="$cclib -lmupdf"
cclib="$cclib -lz -ljpeg -lopenjp2 -ljbig2dec -lfreetype -lpthread"
cclib="$cclib -lX11"
cclib="$cclib -lfreetype"
comp=ocamlc.opt
cmsuf=cmo
sh mkhelp.sh keystoml.ml KEYS > help.ml
$comp -c -o link.o -ccopt "$ccopt" link.c
$comp -c -o help.$cmsuf help.ml
$comp -c -o utils.$cmsuf utils.ml
$comp -c -o wsi.cmi wsi.mli
$comp -c -o wsi.$cmsuf wsi.ml
$comp -c -o parser.$cmsuf parser.ml
$comp -c -o main.$cmsuf -I ${lablgl}/lib/ocaml/4.01.0/site-lib/lablgl main.ml
$comp -custom -o llpp \
-I ${lablgl}/lib/ocaml/4.01.0/site-lib/lablgl \
str.cma unix.cma lablgl.cma \
link.o \
-cclib "$cclib" \
help.cmo \
utils.cmo \
parser.cmo \
wsi.cmo \
main.cmo
'';
# Binary fails with 'No bytecode file specified.' if stripped.
dontStrip = true;
installPhase = ''
install -d $out/bin
install llpp llppac $out/bin
'';
meta = {
homepage = http://repo.or.cz/w/llpp.git;
description = "A MuPDF based PDF pager written in OCaml";
platforms = stdenv.lib.platforms.linux;
maintainers = [ stdenv.lib.maintainers.pSub ];
license = "GPL";
};
}

View File

@ -1,20 +1,14 @@
{ stdenv, fetchurl, fetchpatch, pkgconfig, zlib, freetype, libjpeg, jbig2dec, openjpeg
, libX11, libXext }:
stdenv.mkDerivation rec {
name = "mupdf-1.3";
version = "1.5";
name = "mupdf-${version}";
src = fetchurl {
url = "http://mupdf.com/download/archive/${name}-source.tar.gz";
sha256 = "0y247nka5gkr1ajn47jrlp5rcnf6h4ff7dfsprma3h4wxqdv7a5b";
sha256 = "0sl47zqf4c9fhs4h5zg046vixjmwgy4vhljhr5g4md733nash7z4";
};
patches = [(fetchpatch {
name = "CVE-2014-2013.patch";
url = "http://git.ghostscript.com/?p=mupdf.git;a=commitdiff_plain;"
+ "h=60dabde18d7fe12b19da8b509bdfee9cc886aafc";
sha256 = "0p721f3g2djz9fy6rcgj83c20f5k257wg2d0yvvmp02m7sp06l0g";
})];
buildInputs = [ pkgconfig zlib freetype libjpeg jbig2dec openjpeg libX11 libXext ];
enableParallelBuilding = true;
@ -74,5 +68,6 @@ stdenv.mkDerivation rec {
license = "GPLv3+";
maintainers = with stdenv.lib.maintainers; [ viric ];
platforms = with stdenv.lib.platforms; linux;
inherit version;
};
}

View File

@ -0,0 +1,7 @@
url http://mupdf.com/downloads/archive/
do_overwrite(){
ensure_hash
ensure_version
set_var_value version $CURRENT_VERSION
set_var_value sha256 $CURRENT_HASH
}

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "pgadmin3-${version}";
version = "1.16.1";
version = "1.18.1";
src = fetchurl {
url = "http://ftp.postgresql.org/pub/pgadmin3/release/v${version}/src/pgadmin3-${version}.tar.gz";
sha256 = "13n2nyjnbmjbz9n0xp6627n3pavkqfp4n45l1mnqxhjdq8yj9fnl";
sha256 = "1h6bqslw53q44vy7z1q7wmxkgqdzxacfs8pfm2fxm8vcd8lkxb17";
};
buildInputs = [ postgresql wxGTK libxml2 libxslt openssl ];
@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
description = "PostgreSQL administration GUI tool";
homepage = http://www.pgadmin.org;
license = licenses.gpl2;
maintainers = [ maintainers.iElectric ];
maintainers = with maintainers; [ iElectric wmertens ];
platforms = platforms.unix;
};
}

View File

@ -17,14 +17,14 @@ assert stdenv.gcc ? libc && stdenv.gcc.libc != null;
rec {
firefoxVersion = "29.0.1";
firefoxVersion = "30.0";
xulVersion = "29.0.1"; # this attribute is used by other packages
xulVersion = "30.0"; # this attribute is used by other packages
src = fetchurl {
url = "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${firefoxVersion}/source/firefox-${firefoxVersion}.source.tar.bz2";
sha1 = "2819ef63403de2bcfff5496bd21a3b8cb5dfce82";
sha1 = "bll9hxf31gvg9db6gxgmq25qsjif3p11";
};
commonConfigureFlags =

View File

@ -4,16 +4,16 @@
stdenv.mkDerivation rec {
name = "vimb-${version}";
version = "2.2";
version = "2.4";
src = fetchurl {
url = "https://github.com/fanglingsu/vimb/archive/${version}.tar.gz";
sha256 = "18gig6rcxv0i4a8mz3jv29zpj0323zw45jsg1ycx61a08rzag60m";
sha256 = "167ilbsd4y4zl493k6g4j5v85y784qz8z7qflzd1ccsjjznv7fm8";
};
# Nixos default ca bundle
patchPhase = ''
sed -i s,/etc/ssl/certs/ca-certificates.crt,/etc/ssl/certs/ca-bundle.crt, src/default.h
sed -i s,/etc/ssl/certs/ca-certificates.crt,/etc/ssl/certs/ca-bundle.crt, src/setting.c
'';
buildInputs = [ makeWrapper gtk libsoup pkgconfig webkit gsettings_desktop_schemas ];

View File

@ -1,10 +1,10 @@
{ fetchurl, stdenv, jre, glib, libXtst, gtk, makeWrapper }:
stdenv.mkDerivation rec {
name = "davmail-4.4.1";
name = "davmail-4.5.0";
src = fetchurl {
url = "http://downloads.sourceforge.net/project/davmail/davmail/4.4.1/davmail-linux-x86_64-4.4.1-2225.tgz";
sha256 = "66c7ae23c0242860cca1576e5fc29343431789a821f7623e420b91ba91e480a9";
url = "http://downloads.sourceforge.net/project/davmail/davmail/4.5.0/davmail-linux-x86_64-4.5.0-2292.tgz";
sha256 = "0ixg26s8535b4xf4i8jr0v3acwvaslmi2dvcxg2nmzkicvh6rfd4";
};
buildInputs = [ makeWrapper ];

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, openssl, curl, coreutils, gawk, bash, which }:
stdenv.mkDerivation {
name = "esniper-2.30.0";
name = "esniper-2.31.0";
src = fetchurl {
url = "mirror://sourceforge/esniper/esniper-2-30-0.tgz";
sha256 = "1p85d5qfr3f35xfj5555ck4wwk5hqkh65ivam1527p8dwcz00wpl";
url = "mirror://sourceforge/esniper/esniper-2-31-0.tgz";
sha256 = "0xn6gdyr0c18khwcsi2brp49wkancrsrxxca7hvbawhbf263glih";
};
buildInputs = [ openssl curl ];

View File

@ -1,13 +1,13 @@
{ stdenv, fetchurl, dbus, gnutls, wxGTK28, libidn, tinyxml, gettext
, pkgconfig, xdg_utils, gtk2, sqlite }:
let version = "3.8.0"; in
let version = "3.8.1"; in
stdenv.mkDerivation {
name = "filezilla-${version}";
src = fetchurl {
url = "mirror://sourceforge/project/filezilla/FileZilla_Client/${version}/FileZilla_${version}_src.tar.bz2";
sha256 = "02635sh88zvmqhqs7yx982dmfa1qd0rhk4z1fqvgh5pr2ac1r74d";
sha256 = "0kqyz8yb15kbzx02l3riswg95prbp402k4672nwxrzs35049rg36";
};
configureFlags = [

View File

@ -14,8 +14,8 @@ stdenv.mkDerivation rec {
buildInputs =
[ ncurses perl python openssl aspell gnutls zlib curl pkgconfig
libgcrypt ruby lua5 tcl guile pythonPackages.pycrypto makeWrapper
cacert cmake
];
cacert cmake ]
++ stdenv.lib.optional stdenv.isDarwin pythonPackages.pync;
# This patch is based on
# weechat/c324610226cef15ecfb1235113c8243b068084c8. It fixes
@ -24,17 +24,23 @@ stdenv.mkDerivation rec {
# then.
patches = [ ./fix-gnutls-32.diff ];
NIX_CFLAGS_COMPILE = "-I${python}/include/${python.libPrefix}";
postInstall = ''
wrapProgram "$out/bin/weechat" \
--prefix PYTHONPATH : "$PYTHONPATH" \
--prefix PYTHONPATH : "$out/lib/${python.libPrefix}/site-packages"
NIX_PYTHONPATH="$out/lib/${python.libPrefix}/site-packages"
'' + stdenv.lib.optionalString stdenv.isDarwin ''
NIX_PYTHONPATH+="${pythonPackages.pync}/lib/${python.libPrefix}/site-packages"
'' + ''
wrapProgram "$out/bin/weechat" \
--prefix PYTHONPATH : "$PYTHONPATH" \
--prefix PYTHONPATH : "$NIX_PYTHONPATH"
'';
meta = {
homepage = http://www.weechat.org/;
description = "A fast, light and extensible chat client";
license = stdenv.lib.licenses.gpl3;
maintainers = with stdenv.lib.maintainers; [ garbas the-kenny ];
platforms = stdenv.lib.platforms.linux;
maintainers = with stdenv.lib.maintainers; [ lovek323 garbas the-kenny ];
platforms = stdenv.lib.platforms.unix;
};
}

View File

@ -16,20 +16,26 @@ stdenv.mkDerivation rec {
buildInputs =
[ ncurses perl python openssl aspell gnutls zlib curl pkgconfig
libgcrypt ruby lua5 tcl guile pythonPackages.pycrypto makeWrapper
cacert cmake
];
cacert cmake ]
++ stdenv.lib.optional stdenv.isDarwin pythonPackages.pync;
NIX_CFLAGS_COMPILE = "-I${python}/include/${python.libPrefix}";
postInstall = ''
wrapProgram "$out/bin/weechat" \
--prefix PYTHONPATH : "$PYTHONPATH" \
--prefix PYTHONPATH : "$out/lib/${python.libPrefix}/site-packages"
NIX_PYTHON_PATH="$out/lib/${python.libPrefix}/site-packages"
'' + stdenv.lib.optionalString stdenv.isDarwin ''
NIX_PYTHON_PATH+="${pythonPackages.pync}/lib/${python.libPrefix}/site-packages"
'' + ''
wrapProgram "$out/bin/weechat" \
--prefix PYTHONPATH : "$PYTHONPATH" \
--prefix PYTHONPATH : "$NIX_PYTHONPATH"
'';
meta = {
homepage = http://www.weechat.org/;
homepage = http://www.weechat.org/;
description = "A fast, light and extensible chat client";
license = stdenv.lib.licenses.gpl3;
maintainers = with stdenv.lib.maintainers; [ garbas the-kenny ];
platforms = stdenv.lib.platforms.linux;
license = stdenv.lib.licenses.gpl3;
maintainers = with stdenv.lib.maintainers; [ lovek323 garbas the-kenny ];
platforms = stdenv.lib.platforms.unix;
};
}

View File

@ -1,32 +1,40 @@
{ stdenv, fetchgit, ruby, rake, rubygems, makeWrapper, ncursesw_sup
{ stdenv, fetchurl, ruby, rake, rubygems, makeWrapper, ncursesw_sup
, xapian_ruby, gpgme, libiconvOrEmpty, mime_types, chronic, trollop, lockfile
, gettext, iconv, locale, text, highline, rmail_sup, unicode, gnupg, which }:
, gettext, iconv, locale, text, highline, rmail_sup, unicode, gnupg, which
, bundler, git }:
stdenv.mkDerivation rec {
version = "20140312";
version = "0.18.0";
name = "sup-${version}";
meta = {
homepage = http://supmua.org;
description = "A curses threads-with-tags style email client";
homepage = http://supmua.org;
license = stdenv.lib.licenses.gpl2;
maintainers = with stdenv.lib.maintainers; [ lovek323 ];
license = stdenv.lib.licenses.gpl2;
platforms = stdenv.lib.platforms.unix;
platforms = stdenv.lib.platforms.unix;
};
dontStrip = true;
src = fetchgit {
url = git://github.com/sup-heliotrope/sup.git;
rev = "0cad7b308237c07b8a46149908b2ad4806ac3d1d";
sha256 = "83534b6ad9fb6aa883d630c927e3a71bd09a646e3254b4eb0cc7a09f69a525bc";
src = fetchurl {
url = "https://github.com/sup-heliotrope/sup/archive/release-${version}.tar.gz";
sha256 = "1dhg0i2v0ddhwi32ih5lc56x00kbaikd2wdplgzlshq0nljr9xy0";
};
buildInputs =
[ ruby rake rubygems makeWrapper gpgme ncursesw_sup xapian_ruby
libiconvOrEmpty ];
[ rake ruby rubygems makeWrapper gpgme ncursesw_sup xapian_ruby
libiconvOrEmpty git ];
buildPhase = "rake gem";
phases = [ "unpackPhase" "buildPhase" "installPhase" ];
buildPhase = ''
# the builder uses git to get a listing of the files
git init >/dev/null
git add .
git commit -m "message" >/dev/null
gem build sup.gemspec
'';
installPhase = ''
export HOME=$TMP/home; mkdir -pv "$HOME"
@ -50,13 +58,13 @@ stdenv.mkDerivation rec {
# Don't install some dependencies -- we have already installed
# the dependencies but gem doesn't acknowledge this
gem install --no-verbose --install-dir "$out/${ruby.gemPath}" \
--bindir "$out/bin" --no-rdoc --no-ri pkg/sup-999.gem \
--ignore-dependencies
--bindir "$out/bin" --no-rdoc --no-ri sup-${version}.gem \
--ignore-dependencies >/dev/null
# specify ruby interpreter explicitly
sed -i '1 s|^.*$|#!${ruby}/bin/ruby|' bin/sup-sync-back-maildir
cp bin/sup-sync-back-maildir "$out"/bin
cp bin/sup-sync-back-maildir "$out/bin"
for prog in $out/bin/*; do
wrapProgram "$prog" --prefix GEM_PATH : "$GEM_PATH" --prefix PATH : "${gnupg}/bin:${which}/bin"

View File

@ -1,3 +1,8 @@
# 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
, gconf
, alsaLib
@ -33,121 +38,118 @@
}:
let
version = "24.5.0";
version = "24.6.0";
sources = [
{ locale = "ar"; arch = "linux-i686"; sha256 = "a5d7a95ed93277c5e7191f868df343d1a1d14e6c692cac1e6069fd9ee7177273"; }
{ locale = "ar"; arch = "linux-x86_64"; sha256 = "b3100ead31d208968edd5b8545b641d0db9692d31a63e07fa9c391dca61de8a4"; }
{ locale = "ast"; arch = "linux-i686"; sha256 = "059ed2a01afabebc7bd28cc79841debcaaa0bf015f28145c719396d4e612f535"; }
{ locale = "ast"; arch = "linux-x86_64"; sha256 = "75874c6fcabb21332095562b9f86b7c6b668efdfb09904b83fa20743e1740790"; }
{ locale = "be"; arch = "linux-i686"; sha256 = "7eda8e02a15284a0e6814072a0212457a25bcfef5058e1c376fc22facb2970f1"; }
{ locale = "be"; arch = "linux-x86_64"; sha256 = "9fb0150098810b152ecf95e0826a3bac1dbffdfd2f8f2ce400841cb4981e3f3d"; }
{ locale = "bg"; arch = "linux-i686"; sha256 = "6929e9c0580e62cffb3bfffb1398f35b7ac59dcc3d76a4a5c49a20cfb72e6d60"; }
{ locale = "bg"; arch = "linux-x86_64"; sha256 = "19e2098131a6e280f1f8e8bae7c623ebe1081b0ea0dea81ebbaea51111774729"; }
{ locale = "bn-BD"; arch = "linux-i686"; sha256 = "30f95bf5d5974ab417ff5a24fad78687b88b3f16e2337a3a4a22dd4f1d670c7a"; }
{ locale = "bn-BD"; arch = "linux-x86_64"; sha256 = "85000f577549ccf35b2a43dc3a79264b78d100dce1e0cfd3418a0ec1f87cff90"; }
{ locale = "br"; arch = "linux-i686"; sha256 = "ef31dbfc1cc4528ee762e384d5e12fb6383f57ea34d4d1625975a2341d5004da"; }
{ locale = "br"; arch = "linux-x86_64"; sha256 = "d2f8330081a203477c6fc6007230f3893290c17aab4ba9e8ed591ddc337dd73c"; }
{ locale = "ca"; arch = "linux-i686"; sha256 = "86be66b6f8075cd85470e60a1e278fb7992fbd130b6481f0ebc21e9ad46c647f"; }
{ locale = "ca"; arch = "linux-x86_64"; sha256 = "a2b19e3ce3a747e4b1e5b52d463e3f5822e8e120a7e043d83057746552fa9867"; }
{ locale = "cs"; arch = "linux-i686"; sha256 = "632ece525a79537acad192f8ec37fbb1e3423bcf64b1af5d18da34f1410ffbae"; }
{ locale = "cs"; arch = "linux-x86_64"; sha256 = "f45e4701d4b81e4a5a052b5759616540317b9e89e241dc97ad1ffc39b18abaed"; }
{ locale = "da"; arch = "linux-i686"; sha256 = "9befe92c296b57c7a7b97ecb6eb23803c93949056177df72bc111c6e18d497f0"; }
{ locale = "da"; arch = "linux-x86_64"; sha256 = "343ef548a102a63a96b1a10745ff7866f30ac6524d4f7a2ced1be3cb3bd9f64c"; }
{ locale = "de"; arch = "linux-i686"; sha256 = "010c9225f56a3d9f552f77502daf2e70e88e45f85b39f183907741ad773cf811"; }
{ locale = "de"; arch = "linux-x86_64"; sha256 = "ed60c8dd0abda8c8cabdf34fcb96d39463cde9cdf1247af44438da7586490120"; }
{ locale = "el"; arch = "linux-i686"; sha256 = "03affa186bb66fabd9b61d0e53cb7f75aa13702a58fd2dd551e6da1b6e9cfd87"; }
{ locale = "el"; arch = "linux-x86_64"; sha256 = "d60419e5ebeec445e8efc8d9db59d093060be86af140605c8019a8f24680c4bb"; }
{ locale = "en-GB"; arch = "linux-i686"; sha256 = "e1b6c1f3f30ea522410f947c9cf331e3d580a1620af63401186d435707a041d8"; }
{ locale = "en-GB"; arch = "linux-x86_64"; sha256 = "6d873704a2cbeb2549dd2e55b8c915292b7167ce2f5022defd3bb2c0ad29da58"; }
{ locale = "en-US"; arch = "linux-i686"; sha256 = "6441f90eda22808c37bca023748efee7735cf9b18b1d21ce75878c10da8baad7"; }
{ locale = "en-US"; arch = "linux-x86_64"; sha256 = "a54afdf7dcadb94bfe2bc6ea3d6232d311568a74ed3fd93becff9cd57063ff0c"; }
{ locale = "es-AR"; arch = "linux-i686"; sha256 = "989f400b587a75160a4ef1b6913819e0bd2c8b0689753b233943e61412bdba4d"; }
{ locale = "es-AR"; arch = "linux-x86_64"; sha256 = "c294e1a4173dd14222d0edba31c529a3f9005412de728b1a17602e2a89c84af8"; }
{ locale = "es-ES"; arch = "linux-i686"; sha256 = "f6eac1108efaaa0c5f34c4856e7db5236c60b8aba7c99558b32b4e60f1df3dea"; }
{ locale = "es-ES"; arch = "linux-x86_64"; sha256 = "74132bc1e0fbe03c462399860168928bb1bca20ee1b0bf9a80262538ce320f57"; }
{ locale = "et"; arch = "linux-i686"; sha256 = "09fea4be7480ae51d7d68bc4b044c4d4a79e405893c4952ae083a8f417b99b85"; }
{ locale = "et"; arch = "linux-x86_64"; sha256 = "c8c5d621d975cfeb22695e589dd69a360d1b1dc6a4d0f52afc3b778835fbdb55"; }
{ locale = "eu"; arch = "linux-i686"; sha256 = "19af889a9205d99080aa1a0afc7c75d0c43a970f864d4cefb956cc37c618b7d7"; }
{ locale = "eu"; arch = "linux-x86_64"; sha256 = "0074802e84cab6ad21de7d960709ba15531705f4ff60bf141a917edb5295c201"; }
{ locale = "fi"; arch = "linux-i686"; sha256 = "ae301f557be17b60290ee0910053fc99ab367fd6a68b4f0c27e1e80316fea95d"; }
{ locale = "fi"; arch = "linux-x86_64"; sha256 = "567009788743148001e842418bfa520275ae6ed39857fd99da90ea37f6635008"; }
{ locale = "fr"; arch = "linux-i686"; sha256 = "0491d2760611a5709c23df1a3ae618b4bc069c4af5ce2b2b7ae491bac390c058"; }
{ locale = "fr"; arch = "linux-x86_64"; sha256 = "64e4cfe3e899cbd71ac3c3b6052d742bae4215704eeffb51f27c93f98ec7f3cb"; }
{ locale = "fy-NL"; arch = "linux-i686"; sha256 = "9d72a5fdc02ce45030bf44d7d8b31274cfb3579efc93d064824e6909fef2ed81"; }
{ locale = "fy-NL"; arch = "linux-x86_64"; sha256 = "f04d7404ce637abd3d807484422970852db0253da3da0a0654f3bea213f352a3"; }
{ locale = "ga-IE"; arch = "linux-i686"; sha256 = "853112a5c6fda45afed60a9c9f2d5f9fe972d21b092ae83cc4a3796f1be90b91"; }
{ locale = "ga-IE"; arch = "linux-x86_64"; sha256 = "36b0cef0ba9e483b13ce5f9fd12e7bc11e2bd0270b5b34e5b2690e79248724b5"; }
{ locale = "gd"; arch = "linux-i686"; sha256 = "fcb07754340c2558e94ce44ac6e1577fb4cd155577b6bece74ceb61b2bf204b1"; }
{ locale = "gd"; arch = "linux-x86_64"; sha256 = "cc842860d7abfc114c0db47d832508a70ea1ff0bc726fc58ccb875c245689d2b"; }
{ locale = "gl"; arch = "linux-i686"; sha256 = "325e8a27d49b1748ac7b5c2070d32df0d66c8d9b1b651136d500d2bb4bfefe14"; }
{ locale = "gl"; arch = "linux-x86_64"; sha256 = "dd4c6aad88ac32d6175320bd82026ae6b1c4f7b44fe04904743c7e7e3d270642"; }
{ locale = "he"; arch = "linux-i686"; sha256 = "cbf801085b4a7a3b2ac84790b176fbea8e254b13776bd19413d4c5b6522645ea"; }
{ locale = "he"; arch = "linux-x86_64"; sha256 = "9d60e3a8b5756bc3d3a9148dee458c28bed9bf1fac29587bd7e95318a78f59d8"; }
{ locale = "hr"; arch = "linux-i686"; sha256 = "4361a3dc02a0dc8a26716a96aa47f0c529e0942658fcd16b472d03ae1f0f50d7"; }
{ locale = "hr"; arch = "linux-x86_64"; sha256 = "b23b33c823ee55daa5a3f90a9f1f616fb8ea67be912182b6118521541f7039fa"; }
{ locale = "hu"; arch = "linux-i686"; sha256 = "3d2e37fbdd5af291bc90666460258b61e4b499007ad9bba5e6e48b3b3f9cb068"; }
{ locale = "hu"; arch = "linux-x86_64"; sha256 = "a7b904317bcf046f9139c415f1c453b66e355b31291211dc8dac76200902ac11"; }
{ locale = "hy-AM"; arch = "linux-i686"; sha256 = "8802522b5db21a9230ae856f90013d80a466a8c2caed35079318ece7028120cd"; }
{ locale = "hy-AM"; arch = "linux-x86_64"; sha256 = "43e899856a625d8dea84c79c0c7d1dfa15f286da628cec9f99c351139de1831e"; }
{ locale = "id"; arch = "linux-i686"; sha256 = "6ff994c056189d13a0c36cde5925e45ba3ba52ccab61486b338a1753eafc09c8"; }
{ locale = "id"; arch = "linux-x86_64"; sha256 = "287e89ba01280eb778b1cf1f2fd9859610b46f2abfe369fe54d4af8cc1f675ac"; }
{ locale = "is"; arch = "linux-i686"; sha256 = "5ee6ea3e48d526af3ef29ef374b40a0cafb299d32c1d6af4684382b8b171f88c"; }
{ locale = "is"; arch = "linux-x86_64"; sha256 = "aae33e6b2e75a9db69d17d356bc49e026bf39199cd1612ce42aa41a102a1ac03"; }
{ locale = "it"; arch = "linux-i686"; sha256 = "3a54ac3fc738e02c8ed9b7a730624497fab15dee4f9f82e84a526dd5600e300a"; }
{ locale = "it"; arch = "linux-x86_64"; sha256 = "cc99d99214e6d847fc885af036783fe3c1b2a55b04c758bbb2fd5bd0a39463ff"; }
{ locale = "ja"; arch = "linux-i686"; sha256 = "804485d204392b52b4bfdbb28804f729614c53fa692a89e58f97161c89809bf0"; }
{ locale = "ja"; arch = "linux-x86_64"; sha256 = "8bdce5e6f97c2747ff209acee7fad24f2dc0e07801ee30754370bb0450d383f7"; }
{ locale = "ko"; arch = "linux-i686"; sha256 = "61ab133865b2c62ea88154917ddf1383a3157b96ac3b073568e392036874f5d7"; }
{ locale = "ko"; arch = "linux-x86_64"; sha256 = "695ef59b94626f03151c8bd68ea799b0ae5e879a57f8185af5557799211bda1f"; }
{ locale = "lt"; arch = "linux-i686"; sha256 = "014e8604790af3fa4af504986b86dc0de4bd2e53267548c01bb85e48bc90ffc5"; }
{ locale = "lt"; arch = "linux-x86_64"; sha256 = "8c803b613526d39618c8e82d9f981293ebb6799136697488ef4d10eb2a485808"; }
{ locale = "nb-NO"; arch = "linux-i686"; sha256 = "bfc828d3882588a9909fef1d6731a6bc1636eaf53342a57d56e3fbc975133869"; }
{ locale = "nb-NO"; arch = "linux-x86_64"; sha256 = "f25bc7dacd28fd2c907565ab608d504abcc2896118e4cd8813de28c75d26c569"; }
{ locale = "nl"; arch = "linux-i686"; sha256 = "cb94f869fa63215686465bb29a8c05f80611cd60a82d7cbded6ddf55577172e1"; }
{ locale = "nl"; arch = "linux-x86_64"; sha256 = "ecb185013de3d55cfafaa156821308453a90a123b99d122ea4ef7a29e7d7fab5"; }
{ locale = "nn-NO"; arch = "linux-i686"; sha256 = "8719216b8cc0293d8aa23c04e2d663dfef515a7bc1b6e06a5f03bed3d6fb3b6a"; }
{ locale = "nn-NO"; arch = "linux-x86_64"; sha256 = "f6617cf98b49d28ae7fa8e7d022587c6ed8138c758ff088c5abc78f7bdd52613"; }
{ locale = "pa-IN"; arch = "linux-i686"; sha256 = "b0e57d139f359850558f40bad00b2c4e69da8e9d73ec9aa7d180b9f33d970449"; }
{ locale = "pa-IN"; arch = "linux-x86_64"; sha256 = "2efcfe4b366f7ff5dc95c45cb229aeed316315fe4554651e5d0239985cd64fdb"; }
{ locale = "pl"; arch = "linux-i686"; sha256 = "3d579ed8e18d98c446a5f069d6d2e94a3ee234c75feffbaf99f561ef7bd45a2e"; }
{ locale = "pl"; arch = "linux-x86_64"; sha256 = "04090e4b4b412f79d1879340c36e36c65e4f23fde5dc545b4d855c8497ca47f7"; }
{ locale = "pt-BR"; arch = "linux-i686"; sha256 = "9d202dd10b626ed9753ac5e243c14f6b1eee76e8edd40389f56003c4e8816c83"; }
{ locale = "pt-BR"; arch = "linux-x86_64"; sha256 = "3b82124d8956e83657b30347ef3b5e44cf3813c1b02998b197c817c6528423c0"; }
{ locale = "pt-PT"; arch = "linux-i686"; sha256 = "65ebb88e9e544c38a9d85a70a1920ed9c6ec03452762f98cb2fe104912074b44"; }
{ locale = "pt-PT"; arch = "linux-x86_64"; sha256 = "fba7f18daee4832b9851615a0597dbde98a5271c5882d56ab4c1e0cb6d8c4783"; }
{ locale = "rm"; arch = "linux-i686"; sha256 = "e0ffc4b23cbf4a92768eff507335dffb92fad26d02662adf77e0ccff4f4b6c8b"; }
{ locale = "rm"; arch = "linux-x86_64"; sha256 = "555e30eaa6942543c7b1cd3569a6480016be5826a474a76c2ba8e2078d6d5b83"; }
{ locale = "ro"; arch = "linux-i686"; sha256 = "38bf63ae8365fbe1ca88b683d94c21cd5620a7397b3b344c0e4e938287311ec3"; }
{ locale = "ro"; arch = "linux-x86_64"; sha256 = "328cb7395e61924240f8e29399bf1d64179bce5bb911595cda422b741d9b6f34"; }
{ locale = "ru"; arch = "linux-i686"; sha256 = "8df9749d8dbe4218910026a8e4c4145b1f155903e577a16758d15eefbc2715f9"; }
{ locale = "ru"; arch = "linux-x86_64"; sha256 = "99cd036facc18242e5ab5df00a480e5c7c779b50fa95eac191bbebfa7343a270"; }
{ locale = "si"; arch = "linux-i686"; sha256 = "4ce33a17b148329334e596186d274b9c262a779e7190f9777dd0673df12f7b4c"; }
{ locale = "si"; arch = "linux-x86_64"; sha256 = "c22cd896e651b2e664128411710a80a33471319951f5aff3cfc86ff86de39a86"; }
{ locale = "sk"; arch = "linux-i686"; sha256 = "30351a15f43f905bf69e578d9ce14506ade61e805e34097f81bf8ac50f1f9ee9"; }
{ locale = "sk"; arch = "linux-x86_64"; sha256 = "c8930d6ebff4f7429af5daf72648651162543fa000acad0fb63179c2c3f150e6"; }
{ locale = "sl"; arch = "linux-i686"; sha256 = "10c61d7e3bc592f23811d5a06fcdc892a088cbef7fc3298e8ed9937dc7518b37"; }
{ locale = "sl"; arch = "linux-x86_64"; sha256 = "81483f6bdc85eb244904d3a8328d81391be24ea2ae7604cb00bbf922025afd89"; }
{ locale = "sq"; arch = "linux-i686"; sha256 = "8ac202a6eb0a3f08e9c34502b26b0cf1a85ab43850658cce7042f0afd5f9f50a"; }
{ locale = "sq"; arch = "linux-x86_64"; sha256 = "23fc8634b6dfa984c530292f7f01f9a2d43b196a8092f93cc435abd7a8d131de"; }
{ locale = "sr"; arch = "linux-i686"; sha256 = "9c96c0935b7a0124059caea758ba3319cc3a5977e542965f663d2daa54f5a32e"; }
{ locale = "sr"; arch = "linux-x86_64"; sha256 = "2d64f970c70f34bd726296b8aa2db243c245d2c36167a36de7032ae17fc1ccb2"; }
{ locale = "sv-SE"; arch = "linux-i686"; sha256 = "1b0d6476248896b9224c5c69a944084677df45e273508bf8d629eb14b57662a9"; }
{ locale = "sv-SE"; arch = "linux-x86_64"; sha256 = "05977173bdd460eab1ff5a7065067b4074417297e38dbc70c6cceedca0c933b5"; }
{ locale = "ta-LK"; arch = "linux-i686"; sha256 = "3ef8950e8aa9f130aa66a1ad2cfdd21c2ba9572ef3e0d868d7a8fbf1ef8e3291"; }
{ locale = "ta-LK"; arch = "linux-x86_64"; sha256 = "be101ca34d96577ccc6ba715235eefa9dd065f04a651e9a35786f9edb6278a98"; }
{ locale = "tr"; arch = "linux-i686"; sha256 = "d5b35faa3e0e09af778aebec4b33f39bbce98465a39edb2da15197671b777abe"; }
{ locale = "tr"; arch = "linux-x86_64"; sha256 = "995c1abcd5357cfda831d07ad6e0b762fbabda61601a58122acc2e8942fb944a"; }
{ locale = "uk"; arch = "linux-i686"; sha256 = "6c5b0df0a1448fcf1cebc8d82072d5653cb0432e2f787179526bae4cef774352"; }
{ locale = "uk"; arch = "linux-x86_64"; sha256 = "86f3ce21bc863eb8f3e0099d9386e0f38ad8b2c8e29a79e47bfda37acecd991f"; }
{ locale = "vi"; arch = "linux-i686"; sha256 = "0a21d13abb629549df74d956cc1c5f99c879980fbee2d269e1532610aebb404c"; }
{ locale = "vi"; arch = "linux-x86_64"; sha256 = "29cbf72f4990eb55d30a85a767d01c8077ab89af69eba3b7299d43871aaa165e"; }
{ locale = "xpi"; arch = "linux-i686"; sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"; }
{ locale = "xpi"; arch = "linux-x86_64"; sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"; }
{ locale = "zh-CN"; arch = "linux-i686"; sha256 = "1527b8e9f245c96d0104f0b7d5c8dc696036fbb80067d14a1eee9a423ddd9368"; }
{ locale = "zh-CN"; arch = "linux-x86_64"; sha256 = "ae294571b8433b646b5d65a0cb1ab7f42295b17369f5ec82c2383c654df28e20"; }
{ locale = "zh-TW"; arch = "linux-i686"; sha256 = "98e5c8f912d1a03f5c0a2f14b63f350823d15f1253e15a318b61227ba82fec0e"; }
{ locale = "zh-TW"; arch = "linux-x86_64"; sha256 = "49ee58ad3978113e10de520eb094fc9c0f4d740ca6c0a0e07d5743e313163d0f"; }
{ locale = "id"; arch = "linux-i686"; sha256 = "e19f6f5b8f19178350ec68386afd2ab7e5900b8c1fdb7bf81928fedcfcea5cbe"; }
{ locale = "id"; arch = "linux-x86_64"; sha256 = "ece7445451150b2776f5debc818e288b9037dac1f2da9c7f7db584b6d2b73d34"; }
{ locale = "he"; arch = "linux-i686"; sha256 = "0ff30ffc7ffe087056b0e72d66d2bc264c1060e3abb65e0c4d53d976855f436f"; }
{ locale = "he"; arch = "linux-x86_64"; sha256 = "dd41d433644f7790ace1f246ec6703c060456260716710fc4318ca834ecd758b"; }
{ locale = "el"; arch = "linux-i686"; sha256 = "eb6d53c00a6cd912279b56c5322d65b94fdd2a021c9ea2c854f664e476ae89e2"; }
{ locale = "el"; arch = "linux-x86_64"; sha256 = "b0fdf2dc2de7ba5296f69694908aef4954b24b4c3092bddbec8995bf838bb817"; }
{ locale = "tr"; arch = "linux-i686"; sha256 = "71f4f7738540445dc64399368bb63bf48ede79f055d6647ba9ed4d274040d623"; }
{ locale = "tr"; arch = "linux-x86_64"; sha256 = "2be714b598bf8f1a3c6c9a13141d370c4d29bfec3e4053eb6f1c8a6a7988a96b"; }
{ locale = "ast"; arch = "linux-i686"; sha256 = "8b2c3b83f4f88e33ac31b07dfb64e83fd1b2cce9ad877c8bb5715a0e6299ce6f"; }
{ locale = "ast"; arch = "linux-x86_64"; sha256 = "93cd2c5c6c2ac05af3bb55a723bf3f02234d55064b5ea7cba6289bd07cca7647"; }
{ locale = "nl"; arch = "linux-i686"; sha256 = "2f11b85055fa21b4e2677b92fef34a769ed56bdbd877fefb86599edb5dd39932"; }
{ locale = "nl"; arch = "linux-x86_64"; sha256 = "d47057633c0ec5e785a723c45c5b8b0168e3d3fabe4aaedb4ca1adbff29a4dcd"; }
{ locale = "bn-BD"; arch = "linux-i686"; sha256 = "902274548b7308e75c465f71912a7d1e5539e92420ffa17c80a2ac20d02d8630"; }
{ locale = "bn-BD"; arch = "linux-x86_64"; sha256 = "044494d6bfc07b9cbeaa325dab3c1f0c5e554a05f1a050d960c39fbe093d9482"; }
{ locale = "eu"; arch = "linux-i686"; sha256 = "e453a06a64c35ed81e661c67fbd4241a7c5494b1f3d2bf5ace7543798feb338c"; }
{ locale = "eu"; arch = "linux-x86_64"; sha256 = "e8006f0e89153424c809de41ec1a714b91011b5a2a9601c1893a6ff30dcbd2ac"; }
{ locale = "fr"; arch = "linux-i686"; sha256 = "fed414783f8e9bba5be6d4cb90ef04f274aabab34f3b4351a329d5c5ae7ae8f0"; }
{ locale = "fr"; arch = "linux-x86_64"; sha256 = "e8f0203bf90bc30c89380c417921139f7b92ef1d38b3d95d292acee3be4e93c3"; }
{ locale = "br"; arch = "linux-i686"; sha256 = "0948d002df401b9aaedbf8e3277ce312edeb635baa57b1bdf5de87cc13dd36cb"; }
{ locale = "br"; arch = "linux-x86_64"; sha256 = "733e09671f00c693e13a726fa597b4705822e693ddce8a0494c57fde1de3cb56"; }
{ locale = "pa-IN"; arch = "linux-i686"; sha256 = "c160c17e4b9b0e3d579a01b5973d142c711d4f87b03fd542d073d816ced9a9c9"; }
{ locale = "pa-IN"; arch = "linux-x86_64"; sha256 = "0c281e6430a233aca5c6130e907e08c7d05aed8851214063546aff5a5df82232"; }
{ locale = "gd"; arch = "linux-i686"; sha256 = "5d85eb78f01e1d52e733d4abf8d33281ec2c4adf9a9c65f50c6d6e2b6acf3d1d"; }
{ locale = "gd"; arch = "linux-x86_64"; sha256 = "a7bb71bb08ccfc01f8e91b47b6ee0ac4592976e964454304da493e0582d262d1"; }
{ locale = "bg"; arch = "linux-i686"; sha256 = "a63e060eac9efb27b4166e05ff6a035afd51cd29d45ddf69e5226e08441ac53c"; }
{ locale = "bg"; arch = "linux-x86_64"; sha256 = "8a5f45352e180e984c7f1bc37f0e7602cbc6085a3dcdcac2d74f493941fd9f0e"; }
{ locale = "sv-SE"; arch = "linux-i686"; sha256 = "ef70e1ff3ff3ce2fd9ecbe62ed010c06e63b410b843cdc3aa3c93fda2bf56708"; }
{ locale = "sv-SE"; arch = "linux-x86_64"; sha256 = "af33cba52556057abf17df0e92c11ecbf39382bbf92c66b137113e5503ae170b"; }
{ locale = "ja"; arch = "linux-i686"; sha256 = "f87eac6641ebccf018c76275adcba03976b9c62b9fa51533ec67ab0d2a5a91b9"; }
{ locale = "ja"; arch = "linux-x86_64"; sha256 = "009b53f10bd785a799026dab028fbb7fa46c154569eba98db2673af12f6c19c4"; }
{ locale = "pt-BR"; arch = "linux-i686"; sha256 = "ae2243346546cc2c768a9c24fc296013a45459637ab65477537f9d08d5ae193c"; }
{ locale = "pt-BR"; arch = "linux-x86_64"; sha256 = "5cb2af1ec854e12b91bdf7f2fe88b56bfb45bf7144cf5cc3f0e307259d767a43"; }
{ locale = "is"; arch = "linux-i686"; sha256 = "bf3a2e4efd86b1e73ac38ef3dc880ce2cee3102d2844b17ebf31aa6528040a92"; }
{ locale = "is"; arch = "linux-x86_64"; sha256 = "d36f8d321d2952310dcb19a288f36f6496ca24e7f49fb483882c270c1c96571d"; }
{ locale = "es-AR"; arch = "linux-i686"; sha256 = "e05f63d1f978029169a91719551b6e399be0e0d37310921168904d188e41f50d"; }
{ locale = "es-AR"; arch = "linux-x86_64"; sha256 = "b8025a7a724a0d98c4f706e7ce59aae8c0f7bcd0082733ce6bee73a1d243feef"; }
{ locale = "nn-NO"; arch = "linux-i686"; sha256 = "26ded9a3ebea58bcf80ca47759d4fdb86fe91aea8dcf56afdbaf7a32d548ee66"; }
{ locale = "nn-NO"; arch = "linux-x86_64"; sha256 = "fd8321d5d6adaae042651d911df6ef587afda19ee82bdcfce98814144282b54d"; }
{ locale = "sr"; arch = "linux-i686"; sha256 = "94b94517072901f34ab28b6cf3a2fd8852867f147ab4b47f34f7d9ae16fbd603"; }
{ locale = "sr"; arch = "linux-x86_64"; sha256 = "e38f493ea1b8c0b183bad2f2627eb166e75e875a62b33704f50f8f831fd552ec"; }
{ locale = "si"; arch = "linux-i686"; sha256 = "319ae8256ecf3d7623195e474040fffffff230cd612571872a38b52b608c0507"; }
{ locale = "si"; arch = "linux-x86_64"; sha256 = "f776b8a9efad41f5c2f8770452a0bd053a3ba9ed4b74da3e3f24214c69e9779e"; }
{ locale = "ro"; arch = "linux-i686"; sha256 = "f6aea954d3ba2334411a7ce9e7e1da926b0039935c5db3a5480f0fbda583b849"; }
{ locale = "ro"; arch = "linux-x86_64"; sha256 = "9fef811764441b2b16e408808f4608e17cd21175cf45774162b3bce8b8612491"; }
{ locale = "it"; arch = "linux-i686"; sha256 = "71df4de89a1eff632339dbaf48ce41182f7a20f7e55a223f6816ef86d3465443"; }
{ locale = "it"; arch = "linux-x86_64"; sha256 = "076332c97a5c854b2313bd9f2138a6660d8e04fbddc3f8beb89acf071efd4c86"; }
{ locale = "pl"; arch = "linux-i686"; sha256 = "1a45f7d1d8817f6c724dff556886edc3f2d0ee62ff45bea8d6b7ef63f7f92928"; }
{ locale = "pl"; arch = "linux-x86_64"; sha256 = "8aa25320126052c9ebc3496e8731224e30fbd45ee2679f4d87f7f2050a01c312"; }
{ locale = "sk"; arch = "linux-i686"; sha256 = "83a31a94eeb95e28612eeb1e696ed387b6793da350efda439de11833e0ea1173"; }
{ locale = "sk"; arch = "linux-x86_64"; sha256 = "8c1647f8bfb210f7da8aa164777ef412bf3d4459ce53c95ee2211b4b5df440dc"; }
{ locale = "vi"; arch = "linux-i686"; sha256 = "e5bb99de119fd6496674fb9cc8432f146e684afc652dec2861108d1ef20b49d7"; }
{ locale = "vi"; arch = "linux-x86_64"; sha256 = "f35e62031154a32da68ea3d6960da8807f0de7ade7071526fafd6ace48c88976"; }
{ locale = "rm"; arch = "linux-i686"; sha256 = "0826595dddc981b64d4f1a59cd71411c34ccd0aeac182925709abeedff8461fc"; }
{ locale = "rm"; arch = "linux-x86_64"; sha256 = "b5b8d30251fc482861518e1c86001aa5eca6b53a65e14a8c6ff9e61eaf651044"; }
{ locale = "ar"; arch = "linux-i686"; sha256 = "a9b2138cacc983142353ec09a5c4226fc731501da4c0200cc86026e6b28ca10c"; }
{ locale = "ar"; arch = "linux-x86_64"; sha256 = "6c9a2ce8a8d3b4815475827caf89a3fee8371c422aa6c4984bb03f56728b682c"; }
{ locale = "es-ES"; arch = "linux-i686"; sha256 = "813260cf5ab06e55c563e015e0172ce0192ccdd894a352ef6d4f439252032619"; }
{ locale = "es-ES"; arch = "linux-x86_64"; sha256 = "c879fe62db6952f91c51ec7c172bc67d5351f55e99ab6df5cdd8639206f3444a"; }
{ locale = "fi"; arch = "linux-i686"; sha256 = "33888c19b7e5e57155748d7372ad2b0e61f522ee96913f8846c754c3361fcb4a"; }
{ locale = "fi"; arch = "linux-x86_64"; sha256 = "d5487588cf07cbd2b02b1c566b6515d087cf8fe9d528890b1dd5a0de53ab1d8c"; }
{ locale = "hu"; arch = "linux-i686"; sha256 = "72b3a36269de70bd627589bad817e7702a4c83fff9b460e4f787486fa4bf15c7"; }
{ locale = "hu"; arch = "linux-x86_64"; sha256 = "d458ed4b62f65ce7c3787930549cbee42842ae87a846e5d1565c1881b3bc17e8"; }
{ locale = "zh-CN"; arch = "linux-i686"; sha256 = "3155a71e847020b2806f6b31acbaa702ccf20f8bd805c2aedb0c9c415f75b88f"; }
{ locale = "zh-CN"; arch = "linux-x86_64"; sha256 = "b56beb864d247685cd9ba6820e5a8a143be28ff95440e38670c8963d2c769738"; }
{ locale = "uk"; arch = "linux-i686"; sha256 = "74b7059580a4f389278b1059d80308101ffcfd0a738c6d614e56560ce116db34"; }
{ locale = "uk"; arch = "linux-x86_64"; sha256 = "a351421c230f6629de0125a30767ff10d541264f6249f6fa2568eae76189398f"; }
{ locale = "ko"; arch = "linux-i686"; sha256 = "d26ba336a555276c36f9a003df9bc3e0df1c40dd4da7062d1cd8b3a6cba6d52c"; }
{ locale = "ko"; arch = "linux-x86_64"; sha256 = "078e5878f823b2d19568af8bda095e6ab46097a680b209bae9242d7658377abf"; }
{ locale = "cs"; arch = "linux-i686"; sha256 = "c9aaab25dabdba0708459a82882b926155b475314d72463633af10c27d9e5dfb"; }
{ locale = "cs"; arch = "linux-x86_64"; sha256 = "9a9fc61875f0427c26107b96ee3a6f7d71717c0d4aa6e41cc7b1b56bff2131e7"; }
{ locale = "be"; arch = "linux-i686"; sha256 = "afc862a2a1054f08cffa0ec4facb2e9098fb042f7e4dab85c2ace7f30a384426"; }
{ locale = "be"; arch = "linux-x86_64"; sha256 = "50353005857df556840fab0b18e8784dc18cbcdc5c45f4fc1f68f6b78b58048c"; }
{ locale = "ru"; arch = "linux-i686"; sha256 = "4876fcda18fd01b51f392a56085ebfcb97cefd69355666f42d58ffe53b9eb8e9"; }
{ locale = "ru"; arch = "linux-x86_64"; sha256 = "ef90a31aa408c6c86f3103d7bc82e3e8b5ac7bc9956d431ef46e1f44156b7dbf"; }
{ locale = "ta-LK"; arch = "linux-i686"; sha256 = "ee4a961e76e63a79d08118e2355e37b1b2a1e0260613532ac6dc7c9a9e86caf1"; }
{ locale = "ta-LK"; arch = "linux-x86_64"; sha256 = "9a1233c0ee7a72f8b1c071a6cd507d870d34bd64c71f7f960c00cf2e840ea5b1"; }
{ locale = "zh-TW"; arch = "linux-i686"; sha256 = "00bf471763ca98d7c7e0243f5bbc75230b6cf8cea9c5dab17464c47544d102de"; }
{ locale = "zh-TW"; arch = "linux-x86_64"; sha256 = "61e474bd0c930b9d6bcc553a87c07e415e1fe037dd033a6a97f9137d4fc73f49"; }
{ locale = "de"; arch = "linux-i686"; sha256 = "e93520901aa59938e1c51c9943225dded88c668a91da6660de9f41714114ac8b"; }
{ locale = "de"; arch = "linux-x86_64"; sha256 = "008156ddb73f4eb91d801d8bc35685e517328b5e5f13a4ed39873df471d01c67"; }
{ locale = "nb-NO"; arch = "linux-i686"; sha256 = "20b3b10e12238238737fa0da3dce5e2fdff1161594b415c5872dd7416001482b"; }
{ locale = "nb-NO"; arch = "linux-x86_64"; sha256 = "79f854469ac1a6fb0768934dc20ebc511a01904c71f321ed31ebe400ab88f4d8"; }
{ locale = "fy-NL"; arch = "linux-i686"; sha256 = "61cec7fef6e75ecd7d459e973b258c5b62af0dbfd175b7000484594e63ead2e4"; }
{ locale = "fy-NL"; arch = "linux-x86_64"; sha256 = "83b3761bfd949e3890c7006ba9610e858fab25815cd6e2f3f293ca707086a78c"; }
{ locale = "sq"; arch = "linux-i686"; sha256 = "f36321189ed80130b9e4a3a6e387531c48745f4c109f35afe928cf2d44e1b424"; }
{ locale = "sq"; arch = "linux-x86_64"; sha256 = "81da71b2ce832788213ed60f801fd79e61205a98c44e9082a35f2195af314de8"; }
{ locale = "ga-IE"; arch = "linux-i686"; sha256 = "b759d93d78964eb8b9ce5aaad37d652fa425cfb5d6049f58a31c2492e3aa475d"; }
{ locale = "ga-IE"; arch = "linux-x86_64"; sha256 = "62b32a8a4e7455c42bbf8cc5029919a64ca2ff61e06f535dd628a8dd612a15d9"; }
{ locale = "da"; arch = "linux-i686"; sha256 = "4ad6ede882e973b37627105812619d2e8c804d50d496d96f68554bf75ca093fe"; }
{ locale = "da"; arch = "linux-x86_64"; sha256 = "9fd6ce0edef1a8c8eb7d811afa39600a2c946f9ed87610a9e98a971d4cf31b08"; }
{ locale = "hr"; arch = "linux-i686"; sha256 = "35254ef736865d1a7c368e62c9cba68fa64b7f017aca4d9569aeb18b5f559717"; }
{ locale = "hr"; arch = "linux-x86_64"; sha256 = "6ff8a5b4ebfb9217b37afdfc4d5cab01f1ce66387010d2105a51bed486eea52c"; }
{ locale = "ca"; arch = "linux-i686"; sha256 = "eb4af3ff107f6827d0288bd68486b8eef174c5dc6e9b5313099d99b2e695db0d"; }
{ locale = "ca"; arch = "linux-x86_64"; sha256 = "80a6bf800a53af0cc9445c632546ce7cefcf5bd819e6e5e35e662330d58d757c"; }
{ locale = "en-US"; arch = "linux-i686"; sha256 = "ba35f578095f79582341e988ce7c5e07f489833f7a309756c80caf4f56367987"; }
{ locale = "en-US"; arch = "linux-x86_64"; sha256 = "09c193e865e90b6d2c547c17d10add7d43e8b89b630a8a490323d4ed391c924d"; }
{ locale = "pt-PT"; arch = "linux-i686"; sha256 = "57610296c564291a8432fdb9215bcfbab6f09792c47e5606c1619bb203c7f5de"; }
{ locale = "pt-PT"; arch = "linux-x86_64"; sha256 = "c702acf69957ffd1c4774f42d4f28dc239a4c5bcf6e003c236952167bf9e7e9f"; }
{ locale = "gl"; arch = "linux-i686"; sha256 = "56ae2d38af2988791163e6b118c781d55e2c545097aa5afccc72998705312888"; }
{ locale = "gl"; arch = "linux-x86_64"; sha256 = "c5386f149831aa2f48b65391f31f8f2e0a9c3b7a8bcaae67420a5819e80315ec"; }
{ locale = "lt"; arch = "linux-i686"; sha256 = "8409401c0b87be071d081c03eb34e3338cb62e80669045f5d268f8da60d96bce"; }
{ locale = "lt"; arch = "linux-x86_64"; sha256 = "4f93e9b0688e30586b3d372944ae5579f7249220733d6045e6bca3830e7f121a"; }
{ locale = "en-GB"; arch = "linux-i686"; sha256 = "ae1608b9e15862f82d15c5acbcd9f65775efc4368588bc685ebff523ff93e2d6"; }
{ locale = "en-GB"; arch = "linux-x86_64"; sha256 = "2466f020209de610f429315e0b090b43cf42c9ce540c6bc51e7ad11f5a3449f5"; }
{ locale = "sl"; arch = "linux-i686"; sha256 = "76cbcf31388cbe72ebbf3fa3be66a0cfe20cd572febf062f3a58a9c50313aa03"; }
{ locale = "sl"; arch = "linux-x86_64"; sha256 = "e4aa9dd8bb21f3d79ce5f9cfc907fc8a355fef349dcdec30403d534bf3cfbdf6"; }
{ locale = "et"; arch = "linux-i686"; sha256 = "06561fa96d5166bfbe8eb492ebc08b3d2a768a8a7a251b357dec89ad33f3825e"; }
{ locale = "et"; arch = "linux-x86_64"; sha256 = "85e663261cc6722c25dd36e1c0a15b7a82a3a6aaca54191effe8ea09ccb8c43e"; }
{ locale = "hy-AM"; arch = "linux-i686"; sha256 = "d80f116d39e48b42a767fbda5b6e765be4bc3d210cf95d80bb014606785be3e6"; }
{ locale = "hy-AM"; arch = "linux-x86_64"; sha256 = "c2e124736d63581a3034e60fe3d40bfef9458a712853ab5c8c5d391a9d3af6a9"; }
];
arch = if stdenv.system == "i686-linux"
@ -263,4 +265,3 @@ stdenv.mkDerivation {
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,210 @@
version = if ARGV.empty?
"latest"
else
ARGV[0]
end
base_path = "download-installer.cdn.mozilla.net/pub/thunderbird/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
locales.delete("index.html")
locales.delete("xpi")
real_version = Dir.glob("#{base_path}/#{version}/#{arches[0]}/#{locales[0]}/thunderbird-*")[0].match(/thunderbird-([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}/thunderbird-*")[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
, gconf
, alsaLib
, at_spi2_atk
, atk
, cairo
, cups
, curl
, dbus_glib
, dbus_libs
, fontconfig
, freetype
, gdk_pixbuf
, glib
, glibc
, gst_plugins_base
, gstreamer
, gtk
, kerberos
, libX11
, libXScrnSaver
, libXext
, libXinerama
, libXrender
, libXt
, libcanberra
, libgnome
, libgnomeui
, mesa
, nspr
, nss
, pango
}:
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 = "thunderbird-bin-${version}";
src = fetchurl {
url = "http://download-installer.cdn.mozilla.net/pub/thunderbird/releases/${version}/${source.arch}/${source.locale}/thunderbird-${version}.tar.bz2";
inherit (source) sha256;
};
phases = "unpackPhase installPhase";
libPath = stdenv.lib.makeLibraryPath
[ stdenv.gcc.gcc
gconf
alsaLib
at_spi2_atk
atk
cairo
cups
curl
dbus_glib
dbus_libs
fontconfig
freetype
gdk_pixbuf
glib
glibc
gst_plugins_base
gstreamer
gtk
kerberos
libX11
libXScrnSaver
libXext
libXinerama
libXrender
libXt
libcanberra
libgnome
libgnomeui
mesa
nspr
nss
pango
] + ":" + stdenv.lib.makeSearchPath "lib64" [
stdenv.gcc.gcc
];
installPhase =
''
mkdir -p "$prefix/usr/lib/thunderbird-bin-${version}"
cp -r * "$prefix/usr/lib/thunderbird-bin-${version}"
mkdir -p "$out/bin"
ln -s "$prefix/usr/lib/thunderbird-bin-${version}/thunderbird" "$out/bin/"
for executable in \
thunderbird mozilla-xremote-client thunderbird-bin plugin-container \
updater
do
patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
"$out/usr/lib/thunderbird-bin-${version}/$executable"
done
for executable in \
thunderbird mozilla-xremote-client thunderbird-bin plugin-container \
updater libxul.so
do
patchelf --set-rpath "$libPath" \
"$out/usr/lib/thunderbird-bin-${version}/$executable"
done
# Create a desktop item.
mkdir -p $out/share/applications
cat > $out/share/applications/thunderbird.desktop <<EOF
[Desktop Entry]
Type=Application
Exec=$out/bin/thunderbird
Icon=$out/lib/thunderbird-bin-${version}/chrome/icons/default/default256.png
Name=Thunderbird
GenericName=Mail Reader
Categories=Application;Network;
EOF
'';
meta = with stdenv.lib; {
description = "Mozilla Thunderbird, a full-featured email client";
homepage = http://www.mozilla.org/thunderbird/;
license = {
shortName = "unfree"; # not sure
fullName = "unfree";
url = http://www.mozilla.org/en-US/foundation/trademarks/policy/;
};
platforms = platforms.linux;
};
}
EOF

View File

@ -33,6 +33,5 @@ stdenv.mkDerivation rec {
[doScons doForceShare doPropagate]);
meta = {
description = "Linux DC++ - Direct Connect client";
inherit src;
};
}

View File

@ -1,18 +1,20 @@
{ stdenv, fetchurl, ncurses, zlib, bzip2, sqlite, pkgconfig, glib, gnutls }:
stdenv.mkDerivation rec {
let
version = "1.19.1";
in
stdenv.mkDerivation {
name = "ncdc-${version}";
version = "1.19";
src = fetchurl {
url = "http://dev.yorhel.nl/download/ncdc-1.19.tar.gz";
sha256 = "1wgvqwfxq9kc729h2r528n55821w87sfbm4h21mr6pvkpfw30hf2";
url = "http://dev.yorhel.nl/download/ncdc-${version}.tar.gz";
sha256 = "0iwx4b3x207sw11qqjfynpwnhryhixjzbgcy9l9zfisa8f0k7cm6";
};
buildInputs = [ ncurses zlib bzip2 sqlite pkgconfig glib gnutls ];
meta = {
description = "modern and lightweight direct connect client with a friendly ncurses interface";
description = "Modern and lightweight direct connect client with a friendly ncurses interface";
homepage = http://dev.yorhel.nl/ncdc;
license = stdenv.lib.licenses.mit;
platforms = stdenv.lib.platforms.linux; # arbitrary

View File

@ -10,7 +10,7 @@ in
stdenv.mkDerivation {
name = "teamviewer-8.0.17147";
src = fetchurl {
url = "http://download.teamviewer.com/download/teamviewer_linux_x64.deb";
url = "http://download.teamviewer.com/download/version_8x/teamviewer_linux_x64.deb";
sha256 = "0s5m15f99rdmspzwx3gb9mqd6jx1bgfm0d6rfd01k9rf7gi7qk0k";
};

View File

@ -11,7 +11,7 @@ in
stdenv.mkDerivation {
name = "teamviewer-7.0.9377";
src = fetchurl {
url = "http://www.teamviewer.com/download/version_7x/teamviewer_linux.tar.gz";
url = "http://download.teamviewer.com/download/version_7x/teamviewer_linux.tar.gz";
sha256 = "1f8934jqj093m1z56yl6k2ah6njkk6pz1rjvpqnryi29pp5piaiy";
};

View File

@ -0,0 +1,40 @@
{stdenv, fetchurl, pkgconfig, ocaml, findlib, camlp5, ncurses, lablgtk ? null}:
stdenv.mkDerivation (rec {
name = "prooftree-${version}";
version = "0.12";
src = fetchurl {
url = "http://askra.de/software/prooftree/releases/prooftree-${version}.tar.gz";
sha256 = "08yp66j05pdkdpv9xkfqymqy82mir5xbwfh9mkzhh219xkps4b4m";
};
buildInputs = [ pkgconfig ocaml findlib camlp5 ncurses lablgtk ];
dontAddPrefix = true;
configureFlags = [ "--prefix" "$(out)" ];
meta = {
description = "Prooftree is a program for proof-tree visualization";
longDescription = ''
Prooftree is a program for proof-tree visualization during interactive
proof development in a theorem prover. It is currently being developed
for Coq and Proof General. Prooftree helps against getting lost between
different subgoals in interactive proof development. It clearly shows
where the current subgoal comes from and thus helps in developing the
right plan for solving it.
Prooftree uses different colors for the already proven subgoals, the
current branch in the proof and the still open subgoals. Sequent texts
are not displayed in the proof tree itself, but they are shown as a
tool-tip when the mouse rests over a sequent symbol. Long proof commands
are abbreviated in the tree display, but show up in full length as
tool-tip. Both, sequents and proof commands, can be shown in the display
below the tree (on single click) or in a separate window (on double or
shift-click).
'';
homepage = http://askra.de/software/prooftree;
platforms = stdenv.lib.platforms.unix;
maintainers = [ stdenv.lib.maintainers.jwiegley ];
};
})

View File

@ -5,43 +5,39 @@ let
libPath = stdenv.lib.makeLibraryPath
[ stdenv.gcc.libc stdenv.gcc.gcc gtk gdk_pixbuf atk pango glib cairo
freetype fontconfig libxml2 gnome2.gtksourceview
];
] + ":${stdenv.gcc.gcc}/lib64";
patchLib = x: extra: "patchelf --set-rpath ${libPath}:${extra} ${x}";
patchExe = x: extra: ''
patchExe = x: ''
patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
--set-rpath ${libPath}:${extra} ${x}
--set-rpath ${libPath} ${x}
'';
in
stdenv.mkDerivation rec {
name = "verifast-${version}";
version = "13.11.14";
version = "14.5";
src = fetchurl {
url = "http://people.cs.kuleuven.be/~bart.jacobs/verifast/verifast-13.11.14.tar.gz";
sha256 = "1ahay7achjsfz59d3b6vl1v91gr5j34vb494isqw3fsw5l8jd9p7";
url = "http://people.cs.kuleuven.be/~bart.jacobs/verifast/${name}-x64.tar.gz";
sha256 = "03y1s6s2j9vqgiad0vbxriipsypxaylxxd3q36n9rvrc3lf9xra9";
};
dontStrip = true;
phases = "unpackPhase installPhase";
installPhase = ''
mkdir -p $out/bin
cp -R bin $out/libexec
${patchLib "$out/libexec/libz3-gmp.so" "$out/libexec"}
${patchExe "$out/libexec/vfide-core" "$out/libexec"}
${patchExe "$out/libexec/verifast-core" "$out/libexec"}
${patchExe "$out/libexec/verifast-core"}
${patchExe "$out/libexec/vfide-core"}
ln -s $out/libexec/verifast-core $out/bin/verifast
ln -s $out/libexec/vfide-core $out/bin/vfide
'';
phases = "unpackPhase installPhase";
meta = {
description = "Verification for C and Java programs via separation logic";
homepage = "http://people.cs.kuleuven.be/~bart.jacobs/verifast/";
license = stdenv.lib.licenses.msrla;
platforms = [ "i686-linux" ];
platforms = [ "x86_64-linux" ];
maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
};
}

View File

@ -1,15 +1,15 @@
{ cabal, ansiTerminal, cmdargs, filepath, HTTP, network
{ cabal, ansiTerminal, filepath, HTTP, network, optparseApplicative
, stringsearch, terminalSize, time, zlib
}:
cabal.mkDerivation (self: {
pname = "sloane";
version = "1.7.1";
sha256 = "0d6k33rhp1ixrwdfwy31m39kbk8z81biwzwmkp01fvpgwm96p3va";
version = "1.8";
sha256 = "0c30slsswfqwzi39hk6jraxz1y1a2yn8g8nyjvlnggwajx2rlm6p";
isLibrary = false;
isExecutable = true;
buildDepends = [
ansiTerminal cmdargs filepath HTTP network stringsearch
ansiTerminal filepath HTTP network optparseApplicative stringsearch
terminalSize time zlib
];
postInstall = ''

View File

@ -1,50 +1,41 @@
{ cabal, aeson, async, blazeBuilder, bloomfilter, bup, byteable
, caseInsensitive, clientsession, cryptoApi, cryptohash, curl
, dataDefault, dataenc, DAV, dbus, dlist, dns, editDistance
, extensibleExceptions, fdoNotify, feed, filepath, git, gnupg1
, gnutls, hamlet, hinotify, hS3, hslogger, HTTP, httpClient
, exceptions, extensibleExceptions, fdoNotify, feed, filepath, git
, gnupg1, gnutls, hamlet, hinotify, hS3, hslogger, HTTP, httpClient
, httpConduit, httpTypes, IfElse, json, liftedBase, lsof, MissingH
, MonadCatchIOTransformers, monadControl, mtl, network
, networkConduit, networkInfo, networkMulticast
, networkProtocolXmpp, openssh, optparseApplicative, perl
, QuickCheck, random, regexTdfa, rsync, SafeSemaphore, securemem
, SHA, shakespeare, stm, tasty, tastyHunit, tastyQuickcheck
, tastyRerun, text, time, transformers, unixCompat, utf8String
, uuid, wai, waiLogger, warp, warpTls, which, xmlTypes, yesod
, yesodCore, yesodDefault, yesodForm, yesodStatic
, monadControl, mtl, network, networkConduit, networkInfo
, networkMulticast, networkProtocolXmpp, openssh
, optparseApplicative, perl, QuickCheck, random, regexTdfa, rsync
, SafeSemaphore, securemem, SHA, shakespeare, stm, tasty
, tastyHunit, tastyQuickcheck, tastyRerun, text, time, transformers
, unixCompat, utf8String, uuid, wai, waiLogger, warp, warpTls
, which, xmlTypes, yesod, yesodCore, yesodDefault, yesodForm
, yesodStatic, fsnotify
}:
cabal.mkDerivation (self: {
pname = "git-annex";
version = "5.20140517";
sha256 = "150xf6664rfdljswc270m2pqvia4sywph4rrrbky6izy6a0vq680";
version = "5.20140606";
sha256 = "1b9hslkdv82lf8njwzy51yj8dgg2wn7g08wy73lk7pnddfh8qjpy";
isLibrary = false;
isExecutable = true;
buildDepends = [
aeson async blazeBuilder bloomfilter byteable caseInsensitive
clientsession cryptoApi cryptohash dataDefault dataenc DAV dbus
dlist dns editDistance extensibleExceptions fdoNotify feed filepath
gnutls hamlet hinotify hS3 hslogger HTTP httpClient httpConduit
httpTypes IfElse json liftedBase MissingH MonadCatchIOTransformers
monadControl mtl network networkConduit networkInfo
networkMulticast networkProtocolXmpp optparseApplicative QuickCheck
random regexTdfa SafeSemaphore securemem SHA shakespeare stm tasty
tastyHunit tastyQuickcheck tastyRerun text time transformers
unixCompat utf8String uuid wai waiLogger warp warpTls xmlTypes
yesod yesodCore yesodDefault yesodForm yesodStatic
];
clientsession cryptoApi cryptohash dataDefault dataenc DAV
dlist dns editDistance exceptions extensibleExceptions
feed filepath gnutls hamlet hS3 hslogger HTTP httpClient
httpConduit httpTypes IfElse json liftedBase MissingH monadControl
mtl network networkConduit networkInfo networkMulticast
networkProtocolXmpp optparseApplicative QuickCheck random regexTdfa
SafeSemaphore securemem SHA shakespeare stm tasty tastyHunit
tastyQuickcheck tastyRerun text time transformers unixCompat
utf8String uuid wai waiLogger warp warpTls xmlTypes yesod yesodCore
yesodDefault yesodForm yesodStatic
] ++ (if !self.stdenv.isDarwin
then [ dbus fdoNotify hinotify ] else [ fsnotify ]);
buildTools = [ bup curl git gnupg1 lsof openssh perl rsync which ];
configureFlags = "-fS3
-fWebDAV
-fInotify
-fDbus
-fAssistant
-fWebapp
-fPairing
-fXMPP
-fDNS
-fProduction
-fTDFA";
configureFlags = "-fAssistant -fProduction";
preConfigure = ''
export HOME="$NIX_BUILD_TOP/tmp"
mkdir "$HOME"

View File

@ -1,8 +1,10 @@
{ stdenv, fetchurl, boost, zlib, botan, libidn
, lua, pcre, sqlite, perl, pkgconfig, expect }:
, lua, pcre, sqlite, perl, pkgconfig, expect
, bzip2, gmp, openssl
}:
let
version = "1.0";
version = "1.1";
perlVersion = (builtins.parseDrvName perl.name).version;
in
@ -13,12 +15,13 @@ stdenv.mkDerivation rec {
src = fetchurl {
url = "http://monotone.ca/downloads/${version}/monotone-${version}.tar.bz2";
sha256 = "5c530bc4652b2c08b5291659f0c130618a14780f075f981e947952dcaefc31dc";
sha256 = "124cwgi2q86hagslbk5idxbs9j896rfjzryhr6z63r6l485gcp7r";
};
patches = [ ./glibc-file-handle.patch ];
patches = [ ];
buildInputs = [ boost zlib botan libidn lua pcre sqlite pkgconfig expect ];
buildInputs = [ boost zlib botan libidn lua pcre sqlite pkgconfig expect
openssl gmp bzip2 ];
postInstall = ''
mkdir -p $out/share/${name}

View File

@ -0,0 +1,8 @@
url http://www.monotone.ca/downloads.php
do_overwrite(){
ensure_version
ensure_hash
set_var_value version $CURRENT_VERSION
set_var_value sha256 $CURRENT_HASH
}

View File

@ -1,166 +0,0 @@
Revision: da62cad10eda55aa233ac124273f3db4f541137a
Parent: 65bcb8cf8b32f68a5b48629b328f6d65979e58df
Author: Thomas Moschny <thomas.moschny@gmx.de>
Date: 07.05.2011 13:32:06
Branch: net.venge.monotone
Changelog:
* src/rcs_file.cc: Rename struct "file_handle" to "rcs_file_handle"
to avoid a name clash with a struct of same name defined by newer
glibc's "fcntl.h". For aesthetic reasons, also rename struct
"file_source".
References:
https://code.monotone.ca/p/monotone/source/commit/da62cad10eda55aa233ac124273f3db4f541137a/
https://bugs.gentoo.org/396651
============================================================
--- a/src/rcs_file.cc 885b3fbe7b6cfed78816f0e57cd71d44616213c6
+++ b/src/rcs_file.cc 03cf68912a4a708545ebce3d415c0e970ddead0b
@@ -42,12 +42,12 @@ struct
#ifdef HAVE_MMAP
struct
-file_handle
+rcs_file_handle
{
string const & filename;
off_t length;
int fd;
- file_handle(string const & fn) :
+ rcs_file_handle(string const & fn) :
filename(fn),
length(0),
fd(-1)
@@ -60,13 +60,13 @@ file_handle
if (fd == -1)
throw oops("open of " + filename + " failed");
}
- ~file_handle()
+ ~rcs_file_handle()
{
if (close(fd) == -1)
throw oops("close of " + filename + " failed");
}
};
-struct file_source
+struct rcs_file_source
{
string const & filename;
int fd;
@@ -91,7 +91,7 @@ struct file_source
++pos;
return good();
}
- file_source(string const & fn,
+ rcs_file_source(string const & fn,
int f,
off_t len) :
filename(fn),
@@ -104,7 +104,7 @@ struct file_source
if (mapping == MAP_FAILED)
throw oops("mmap of " + filename + " failed");
}
- ~file_source()
+ ~rcs_file_source()
{
if (munmap(mapping, length) == -1)
throw oops("munmapping " + filename + " failed, after reading RCS file");
@@ -112,12 +112,12 @@ struct
};
#elif defined(WIN32)
struct
-file_handle
+rcs_file_handle
{
string const & filename;
off_t length;
HANDLE fd;
- file_handle(string const & fn) :
+ rcs_file_handle(string const & fn) :
filename(fn),
length(0),
fd(NULL)
@@ -134,7 +134,7 @@ file_handle
if (fd == NULL)
throw oops("open of " + filename + " failed");
}
- ~file_handle()
+ ~rcs_file_handle()
{
if (CloseHandle(fd)==0)
throw oops("close of " + filename + " failed");
@@ -142,7 +142,7 @@ struct
};
struct
-file_source
+rcs_file_source
{
string const & filename;
HANDLE fd,map;
@@ -167,7 +167,7 @@ file_source
++pos;
return good();
}
- file_source(string const & fn,
+ rcs_file_source(string const & fn,
HANDLE f,
off_t len) :
filename(fn),
@@ -183,7 +183,7 @@ file_source
if (mapping==NULL)
throw oops("MapViewOfFile of " + filename + " failed");
}
- ~file_source()
+ ~rcs_file_source()
{
if (UnmapViewOfFile(mapping)==0)
throw oops("UnmapViewOfFile of " + filename + " failed");
@@ -193,7 +193,7 @@ file_source
};
#else
// no mmap at all
-typedef istream file_source;
+typedef istream rcs_file_source;
#endif
typedef enum
@@ -220,7 +220,7 @@ static token_type
}
static token_type
-get_token(file_source & ist,
+get_token(rcs_file_source & ist,
string & str,
size_t & line,
size_t & col)
@@ -303,14 +303,14 @@ struct parser
struct parser
{
- file_source & ist;
+ rcs_file_source & ist;
rcs_file & r;
string token;
token_type ttype;
size_t line, col;
- parser(file_source & s,
+ parser(rcs_file_source & s,
rcs_file & r)
: ist(s), r(r), line(1), col(1)
{}
@@ -489,8 +489,8 @@ parse_rcs_file(string const & filename,
parse_rcs_file(string const & filename, rcs_file & r)
{
#if defined(HAVE_MMAP) || defined(WIN32)
- file_handle handle(filename);
- file_source ifs(filename, handle.fd, handle.length);
+ rcs_file_handle handle(filename);
+ rcs_file_source ifs(filename, handle.fd, handle.length);
#else
ifstream ifs(filename.c_str());
ifs.unsetf(ios_base::skipws);

View File

@ -34,11 +34,11 @@ assert vdpauSupport -> libvdpau != null && ffmpeg.vdpauSupport;
assert pulseSupport -> pulseaudio != null;
stdenv.mkDerivation rec {
name = "xbmc-13.0";
name = "xbmc-13.1";
src = fetchurl {
url = "https://github.com/xbmc/xbmc/archive/13.0-Gotham.tar.gz";
sha256 = "096hin8qp1864ypyw9xysy13niwf79bgfgivxi7w7mh2dagn0mjx";
url = "https://github.com/xbmc/xbmc/archive/13.1-Gotham.tar.gz";
sha256 = "0y56c5csfp8xhk088g47m3bzrri73z868yfx6b04gnrdmr760jrl";
};
buildInputs = [

View File

@ -52,6 +52,8 @@ if test -z "$finalPath"; then
# Perform the checkout.
bzr -Ossl.cert_reqs=none export $revarg --format=dir "$tmpFile" "$url"
echo "bzr revision is $(bzr revno $revarg "$url")"
# Compute the hash.
hash=$(nix-hash --type $hashType $hashFormat $tmpFile)
if ! test -n "$QUIET"; then echo "hash is $hash" >&2; fi

View File

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

View File

@ -51,6 +51,7 @@ if test -z "$finalPath"; then
hg archive -q -y -r "$rev" --cwd $tmpClone $tmpArchive
rm -f $tmpArchive/.hg_archival.txt
echo "hg revision is $(cd $tmpClone; hg id -r "$rev" -i)"
# Compute the hash.
hash=$(nix-hash --type $hashType $hashFormat $tmpArchive)

View File

@ -56,6 +56,7 @@ if test -z "$finalPath"; then
fi
echo p | svn "$command" --quiet -r "$rev" "$url" "$tmpFile" >&2
echo "svn revision is $(svn info -r "$rev" "$url" | grep "Revision: " | cut -d' ' -f2)"
# Compute the hash.
hash=$(nix-hash --type $hashType $hashFormat $tmpFile)

View File

@ -0,0 +1,56 @@
preFixupPhases+=" scatter_files"
preDistPhases+=" propagate_bin_input"
SCATTER_BIN_DEFAULT=${SCATTER_BIN_DEFAULT:-"/lib/*.so* /bin/*"}
SCATTER_DOC_DEFAULT=${SCATTER_DOC_DEFAULT:-"/share/man/* /share/doc/*"}
scatter_files() {
save_nullglob=$(shopt -p nullglob)
for o in $outputs; do
[[ "$o" == "out" ]] && continue
v=files_${o}
#if files_'output' isn't set in derivative, use defualts for some
[[ ${!v} ]] || {
case $o in
bin)
v=SCATTER_BIN_DEFAULT
;;
doc)
v=SCATTER_DOC_DEFAULT
;;
*)
continue
;;
esac
}
# prepend each path with $out
paths=$out${!v// \// $out/}
shopt -s nullglob
for f in $paths; do
shopt -u nullglob
dist=${!o}${f#$out}
mkdir -p $(dirname $dist)
cp -pr $f $dist
# remove source, not forgetting to clean empty dirs
rm -r $f
rmdir --ignore-fail-on-non-empty $(dirname $f)
done
find ${!o} -type f -exec $SHELL -c 'patchelf --set-rpath $(patchelf --print-rpath {} 2>/dev/null):'${!o}'/lib {} 2>/dev/null && patchelf --shrink-rpath {}' \;
done
eval $save_nullglob
}
propagate_bin_input() {
if [[ -n ${bin:-} ]]; then
mkdir -p $out/nix-support
echo $bin >> $out/nix-support/propagated-native-build-inputs
fi
if [[ -n ${bin:-} && -n ${doc:-} ]]; then
mkdir -p $bin/nix-support
echo $doc >> $bin/nix-support/propagated-user-env-packages
fi
}

View File

@ -246,6 +246,12 @@ do_overwrite () {
mv "$1.new.tmp" "$1"
}
do_overwrite_just_version () {
ensure_hash
set_var_value version $CURRENT_VERSION
set_var_value sha256 $CURRENT_HASH
}
process_config () {
CONFIG_DIR="$(directory_of "$1")"
CONFIG_NAME="$(basename "$1")"

View File

@ -106,7 +106,7 @@ rec {
gucharmap = callPackage ./core/gucharmap { };
gvfs = pkgs.gvfs.override { gnome = pkgs.gnome3; };
gvfs = pkgs.gvfs.override { gnome = pkgs.gnome3; lightWeight = false; };
eog = callPackage ./core/eog { };

View File

@ -116,7 +116,7 @@ rec {
gucharmap = callPackage ./core/gucharmap { };
gvfs = pkgs.gvfs.override { gnome = gnome3; };
gvfs = pkgs.gvfs.override { gnome = gnome3; lightWeight = false; };
eog = callPackage ./core/eog { };

View File

@ -1,15 +1,15 @@
{ stdenv, fetchurl, coq, ocaml, gcc }:
{ stdenv, fetchurl, coq, ocaml, ocamlPackages, gcc }:
stdenv.mkDerivation rec {
name = "compcert-${version}";
version = "2.2";
version = "2.3pl2";
src = fetchurl {
url = "http://compcert.inria.fr/release/${name}.tgz";
sha256 = "0zhqx9mixlsycckl6wq6yrd795byj1jz7m4njcgfv29cx33j1nrk";
sha256 = "1cq4my646ll1mszs5mbzwk4vp8l8qnsc96fpcv2pl35aw5i6jqm8";
};
buildInputs = [ coq ocaml ];
buildInputs = [ coq ocaml ocamlPackages.menhir ];
enableParallelBuilding = true;
configurePhase = "./configure -prefix $out -toolprefix ${gcc}/bin/ ia32-linux";

View File

@ -49,6 +49,7 @@ stdenv.mkDerivation rec {
installPhase = ''
mkdir $out $sdk
perl ./install-linux.pl --prefix="$out"
rm $out/tools/CUDA_Occupancy_Calculator.xls
perl ./install-sdk-linux.pl --prefix="$sdk" --cudaprefix="$out"
'';

View File

@ -1,12 +1,12 @@
{ stdenv, fetchurl, ghc, perl, gmp, ncurses, happy, alex }:
stdenv.mkDerivation rec {
version = "7.9.20140430";
version = "7.9.20140608";
name = "ghc-${version}";
src = fetchurl {
url = "http://deb.haskell.org/dailies/2014-05-01/ghc_7.9.20140430.orig.tar.bz2";
sha256 = "072c1d71idi7jw711icn1wz4q64laasvb0ii8xvg5mbhi9szbwk4";
url = "http://deb.haskell.org/dailies/2014-06-08/ghc_${version}.orig.tar.bz2";
sha256 = "0x3hgh4zfns2m6bbq9xwwlafav0a29azl0xh8549za256clz97w1";
};
buildInputs = [ ghc perl gmp ncurses happy alex ];

View File

@ -1,30 +1,28 @@
{ stdenv, fetchsvn, ocaml, zlib, neko }:
{ stdenv, fetchgit, ocaml, zlib, neko }:
stdenv.mkDerivation {
name = "haxe-3.00";
name = "haxe-3.1.3";
buildInputs = [ocaml zlib neko];
src = fetchsvn {
url = "http://haxe.googlecode.com/svn/trunk";
sha256 = "0hg8qailhgrcdk7r4k9kmwfl9d9ds0vy0l7wbv5wdrrc34qzifm4";
rev = 6706;
src = fetchgit {
url = "https://github.com/HaxeFoundation/haxe.git";
sha256 = "1p4yja6flv2r04q9lcrjxia3f3fsmhi3d88s0lz0nf0r4m61bjz0";
fetchSubmodules = true;
# Tag 3.1.3
rev = "7be30670b2f1f9b6082499c8fb9e23c0a6df6c28";
};
prePatch = ''
sed -i -e 's|com.class_path <- \[|&"'"$out/lib/haxe/std/"'";|' main.ml
'';
postBuild = ''
find std/tools -name '*.n' -delete
rm -f std/tools/haxedoc/haxedoc std/tools/haxelib/haxelib
'';
buildFlags = [ "all" "tools" ];
installPhase = ''
install -vd "$out/bin" "$out/lib/haxe/std"
install -vt "$out/bin" haxe haxelib haxedoc
install -vt "$out/bin" haxe haxelib
cp -vr std "$out/lib/haxe"
'';

View File

@ -0,0 +1,59 @@
{ stdenv, fetchgit, cmake, boost, libunwind, mariadb, libmemcached, pcre
, libevent, gd, curl, libxml2, icu, flex, bison, openssl, zlib, php, re2c
, expat, libcap, oniguruma, libdwarf, libmcrypt, tbb, gperftools, glog
, bzip2, openldap, readline, libelf, uwimap, binutils, cyrus_sasl, pam, libpng
, libxslt, ocaml
}:
stdenv.mkDerivation rec {
name = "hhvm-${version}";
version = "3.1.0";
src = fetchgit {
url = "https://github.com/facebook/hhvm.git";
rev = "71ecbd8fb5e94b2a008387a2b5e9a8df5c6f5c7b";
sha256 = "1zv3k3bxahwyna2jgicwxm9lxs11jddpc9v41488rmzvfhdmzzkn";
fetchSubmodules = true;
};
buildInputs =
[ cmake boost libunwind mariadb libmemcached pcre libevent gd curl
libxml2 icu flex bison openssl zlib php expat libcap oniguruma
libdwarf libmcrypt tbb gperftools bzip2 openldap readline
libelf uwimap binutils cyrus_sasl pam glog libpng libxslt ocaml
];
enableParallelBuilding = true;
dontUseCmakeBuildDir = true;
dontUseCmakeConfigure = true;
NIX_LDFLAGS = "-lpam -L${pam}/lib";
USE_HHVM=1;
MYSQL_INCLUDE_DIR="${mariadb}/include/mysql";
MYSQL_DIR=mariadb;
patchPhase = ''
substituteInPlace hphp/util/generate-buildinfo.sh \
--replace /bin/bash ${stdenv.shell}
'';
installPhase = ''
mkdir -p $out/bin $out/lib
mv hphp/hhvm/hhvm $out/bin
mv hphp/hack/bin/hh_server $out/bin
mv hphp/hack/bin/hh_client $out/bin
mv hphp/hack/hhi $out/lib/hack-hhi
cat > $out/bin/hhvm-hhi-copy <<EOF
#!${stdenv.shell}
cp -R $out/lib/hack-hhi \$1
EOF
chmod +x $out/bin/hhvm-hhi-copy
'';
meta = {
description = "High-performance JIT compiler for PHP/Hack";
homepage = "http://hhvm.com";
license = "PHP/Zend";
platforms = [ "x86_64-linux" ];
maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
};
}

View File

@ -1,23 +1,25 @@
{ cabal, annotatedWlPprint, ansiTerminal, ansiWlPprint, binary
, boehmgc, Cabal, cheapskate, deepseq, filepath, gmp, happy
, haskeline, languageJava, lens, libffi, llvmGeneral
, llvmGeneralPure, mtl, network, parsers, split, text, time
, transformers, trifecta, unorderedContainers, utf8String, vector
, vectorBinaryInstances, xml, zlib
, blazeHtml, blazeMarkup, boehmgc, Cabal, cheapskate, deepseq
, filepath, gmp, happy, haskeline, languageJava, lens, libffi
, llvmGeneral, llvmGeneralPure, mtl, network, optparseApplicative
, parsers, split, text, time, transformers, trifecta
, unorderedContainers, utf8String, vector, vectorBinaryInstances
, xml, zlib
}:
cabal.mkDerivation (self: {
pname = "idris";
version = "0.9.12";
sha256 = "151h9qkx7yw24q0b60r78hki1y8m6sxmfars7wywnbzk3kalqb6x";
version = "0.9.13.1";
sha256 = "09528c2zxriw3l8c7dd2k5db9j1qmqhs6nbqwc7dkskzqv9snz7n";
isLibrary = true;
isExecutable = true;
buildDepends = [
annotatedWlPprint ansiTerminal ansiWlPprint binary Cabal cheapskate
deepseq filepath haskeline languageJava lens libffi llvmGeneral
llvmGeneralPure mtl network parsers split text time transformers
trifecta unorderedContainers utf8String vector
vectorBinaryInstances xml zlib
annotatedWlPprint ansiTerminal ansiWlPprint binary blazeHtml
blazeMarkup Cabal cheapskate deepseq filepath haskeline
languageJava lens libffi llvmGeneral llvmGeneralPure mtl network
optparseApplicative parsers split text time transformers trifecta
unorderedContainers utf8String vector vectorBinaryInstances xml
zlib
];
buildTools = [ happy ];
extraLibraries = [ boehmgc gmp ];

View File

@ -32,6 +32,5 @@ stdenv.mkDerivation rec {
(textClosure localDefs [allBuild doForceShare doPropagate]);
meta = {
description = "Qi - next generation on top of Common Lisp";
inherit src;
};
}

View File

@ -1,13 +1,13 @@
{ stdenv, fetchurl, unzip, ant, jdk, makeWrapper }:
let version = "1.5.1"; in
let version = "1.6.0"; in
stdenv.mkDerivation {
name = "clojure-${version}";
src = fetchurl {
url = "http://repo1.maven.org/maven2/org/clojure/clojure/${version}/clojure-${version}.zip";
sha256 = "1qgiji6ddvv40khp3qb3xfz09g7p4nnsh3pywqglb9f16v534yzy";
sha256 = "0yv67gackrzlwn9f8cnpw14y2hwspklxhy1450rl71vdrqjahlwq";
};
buildInputs = [ unzip ant jdk makeWrapper ];
@ -43,5 +43,6 @@ stdenv.mkDerivation {
offers a software transactional memory system and reactive Agent
system that ensure clean, correct, multithreaded designs.
'';
maintainers = with stdenv.lib.maintainers; [ the-kenny ];
};
}

View File

@ -1,14 +1,14 @@
{ stdenv, fetchurl, erlang, rebar, makeWrapper, coreutils }:
let
version = "0.13.2";
version = "0.13.3";
in
stdenv.mkDerivation {
name = "elixir-${version}";
src = fetchurl {
url = "https://github.com/elixir-lang/elixir/archive/v${version}.tar.gz";
sha256 = "13mflf35lj2vbv32s5n982x7k5k55dsn9mx9rf3vkqgfsy7zx4ds";
sha256 = "17nb8qfyjc67g62x10l2gq0z1501xa4wry906br0w2rm8bf4j8rf";
};
buildInputs = [ erlang rebar makeWrapper ];

View File

@ -8,11 +8,11 @@ with stdenv.lib;
stdenv.mkDerivation rec {
name = "erlang-" + version;
version = "R16B02";
version = "R16B03-1";
src = fetchurl {
url = "http://www.erlang.org/download/otp_src_${version}.tar.gz";
sha256 = "119gnf3jfd98hpxxqs8vnzrc81myv07y302b99alalqqz0fsvf3a";
sha256 = "1rvyfh22g1fir1i4xn7v2md868wcmhajwhfsq97v7kn5kd2m7khp";
};
buildInputs =

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