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

This commit is contained in:
Eelco Dolstra 2014-09-18 22:28:35 +02:00
commit 91ec6e0d90
340 changed files with 5242 additions and 1514 deletions

View File

@ -233,7 +233,7 @@ twisted = buildPythonPackage {
</section>
<section xml:id="ssec-language-java"><title>Ruby</title>
<section xml:id="ssec-language-ruby"><title>Ruby</title>
<para>For example, to package yajl-ruby package, use gem-nix:</para>
<screen>
@ -244,6 +244,11 @@ twisted = buildPythonPackage {
</section>
<section xml:id="ssec-language-go"><title>Go</title>
<para>To extract dependency information from a Go package in automated way use <link xlink:href="https://github.com/cstrahan/go2nix">go2nix</link>.</para>
</section>
<section xml:id="ssec-language-java"><title>Java</title>
<para>Ant-based Java packages are typically built from source as follows:

View File

@ -209,6 +209,10 @@ in rec {
assert list != []; elemAt list (dec (length list));
# Return all elements but the last
init = list: assert list != []; take (length list - 1) list;
# Zip two lists together.
zipTwoLists = xs: ys:
let

View File

@ -50,6 +50,7 @@
ertes = "Ertugrul Söylemez <ertesx@gmx.de>";
falsifian = "James Cook <james.cook@utoronto.ca>";
flosse = "Markus Kohlhase <mail@markus-kohlhase.de>";
ftrvxmtrx = "Siarhei Zirukin <ftrvxmtrx@gmail.com>";
funfunctor = "Edward O'Callaghan <eocallaghan@alterapraxis.com>";
fuuzetsu = "Mateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk>";
gal_bolle = "Florent Becker <florent.becker@ens-lyon.org>";
@ -67,6 +68,7 @@
joelteon = "Joel Taylor <me@joelt.io>";
jwiegley = "John Wiegley <johnw@newartisans.com>";
kkallio = "Karn Kallio <tierpluspluslists@gmail.com>";
koral = "Koral <koral@mailoo.org>";
ktosiek = "Tomasz Kontusz <tomasz.kontusz@gmail.com>";
lethalman = "Luca Bruno <lucabru@src.gnome.org>";
lhvwb = "Nathaniel Baxter <nathaniel.baxter@gmail.com>";
@ -101,10 +103,12 @@
relrod = "Ricky Elrod <ricky@elrod.me>";
rickynils = "Rickard Nilsson <rickynils@gmail.com>";
rob = "Rob Vermaas <rob.vermaas@gmail.com>";
robberer = "Longrin Wischnewski <robberer@freakmail.de>";
roconnor = "Russell O'Connor <roconnor@theorem.ca>";
roelof = "Roelof Wobben <rwobben@hotmail.com>";
romildo = "José Romildo Malaquias <malaquias@gmail.com>";
rszibele = "Richard Szibele <richard_szibele@hotmail.com>";
rycee = "Robert Helgesson <robert@rycee.net>";
sander = "Sander van der Burg <s.vanderburg@tudelft.nl>";
shlevy = "Shea Levy <shea@shealevy.com>";
simons = "Peter Simons <simons@cryp.to>";
@ -116,6 +120,7 @@
the-kenny = "Moritz Ulrich <moritz@tarn-vedra.de>";
thoughtpolice = "Austin Seipp <aseipp@pobox.com>";
tomberek = "Thomas Bereknyei <tomberek@gmail.com>";
tstrobel = "Thomas Strobel <ts468@cam.ac.uk>";
ttuegel = "Thomas Tuegel <ttuegel@gmail.com>";
tv = "Tomislav Viljetić <tv@shackspace.de>";
urkud = "Yury G. Kudryashov <urkud+nix@ya.ru>";

View File

@ -71,8 +71,7 @@ in {
};
configFile = mkOption {
type = types.uniq types.path;
default = "${cfg.package}/etc/pulse/default.pa";
type = types.path;
description = ''
The path to the configuration the PulseAudio server
should use. By default, the "default.pa" configuration
@ -112,6 +111,8 @@ in {
target = "pulse/client.conf";
source = clientConf;
};
hardware.pulseaudio.configFile = mkDefault "${cfg.package}/etc/pulse/default.pa";
}
(mkIf cfg.enable {

View File

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

View File

@ -85,7 +85,8 @@
./services/amqp/activemq/default.nix
./services/amqp/rabbitmq.nix
./services/audio/alsa.nix
./services/audio/fuppes.nix
# Disabled as fuppes it does no longer builds.
# ./services/audio/fuppes.nix
./services/audio/mpd.nix
./services/audio/mopidy.nix
./services/backup/almir.nix
@ -178,6 +179,7 @@
./services/misc/uhub.nix
./services/misc/zookeeper.nix
./services/monitoring/apcupsd.nix
./services/monitoring/collectd.nix
./services/monitoring/dd-agent.nix
./services/monitoring/graphite.nix
./services/monitoring/monit.nix

View File

@ -89,6 +89,8 @@ in {
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
path = [ pkgs.rabbitmq_server ];
environment = {
RABBITMQ_MNESIA_BASE = "${cfg.dataDir}/mnesia";
RABBITMQ_NODE_IP_ADDRESS = cfg.listenAddress;
@ -119,6 +121,8 @@ in {
mkdir -p /var/log/rabbitmq && chmod 0700 /var/log/rabbitmq
chown rabbitmq:rabbitmq /var/log/rabbitmq
'';
postStart = mkBefore "until rabbitmqctl status; do sleep 1; done";
};
};

View File

@ -224,6 +224,11 @@ in
mkdir -m 0770 -p ${cfg.dataDir}
if [ "$(id -u)" = 0 ]; then chown -R ${cfg.user}:${cfg.group} ${cfg.dataDir}; fi
'';
postStart = mkBefore ''
until ${pkgs.curl}/bin/curl -s -o /dev/null 'http://${cfg.bindAddress}:${toString cfg.apiPort}/'; do
sleep 1;
done
'';
};
users.extraUsers = optional (cfg.user == "influxdb") {

View File

@ -15,9 +15,11 @@ let
bind_ip = ${cfg.bind_ip}
${optionalString cfg.quiet "quiet = true"}
dbpath = ${cfg.dbpath}
logpath = ${cfg.logpath}
logappend = ${b2s cfg.logappend}
syslog = true
fork = true
pidfilepath = ${cfg.pidFile}
${optionalString (cfg.replSetName != "") "replSet = ${cfg.replSetName}"}
${cfg.extraConfig}
'';
in
@ -65,14 +67,9 @@ in
description = "Location where MongoDB stores its files";
};
logpath = mkOption {
default = "/var/log/mongodb/mongod.log";
description = "Location where MongoDB stores its logfile";
};
logappend = mkOption {
default = true;
description = "Append logfile instead over overwriting";
pidFile = mkOption {
default = "/var/run/mongodb.pid";
description = "Location of MongoDB pid file";
};
replSetName = mkOption {
@ -82,6 +79,14 @@ in
Otherwise, leave empty to run as single node.
'';
};
extraConfig = mkOption {
default = "";
example = ''
nojournal = true
'';
description = "MongoDB extra configuration";
};
};
};
@ -99,22 +104,6 @@ in
environment.systemPackages = [ mongodb ];
systemd.services.mongodb_init =
{ description = "MongoDB server initialisation";
wantedBy = [ "mongodb.service" ];
before = [ "mongodb.service" ];
serviceConfig.Type = "oneshot";
script = ''
if ! test -e ${cfg.dbpath}; then
install -d -m0700 -o ${cfg.user} ${cfg.dbpath}
install -d -m0755 -o ${cfg.user} `dirname ${cfg.logpath}`
fi
'';
};
systemd.services.mongodb =
{ description = "MongoDB server";
@ -124,7 +113,20 @@ in
serviceConfig = {
ExecStart = "${mongodb}/bin/mongod --quiet --config ${mongoCnf}";
User = cfg.user;
PIDFile = cfg.pidFile;
Type = "forking";
TimeoutStartSec=120; # intial creating of journal can take some time
PermissionsStartOnly = true;
};
preStart = ''
if ! test -e ${cfg.dbpath}; then
install -d -m0700 -o ${cfg.user} ${cfg.dbpath}
fi
if ! test -e ${cfg.pidFile}; then
install -D -o ${cfg.user} /dev/null ${cfg.pidFile}
fi
'';
};
};

View File

@ -4,30 +4,34 @@ with lib;
{
options.services.hardware.pommed = {
enable = mkOption {
default = false;
description = ''
Whether to use the pommed tool to handle Apple laptop keyboard hotkeys.
'';
options = {
services.hardware.pommed = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Whether to use the pommed tool to handle Apple laptop keyboard hotkeys.
'';
};
configFile = mkOption {
type = types.path;
description = ''
The path to the <filename>pommed.conf</filename> file.
'';
};
};
configFile = mkOption {
default = "${pkgs.pommed}/etc/pommed.conf";
description = ''
The contents of the pommed.conf file.
'';
};
};
config = mkIf config.services.hardware.pommed.enable {
environment.systemPackages = [ pkgs.polkit ];
environment.etc = [
{ source = config.services.hardware.pommed.configFile;
target = "pommed.conf";
}
];
environment.etc."pommed.conf".source = config.services.hardware.pommed.configFile;
services.hardware.pommed.configFile = "${pkgs.pommed}/etc/pommed.conf";
services.dbus.packages = [ pkgs.pommed ];

View File

@ -18,7 +18,7 @@ let
syslogngOptions = [
"--foreground"
"--module-path=${concatStringsSep ":" (["${pkgs.syslogng}/lib/syslog-ng"] ++ cfg.extraModulePaths)}"
"--module-path=${concatStringsSep ":" (["${cfg.package}/lib/syslog-ng"] ++ cfg.extraModulePaths)}"
"--cfgfile=${syslogngConfig}"
"--control=${ctrlSocket}"
"--persist-file=${persistFile}"
@ -37,6 +37,13 @@ in {
Whether to enable the syslog-ng daemon.
'';
};
package = mkOption {
type = types.package;
default = pkgs.syslogng;
description = ''
The package providing syslog-ng binaries.
'';
};
serviceName = mkOption {
type = types.str;
default = "syslog-ng";
@ -77,7 +84,7 @@ in {
Sockets = "syslog.socket";
StandardOutput = "null";
Restart = "on-failure";
ExecStart = "${pkgs.syslogng}/sbin/syslog-ng ${concatStringsSep " " syslogngOptions}";
ExecStart = "${cfg.package}/sbin/syslog-ng ${concatStringsSep " " syslogngOptions}";
};
};
};

View File

@ -0,0 +1,116 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.services.collectd;
conf = pkgs.writeText "collectd.conf" ''
BaseDir "${cfg.dataDir}"
PIDFile "${cfg.pidFile}"
AutoLoadPlugin ${if cfg.autoLoadPlugin then "true" else "false"}
Hostname ${config.networking.hostName}
LoadPlugin syslog
<Plugin "syslog">
LogLevel "info"
NotifyLevel "OKAY"
</Plugin>
${concatMapStrings (f: ''
Include "${f}"
'') cfg.include}
${cfg.extraConfig}
'';
in {
options.services.collectd = with types; {
enable = mkOption {
default = false;
description = ''
Whether to enable collectd agent.
'';
type = bool;
};
user = mkOption {
default = "collectd";
description = ''
User under which to run collectd.
'';
type = nullOr str;
};
dataDir = mkOption {
default = "/var/lib/collectd";
description = ''
Data directory for collectd agent.
'';
type = path;
};
pidFile = mkOption {
default = "/var/run/collectd.pid";
description = ''
Location of collectd pid file.
'';
type = path;
};
autoLoadPlugin = mkOption {
default = false;
description = ''
Enable plugin autoloading.
'';
type = bool;
};
include = mkOption {
default = [];
description = ''
Additional paths to load config from.
'';
type = listOf str;
};
extraConfig = mkOption {
default = "";
description = ''
Extra configuration for collectd.
'';
type = lines;
};
};
config = mkIf cfg.enable {
systemd.services.collectd = {
description = "Collectd Monitoring Agent";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${pkgs.collectd}/sbin/collectd -C ${conf} -P ${cfg.pidFile}";
Type = "forking";
PIDFile = cfg.pidFile;
User = optional (cfg.user!="root") cfg.user;
PermissionsStartOnly = true;
};
preStart = ''
mkdir -m 0700 -p ${cfg.dataDir}
install -D /dev/null ${cfg.pidFile}
if [ "$(id -u)" = 0 ]; then
chown -R ${cfg.user} ${cfg.dataDir};
chown ${cfg.user} ${cfg.pidFile}
fi
'';
};
users.extraUsers = optional (cfg.user == "collectd") {
name = "collectd";
uid = config.ids.uids.collectd;
};
};
}

View File

@ -8,6 +8,22 @@ let
dataDir = cfg.dataDir;
graphiteApiConfig = pkgs.writeText "graphite-api.yaml" ''
time_zone: ${config.time.timeZone}
search_index: ${dataDir}/index
${optionalString (cfg.api.finders != []) ''finders:''}
${concatMapStringsSep "\n" (f: " - " + f.moduleName) cfg.api.finders}
${optionalString (cfg.api.functions != []) ''functions:''}
${concatMapStringsSep "\n" (f: " - " + f) cfg.api.functions}
${cfg.api.extraConfig}
'';
seyrenConfig = {
SEYREN_URL = cfg.seyren.seyrenUrl;
MONGO_URL = cfg.seyren.mongoUrl;
GRAPHITE_URL = cfg.seyren.graphiteUrl;
} // cfg.seyren.extraConfig;
configDir = pkgs.buildEnv {
name = "graphite-config";
paths = lists.filter (el: el != null) [
@ -65,6 +81,72 @@ in {
};
};
api = {
enable = mkOption {
description = "Whether to enable graphite api.";
default = false;
type = types.uniq types.bool;
};
finders = mkOption {
description = "List of finder plugins load.";
default = [];
example = [ pkgs.python27Packages.graphite_influxdb ];
type = types.listOf types.package;
};
functions = mkOption {
description = "List of functions to load.";
default = [
"graphite_api.functions.SeriesFunctions"
"graphite_api.functions.PieFunctions"
];
type = types.listOf types.str;
};
host = mkOption {
description = "Graphite web service listen address.";
default = "127.0.0.1";
type = types.str;
};
port = mkOption {
description = "Graphite api service port.";
default = 8080;
type = types.int;
};
package = mkOption {
description = "Package to use for graphite api.";
default = pkgs.python27Packages.graphite_api;
type = types.package;
};
extraConfig = mkOption {
description = "Extra configuration for graphite api.";
default = ''
whisper:
directories:
- ${dataDir}/whisper
'';
example = literalExample ''
allowed_origins:
- dashboard.example.com
cheat_times: true
influxdb:
host: localhost
port: 8086
user: influxdb
pass: influxdb
db: metrics
cache:
CACHE_TYPE: 'filesystem'
CACHE_DIR: '/tmp/graphite-api-cache'
'';
type = types.str;
};
};
carbon = {
config = mkOption {
description = "Content of carbon configuration file.";
@ -172,11 +254,65 @@ in {
'';
};
};
seyren = {
enable = mkOption {
description = "Whether to enable seyren service.";
default = false;
type = types.uniq types.bool;
};
port = mkOption {
description = "Seyren listening port.";
default = 8081;
type = types.int;
};
seyrenUrl = mkOption {
default = "http://localhost:${toString cfg.seyren.port}/";
description = "Host where seyren is accessible.";
type = types.str;
};
graphiteUrl = mkOption {
default = "http://${cfg.web.host}:${toString cfg.web.port}";
description = "Host where graphite service runs.";
type = types.str;
};
mongoUrl = mkOption {
default = "mongodb://${config.services.mongodb.bind_ip}:27017/seyren";
description = "Mongodb connection string.";
type = types.str;
};
extraConfig = mkOption {
default = {};
description = ''
Extra seyren configuration. See
<link xlink:href='https://github.com/scobal/seyren#config' />
'';
type = types.attrsOf types.str;
example = literalExample ''
{
GRAPHITE_USERNAME = "user";
GRAPHITE_PASSWORD = "pass";
}
'';
};
};
};
###### implementation
config = mkIf (cfg.carbon.enableAggregator || cfg.carbon.enableCache || cfg.carbon.enableRelay || cfg.web.enable) {
config = mkIf (
cfg.carbon.enableAggregator ||
cfg.carbon.enableCache ||
cfg.carbon.enableRelay ||
cfg.web.enable ||
cfg.api.enable ||
cfg.seyren.enable
) {
systemd.services.carbonCache = {
enable = cfg.carbon.enableCache;
description = "Graphite Data Storage Backend";
@ -189,10 +325,6 @@ in {
Group = "graphite";
PermissionsStartOnly = true;
};
restartTriggers = [
pkgs.pythonPackages.carbon
configDir
];
preStart = ''
mkdir -p ${cfg.dataDir}/whisper
chmod 0700 ${cfg.dataDir}/whisper
@ -211,10 +343,6 @@ in {
User = "graphite";
Group = "graphite";
};
restartTriggers = [
pkgs.pythonPackages.carbon
configDir
];
};
systemd.services.carbonRelay = {
@ -228,10 +356,6 @@ in {
User = "graphite";
Group = "graphite";
};
restartTriggers = [
pkgs.pythonPackages.carbon
configDir
];
};
systemd.services.graphiteWeb = {
@ -243,7 +367,7 @@ in {
environment = {
PYTHONPATH = "${pkgs.python27Packages.graphite_web}/lib/python2.7/site-packages";
DJANGO_SETTINGS_MODULE = "graphite.settings";
GRAPHITE_CONF_DIR = "/etc/graphite/";
GRAPHITE_CONF_DIR = configDir;
GRAPHITE_STORAGE_DIR = dataDir;
};
serviceConfig = {
@ -271,11 +395,64 @@ in {
chown -R graphite:graphite ${cfg.dataDir}
fi
'';
restartTriggers = [
pkgs.python27Packages.graphite_web
];
};
systemd.services.graphiteApi = {
enable = cfg.api.enable;
description = "Graphite Api Interface";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
environment = {
PYTHONPATH =
"${cfg.api.package}/lib/python2.7/site-packages:" +
concatMapStringsSep ":" (f: f + "/lib/python2.7/site-packages") cfg.api.finders;
GRAPHITE_API_CONFIG = graphiteApiConfig;
LD_LIBRARY_PATH = "${pkgs.cairo}/lib";
};
serviceConfig = {
ExecStart = ''
${pkgs.python27Packages.waitress}/bin/waitress-serve \
--host=${cfg.api.host} --port=${toString cfg.api.port} \
graphite_api.app:app
'';
User = "graphite";
Group = "graphite";
PermissionsStartOnly = true;
};
preStart = ''
if ! test -e ${dataDir}/db-created; then
mkdir -p ${dataDir}/cache/
chmod 0700 ${dataDir}/cache/
touch ${dataDir}/db-created
chown -R graphite:graphite ${cfg.dataDir}
fi
'';
};
systemd.services.seyren = {
enable = cfg.seyren.enable;
description = "Graphite Alerting Dashboard";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" "mongodb.service" ];
environment = seyrenConfig;
serviceConfig = {
ExecStart = "${pkgs.seyren}/bin/seyren -httpPort ${toString cfg.seyren.port}";
WorkingDirectory = dataDir;
User = "graphite";
Group = "graphite";
};
preStart = ''
if ! test -e ${dataDir}/db-created; then
mkdir -p ${dataDir}
chown -R graphite:graphite ${dataDir}
fi
'';
};
services.mongodb.enable = mkDefault cfg.seyren.enable;
environment.systemPackages = [
pkgs.pythonPackages.carbon
pkgs.python27Packages.graphite_web

View File

@ -37,6 +37,180 @@ let
}
'';
writeShScript = name: text: let dir = pkgs.writeScriptBin name ''
#! ${pkgs.stdenv.shell} -e
${text}
''; in "${dir}/bin/${name}";
startScript = writeShScript "firewall-start" ''
${helpers}
# Flush the old firewall rules. !!! Ideally, updating the
# firewall would be atomic. Apparently that's possible
# with iptables-restore.
ip46tables -D INPUT -j nixos-fw 2> /dev/null || true
for chain in nixos-fw nixos-fw-accept nixos-fw-log-refuse nixos-fw-refuse FW_REFUSE; do
ip46tables -F "$chain" 2> /dev/null || true
ip46tables -X "$chain" 2> /dev/null || true
done
# The "nixos-fw-accept" chain just accepts packets.
ip46tables -N nixos-fw-accept
ip46tables -A nixos-fw-accept -j ACCEPT
# The "nixos-fw-refuse" chain rejects or drops packets.
ip46tables -N nixos-fw-refuse
${if cfg.rejectPackets then ''
# Send a reset for existing TCP connections that we've
# somehow forgotten about. Send ICMP "port unreachable"
# for everything else.
ip46tables -A nixos-fw-refuse -p tcp ! --syn -j REJECT --reject-with tcp-reset
ip46tables -A nixos-fw-refuse -j REJECT
'' else ''
ip46tables -A nixos-fw-refuse -j DROP
''}
# The "nixos-fw-log-refuse" chain performs logging, then
# jumps to the "nixos-fw-refuse" chain.
ip46tables -N nixos-fw-log-refuse
${optionalString cfg.logRefusedConnections ''
ip46tables -A nixos-fw-log-refuse -p tcp --syn -j LOG --log-level info --log-prefix "rejected connection: "
''}
${optionalString (cfg.logRefusedPackets && !cfg.logRefusedUnicastsOnly) ''
ip46tables -A nixos-fw-log-refuse -m pkttype --pkt-type broadcast \
-j LOG --log-level info --log-prefix "rejected broadcast: "
ip46tables -A nixos-fw-log-refuse -m pkttype --pkt-type multicast \
-j LOG --log-level info --log-prefix "rejected multicast: "
''}
ip46tables -A nixos-fw-log-refuse -m pkttype ! --pkt-type unicast -j nixos-fw-refuse
${optionalString cfg.logRefusedPackets ''
ip46tables -A nixos-fw-log-refuse \
-j LOG --log-level info --log-prefix "rejected packet: "
''}
ip46tables -A nixos-fw-log-refuse -j nixos-fw-refuse
# The "nixos-fw" chain does the actual work.
ip46tables -N nixos-fw
# Perform a reverse-path test to refuse spoofers
# For now, we just drop, as the raw table doesn't have a log-refuse yet
${optionalString (kernelHasRPFilter && cfg.checkReversePath) ''
if ! ip46tables -A PREROUTING -t raw -m rpfilter --invert -j DROP; then
echo "<2>failed to initialise rpfilter support" >&2
fi
''}
# Accept all traffic on the trusted interfaces.
${flip concatMapStrings cfg.trustedInterfaces (iface: ''
ip46tables -A nixos-fw -i ${iface} -j nixos-fw-accept
'')}
# Accept packets from established or related connections.
ip46tables -A nixos-fw -m conntrack --ctstate ESTABLISHED,RELATED -j nixos-fw-accept
# Accept connections to the allowed TCP ports.
${concatMapStrings (port:
''
ip46tables -A nixos-fw -p tcp --dport ${toString port} -j nixos-fw-accept
''
) cfg.allowedTCPPorts
}
# Accept connections to the allowed TCP port ranges.
${concatMapStrings (rangeAttr:
let range = toString rangeAttr.from + ":" + toString rangeAttr.to; in
''
ip46tables -A nixos-fw -p tcp --dport ${range} -j nixos-fw-accept
''
) cfg.allowedTCPPortRanges
}
# Accept packets on the allowed UDP ports.
${concatMapStrings (port:
''
ip46tables -A nixos-fw -p udp --dport ${toString port} -j nixos-fw-accept
''
) cfg.allowedUDPPorts
}
# Accept packets on the allowed UDP port ranges.
${concatMapStrings (rangeAttr:
let range = toString rangeAttr.from + ":" + toString rangeAttr.to; in
''
ip46tables -A nixos-fw -p udp --dport ${range} -j nixos-fw-accept
''
) cfg.allowedUDPPortRanges
}
# Accept IPv4 multicast. Not a big security risk since
# probably nobody is listening anyway.
#iptables -A nixos-fw -d 224.0.0.0/4 -j nixos-fw-accept
# Optionally respond to ICMPv4 pings.
${optionalString cfg.allowPing ''
iptables -w -A nixos-fw -p icmp --icmp-type echo-request ${optionalString (cfg.pingLimit != null)
"-m limit ${cfg.pingLimit} "
}-j nixos-fw-accept
''}
# Accept all ICMPv6 messages except redirects and node
# information queries (type 139). See RFC 4890, section
# 4.4.
${optionalString config.networking.enableIPv6 ''
ip6tables -A nixos-fw -p icmpv6 --icmpv6-type redirect -j DROP
ip6tables -A nixos-fw -p icmpv6 --icmpv6-type 139 -j DROP
ip6tables -A nixos-fw -p icmpv6 -j nixos-fw-accept
''}
${cfg.extraCommands}
# Reject/drop everything else.
ip46tables -A nixos-fw -j nixos-fw-log-refuse
# Enable the firewall.
ip46tables -A INPUT -j nixos-fw
'';
stopScript = writeShScript "firewall-stop" ''
${helpers}
# Clean up in case reload fails
ip46tables -D INPUT -j nixos-drop 2>/dev/null || true
# Clean up after added ruleset
ip46tables -D INPUT -j nixos-fw 2>/dev/null || true
${cfg.extraStopCommands}
'';
reloadScript = writeShScript "firewall-reload" ''
${helpers}
# Create a unique drop rule
ip46tables -D INPUT -j nixos-drop 2>/dev/null || true
ip46tables -F nixos-drop 2>/dev/null || true
ip46tables -X nixos-drop 2>/dev/null || true
ip46tables -N nixos-drop
ip46tables -A nixos-drop -j DROP
# Don't allow traffic to leak out until the script has completed
ip46tables -A INPUT -j nixos-drop
if ${startScript}; then
ip46tables -D INPUT -j nixos-drop 2>/dev/null || true
else
echo "Failed to reload firewall... Stopping"
${stopScript}
exit 1
fi
'';
kernelPackages = config.boot.kernelPackages;
kernelHasRPFilter = kernelPackages.kernel.features.netfilterRPFilter or false;
@ -240,6 +414,18 @@ in
'';
};
networking.firewall.extraStopCommands = mkOption {
type = types.lines;
default = "";
example = "iptables -P INPUT ACCEPT";
description =
''
Additional shell commands executed as part of the firewall
shutdown script. These are executed just after the removal
of the nixos input rule, or if the service enters a failed state.
'';
};
};
@ -264,166 +450,28 @@ in
message = "This kernel does not support disabling conntrack helpers"; }
];
systemd.services.firewall =
{ description = "Firewall";
systemd.services.firewall = {
description = "Firewall";
wantedBy = [ "network.target" ];
after = [ "network-interfaces.target" "systemd-modules-load.service" ];
wantedBy = [ "network.target" ];
after = [ "network-interfaces.target" "systemd-modules-load.service" ];
path = [ pkgs.iptables ];
path = [ pkgs.iptables ];
# FIXME: this module may also try to load kernel modules, but
# containers don't have CAP_SYS_MODULE. So the host system had
# better have all necessary modules already loaded.
unitConfig.ConditionCapability = "CAP_NET_ADMIN";
# FIXME: this module may also try to load kernel modules, but
# containers don't have CAP_SYS_MODULE. So the host system had
# better have all necessary modules already loaded.
unitConfig.ConditionCapability = "CAP_NET_ADMIN";
reloadIfChanged = true;
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
script =
''
${helpers}
# Flush the old firewall rules. !!! Ideally, updating the
# firewall would be atomic. Apparently that's possible
# with iptables-restore.
ip46tables -D INPUT -j nixos-fw 2> /dev/null || true
for chain in nixos-fw nixos-fw-accept nixos-fw-log-refuse nixos-fw-refuse FW_REFUSE; do
ip46tables -F "$chain" 2> /dev/null || true
ip46tables -X "$chain" 2> /dev/null || true
done
# The "nixos-fw-accept" chain just accepts packets.
ip46tables -N nixos-fw-accept
ip46tables -A nixos-fw-accept -j ACCEPT
# The "nixos-fw-refuse" chain rejects or drops packets.
ip46tables -N nixos-fw-refuse
${if cfg.rejectPackets then ''
# Send a reset for existing TCP connections that we've
# somehow forgotten about. Send ICMP "port unreachable"
# for everything else.
ip46tables -A nixos-fw-refuse -p tcp ! --syn -j REJECT --reject-with tcp-reset
ip46tables -A nixos-fw-refuse -j REJECT
'' else ''
ip46tables -A nixos-fw-refuse -j DROP
''}
# The "nixos-fw-log-refuse" chain performs logging, then
# jumps to the "nixos-fw-refuse" chain.
ip46tables -N nixos-fw-log-refuse
${optionalString cfg.logRefusedConnections ''
ip46tables -A nixos-fw-log-refuse -p tcp --syn -j LOG --log-level info --log-prefix "rejected connection: "
''}
${optionalString (cfg.logRefusedPackets && !cfg.logRefusedUnicastsOnly) ''
ip46tables -A nixos-fw-log-refuse -m pkttype --pkt-type broadcast \
-j LOG --log-level info --log-prefix "rejected broadcast: "
ip46tables -A nixos-fw-log-refuse -m pkttype --pkt-type multicast \
-j LOG --log-level info --log-prefix "rejected multicast: "
''}
ip46tables -A nixos-fw-log-refuse -m pkttype ! --pkt-type unicast -j nixos-fw-refuse
${optionalString cfg.logRefusedPackets ''
ip46tables -A nixos-fw-log-refuse \
-j LOG --log-level info --log-prefix "rejected packet: "
''}
ip46tables -A nixos-fw-log-refuse -j nixos-fw-refuse
# The "nixos-fw" chain does the actual work.
ip46tables -N nixos-fw
# Perform a reverse-path test to refuse spoofers
# For now, we just drop, as the raw table doesn't have a log-refuse yet
${optionalString (kernelHasRPFilter && cfg.checkReversePath) ''
if ! ip46tables -A PREROUTING -t raw -m rpfilter --invert -j DROP; then
echo "<2>failed to initialise rpfilter support" >&2
fi
''}
# Accept all traffic on the trusted interfaces.
${flip concatMapStrings cfg.trustedInterfaces (iface: ''
ip46tables -A nixos-fw -i ${iface} -j nixos-fw-accept
'')}
# Accept packets from established or related connections.
ip46tables -A nixos-fw -m conntrack --ctstate ESTABLISHED,RELATED -j nixos-fw-accept
# Accept connections to the allowed TCP ports.
${concatMapStrings (port:
''
ip46tables -A nixos-fw -p tcp --dport ${toString port} -j nixos-fw-accept
''
) cfg.allowedTCPPorts
}
# Accept connections to the allowed TCP port ranges.
${concatMapStrings (rangeAttr:
let range = toString rangeAttr.from + ":" + toString rangeAttr.to; in
''
ip46tables -A nixos-fw -p tcp --dport ${range} -j nixos-fw-accept
''
) cfg.allowedTCPPortRanges
}
# Accept packets on the allowed UDP ports.
${concatMapStrings (port:
''
ip46tables -A nixos-fw -p udp --dport ${toString port} -j nixos-fw-accept
''
) cfg.allowedUDPPorts
}
# Accept packets on the allowed UDP port ranges.
${concatMapStrings (rangeAttr:
let range = toString rangeAttr.from + ":" + toString rangeAttr.to; in
''
ip46tables -A nixos-fw -p udp --dport ${range} -j nixos-fw-accept
''
) cfg.allowedUDPPortRanges
}
# Accept IPv4 multicast. Not a big security risk since
# probably nobody is listening anyway.
#iptables -A nixos-fw -d 224.0.0.0/4 -j nixos-fw-accept
# Optionally respond to ICMPv4 pings.
${optionalString cfg.allowPing ''
iptables -w -A nixos-fw -p icmp --icmp-type echo-request ${optionalString (cfg.pingLimit != null)
"-m limit ${cfg.pingLimit} "
}-j nixos-fw-accept
''}
# Accept all ICMPv6 messages except redirects and node
# information queries (type 139). See RFC 4890, section
# 4.4.
${optionalString config.networking.enableIPv6 ''
ip6tables -A nixos-fw -p icmpv6 --icmpv6-type redirect -j DROP
ip6tables -A nixos-fw -p icmpv6 --icmpv6-type 139 -j DROP
ip6tables -A nixos-fw -p icmpv6 -j nixos-fw-accept
''}
${cfg.extraCommands}
# Reject/drop everything else.
ip46tables -A nixos-fw -j nixos-fw-log-refuse
# Enable the firewall.
ip46tables -A INPUT -j nixos-fw
'';
postStop =
''
${helpers}
ip46tables -D INPUT -j nixos-fw || true
#ip46tables -P INPUT ACCEPT
'';
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = "@${startScript} firewall-start";
ExecReload = "@${reloadScript} firewall-reload";
ExecStop = "@${stopScript} firewall-stop";
};
};
};

View File

@ -12,6 +12,41 @@ let
dest = if cfg.externalIP == null then "-j MASQUERADE" else "-j SNAT --to-source ${cfg.externalIP}";
flushNat = ''
iptables -w -t nat -F PREROUTING
iptables -w -t nat -F POSTROUTING
iptables -w -t nat -X
'';
setupNat = ''
# We can't match on incoming interface in POSTROUTING, so
# mark packets coming from the external interfaces.
${concatMapStrings (iface: ''
iptables -w -t nat -A PREROUTING \
-i '${iface}' -j MARK --set-mark 1
'') cfg.internalInterfaces}
# NAT the marked packets.
${optionalString (cfg.internalInterfaces != []) ''
iptables -w -t nat -A POSTROUTING -m mark --mark 1 \
-o ${cfg.externalInterface} ${dest}
''}
# NAT packets coming from the internal IPs.
${concatMapStrings (range: ''
iptables -w -t nat -A POSTROUTING \
-s '${range}' -o ${cfg.externalInterface} ${dest}
'') cfg.internalIPs}
# NAT from external ports to internal ports.
${concatMapStrings (fwd: ''
iptables -w -t nat -A PREROUTING \
-i ${cfg.externalInterface} -p tcp \
--dport ${builtins.toString fwd.sourcePort} \
-j DNAT --to-destination ${fwd.destination}
'') cfg.forwardPorts}
'';
in
{
@ -109,57 +144,34 @@ in
environment.systemPackages = [ pkgs.iptables ];
boot.kernelModules = [ "nf_nat_ftp" ];
jobs.nat =
{ description = "Network Address Translation";
startOn = "started network-interfaces";
path = [ pkgs.iptables ];
preStart =
''
iptables -w -t nat -F PREROUTING
iptables -w -t nat -F POSTROUTING
iptables -w -t nat -X
# We can't match on incoming interface in POSTROUTING, so
# mark packets coming from the external interfaces.
${concatMapStrings (iface: ''
iptables -w -t nat -A PREROUTING \
-i '${iface}' -j MARK --set-mark 1
'') cfg.internalInterfaces}
# NAT the marked packets.
${optionalString (cfg.internalInterfaces != []) ''
iptables -w -t nat -A POSTROUTING -m mark --mark 1 \
-o ${cfg.externalInterface} ${dest}
''}
# NAT packets coming from the internal IPs.
${concatMapStrings (range: ''
iptables -w -t nat -A POSTROUTING \
-s '${range}' -o ${cfg.externalInterface} ${dest}
'') cfg.internalIPs}
# NAT from external ports to internal ports.
${concatMapStrings (fwd: ''
iptables -w -t nat -A PREROUTING \
-i ${cfg.externalInterface} -p tcp \
--dport ${builtins.toString fwd.sourcePort} \
-j DNAT --to-destination ${fwd.destination}
'') cfg.forwardPorts}
echo 1 > /proc/sys/net/ipv4/ip_forward
'';
postStop =
''
iptables -w -t nat -F PREROUTING
iptables -w -t nat -F POSTROUTING
iptables -w -t nat -X
'';
boot = {
kernelModules = [ "nf_nat_ftp" ];
kernel.sysctl = mkOverride 99 {
"net.ipv4.conf.all.forwarding" = true;
"net.ipv4.conf.default.forwarding" = true;
};
};
networking.firewall = mkIf config.networking.firewall.enable {
extraCommands = mkMerge [ (mkBefore flushNat) setupNat ];
extraStopCommands = flushNat;
};
systemd.services = mkIf (!config.networking.firewall.enable) { nat = {
description = "Network Address Translation";
wantedBy = [ "network.target" ];
after = [ "network-interfaces.target" "systemd-modules-load.service" ];
path = [ pkgs.iptables ];
unitConfig.ConditionCapability = "CAP_NET_ADMIN";
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
};
script = flushNat + setupNat;
postStop = flushNat;
}; };
};
}

View File

@ -305,7 +305,6 @@ in
uid = config.ids.uids.znc;
home = cfg.dataDir;
createHome = true;
createUser = true;
};
users.extraGroups = optional (cfg.user == defaultUser)

View File

@ -135,6 +135,11 @@ in {
rm ${cfg.dataDir}/plugins || true
ln -s ${esPlugins}/plugins ${cfg.dataDir}/plugins
'';
postStart = mkBefore ''
until ${pkgs.curl}/bin/curl -s -o /dev/null ${cfg.host}:${toString cfg.port}; do
sleep 1
done
'';
};
environment.systemPackages = [ pkgs.elasticsearch ];

View File

@ -208,16 +208,12 @@ let
</Directory>
'';
robotsTxt = pkgs.writeText "robots.txt" ''
${# If this is a vhost, the include the entries for the main server as well.
if isMainServer then ""
else concatMapStrings (svc: svc.robotsEntries) mainSubservices}
${concatMapStrings (svc: svc.robotsEntries) subservices}
'';
robotsConf = ''
Alias /robots.txt ${robotsTxt}
'';
robotsTxt =
concatStringsSep "\n" (filter (x: x != "") (
# If this is a vhost, the include the entries for the main server as well.
(if isMainServer then [] else [mainCfg.robotsEntries] ++ map (svc: svc.robotsEntries) mainSubservices)
++ [cfg.robotsEntries]
++ (map (svc: svc.robotsEntries) subservices)));
in ''
ServerName ${serverInfo.canonicalName}
@ -245,7 +241,9 @@ let
CustomLog ${mainCfg.logDir}/access_log-${cfg.hostName} ${cfg.logFormat}
'' else ""}
${robotsConf}
${optionalString (robotsTxt != "") ''
Alias /robots.txt ${pkgs.writeText "robots.txt" robotsTxt}
''}
${if isMainServer || maybeDocumentRoot != null then documentRootConf else ""}

View File

@ -142,9 +142,19 @@ with lib;
type = types.str;
default = "common";
example = "combined";
description = "
description = ''
Log format for Apache's log files. Possible values are: combined, common, referer, agent.
";
'';
};
robotsEntries = mkOption {
type = types.lines;
default = "";
example = "Disallow: /foo/";
description = ''
Specification of pages to be ignored by web crawlers. See <link
xlink:href='http://www.robotstxt.org/'/> for details.
'';
};
}

