Merge remote-tracking branch 'origin/master' into staging
This commit is contained in:
commit
91ec6e0d90
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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>";
|
||||
|
@ -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 {
|
||||
|
@ -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!
|
||||
|
||||
|
@ -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
|
||||
|
@ -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";
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -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") {
|
||||
|
@ -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
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -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 ];
|
||||
|
||||
|
@ -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}";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
116
nixos/modules/services/monitoring/collectd.nix
Normal file
116
nixos/modules/services/monitoring/collectd.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
}
|
@ -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
|
||||
|
@ -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";
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
@ -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;
|
||||
}; };
|
||||
};
|
||||
}
|
||||
|
@ -305,7 +305,6 @@ in
|
||||
uid = config.ids.uids.znc;
|
||||
home = cfg.dataDir;
|
||||
createHome = true;
|
||||
createUser = true;
|
||||
};
|
||||
|
||||
users.extraGroups = optional (cfg.user == defaultUser)
|
||||
|
@ -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 ];
|
||||
|
@ -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 ""}
|
||||
|
||||
|
@ -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.
|
||||
'';
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -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 = {
|
||||
|
94
nixos/modules/services/x11/desktop-managers/e19.nix
Normal file
94
nixos/modules/services/x11/desktop-managers/e19.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
};
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
|
@ -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";
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -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 = "";
|
||||
|
@ -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
|
||||
|
@ -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}
|
||||
'';
|
||||
});
|
||||
};
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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 {};
|
||||
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
@ -14,6 +14,6 @@ stdenv.mkDerivation rec {
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
platforms = platforms.linux;
|
||||
maintainers = maintainers.mornfall;
|
||||
maintainers = [ maintainers.mornfall ];
|
||||
};
|
||||
}
|
||||
|
@ -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; [
|
||||
|
@ -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}
|
||||
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
28
pkgs/applications/editors/vanubi/default.nix
Normal file
28
pkgs/applications/editors/vanubi/default.nix
Normal 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 ];
|
||||
};
|
||||
}
|
@ -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
@ -21,6 +21,6 @@ stdenv.mkDerivation rec {
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
platforms = platforms.linux;
|
||||
maintainers = maintainers.mornfall;
|
||||
maintainers = [ maintainers.mornfall ];
|
||||
};
|
||||
}
|
||||
|
45
pkgs/applications/graphics/solvespace/default.nix
Normal file
45
pkgs/applications/graphics/solvespace/default.nix
Normal 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;
|
||||
};
|
||||
}
|
@ -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 = [
|
||||
|
@ -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 ];
|
||||
|
@ -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 = ".";
|
||||
|
37
pkgs/applications/misc/monero/default.nix
Normal file
37
pkgs/applications/misc/monero/default.nix
Normal 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;
|
||||
};
|
||||
}
|
24
pkgs/applications/misc/openbox-menu/default.nix
Normal file
24
pkgs/applications/misc/openbox-menu/default.nix
Normal 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;
|
||||
};
|
||||
}
|
11
pkgs/applications/misc/openbox-menu/with-svg.patch
Normal file
11
pkgs/applications/misc/openbox-menu/with-svg.patch
Normal 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)
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
@ -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 ];
|
||||
};
|
||||
})
|
||||
|
@ -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
|
||||
|
@ -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 { };
|
||||
|
@ -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 =
|
||||
|
@ -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";
|
||||
|
||||
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
@ -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 ];
|
||||
|
@ -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}";
|
||||
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
}
|
@ -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; [
|
||||
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
43
pkgs/applications/science/logic/ott/default.nix
Normal file
43
pkgs/applications/science/logic/ott/default.nix
Normal 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;
|
||||
};
|
||||
}
|
@ -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
|
||||
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
124
pkgs/applications/science/math/mathematica/9.nix
Normal file
124
pkgs/applications/science/math/mathematica/9.nix
Normal 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;
|
||||
};
|
||||
}
|
@ -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 \
|
||||
|
@ -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";
|
||||
|
@ -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 ];
|
||||
|
@ -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 ];
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
@ -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
|
||||
'';
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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
|
||||
'';
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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"
|
||||
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
30
pkgs/data/fonts/stix-otf/default.nix
Normal file
30
pkgs/data/fonts/stix-otf/default.nix
Normal 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];
|
||||
};
|
||||
}
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
@ -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";
|
||||
})
|
||||
];
|
||||
|
||||
|
26
pkgs/desktops/e19/default.nix
Normal file
26
pkgs/desktops/e19/default.nix
Normal 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 { };
|
||||
|
||||
}
|
23
pkgs/desktops/e19/econnman.nix
Normal file
23
pkgs/desktops/e19/econnman.nix
Normal 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;
|
||||
};
|
||||
}
|
8
pkgs/desktops/e19/efl-setup-hook.sh
Executable file
8
pkgs/desktops/e19/efl-setup-hook.sh
Executable 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
33
pkgs/desktops/e19/efl.nix
Normal 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;
|
||||
};
|
||||
}
|
20
pkgs/desktops/e19/elementary.nix
Normal file
20
pkgs/desktops/e19/elementary.nix
Normal 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;
|
||||
};
|
||||
}
|
20
pkgs/desktops/e19/emotion.nix
Normal file
20
pkgs/desktops/e19/emotion.nix
Normal 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;
|
||||
};
|
||||
}
|
38
pkgs/desktops/e19/enlightenment.nix
Normal file
38
pkgs/desktops/e19/enlightenment.nix
Normal 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;
|
||||
};
|
||||
}
|
17
pkgs/desktops/e19/evas.nix
Normal file
17
pkgs/desktops/e19/evas.nix
Normal 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;
|
||||
};
|
||||
}
|
23
pkgs/desktops/e19/terminology.nix
Normal file
23
pkgs/desktops/e19/terminology.nix
Normal 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;
|
||||
};
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
source $stdenv/setup
|
||||
|
||||
set -e
|
||||
|
||||
mkdir -p $out
|
||||
cd $out
|
||||
tar zxvf $src
|
||||
mv ./usr/local/* .
|
||||
rm -rf ./usr
|
@ -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";
|
||||
};
|
||||
}
|
@ -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
|
@ -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];
|
||||
}
|
@ -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;
|
||||
};
|
||||
})
|
||||
|
32
pkgs/development/compilers/rustc/hardcode_paths.HEAD.patch
Normal file
32
pkgs/development/compilers/rustc/hardcode_paths.HEAD.patch
Normal 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()
|
||||
}
|
||||
}
|
||||
|
@ -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" \
|
||||
|
16
pkgs/development/compilers/rustc/local_stage0.HEAD.patch
Normal file
16
pkgs/development/compilers/rustc/local_stage0.HEAD.patch
Normal 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
|
6
pkgs/development/interpreters/ruby/config.nix
Normal file
6
pkgs/development/interpreters/ruby/config.nix
Normal 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";
|
||||
}
|
@ -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 = {
|
||||
|
@ -132,4 +132,6 @@ in
|
||||
zcat ${patch} | patch -p 1
|
||||
''; # */
|
||||
};
|
||||
|
||||
bundler = { dontPatchShebangs=1; };
|
||||
}
|
||||
|
94
pkgs/development/interpreters/ruby/ruby-1.8.7.nix
Normal file
94
pkgs/development/interpreters/ruby/ruby-1.8.7.nix
Normal 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
Loading…
Reference in New Issue
Block a user