View File

@ -19,7 +19,7 @@ in
# E.g., if KDE is enabled, it supersedes xterm.
imports = [
./none.nix ./xterm.nix ./xfce.nix ./kde4.nix
./e17.nix ./e18.nix ./gnome3.nix ./xbmc.nix
./e17.nix ./e18.nix ./e19.nix ./gnome3.nix ./xbmc.nix
];
options = {

View File

@ -0,0 +1,94 @@
{ config, pkgs, lib, ... }:
with lib;
let
xcfg = config.services.xserver;
cfg = xcfg.desktopManager.e19;
e19_enlightenment = pkgs.e19.enlightenment.override { set_freqset_setuid = true; };
in
{
options = {
services.xserver.desktopManager.e19.enable = mkOption {
default = false;
example = true;
description = "Enable the E19 desktop environment.";
};
};
config = mkIf (xcfg.enable && cfg.enable) {
environment.systemPackages = [
pkgs.e19.efl pkgs.e19.evas pkgs.e19.emotion pkgs.e19.elementary e19_enlightenment
pkgs.e19.terminology pkgs.e19.econnman
pkgs.xorg.xauth # used by kdesu
pkgs.gtk # To get GTK+'s themes.
pkgs.tango-icon-theme
pkgs.shared_mime_info
pkgs.gnome.gnomeicontheme
pkgs.xorg.xcursorthemes
];
environment.pathsToLink = [ "/etc/enlightenment" "/etc/xdg" "/share/enlightenment" "/share/elementary" "/share/applications" "/share/locale" "/share/icons" "/share/themes" "/share/mime" "/share/desktop-directories" ];
services.xserver.desktopManager.session = [
{ name = "E19";
start = ''
# Set GTK_DATA_PREFIX so that GTK+ can find the themes
export GTK_DATA_PREFIX=${config.system.path}
# find theme engines
export GTK_PATH=${config.system.path}/lib/gtk-3.0:${config.system.path}/lib/gtk-2.0
export XDG_MENU_PREFIX=enlightenment
# make available for D-BUS user services
#export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}:${config.system.path}/share:${pkgs.e19.efl}/share
# Update user dirs as described in http://freedesktop.org/wiki/Software/xdg-user-dirs/
${pkgs.xdg-user-dirs}/bin/xdg-user-dirs-update
${e19_enlightenment}/bin/enlightenment_start
waitPID=$!
'';
}];
security.setuidPrograms = [ "e19_freqset" ];
environment.etc = singleton
{ source = "${pkgs.xkeyboard_config}/etc/X11/xkb";
target = "X11/xkb";
};
fonts.fonts = [ pkgs.dejavu_fonts pkgs.ubuntu_font_family ];
services.udisks2.enable = true;
services.upower.enable = config.powerManagement.enable;
#services.dbus.packages = [ pkgs.efl ]; # dbus-1 folder is not in /etc but in /share, so needs fixing first
systemd.user.services.efreet =
{ enable = true;
description = "org.enlightenment.Efreet";
serviceConfig =
{ ExecStart = "${pkgs.e19.efl}/bin/efreetd";
StandardOutput = "null";
};
};
systemd.user.services.ethumb =
{ enable = true;
description = "org.enlightenment.Ethumb";
serviceConfig =
{ ExecStart = "${pkgs.e19.efl}/bin/ethumbd";
StandardOutput = "null";
};
};
};
}

View File

@ -77,7 +77,7 @@ in {
services.gnome3.tracker.enable = mkDefault true;
hardware.pulseaudio.enable = mkDefault true;
services.telepathy.enable = mkDefault true;
networking.networkmanager.enable = true;
networking.networkmanager.enable = mkDefault true;
services.upower.enable = config.powerManagement.enable;
services.upower.package = gnome3.upower;

View File

@ -169,7 +169,6 @@ in
xserverBin = mkOption {
type = types.path;
default = "${xorg.xorgserver}/bin/X";
description = "Path to the X server used by display managers.";
};
@ -280,4 +279,10 @@ in
};
config = {
services.xserver.displayManager.xserverBin = "${xorg.xorgserver}/bin/X";
};
}

View File

@ -230,6 +230,15 @@ in rec {
'';
};
reload = mkOption {
type = types.lines;
default = "";
description = ''
Shell commands executed when the service's main process
is reloaded.
'';
};
preStop = mkOption {
type = types.lines;
default = "";

View File

@ -246,6 +246,12 @@ let
${config.postStart}
'';
})
(mkIf (config.reload != "")
{ serviceConfig.ExecReload = makeJobScript "${name}-reload" ''
#! ${pkgs.stdenv.shell} -e
${config.reload}
'';
})
(mkIf (config.preStop != "")
{ serviceConfig.ExecStop = makeJobScript "${name}-pre-stop" ''
#! ${pkgs.stdenv.shell} -e

View File

@ -54,12 +54,16 @@ in
###### implementation
config = mkIf (any (fs: fs == "nfs" || fs == "nfs4") config.boot.supportedFilesystems) ({
config = mkIf (any (fs: fs == "nfs" || fs == "nfs4") config.boot.supportedFilesystems) {
services.rpcbind.enable = true;
system.fsPackages = [ pkgs.nfsUtils ];
boot.extraModprobeConfig = mkIf (cfg.lockdPort != null) ''
options lockd nlm_udpport=${toString cfg.lockdPort} nlm_tcpport=${toString cfg.lockdPort}
'';
boot.kernelModules = [ "sunrpc" ];
boot.initrd.kernelModules = mkIf inInitrd [ "nfs" ];
@ -117,9 +121,5 @@ in
serviceConfig.Restart = "always";
};
} // mkIf (cfg.lockdPort != null) {
boot.extraModprobeConfig = ''
options lockd nlm_udpport=${toString cfg.lockdPort} nlm_tcpport=${toString cfg.lockdPort}
'';
});
};
}

View File

@ -129,12 +129,12 @@ in
# config file. But this path can unfortunately be garbage collected
# while still being used by the virtual machine. So update the
# emulator path on each startup to something valid (re-scan $PATH).
for file in /etc/libvirt/qemu/*.xml; do
for file in /etc/libvirt/qemu/*.xml /etc/libvirt/lxc/*.xml; do
test -f "$file" || continue
# get (old) emulator path from config file
emulator=$(grep "^[[:space:]]*<emulator>" "$file" | sed 's,^[[:space:]]*<emulator>\(.*\)</emulator>.*,\1,')
# get a (definitely) working emulator path by re-scanning $PATH
new_emulator=$(command -v $(basename "$emulator"))
new_emulator=$(PATH=${pkgs.libvirt}/libexec:$PATH command -v $(basename "$emulator"))
# write back
sed -i "s,^[[:space:]]*<emulator>.*, <emulator>$new_emulator</emulator> <!-- WARNING: emulator dirname is auto-updated by the nixos libvirtd module -->," "$file"
done

View File

@ -11,7 +11,9 @@ let
forAllSystems = pkgs.lib.genAttrs supportedSystems;
callTest = fn: args: forAllSystems (system: import fn ({ inherit system; } // args));
scrubDrv = drv: let res = { inherit (drv) drvPath outPath type name; outputName = "out"; out = res; }; in res;
callTest = fn: args: forAllSystems (system: scrubDrv (import fn ({ inherit system; } // args)));
pkgs = import nixpkgs { system = "x86_64-linux"; };
@ -40,7 +42,7 @@ let
in
# Declare the ISO as a build product so that it shows up in Hydra.
runCommand "nixos-iso-${config.system.nixosVersion}"
scrubDrv (runCommand "nixos-iso-${config.system.nixosVersion}"
{ meta = {
description = "NixOS installation CD (${description}) - ISO image for ${system}";
maintainers = map (x: lib.getAttr x lib.maintainers) maintainers;
@ -51,7 +53,7 @@ let
''
mkdir -p $out/nix-support
echo "file iso" $iso/iso/*.iso* >> $out/nix-support/hydra-build-products
''; # */
''); # */
makeSystemTarball =
@ -78,14 +80,17 @@ let
};
makeClosure = module: forAllSystems (system: (import ./lib/eval-config.nix {
makeClosure = module: buildFromConfig module (config: config.system.build.toplevel);
buildFromConfig = module: sel: forAllSystems (system: scrubDrv (sel (import ./lib/eval-config.nix {
inherit system;
modules = [ module ] ++ lib.singleton
modules = [ module versionModule ] ++ lib.singleton
({ config, lib, ... }:
{ fileSystems."/".device = lib.mkDefault "/dev/sda1";
boot.loader.grub.device = lib.mkDefault "/dev/sda";
});
}).config.system.build.toplevel);
}).config));
in rec {
@ -122,9 +127,9 @@ in rec {
};
manual = forAllSystems (system: (builtins.getAttr system iso_minimal).config.system.build.manual.manual);
manualPDF = iso_minimal.x86_64-linux.config.system.build.manual.manualPDF;
manpages = forAllSystems (system: (builtins.getAttr system iso_minimal).config.system.build.manual.manpages);
manual = buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manual);
manualPDF = (buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manualPDF)).x86_64-linux;
manpages = buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manpages);
iso_minimal = forAllSystems (system: makeIso {
@ -147,12 +152,6 @@ in rec {
inherit system;
});
iso_graphical_new_kernel = forAllSystems (system: makeIso {
module = ./modules/installer/cd-dvd/installation-cd-graphical-new-kernel.nix;
type = "graphical-new-kernel";
inherit system;
});
# A bootable VirtualBox virtual appliance as an OVA file (i.e. packaged OVF).
ova = forAllSystems (system:
@ -171,7 +170,7 @@ in rec {
in
# Declare the OVA as a build product so that it shows up in Hydra.
runCommand "nixos-ova-${config.system.nixosVersion}-${system}"
scrubDrv (runCommand "nixos-ova-${config.system.nixosVersion}-${system}"
{ meta = {
description = "NixOS VirtualBox appliance (${system})";
maintainers = lib.maintainers.eelco;
@ -182,7 +181,7 @@ in rec {
mkdir -p $out/nix-support
fn=$(echo $ova/*.ova)
echo "file ova $fn" >> $out/nix-support/hydra-build-products
'' # */
'') # */
);
@ -222,17 +221,17 @@ in rec {
tests.firefox = callTest tests/firefox.nix {};
tests.firewall = callTest tests/firewall.nix {};
tests.gnome3 = callTest tests/gnome3.nix {};
tests.installer.efi = forAllSystems (system: (import tests/installer.nix { inherit system; }).efi.test);
tests.installer.grub1 = forAllSystems (system: (import tests/installer.nix { inherit system; }).grub1.test);
tests.installer.lvm = forAllSystems (system: (import tests/installer.nix { inherit system; }).lvm.test);
tests.installer.rebuildCD = forAllSystems (system: (import tests/installer.nix { inherit system; }).rebuildCD.test);
tests.installer.separateBoot = forAllSystems (system: (import tests/installer.nix { inherit system; }).separateBoot.test);
tests.installer.simple = forAllSystems (system: (import tests/installer.nix { inherit system; }).simple.test);
tests.installer.simpleLabels = forAllSystems (system: (import tests/installer.nix { inherit system; }).simpleLabels.test);
tests.installer.simpleProvided = forAllSystems (system: (import tests/installer.nix { inherit system; }).simpleProvided.test);
tests.installer.btrfsSimple = forAllSystems (system: (import tests/installer.nix { inherit system; }).btrfsSimple.test);
tests.installer.btrfsSubvols = forAllSystems (system: (import tests/installer.nix { inherit system; }).btrfsSubvols.test);
tests.installer.btrfsSubvolDefault = forAllSystems (system: (import tests/installer.nix { inherit system; }).btrfsSubvolDefault.test);
tests.installer.efi = forAllSystems (system: scrubDrv (import tests/installer.nix { inherit system; }).efi.test);
tests.installer.grub1 = forAllSystems (system: scrubDrv (import tests/installer.nix { inherit system; }).grub1.test);
tests.installer.lvm = forAllSystems (system: scrubDrv (import tests/installer.nix { inherit system; }).lvm.test);
tests.installer.rebuildCD = forAllSystems (system: scrubDrv (import tests/installer.nix { inherit system; }).rebuildCD.test);
tests.installer.separateBoot = forAllSystems (system: scrubDrv (import tests/installer.nix { inherit system; }).separateBoot.test);
tests.installer.simple = forAllSystems (system: scrubDrv (import tests/installer.nix { inherit system; }).simple.test);
tests.installer.simpleLabels = forAllSystems (system: scrubDrv (import tests/installer.nix { inherit system; }).simpleLabels.test);
tests.installer.simpleProvided = forAllSystems (system: scrubDrv (import tests/installer.nix { inherit system; }).simpleProvided.test);
tests.installer.btrfsSimple = forAllSystems (system: scrubDrv (import tests/installer.nix { inherit system; }).btrfsSimple.test);
tests.installer.btrfsSubvols = forAllSystems (system: scrubDrv (import tests/installer.nix { inherit system; }).btrfsSubvols.test);
tests.installer.btrfsSubvolDefault = forAllSystems (system: scrubDrv (import tests/installer.nix { inherit system; }).btrfsSubvolDefault.test);
tests.influxdb = callTest tests/influxdb.nix {};
tests.ipv6 = callTest tests/ipv6.nix {};
tests.jenkins = callTest tests/jenkins.nix {};

View File

@ -16,6 +16,6 @@ stdenv.mkDerivation rec {
homepage = http://xiph.org/flac/;
description = "Library and tools for encoding and decoding the FLAC lossless audio file format";
platforms = platforms.all;
maintainers = maintainers.mornfall;
maintainers = [ maintainers.mornfall ];
};
}

View File

@ -14,6 +14,6 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; {
platforms = platforms.linux;
maintainers = maintainers.mornfall;
maintainers = [ maintainers.mornfall ];
};
}

View File

@ -5,11 +5,11 @@
pythonPackages.buildPythonPackage rec {
name = "mopidy-${version}";
version = "0.19.3";
version = "0.19.4";
src = fetchurl {
url = "https://github.com/mopidy/mopidy/archive/v${version}.tar.gz";
sha256 = "0rjq69vqak1d6fhvih259wmwp50xgr6x0x5nd0hl6hlkbbysc8dp";
sha256 = "13dyn9pgq0jns6915diizviqyn64yfysb08k77xsmxrr4bhm1156";
};
propagatedBuildInputs = with pythonPackages; [

View File

@ -1,16 +1,16 @@
{ stdenv, fetchurl, mpd_clientlib }:
stdenv.mkDerivation rec {
version = "0.25";
version = "0.26";
name = "mpc-${version}";
src = fetchurl {
url = "http://www.musicpd.org/download/mpc/0/${name}.tar.xz";
sha256 = "095gmik5vrnab5a1g92qiznn48w7499fr0gldp3s6xd26kvs9kvh";
sha256 = "0hp2qv6w2v902dhrmck5hg32s1ai6xiv9n61a3n6prfcfdqmywr0";
};
buildInputs = [ mpd_clientlib ];
buildInputs = [ mpd_clientlib ];
preConfigure =
''
export LIBMPDCLIENT_LIBS=${mpd_clientlib}/lib/libmpdclient.so.${mpd_clientlib.majorVersion}.0.${mpd_clientlib.minorVersion}

View File

@ -30,6 +30,6 @@ in stdenv.mkDerivation {
description = "SCIntilla based Text Editor";
license = stdenv.lib.licenses.mit;
platforms = stdenv.lib.platforms.linux;
maintainers = stdenv.lib.maintainers.rszibele;
maintainers = [ stdenv.lib.maintainers.rszibele ];
};
}

View File

@ -3,7 +3,7 @@
assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
let
build = "3059";
build = "3065";
libPath = stdenv.lib.makeLibraryPath [glib xlibs.libX11 gtk cairo pango];
in let
# package with just the binaries
@ -13,15 +13,15 @@ in let
src =
if stdenv.system == "i686-linux" then
fetchurl {
name = "sublimetext-3.0.59.tar.bz2";
name = "sublimetext-3.0.65.tar.bz2";
url = "http://c758482.r82.cf2.rackcdn.com/sublime_text_3_build_${build}_x32.tar.bz2";
sha256 = "5ee7b42b5db057108e97b86fd408124fc3f7b56662b2851f59d91f8f0c288088";
sha256 = "e25f84fe0d0c02ce71274d334fd42ce6313adcd4ec1d588b165d25f5e93ad78d";
}
else
fetchurl {
name = "sublimetext-3.0.59.tar.bz2";
name = "sublimetext-3.0.65.tar.bz2";
url = "http://c758482.r82.cf2.rackcdn.com/sublime_text_3_build_${build}_x64.tar.bz2";
sha256 = "da3039687664d33a734cea0151b2291ece9c7f35e5b73df5b2b5eac28a20b972";
sha256 = "fe548e6d86d72cd7e90eee9d5396b590ae6e8f8b0dfc661d86c814214e60faea";
};
dontStrip = true;
@ -56,7 +56,7 @@ in stdenv.mkDerivation {
meta = {
description = "Sophisticated text editor for code, markup and prose";
maintainers = stdenv.lib.maintainers.wmertens;
maintainers = [ stdenv.lib.maintainers.wmertens ];
license = stdenv.lib.licenses.unfree;
};
}

View File

@ -0,0 +1,28 @@
{ stdenv, fetchurl, pkgconfig, vala, which, autoconf, automake
, libtool, glib, gtk3, gnome3, libwnck3, asciidoc, python3Packages }:
stdenv.mkDerivation rec {
name = "vanubi-${version}";
version = "0.0.14";
src = fetchurl {
url = "https://github.com/vanubi/vanubi/archive/v${version}.tar.gz";
sha256 = "0cd45zm54j6xz1a31qllg2w7l77sncv7mrpfx9bjzdiqpmzsdypl";
};
buildInputs = [ pkgconfig vala which autoconf automake
libtool glib gtk3 libwnck3 asciidoc
gnome3.gtksourceview gnome3.vte python3Packages.pygments ];
configureScript = "./autogen.sh";
enableParallelBuilding = true;
meta = with stdenv.lib; {
homepage = http://vanubi.github.io/vanubi;
description = "Programming editor for GTK+ inspired by Emacs";
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = [ maintainers.lethalman ];
};
}

View File

@ -1,19 +1,9 @@
{ stdenv, buildEnv, fetchgit, xlibs, glib, gtk2, atk, pango, gdk_pixbuf,
cairo, freetype, fontconfig, nss, nspr, gnome, alsaLib, expat, dbus, udev,
makeWrapper, writeScript, fetchurl, zip, pkgs, node_webkit }:
{ stdenv, buildEnv, fetchgit, makeWrapper, writeScript, fetchurl, zip, pkgs
, node_webkit }:
let
name = "zed-${version}";
version = "0.12";
rpath_env = buildEnv {
name = "rpath_env";
paths = [ xlibs.libX11 xlibs.libXrender glib xlibs.libXtst gtk2 atk pango
gdk_pixbuf cairo freetype fontconfig xlibs.libXi xlibs.libXcomposite
nss nspr gnome.GConf xlibs.libXext xlibs.libXfixes alsaLib
xlibs.libXdamage expat dbus stdenv.gcc ];
pathsToLink = [ "/lib" "/lib64" ];
};
version = "0.13";
# When upgrading node.nix / node packages:
# fetch package.json from Zed's repository
@ -29,8 +19,10 @@ let
node_env = buildEnv {
name = "node_env";
paths = [ nodePackages.tar nodePackages.request ];
paths = [ nodePackages."body-parser" nodePackages.express
nodePackages.request nodePackages.tar nodePackages.ws ];
pathsToLink = [ "/lib" ];
ignoreCollisions = true;
};
zed = stdenv.mkDerivation rec {
@ -39,7 +31,7 @@ let
src = fetchgit {
url = "git://github.com/zedapp/zed";
rev = "refs/tags/v${version}";
sha256 = "1l1adj4p916km626vxg1lv0bapzay4z5nq005pxsbjbcycrhds59";
sha256 = "023nq4y6dgh57xpsgawdn2zqvfyhjz1p00ldnsfsjajyy4nn6yb1";
};
buildInputs = [ makeWrapper zip ];
@ -62,14 +54,7 @@ let
'';
postFixup = ''
patchelf --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" $out/zed/zed-bin
patchelf --set-rpath "${rpath_env}/lib:${rpath_env}/lib64" $out/zed/zed-bin
mkdir -p $out/lib
ln -s ${udev}/lib/libudev.so.1 $out/lib/libudev.so.0
wrapProgram $out/zed/zed-bin \
--prefix LD_LIBRARY_PATH : $out/lib \
--prefix NODE_PATH : ${node_env}/lib/node_modules
'';
};

File diff suppressed because it is too large Load Diff

View File

@ -21,6 +21,6 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; {
platforms = platforms.linux;
maintainers = maintainers.mornfall;
maintainers = [ maintainers.mornfall ];
};
}

View File

@ -0,0 +1,45 @@
{ stdenv, fetchgit,autoconf, automake, gcc, fltk13
, libjpeg, libpng, libtool, mesa, pkgconfig }:
stdenv.mkDerivation {
name = "solvespace-2.0";
src = fetchgit {
url = "https://gitorious.org/solvespace/solvespace.git";
sha256 = "0sakxkmj2f0k27f67wy1xz2skpnwzg15yqrf7av97pgc5s8xb3da";
rev = "e587d0e";
};
# e587d0e fails with undefined reference errors if make is called
# twice. Ugly workaround: Build while installing.
dontBuild = true;
enableParallelBuilding = false;
buildInputs = [
autoconf
automake
gcc
fltk13
libjpeg
libpng
libtool
mesa
pkgconfig
stdenv
];
preConfigure = ''
aclocal
libtoolize
autoreconf -i
automake --add-missing
'';
meta = {
description = "A parametric 3d CAD program.";
license = stdenv.lib.licenses.gpl3;
maintainers = with stdenv.lib.maintainers; [ the-kenny ];
platforms = stdenv.lib.platforms.linux;
homepage = http://solvespace.com;
};
}

View File

@ -8,8 +8,8 @@
cabal.mkDerivation (self: {
pname = "arbtt";
version = "0.8.1.2";
sha256 = "074vb84vkygxamvq7xnwlpgbch6qkbhyzbakc343230p1ryxf62q";
version = "0.8.1.4";
sha256 = "15ydb425nvqfzajx09q713wy5xa7awbzfjlsidk17vf7qbhfjn7z";
isLibrary = false;
isExecutable = true;
buildDepends = [

View File

@ -1,12 +1,12 @@
{ stdenv, lib, go, fetchurl }:
stdenv.mkDerivation rec {
version = "0.7";
version = "0.8";
name = "camlistore-${version}";
src = fetchurl {
url = "https://github.com/bradfitz/camlistore/archive/0.7.tar.gz";
sha256 = "0lc35x2b9llrnma0m5czivly0c3l4lh3ldw9hwn83lkh8n0bzn11";
url = "https://github.com/bradfitz/camlistore/archive/${version}.tar.gz";
sha256 = "03y5zs4i9lx93apqqqfgmbxamk06z3w1q763qp0lvb15mq45gdv1";
};
buildInputs = [ go ];

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "keepass-${version}";
version = "2.22";
version = "2.27";
src = fetchurl {
url = "mirror://sourceforge/keepass/KeePass-${version}.zip";
sha256 = "0mman7r1jmirfwzix5qww0yn4rrgzcg7546basxjvvfc8flp43j0";
sha256 = "1qi7pls5xrv7ma53bwka738idvnxk82dvhk06m1snc8c29dws7fa";
};
sourceRoot = ".";

View File

@ -0,0 +1,37 @@
{ stdenv, fetchurl, cmake, boost }:
let
version = "0.8.8.4";
in
stdenv.mkDerivation {
name = "monero-${version}";
src = fetchurl {
url = "https://github.com/monero-project/bitmonero/archive/v${version}.tar.gz";
sha256 = "0bbhqjjzh922aymjqrnl2hd3r8x6p7x5aa5jidv3l4d77drhlgzy";
};
buildInputs = [ cmake boost ];
# these tests take a long time and don't
# always complete in the build environment
postPatch = "sed -i '/add_subdirectory(tests)/d' CMakeLists.txt";
doCheck = false;
checkTarget = "test-release"; # this would be the target
installPhase = ''
installBin \
src/bitmonerod \
src/connectivity_tool \
src/simpleminer \
src/simplewallet
'';
meta = with stdenv.lib; {
description = "Private, secure, untraceable currency";
homepage = http://monero.cc/;
license = licenses.bsd3;
maintainers = [ maintainers.emery ];
platforms = platforms.all;
};
}

View File

@ -0,0 +1,24 @@
{ stdenv, fetchurl, pkgconfig, glib, gtk, menu-cache }:
stdenv.mkDerivation rec {
name = "openbox-menu-0.5.1";
src = fetchurl {
url = "https://bitbucket.org/fabriceT/openbox-menu/downloads/${name}.tar.bz2";
sha256 = "11v3nlhqcnks5vms1a7rrvwvj8swc9axgjkp7z0r97lijsg6d3rj";
};
buildInputs = [ pkgconfig glib gtk menu-cache ];
patches = [ ./with-svg.patch ];
installPhase = "make install prefix=$out";
meta = {
description = "Dynamic XDG menu generator for Openbox";
homepage = "http://mimasgpc.free.fr/openbox-menu.html";
license = stdenv.lib.licenses.gpl3;
maintainers = [ stdenv.lib.maintainers.romildo ];
platforms = stdenv.lib.platforms.unix;
};
}

View File

@ -0,0 +1,11 @@
--- a/Makefile.old 2013-12-11 06:39:44.397358610 +0100
+++ b/Makefile 2013-12-11 06:39:51.082275037 +0100
@@ -7,7 +7,7 @@
CFLAGS+=-DWITH_ICONS
# Uncomment this line if Openbox can display SVG icons
# Check SVG support with '$ ldd /usr/bin/openbox | grep svg', librsvg must appear..
-# CFLAGS+=-DWITH_SVG
+CFLAGS+=-DWITH_SVG
prefix= /usr/local
DESTDIR ?= $(prefix)

View File

@ -16,6 +16,6 @@ stdenv.mkDerivation rec {
meta = {
description = "Show the set of running processes as a tree";
license = "GPL";
maintainers = stdenv.lib.maintainers.mornfall;
maintainers = [ stdenv.lib.maintainers.mornfall ];
};
}

View File

@ -38,8 +38,8 @@ stdenv.mkDerivation rec {
temperature to allow your eyes to slowly adapt.
'';
license = stdenv.lib.licenses.gpl3Plus;
homepage = "http://jonls.dk/redshift";
homepage = http://jonls.dk/redshift;
platforms = platforms.linux;
maintainers = maintainers.mornfall;
maintainers = [ maintainers.mornfall ];
};
}

View File

@ -47,6 +47,6 @@ stdenv.mkDerivation (rec {
meta = {
description = "A clone of the well-known terminal emulator rxvt";
homepage = "http://software.schmorp.de/pkg/rxvt-unicode.html";
maintainers = stdenv.lib.maintainers.mornfall;
maintainers = [ stdenv.lib.maintainers.mornfall ];
};
})

View File

@ -27,6 +27,7 @@
, proprietaryCodecs ? true
, cupsSupport ? false
, pulseSupport ? false, pulseaudio ? null
, hiDPISupport ? false
, source
, plugins
@ -162,6 +163,7 @@ let
linux_sandbox_chrome_path="${libExecPath}/${packageName}";
werror = "";
clang = false;
enable_hidpi = hiDPISupport;
# Google API keys, see:
# http://www.chromium.org/developers/how-tos/api-keys

View File

@ -12,6 +12,7 @@
, enablePepperPDF ? false
, cupsSupport ? false
, pulseSupport ? false
, hiDPISupport ? false
}:
let
@ -27,7 +28,7 @@ let
mkChromiumDerivation = callPackage ./common.nix {
inherit enableSELinux enableNaCl useOpenSSL gnomeSupport
gnomeKeyringSupport proprietaryCodecs cupsSupport
pulseSupport;
pulseSupport hiDPISupport;
};
browser = callPackage ./browser.nix { };

View File

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

View File

@ -36,7 +36,7 @@
let
# -> http://get.adobe.com/flashplayer/
version = "11.2.202.400";
version = "11.2.202.406";
src =
if stdenv.system == "x86_64-linux" then
@ -47,18 +47,20 @@ let
else rec {
inherit version;
url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.x86_64.tar.gz";
sha256 = "043bzjcqxjkjk68kba5nk77m59k6g71h32bypjpnwaigdgbhafyl";
sha256 = "05akcw89kz0cnhan6wp72banz2asmvqfhb2cw1krn66qgd7bl0x0";
}
else if stdenv.system == "i686-linux" then
if debug then {
if debug then
throw "flash debugging version is outdated and probably broken" /* {
# The debug version also contains a player
version = "11.1";
url = http://fpdownload.macromedia.com/pub/flashplayer/updaters/11/flashplayer_11_plugin_debug.i386.tar.gz;
sha256 = "1z3649lv9sh7jnwl8d90a293nkaswagj2ynhsr4xmwiy7c0jz2lk";
} else rec {
}*/
else rec {
inherit version;
url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.i386.tar.gz";
sha256 = "1xvfzm926rj0l2mq2kybrvykrv7bjfl3m7p5mvhj1586a3x1gb6h";
sha256 = "10f3842vi80kszj42f4c8sw7plrmvsin5k860cqvlzgdhndz8i4b";
}
else throw "Flash Player is not supported on this platform";

View File

@ -42,6 +42,6 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; {
homepage = http://w3m.sourceforge.net/;
description = "A text-mode web browser";
maintainers = maintainers.mornfall;
maintainers = [ maintainers.mornfall ];
};
}

View File

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

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, libtool, xlibs, freetype, fontconfig, openssl, glib
, mesa, gstreamer, gst_plugins_base, dbus, alsaLib, zlib, libuuid
, libxml2, libxslt, sqlite, libogg, libvorbis, xz, libcanberra
, makeWrapper, libredirect, xkeyboard_config }:
, makeWrapper, libredirect, xkeyboard_config, xcbutilkeysyms }:
let
version = "2.2.1107";
version = "2.2.1163";
rpath = stdenv.lib.makeSearchPath "lib" [
stdenv.glibc
@ -40,18 +40,19 @@ let
libvorbis
xz
libcanberra
xcbutilkeysyms
] + ":${stdenv.gcc.gcc}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}";
src =
if stdenv.system == "x86_64-linux" then
fetchurl {
url = "http://downloads.hipchat.com/linux/arch/x86_64/hipchat-${version}-x86_64.pkg.tar.xz";
sha256 = "0lf780pxbh40m2i48cki072lrm75924cz3zgkmaxddmar3y13bwa";
sha256 = "0yafin8qfnv9kj61z9vxza42r7fv8b9j04qs50masbly0jg5xsg8";
}
else if stdenv.system == "i686-linux" then
fetchurl {
url = "http://downloads.hipchat.com/linux/arch/i686/hipchat-${version}-i686.pkg.tar.xz";
sha256 = "1k33670rpigdpy9jcacryc1i05ykp5yffcplmbm5q29ng54cn0zv";
sha256 = "1a0yvrnp41s53wpqv2jxsb3gd4vb49nfh89m6nwbw4qd85i5lfsp";
}
else
throw "HipChat is not supported on ${stdenv.system}";

View File

@ -1,16 +1,26 @@
{ stdenv, fetchgit, buildPythonPackage, pythonPackages }:
{ stdenv, fetchurl, pythonPackages, gnupg1orig, makeWrapper }:
buildPythonPackage rec {
name = "mailpile-dev";
pythonPackages.buildPythonPackage rec {
name = "mailpile-${version}";
version = "0.4.0";
src = fetchgit {
url = "https://github.com/pagekite/Mailpile.git";
rev = "6e19c1942541dbdefb5155db5f2583bf3ed22aeb";
sha256 = "04idlbjkasigq3vslcv33kg21rjyklm2yl8pyrf5h94lzabbl1fs";
src = fetchurl {
url = "https://github.com/pagekite/Mailpile/archive/${version}.zip";
sha256 = "1di859lnhmlih4byfpsj8x6wjvzrddw0ng0w69bsj5f9bdy4rgq4";
};
patchPhase = ''
substituteInPlace setup.py --replace "data_files.append((dir" "data_files.append(('lib/${pythonPackages.python.libPrefix}/site-packages/' + dir"
'';
propagatedBuildInputs = with pythonPackages; [
pillow jinja2 spambayes pythonPackages.lxml python.modules.readline or null];
makeWrapper pillow jinja2 spambayes pythonPackages.lxml
python.modules.readline pgpdump gnupg1orig
];
postInstall = ''
wrapProgram $out/bin/mailpile --prefix PATH ":" "${gnupg1orig}/bin"
'';
meta = with stdenv.lib; {
description = "A modern, fast web-mail client with user-friendly encryption and privacy features";
@ -19,4 +29,4 @@ buildPythonPackage rec {
platforms = platforms.linux;
maintainers = [ maintainers.iElectric ];
};
}
}

View File

@ -6,14 +6,14 @@
}:
let pname = "liferea";
version = "1.10.10";
version = "1.10.11";
in
stdenv.mkDerivation rec {
name = "${pname}-${version}";
src = fetchurl {
url = "https://github.com/lwindolf/${pname}/releases/download/v${version}/${name}.tar.bz2";
sha256 = "0y01lhw0fn5m0j9ykz8x7i0wchjqbxp33cvvprsfxfwzz4x31jm4";
sha256 = "0mf5mpdj60j8if4qi5656l4pzhgwzhshf31yp0h53l1j442v109a";
};
buildInputs = with gst_all_1; [

View File

@ -7,14 +7,15 @@ let
exec ${ocaml}/bin/ocaml -I \`${camlp5}/bin/camlp5 -where\` -init make.ml
'';
in
stdenv.mkDerivation rec {
name = "hol_light-${version}";
version = "189";
version = "198";
src = fetchsvn {
url = http://hol-light.googlecode.com/svn/trunk;
rev = version;
sha256 = "1v10l64rs7da2kag3wlb651i09pn83icy9n5z84j8h1iwlxzajdh";
sha256 = "1y7vivj5l84fb7wqn38qbykpgs8ql2gmqxxch1yn5mg1cf9iiqsx";
};
buildInputs = [ ocaml findlib camlp5 ];
@ -26,11 +27,11 @@ stdenv.mkDerivation rec {
chmod a+x "$out/bin/hol_light"
'';
meta = {
meta = with stdenv.lib; {
description = "Interactive theorem prover based on Higher-Order Logic";
homepage = http://www.cl.cam.ac.uk/~jrh13/hol-light/;
license = stdenv.lib.licenses.bsd2;
platforms = stdenv.lib.platforms.unix;
maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
license = licenses.bsd2;
platforms = platforms.unix;
maintainers = with maintainers; [ thoughtpolice z77z ];
};
}

View File

@ -0,0 +1,43 @@
# - coqide compilation can be disabled by setting lablgtk to null;
{stdenv, fetchurl, pkgconfig, ocaml, camlp5}:
stdenv.mkDerivation rec {
name = "ott-${version}";
version = "0.25";
src = fetchurl {
url = "http://www.cl.cam.ac.uk/~pes20/ott/ott_distro_${version}.tar.gz";
sha256 = "0i8ad1yrz9nrrgpi8db4z0aii5s0sy35mmzdfw5nq183mvbx8qqd";
};
buildInputs = [ pkgconfig ocaml camlp5 ];
installPhase = ''
mkdir -p $out/bin
cp src/ott.opt $out/bin
ln -s $out/bin/ott.opt $out/bin/ott
mkdir -p $out/share/emacs/site-lisp
cp emacs/ottmode.el $out/share/emacs/site-lisp
'';
meta = {
description = "Ott: tool for the working semanticist";
longDescription = ''
Ott is a tool for writing definitions of programming languages and
calculi. It takes as input a definition of a language syntax and
semantics, in a concise and readable ASCII notation that is close to
what one would write in informal mathematics. It generates LaTeX to
build a typeset version of the definition, and Coq, HOL, and Isabelle
versions of the definition. Additionally, it can be run as a filter,
taking a LaTeX/Coq/Isabelle/HOL source file with embedded (symbolic)
terms of the defined language, parsing them and replacing them by
target-system terms.
'';
homepage = http://www.cl.cam.ac.uk/~pes20/ott;
license = "BSD3";
maintainers = with stdenv.lib.maintainers; [ jwiegley ];
platforms = stdenv.lib.platforms.unix;
};
}

View File

@ -6,11 +6,11 @@
}:
stdenv.mkDerivation rec {
name = "R-3.1.1";
name = "R-3.1.0";
src = fetchurl {
url = "http://cran.r-project.org/src/base/R-3/${name}.tar.gz";
sha256 = "06bs5jk2bgib2wvd76yq9kf1vyim2j344midxkqyhk216ig4sp6f";
sha256 = "1qjzbw341bvi1h4jwbvdkvq8j0z9l3m85mpgrlfw0n2cz2806s4a";
};
buildInputs = [ blas bzip2 gfortran liblapack libX11 libXmu libXt

View File

@ -18,6 +18,6 @@ stdenv.mkDerivation rec {
license = stdenv.lib.licenses.bsd3;
hydraPlatforms = stdenv.lib.platforms.linux;
maintainers = stdenv.lib.maintainers.sprock;
maintainers = [ stdenv.lib.maintainers.sprock ];
};
}

View File

@ -0,0 +1,124 @@
{ stdenv
, coreutils
, patchelf
, requireFile
, alsaLib
, fontconfig
, freetype
, gcc
, glib
, libpng
, ncurses
, opencv
, openssl
, unixODBC
, xlibs
, zlib
}:
let
platform =
if stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux" then
"Linux"
else
throw "Mathematica requires i686-linux or x86_64 linux";
in
stdenv.mkDerivation rec {
name = "mathematica-9.0.0";
src = requireFile rec {
name = "Mathematica_9.0.0_LINUX.sh";
message = ''
This nix expression requires that Mathematica_9.0.0_LINUX.sh is
already part of the store. Find the file on your Mathematica CD
and add it to the nix store with nix-store --add-fixed sha256 <FILE>.
'';
sha256 = "106zfaplhwcfdl9rdgs25x83xra9zcny94gb22wncbfxvrsk3a4q";
};
buildInputs = [
coreutils
patchelf
alsaLib
coreutils
fontconfig
freetype
gcc.gcc
gcc.libc
glib
ncurses
opencv
openssl
unixODBC
] ++ (with xlibs; [
libX11
libXext
libXtst
libXi
libXmu
libXrender
libxcb
]);
ldpath = stdenv.lib.makeLibraryPath buildInputs
+ stdenv.lib.optionalString (stdenv.system == "x86_64-linux")
(":" + stdenv.lib.makeSearchPath "lib64" buildInputs);
phases = "unpackPhase installPhase fixupPhase";
unpackPhase = ''
echo "=== Extracting makeself archive ==="
# find offset from file
offset=$(${stdenv.shell} -c "$(grep -axm1 -e 'offset=.*' $src); echo \$offset" $src)
dd if="$src" ibs=$offset skip=1 | tar -xf -
cd Unix
'';
installPhase = ''
cd Installer
# don't restrict PATH, that has already been done
sed -i -e 's/^PATH=/# PATH=/' MathInstaller
echo "=== Running MathInstaller ==="
./MathInstaller -auto -createdir=y -execdir=$out/bin -targetdir=$out/libexec/Mathematica -platforms=${platform} -silent
'';
preFixup = ''
echo "=== PatchElfing away ==="
find $out/libexec/Mathematica/SystemFiles -type f -perm +100 | while read f; do
type=$(readelf -h "$f" 2>/dev/null | grep 'Type:' | sed -e 's/ *Type: *\([A-Z]*\) (.*/\1/')
if [ -z "$type" ]; then
:
elif [ "$type" == "EXEC" ]; then
echo "patching $f executable <<"
patchelf \
--set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
--set-rpath "${ldpath}" \
"$f"
patchelf --shrink-rpath "$f"
elif [ "$type" == "DYN" ]; then
echo "patching $f library <<"
patchelf \
--set-rpath "$(patchelf --print-rpath "$f"):${ldpath}" \
"$f" \
&& patchelf --shrink-rpath "$f" \
|| echo unable to patch ... ignoring 1>&2
else
echo "not patching $f <<: unknown elf type"
fi
done
'';
# all binaries are already stripped
dontStrip = true;
# we did this in prefixup already
dontPatchELF = true;
meta = {
description = "Wolfram Mathematica computational software system";
homepage = "http://www.wolfram.com/mathematica/";
license = stdenv.lib.licenses.unfree;
};
}

View File

@ -14,6 +14,8 @@
, unixODBC
, xlibs
, zlib
, libxml2
, libuuid
}:
let
@ -24,17 +26,18 @@ let
throw "Mathematica requires i686-linux or x86_64 linux";
in
stdenv.mkDerivation rec {
version = "10.0.1";
name = "mathematica-9.0.0";
name = "mathematica-${version}";
src = requireFile rec {
name = "Mathematica_9.0.0_LINUX.sh";
name = "Mathematica_${version}_LINUX.sh";
message = ''
This nix expression requires that Mathematica_9.0.0_LINUX.sh is
This nix expression requires that ${name} is
already part of the store. Find the file on your Mathematica CD
and add it to the nix store with nix-store --add-fixed sha256 <FILE>.
'';
sha256 = "106zfaplhwcfdl9rdgs25x83xra9zcny94gb22wncbfxvrsk3a4q";
sha256 = "1514qy5kbyislv8j7ryw8021k26y0z6dndliwy8hfi7w7kgb3ynq";
};
buildInputs = [
@ -51,6 +54,8 @@ stdenv.mkDerivation rec {
opencv
openssl
unixODBC
libxml2
libuuid
] ++ (with xlibs; [
libX11
libXext
@ -59,6 +64,11 @@ stdenv.mkDerivation rec {
libXmu
libXrender
libxcb
libXcursor
libXfixes
libXrandr
libICE
libSM
]);
ldpath = stdenv.lib.makeLibraryPath buildInputs
@ -92,11 +102,13 @@ stdenv.mkDerivation rec {
:
elif [ "$type" == "EXEC" ]; then
echo "patching $f executable <<"
patchelf \
--set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
--set-rpath "${ldpath}" \
"$f"
patchelf --shrink-rpath "$f"
patchelf \
--set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
--set-rpath "$(patchelf --print-rpath "$f"):${ldpath}" \
"$f" \
&& patchelf --shrink-rpath "$f" \
|| echo unable to patch ... ignoring 1>&2
elif [ "$type" == "DYN" ]; then
echo "patching $f library <<"
patchelf \

View File

@ -7,18 +7,18 @@
, hamlet, hinotify, hS3, hslogger, httpClient, httpConduit
, httpTypes, IfElse, json, lsof, MissingH, monadControl, mtl
, network, networkInfo, networkMulticast, networkProtocolXmpp
, openssh, optparseApplicative, pathPieces, perl, QuickCheck
, random, regexTdfa, rsync, SafeSemaphore, securemem, SHA
, shakespeare, stm, tasty, tastyHunit, tastyQuickcheck, tastyRerun
, text, time, transformers, unixCompat, utf8String, uuid, wai
, waiExtra, warp, warpTls, which, xmlTypes, yesod, yesodCore
, yesodDefault, yesodForm, yesodStatic
, networkUri, openssh, optparseApplicative, pathPieces, perl
, QuickCheck, random, regexTdfa, rsync, SafeSemaphore, securemem
, SHA, shakespeare, stm, tasty, tastyHunit, tastyQuickcheck
, tastyRerun, text, time, transformers, unixCompat, utf8String
, uuid, wai, waiExtra, warp, warpTls, which, xmlTypes, yesod
, yesodCore, yesodDefault, yesodForm, yesodStatic
}:
cabal.mkDerivation (self: {
pname = "git-annex";
version = "5.20140831";
sha256 = "0s2pc8bm3c79dsbafwp2pc5yghzh6vdzs9sj0mfq6rxiv27wrrwq";
version = "5.20140915";
sha256 = "0csd16vqmr4s6x627ikkl8dz6hvr2grqkzjxh0hbkqrirfsxj0kk";
isLibrary = false;
isExecutable = true;
buildDepends = [
@ -27,11 +27,11 @@ cabal.mkDerivation (self: {
dlist dns editDistance exceptions fdoNotify feed filepath gnutls
hamlet hinotify hS3 hslogger httpClient httpConduit httpTypes
IfElse json MissingH monadControl mtl network networkInfo
networkMulticast networkProtocolXmpp optparseApplicative pathPieces
QuickCheck random regexTdfa SafeSemaphore securemem SHA shakespeare
stm tasty tastyHunit tastyQuickcheck tastyRerun text time
transformers unixCompat utf8String uuid wai waiExtra warp warpTls
xmlTypes yesod yesodCore yesodDefault yesodForm yesodStatic
networkMulticast networkProtocolXmpp networkUri optparseApplicative
pathPieces QuickCheck random regexTdfa SafeSemaphore securemem SHA
shakespeare stm tasty tastyHunit tastyQuickcheck tastyRerun text
time transformers unixCompat utf8String uuid wai waiExtra warp
warpTls xmlTypes yesod yesodCore yesodDefault yesodForm yesodStatic
];
buildTools = [ bup curl git gnupg1 lsof openssh perl rsync which ];
configureFlags = "-fAssistant -fProduction";

View File

@ -3,11 +3,12 @@
}:
stdenv.mkDerivation rec {
name = "tig-2.0.2";
name = "tig-2.0.3";
src = fetchurl {
url = "http://jonas.nitro.dk/tig/releases/${name}.tar.gz";
sha256 = "0gi7iqiij37b0d3izxymxaw5ns2mv1y7qfic0fhl7xj4s2rz075r";
sha256 = "1i4nizachq0ncq0d8c87ly50zk51vgzb5a8amqscywdp1kc0zb7s";
};
buildInputs = [ ncurses asciidoc xmlto docbook_xsl readline ];

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "shotcut-${version}";
version = "14.08";
version = "14.09";
src = fetchurl {
url = "https://github.com/mltframework/shotcut/archive/v${version}.tar.gz";
sha256 = "0klcvpgp2l6xcdjy1gg7a5s8mx0mm347zdf26q6kk685pldlvkyj";
sha256 = "1504ds3ppqmpg84nb2gb74qndqysjwn3xw7n8xv19kd1pppnr10f";
};
buildInputs = [ SDL frei0r gettext makeWrapper mlt pkgconfig qt5 ];

View File

@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
'';
homepage = http://home.gna.org/subtitleeditor;
license = stdenv.lib.licenses.gpl3;
maintainers = stdenv.lib.maintainers.plcplc;
maintainers = [ stdenv.lib.maintainers.plcplc ];
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -90,6 +90,7 @@ stdenv.mkDerivation rec {
--prefix PATH ":" "${xdpyinfo}/bin" \
--prefix LD_LIBRARY_PATH ":" "${curl}/lib" \
--prefix LD_LIBRARY_PATH ":" "${systemd}/lib" \
--prefix LD_LIBRARY_PATH ":" "${libmad}/lib" \
--prefix LD_LIBRARY_PATH ":" "${libvdpau}/lib"
done
'';

View File

@ -1,5 +1,6 @@
{ stdenv, fetchurl, perl, perlXMLParser, pkgconfig, gtk
, scrollkeeper, libglade, libXmu, libX11, libXext, gettext, lame, libXfixes, libXdamage}:
, scrollkeeper, libglade, libXmu, libX11, libXext, gettext
, lame, libXfixes, libXdamage }:
stdenv.mkDerivation {
name = "xvidcap-1.1.7";
@ -10,14 +11,18 @@ stdenv.mkDerivation {
};
patches = [ ./xlib.patch ];
buildInputs = [perl perlXMLParser pkgconfig gtk scrollkeeper libglade libXmu gettext lame libXdamage libXfixes libXext libX11];
buildInputs = [
perl perlXMLParser pkgconfig gtk scrollkeeper
libglade libXmu gettext lame libXdamage libXfixes libXext libX11
];
# !!! don't know why this is necessary
NIX_LDFLAGS = "-lXext -lX11 -lz -lgcc_s";
meta = {
meta = with stdenv.lib; {
description = "screencast video catpuring tool";
homepage = http://xvidcap.sourceforge.net/;
license = stdenv.lib.licenses.gpl2;
platforms = platforms.linux;
};
}

View File

@ -28,7 +28,7 @@ stdenv.mkDerivation {
meta = {
description = "A viewer for remote virtual machines";
maintainers = maintainers.raskin;
maintainers = [ maintainers.raskin ];
platforms = platforms.linux;
license = licenses.gpl2;
};

View File

@ -76,6 +76,7 @@ in stdenv.mkDerivation {
ls kBuild/bin/linux.x86/k* tools/linux.x86/bin/* | xargs -n 1 patchelf --set-interpreter ${stdenv.glibc}/lib/ld-linux.so.2
ls kBuild/bin/linux.amd64/k* tools/linux.amd64/bin/* | xargs -n 1 patchelf --set-interpreter ${stdenv.glibc}/lib/ld-linux-x86-64.so.2
find . -type f | xargs sed 's/depmod -a/true/' -i
sed -e 's@"libasound.so.2"@"${alsaLib}/lib/libasound.so.2"@g' -i src/VBox/Main/xml/Settings.cpp src/VBox/Devices/Audio/alsa_stubs.c
export USER=nix
set +x
'';

View File

@ -17,8 +17,8 @@ in
meta = {
description = "A lightweight xcb based bar";
homepage = "https://github.com/LemonBoy/bar";
maintainers = stdenv.lib.maintainers.meisternu;
homepage = https://github.com/LemonBoy/bar;
maintainers = [ stdenv.lib.maintainers.meisternu ];
license = "Custom";
platforms = stdenv.lib.platforms.linux;
};

View File

@ -21,8 +21,8 @@ stdenv.mkDerivation rec {
meta = {
description = "A tiling window manager based on binary space partitioning";
homepage = "http://github.com/baskerville/bspwm";
maintainers = stdenv.lib.maintainers.meisternu;
homepage = http://github.com/baskerville/bspwm;
maintainers = [ stdenv.lib.maintainers.meisternu ];
license = "BSD";
platforms = stdenv.lib.platforms.linux;
};

View File

@ -17,8 +17,16 @@ stdenv.mkDerivation rec {
sha256 = "0cxgb334zj6aszwiki9g10i56sm18i7w1kw52vdnwgzq27pv93qj";
};
setlayoutSrc = fetchurl {
url = "http://openbox.org/dist/tools/setlayout.c";
sha256 = "1ci9lq4qqhl31yz1jwwjiawah0f7x0vx44ap8baw7r6rdi00pyiv";
};
postBuild = "gcc -O2 -o setlayout $(pkg-config --cflags --libs x11) $setlayoutSrc";
# Openbox needs XDG_DATA_DIRS set or it can't find its default theme
postInstall = ''
cp -a setlayout "$out"/bin
wrapProgram "$out/bin/openbox" --prefix XDG_DATA_DIRS : "$out/share"
wrapProgram "$out/bin/openbox-session" --prefix XDG_DATA_DIRS : "$out/share"
wrapProgram "$out/bin/openbox-gnome-session" --prefix XDG_DATA_DIRS : "$out/share"

View File

@ -43,6 +43,6 @@ in
meta = {
description = "POSIX threads (pthreads) manual pages from LinuxThreads";
homepage = http://www.gnu.org/software/libc/;
maintainers = stdenv.lib.maintainers.mornfall;
maintainers = [ stdenv.lib.maintainers.mornfall ];
};
}

View File

@ -0,0 +1,30 @@
{stdenv, fetchurl, unzip}:
stdenv.mkDerivation rec {
name = "stix-otf-${version}";
version = "1.1.1";
src = fetchurl {
url = "mirror://sourceforge/stixfonts/STIXv${version}-word.zip";
sha256 = "1q35wbqn3nh78pdban9z37lh090c6p49q3d00zzxm0axxz66xy4q";
};
buildInputs = [unzip];
phases = ["unpackPhase" "installPhase"];
sourceRoot = "Fonts/STIX-Word";
installPhase = ''
mkdir -p $out/share/fonts/opentype
cp *.otf $out/share/fonts/opentype
'';
meta = with stdenv.lib; {
homepage = http://www.stixfonts.org/;
description = "Fonts for Scientific and Technical Information eXchange";
license = licenses.ofl;
platforms = platforms.all;
maintainers = [maintainers.rycee];
};
}

View File

@ -12,9 +12,9 @@ stdenv.mkDerivation rec {
meta = {
description = "A (mainly) Chinese Unicode font";
homepage = "http://wenq.org";
homepage = http://wenq.org;
license = stdenv.lib.licenses.asl20;
maintainers = stdenv.lib.maintainers.pkmx;
maintainers = [ stdenv.lib.maintainers.pkmx ];
platforms = stdenv.lib.platforms.all;
};
}

View File

@ -19,9 +19,9 @@ stdenv.mkDerivation rec {
meta = {
description = "A (mainly) Chinese Unicode font";
homepage = "http://wenq.org";
homepage = http://wenq.org;
license = stdenv.lib.licenses.gpl2; # with font embedding exceptions
maintainers = stdenv.lib.maintainers.pkmx;
maintainers = [ stdenv.lib.maintainers.pkmx ];
platforms = stdenv.lib.platforms.all;
};
}

View File

@ -1,6 +1,6 @@
{ stdenv, fetchurl }:
let version = "2014e"; in
let version = "2014g"; in
stdenv.mkDerivation rec {
name = "tzdata-${version}";
@ -8,11 +8,11 @@ stdenv.mkDerivation rec {
srcs =
[ (fetchurl {
url = "http://www.iana.org/time-zones/repository/releases/tzdata${version}.tar.gz";
sha256 = "1ic63ykplnrvh9704j6l089rais0nxw1lcf1dbc3iy2ij2kl7qh8";
sha256 = "0w52hafnf82vy678rm8p39ckymcj6shv5376zwzzbxw2m6vxaism";
})
(fetchurl {
url = "http://www.iana.org/time-zones/repository/releases/tzcode${version}.tar.gz";
sha256 = "074c98vmdgysgkksaqwkn1gbrlnzk8l28zs8lhif44a9mckc9ss3";
sha256 = "0ymg0cscpbfj9jpnx4g9apmfrixq6z8dch99h6a77k2pmnj5ymfz";
})
];

View File

@ -0,0 +1,26 @@
{ callPackage, pkgs }:
let
openjpeg_1 = with pkgs; lib.overrideDerivation openjpeg (oldAttrs: {
name = "openjpeg-1.5.1";
src = fetchurl {
url = "http://openjpeg.googlecode.com/files/openjpeg-1.5.1.tar.gz";
sha1 = "1b0b74d1af4c297fd82806a9325bb544caf9bb8b";
};
#passthru = { incDir = "openjpeg-1.5.1"; };
});
in
rec {
#### CORE EFL
efl = callPackage ./efl.nix { openjpeg=openjpeg_1; };
evas = callPackage ./evas.nix { };
emotion = callPackage ./emotion.nix { };
elementary = callPackage ./elementary.nix { };
#### WINDOW MANAGER
enlightenment = callPackage ./enlightenment.nix { };
#### APPLICATIONS
econnman = callPackage ./econnman.nix { };
terminology = callPackage ./terminology.nix { };
}

View File

@ -0,0 +1,23 @@
{ stdenv, fetchurl, pkgconfig, e19, python27, python27Packages, dbus, makeWrapper }:
stdenv.mkDerivation rec {
name = "econnman-${version}";
version = "1.1";
src = fetchurl {
url = "http://download.enlightenment.org/rel/apps/econnman/${name}.tar.gz";
sha256 = "057pwwavlvrrq26bncqnfrf449zzaim0zq717xv86av4n940gwv0";
};
buildInputs = [ makeWrapper pkgconfig e19.efl python27 dbus ];
propagatedBuildInputs = [ python27Packages.pythonefl_1_11 python27Packages.dbus e19.elementary ];
postInstall = ''
wrapProgram $out/bin/econnman-bin --prefix PYTHONPATH : ${python27Packages.dbus}/lib/python2.7/site-packages:${python27Packages.pythonefl_1_11}/lib/python2.7/site-packages
'';
meta = {
description = "Econnman is a user interface for the connman network connection manager";
homepage = http://enlightenment.org/;
maintainers = [ stdenv.lib.maintainers.matejc ];
platforms = stdenv.lib.platforms.linux;
license = stdenv.lib.licenses.lgpl3;
};
}

View File

@ -0,0 +1,8 @@
addDbusIncludePath () {
if test -d "$1/include/dbus-1.0"
then
export NIX_CFLAGS_COMPILE="${NIX_CFLAGS_COMPILE} -I$1/include/dbus-1.0 -I $1/lib/dbus-1.0/include"
fi
}
envHooks=(${envHooks[@]} addDbusIncludePath)

33
pkgs/desktops/e19/efl.nix Normal file
View File

@ -0,0 +1,33 @@
{ stdenv, fetchurl, pkgconfig, openssl, libjpeg, zlib, freetype, fontconfig, fribidi, SDL2, SDL, mesa, giflib, libpng, libtiff, glib, gst_all_1, pulseaudio, libsndfile, xlibs, wayland, libdrm, libxkbcommon, udev, utillinuxCurses, dbus, bullet, luajit, python27Packages, openjpeg, doxygen, expat, lua5_2, harfbuzz, jbig2dec, librsvg, dbus_libs, alsaLib, poppler, libraw, libspectre, xineLib, vlc, libwebp, curl }:
stdenv.mkDerivation rec {
name = "efl-${version}";
version = "1.11.2";
src = fetchurl {
url = "http://download.enlightenment.org/rel/libs/efl/${name}.tar.gz";
sha256 = "123jrcifd7i0r9zh8qllqiz3d378fyy7fzkanyki9wbxlz91rk7k";
};
buildInputs = [ pkgconfig openssl zlib freetype fontconfig fribidi SDL2 SDL mesa giflib libpng libtiff glib gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-libav pulseaudio libsndfile xlibs.libXcursor xlibs.printproto xlibs.libX11 libdrm udev utillinuxCurses luajit ];
propagatedBuildInputs = [ wayland libxkbcommon python27Packages.dbus dbus libjpeg xlibs.libXcomposite xlibs.libXdamage xlibs.libXinerama xlibs.libXp xlibs.libXtst xlibs.libXi xlibs.libXext bullet xlibs.libXScrnSaver ] ++ [ xlibs.libXrender xlibs.libXfixes xlibs.libXrandr xlibs.libxkbfile xlibs.libxcb xlibs.xcbutilkeysyms openjpeg doxygen expat lua5_2 harfbuzz jbig2dec librsvg dbus_libs alsaLib poppler libraw libspectre xineLib vlc libwebp curl ];
configureFlags = [ "--with-tests=none" "--enable-sdl" "--enable-drm" "--with-opengl=full" "--enable-image-loader-jp2k" "--enable-xinput22" "--enable-multisense" "--enable-systemd" "--enable-image-loader-webp" "--enable-harfbuzz" "--enable-wayland" "--enable-xine" "--enable-fb" "--disable-tslib" "--with-systemdunitdir=$out/systemd/user" ];
NIX_CFLAGS_COMPILE = [ "-I${xlibs.libXtst}" "-I${dbus_libs}/include/dbus-1.0" "-I${dbus_libs}/lib/dbus-1.0/include" ];
preConfigure = ''
export PKG_CONFIG_PATH="${gst_all_1.gst-plugins-base}/lib/pkgconfig/gstreamer-video-0.10.pc:$PKG_CONFIG_PATH"
'';
setupHook = ./efl-setup-hook.sh;
meta = {
description = "Enlightenment Core libraries";
homepage = http://enlightenment.org/;
maintainers = [ stdenv.lib.maintainers.matejc ];
platforms = stdenv.lib.platforms.linux;
license = stdenv.lib.licenses.lgpl3;
};
}

View File

@ -0,0 +1,20 @@
{ stdenv, fetchurl, pkgconfig, e19, libcap, gdbm }:
stdenv.mkDerivation rec {
name = "elementary-${version}";
version = "1.11.2";
src = fetchurl {
url = "http://download.enlightenment.org/rel/libs/elementary/${name}.tar.gz";
sha256 = "041hwp81qyq4wsw483g2jh52gcanqg046f91pmd0vzgwcgxyixqq";
};
buildInputs = [ pkgconfig e19.efl gdbm ] ++ stdenv.lib.optionals stdenv.isLinux [ libcap ];
preConfigure = ''
export NIX_CFLAGS_COMPILE="-I${e19.efl}/include/ethumb-1 $NIX_CFLAGS_COMPILE"
'';
meta = {
description = "Widget set/toolkit";
homepage = http://enlightenment.org/;
maintainers = [ stdenv.lib.maintainers.matejc ];
platforms = stdenv.lib.platforms.linux;
license = stdenv.lib.licenses.lgpl2;
};
}

View File

@ -0,0 +1,20 @@
{ stdenv, fetchurl, pkgconfig, e19, vlc }:
stdenv.mkDerivation rec {
name = "emotion_generic_players-${version}";
version = "1.11.0";
src = fetchurl {
url = "http://download.enlightenment.org/rel/libs/emotion_generic_players/${name}.tar.gz";
sha256 = "0x6aigsqnfn9vcaj1rj6055s0vh811svzhwz5zghksg4lqipjbjx";
};
buildInputs = [ pkgconfig e19.efl vlc ];
preConfigure = ''
export NIX_CFLAGS_COMPILE="-I${e19.efl}/include/eo-1 $NIX_CFLAGS_COMPILE"
'';
meta = {
description = "Extra video decoders";
homepage = http://enlightenment.org/;
maintainers = [ stdenv.lib.maintainers.matejc ];
platforms = stdenv.lib.platforms.linux;
license = stdenv.lib.licenses.bsd2;
};
}

View File

@ -0,0 +1,38 @@
{ stdenv, fetchurl, pkgconfig, e19, xlibs, libffi, pam, alsaLib, luajit, bzip2, libpthreadstubs, gdbm, libcap, set_freqset_setuid ? false }:
stdenv.mkDerivation rec {
name = "enlightenment-${version}";
version = "0.19.0";
src = fetchurl {
url = "http://download.enlightenment.org/rel/apps/enlightenment/${name}.tar.xz";
sha256 = "0d9s8gwma32hj8h000k1bzibr3zj8qajcf14va3w81k87gkilxfp";
};
buildInputs = [ pkgconfig e19.efl e19.elementary xlibs.libXdmcp xlibs.libxcb xlibs.xcbutilkeysyms xlibs.libXrandr libffi pam alsaLib luajit bzip2 libpthreadstubs gdbm ] ++ stdenv.lib.optionals stdenv.isLinux [ libcap ];
preConfigure = ''
export NIX_CFLAGS_COMPILE="-I${e19.efl}/include/eo-1 -I${e19.efl}/include/ecore-imf-1 -I${e19.efl}/include/ethumb-client-1 -I${e19.efl}/include/ethumb-1 $NIX_CFLAGS_COMPILE"
export USER_SESSION_DIR=$prefix/lib/systemd/user
'';
# this is a hack and without this cpufreq module is not working:
# when set_freqset_setuid is true and "e19_freqset" is set in setuidPrograms (this is taken care of in e19 NixOS module),
# then this postInstall does the folowing:
# 1. moves the "freqset" binary to "e19_freqset",
# 2. linkes "e19_freqset" to enlightenment/bin so that,
# 3. setuidPrograms detects it and makes appropriate stuff to /var/setuid-wrappers/e19_freqset,
# 4. and finaly, linkes /var/setuid-wrappers/e19_freqset to original destination where enlightenment wants it
postInstall = if set_freqset_setuid then ''
export CPUFREQ_DIRPATH=`readlink -f $out/lib/enlightenment/modules/cpufreq/linux-gnu-*`;
mv $CPUFREQ_DIRPATH/freqset $CPUFREQ_DIRPATH/e19_freqset
ln -sv $CPUFREQ_DIRPATH/e19_freqset $out/bin/e19_freqset
ln -sv /var/setuid-wrappers/e19_freqset $CPUFREQ_DIRPATH/freqset
'' else "";
meta = {
description = "The Compositing Window Manager and Desktop Shell";
homepage = http://enlightenment.org/;
maintainers = [ stdenv.lib.maintainers.matejc ];
platforms = stdenv.lib.platforms.linux;
license = stdenv.lib.licenses.bsd2;
};
}

View File

@ -0,0 +1,17 @@
{ stdenv, fetchurl, pkgconfig, e19, zlib, libspectre, gstreamer, gst_plugins_base, gst_ffmpeg, gst_plugins_good, poppler, librsvg, libraw }:
stdenv.mkDerivation rec {
name = "evas_generic_loaders-${version}";
version = "1.11.2";
src = fetchurl {
url = "http://download.enlightenment.org/rel/libs/evas_generic_loaders/${name}.tar.gz";
sha256 = "03p6v7l2fxvldiymqk16pqnbm9llygp6i19qhn3rmrqy1hkjkry6";
};
buildInputs = [ pkgconfig e19.efl zlib libspectre gstreamer gst_plugins_base gst_ffmpeg gst_plugins_good poppler librsvg libraw ];
meta = {
description = "Extra image decoders";
homepage = http://enlightenment.org/;
maintainers = [ stdenv.lib.maintainers.matejc ];
platforms = stdenv.lib.platforms.linux;
license = stdenv.lib.licenses.gpl2;
};
}

View File

@ -0,0 +1,23 @@
{ stdenv, fetchurl, pkgconfig, e19 }:
stdenv.mkDerivation rec {
name = "terminology-${version}";
version = "0.6.1";
src = fetchurl {
url = "http://download.enlightenment.org/rel/apps/terminology/${name}.tar.gz";
sha256 = "1wi9njyfs95y4nb9jd30032qqka5cg7k0wacck8s1yqxwg5ng38x";
};
buildInputs = [ pkgconfig e19.efl e19.elementary ];
preConfigure = ''
export NIX_CFLAGS_COMPILE="-I${e19.efl}/include/eo-1 $NIX_CFLAGS_COMPILE"
export NIX_CFLAGS_COMPILE="-I${e19.efl}/include/ecore-con-1 $NIX_CFLAGS_COMPILE"
export NIX_CFLAGS_COMPILE="-I${e19.efl}/include/eldbus-1 $NIX_CFLAGS_COMPILE"
export NIX_CFLAGS_COMPILE="-I${e19.efl}/include/ethumb-1 $NIX_CFLAGS_COMPILE"
'';
meta = {
description = "The best terminal emulator written with the EFL";
homepage = http://enlightenment.org/;
maintainers = [ stdenv.lib.maintainers.matejc ];
platforms = stdenv.lib.platforms.linux;
license = stdenv.lib.licenses.bsd2;
};
}

View File

@ -1,9 +0,0 @@
source $stdenv/setup
set -e
mkdir -p $out
cd $out
tar zxvf $src
mv ./usr/local/* .
rm -rf ./usr

View File

@ -1,10 +0,0 @@
{stdenv, fetchurl}:
stdenv.mkDerivation {
name = "binary-gwydion-dylan-2.4.0";
builder = ./binary-builder.sh;
src = fetchurl {
url = http://www.gwydiondylan.org/downloads/binaries/linux/x86/tar/gwydion-dylan-2.4.0-x86-linux.tar.gz;
md5 = "52643ad51a455d21fd4d5bf82d98914c";
};
}

View File

@ -1,8 +0,0 @@
source $stdenv/setup
export DYLANDIR=$dylan
export DYLANPATH=$dylan/lib/dylan/2.4.0/x86-linux-gcc
configureFlags="--with-existing-runtime=$dylan/lib/dylan/2.4.0/x86-linux-gcc"
export LD_LIBRARY_PATH="$dylan/lib/dylan/2.4.0/x86-linux-gcc:$LD_LIBRARY_PATH:$boehmgc/lib"
genericBuild

View File

@ -1,13 +0,0 @@
{stdenv, fetchurl, dylan, boehmgc, perl, flex, yacc, readline}:
stdenv.mkDerivation {
name = "gwydion-dylan-2.4.0";
builder = ./builder.sh;
src = fetchurl {
url = http://www.gwydiondylan.org/downloads/src/tar/gwydion-dylan-2.4.0.tar.gz;
md5 = "7ed180bf4ef11e8e8da3bd78b45477a8";
};
inherit boehmgc dylan perl;
buildInputs = [boehmgc dylan perl flex yacc readline];
}

View File

@ -26,11 +26,11 @@ cabal.mkDerivation (self: {
buildTools = [ happy ];
extraLibraries = [ boehmgc gmp ];
configureFlags = "-fllvm -fgmp -fffi";
jailbreak = true;
meta = {
homepage = "http://www.idris-lang.org/";
description = "Functional Programming Language with Dependent Types";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
broken = true;
};
})

View File

@ -0,0 +1,32 @@
diff --git a/src/librustc/back/link.rs b/src/librustc/back/link.rs
index 7a3e912..ced75fa 100644
--- a/src/librustc/back/link.rs
+++ b/src/librustc/back/link.rs
@@ -856,24 +856,15 @@
pub fn get_cc_prog(sess: &Session) -> String {
match sess.opts.cg.linker {
- Some(ref linker) => return linker.to_string(),
- None => {}
+ Some(ref linker) => linker.to_string(),
+ None => "@ccPath@".to_string()
}
-
- // In the future, FreeBSD will use clang as default compiler.
- // It would be flexible to use cc (system's default C compiler)
- // instead of hard-coded gcc.
- // For Windows, there is no cc command, so we add a condition to make it use gcc.
- match sess.targ_cfg.os {
- abi::OsWindows => "gcc",
- _ => "cc",
- }.to_string()
}
pub fn get_ar_prog(sess: &Session) -> String {
match sess.opts.cg.ar {
Some(ref ar) => (*ar).clone(),
- None => "ar".to_string()
+ None => "@arPath@".to_string()
}
}

View File

@ -16,19 +16,19 @@ assert stdenv.gcc.gcc != null;
*/
with ((import ./common.nix) {inherit stdenv; version = "0.12.0-pre-7a25cf3f3"; });
with ((import ./common.nix) {inherit stdenv; version = "0.12.0-pre-79a5448f4"; });
let snapshot = if stdenv.system == "i686-linux"
then "a5e1bb723020ac35173d49600e76b0935e257a6a"
then "6f5464c9ab191d93bfea0894ca7c6f90c3506f2b"
else if stdenv.system == "x86_64-linux"
then "1a2407df17442d93d1c34c916269a345658045d7"
then "72c92895fa9a1dba7880073f2b2b5d0e3e1a2ab6"
else if stdenv.system == "i686-darwin"
then "6648fa88e41ad7c0991a085366e36d56005873ca"
then "545fc45a0071142714639c6be377e6d308c3a4e1"
else if stdenv.system == "x86_64-darwin"
then "71b2d1dfd0abe1052908dc091e098ed22cf272c6"
then "8b44fbbbd1ba519d2e83d0d5ce1f6053d3cab8c6"
else abort "no-snapshot for platform ${stdenv.system}";
snapshotDate = "2014-07-17";
snapshotRev = "9fc8394";
snapshotDate = "2014-09-10";
snapshotRev = "6faa4f3";
snapshotName = "rust-stage0-${snapshotDate}-${snapshotRev}-${platform}-${snapshot}.tar.bz2";
in stdenv.mkDerivation {
@ -38,8 +38,8 @@ in stdenv.mkDerivation {
src = fetchgit {
url = https://github.com/rust-lang/rust;
rev = "7a25cf3f30fa5fae2e868fa910ecc850f5e9ee65";
sha256 = "1hx8vd4gn5plbdvr0zvdvqyw9x9r2vbmh112h2f5d2xxsf9p7rf1";
rev = "79a5448f41dcc6ab52663105a6b02fc5af4c503e";
sha256 = "0v2ahwgb1ls3g4ch6005azjmfh8bs0v0nbmmfpn53zgiiywad2ji";
};
# We need rust to build rust. If we don't provide it, configure will try to download it.
@ -63,7 +63,7 @@ in stdenv.mkDerivation {
configureFlags = [ "--enable-local-rust" "--local-rust-root=$snapshot" ];
# The compiler requires cc, so we patch the source to tell it where to find it
patches = [ ./hardcode_paths.patch ./local_stage0.patch ];
patches = [ ./hardcode_paths.HEAD.patch ./local_stage0.HEAD.patch ];
postPatch = ''
substituteInPlace src/librustc/back/link.rs \
--subst-var-by "ccPath" "${stdenv.gcc}/bin/cc" \

View File

@ -0,0 +1,16 @@
diff --git a/src/etc/local_stage0.sh b/src/etc/local_stage0.sh
index e78f231..6b6773b 100755
--- a/src/etc/local_stage0.sh
+++ b/src/etc/local_stage0.sh
@@ -53,11 +53,6 @@
fi
cp ${PREFIX}/bin/rustc${BIN_SUF} ${TARG_DIR}/stage0/bin/
-cp ${PREFIX}/${LIB_DIR}/${RUSTLIBDIR}/${TARG_DIR}/${LIB_DIR}/* ${TARG_DIR}/stage0/${LIB_DIR}/
-cp ${PREFIX}/${LIB_DIR}/${LIB_PREFIX}extra*${LIB_SUF} ${TARG_DIR}/stage0/${LIB_DIR}/
-cp ${PREFIX}/${LIB_DIR}/${LIB_PREFIX}rust*${LIB_SUF} ${TARG_DIR}/stage0/${LIB_DIR}/
-cp ${PREFIX}/${LIB_DIR}/${LIB_PREFIX}std*${LIB_SUF} ${TARG_DIR}/stage0/${LIB_DIR}/
-cp ${PREFIX}/${LIB_DIR}/${LIB_PREFIX}syntax*${LIB_SUF} ${TARG_DIR}/stage0/${LIB_DIR}/
# do not fail if one of the above fails, as all we need is a working rustc!
exit 0

View File

@ -0,0 +1,6 @@
# Ruby >= 2.1.0 tries to download config.{guess,sub}
fetchgit: fetchgit {
url = "git://git.sv.gnu.org/config.git";
rev = "576c839acca0e082e536fd27568b90a446ce5b96";
sha256 = "11bjngchjhj0qq0ppp8c37rfw0yhp230nvhs2jvlx15i9qbf56a0";
}

View File

@ -18,13 +18,23 @@ g: # Get dependencies from patched gems
aws_sdk_v1 = g.aws_sdk_v1_1_53_0;
backports = g.backports_3_6_0;
bitbucket_backup = g.bitbucket_backup_0_3_1;
blankslate = g.blankslate_2_1_2_4;
builder = g.builder_3_2_2;
buildr = g.buildr_1_4_20;
bundler = g.bundler_1_7_2;
bundler = g.bundler_1_7_3;
celluloid = g.celluloid_0_16_0;
childprocess = g.childprocess_0_5_3;
chronic = g.chronic_0_10_2;
chunky_png = g.chunky_png_1_3_1;
classifier_reborn = g.classifier_reborn_2_0_1;
coderay = g.coderay_1_1_0;
cucumber = g.cucumber_1_3_16;
coffee_script = g.coffee_script_2_3_0;
coffee_script_source = g.coffee_script_source_1_8_0;
colorator = g.colorator_0_1;
compass = g.compass_1_0_1;
compass_core = g.compass_core_1_0_1;
compass_import_once = g.compass_import_once_1_0_5;
cucumber = g.cucumber_1_3_17;
daemons = g.daemons_1_1_9;
diff_lcs = g.diff_lcs_1_2_5;
dimensions = g.dimensions_1_2_0;
@ -40,6 +50,7 @@ g: # Get dependencies from patched gems
fakes3 = g.fakes3_0_1_5_2;
faraday = g.faraday_0_9_0;
faraday_middleware = g.faraday_middleware_0_9_1;
fast_stemmer = g.fast_stemmer_1_0_2;
ffi = g.ffi_1_9_3;
file_tail = g.file_tail_1_0_12;
foreman = g.foreman_0_75_0;
@ -48,19 +59,30 @@ g: # Get dependencies from patched gems
gherkin = g.gherkin_2_12_2;
highline = g.highline_1_6_21;
hike = g.hike_1_2_3;
hitimes = g.hitimes_1_2_2;
hoe = g.hoe_3_7_1;
http_cookie = g.http_cookie_1_0_2;
i18n = g.i18n_0_6_11;
iconv = g.iconv_1_0_4;
jekyll = g.jekyll_2_4_0;
jekyll_coffeescript = g.jekyll_coffeescript_1_0_1;
jekyll_gist = g.jekyll_gist_1_1_0;
jekyll_paginate = g.jekyll_paginate_1_0_0;
jekyll_sass_converter = g.jekyll_sass_converter_1_2_1;
jekyll_watch = g.jekyll_watch_1_1_1;
jsduck = g.jsduck_5_3_4;
json = g.json_1_8_1;
json_pure = g.json_pure_1_8_0;
kramdown = g.kramdown_1_4_2;
launchy = g.launchy_2_4_2;
liquid = g.liquid_2_6_1;
listen = g.listen_2_7_9;
locale = g.locale_2_1_0;
lockfile = g.lockfile_2_1_3;
macaddr = g.macaddr_1_7_1;
mail = g.mail_2_6_1;
mechanize = g.mechanize_2_7_3;
mercenary = g.mercenary_0_3_4;
method_source = g.method_source_0_8_2;
mime_types = g.mime_types_2_3;
mini_portile = g.mini_portile_0_6_0;
@ -81,8 +103,11 @@ g: # Get dependencies from patched gems
papertrail = g.papertrail_0_9_10;
papertrail_cli = g.papertrail_cli_0_9_3;
parallel = g.parallel_0_7_1;
parslet = g.parslet_1_5_0;
posix_spawn = g.posix_spawn_0_3_9;
pry = g.pry_0_9_12_6;
pusher_client = g.pusher_client_0_6_0;
pygments_rb = g.pygments_rb_0_6_0;
rack = g.rack_1_5_2;
rack_protection = g.rack_protection_1_5_3;
rack_test = g.rack_test_0_6_2;
@ -90,8 +115,10 @@ g: # Get dependencies from patched gems
railties = g.railties_4_1_6;
rake = g.rake_10_3_2;
rb_fsevent = g.rb_fsevent_0_9_4;
rb_inotify = g.rb_inotify_0_9_5;
rdiscount = g.rdiscount_2_1_7_1;
rdoc = g.rdoc_4_1_2;
redcarpet = g.redcarpet_3_1_2;
remote_syslog = g.remote_syslog_1_6_14;
riemann_dash = g.riemann_dash_0_2_9;
right_aws = g.right_aws_3_1_0;
@ -104,7 +131,8 @@ g: # Get dependencies from patched gems
rspec_expectations = g.rspec_expectations_2_14_5;
rspec_mocks = g.rspec_mocks_2_14_6;
rubyzip = g.rubyzip_1_1_6;
sass = g.sass_3_4_3;
safe_yaml = g.safe_yaml_1_0_3;
sass = g.sass_3_4_4;
selenium_webdriver = g.selenium_webdriver_2_43_0;
servolux = g.servolux_0_10_0;
sinatra = g.sinatra_1_4_5;
@ -121,7 +149,9 @@ g: # Get dependencies from patched gems
thor = g.thor_0_19_1;
thread_safe = g.thread_safe_0_3_4;
tilt = g.tilt_1_4_1;
timers = g.timers_4_0_1;
tins = g.tins_1_3_2;
toml = g.toml_0_1_1;
travis = g.travis_1_7_1;
trollop = g.trollop_2_0;
typhoeus = g.typhoeus_0_6_9;
@ -138,7 +168,7 @@ g: # Get dependencies from patched gems
xml_simple = g.xml_simple_1_1_2;
yajl_ruby = g.yajl_ruby_1_2_1;
};
gem_nix_args = [ ''autotest-rails'' ''aws-sdk'' ''bitbucket-backup'' ''buildr'' ''cucumber'' ''erubis'' ''execjs'' ''fakes3'' ''foreman'' ''gettext'' ''iconv'' ''jsduck'' ''lockfile'' ''mechanize'' ''nix'' ''papertrail-cli'' ''rails'' ''rake'' ''rb-fsevent'' ''rdoc'' ''remote_syslog'' ''riemann-dash'' ''right_aws'' ''rmail'' ''sass'' ''selenium-webdriver'' ''sinatra-1.3.2'' ''taskjuggler'' ''terminal-notifier'' ''thin'' ''travis'' ''trollop'' ''uglifier'' ''uuid'' ''xapian-full'' ''xapian-ruby'' ''yajl-ruby'' ];
gem_nix_args = [ ''autotest-rails'' ''aws-sdk'' ''bitbucket-backup'' ''buildr'' ''compass'' ''cucumber'' ''erubis'' ''execjs'' ''fakes3'' ''foreman'' ''gettext'' ''iconv'' ''jekyll'' ''jsduck'' ''lockfile'' ''mechanize'' ''nix'' ''papertrail-cli'' ''rails'' ''rake'' ''rb-fsevent'' ''rdoc'' ''remote_syslog'' ''riemann-dash'' ''right_aws'' ''rmail'' ''sass'' ''selenium-webdriver'' ''sinatra-1.3.2'' ''taskjuggler'' ''terminal-notifier'' ''thin'' ''travis'' ''trollop'' ''uglifier'' ''uuid'' ''xapian-full'' ''xapian-ruby'' ''yajl-ruby'' ];
gems = {
ZenTest_4_10_1 = {
basename = ''ZenTest'';
@ -351,6 +381,16 @@ application.'';
requiredGems = [ g.highline_1_6_21 g.json_1_8_1 ];
sha256 = ''17d2pfk0z3cxcx9m90avcp5wxhdbrq23zd665263m3hh9b5qi0fj'';
};
blankslate_2_1_2_4 = {
basename = ''blankslate'';
meta = {
description = ''BlankSlate extracted from Builder.'';
homepage = ''http://github.com/masover/blankslate'';
};
name = ''blankslate-2.1.2.4'';
requiredGems = [ ];
sha256 = ''0jnnq5q5dwy2rbfcl769vd9bk1yn0242f6yjlb9mnqdm9627cdcx'';
};
builder_3_2_2 = {
basename = ''builder'';
meta = {
@ -380,19 +420,30 @@ for those one-off tasks, with a language that's a joy to use.
'';
};
name = ''buildr-1.4.20'';
requiredGems = [ g.rake_0_9_2_2 g.builder_3_2_2 g.net_ssh_2_7_0 g.net_sftp_2_1_2 g.rubyzip_0_9_9 g.json_pure_1_8_0 g.hoe_3_7_1 g.rjb_1_4_9 g.atoulme_Antwrap_0_7_4 g.diff_lcs_1_2_4 g.rspec_expectations_2_14_3 g.rspec_mocks_2_14_3 g.rspec_core_2_14_5 g.rspec_2_14_1 g.xml_simple_1_1_2 g.minitar_0_5_4 g.bundler_1_7_2 g.orderedhash_0_0_6 ];
requiredGems = [ g.rake_0_9_2_2 g.builder_3_2_2 g.net_ssh_2_7_0 g.net_sftp_2_1_2 g.rubyzip_0_9_9 g.json_pure_1_8_0 g.hoe_3_7_1 g.rjb_1_4_9 g.atoulme_Antwrap_0_7_4 g.diff_lcs_1_2_4 g.rspec_expectations_2_14_3 g.rspec_mocks_2_14_3 g.rspec_core_2_14_5 g.rspec_2_14_1 g.xml_simple_1_1_2 g.minitar_0_5_4 g.bundler_1_7_3 g.orderedhash_0_0_6 ];
sha256 = ''0x4ffblw7jg0z49ywfm5abfxgg23di3d661czndwi904cvmghrkv'';
};
bundler_1_7_2 = {
bundler_1_7_3 = {
basename = ''bundler'';
meta = {
description = ''The best way to manage your application's dependencies'';
homepage = ''http://bundler.io'';
longDescription = ''Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably'';
};
name = ''bundler-1.7.2'';
name = ''bundler-1.7.3'';
requiredGems = [ ];
sha256 = ''1xfacbivyi40ig9jzpsv2z42vwghf77n4r65ls0pcnbqn4ypqyhc'';
sha256 = ''00r3b4bchiqbd12y896hmrp5sa6n4391fygg1jmvljx1635x5kyj'';
};
celluloid_0_16_0 = {
basename = ''celluloid'';
meta = {
description = ''Actor-based concurrent object framework for Ruby'';
homepage = ''https://github.com/celluloid/celluloid'';
longDescription = ''Celluloid enables people to build concurrent programs out of concurrent objects just as easily as they build sequential programs out of sequential objects'';
};
name = ''celluloid-0.16.0'';
requiredGems = [ g.timers_4_0_1 ];
sha256 = ''044xk0y7i1xjafzv7blzj5r56s7zr8nzb619arkrl390mf19jxv3'';
};
childprocess_0_5_3 = {
basename = ''childprocess'';
@ -416,6 +467,43 @@ for those one-off tasks, with a language that's a joy to use.
requiredGems = [ ];
sha256 = ''1hrdkn4g8x7dlzxwb1rfgr8kw3bp4ywg5l4y4i9c2g5cwv62yvvn'';
};
chunky_png_1_3_1 = {
basename = ''chunky_png'';
meta = {
description = ''Pure ruby library for read/write, chunk-level access to PNG files'';
homepage = ''http://wiki.github.com/wvanbergen/chunky_png'';
longDescription = '' This pure Ruby library can read and write PNG images without depending on an external
image library, like RMagick. It tries to be memory efficient and reasonably fast.
It supports reading and writing all PNG variants that are defined in the specification,
with one limitation: only 8-bit color depth is supported. It supports all transparency,
interlacing and filtering options the PNG specifications allows. It can also read and
write textual metadata from PNG files. Low-level read/write access to PNG chunks is
also possible.
This library supports simple drawing on the image canvas and simple operations like
alpha composition and cropping. Finally, it can import from and export to RMagick for
interoperability.
Also, have a look at OilyPNG at http://github.com/wvanbergen/oily_png. OilyPNG is a
drop in mixin module that implements some of the ChunkyPNG algorithms in C, which
provides a massive speed boost to encoding and decoding.
'';
};
name = ''chunky_png-1.3.1'';
requiredGems = [ ];
sha256 = ''1kpcv2wrx3zyfi5jbsnd9da1wmkjwidnmpshq6vhzz0r8hp7ai8a'';
};
classifier_reborn_2_0_1 = {
basename = ''classifier_reborn'';
meta = {
description = ''A general classifier module to allow Bayesian and other types of classifications.'';
homepage = ''https://github.com/jekyll/classifier-reborn'';
};
name = ''classifier-reborn-2.0.1'';
requiredGems = [ g.fast_stemmer_1_0_2 ];
sha256 = ''1p90lwn6x2akg882h597vb6fdbw6zmiw7pqlpqsc1dj243zf0pks'';
};
coderay_1_1_0 = {
basename = ''coderay'';
meta = {
@ -427,16 +515,88 @@ for those one-off tasks, with a language that's a joy to use.
requiredGems = [ ];
sha256 = ''059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s'';
};
cucumber_1_3_16 = {
coffee_script_2_3_0 = {
basename = ''coffee_script'';
meta = {
description = ''Ruby CoffeeScript Compiler'';
homepage = ''http://github.com/josh/ruby-coffee-script'';
longDescription = '' Ruby CoffeeScript is a bridge to the JS CoffeeScript compiler.
'';
};
name = ''coffee-script-2.3.0'';
requiredGems = [ g.coffee_script_source_1_8_0 g.execjs_2_2_1 ];
sha256 = ''0i0p52f2s7hk8sq3q9342and3whjnhjhc7ldg8zmnjjcm44asm3d'';
};
coffee_script_source_1_8_0 = {
basename = ''coffee_script_source'';
meta = {
description = ''The CoffeeScript Compiler'';
homepage = ''http://jashkenas.github.com/coffee-script/'';
longDescription = '' CoffeeScript is a little language that compiles into JavaScript.
Underneath all of those embarrassing braces and semicolons,
JavaScript has always had a gorgeous object model at its heart.
CoffeeScript is an attempt to expose the good parts of JavaScript
in a simple way.
'';
};
name = ''coffee-script-source-1.8.0'';
requiredGems = [ ];
sha256 = ''04998xd43z9kqs6kmzvng90s2xn3ybp8918rq7xz6ljhv8yjqm88'';
};
colorator_0_1 = {
basename = ''colorator'';
meta = {
description = ''String core extensions for terminal coloring.'';
homepage = ''https://github.com/octopress/colorator'';
longDescription = ''Colorize your text in the terminal.'';
};
name = ''colorator-0.1'';
requiredGems = [ ];
sha256 = ''09zp15hyd9wlbgf1kmrf4rnry8cpvh1h9fj7afarlqcy4hrfdpvs'';
};
compass_1_0_1 = {
basename = ''compass'';
meta = {
description = ''A Real Stylesheet Framework'';
homepage = ''http://compass-style.org'';
longDescription = ''Compass is a Sass-based Stylesheet Framework that streamlines the creation and maintenance of CSS.'';
};
name = ''compass-1.0.1'';
requiredGems = [ g.sass_3_4_4 g.compass_core_1_0_1 g.compass_import_once_1_0_5 g.chunky_png_1_3_1 g.rb_fsevent_0_9_4 g.rb_inotify_0_9_5 ];
sha256 = ''0cxb6nbj37wz2zwwb4pkbvg9pg0ymamxx9v400h9ibvlb5n0ri40'';
};
compass_core_1_0_1 = {
basename = ''compass_core'';
meta = {
description = ''The Compass core stylesheet library'';
homepage = ''http://compass-style.org/reference/compass/'';
longDescription = ''The Compass core stylesheet library and minimum required ruby extensions. This library can be used stand-alone without the compass ruby configuration file or compass command line tools.'';
};
name = ''compass-core-1.0.1'';
requiredGems = [ g.sass_3_4_4 g.multi_json_1_10_1 ];
sha256 = ''0zhbmgjq6s9j2qdx3cz0v8s216mh8g0ymk4fzmq3c4an9rryl1zx'';
};
compass_import_once_1_0_5 = {
basename = ''compass_import_once'';
meta = {
description = ''Speed up your Sass compilation by making @import only import each file once.'';
homepage = ''https://github.com/chriseppstein/compass/tree/master/import-once'';
longDescription = ''Changes the behavior of Sass's @import directive to only import a file once.'';
};
name = ''compass-import-once-1.0.5'';
requiredGems = [ g.sass_3_4_4 ];
sha256 = ''0bn7gwbfz7jvvdd0qdfqlx67fcb83gyvxqc7dr9fhcnks3z8z5rq'';
};
cucumber_1_3_17 = {
basename = ''cucumber'';
meta = {
description = ''cucumber-1.3.16'';
description = ''cucumber-1.3.17'';
homepage = ''http://cukes.info'';
longDescription = ''Behaviour Driven Development with elegance and joy'';
};
name = ''cucumber-1.3.16'';
name = ''cucumber-1.3.17'';
requiredGems = [ g.builder_3_2_2 g.diff_lcs_1_2_5 g.gherkin_2_12_2 g.multi_json_1_10_1 g.multi_test_0_1_1 ];
sha256 = ''11cjw2d03r41b5pn5in6q822s3v6bpd8isxc9dl7by01jrzi0662'';
sha256 = ''1gjnxxrcf43mzs5qlg1m0b61g8vwfzjkj1wwi6xbpsqlhcwjjq1x'';
};
daemons_1_1_9 = {
basename = ''daemons'';
@ -657,6 +817,17 @@ using TCP/IP, especially if custom protocols are required.'';
requiredGems = [ g.faraday_0_9_0 ];
sha256 = ''1kndkrww1biz9j64fnyaqgis1gdiawxfv0ncadsz06gd555fgs6q'';
};
fast_stemmer_1_0_2 = {
basename = ''fast_stemmer'';
meta = {
description = ''Fast Porter stemmer based on a C version of algorithm'';
homepage = ''http://github.com/romanbsd/fast-stemmer'';
longDescription = ''Fast Porter stemmer based on a C version of algorithm'';
};
name = ''fast-stemmer-1.0.2'';
requiredGems = [ ];
sha256 = ''0688clyk4xxh3kdb18vi089k90mca8ji5fwaknh3da5wrzcrzanh'';
};
ffi_1_9_3 = {
basename = ''ffi'';
meta = {
@ -752,6 +923,17 @@ minutes of work.
requiredGems = [ ];
sha256 = ''0i6c9hrszzg3gn2j41v3ijnwcm8cc2931fnjiv6mnpl4jcjjykhm'';
};
hitimes_1_2_2 = {
basename = ''hitimes'';
meta = {
description = ''Hitimes is a fast, high resolution timer library for recording performance metrics. It uses the appropriate low method calls for each system to get the highest granularity time increments possible.'';
homepage = ''http://github.com/copiousfreetime/hitimes'';
longDescription = ''Hitimes is a fast, high resolution timer library for recording performance metrics. It uses the appropriate low method calls for each system to get the highest granularity time increments possible. It currently supports any of the following systems: * any system with the POSIX call `clock_gettime()` * Mac OS X * Windows * JRuby Using Hitimes can be faster than using a series of `Time.new` calls, and it will have a much higher granularity. It is definitely faster than using `Process.times`.'';
};
name = ''hitimes-1.2.2'';
requiredGems = [ ];
sha256 = ''17y3ggqxl3m6x9gqpgdn39z0pxpmw666d40r39bs7ngdmy680jn4'';
};
hoe_3_7_1 = {
basename = ''hoe'';
meta = {
@ -805,6 +987,67 @@ For extra goodness, see: http://seattlerb.rubyforge.org/hoe/Hoe.pdf'';
requiredGems = [ ];
sha256 = ''16sgj6gqs4bgwv6q4vv811fb43908psr33dz7sphn1z8la3y7m2v'';
};
jekyll_2_4_0 = {
basename = ''jekyll'';
meta = {
description = ''A simple, blog aware, static site generator.'';
homepage = ''https://github.com/jekyll/jekyll'';
longDescription = ''Jekyll is a simple, blog aware, static site generator.'';
};
name = ''jekyll-2.4.0'';
requiredGems = [ g.liquid_2_6_1 g.kramdown_1_4_2 g.mercenary_0_3_4 g.safe_yaml_1_0_3 g.colorator_0_1 g.pygments_rb_0_6_0 g.redcarpet_3_1_2 g.toml_0_1_1 g.jekyll_paginate_1_0_0 g.jekyll_gist_1_1_0 g.jekyll_coffeescript_1_0_1 g.jekyll_sass_converter_1_2_1 g.jekyll_watch_1_1_1 g.classifier_reborn_2_0_1 ];
sha256 = ''1n8m0cw91yayvcspqi3x9y9y0nahagg0sy8r6pn0zplqg1vh7y1l'';
};
jekyll_coffeescript_1_0_1 = {
basename = ''jekyll_coffeescript'';
meta = {
description = ''A CoffeeScript converter for Jekyll.'';
homepage = ''https://github.com/jekyll/jekyll-coffeescript'';
};
name = ''jekyll-coffeescript-1.0.1'';
requiredGems = [ g.coffee_script_2_3_0 ];
sha256 = ''19nkqbaxqbzqbfbi7sgshshj2krp9ap88m9fc5pa6mglb2ypk3hg'';
};
jekyll_gist_1_1_0 = {
basename = ''jekyll_gist'';
meta = {
description = ''Liquid tag for displaying GitHub Gists in Jekyll sites.'';
homepage = ''https://github.com/jekyll/jekyll-gist'';
};
name = ''jekyll-gist-1.1.0'';
requiredGems = [ ];
sha256 = ''06d4jwf64fl7x3dqfimnfqzr4d3wbsdz2l4fif35j91mmh37nmq9'';
};
jekyll_paginate_1_0_0 = {
basename = ''jekyll_paginate'';
meta = {
description = ''Built-in Pagination Generator for Jekyll'';
homepage = ''https://github.com/jekyll/jekyll-paginate'';
};
name = ''jekyll-paginate-1.0.0'';
requiredGems = [ ];
sha256 = ''1p01c3mncqrzyiskggdxd4cka1fl4ydlphhzbcfx9pylhrishkjk'';
};
jekyll_sass_converter_1_2_1 = {
basename = ''jekyll_sass_converter'';
meta = {
description = ''A basic Sass converter for Jekyll.'';
homepage = ''https://github.com/jekyll/jekyll-sass-converter'';
};
name = ''jekyll-sass-converter-1.2.1'';
requiredGems = [ g.sass_3_4_4 ];
sha256 = ''1w221nzcpaqh2llflciwhbzw1sqxjavwwzbri9n4qkj057a73ar1'';
};
jekyll_watch_1_1_1 = {
basename = ''jekyll_watch'';
meta = {
description = ''Rebuild your Jekyll site when a file changes with the `--watch` switch.'';
homepage = ''https://github.com/jekyll/jekyll-watch'';
};
name = ''jekyll-watch-1.1.1'';
requiredGems = [ g.listen_2_7_9 ];
sha256 = ''0q0skw4fjfrjaskfdvkknfy81a1pbr0mlhc2lrbpb533l5xm3gwz'';
};
jsduck_5_3_4 = {
basename = ''jsduck'';
meta = {
@ -838,6 +1081,19 @@ For extra goodness, see: http://seattlerb.rubyforge.org/hoe/Hoe.pdf'';
requiredGems = [ ];
sha256 = ''0kkn5zhiffav2cffj43wwvzj07825r4j463ilfjgik034vnbjs83'';
};
kramdown_1_4_2 = {
basename = ''kramdown'';
meta = {
description = ''kramdown is a fast, pure-Ruby Markdown-superset converter.'';
homepage = ''http://kramdown.gettalong.org'';
longDescription = ''kramdown is yet-another-markdown-parser but fast, pure Ruby,
using a strict syntax definition and supporting several common extensions.
'';
};
name = ''kramdown-1.4.2'';
requiredGems = [ ];
sha256 = ''1a1y2a7aysx45qhc6dpbfnlcs1syp04ix12q62f6z84zqrb996xf'';
};
launchy_2_4_2 = {
basename = ''launchy'';
meta = {
@ -849,6 +1105,27 @@ For extra goodness, see: http://seattlerb.rubyforge.org/hoe/Hoe.pdf'';
requiredGems = [ g.addressable_2_3_6 ];
sha256 = ''0i1nmlrqpnk2q6f7iq85cqaa7b8fw4bmqm57w60g92lsfmszs8iv'';
};
liquid_2_6_1 = {
basename = ''liquid'';
meta = {
description = ''A secure, non-evaling end user template engine with aesthetic markup.'';
homepage = ''http://www.liquidmarkup.org'';
};
name = ''liquid-2.6.1'';
requiredGems = [ ];
sha256 = ''0fc67cx36x05hsw0cc56la4qr3939g34cdgqmqgdi8yzs72cbv7x'';
};
listen_2_7_9 = {
basename = ''listen'';
meta = {
description = ''Listen to file modifications'';
homepage = ''https://github.com/guard/listen'';
longDescription = ''The Listen gem listens to file modifications and notifies you about the changes. Works everywhere!'';
};
name = ''listen-2.7.9'';
requiredGems = [ g.celluloid_0_16_0 g.rb_fsevent_0_9_4 g.rb_inotify_0_9_5 ];
sha256 = ''1i9m8fc1w8khwpjxfv9430bqbl4df128i4r8gskgvi3pd4678llf'';
};
locale_2_1_0 = {
basename = ''locale'';
meta = {
@ -909,6 +1186,17 @@ a history.'';
requiredGems = [ g.net_http_digest_auth_1_4 g.net_http_persistent_2_9_4 g.mime_types_2_3 g.http_cookie_1_0_2 g.nokogiri_1_6_3_1 g.ntlm_http_0_1_1 g.webrobots_0_1_1 g.domain_name_0_5_21 ];
sha256 = ''00jkazj8fqnynaxca0lnwx5a084irxrnw8n8i0kppq4vg71g7rrx'';
};
mercenary_0_3_4 = {
basename = ''mercenary'';
meta = {
description = ''Lightweight and flexible library for writing command-line apps in Ruby.'';
homepage = ''https://github.com/jekyll/mercenary'';
longDescription = ''Lightweight and flexible library for writing command-line apps in Ruby.'';
};
name = ''mercenary-0.3.4'';
requiredGems = [ ];
sha256 = ''0fg8pbixs68aqx6slp7cpbl0cwa8c4x8rf1s66f7icqa6i9ifcfn'';
};
method_source_0_8_2 = {
basename = ''method_source'';
meta = {
@ -1252,6 +1540,27 @@ enough of it.'';
requiredGems = [ ];
sha256 = ''1kzz6ydg7r23ks2b7zbpx4vz3h186n19vhgnjcwi7xwd6h2f1fsq'';
};
parslet_1_5_0 = {
basename = ''parslet'';
meta = {
description = ''Parser construction library with great error reporting in Ruby.'';
homepage = ''http://kschiess.github.com/parslet'';
};
name = ''parslet-1.5.0'';
requiredGems = [ g.blankslate_2_1_2_4 ];
sha256 = ''0qp1m8n3m6k6g22nn1ivcfkvccq5jmbkw53vvcjw5xssq179l9z3'';
};
posix_spawn_0_3_9 = {
basename = ''posix_spawn'';
meta = {
description = ''posix_spawnp(2) for ruby'';
homepage = ''http://github.com/rtomayko/posix-spawn'';
longDescription = ''posix-spawn uses posix_spawnp(2) for faster process spawning'';
};
name = ''posix-spawn-0.3.9'';
requiredGems = [ ];
sha256 = ''042i1afggy1sv2jmdjjjhyffas28xp2r1ylj5xfv3hchy3b4civ3'';
};
pry_0_9_12_6 = {
basename = ''pry'';
meta = {
@ -1274,6 +1583,17 @@ enough of it.'';
requiredGems = [ g.websocket_1_2_1 g.json_1_8_1 ];
sha256 = ''0n7l630qg6wgzak45b6gfjg9a0fmpbrs7mwchqqbja9mjs95r8qy'';
};
pygments_rb_0_6_0 = {
basename = ''pygments_rb'';
meta = {
description = ''pygments wrapper for ruby'';
homepage = ''https://github.com/tmm1/pygments.rb'';
longDescription = ''pygments.rb exposes the pygments syntax highlighter to Ruby'';
};
name = ''pygments.rb-0.6.0'';
requiredGems = [ g.yajl_ruby_1_1_0 g.posix_spawn_0_3_9 ];
sha256 = ''0jszj99cirbkxaqllbgnp9718v32xhvg08rfldvr10gy8i7bhy2s'';
};
rack_1_5_2 = {
basename = ''rack'';
meta = {
@ -1325,7 +1645,7 @@ request helpers feature.'';
longDescription = ''Ruby on Rails is a full-stack web framework optimized for programmer happiness and sustainable productivity. It encourages beautiful code by favoring convention over configuration.'';
};
name = ''rails-4.1.6'';
requiredGems = [ g.activesupport_4_1_6 g.actionpack_4_1_6 g.actionview_4_1_6 g.activemodel_4_1_6 g.activerecord_4_1_6 g.actionmailer_4_1_6 g.railties_4_1_6 g.bundler_1_7_2 g.sprockets_rails_2_1_4 ];
requiredGems = [ g.activesupport_4_1_6 g.actionpack_4_1_6 g.actionview_4_1_6 g.activemodel_4_1_6 g.activerecord_4_1_6 g.actionmailer_4_1_6 g.railties_4_1_6 g.bundler_1_7_3 g.sprockets_rails_2_1_4 ];
sha256 = ''187g903gmni3prd5i768yfgszc4ak5kmrazavr93d0ybfdbcjlgk'';
};
railties_4_1_6 = {
@ -1393,6 +1713,17 @@ Rake has the following features:
requiredGems = [ ];
sha256 = ''12if5xsik64kihxf5awsyavlp595y47g9qz77vfp2zvkxgglaka7'';
};
rb_inotify_0_9_5 = {
basename = ''rb_inotify'';
meta = {
description = ''A Ruby wrapper for Linux's inotify, using FFI'';
homepage = ''http://github.com/nex3/rb-inotify'';
longDescription = ''A Ruby wrapper for Linux's inotify, using FFI'';
};
name = ''rb-inotify-0.9.5'';
requiredGems = [ g.ffi_1_9_3 ];
sha256 = ''0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9'';
};
rdiscount_2_1_7_1 = {
basename = ''rdiscount'';
meta = {
@ -1416,6 +1747,17 @@ from the command-line.'';
requiredGems = [ g.json_1_8_1 ];
sha256 = ''0cqhjidw657d8irkypxsrv6dr4y9r8csg9inaq40c3iz110cc8w6'';
};
redcarpet_3_1_2 = {
basename = ''redcarpet'';
meta = {
description = ''Markdown that smells nice'';
homepage = ''http://github.com/vmg/redcarpet'';
longDescription = ''A fast, safe and extensible Markdown to (X)HTML parser'';
};
name = ''redcarpet-3.1.2'';
requiredGems = [ ];
sha256 = ''076p52lkns90hqs27rs4kns2bg7maz8qxr87bl34yd6in319flzz'';
};
remote_syslog_1_6_14 = {
basename = ''remote_syslog'';
meta = {
@ -1435,7 +1777,7 @@ from the command-line.'';
longDescription = ''HTTP dashboard for the distributed event system Riemann.'';
};
name = ''riemann-dash-0.2.9'';
requiredGems = [ g.erubis_2_7_0 g.sinatra_1_4_5 g.sass_3_4_3 g.webrick_1_3_1 g.multi_json_1_3_6 ];
requiredGems = [ g.erubis_2_7_0 g.sinatra_1_4_5 g.sass_3_4_4 g.webrick_1_3_1 g.multi_json_1_3_6 ];
sha256 = ''0ws5wmjbv8w9lcr3i2mdinj2qm91p6c85k6c067i67cf0p90jxq3'';
};
right_aws_3_1_0 = {
@ -1637,7 +1979,18 @@ RKelly[https://github.com/tenderlove/rkelly] JavaScript parser.'';
requiredGems = [ ];
sha256 = ''17ha7kmgcnhnxyfp9wgyrd2synp17v9g8j1pknhfd2v9x5g475m9'';
};
sass_3_4_3 = {
safe_yaml_1_0_3 = {
basename = ''safe_yaml'';
meta = {
description = ''SameYAML provides an alternative implementation of YAML.load suitable for accepting user input in Ruby applications.'';
homepage = ''https://github.com/dtao/safe_yaml'';
longDescription = ''Parse YAML safely'';
};
name = ''safe_yaml-1.0.3'';
requiredGems = [ ];
sha256 = ''063bykyk40s3rhy1dxfbvl69s179n1iny418z4wqjbvhrmjn18wl'';
};
sass_3_4_4 = {
basename = ''sass'';
meta = {
description = ''A powerful but elegant CSS compiler that makes CSS fun again.'';
@ -1648,9 +2001,9 @@ RKelly[https://github.com/tenderlove/rkelly] JavaScript parser.'';
command line tool or a web-framework plugin.
'';
};
name = ''sass-3.4.3'';
name = ''sass-3.4.4'';
requiredGems = [ ];
sha256 = ''0k9qv35wf28qjlv8a1nmvv8n71wxnqim1kwf95igvngys6kih7ds'';
sha256 = ''0xvdj5lb062z1byq7s8f8zmp5kkjhghih5rfdb1q61mmmbmy9lw7'';
};
selenium_webdriver_2_43_0 = {
basename = ''selenium_webdriver'';
@ -1849,6 +2202,17 @@ management.
requiredGems = [ ];
sha256 = ''00sr3yy7sbqaq7cb2d2kpycajxqf1b1wr1yy33z4bnzmqii0b0ir'';
};
timers_4_0_1 = {
basename = ''timers'';
meta = {
description = ''Schedule procs to run after a certain time, or at periodic intervals, using any API that accepts a timeout'';
homepage = ''https://github.com/celluloid/timers'';
longDescription = ''Pure Ruby one-shot and periodic timers'';
};
name = ''timers-4.0.1'';
requiredGems = [ g.hitimes_1_2_2 ];
sha256 = ''03ahv07wn1f2g3c5843q7sf03a81518lq5624s9f49kbrswa2p7l'';
};
tins_0_13_2 = {
basename = ''tins'';
meta = {
@ -1871,6 +2235,17 @@ management.
requiredGems = [ ];
sha256 = ''1i27zj1bhmgq19f3i5i08njprfnlv3yi5frm8ax6w0b342p6v8ly'';
};
toml_0_1_1 = {
basename = ''toml'';
meta = {
description = ''Parse your TOML.'';
homepage = ''http://github.com/jm/toml'';
longDescription = ''Parse your TOML, seriously.'';
};
name = ''toml-0.1.1'';
requiredGems = [ g.parslet_1_5_0 ];
sha256 = ''1m5dv66qnbbg0r2zpp45hzq2nkmc4qaq0xmqw8j1kwkrpiwihwp8'';
};
travis_1_7_1 = {
basename = ''travis'';
meta = {
@ -2030,6 +2405,16 @@ to Ruby/JRuby.
requiredGems = [ ];
sha256 = ''0ni8cbkj7l2k5pc4fs2jzp1ymxy4xqa2jc681l4y9iy9chrayddb'';
};
yajl_ruby_1_1_0 = {
basename = ''yajl_ruby'';
meta = {
description = ''Ruby C bindings to the excellent Yajl JSON stream-based parser library.'';
homepage = ''http://github.com/brianmario/yajl-ruby'';
};
name = ''yajl-ruby-1.1.0'';
requiredGems = [ ];
sha256 = ''0sj46j47icb12hdhcfh76rnvddyiic5ifqzkh3kla1vcr505kf4m'';
};
yajl_ruby_1_2_1 = {
basename = ''yajl_ruby'';
meta = {

View File

@ -132,4 +132,6 @@ in
zcat ${patch} | patch -p 1
''; # */
};
bundler = { dontPatchShebangs=1; };
}

View File

@ -0,0 +1,94 @@
{ stdenv, fetchurl, fetchFromGitHub
, zlib, zlibSupport ? true
, openssl, opensslSupport ? true
, gdbm, gdbmSupport ? true
, ncurses, readline, cursesSupport ? false
, groff, docSupport ? false
, ruby_1_8_7, autoreconfHook, bison, useRailsExpress ? true
}:
let
op = stdenv.lib.optional;
ops = stdenv.lib.optionals;
patchSet = import ./rvm-patchsets.nix { inherit fetchFromGitHub; };
baseruby = ruby_1_8_7.override { useRailsExpress = false; };
in
stdenv.mkDerivation rec {
version = with passthru; "${majorVersion}.${minorVersion}.${teenyVersion}-p${patchLevel}";
name = "ruby-${version}";
src = if useRailsExpress then fetchFromGitHub {
owner = "ruby";
repo = "ruby";
rev = "v1_8_7_${passthru.patchLevel}";
sha256 = "1xddhxr0j26hpxfixvhqdscwk2ri846w2129fcfwfjzvy19igswx";
} else fetchurl {
url = "http://cache.ruby-lang.org/pub/ruby/1.8/${name}.tar.bz2";
sha256 = "1qq7khilwkayrhwmzlxk83scrmiqfi7lgsn4c63znyvz2c1lgqxl";
};
# Have `configure' avoid `/usr/bin/nroff' in non-chroot builds.
NROFF = "${groff}/bin/nroff";
buildInputs = ops useRailsExpress [ autoreconfHook bison ]
++ (ops cursesSupport [ ncurses readline ] )
++ (op docSupport groff )
++ (op zlibSupport zlib)
++ (op opensslSupport openssl)
++ (op gdbmSupport gdbm);
patches = ops useRailsExpress [
"${patchSet}/patches/ruby/1.8.7/p374/railsexpress/01-ignore-generated-files.patch"
"${patchSet}/patches/ruby/1.8.7/p374/railsexpress/02-fix-tests-for-osx.patch"
"${patchSet}/patches/ruby/1.8.7/p374/railsexpress/03-sigvtalrm-fix.patch"
"${patchSet}/patches/ruby/1.8.7/p374/railsexpress/04-railsbench-gc-patch.patch"
"${patchSet}/patches/ruby/1.8.7/p374/railsexpress/05-display-full-stack-trace.patch"
"${patchSet}/patches/ruby/1.8.7/p374/railsexpress/06-better-source-file-tracing.patch"
"${patchSet}/patches/ruby/1.8.7/p374/railsexpress/07-heap-dump-support.patch"
"${patchSet}/patches/ruby/1.8.7/p374/railsexpress/08-fork-support-for-gc-logging.patch"
"${patchSet}/patches/ruby/1.8.7/p374/railsexpress/09-track-malloc-size.patch"
"${patchSet}/patches/ruby/1.8.7/p374/railsexpress/10-track-object-allocation.patch"
"${patchSet}/patches/ruby/1.8.7/p374/railsexpress/11-expose-heap-slots.patch"
"${patchSet}/patches/ruby/1.8.7/p374/railsexpress/12-fix-heap-size-growth-logic.patch"
"${patchSet}/patches/ruby/1.8.7/p374/railsexpress/13-heap-slot-size.patch"
"${patchSet}/patches/ruby/1.8.7/p374/railsexpress/14-add-trace-stats-enabled-methods.patch"
"${patchSet}/patches/ruby/1.8.7/p374/railsexpress/15-track-live-dataset-size.patch"
"${patchSet}/patches/ruby/1.8.7/p374/railsexpress/16-add-object-size-information-to-heap-dump.patch"
"${patchSet}/patches/ruby/1.8.7/p374/railsexpress/17-caller-for-all-threads.patch"
];
configureFlags = [ "--enable-shared" "--enable-pthread" ]
++ op useRailsExpress "--with-baseruby=${baseruby}/bin/ruby";
installFlags = stdenv.lib.optionalString docSupport "install-doc";
postInstall = ''
# Bundler tries to create this directory
mkdir -pv $out/${passthru.gemPath}
mkdir -p $out/nix-support
cat > $out/nix-support/setup-hook <<EOF
addGemPath() {
addToSearchPath GEM_PATH \$1/${passthru.gemPath}
}
envHooks+=(addGemPath)
EOF
'';
meta = {
license = "Ruby";
homepage = "http://www.ruby-lang.org/en/";
description = "The Ruby language";
};
passthru = rec {
majorVersion = "1";
minorVersion = "8";
teenyVersion = "7";
patchLevel = "374";
libPath = "lib/ruby/${majorVersion}.${minorVersion}";
gemPath = "lib/ruby/gems/${majorVersion}.${minorVersion}";
};
}

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