Merge master into x-updates
This commit is contained in:
commit
d09b722f77
@ -56,6 +56,7 @@
|
||||
smironov = "Sergey Mironov <ierton@gmail.com>";
|
||||
thammers = "Tobias Hammerschmidt <jawr@gmx.de>";
|
||||
the-kenny = "Moritz Ulrich <moritz@tarn-vedra.de>";
|
||||
tomberek = "Thomas Bereknyei <tomberek@gmail.com>";
|
||||
urkud = "Yury G. Kudryashov <urkud+nix@ya.ru>";
|
||||
vcunat = "Vladimír Čunát <vcunat@gmail.com>";
|
||||
viric = "Lluís Batlle i Rossell <viric@viric.name>";
|
||||
|
@ -68,8 +68,8 @@ rec {
|
||||
# the first interface (i.e. the first network in its
|
||||
# virtualisation.vlans option).
|
||||
networking.extraHosts = flip concatMapStrings machines
|
||||
(m: let config = (getAttr m nodes).config; in
|
||||
optionalString (config.networking.primaryIPAddress != "")
|
||||
(m': let config = (getAttr m' nodes).config; in
|
||||
optionalString (m.first != m' && config.networking.primaryIPAddress != "")
|
||||
("${config.networking.primaryIPAddress} " +
|
||||
"${config.networking.hostName}\n"));
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
, extraArgs ? {}
|
||||
, modules
|
||||
, check ? true
|
||||
, prefix ? []
|
||||
}:
|
||||
|
||||
let extraArgs_ = extraArgs; pkgs_ = pkgs; system_ = system; in
|
||||
@ -17,6 +18,7 @@ rec {
|
||||
# Merge the option definitions in all modules, forming the full
|
||||
# system configuration.
|
||||
inherit (pkgs.lib.evalModules {
|
||||
inherit prefix;
|
||||
modules = modules ++ baseModules;
|
||||
args = extraArgs;
|
||||
check = check && options.environment.checkConfigurationOptions.value;
|
||||
@ -48,7 +50,7 @@ rec {
|
||||
let
|
||||
system = if nixpkgsOptions.system != "" then nixpkgsOptions.system else system_;
|
||||
nixpkgsOptions = (import ./eval-config.nix {
|
||||
inherit system extraArgs modules;
|
||||
inherit system extraArgs modules prefix;
|
||||
# For efficiency, leave out most NixOS modules; they don't
|
||||
# define nixpkgs.config, so it's pointless to evaluate them.
|
||||
baseModules = [ ../modules/misc/nixpkgs.nix ];
|
||||
|
@ -46,7 +46,10 @@ in
|
||||
before = [ "sysinit.target" "shutdown.target" ];
|
||||
wantedBy = [ "sysinit.target" "multi-user.target" ];
|
||||
restartTriggers = [ config.environment.etc."sysctl.d/nixos.conf".source ];
|
||||
unitConfig.DefaultDependencies = false; # needed to prevent a cycle
|
||||
unitConfig = {
|
||||
DefaultDependencies = false; # needed to prevent a cycle
|
||||
ConditionPathIsReadWrite = "/proc/sys/"; # prevent systemd-sysctl in containers
|
||||
};
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
|
@ -107,6 +107,7 @@
|
||||
redis = 96;
|
||||
haproxy = 97;
|
||||
mongodb = 98;
|
||||
openldap = 99;
|
||||
|
||||
# When adding a uid, make sure it doesn't match an existing gid.
|
||||
|
||||
@ -194,6 +195,7 @@
|
||||
amule = 90;
|
||||
minidlna = 91;
|
||||
haproxy = 92;
|
||||
openldap = 93;
|
||||
|
||||
# When adding a gid, make sure it doesn't match an existing uid.
|
||||
|
||||
|
@ -247,11 +247,11 @@
|
||||
./system/boot/kexec.nix
|
||||
./system/boot/loader/efi.nix
|
||||
./system/boot/loader/generations-dir/generations-dir.nix
|
||||
./system/boot/loader/gummiboot/gummiboot.nix
|
||||
./system/boot/loader/raspberrypi/raspberrypi.nix
|
||||
./system/boot/loader/grub/grub.nix
|
||||
./system/boot/loader/grub/memtest.nix
|
||||
./system/boot/loader/gummiboot/gummiboot.nix
|
||||
./system/boot/loader/init-script/init-script.nix
|
||||
./system/boot/loader/raspberrypi/raspberrypi.nix
|
||||
./system/boot/luksroot.nix
|
||||
./system/boot/modprobe.nix
|
||||
./system/boot/shutdown.nix
|
||||
@ -276,6 +276,7 @@
|
||||
./tasks/scsi-link-power-management.nix
|
||||
./tasks/swraid.nix
|
||||
./testing/service-runner.nix
|
||||
./virtualisation/containers.nix
|
||||
./virtualisation/libvirtd.nix
|
||||
#./virtualisation/nova.nix
|
||||
./virtualisation/virtualbox-guest.nix
|
||||
|
@ -55,6 +55,7 @@ in
|
||||
{ description = "Store Sound Card State";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
unitConfig.RequiresMountsFor = "/var/lib/alsa";
|
||||
unitConfig.ConditionVirtualization = "!systemd-nspawn";
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
|
@ -26,6 +26,16 @@ in
|
||||
";
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
default = "openldap";
|
||||
description = "User account under which slapd runs.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
default = "openldap";
|
||||
description = "Group account under which slapd runs.";
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
default = "";
|
||||
description = "
|
||||
@ -49,10 +59,23 @@ in
|
||||
after = [ "network.target" ];
|
||||
preStart = ''
|
||||
mkdir -p /var/run/slapd
|
||||
chown -R ${cfg.user}:${cfg.group} /var/run/slapd
|
||||
mkdir -p /var/db/openldap
|
||||
chown -R ${cfg.user}:${cfg.group} /var/db/openldap
|
||||
'';
|
||||
serviceConfig.ExecStart = "${openldap}/libexec/slapd -d 0 -f ${configFile}";
|
||||
serviceConfig.ExecStart = "${openldap}/libexec/slapd -u openldap -g openldap -d 0 -f ${configFile}";
|
||||
};
|
||||
|
||||
};
|
||||
users.extraUsers = optionalAttrs (cfg.user == "openldap") (singleton
|
||||
{ name = "openldap";
|
||||
group = "openldap";
|
||||
uid = config.ids.uids.openldap;
|
||||
});
|
||||
|
||||
users.extraGroups = optionalAttrs (cfg.group == "openldap") (singleton
|
||||
{ name = "openldap";
|
||||
gid = config.ids.gids.openldap;
|
||||
});
|
||||
|
||||
};
|
||||
}
|
||||
|
@ -30,6 +30,7 @@ let
|
||||
hba_file = '${pkgs.writeText "pg_hba.conf" cfg.authentication}'
|
||||
ident_file = '${pkgs.writeText "pg_ident.conf" cfg.identMap}'
|
||||
log_destination = 'stderr'
|
||||
port = ${toString cfg.port}
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
|
||||
@ -63,9 +64,9 @@ in
|
||||
|
||||
port = mkOption {
|
||||
type = types.int;
|
||||
default = "5432";
|
||||
default = 5432;
|
||||
description = ''
|
||||
Port for PostgreSQL.
|
||||
The port on which PostgreSQL listens.
|
||||
'';
|
||||
};
|
||||
|
||||
@ -105,7 +106,9 @@ in
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to run PostgreSQL with -i flag to enable TCP/IP connections.
|
||||
Whether PostgreSQL should listen on all network interfaces.
|
||||
If disabled, the database can only be accessed via its Unix
|
||||
domain socket or via TCP connections to localhost.
|
||||
'';
|
||||
};
|
||||
|
||||
|
@ -110,6 +110,7 @@ in
|
||||
|
||||
exec = "acpid --confdir ${acpiConfDir}";
|
||||
|
||||
unitConfig.ConditionVirtualization = "!systemd-nspawn";
|
||||
unitConfig.ConditionPathExists = [ "/proc/acpi" ];
|
||||
};
|
||||
|
||||
|
@ -209,7 +209,7 @@ in
|
||||
|
||||
###### implementation
|
||||
|
||||
config = {
|
||||
config = mkIf (!config.boot.isContainer) {
|
||||
|
||||
services.udev.extraRules = nixosRules;
|
||||
|
||||
@ -231,9 +231,16 @@ in
|
||||
|
||||
boot.extraModprobeConfig = "options firmware_class path=${config.hardware.firmware}";
|
||||
|
||||
system.activationScripts.clearHotplug =
|
||||
system.activationScripts.udevd =
|
||||
''
|
||||
echo "" > /proc/sys/kernel/hotplug
|
||||
|
||||
# Regenerate the hardware database /var/lib/udev/hwdb.bin
|
||||
# whenever systemd changes.
|
||||
if [ ! -e /var/lib/udev/prev-systemd -o "$(readlink /var/lib/udev/prev-systemd)" != ${config.systemd.package} ]; then
|
||||
echo "regenerating udev hardware database..."
|
||||
${config.systemd.package}/bin/udevadm hwdb --update && ln -sfn ${config.systemd.package} /var/lib/udev/prev-systemd
|
||||
fi
|
||||
'';
|
||||
|
||||
};
|
||||
|
@ -32,6 +32,8 @@ with pkgs.lib;
|
||||
|
||||
path = [ pkgs.sysklogd ];
|
||||
|
||||
unitConfig.ConditionVirtualization = "!systemd-nspawn";
|
||||
|
||||
exec =
|
||||
"klogd -c 1 -2 -n " +
|
||||
"-k $(dirname $(readlink -f /run/booted-system/kernel))/System.map";
|
||||
|
@ -279,6 +279,7 @@ in
|
||||
{ description = "Nix Daemon Socket";
|
||||
wantedBy = [ "sockets.target" ];
|
||||
before = [ "multi-user.target" ];
|
||||
unitConfig.ConditionPathIsReadWrite = "/nix/var/nix/daemon-socket/";
|
||||
socketConfig.ListenStream = "/nix/var/nix/daemon-socket/socket";
|
||||
};
|
||||
|
||||
@ -290,6 +291,8 @@ in
|
||||
|
||||
environment = cfg.envVars // { CURL_CA_BUNDLE = "/etc/ssl/certs/ca-bundle.crt"; };
|
||||
|
||||
unitConfig.ConditionPathIsReadWrite = "/nix/var/nix/daemon-socket/";
|
||||
|
||||
serviceConfig =
|
||||
{ ExecStart = "@${nix}/bin/nix-daemon nix-daemon --daemon";
|
||||
KillMode = "process";
|
||||
@ -331,10 +334,8 @@ in
|
||||
''
|
||||
# Set up secure multi-user builds: non-root users build through the
|
||||
# Nix daemon.
|
||||
if test "$USER" != root; then
|
||||
if [ "$USER" != root -o ! -w /nix/var/nix/db ]; then
|
||||
export NIX_REMOTE=daemon
|
||||
else
|
||||
export NIX_REMOTE=
|
||||
fi
|
||||
'';
|
||||
|
||||
|
@ -114,6 +114,8 @@ in
|
||||
|
||||
path = [ dhcpcd pkgs.nettools pkgs.openresolv ];
|
||||
|
||||
unitConfig.ConditionCapability = "CAP_NET_ADMIN";
|
||||
|
||||
serviceConfig =
|
||||
{ Type = "forking";
|
||||
PIDFile = "/run/dhcpcd.pid";
|
||||
|
@ -149,7 +149,7 @@ in
|
||||
''
|
||||
LogLevel info
|
||||
|
||||
SystemGroup root
|
||||
SystemGroup root wheel
|
||||
|
||||
Listen localhost:631
|
||||
Listen /var/run/cups/cups.sock
|
||||
|
@ -34,16 +34,24 @@ let
|
||||
in ''
|
||||
mkdir $out
|
||||
|
||||
if [ ! -f ${kernelPath} ]; then
|
||||
echo "The bootloader cannot find the proper kernel image."
|
||||
echo "(Expecting ${kernelPath})"
|
||||
false
|
||||
fi
|
||||
# Containers don't have their own kernel or initrd. They boot
|
||||
# directly into stage 2.
|
||||
${optionalString (!config.boot.isContainer) ''
|
||||
if [ ! -f ${kernelPath} ]; then
|
||||
echo "The bootloader cannot find the proper kernel image."
|
||||
echo "(Expecting ${kernelPath})"
|
||||
false
|
||||
fi
|
||||
|
||||
ln -s ${kernelPath} $out/kernel
|
||||
ln -s ${config.system.modulesTree} $out/kernel-modules
|
||||
ln -s ${kernelPath} $out/kernel
|
||||
ln -s ${config.system.modulesTree} $out/kernel-modules
|
||||
|
||||
ln -s ${config.system.build.initialRamdisk}/initrd $out/initrd
|
||||
echo -n "$kernelParams" > $out/kernel-params
|
||||
|
||||
ln -s ${config.system.build.initialRamdisk}/initrd $out/initrd
|
||||
|
||||
ln -s ${config.hardware.firmware} $out/firmware
|
||||
''}
|
||||
|
||||
echo "$activationScript" > $out/activate
|
||||
substituteInPlace $out/activate --subst-var out
|
||||
@ -56,9 +64,7 @@ let
|
||||
ln -s ${config.system.build.etc}/etc $out/etc
|
||||
ln -s ${config.system.path} $out/sw
|
||||
ln -s "$systemd" $out/systemd
|
||||
ln -s ${config.hardware.firmware} $out/firmware
|
||||
|
||||
echo -n "$kernelParams" > $out/kernel-params
|
||||
echo -n "$configurationName" > $out/configuration-name
|
||||
echo -n "systemd ${toString config.systemd.package.interfaceVersion}" > $out/init-interface-version
|
||||
echo -n "$nixosVersion" > $out/nixos-version
|
||||
|
@ -145,7 +145,7 @@ in
|
||||
|
||||
###### implementation
|
||||
|
||||
config = {
|
||||
config = mkIf (!config.boot.isContainer) {
|
||||
|
||||
system.build = { inherit kernel; };
|
||||
|
||||
@ -231,7 +231,10 @@ in
|
||||
wantedBy = [ "sysinit.target" "multi-user.target" ];
|
||||
before = [ "sysinit.target" "shutdown.target" ];
|
||||
conflicts = [ "shutdown.target" ];
|
||||
unitConfig.DefaultDependencies = "no";
|
||||
unitConfig =
|
||||
{ DefaultDependencies = false;
|
||||
ConditionCapability = "CAP_SYS_MODULE";
|
||||
};
|
||||
serviceConfig =
|
||||
{ Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
|
@ -44,7 +44,7 @@ in
|
||||
boot.loader.grub = {
|
||||
|
||||
enable = mkOption {
|
||||
default = true;
|
||||
default = !config.boot.isContainer;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
Whether to enable the GNU GRUB boot loader.
|
||||
|
@ -66,7 +66,7 @@ with pkgs.lib;
|
||||
|
||||
###### implementation
|
||||
|
||||
config = {
|
||||
config = mkIf (!config.boot.isContainer) {
|
||||
|
||||
environment.etc = singleton
|
||||
{ source = pkgs.writeText "modprobe.conf"
|
||||
|
@ -6,20 +6,20 @@ with pkgs.lib;
|
||||
|
||||
# This unit saves the value of the system clock to the hardware
|
||||
# clock on shutdown.
|
||||
systemd.units."save-hwclock.service" =
|
||||
{ wantedBy = [ "shutdown.target" ];
|
||||
systemd.services.save-hwclock =
|
||||
{ description = "Save Hardware Clock";
|
||||
|
||||
text =
|
||||
''
|
||||
[Unit]
|
||||
Description=Save Hardware Clock
|
||||
DefaultDependencies=no
|
||||
Before=shutdown.target
|
||||
wantedBy = [ "shutdown.target" ];
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=${pkgs.utillinux}/sbin/hwclock --systohc ${if config.time.hardwareClockInLocalTime then "--localtime" else "--utc"}
|
||||
'';
|
||||
unitConfig = {
|
||||
DefaultDependencies = false;
|
||||
ConditionVirtualization = "!systemd-nspawn";
|
||||
};
|
||||
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = "${pkgs.utillinux}/sbin/hwclock --systohc ${if config.time.hardwareClockInLocalTime then "--localtime" else "--utc"}";
|
||||
};
|
||||
};
|
||||
|
||||
boot.kernel.sysctl."kernel.poweroff_cmd" = "${config.systemd.package}/sbin/poweroff";
|
||||
|
@ -328,7 +328,7 @@ in
|
||||
|
||||
};
|
||||
|
||||
config = {
|
||||
config = mkIf (!config.boot.isContainer) {
|
||||
|
||||
assertions = singleton
|
||||
{ assertion = any (fs: fs.mountPoint == "/") (attrValues config.fileSystems);
|
||||
|
@ -210,6 +210,14 @@ in rec {
|
||||
'';
|
||||
};
|
||||
|
||||
preStop = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = ''
|
||||
Shell commands executed to stop the service.
|
||||
'';
|
||||
};
|
||||
|
||||
postStop = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
|
@ -170,7 +170,6 @@ let
|
||||
systemd
|
||||
];
|
||||
environment.PATH = config.path;
|
||||
environment.LD_LIBRARY_PATH = "";
|
||||
}
|
||||
(mkIf (config.preStart != "")
|
||||
{ serviceConfig.ExecStartPre = makeJobScript "${name}-pre-start" ''
|
||||
@ -190,6 +189,12 @@ let
|
||||
${config.postStart}
|
||||
'';
|
||||
})
|
||||
(mkIf (config.preStop != "")
|
||||
{ serviceConfig.ExecStop = makeJobScript "${name}-pre-stop" ''
|
||||
#! ${pkgs.stdenv.shell} -e
|
||||
${config.preStop}
|
||||
'';
|
||||
})
|
||||
(mkIf (config.postStop != "")
|
||||
{ serviceConfig.ExecStopPost = makeJobScript "${name}-post-stop" ''
|
||||
#! ${pkgs.stdenv.shell} -e
|
||||
@ -529,6 +534,16 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
services.journald.extraConfig = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
example = "Storage=volatile";
|
||||
description = ''
|
||||
Extra config options for systemd-journald. See man journald.conf
|
||||
for available options.
|
||||
'';
|
||||
};
|
||||
|
||||
services.logind.extraConfig = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
@ -580,6 +595,7 @@ in
|
||||
ForwardToConsole=yes
|
||||
TTYPath=${config.services.journald.console}
|
||||
''}
|
||||
${config.services.journald.extraConfig}
|
||||
'';
|
||||
|
||||
environment.etc."systemd/logind.conf".text =
|
||||
@ -599,13 +615,6 @@ in
|
||||
mkdir -p /var/log/journal
|
||||
chmod 0755 /var/log/journal
|
||||
|
||||
# Regenerate the hardware database /var/lib/udev/hwdb.bin
|
||||
# whenever systemd changes.
|
||||
if [ ! -e /var/lib/udev/prev-systemd -o "$(readlink /var/lib/udev/prev-systemd)" != ${systemd} ]; then
|
||||
echo "regenerating udev hardware database..."
|
||||
${systemd}/bin/udevadm hwdb --update && ln -sfn ${systemd} /var/lib/udev/prev-systemd
|
||||
fi
|
||||
|
||||
# Make all journals readable to users in the wheel and adm
|
||||
# groups, in addition to those in the systemd-journal group.
|
||||
# Users can always read their own journals.
|
||||
|
@ -33,6 +33,8 @@ with pkgs.lib;
|
||||
after = [ "systemd-modules-load.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
unitConfig.ConditionPathIsReadWrite = "/sys/devices/";
|
||||
|
||||
path = [ pkgs.cpufrequtils ];
|
||||
|
||||
preStart = ''
|
||||
|
@ -270,6 +270,8 @@ in
|
||||
before = [ "network.target" ];
|
||||
wantedBy = [ "network.target" ];
|
||||
|
||||
unitConfig.ConditionCapability = "CAP_NET_ADMIN";
|
||||
|
||||
path = [ pkgs.iproute ];
|
||||
|
||||
serviceConfig.Type = "oneshot";
|
||||
|
@ -31,6 +31,8 @@ with pkgs.lib;
|
||||
|
||||
task = true;
|
||||
|
||||
unitConfig.ConditionPathIsReadWrite = "/sys/class/scsi_host";
|
||||
|
||||
script = ''
|
||||
shopt -s nullglob
|
||||
for x in /sys/class/scsi_host/host*/link_power_management_policy; do
|
||||
|
137
nixos/modules/virtualisation/containers.nix
Normal file
137
nixos/modules/virtualisation/containers.nix
Normal file
@ -0,0 +1,137 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
with pkgs.lib;
|
||||
|
||||
{
|
||||
options = {
|
||||
|
||||
boot.isContainer = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether this NixOS machine is a lightweight container running
|
||||
in another NixOS system.
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.containers = mkOption {
|
||||
type = types.attrsOf (types.submodule (
|
||||
{ config, options, name, ... }:
|
||||
{
|
||||
options = {
|
||||
|
||||
root = mkOption {
|
||||
type = types.path;
|
||||
description = ''
|
||||
The root directory of the container.
|
||||
'';
|
||||
};
|
||||
|
||||
config = mkOption {
|
||||
description = ''
|
||||
A specification of the desired configuration of this
|
||||
container, as a NixOS module.
|
||||
'';
|
||||
};
|
||||
|
||||
path = mkOption {
|
||||
type = types.path;
|
||||
example = "/nix/var/nix/profiles/containers/webserver";
|
||||
description = ''
|
||||
As an alternative to specifying
|
||||
<option>config</option>, you can specify the path to
|
||||
the evaluated NixOS system configuration, typically a
|
||||
symlink to a system profile.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkMerge
|
||||
[ { root = mkDefault "/var/lib/containers/${name}";
|
||||
}
|
||||
(mkIf options.config.isDefined {
|
||||
path = (import ../../lib/eval-config.nix {
|
||||
modules =
|
||||
let extraConfig =
|
||||
{ boot.isContainer = true;
|
||||
security.initialRootPassword = "!";
|
||||
networking.hostName = mkDefault name;
|
||||
};
|
||||
in [ extraConfig config.config ];
|
||||
prefix = [ "systemd" "containers" name ];
|
||||
}).config.system.build.toplevel;
|
||||
})
|
||||
];
|
||||
}));
|
||||
|
||||
default = {};
|
||||
example = literalExample
|
||||
''
|
||||
{ webserver =
|
||||
{ root = "/containers/webserver";
|
||||
path = "/nix/var/nix/profiles/webserver";
|
||||
};
|
||||
database =
|
||||
{ root = "/containers/database";
|
||||
config =
|
||||
{ config, pkgs, ... }:
|
||||
{ services.postgresql.enable = true;
|
||||
services.postgresql.package = pkgs.postgresql92;
|
||||
};
|
||||
};
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
A set of NixOS system configurations to be run as lightweight
|
||||
containers. Each container appears as a service
|
||||
<literal>container-<replaceable>name</replaceable></literal>
|
||||
on the host system, allowing it to be started and stopped via
|
||||
<command>systemctl</command> .
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
config = {
|
||||
|
||||
systemd.services = mapAttrs' (name: container: nameValuePair "container-${name}"
|
||||
{ description = "Container '${name}'";
|
||||
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
unitConfig.RequiresMountsFor = [ container.root ];
|
||||
|
||||
preStart =
|
||||
''
|
||||
mkdir -p -m 0755 ${container.root}/etc
|
||||
if ! [ -e ${container.root}/etc/os-release ]; then
|
||||
touch ${container.root}/etc/os-release
|
||||
fi
|
||||
'';
|
||||
|
||||
serviceConfig.ExecStart =
|
||||
"${config.systemd.package}/bin/systemd-nspawn -M ${name} -D ${container.root} --bind-ro=/nix ${container.path}/init";
|
||||
|
||||
preStop =
|
||||
''
|
||||
pid="$(cat /sys/fs/cgroup/systemd/machine/${name}.nspawn/system/tasks 2> /dev/null)"
|
||||
if [ -n "$pid" ]; then
|
||||
# Send the RTMIN+3 signal, which causes the container
|
||||
# systemd to start halt.target.
|
||||
echo "killing container systemd, PID = $pid"
|
||||
kill -RTMIN+3 $pid
|
||||
# Wait for the container to exit. We can't let systemd
|
||||
# do this because it will send a signal to the entire
|
||||
# cgroup.
|
||||
for ((n = 0; n < 180; n++)); do
|
||||
if ! kill -0 $pid 2> /dev/null; then break; fi
|
||||
sleep 1
|
||||
done
|
||||
fi
|
||||
'';
|
||||
}) config.systemd.containers;
|
||||
|
||||
};
|
||||
}
|
@ -101,6 +101,19 @@ in
|
||||
mkdir -p /etc/$(dirname $i) -m 755
|
||||
cp -fpd ${pkgs.libvirt}/etc/$i /etc/$i
|
||||
done
|
||||
|
||||
# libvirtd puts the full path of the emulator binary in the machine
|
||||
# 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
|
||||
# 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"))
|
||||
# write back
|
||||
sed -i "s,^[[:space:]]*<emulator>.*, <emulator>$new_emulator</emulator> <!-- WARNING: emulator dirname is auto-updated by the nixos libvirtd module -->," "$file"
|
||||
done
|
||||
''; # */
|
||||
|
||||
serviceConfig.ExecStart = ''@${pkgs.libvirt}/sbin/libvirtd libvirtd --config "${configFile}" --daemon --verbose'';
|
||||
|
@ -59,6 +59,12 @@
|
||||
subtest "override-env-var", sub {
|
||||
$machine->succeed('[ "$EDITOR" = emacs ]');
|
||||
};
|
||||
|
||||
# Test whether hostname (and by extension nss_myhostname) works.
|
||||
subtest "hostname", sub {
|
||||
$machine->succeed('[ "`hostname`" = machine ]');
|
||||
$machine->succeed('[ "`hostname -s`" = machine ]');
|
||||
};
|
||||
'';
|
||||
|
||||
}
|
||||
|
28
pkgs/applications/graphics/grafx2/default.nix
Normal file
28
pkgs/applications/graphics/grafx2/default.nix
Normal file
@ -0,0 +1,28 @@
|
||||
{ stdenv, fetchurl, SDL, SDL_image, SDL_ttf, zlib, libpng, pkgconfig, lua5 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
|
||||
version = "2.4.2035";
|
||||
name = "grafx2-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://grafx2.googlecode.com/files/${name}-src.tgz";
|
||||
sha256 = "0svsy6rqmdj11b400c242i2ixihyz0hds0dgicqz6g6dcgmcl62q";
|
||||
};
|
||||
|
||||
buildInputs = [ SDL SDL_image SDL_ttf libpng zlib lua5 pkgconfig ];
|
||||
|
||||
preBuild = "cd src";
|
||||
|
||||
preInstall = '' mkdir -p "$out" '';
|
||||
|
||||
installPhase = ''make install prefix="$out"'';
|
||||
|
||||
meta = {
|
||||
description = "GrafX2 is a bitmap paint program inspired by the Amiga programs Deluxe Paint and Brilliance.";
|
||||
homepage = http://code.google.co/p/grafx2/;
|
||||
license = stdenv.lib.licenses.gpl2;
|
||||
platforms = [ "x86_64-linux" "i686-linux" ];
|
||||
maintainers = [ stdenv.lib.maintainers.zoomulator ];
|
||||
};
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
{ stdenv, fetchurl, gettext, glib, gtk, json_c, lcms2, libpng
|
||||
, makeWrapper, pkgconfig, pygtk, python, pythonPackages, scons, swig
|
||||
{ stdenv, fetchurl, gettext, glib, gtk, hicolor_icon_theme, json_c
|
||||
, lcms2, libpng , makeWrapper, pkgconfig, pygtk, python, pythonPackages
|
||||
, scons, swig
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
@ -11,18 +12,21 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "0f7848hr65h909c0jkcx616flc0r4qh53g3kd1cgs2nr1pjmf3bq";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
buildInputs = [
|
||||
gettext glib gtk json_c lcms2 libpng makeWrapper pkgconfig pygtk
|
||||
python scons swig
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [ pythonPackages.numpy ];
|
||||
|
||||
propagatedBuildInputs = [ hicolor_icon_theme pythonPackages.numpy ];
|
||||
|
||||
buildPhase = "scons prefix=$out";
|
||||
|
||||
installPhase = ''
|
||||
scons prefix=$out install
|
||||
wrapProgram $out/bin/mypaint --prefix PYTHONPATH : $PYTHONPATH
|
||||
sed -i -e 's|/usr/bin/env python2.7|${python}/bin/python|' $out/bin/mypaint
|
||||
wrapProgram $out/bin/mypaint \
|
||||
--prefix PYTHONPATH : $PYTHONPATH \
|
||||
--prefix XDG_DATA_DIRS ":" "${hicolor_icon_theme}/share"
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
33
pkgs/applications/graphics/pencil/default.nix
Normal file
33
pkgs/applications/graphics/pencil/default.nix
Normal file
@ -0,0 +1,33 @@
|
||||
{ stdenv, fetchurl, xulrunner }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "pencil-2.0.5";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://evoluspencil.googlecode.com/files/${name}.tar.gz";
|
||||
sha256 = "0rn5nb08p8wph5s5gajkil6y06zgrm86p4gnjdgv76czx1fqazm0";
|
||||
};
|
||||
|
||||
# Pre-built package
|
||||
buildPhase = "true";
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p "$out"
|
||||
cp -r usr/* "$out"
|
||||
cp COPYING "$out/share/pencil"
|
||||
sed -e "s|/usr/bin/xulrunner|${xulrunner}/bin/xulrunner|" \
|
||||
-e "s|/usr/share/pencil|$out/share/pencil|" \
|
||||
-i "$out/bin/pencil"
|
||||
sed -e "s|/usr/bin/pencil|$out/bin/pencil|" \
|
||||
-e "s|Icon=.*|Icon=$out/share/pencil/skin/classic/icon.svg|" \
|
||||
-i "$out/share/applications/pencil.desktop"
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "GUI prototyping/mockup tool";
|
||||
homepage = http://pencil.evolus.vn/;
|
||||
license = licenses.gpl2; # Commercial license is also available
|
||||
maintainers = [ maintainers.bjornfor ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
@ -4,11 +4,11 @@
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "calibre-1.11.0";
|
||||
name = "calibre-1.13.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/calibre/${name}.tar.xz";
|
||||
sha256 = "17jp93wzq11yb89yg2x42f65yyx6v0hy6nhvrd42ig0vhk7sdh2n";
|
||||
sha256 = "0j0l81jkjzd8n3ciqwxh8zxz945y594xjfsizp3cxjjfhj90aagj";
|
||||
};
|
||||
|
||||
inherit python;
|
||||
|
@ -1,11 +1,11 @@
|
||||
{ stdenv, fetchurl, pkgconfig, gtk, gettext }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "girara-0.1.5";
|
||||
name = "girara-0.1.9";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://pwmt.org/projects/girara/download/${name}.tar.gz";
|
||||
sha256 = "1hfi3jmx8ydvrqm3h6p6py2csavh7xx0223vxyca51kjl9mfnbld";
|
||||
sha256 = "1kd20dalnpy07hajv0rkmkbsym4bpfxh0gby7j2mvkvl5qr3vx70";
|
||||
};
|
||||
|
||||
buildInputs = [ pkgconfig gtk gettext ];
|
||||
|
@ -38,13 +38,6 @@ stdenv.mkDerivation (rec {
|
||||
ln -s $out/{lib/urxvt,lib/perl5/site_perl}
|
||||
'';
|
||||
|
||||
# we link the separate terminfo output to the main output
|
||||
# as I don't think there's a usecase for wanting urxvt without its terminfo files
|
||||
# and we don't want users to install them separately
|
||||
postInstall = ''
|
||||
ln -s $terminfo/share/terminfo $out/share
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "A clone of the well-known terminal emulator rxvt";
|
||||
homepage = "http://software.schmorp.de/pkg/rxvt-unicode.html";
|
||||
|
@ -2,14 +2,14 @@
|
||||
|
||||
let
|
||||
name = "vifm-${version}";
|
||||
version = "0.7.5";
|
||||
version = "0.7.6";
|
||||
|
||||
in stdenv.mkDerivation {
|
||||
inherit name;
|
||||
|
||||
src = fetchurl {
|
||||
url="mirror://sourceforge/project/vifm/vifm/${name}.tar.bz2";
|
||||
sha256 ="1r1d92zrff94rfx011dw2qsgdwd2ksqlz15la74d6h7sfcsnyd01";
|
||||
sha256 ="03v50hmgfvrci5fz31zmklmp6ix7qpqnhvm6639wbk3g5mcrh5w6";
|
||||
};
|
||||
|
||||
#phaseNames = ["doConfigure" "doMakeInstall"];
|
||||
|
@ -1,5 +1,5 @@
|
||||
{ cabal, filepath, libXrandr, mtl, parsec, regexCompat, stm, time
|
||||
, utf8String, X11, X11Xft
|
||||
, utf8String, wirelesstools, X11, X11Xft
|
||||
}:
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
@ -11,8 +11,8 @@ cabal.mkDerivation (self: {
|
||||
buildDepends = [
|
||||
filepath mtl parsec regexCompat stm time utf8String X11 X11Xft
|
||||
];
|
||||
extraLibraries = [ libXrandr ];
|
||||
configureFlags = "-fwith_xft";
|
||||
extraLibraries = [ libXrandr wirelesstools ];
|
||||
configureFlags = "-fwith_xft -fwith_iwlib";
|
||||
meta = {
|
||||
homepage = "http://projects.haskell.org/xmobar/";
|
||||
description = "A Minimalistic Text Based Status Bar";
|
||||
|
@ -1,17 +1,15 @@
|
||||
{ stdenv, fetchurl, pkgconfig, gtk, girara, gettext, docutils, file, makeWrapper }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
|
||||
version = "0.2.2";
|
||||
|
||||
version = "0.2.5";
|
||||
name = "zathura-core-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://pwmt.org/projects/zathura/download/zathura-${version}.tar.gz";
|
||||
sha256 = "1ja2j9ygymr259fxf02j1vkvalypac48gpadq8fn3qbclxxj61k5";
|
||||
sha256 = "1lw9q0x4b7x6z86hwgs93f8srimd0sj8fwg91185f63yz9g800fr";
|
||||
};
|
||||
|
||||
buildInputs = [ pkgconfig gtk girara gettext makeWrapper ];
|
||||
buildInputs = [ pkgconfig file gtk girara gettext makeWrapper ];
|
||||
|
||||
# Bug in zathura build system: we should remove empty manfiles in order them
|
||||
# to be compiled properly
|
||||
|
@ -3,13 +3,19 @@
|
||||
rec {
|
||||
inherit (pkgs) stdenv;
|
||||
|
||||
zathura_core = callPackage ./core { };
|
||||
zathura_core = callPackage ./core {
|
||||
gtk = pkgs.gtk3;
|
||||
};
|
||||
|
||||
zathura_pdf_poppler = callPackage ./pdf-poppler { };
|
||||
|
||||
zathura_djvu = callPackage ./djvu { };
|
||||
zathura_djvu = callPackage ./djvu {
|
||||
gtk = pkgs.gtk3;
|
||||
};
|
||||
|
||||
zathura_ps = callPackage ./ps { };
|
||||
zathura_ps = callPackage ./ps {
|
||||
gtk = pkgs.gtk3;
|
||||
};
|
||||
|
||||
zathuraWrapper = stdenv.mkDerivation {
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
{ stdenv, fetchurl, pkgconfig, gtk, zathura_core, girara, djvulibre, gettext }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "zathura-djvu-0.2.1";
|
||||
name = "zathura-djvu-0.2.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://pwmt.org/projects/zathura/plugins/download/${name}.tar.gz";
|
||||
sha256 = "d8bb3c9e30244a0733e49740ee2dd099ce39fa16f2c320af27a0c09d9a25bcc3";
|
||||
sha256 = "12gd8kb0al5mknh4rlvxzgzwz3vhjggqjh8ws27phaq14paq4vn1";
|
||||
};
|
||||
|
||||
buildInputs = [ pkgconfig djvulibre gettext zathura_core gtk girara ];
|
||||
|
@ -1,12 +1,12 @@
|
||||
{ stdenv, fetchurl, pkgconfig, zathura_core, girara, poppler, gettext }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.2.2";
|
||||
version = "0.2.4";
|
||||
name = "zathura-pdf-poppler-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://pwmt.org/projects/zathura/plugins/download/${name}.tar.gz";
|
||||
sha256 = "0px59f0bnmb9992n3c9iyzcwd6w7vg8ga069vc8qj4726ljml4c7";
|
||||
sha256 = "1x1n21naixb87g1knznjfjfibazzwbn1cv7d42kxgwlnf1p1wbzm";
|
||||
};
|
||||
|
||||
buildInputs = [ pkgconfig poppler gettext zathura_core girara ];
|
||||
|
@ -1,11 +1,11 @@
|
||||
{ stdenv, fetchurl, pkgconfig, gtk, zathura_core, girara, libspectre, gettext }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "zathura-ps-0.2.0";
|
||||
name = "zathura-ps-0.2.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://pwmt.org/projects/zathura/plugins/download/${name}.tar.gz";
|
||||
sha256 = "717eda01213b162421b6b52f29d6b981edc302fddf351ccb2c093b6842751414";
|
||||
sha256 = "1a6ps5v1wk18qvslbkjln6w8wfzzr6fi13ls96vbdc03vdhn4m76";
|
||||
};
|
||||
|
||||
buildInputs = [ pkgconfig libspectre gettext zathura_core gtk girara ];
|
||||
|
@ -14,9 +14,9 @@ let
|
||||
else if stdenv.system == "i686-linux" then "ld-linux.so.2"
|
||||
else throw "Bittorrent Sync for: ${stdenv.system} not supported!";
|
||||
|
||||
version = "1.1.70";
|
||||
sha256 = if stdenv.system == "x86_64-linux" then "1hnyncq5439fxn1q8dkzcg2alxjkanr4q4pgqqf3nngz4cdar5vi"
|
||||
else if stdenv.system == "i686-linux" then "1ijdmzl8bnb4k99vrjn5gd31hy64p9wiyxw5wc5gbpgap191h5i5"
|
||||
version = "1.2.82";
|
||||
sha256 = if stdenv.system == "x86_64-linux" then "0cqrscav57xwz7rag6wy06xw6z7ca97xailprgg6jdjv4pnc91ra"
|
||||
else if stdenv.system == "i686-linux" then "1b9rnfk0wkhj1zybvfqwgd9dcqnxwdnp7m0vf6lhrgi75cydj7is"
|
||||
else throw "Bittorrent Sync for: ${stdenv.system} not supported!";
|
||||
|
||||
in stdenv.mkDerivation {
|
||||
|
@ -46,16 +46,17 @@ let
|
||||
|
||||
prePatch = "patchShebangs .";
|
||||
|
||||
patches = singleton (
|
||||
if versionOlder version "31.0.0.0"
|
||||
then ./sandbox_userns_30.patch
|
||||
else ./sandbox_userns_31.patch
|
||||
);
|
||||
patches = singleton ./sandbox_userns_31.patch;
|
||||
|
||||
postPatch = ''
|
||||
sed -i -r -e 's/-f(stack-protector)(-all)?/-fno-\1/' build/common.gypi
|
||||
'' + (if versionOlder version "32.0.0.0" then ''
|
||||
sed -i -e 's|/usr/bin/gcc|gcc|' third_party/WebKit/Source/core/core.gypi
|
||||
'' + optionalString useOpenSSL ''
|
||||
'' else ''
|
||||
sed -i -e 's|/usr/bin/gcc|gcc|' \
|
||||
third_party/WebKit/Source/build/scripts/scripts.gypi \
|
||||
third_party/WebKit/Source/build/scripts/preprocessor.pm
|
||||
'') + optionalString useOpenSSL ''
|
||||
cat $opensslPatches | patch -p1 -d third_party/openssl/openssl
|
||||
'';
|
||||
|
||||
|
@ -1,293 +0,0 @@
|
||||
commit 41510de6ae32e6161073992bd1243f7f33148a06
|
||||
Author: aszlig <aszlig@redmoonstudios.org>
|
||||
Date: Thu May 16 14:17:56 2013 +0200
|
||||
|
||||
zygote: Add support for user namespaces on Linux.
|
||||
|
||||
The implementation is done by patching the Zygote host to execute the sandbox
|
||||
binary with CLONE_NEWUSER and setting the uid and gid mapping so that the child
|
||||
process is using uid 0 and gid 0 which map to the current user of the parent.
|
||||
Afterwards, the sandbox will continue as if it was called as a setuid binary.
|
||||
|
||||
In addition, this adds new_user_namespace as an option in process_util in order
|
||||
to set the UID and GID mapping correctly. The reason for this is that just
|
||||
passing CLONE_NEWUSER to clone_flags doesn't help in LaunchProcess(), because
|
||||
without setting the mappings exec*() will clear the process's capability sets.
|
||||
|
||||
If the kernel doesn't support unprivileged user namespaces and the sandbox
|
||||
binary doesn't have the setuid flag, the Zygote main process will run without a
|
||||
sandbox. This is to mimic the behaviour if no SUID sandbox binary path is set.
|
||||
|
||||
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
||||
|
||||
diff --git a/base/process/launch.h b/base/process/launch.h
|
||||
index 45b1053..ce71418 100644
|
||||
--- a/base/process/launch.h
|
||||
+++ b/base/process/launch.h
|
||||
@@ -51,6 +51,7 @@ struct LaunchOptions {
|
||||
new_process_group(false)
|
||||
#if defined(OS_LINUX)
|
||||
, clone_flags(0)
|
||||
+ , new_user_namespace(false)
|
||||
#endif // OS_LINUX
|
||||
#if defined(OS_CHROMEOS)
|
||||
, ctrl_terminal_fd(-1)
|
||||
@@ -125,6 +126,9 @@ struct LaunchOptions {
|
||||
#if defined(OS_LINUX)
|
||||
// If non-zero, start the process using clone(), using flags as provided.
|
||||
int clone_flags;
|
||||
+
|
||||
+ // If true, start the process in a new user namespace.
|
||||
+ bool new_user_namespace;
|
||||
#endif // defined(OS_LINUX)
|
||||
|
||||
#if defined(OS_CHROMEOS)
|
||||
diff --git a/base/process/launch_posix.cc b/base/process/launch_posix.cc
|
||||
index 52e149c..312f835 100644
|
||||
--- a/base/process/launch_posix.cc
|
||||
+++ b/base/process/launch_posix.cc
|
||||
@@ -37,6 +37,13 @@
|
||||
#include "base/threading/platform_thread.h"
|
||||
#include "base/threading/thread_restrictions.h"
|
||||
|
||||
+#if defined(OS_LINUX)
|
||||
+#include <sched.h>
|
||||
+#if !defined(CLONE_NEWUSER)
|
||||
+#define CLONE_NEWUSER 0x10000000
|
||||
+#endif
|
||||
+#endif
|
||||
+
|
||||
#if defined(OS_CHROMEOS)
|
||||
#include <sys/ioctl.h>
|
||||
#endif
|
||||
@@ -416,13 +423,23 @@ bool LaunchProcess(const std::vector<std::string>& argv,
|
||||
|
||||
pid_t pid;
|
||||
#if defined(OS_LINUX)
|
||||
- if (options.clone_flags) {
|
||||
+ int map_pipe_fd[2];
|
||||
+ int flags = options.clone_flags;
|
||||
+
|
||||
+ if (options.new_user_namespace) {
|
||||
+ flags |= CLONE_NEWUSER;
|
||||
+ if (pipe(map_pipe_fd) < 0) {
|
||||
+ DPLOG(ERROR) << "user namespace pipe";
|
||||
+ return false;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (options.clone_flags || options.new_user_namespace) {
|
||||
// Signal handling in this function assumes the creation of a new
|
||||
// process, so we check that a thread is not being created by mistake
|
||||
// and that signal handling follows the process-creation rules.
|
||||
- RAW_CHECK(
|
||||
- !(options.clone_flags & (CLONE_SIGHAND | CLONE_THREAD | CLONE_VM)));
|
||||
- pid = syscall(__NR_clone, options.clone_flags, 0, 0, 0);
|
||||
+ RAW_CHECK(!(flags & (CLONE_SIGHAND | CLONE_THREAD | CLONE_VM)));
|
||||
+ pid = syscall(__NR_clone, flags, 0, 0, 0);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
@@ -440,6 +457,21 @@ bool LaunchProcess(const std::vector<std::string>& argv,
|
||||
} else if (pid == 0) {
|
||||
// Child process
|
||||
|
||||
+#if defined(OS_LINUX)
|
||||
+ if (options.new_user_namespace) {
|
||||
+ // Close the write end of the pipe so we get an EOF when the parent closes
|
||||
+ // the FD. This is to avoid race conditions when the UID/GID mappings are
|
||||
+ // written _after_ execvp().
|
||||
+ close(map_pipe_fd[1]);
|
||||
+
|
||||
+ char dummy;
|
||||
+ if (HANDLE_EINTR(read(map_pipe_fd[0], &dummy, 1)) != 0) {
|
||||
+ RAW_LOG(ERROR, "Unexpected input in uid/gid mapping pipe.");
|
||||
+ _exit(127);
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
// DANGER: fork() rule: in the child, if you don't end up doing exec*(),
|
||||
// you call _exit() instead of exit(). This is because _exit() does not
|
||||
// call any previously-registered (in the parent) exit handlers, which
|
||||
@@ -555,6 +587,40 @@ bool LaunchProcess(const std::vector<std::string>& argv,
|
||||
_exit(127);
|
||||
} else {
|
||||
// Parent process
|
||||
+#if defined(OS_LINUX)
|
||||
+ if (options.new_user_namespace) {
|
||||
+ // We need to write UID/GID mapping here to map the current user outside
|
||||
+ // the namespace to the root user inside the namespace in order to
|
||||
+ // correctly "fool" the child process.
|
||||
+ char buf[256];
|
||||
+ int map_fd, map_len;
|
||||
+
|
||||
+ snprintf(buf, sizeof(buf), "/proc/%d/uid_map", pid);
|
||||
+ map_fd = open(buf, O_RDWR);
|
||||
+ DPCHECK(map_fd >= 0);
|
||||
+ snprintf(buf, sizeof(buf), "0 %d 1", geteuid());
|
||||
+ map_len = strlen(buf);
|
||||
+ if (write(map_fd, buf, map_len) != map_len) {
|
||||
+ RAW_LOG(WARNING, "Can't write to uid_map.");
|
||||
+ }
|
||||
+ close(map_fd);
|
||||
+
|
||||
+ snprintf(buf, sizeof(buf), "/proc/%d/gid_map", pid);
|
||||
+ map_fd = open(buf, O_RDWR);
|
||||
+ DPCHECK(map_fd >= 0);
|
||||
+ snprintf(buf, sizeof(buf), "0 %d 1", getegid());
|
||||
+ map_len = strlen(buf);
|
||||
+ if (write(map_fd, buf, map_len) != map_len) {
|
||||
+ RAW_LOG(WARNING, "Can't write to gid_map.");
|
||||
+ }
|
||||
+ close(map_fd);
|
||||
+
|
||||
+ // Close the pipe on the parent, so the child can continue doing the
|
||||
+ // execvp() call.
|
||||
+ close(map_pipe_fd[1]);
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
if (options.wait) {
|
||||
// While this isn't strictly disk IO, waiting for another process to
|
||||
// finish is the sort of thing ThreadRestrictions is trying to prevent.
|
||||
diff --git a/content/browser/zygote_host/zygote_host_impl_linux.cc b/content/browser/zygote_host/zygote_host_impl_linux.cc
|
||||
index bb84e62..bce0d18 100644
|
||||
--- a/content/browser/zygote_host/zygote_host_impl_linux.cc
|
||||
+++ b/content/browser/zygote_host/zygote_host_impl_linux.cc
|
||||
@@ -119,25 +119,31 @@ void ZygoteHostImpl::Init(const std::string& sandbox_cmd) {
|
||||
|
||||
sandbox_binary_ = sandbox_cmd.c_str();
|
||||
|
||||
- // A non empty sandbox_cmd means we want a SUID sandbox.
|
||||
- using_suid_sandbox_ = !sandbox_cmd.empty();
|
||||
+ bool userns_sandbox = false;
|
||||
+ const std::vector<std::string> cmd_line_unwrapped(cmd_line.argv());
|
||||
|
||||
- if (using_suid_sandbox_) {
|
||||
+ if (!sandbox_cmd.empty()) {
|
||||
struct stat st;
|
||||
if (stat(sandbox_binary_.c_str(), &st) != 0) {
|
||||
LOG(FATAL) << "The SUID sandbox helper binary is missing: "
|
||||
<< sandbox_binary_ << " Aborting now.";
|
||||
}
|
||||
|
||||
- if (access(sandbox_binary_.c_str(), X_OK) == 0 &&
|
||||
- (st.st_uid == 0) &&
|
||||
- (st.st_mode & S_ISUID) &&
|
||||
- (st.st_mode & S_IXOTH)) {
|
||||
+ if (access(sandbox_binary_.c_str(), X_OK) == 0) {
|
||||
+ using_suid_sandbox_ = true;
|
||||
+
|
||||
cmd_line.PrependWrapper(sandbox_binary_);
|
||||
|
||||
scoped_ptr<sandbox::SetuidSandboxClient>
|
||||
sandbox_client(sandbox::SetuidSandboxClient::Create());
|
||||
sandbox_client->SetupLaunchEnvironment();
|
||||
+
|
||||
+ if (!((st.st_uid == 0) &&
|
||||
+ (st.st_mode & S_ISUID) &&
|
||||
+ (st.st_mode & S_IXOTH))) {
|
||||
+ userns_sandbox = true;
|
||||
+ sandbox_client->SetNoSuid();
|
||||
+ }
|
||||
} else {
|
||||
LOG(FATAL) << "The SUID sandbox helper binary was found, but is not "
|
||||
"configured correctly. Rather than run without sandboxing "
|
||||
@@ -161,7 +167,19 @@ void ZygoteHostImpl::Init(const std::string& sandbox_cmd) {
|
||||
base::ProcessHandle process = -1;
|
||||
base::LaunchOptions options;
|
||||
options.fds_to_remap = &fds_to_map;
|
||||
+ if (userns_sandbox)
|
||||
+ options.new_user_namespace = true;
|
||||
base::LaunchProcess(cmd_line.argv(), options, &process);
|
||||
+
|
||||
+ if (process == -1 && userns_sandbox) {
|
||||
+ LOG(ERROR) << "User namespace sandbox failed to start, running without "
|
||||
+ << "sandbox! You need at least kernel 3.8.0 with CONFIG_USER_NS "
|
||||
+ << "enabled in order to use the sandbox without setuid bit.";
|
||||
+ using_suid_sandbox_ = false;
|
||||
+ options.new_user_namespace = false;
|
||||
+ base::LaunchProcess(cmd_line_unwrapped, options, &process);
|
||||
+ }
|
||||
+
|
||||
CHECK(process != -1) << "Failed to launch zygote process";
|
||||
|
||||
if (using_suid_sandbox_) {
|
||||
diff --git a/content/zygote/zygote_main_linux.cc b/content/zygote/zygote_main_linux.cc
|
||||
index 1f0e9f5..ade5aab 100644
|
||||
--- a/content/zygote/zygote_main_linux.cc
|
||||
+++ b/content/zygote/zygote_main_linux.cc
|
||||
@@ -420,6 +420,13 @@ static bool EnterSandbox(sandbox::SetuidSandboxClient* setuid_sandbox,
|
||||
*has_started_new_init = true;
|
||||
}
|
||||
|
||||
+ // Don't set non-dumpable, as it causes trouble when the host tries to find
|
||||
+ // the zygote process (XXX: Not quite sure why this happens with user
|
||||
+ // namespaces). Fortunately, we also have the seccomp filter sandbox which
|
||||
+ // should disallow the use of ptrace.
|
||||
+ if (setuid_sandbox->IsNoSuid())
|
||||
+ return true;
|
||||
+
|
||||
#if !defined(OS_OPENBSD)
|
||||
// Previously, we required that the binary be non-readable. This causes the
|
||||
// kernel to mark the process as non-dumpable at startup. The thinking was
|
||||
diff --git a/sandbox/linux/suid/client/setuid_sandbox_client.cc b/sandbox/linux/suid/client/setuid_sandbox_client.cc
|
||||
index 34231d4..36e3201 100644
|
||||
--- a/sandbox/linux/suid/client/setuid_sandbox_client.cc
|
||||
+++ b/sandbox/linux/suid/client/setuid_sandbox_client.cc
|
||||
@@ -166,6 +166,10 @@ bool SetuidSandboxClient::IsInNewNETNamespace() const {
|
||||
return env_->HasVar(kSandboxNETNSEnvironmentVarName);
|
||||
}
|
||||
|
||||
+bool SetuidSandboxClient::IsNoSuid() const {
|
||||
+ return env_->HasVar(kSandboxNoSuidVarName);
|
||||
+}
|
||||
+
|
||||
bool SetuidSandboxClient::IsSandboxed() const {
|
||||
return sandboxed_;
|
||||
}
|
||||
@@ -175,5 +179,9 @@ void SetuidSandboxClient::SetupLaunchEnvironment() {
|
||||
SetSandboxAPIEnvironmentVariable(env_);
|
||||
}
|
||||
|
||||
+void SetuidSandboxClient::SetNoSuid() {
|
||||
+ env_->SetVar(kSandboxNoSuidVarName, "1");
|
||||
+}
|
||||
+
|
||||
} // namespace sandbox
|
||||
|
||||
diff --git a/sandbox/linux/suid/client/setuid_sandbox_client.h b/sandbox/linux/suid/client/setuid_sandbox_client.h
|
||||
index a9f6536..2e8113a 100644
|
||||
--- a/sandbox/linux/suid/client/setuid_sandbox_client.h
|
||||
+++ b/sandbox/linux/suid/client/setuid_sandbox_client.h
|
||||
@@ -39,6 +39,8 @@ class SetuidSandboxClient {
|
||||
bool IsInNewPIDNamespace() const;
|
||||
// Did the setuid helper create a new network namespace ?
|
||||
bool IsInNewNETNamespace() const;
|
||||
+ // Is sandboxed without SUID binary ?
|
||||
+ bool IsNoSuid() const;
|
||||
// Are we done and fully sandboxed ?
|
||||
bool IsSandboxed() const;
|
||||
|
||||
@@ -46,6 +48,8 @@ class SetuidSandboxClient {
|
||||
// helper.
|
||||
void SetupLaunchEnvironment();
|
||||
|
||||
+ void SetNoSuid();
|
||||
+
|
||||
private:
|
||||
// Holds the environment. Will never be NULL.
|
||||
base::Environment* env_;
|
||||
diff --git a/sandbox/linux/suid/common/sandbox.h b/sandbox/linux/suid/common/sandbox.h
|
||||
index aad4ff8..bd710d5 100644
|
||||
--- a/sandbox/linux/suid/common/sandbox.h
|
||||
+++ b/sandbox/linux/suid/common/sandbox.h
|
||||
@@ -18,6 +18,7 @@ static const char kAdjustLowMemMarginSwitch[] = "--adjust-low-mem";
|
||||
|
||||
static const char kSandboxDescriptorEnvironmentVarName[] = "SBX_D";
|
||||
static const char kSandboxHelperPidEnvironmentVarName[] = "SBX_HELPER_PID";
|
||||
+static const char kSandboxNoSuidVarName[] = "SBX_NO_SUID";
|
||||
|
||||
static const long kSUIDSandboxApiNumber = 1;
|
||||
static const char kSandboxEnvironmentApiRequest[] = "SBX_CHROME_API_RQ";
|
@ -1,18 +1,18 @@
|
||||
# This file is autogenerated from update.sh in the same directory.
|
||||
{
|
||||
dev = {
|
||||
version = "32.0.1671.3";
|
||||
url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-32.0.1671.3.tar.xz";
|
||||
sha256 = "0bv86ig3mrd95zh78880bcyh9b8w46s7slxq3mwwmrmqp0s8qaq0";
|
||||
version = "33.0.1712.4";
|
||||
url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-33.0.1712.4.tar.xz";
|
||||
sha256 = "1c1m0y3nnz2lclqi21j6hgqmb46p1hv7c22zz9fn7dax7jkimydk";
|
||||
};
|
||||
beta = {
|
||||
version = "31.0.1650.34";
|
||||
url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-31.0.1650.34.tar.xz";
|
||||
sha256 = "0c73kvp09cmq4x42rcf45v0mnbyb8rcyi5i4pj0pvfn451vbngdq";
|
||||
version = "32.0.1700.19";
|
||||
url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-32.0.1700.19.tar.xz";
|
||||
sha256 = "0d0kgy160pyg472ka43gxk7n09pqhhs9nd93jyxrp9qsyllfc425";
|
||||
};
|
||||
stable = {
|
||||
version = "30.0.1599.114";
|
||||
url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-30.0.1599.114.tar.xz";
|
||||
sha256 = "0q5pq8bj4y0c7hd121db1fa9g3apkpkhb6cf14ag7abgrda2pzw2";
|
||||
version = "31.0.1650.57";
|
||||
url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-31.0.1650.57.tar.xz";
|
||||
sha256 = "1xv7frf47hhvqm6f3n2l308yfrs4d8ri70q6pndx7hslhyiixzl9";
|
||||
};
|
||||
}
|
||||
|
@ -25,9 +25,9 @@ let
|
||||
else if stdenv.system == "i686-linux" then "ld-linux.so.2"
|
||||
else throw "Dropbox client for: ${stdenv.system} not supported!";
|
||||
|
||||
version = "2.4.3";
|
||||
sha256 = if stdenv.system == "x86_64-linux" then "0g8iqgc18qbw8fvdjf0fhbal34rvwr5izrf5acfzqjg99dgih81r"
|
||||
else if stdenv.system == "i686-linux" then "1nhmk319whj6cil6wg9hrfln9bxin3fnf6sxb0zg2ycfpnnqi0la"
|
||||
version = "2.4.7";
|
||||
sha256 = if stdenv.system == "x86_64-linux" then "08fh0zx9q83dvivnbx5zr1cwb69ihhlx9mkbd3ikynk1wd8df8n8"
|
||||
else if stdenv.system == "i686-linux" then "0rhblpahg2axglpi8iavsglffw83rj71qy113wj2dh6q72124j2h"
|
||||
else throw "Dropbox client for: ${stdenv.system} not supported!";
|
||||
|
||||
# relative location where the dropbox libraries are stored
|
||||
|
@ -1,12 +1,12 @@
|
||||
{ stdenv, fetchurl, sqlite, curl, pkgconfig, libxml2, stfl, json-c-0-11, ncurses
|
||||
{ stdenv, fetchgit, sqlite, curl, pkgconfig, libxml2, stfl, json-c-0-11, ncurses
|
||||
, gettext, libiconvOrEmpty, makeWrapper, perl }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "newsbeuter-dev-20131103";
|
||||
name = "newsbeuter-dev-20131118";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/akrennmair/newsbeuter/archive/8abefa3efb5e6d70c32bac9e068248e98616d6ec.tar.gz";
|
||||
sha256 = "1pfkr4adm7rxwq44hpxwblw6gg8vd0frsi6szvhmzkpn5qmnpwpg";
|
||||
src = fetchgit {
|
||||
url = "https://github.com/akrennmair/newsbeuter.git";
|
||||
rev = "18b73f7d44a99a698d4878fe7d226f55842132c2";
|
||||
};
|
||||
|
||||
buildInputs
|
||||
|
@ -1,23 +1,34 @@
|
||||
{ stdenv, fetchurl, zlib, glib, libpng, freetype, xorg, fontconfig, alsaLib }:
|
||||
{ stdenv, fetchurl, zlib, glib, libpng, freetype, xorg, fontconfig, alsaLib,
|
||||
qt4, pulseaudio ? null }:
|
||||
|
||||
let
|
||||
|
||||
version = "3.0.13.1";
|
||||
|
||||
arch = if stdenv.is64bit then "amd64" else "x86";
|
||||
|
||||
libDir = if stdenv.is64bit then "lib64" else "lib";
|
||||
|
||||
deps =
|
||||
[ zlib glib libpng freetype xorg.libSM xorg.libICE xorg.libXrender
|
||||
xorg.libXrandr xorg.libXfixes xorg.libXcursor xorg.libXinerama
|
||||
fontconfig xorg.libXext xorg.libX11 alsaLib
|
||||
fontconfig xorg.libXext xorg.libX11 alsaLib qt4 pulseaudio
|
||||
];
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "teamspeak-client-3.0.0-beta35";
|
||||
name = "teamspeak-client-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = http://ftp.4players.de/pub/hosted/ts3/releases/beta-35/TeamSpeak3-Client-linux_amd64-3.0.0-beta35.run;
|
||||
sha256 = "0vygsvjs11lr5lv4x7awv7hvkycvmm9qs2vklfjs91w3f434cmrx";
|
||||
urls = [
|
||||
"http://dl.4players.de/ts/releases/${version}/TeamSpeak3-Client-linux_${arch}-${version}.run"
|
||||
"http://teamspeak.gameserver.gamed.de/ts3/releases/${version}/TeamSpeak3-Client-linux_${arch}-${version}.run"
|
||||
"http://files.teamspeak-services.com/releases/${version}/TeamSpeak3-Client-linux_${arch}-${version}.run"
|
||||
];
|
||||
sha256 = if stdenv.is64bit
|
||||
then "0mj8vpsnv906n3wgjwhiby5gk26jr5jbd94swmsf0s9kqwhsj6i1"
|
||||
else "1hlw7lc0nl1mrsyd052s6ws64q5aabnw6qpv8mrdxb3hyp7g2qh1";
|
||||
};
|
||||
|
||||
unpackPhase =
|
||||
@ -28,22 +39,27 @@ stdenv.mkDerivation {
|
||||
|
||||
buildPhase =
|
||||
''
|
||||
ls -l
|
||||
for i in ts3client_linux_*; do
|
||||
echo "patching $i..."
|
||||
patchelf \
|
||||
--interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
|
||||
--set-rpath ${stdenv.lib.makeLibraryPath deps}:$(cat $NIX_GCC/nix-support/orig-gcc)/${libDir} \
|
||||
--force-rpath \
|
||||
$i
|
||||
done
|
||||
mv ts3client_linux_${arch} ts3client
|
||||
echo "patching ts3client..."
|
||||
patchelf \
|
||||
--interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
|
||||
--set-rpath ${stdenv.lib.makeLibraryPath deps}:$(cat $NIX_GCC/nix-support/orig-gcc)/${libDir} \
|
||||
--force-rpath \
|
||||
ts3client
|
||||
'';
|
||||
|
||||
|
||||
installPhase =
|
||||
''
|
||||
# Delete unecessary libraries - these are provided by nixos.
|
||||
rm *.so.*
|
||||
|
||||
# Install files.
|
||||
mkdir -p $out/lib/teamspeak
|
||||
mv * $out/lib/teamspeak/
|
||||
|
||||
# Make a symlink to the binary from bin.
|
||||
mkdir -p $out/bin/
|
||||
ln -s $out/lib/teamspeak/ts3client $out/bin/ts3client
|
||||
'';
|
||||
|
||||
dontStrip = true;
|
||||
@ -53,6 +69,7 @@ stdenv.mkDerivation {
|
||||
description = "The TeamSpeak voice communication tool";
|
||||
homepage = http://teamspeak.com/;
|
||||
license = "http://www.teamspeak.com/?page=downloads&type=ts3_linux_client_latest";
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
{ fetchurl, stdenv, ant }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "jmeter-2.9";
|
||||
name = "jmeter-2.10";
|
||||
src = fetchurl {
|
||||
url = "http://ftp.unicamp.br/pub/apache//jmeter/binaries/apache-jmeter-2.9.tgz";
|
||||
sha256 = "14r3zn910m97jqrf6k5c4lwy214snaap2242qg76h65zk9qr20ni";
|
||||
url = "http://ftp.unicamp.br/pub/apache//jmeter/binaries/apache-${name}.tgz";
|
||||
sha256 = "1ygm0h02sllh4mfl5imj46v80wnbs1x7n88gfjm523ixmgsa0fvy";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
|
@ -15,22 +15,16 @@ assert sslSupport -> openssl != null;
|
||||
assert saslSupport -> cyrus_sasl != null;
|
||||
|
||||
let
|
||||
gpgmePatch = fetchurl {
|
||||
# Solution for gpgme >= 1.2: http://dev.mutt.org/trac/ticket/3300
|
||||
url = "http://dev.mutt.org/trac/raw-attachment/ticket/3300/mutt-1.5.21-gpgme-init.patch";
|
||||
sha256 = "1qa1c8gns4q3as1h2lk3x4di2k3hr804ar7xlc6xh9r0zjhzmlk4";
|
||||
};
|
||||
version = "1.5.22";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "mutt-1.5.21";
|
||||
name = "mutt-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "ftp://ftp.mutt.org/mutt/devel/${name}.tar.gz";
|
||||
sha256 = "1864cwz240gh0zy56fb47qqzwyf6ghg01037rb4p2kqgimpg6h91";
|
||||
sha256 = "19zk81spnb0gc8y5mwmcfn33g77wv1xz5bmgic8aan07xn8fislg";
|
||||
};
|
||||
|
||||
patches = [ (if gpgmeSupport then gpgmePatch else null) ];
|
||||
|
||||
buildInputs = [
|
||||
ncurses which perl
|
||||
(if headerCache then gdbm else null)
|
||||
@ -58,8 +52,12 @@ stdenv.mkDerivation rec {
|
||||
(if gpgmeSupport then "--enable-gpgme" else "--disable-gpgme")
|
||||
];
|
||||
|
||||
meta = {
|
||||
meta = with stdenv.lib; {
|
||||
description = "A small but very powerful text-based mail client";
|
||||
homepage = http://www.mutt.org;
|
||||
license = "GPLv2+";
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [ the-kenny ];
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -3,11 +3,11 @@
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "notmuch-0.15.2";
|
||||
name = "notmuch-0.16";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://notmuchmail.org/releases/${name}.tar.gz";
|
||||
sha256 = "03cwylm0y9xld0hn753v0hn62f96nagdmzxv8jlz8vdbh9iszs56";
|
||||
sha256 = "0i7k85lfp9l0grmq7cvai2f3pw15jcrhcp96mmamr15y2pn2syg7";
|
||||
};
|
||||
|
||||
buildInputs = [ bash emacs gdb glib gmime gnupg pkgconfig talloc xapian ];
|
||||
|
@ -18,6 +18,9 @@ stdenv.mkDerivation rec {
|
||||
libnotify
|
||||
];
|
||||
|
||||
preFixup = ''
|
||||
rm $out/share/icons/hicolor/icon-theme.cache'';
|
||||
|
||||
meta = {
|
||||
description = "A GTK-based news feed agregator";
|
||||
homepage = http://lzone.de/liferea/;
|
||||
|
@ -4,14 +4,14 @@
|
||||
, makeDesktopItem
|
||||
}:
|
||||
|
||||
let version = "1.8.7"; in
|
||||
let version = "1.8.11"; in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "wireshark-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/wireshark/wireshark-${version}.tar.bz2";
|
||||
sha256 = "0hm8zisy5dg7sfhh7rvgnpffq2qcw0syd8k5kns8j0j13sf44zjw";
|
||||
sha256 = "1nwgizs9z1dalicpp2fd9pqafidy49j0v3d1rml0spfqrkbjpfpw";
|
||||
};
|
||||
|
||||
buildInputs =
|
||||
|
@ -1,15 +1,15 @@
|
||||
{ stdenv, fetchgit, cmake, boost, gmp, mpfr, libedit, python, texinfo }:
|
||||
|
||||
let
|
||||
rev = "0ec4291";
|
||||
rev = "0e5867bc5c";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "ledger3-2013.08.${rev}";
|
||||
name = "ledger3-2013.11.${rev}";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://github.com/ledger/ledger.git";
|
||||
inherit rev;
|
||||
sha256 = "1y4rcbx8y2fxkdc7i06n1i5jf3cq05bvzpb8498mis2gwfmkw470";
|
||||
sha256 = "16aa63z24rp5vin7al8b6nzdi4kqpawbzvh148wfr2wj60vdb1n5";
|
||||
};
|
||||
|
||||
buildInputs = [ cmake boost gmp mpfr libedit python texinfo ];
|
||||
|
@ -3,11 +3,11 @@ let
|
||||
s = # Generated upstream information
|
||||
rec {
|
||||
baseName="ekrhyper";
|
||||
version="1_4_30072013";
|
||||
version="1_4_20112013";
|
||||
name="${baseName}-${version}";
|
||||
hash="0ashsblm477r7dmq9f33wajkbr29rbyyc919mifdgrrdy6zlc663";
|
||||
url="http://userpages.uni-koblenz.de/~bpelzer/ekrhyper/ekrh_1_4_30072013.tar.gz";
|
||||
sha256="0ashsblm477r7dmq9f33wajkbr29rbyyc919mifdgrrdy6zlc663";
|
||||
hash="08qrsahlgqq29zyrcc8435bymj3jvxaailbgjy47jzj1ki2i0vgm";
|
||||
url="http://userpages.uni-koblenz.de/~bpelzer/ekrhyper/ekrh_1_4_20112013.tar.gz";
|
||||
sha256="08qrsahlgqq29zyrcc8435bymj3jvxaailbgjy47jzj1ki2i0vgm";
|
||||
};
|
||||
buildInputs = [
|
||||
ocaml perl
|
||||
|
@ -2,32 +2,33 @@
|
||||
, caseInsensitive, clientsession, cryptoApi, cryptohash, curl
|
||||
, dataDefault, dataenc, DAV, dbus, dlist, dns, editDistance
|
||||
, extensibleExceptions, feed, filepath, git, gnupg1, gnutls, hamlet
|
||||
, hinotify, hS3, hslogger, HTTP, httpConduit, httpTypes, HUnit
|
||||
, IfElse, json, lsof, MissingH, MonadCatchIOTransformers
|
||||
, monadControl, mtl, network, networkInfo, networkMulticast
|
||||
, networkProtocolXmpp, openssh, perl, QuickCheck, random, regexTdfa
|
||||
, rsync, SafeSemaphore, SHA, stm, text, time, transformers
|
||||
, unixCompat, utf8String, uuid, wai, waiLogger, warp, which
|
||||
, xmlConduit, xmlTypes, yesod, yesodCore, yesodDefault, yesodForm
|
||||
, yesodStatic
|
||||
, hinotify, hS3, hslogger, HTTP, httpConduit, httpTypes, IfElse
|
||||
, json, lsof, MissingH, MonadCatchIOTransformers, monadControl, mtl
|
||||
, network, networkInfo, networkMulticast, networkProtocolXmpp
|
||||
, openssh, perl, QuickCheck, random, regexTdfa, rsync
|
||||
, SafeSemaphore, SHA, stm, tasty, tastyHunit, tastyQuickcheck, text
|
||||
, time, transformers, unixCompat, utf8String, uuid, wai, waiLogger
|
||||
, warp, which, xmlConduit, xmlTypes, yesod, yesodCore, yesodDefault
|
||||
, yesodForm, yesodStatic
|
||||
}:
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "git-annex";
|
||||
version = "4.20131106";
|
||||
sha256 = "019k3zhbc3wjg8isndw6hkgrr3h3qxrbfydv7m6zpgv2khjyhfh0";
|
||||
version = "5.20131130";
|
||||
sha256 = "0px918wzv9zqxz7wc6rx2ay8rizbckw79yinhisjvp3y5lldyjj1";
|
||||
isLibrary = false;
|
||||
isExecutable = true;
|
||||
buildDepends = [
|
||||
aeson async blazeBuilder bloomfilter caseInsensitive clientsession
|
||||
cryptoApi cryptohash dataDefault dataenc DAV dbus dlist dns
|
||||
editDistance extensibleExceptions feed filepath gnutls hamlet
|
||||
hinotify hS3 hslogger HTTP httpConduit httpTypes HUnit IfElse json
|
||||
hinotify hS3 hslogger HTTP httpConduit httpTypes IfElse json
|
||||
MissingH MonadCatchIOTransformers monadControl mtl network
|
||||
networkInfo networkMulticast networkProtocolXmpp QuickCheck random
|
||||
regexTdfa SafeSemaphore SHA stm text time transformers unixCompat
|
||||
utf8String uuid wai waiLogger warp xmlConduit xmlTypes yesod
|
||||
yesodCore yesodDefault yesodForm yesodStatic
|
||||
regexTdfa SafeSemaphore SHA stm tasty tastyHunit tastyQuickcheck
|
||||
text time transformers unixCompat utf8String uuid wai waiLogger
|
||||
warp xmlConduit xmlTypes yesod yesodCore yesodDefault yesodForm
|
||||
yesodStatic
|
||||
];
|
||||
buildTools = [ bup curl git gnupg1 lsof openssh perl rsync which ];
|
||||
configureFlags = "-fS3
|
||||
|
62
pkgs/applications/virtualization/bochs/default.nix
Normal file
62
pkgs/applications/virtualization/bochs/default.nix
Normal file
@ -0,0 +1,62 @@
|
||||
{ stdenv, fetchurl
|
||||
, libX11 , mesa
|
||||
, sdlSupport ? true, SDL ? null
|
||||
, termSupport ? true , ncurses ? null, readline ? null
|
||||
, wxSupport ? true , gtk ? null , wxGTK ? null , pkgconfig ? null
|
||||
, wgetSupport ? false, wget ? null
|
||||
, curlSupport ? false, curl ? null
|
||||
}:
|
||||
|
||||
|
||||
assert sdlSupport -> (SDL != null);
|
||||
assert termSupport -> (ncurses != null&& readline != null);
|
||||
assert wxSupport -> (gtk != null && wxGTK != null && pkgconfig != null);
|
||||
assert wgetSupport -> (wget != null);
|
||||
assert curlSupport -> (curl != null);
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
|
||||
name = "bochs-${version}";
|
||||
version = "2.6.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://downloads.sourceforge.net/project/bochs/bochs/${version}/${name}.tar.gz";
|
||||
sha256 = "042blm1xb9ig4fh2bv8nrrfpgkcxy4hq8yrkx7mrdpm5g4mvfwyr";
|
||||
};
|
||||
|
||||
buildInputs = with stdenv.lib;
|
||||
[ libX11 mesa ]
|
||||
++ optionals sdlSupport [ SDL ]
|
||||
++ optionals termSupport [ readline ncurses ]
|
||||
++ optionals wxSupport [ gtk wxGTK pkgconfig ]
|
||||
++ optionals wgetSupport [ wget ]
|
||||
++ optionals curlSupport [ curl ];
|
||||
|
||||
configureFlags = ''
|
||||
--with-x11
|
||||
--with-term=${if termSupport then "yes" else "no"}
|
||||
--with-sdl=${if sdlSupport then "yes" else "no"}
|
||||
--with-svga=no
|
||||
--with-wx=${if wxSupport then "yes" else "no"}
|
||||
--enable-readline
|
||||
--enable-plugins=no
|
||||
--enable-disasm
|
||||
--enable-debugger
|
||||
--enable-ne2000
|
||||
--enable-e1000
|
||||
--enable-sb16
|
||||
--enable-voodoo
|
||||
--enable-usb
|
||||
--enable-pnic
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "An open-source IA-32 (x86) PC emulator";
|
||||
longDescription = ''
|
||||
Bochs is an open-source (LGPL), highly portable IA-32 PC emulator, written in C++, that runs on most popular platforms. It includes emulation of the Intel x86 CPU, common I/O devices, and a custom BIOS.
|
||||
'';
|
||||
homepage = http://bochs.sourceforge.net/;
|
||||
license = "LGPL";
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
};
|
||||
}
|
@ -142,10 +142,12 @@ init_submodules(){
|
||||
git submodule status |
|
||||
while read l; do
|
||||
# checkout each submodule
|
||||
local hash=$(echo $l | sed 's,^-\([0-9a-f]*\) \(.*\)$,\1,');
|
||||
local dir=$(echo $l | sed 's,^-\([0-9a-f]*\) \(.*\)$,\2,');
|
||||
local url=$(sed -n "\,$dir, { :loop; n; s,^.*url = ,,; T loop; p; q }" .git/config);
|
||||
|
||||
local hash=$(echo $l | awk '{print substr($1,2)}');
|
||||
local dir=$(echo $l | awk '{print $2}');
|
||||
local name=$(
|
||||
git config -f .gitmodules --get-regexp submodule\.[^.]*\.path |
|
||||
sed -n "s,^\(.*\)\.path $dir\$,\\1,p")
|
||||
local url=$(git config -f .gitmodules --get ${name}.url);
|
||||
clone "$dir" "$url" "$hash" "";
|
||||
done;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
{fetchurl, stdenv, fontforge, perl, fontconfig, FontTTF}:
|
||||
|
||||
let version = "2.33" ; in
|
||||
let version = "2.34" ; in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "dejavu-fonts-${version}";
|
||||
@ -8,17 +8,17 @@ stdenv.mkDerivation rec {
|
||||
buildInputs = [fontforge perl FontTTF];
|
||||
|
||||
unicodeData = fetchurl {
|
||||
url = http://www.unicode.org/Public/6.1.0/ucd/UnicodeData.txt ;
|
||||
url = http://www.unicode.org/Public/6.1.0/ucd/UnicodeData.txt ;
|
||||
sha256 = "1bd6zkzvxfnifrn5nh171ywk7q56sgk8gdvdn43z9i53hljjcrih";
|
||||
};
|
||||
blocks = fetchurl {
|
||||
url = http://www.unicode.org/Public/6.1.0/ucd/Blocks.txt;
|
||||
url = http://www.unicode.org/Public/6.1.0/ucd/Blocks.txt;
|
||||
sha256 = "0w0vkb09nrlc6mrhqyl9npszdi828afgvhvlb1vs5smjv3h8y3dz";
|
||||
};
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/dejavu/dejavu-fonts-${version}.tar.bz2";
|
||||
sha256 = "10m0rds36yyaznfqaa9msayv6f0v1h50zbikja6qdy5dwwxi8q5w";
|
||||
sha256 = "09wh9c9kk82i4kwy73fcqa0779bvf0ncikciqw2gxa9m2rkrxjmm";
|
||||
};
|
||||
buildFlags = "full-ttf";
|
||||
preBuild = ''
|
||||
|
@ -1,26 +1,27 @@
|
||||
{ fetchurl, stdenv, perl, bdftopcf, mkfontdir, mkfontscale }:
|
||||
{ stdenv, fetchurl, perl, bdftopcf, mkfontdir, mkfontscale }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "terminus-font-4.30";
|
||||
name = "terminus-font-4.38";
|
||||
|
||||
src = fetchurl {
|
||||
# urls = "http://www.is-vn.bg/hamster/${name}.tar.gz"
|
||||
# sha256 = "ca15718f715f1ca7af827a8ab5543b0c0339b2515f39f8c15f241b2bc1a15a9a";
|
||||
url = "http://ftp.de.debian.org/debian/pool/main/x/xfonts-terminus/xfonts-terminus_4.30.orig.tar.gz";
|
||||
sha256 = "d7f1253d75f0aa278b0bbf457d15927ed3bbf2565b9f6b829c2b2560fedc1712";
|
||||
url = "mirror://sourceforge/project/terminus-font/${name}/${name}.tar.gz";
|
||||
sha256 = "1dwpxmg0wiyhp7hh18mvw18gnf0y2jgbn80c4xya7rmb9mm8gx7n";
|
||||
};
|
||||
|
||||
buildInputs = [ perl bdftopcf mkfontdir mkfontscale ];
|
||||
|
||||
patchPhase = ''
|
||||
substituteInPlace Makefile --replace 'fc-cache' '#fc-cache'
|
||||
'';
|
||||
|
||||
configurePhase = ''
|
||||
./configure --prefix=$out
|
||||
sh ./configure --prefix=$out
|
||||
'';
|
||||
buildPhase = ''
|
||||
make pcf
|
||||
'';
|
||||
installPhase = ''
|
||||
make install-pcf
|
||||
make fontdir
|
||||
|
||||
installPhase = ''
|
||||
make install fontdir
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "A clean fixed width font";
|
||||
longDescription = ''
|
||||
|
@ -22,6 +22,8 @@ stdenv.mkDerivation rec {
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
preFixup = "rm $out/share/icons/hicolor/icon-theme.cache";
|
||||
|
||||
configureFlags = [
|
||||
"--disable-nautilus" # Do not use nautilus
|
||||
"--disable-dbus" # strange compilation error
|
||||
|
@ -2,12 +2,12 @@
|
||||
, avrdude, arduino_core, avrgcclibc }:
|
||||
|
||||
buildPythonPackage rec {
|
||||
name = "ino-0.3.5";
|
||||
name = "ino-0.3.6";
|
||||
namePrefix = "";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://pypi.python.org/packages/source/i/ino/${name}.tar.gz";
|
||||
sha256 = "1j2qzcjp6r2an1v431whq9l47s81d5af6ni8j87gv294f53sl1ab";
|
||||
sha256 = "0k6lzfcn55favbj0w4afrvnmwyskf7bgzg9javv2ycvskp35srwv";
|
||||
};
|
||||
|
||||
# TODO: add avrgcclibc, it must be rebuild with C++ support
|
||||
|
@ -1,18 +1,46 @@
|
||||
{ stdenv, fetchurl }:
|
||||
{ stdenv, fetchurl, devSnapshot ? false }:
|
||||
|
||||
let
|
||||
version = if devSnapshot
|
||||
then "4.8.2"
|
||||
else "4.8.0.5";
|
||||
srcRelease = fetchurl {
|
||||
url = "http://code.call-cc.org/releases/4.8.0/chicken-4.8.0.5.tar.gz";
|
||||
sha256 = "1yrhqirqj3l535zr5mv8d1mz9gq876wwwg4nsjfw27663far54av";
|
||||
};
|
||||
srcDev = fetchurl {
|
||||
url = "http://code.call-cc.org/dev-snapshots/2013/08/08/chicken-4.8.2.tar.gz";
|
||||
sha256 = "01g7h0664342nl536mnri4c72kwj4z40vmv1250xfndlr218qdqg";
|
||||
};
|
||||
platform = with stdenv;
|
||||
if isDarwin then "macosx"
|
||||
else if isCygwin then "cygwin"
|
||||
else if isBSD then "bsd"
|
||||
else if isSunOS then "solaris"
|
||||
else "linux"; # Should be a sane default
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "chicken-4.8.1";
|
||||
name = "chicken-${version}";
|
||||
|
||||
src = if devSnapshot
|
||||
then srcDev
|
||||
else srcRelease;
|
||||
|
||||
buildFlags = "PLATFORM=${platform} PREFIX=$(out) VARDIR=$(out)/var/lib";
|
||||
installFlags = "PLATFORM=${platform} PREFIX=$(out) VARDIR=$(out)/var/lib";
|
||||
|
||||
meta = {
|
||||
homepage = http://www.call-cc.org/;
|
||||
description = "Chicken Scheme";
|
||||
license = "BSD";
|
||||
maintainers = with stdenv.lib.maintainers; [ the-kenny ];
|
||||
platforms = stdenv.lib.platforms.all;
|
||||
description = "A portable compiler for the Scheme programming language";
|
||||
longDescription = ''
|
||||
CHICKEN is a compiler for the Scheme programming language.
|
||||
CHICKEN produces portable and efficient C, supports almost all
|
||||
of the R5RS Scheme language standard, and includes many
|
||||
enhancements and extensions. CHICKEN runs on Linux, MacOS X,
|
||||
Windows, and many Unix flavours.
|
||||
'';
|
||||
};
|
||||
|
||||
src = fetchurl {
|
||||
url = http://code.call-cc.org/dev-snapshots/2013/01/04/chicken-4.8.1.tar.gz;
|
||||
md5 = "bd758ec7abeaeb4f4c92c290fb5f3db7";
|
||||
};
|
||||
|
||||
buildFlags = "PLATFORM=linux PREFIX=$(out) VARDIR=$(out)/var/lib";
|
||||
installFlags = "PLATFORM=linux PREFIX=$(out) VARDIR=$(out)/var/lib";
|
||||
}
|
||||
|
@ -1,21 +1,21 @@
|
||||
{ cabal, ansiTerminal, ansiWlPprint, binary, boehmgc, Cabal
|
||||
, filepath, gmp, happy, haskeline, languageJava, libffi
|
||||
, llvmGeneral, llvmGeneralPure, mtl, parsec, parsers, split, text
|
||||
, time, transformers, trifecta, unorderedContainers, utf8String
|
||||
, vector, vectorBinaryInstances
|
||||
, deepseq, filepath, gmp, happy, haskeline, languageJava, mtl
|
||||
, network, parsers, split, text, time, transformers, trifecta
|
||||
, unorderedContainers, utf8String, vector, vectorBinaryInstances
|
||||
, xml
|
||||
}:
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "idris";
|
||||
version = "0.9.9.3";
|
||||
sha256 = "1l19xx0xbcwlnnh2w0rmri7wwixffzfrafpbji64nwyx1awz4iab";
|
||||
version = "0.9.10";
|
||||
sha256 = "0sbadjc4kj59f5240036pryxr4b6k6y2zkmszv99wq660mm7a3d3";
|
||||
isLibrary = false;
|
||||
isExecutable = true;
|
||||
buildDepends = [
|
||||
ansiTerminal ansiWlPprint binary Cabal filepath haskeline
|
||||
languageJava libffi llvmGeneral llvmGeneralPure mtl parsec parsers
|
||||
split text time transformers trifecta unorderedContainers
|
||||
utf8String vector vectorBinaryInstances
|
||||
ansiTerminal ansiWlPprint binary Cabal deepseq filepath haskeline
|
||||
languageJava mtl network parsers split text time transformers
|
||||
trifecta unorderedContainers utf8String vector
|
||||
vectorBinaryInstances xml
|
||||
];
|
||||
buildTools = [ happy ];
|
||||
extraLibraries = [ boehmgc gmp ];
|
||||
|
@ -4,11 +4,11 @@ let
|
||||
s= # Generated upstream information
|
||||
rec {
|
||||
baseName="sbcl";
|
||||
version="1.1.12";
|
||||
version="1.1.13";
|
||||
name="${baseName}-${version}";
|
||||
hash="0mvl6lpi44yv6jv3xhyyzvf9g7bdlj691iz3ydpn66v0vg5i554c";
|
||||
url="mirror://sourceforge/project/sbcl/sbcl/1.1.12/sbcl-1.1.12-source.tar.bz2";
|
||||
sha256="0mvl6lpi44yv6jv3xhyyzvf9g7bdlj691iz3ydpn66v0vg5i554c";
|
||||
hash="1f4abgzfvb0f006vbykahqg7a11d6afnjrw332r54gj8753qj7x0";
|
||||
url="mirror://sourceforge/project/sbcl/sbcl/1.1.13/sbcl-1.1.13-source.tar.bz2";
|
||||
sha256="1f4abgzfvb0f006vbykahqg7a11d6afnjrw332r54gj8753qj7x0";
|
||||
};
|
||||
buildInputs = with a; [
|
||||
clisp makeWrapper
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ fetchurl, stdenv, guile, ncurses }:
|
||||
{ fetchurl, stdenv, guile, ncurses, libffi }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "guile-ncurses-1.3";
|
||||
@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "0chvfjrlmg99db98ra9vzwjmbypqx7d4ssm8q0kvzi0n0p9irszi";
|
||||
};
|
||||
|
||||
buildInputs = [ guile ncurses ];
|
||||
buildInputs = [ guile ncurses libffi ];
|
||||
|
||||
preConfigure =
|
||||
'' configureFlags="$configureFlags --with-guilesitedir=$out/share/guile/site" '';
|
||||
|
@ -1,11 +1,14 @@
|
||||
{ stdenv, fetchurl, erlang, rebar, makeWrapper, coreutils }:
|
||||
|
||||
let
|
||||
version = "0.11.2";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "elixir-0.10.1";
|
||||
name = "elixir-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/elixir-lang/elixir/archive/v0.10.1.tar.gz";
|
||||
sha256 = "0gfr2bz3mw7ag9z2wb2g22n2vlyrp8dwy78fj9zi52kzl5w3vc3w";
|
||||
url = "https://github.com/elixir-lang/elixir/archive/v${version}.tar.gz";
|
||||
sha256 = "0rgx33q013c5y2jjwd4l93pzd3v3fha8xdsrhpl9c9wb7yprjc5x";
|
||||
};
|
||||
|
||||
buildInputs = [ erlang rebar makeWrapper ];
|
||||
@ -34,11 +37,11 @@ stdenv.mkDerivation {
|
||||
description = "A functional, meta-programming aware language built on top of the Erlang VM";
|
||||
|
||||
longDescription = ''
|
||||
Elixir is a functional, meta-programming
|
||||
aware language built on top of the Erlang VM. It is a dynamic
|
||||
language with flexible syntax and macro support that leverages
|
||||
Erlang's abilities to build concurrent, distributed and
|
||||
fault-tolerant applications with hot code upgrades.p
|
||||
Elixir is a functional, meta-programming aware language built on
|
||||
top of the Erlang VM. It is a dynamic language with flexible
|
||||
syntax and macro support that leverages Erlang's abilities to
|
||||
build concurrent, distributed and fault-tolerant applications
|
||||
with hot code upgrades.
|
||||
'';
|
||||
|
||||
license = licenses.epl10;
|
||||
|
@ -1,5 +1,5 @@
|
||||
{ stdenv, fetchurl, pkgconfig
|
||||
, SDL, mesa, openal, lua5
|
||||
, SDL, mesa, openal, lua
|
||||
, libdevil, freetype, physfs
|
||||
, libmodplug, mpg123, libvorbis, libogg
|
||||
}:
|
||||
@ -12,10 +12,29 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
pkgconfig SDL mesa openal lua5
|
||||
pkgconfig SDL mesa openal lua
|
||||
libdevil freetype physfs libmodplug mpg123 libvorbis libogg
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
luaoptions="${"''"} lua luajit "
|
||||
for i in lua luajit-; do
|
||||
for j in 5 5.0 5.1 5.2 5.3 5.4; do
|
||||
luaoptions="$luaoptions $i$j "
|
||||
done
|
||||
done
|
||||
luaso="$(echo "${lua}/lib/"lib*.so.*)"
|
||||
luaso="''${luaso##*/lib}"
|
||||
luaso="''${luaso%%.so*}"
|
||||
luaoptions="$luaoptions $luaso"
|
||||
sed -e "s/${"''"} lua lua.*;/$luaoptions;/" -i configure
|
||||
|
||||
luaincdir="$(echo "${lua}/include"/*/ )"
|
||||
test -d "$luaincdir" && {
|
||||
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$luaincdir"
|
||||
} || true
|
||||
'';
|
||||
|
||||
NIX_CFLAGS_COMPILE = ''
|
||||
-I${SDL}/include/SDL
|
||||
-I${freetype}include/freetype2
|
||||
|
@ -21,12 +21,16 @@ g: # Get dependencies from patched gems
|
||||
builder = g.builder_3_2_2;
|
||||
buildr = g.buildr_1_4_12;
|
||||
bundler = g.bundler_1_3_5;
|
||||
celluloid = g.celluloid_0_15_2;
|
||||
childprocess = g.childprocess_0_3_9;
|
||||
chronic = g.chronic_0_10_1;
|
||||
classifier = g.classifier_1_3_3;
|
||||
coderay = g.coderay_1_0_9;
|
||||
coffee_rails = g.coffee_rails_4_0_1;
|
||||
coffee_script = g.coffee_script_2_2_0;
|
||||
coffee_script_source = g.coffee_script_source_1_6_3;
|
||||
colorator = g.colorator_0_1;
|
||||
commander = g.commander_4_1_5;
|
||||
cucumber = g.cucumber_1_3_8;
|
||||
daemons = g.daemons_1_1_9;
|
||||
diff_lcs = g.diff_lcs_1_1_3;
|
||||
@ -38,31 +42,40 @@ g: # Get dependencies from patched gems
|
||||
ethon = g.ethon_0_6_1;
|
||||
eventmachine = g.eventmachine_1_0_3;
|
||||
eventmachine_tail = g.eventmachine_tail_0_6_4;
|
||||
excon = g.excon_0_25_3;
|
||||
execjs = g.execjs_2_0_2;
|
||||
fakes3 = g.fakes3_0_1_5;
|
||||
faraday = g.faraday_0_8_8;
|
||||
faraday_middleware = g.faraday_middleware_0_9_0;
|
||||
fast_stemmer = g.fast_stemmer_1_0_2;
|
||||
ffi = g.ffi_1_9_0;
|
||||
file_tail = g.file_tail_1_0_12;
|
||||
foreman = g.foreman_0_63_0;
|
||||
formatador = g.formatador_0_2_4;
|
||||
gettext = g.gettext_3_0_0;
|
||||
gh = g.gh_0_12_0;
|
||||
gherkin = g.gherkin_2_12_1;
|
||||
guard = g.guard_2_2_4;
|
||||
highline = g.highline_1_6_19;
|
||||
hike = g.hike_1_2_3;
|
||||
hoe = g.hoe_3_1_0;
|
||||
http_cookie = g.http_cookie_1_0_1;
|
||||
i18n = g.i18n_0_6_5;
|
||||
iconv = g.iconv_1_0_3;
|
||||
jekyll = g.jekyll_1_3_0;
|
||||
jquery_rails = g.jquery_rails_3_0_4;
|
||||
jruby_pageant = g.jruby_pageant_1_1_1;
|
||||
jsduck = g.jsduck_5_1_0;
|
||||
json = g.json_1_8_0;
|
||||
json_pure = g.json_pure_1_8_0;
|
||||
launchy = g.launchy_2_3_0;
|
||||
liquid = g.liquid_2_5_4;
|
||||
listen = g.listen_2_2_0;
|
||||
locale = g.locale_2_0_8;
|
||||
lockfile = g.lockfile_2_1_0;
|
||||
lumberjack = g.lumberjack_1_0_4;
|
||||
macaddr = g.macaddr_1_6_1;
|
||||
maruku = g.maruku_0_6_1;
|
||||
mail = g.mail_2_5_4;
|
||||
mechanize = g.mechanize_2_7_2;
|
||||
method_source = g.method_source_0_8_2;
|
||||
@ -87,6 +100,7 @@ g: # Get dependencies from patched gems
|
||||
papertrail_cli = g.papertrail_cli_0_9_3;
|
||||
parallel = g.parallel_0_7_1;
|
||||
polyglot = g.polyglot_0_3_3;
|
||||
posix_spawn = g.posix_spawn_0_3_6;
|
||||
pry = g.pry_0_9_12_2;
|
||||
pusher_client = g.pusher_client_0_3_1;
|
||||
rack = g.rack_1_5_2;
|
||||
@ -95,16 +109,21 @@ g: # Get dependencies from patched gems
|
||||
railties = g.railties_4_0_0;
|
||||
rake = g.rake_10_1_0;
|
||||
rb_fsevent = g.rb_fsevent_0_9_3;
|
||||
rb_inotify = g.rb_inotify_0_9_2;
|
||||
rb_kqueue = g.rb_kqueue_0_2_0;
|
||||
rdiscount = g.rdiscount_2_1_6;
|
||||
redcarpet = g.redcarpet_2_3_0;
|
||||
redis = g.redis_3_0_5;
|
||||
redis_namespace = g.redis_namespace_1_3_1;
|
||||
remote_syslog = g.remote_syslog_1_6_14;
|
||||
resque = g.resque_1_25_1;
|
||||
resque_web = g.resque_web_0_0_3;
|
||||
rest_client = g.rest_client_1_6_7;
|
||||
right_aws = g.right_aws_3_1_0;
|
||||
right_http_connection = g.right_http_connection_1_4_0;
|
||||
rjb = g.rjb_1_4_8;
|
||||
rkelly_remix = g.rkelly_remix_0_0_4;
|
||||
rmagick = g.rmagick_2_13_2;
|
||||
rmail = g.rmail_1_0_0;
|
||||
rmail_sup = g.rmail_sup_1_0_1;
|
||||
rspec = g.rspec_2_11_0;
|
||||
@ -114,6 +133,7 @@ g: # Get dependencies from patched gems
|
||||
ruby_hmac = g.ruby_hmac_0_4_0;
|
||||
rubyforge = g.rubyforge_2_0_4;
|
||||
rubyzip = g.rubyzip_0_9_9;
|
||||
safe_yaml = g.safe_yaml_0_9_7;
|
||||
sass = g.sass_3_2_12;
|
||||
sass_rails = g.sass_rails_4_0_1;
|
||||
selenium_webdriver = g.selenium_webdriver_2_35_1;
|
||||
@ -122,6 +142,7 @@ g: # Get dependencies from patched gems
|
||||
slop = g.slop_3_4_6;
|
||||
sprockets = g.sprockets_2_10_0;
|
||||
sprockets_rails = g.sprockets_rails_2_0_1;
|
||||
syntax = g.syntax_1_0_0;
|
||||
syslog_protocol = g.syslog_protocol_0_9_2;
|
||||
systemu = g.systemu_2_5_2;
|
||||
taskjuggler = g.taskjuggler_3_5_0;
|
||||
@ -132,6 +153,7 @@ g: # Get dependencies from patched gems
|
||||
thor = g.thor_0_18_1;
|
||||
thread_safe = g.thread_safe_0_1_3;
|
||||
tilt = g.tilt_1_4_1;
|
||||
timers = g.timers_1_1_0;
|
||||
tins = g.tins_0_9_0;
|
||||
travis = g.travis_1_5_3;
|
||||
treetop = g.treetop_1_4_15;
|
||||
@ -447,6 +469,17 @@ for those one-off tasks, with a language that's a joy to use.
|
||||
requiredGems = [ ];
|
||||
sha256 = ''1r7zx8qfwzr3pbgrjbsml7z5qgscwyyv33x2jzhz6adqyx3r1f08'';
|
||||
};
|
||||
celluloid_0_15_2 = {
|
||||
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.15.2'';
|
||||
requiredGems = [ g.timers_1_1_0 ];
|
||||
sha256 = ''0lpa97m7f4p5hgzaaa47y1d5c78n8pp4xd8qb0sn5llqd0klkd9b'';
|
||||
};
|
||||
childprocess_0_3_9 = {
|
||||
basename = ''childprocess'';
|
||||
meta = {
|
||||
@ -469,6 +502,18 @@ for those one-off tasks, with a language that's a joy to use.
|
||||
requiredGems = [ ];
|
||||
sha256 = ''0kspaxpfy7yvyk1lvpx31w852qfj8wb9z04mcj5bzi70ljb9awqk'';
|
||||
};
|
||||
classifier_1_3_3 = {
|
||||
basename = ''classifier'';
|
||||
meta = {
|
||||
description = ''A general classifier module to allow Bayesian and other types of classifications.'';
|
||||
homepage = ''http://classifier.rufy.com/'';
|
||||
longDescription = '' A general classifier module to allow Bayesian and other types of classifications.
|
||||
'';
|
||||
};
|
||||
name = ''classifier-1.3.3'';
|
||||
requiredGems = [ g.fast_stemmer_1_0_2 ];
|
||||
sha256 = ''1kq1cd8fq6wvyxbjy3r6ya3d3sk3rcp1b560xlqvflpsirm47r9g'';
|
||||
};
|
||||
chronic_0_10_1 = {
|
||||
basename = ''chronic'';
|
||||
meta = {
|
||||
@ -491,6 +536,17 @@ for those one-off tasks, with a language that's a joy to use.
|
||||
requiredGems = [ ];
|
||||
sha256 = ''1pbjsvd6r2daxd6aicp19fnb1j5z7fxadflsm1h0r33cy3vi7iy8'';
|
||||
};
|
||||
coderay_1_1_0 = {
|
||||
basename = ''coderay'';
|
||||
meta = {
|
||||
description = ''Fast syntax highlighting for selected languages.'';
|
||||
homepage = ''http://coderay.rubychan.de'';
|
||||
longDescription = ''Fast and easy syntax highlighting for selected languages, written in Ruby. Comes with RedCloth integration and LOC counter.'';
|
||||
};
|
||||
name = ''coderay-1.1.0'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s'';
|
||||
};
|
||||
coffee_rails_4_0_1 = {
|
||||
basename = ''coffee_rails'';
|
||||
meta = {
|
||||
@ -530,6 +586,28 @@ for those one-off tasks, with a language that's a joy to use.
|
||||
requiredGems = [ ];
|
||||
sha256 = ''0p33h0rdj1n8xhm2d5hzqbb8br6wn4rx0gk4hyhc6rxkaxsy79b4'';
|
||||
};
|
||||
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'';
|
||||
};
|
||||
commander_4_1_5 = {
|
||||
basename = ''commander'';
|
||||
meta = {
|
||||
description = ''The complete solution for Ruby command-line executables'';
|
||||
homepage = ''http://visionmedia.github.com/commander'';
|
||||
longDescription = ''The complete solution for Ruby command-line executables. Commander bridges the gap between other terminal related libraries you know and love (OptionParser, HighLine), while providing many new features, and an elegant API.'';
|
||||
};
|
||||
name = ''commander-4.1.5'';
|
||||
requiredGems = [ g.highline_1_6_20 ];
|
||||
sha256 = ''040x2gjpl55g64kh5f9nby0870hnzx8cd7clxg771z0wjs7nzalc'';
|
||||
};
|
||||
cucumber_1_3_8 = {
|
||||
basename = ''cucumber'';
|
||||
meta = {
|
||||
@ -711,6 +789,17 @@ using TCP/IP, especially if custom protocols are required.'';
|
||||
requiredGems = [ g.eventmachine_1_0_3 ];
|
||||
sha256 = ''1pvlb34vdzd81kf9f3xyibb4f55xjqm7lqqy28dgyci5cyv50y61'';
|
||||
};
|
||||
excon_0_25_3 = {
|
||||
basename = ''excon'';
|
||||
meta = {
|
||||
description = ''speed, persistence, http(s)'';
|
||||
homepage = ''https://github.com/geemus/excon'';
|
||||
longDescription = ''EXtended http(s) CONnections'';
|
||||
};
|
||||
name = ''excon-0.25.3'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''1d552jhvrpmnzrg3di88397l07ngrz04s2al17klpam6crxqw2b2'';
|
||||
};
|
||||
execjs_2_0_2 = {
|
||||
basename = ''execjs'';
|
||||
meta = {
|
||||
@ -764,6 +853,17 @@ using TCP/IP, especially if custom protocols are required.'';
|
||||
requiredGems = [ g.faraday_0_8_8 ];
|
||||
sha256 = ''1kwvi2sdxd6j764a7q5iir73dw2v6816zx3l8cgfv0wr2m47icq2'';
|
||||
};
|
||||
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_0 = {
|
||||
basename = ''ffi'';
|
||||
meta = {
|
||||
@ -775,6 +875,17 @@ using TCP/IP, especially if custom protocols are required.'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''0rnh9yyfzcpdmi8m7giyd21lgqj00afgxvgbx41hsi2ls1ghfwvy'';
|
||||
};
|
||||
ffi_1_9_3 = {
|
||||
basename = ''ffi'';
|
||||
meta = {
|
||||
description = ''Ruby FFI'';
|
||||
homepage = ''http://wiki.github.com/ffi/ffi'';
|
||||
longDescription = ''Ruby FFI library'';
|
||||
};
|
||||
name = ''ffi-1.9.3'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''0873h6jp3v65mll7av9bxlzp9m9l1cc66j0krg0llchwbh4pv5sp'';
|
||||
};
|
||||
file_tail_1_0_12 = {
|
||||
basename = ''file_tail'';
|
||||
meta = {
|
||||
@ -797,6 +908,17 @@ using TCP/IP, especially if custom protocols are required.'';
|
||||
requiredGems = [ g.thor_0_18_1 g.dotenv_0_9_0 ];
|
||||
sha256 = ''0yqyjix9jm4iwyc4f3wc32vxr28rpjcw1c9ni5brs4s2a24inzlk'';
|
||||
};
|
||||
formatador_0_2_4 = {
|
||||
basename = ''formatador'';
|
||||
meta = {
|
||||
description = ''Ruby STDOUT text formatting'';
|
||||
homepage = ''http://github.com/geemus/formatador'';
|
||||
longDescription = ''STDOUT text formatting'';
|
||||
};
|
||||
name = ''formatador-0.2.4'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''0pgmk1h6i6m3cslnfyjqld06a4c2xbbvmngxg2axddf39xwz6f12'';
|
||||
};
|
||||
gettext_3_0_0 = {
|
||||
basename = ''gettext'';
|
||||
meta = {
|
||||
@ -833,6 +955,17 @@ So you can use GNU gettext tools for maintaining.
|
||||
requiredGems = [ g.multi_json_1_7_9 ];
|
||||
sha256 = ''07nzchdvkkd35m9k7d9k8j72jm3imv56ccn734mxa5klv1xx2d45'';
|
||||
};
|
||||
guard_2_2_4 = {
|
||||
basename = ''guard'';
|
||||
meta = {
|
||||
description = ''Guard keeps an eye on your file modifications'';
|
||||
homepage = ''http://guardgem.org'';
|
||||
longDescription = ''Guard is a command line tool to easily handle events on file system modifications.'';
|
||||
};
|
||||
name = ''guard-2.2.4'';
|
||||
requiredGems = [ g.thor_0_18_1 g.listen_2_2_0 g.pry_0_9_12_3 g.lumberjack_1_0_4 g.formatador_0_2_4 ];
|
||||
sha256 = ''0z427rkcpzy82g21cgq7i5sn1vxn8hm8j4d78kj9vlaqgilcybhq'';
|
||||
};
|
||||
highline_1_6_19 = {
|
||||
basename = ''highline'';
|
||||
meta = {
|
||||
@ -848,6 +981,21 @@ minutes of work.
|
||||
requiredGems = [ ];
|
||||
sha256 = ''0gylnz2cdaswgszgl8x2qx0c87md4246r1i0blgm3nqvgd4hlsxd'';
|
||||
};
|
||||
highline_1_6_20 = {
|
||||
basename = ''highline'';
|
||||
meta = {
|
||||
description = ''HighLine is a high-level command-line IO library.'';
|
||||
homepage = ''http://highline.rubyforge.org'';
|
||||
longDescription = ''A high-level IO library that provides validation, type conversion, and more for
|
||||
command-line interfaces. HighLine also includes a complete menu system that can
|
||||
crank out anything from simple list selection to complete shells with just
|
||||
minutes of work.
|
||||
'';
|
||||
};
|
||||
name = ''highline-1.6.20'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''0gk7mpw2r5lv60vr4hb0090wbnqh0fsbyrrcvxiqk7hyhxdz08iv'';
|
||||
};
|
||||
highline_1_6_2 = {
|
||||
basename = ''highline'';
|
||||
meta = {
|
||||
@ -927,6 +1075,17 @@ For extra goodness, see: http://seattlerb.rubyforge.org/hoe/Hoe.pdf'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''1nhjn07h2fqivdj6xqzi2x2kzh28vigx8z3q5fv2cqn9aqmbdacl'';
|
||||
};
|
||||
jekyll_1_3_0 = {
|
||||
basename = ''jekyll'';
|
||||
meta = {
|
||||
description = ''A simple, blog aware, static site generator.'';
|
||||
homepage = ''http://github.com/mojombo/jekyll'';
|
||||
longDescription = ''Jekyll is a simple, blog aware, static site generator.'';
|
||||
};
|
||||
name = ''jekyll-1.3.0'';
|
||||
requiredGems = [ g.liquid_2_5_4 g.classifier_1_3_3 g.listen_1_3_1 g.maruku_0_6_1 g.pygments_rb_0_5_4 g.commander_4_1_5 g.safe_yaml_0_9_7 g.colorator_0_1 g.redcarpet_2_3_0 ];
|
||||
sha256 = ''0hq9sdyivfifba0d4d7g113jbd3jwm8jpdc9i09mv0nfhdcbc3k4'';
|
||||
};
|
||||
jquery_rails_3_0_4 = {
|
||||
basename = ''jquery_rails'';
|
||||
meta = {
|
||||
@ -1004,6 +1163,49 @@ For extra goodness, see: http://seattlerb.rubyforge.org/hoe/Hoe.pdf'';
|
||||
requiredGems = [ g.addressable_2_3_5 ];
|
||||
sha256 = ''0ckvs40f29ancs0ki12pqb94k380cz41b4gbjplm85ly6kd57sph'';
|
||||
};
|
||||
launchy_2_4_0 = {
|
||||
basename = ''launchy'';
|
||||
meta = {
|
||||
description = ''Launchy is helper class for launching cross-platform applications in a fire and forget manner.'';
|
||||
homepage = ''http://github.com/copiousfreetime/launchy'';
|
||||
longDescription = ''Launchy is helper class for launching cross-platform applications in a fire and forget manner. There are application concepts (browser, email client, etc) that are common across all platforms, and they may be launched differently on each platform. Launchy is here to make a common approach to launching external application from within ruby programs.'';
|
||||
};
|
||||
name = ''launchy-2.4.0'';
|
||||
requiredGems = [ g.addressable_2_3_5 ];
|
||||
sha256 = ''0vxc3m4sjxyjjzw2rmsginf9nbxfyv7hhxshmn6kxkvcpjxx5di0'';
|
||||
};
|
||||
liquid_2_5_4 = {
|
||||
basename = ''liquid'';
|
||||
meta = {
|
||||
description = ''A secure, non-evaling end user template engine with aesthetic markup.'';
|
||||
homepage = ''http://www.liquidmarkup.org'';
|
||||
};
|
||||
name = ''liquid-2.5.4'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''0adb1fz20jwcyx1ia133426i59mrrz9iq9lpcmzq6jx0dlaa4amv'';
|
||||
};
|
||||
listen_1_3_1 = {
|
||||
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-1.3.1'';
|
||||
requiredGems = [ g.rb_fsevent_0_9_3 g.rb_inotify_0_9_2 g.rb_kqueue_0_2_0 ];
|
||||
sha256 = ''1p1rqz26ixx0fzc0hy3psq2bb3pwkv9awixv76zkaaqj1czabzbs'';
|
||||
};
|
||||
listen_2_2_0 = {
|
||||
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.2.0'';
|
||||
requiredGems = [ g.celluloid_0_15_2 g.rb_fsevent_0_9_3 g.rb_inotify_0_9_2 ];
|
||||
sha256 = ''1fm6cp5d4xbd5wdd0d804m3p2cc5rjrr5yzqzzh1ndzgbs94sv5c'';
|
||||
};
|
||||
locale_2_0_8 = {
|
||||
basename = ''locale'';
|
||||
meta = {
|
||||
@ -1027,6 +1229,17 @@ For extra goodness, see: http://seattlerb.rubyforge.org/hoe/Hoe.pdf'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''1yfpz9k0crb7q7y5bcaavf2jzbc170dj84hqz13qp75rj7bl3qhf'';
|
||||
};
|
||||
lumberjack_1_0_4 = {
|
||||
basename = ''lumberjack'';
|
||||
meta = {
|
||||
description = ''A simple, powerful, and very fast logging utility that can be a drop in replacement for Logger or ActiveSupport::BufferedLogger.'';
|
||||
homepage = ''http://github.com/bdurand/lumberjack'';
|
||||
longDescription = ''A simple, powerful, and very fast logging utility that can be a drop in replacement for Logger or ActiveSupport::BufferedLogger. Provides support for automatically rolling log files even with multiple processes writing the same log file.'';
|
||||
};
|
||||
name = ''lumberjack-1.0.4'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''1mj6m12hnmkvzl4w2yh04ak3z45pwksj6ra7v30za8snw9kg919d'';
|
||||
};
|
||||
macaddr_1_6_1 = {
|
||||
basename = ''macaddr'';
|
||||
meta = {
|
||||
@ -1049,6 +1262,20 @@ For extra goodness, see: http://seattlerb.rubyforge.org/hoe/Hoe.pdf'';
|
||||
requiredGems = [ g.mime_types_1_25 g.treetop_1_4_15 ];
|
||||
sha256 = ''0z15ksb8blcppchv03g34844f7xgf36ckp484qjj2886ig1qara4'';
|
||||
};
|
||||
maruku_0_6_1 = {
|
||||
basename = ''maruku'';
|
||||
meta = {
|
||||
description = ''Maruku is a Markdown-superset interpreter written in Ruby.'';
|
||||
homepage = ''http://github.com/bhollis/maruku'';
|
||||
longDescription = ''Maruku is a Markdown interpreter in Ruby.
|
||||
It features native export to HTML and PDF (via Latex). The
|
||||
output is really beautiful!
|
||||
'';
|
||||
};
|
||||
name = ''maruku-0.6.1'';
|
||||
requiredGems = [ g.syntax_1_0_0 ];
|
||||
sha256 = ''01xc4l480k79jbicr0j37d9bmd4dsnrjh5hwdrh2djvy06l77ngz'';
|
||||
};
|
||||
mechanize_2_7_2 = {
|
||||
basename = ''mechanize'';
|
||||
meta = {
|
||||
@ -1132,6 +1359,43 @@ and added by the users of MIME::Types.'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''0hd6hpl05jyx3siznk70z46bmrzwmcyrr24yfaqg6nar35zw8bgf'';
|
||||
};
|
||||
mime_types_2_0 = {
|
||||
basename = ''mime_types'';
|
||||
meta = {
|
||||
description = ''The mime-types library provides a library and registry for information about MIME content type definitions'';
|
||||
homepage = ''http://mime-types.rubyforge.org/'';
|
||||
longDescription = ''The mime-types library provides a library and registry for information about
|
||||
MIME content type definitions. It can be used to determine defined filename
|
||||
extensions for MIME types, or to use filename extensions to look up the likely
|
||||
MIME type definitions.
|
||||
|
||||
MIME content types are used in MIME-compliant communications, as in e-mail or
|
||||
HTTP traffic, to indicate the type of content which is transmitted. The
|
||||
mime-types library provides the ability for detailed information about MIME
|
||||
entities (provided as an enumerable collection of MIME::Type objects) to be
|
||||
determined and used programmatically. There are many types defined by RFCs and
|
||||
vendors, so the list is long but by definition incomplete; don't hesitate to to
|
||||
add additional type definitions (see Contributing.rdoc). The primary sources
|
||||
for MIME type definitions found in mime-types is the IANA collection of
|
||||
registrations (see below for the link), RFCs, and W3C recommendations.
|
||||
|
||||
The mime-types library uses semantic versioning. This is release 2.0; there are
|
||||
incompatible changes in the API provided by mime-types, mostly around registry
|
||||
initialization (see History.rdoc for full details), and the removal of support
|
||||
for Ruby 1.8 interpreters.
|
||||
|
||||
mime-types (previously called MIME::Types for Ruby) was originally based on
|
||||
MIME::Types for Perl by Mark Overmeer, copyright 2001 - 2009. It is built to
|
||||
conform to the MIME types of RFCs 2045 and 2231. It tracks the {IANA
|
||||
registry}[http://www.iana.org/assignments/media-types/]
|
||||
({ftp}[ftp://ftp.iana.org/assignments/media-types]) with some unofficial types
|
||||
added from the {LTSW collection}[http://www.ltsw.se/knbase/internet/mime.htp]
|
||||
and added by the users of mime-types.'';
|
||||
};
|
||||
name = ''mime-types-2.0'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''1q1s22l3mm0am2f7n9qjqp8zl0smr9zlqr2ywwyfjkid2sj3prfk'';
|
||||
};
|
||||
mini_portile_0_5_1 = {
|
||||
basename = ''mini_portile'';
|
||||
meta = {
|
||||
@ -1464,6 +1728,17 @@ augments 'require' to find and load matching files.'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''082zmail2h3cxd9z1wnibhk6aj4sb1f3zzwra6kg9bp51kx2c00v'';
|
||||
};
|
||||
posix_spawn_0_3_6 = {
|
||||
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.6'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''0f2mqka8024yz55iw8wbihvmakwqnbrdr4a1ffl3x2zi104yvb43'';
|
||||
};
|
||||
pry_0_9_12_2 = {
|
||||
basename = ''pry'';
|
||||
meta = {
|
||||
@ -1475,6 +1750,17 @@ augments 'require' to find and load matching files.'';
|
||||
requiredGems = [ g.coderay_1_0_9 g.slop_3_4_6 g.method_source_0_8_2 ];
|
||||
sha256 = ''141slzb62zfzdhrygqjmrzh68s3vzrb4mwyipy2lhps5q4b46y9s'';
|
||||
};
|
||||
pry_0_9_12_3 = {
|
||||
basename = ''pry'';
|
||||
meta = {
|
||||
description = ''An IRB alternative and runtime developer console'';
|
||||
homepage = ''http://pry.github.com'';
|
||||
longDescription = ''An IRB alternative and runtime developer console'';
|
||||
};
|
||||
name = ''pry-0.9.12.3'';
|
||||
requiredGems = [ g.coderay_1_1_0 g.slop_3_4_7 g.method_source_0_8_2 ];
|
||||
sha256 = ''1dn80vnyq1l6192sg3p29d0yz6rswnsl8rn3lkf75c86a2qqxpy3'';
|
||||
};
|
||||
pusher_client_0_3_1 = {
|
||||
basename = ''pusher_client'';
|
||||
meta = {
|
||||
@ -1486,6 +1772,17 @@ augments 'require' to find and load matching files.'';
|
||||
requiredGems = [ g.websocket_1_0_7 g.ruby_hmac_0_4_0 ];
|
||||
sha256 = ''1mxqy960iln065fypk1ww3xgv7q396fpl6v0rp7ipls6aj86j970'';
|
||||
};
|
||||
pygments_rb_0_5_4 = {
|
||||
basename = ''pygments_rb'';
|
||||
meta = {
|
||||
description = ''pygments wrapper for ruby'';
|
||||
homepage = ''http://github.com/tmm1/pygments.rb'';
|
||||
longDescription = ''pygments.rb exposes the pygments syntax highlighter to Ruby'';
|
||||
};
|
||||
name = ''pygments.rb-0.5.4'';
|
||||
requiredGems = [ g.yajl_ruby_1_1_0 g.posix_spawn_0_3_6 ];
|
||||
sha256 = ''0ryl0f0zp0rffaggd978cmrkzsmf83x452fcinw6p705xdk4zbvl'';
|
||||
};
|
||||
rack_1_5_2 = {
|
||||
basename = ''rack'';
|
||||
meta = {
|
||||
@ -1606,6 +1903,28 @@ request helpers feature.'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''0bdnxwdxj4r1kdxfi5nszbsb126njrr81p912g64xxs2bgxd1bp1'';
|
||||
};
|
||||
rb_inotify_0_9_2 = {
|
||||
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.2'';
|
||||
requiredGems = [ g.ffi_1_9_3 ];
|
||||
sha256 = ''0752fhgfrx370b2jnhxzs8sjv2l8yrnwqj337kx9v100igd1c7iv'';
|
||||
};
|
||||
rb_kqueue_0_2_0 = {
|
||||
basename = ''rb_kqueue'';
|
||||
meta = {
|
||||
description = ''A Ruby wrapper for BSD's kqueue, using FFI'';
|
||||
homepage = ''http://github.com/mat813/rb-kqueue'';
|
||||
longDescription = ''A Ruby wrapper for BSD's kqueue, using FFI'';
|
||||
};
|
||||
name = ''rb-kqueue-0.2.0'';
|
||||
requiredGems = [ g.ffi_1_9_3 ];
|
||||
sha256 = ''1f2wimhq93a1zy2fbyj7iyh7hvzmzwn3pzhkwb3npy4mj1df83n3'';
|
||||
};
|
||||
rdiscount_2_1_6 = {
|
||||
basename = ''rdiscount'';
|
||||
meta = {
|
||||
@ -1616,6 +1935,17 @@ request helpers feature.'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''180ln9gwxn0cyflg0i1viv7jyalmjqvqr34cb65xsmmsz1nz55q2'';
|
||||
};
|
||||
redcarpet_2_3_0 = {
|
||||
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-2.3.0'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''1fghh7n9kz6n6bdhgix5s8lyj5sw6q44zizf4mdgz5xsgwqcr6sw'';
|
||||
};
|
||||
redis_3_0_5 = {
|
||||
basename = ''redis'';
|
||||
meta = {
|
||||
@ -1691,6 +2021,17 @@ multiple, different applications.
|
||||
requiredGems = [ g.resque_1_25_1 g.twitter_bootstrap_rails_2_2_8 g.jquery_rails_3_0_4 g.sass_rails_4_0_1 g.coffee_rails_4_0_1 ];
|
||||
sha256 = ''1v4g0zrlq9n0pkhdiwxqcmis5p8hpxm475vchldk63mi1vy4fvr2'';
|
||||
};
|
||||
rest_client_1_6_7 = {
|
||||
basename = ''rest_client'';
|
||||
meta = {
|
||||
description = ''Simple HTTP and REST client for Ruby, inspired by microframework syntax for specifying actions.'';
|
||||
homepage = ''http://github.com/archiloque/rest-client'';
|
||||
longDescription = ''A simple HTTP and REST client for Ruby, inspired by the Sinatra microframework style of specifying actions: get, put, post, delete.'';
|
||||
};
|
||||
name = ''rest-client-1.6.7'';
|
||||
requiredGems = [ g.mime_types_2_0 ];
|
||||
sha256 = ''0nn7zalgidz2yj0iqh3xvzh626krm2al79dfiij19jdhp0rk8853'';
|
||||
};
|
||||
right_aws_3_1_0 = {
|
||||
basename = ''right_aws'';
|
||||
meta = {
|
||||
@ -1795,6 +2136,17 @@ in JSDuck.
|
||||
requiredGems = [ ];
|
||||
sha256 = ''1w6yr5n3b8yd0rsba9q3zyxr0n2hbpkz4v2k1qx6j1ywvl9rc2c1'';
|
||||
};
|
||||
rmagick_2_13_2 = {
|
||||
basename = ''rmagick'';
|
||||
meta = {
|
||||
description = ''Ruby binding to ImageMagick'';
|
||||
homepage = ''http://rubyforge.org/projects/rmagick'';
|
||||
longDescription = ''RMagick is an interface between Ruby and ImageMagick.'';
|
||||
};
|
||||
name = ''rmagick-2.13.2'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''1fw5rs5yqi5ayh44d18gjq68chiz14byx01h33c8jvkdxz3b9wz4'';
|
||||
};
|
||||
rmail_1_0_0 = {
|
||||
basename = ''rmail'';
|
||||
meta = {
|
||||
@ -1905,6 +2257,27 @@ Originally written by Daiki Ueno. Converted to a RubyGem by Geoffrey Grosenbach'
|
||||
requiredGems = [ ];
|
||||
sha256 = ''1khf6d903agnwd8965f5f8b353rzmfvygxp53z1199rqzw8h46q2'';
|
||||
};
|
||||
rubyzip_1_1_0 = {
|
||||
basename = ''rubyzip'';
|
||||
meta = {
|
||||
description = ''rubyzip is a ruby module for reading and writing zip files'';
|
||||
homepage = ''http://github.com/rubyzip/rubyzip'';
|
||||
};
|
||||
name = ''rubyzip-1.1.0'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''0kxpcs047fb52lz0imp6vl3hr5khqpk0jfbr2knfbp612ynzyzcl'';
|
||||
};
|
||||
safe_yaml_0_9_7 = {
|
||||
basename = ''safe_yaml'';
|
||||
meta = {
|
||||
description = ''SameYAML provides an alternative implementation of YAML.load suitable for accepting user input in Ruby applications.'';
|
||||
homepage = ''http://dtao.github.com/safe_yaml/'';
|
||||
longDescription = ''Parse YAML safely, without that pesky arbitrary object deserialization vulnerability'';
|
||||
};
|
||||
name = ''safe_yaml-0.9.7'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''0y34vpak8gim18rq02rgd144jsvk5is4xni16wm3shbhivzqb4hk'';
|
||||
};
|
||||
sass_3_2_10 = {
|
||||
basename = ''sass'';
|
||||
meta = {
|
||||
@ -2004,6 +2377,17 @@ interpreters.'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''0fdp3nkljjs2d5yhgjzcqi0f6xq67byfbrayg5aj7r76rsw0hmal'';
|
||||
};
|
||||
slop_3_4_7 = {
|
||||
basename = ''slop'';
|
||||
meta = {
|
||||
description = ''Simple Lightweight Option Parsing'';
|
||||
homepage = ''http://github.com/leejarvis/slop'';
|
||||
longDescription = ''A simple DSL for gathering options and parsing the command line'';
|
||||
};
|
||||
name = ''slop-3.4.7'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''1x3dwljqvkzj314rwn2bxgim9xvgwnfipzg5g0kwwxfn90fpv2sn'';
|
||||
};
|
||||
sprockets_2_10_0 = {
|
||||
basename = ''sprockets'';
|
||||
meta = {
|
||||
@ -2035,6 +2419,15 @@ interpreters.'';
|
||||
requiredGems = [ g.sprockets_2_10_0 g.actionpack_4_0_0 g.activesupport_4_0_0 ];
|
||||
sha256 = ''170llk1qsvzhhslmasqk4hp5lrv9ibwy44q32yg6kn9s7sh0c1wy'';
|
||||
};
|
||||
syntax_1_0_0 = {
|
||||
basename = ''syntax'';
|
||||
meta = {
|
||||
description = ''Syntax is Ruby library for performing simple syntax highlighting.'';
|
||||
};
|
||||
name = ''syntax-1.0.0'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''1z93kkhdq55vq3fg9wljhm591cj59qis58dk97l09b8bfxi2ypk0'';
|
||||
};
|
||||
syslog_protocol_0_9_2 = {
|
||||
basename = ''syslog_protocol'';
|
||||
meta = {
|
||||
@ -2164,6 +2557,17 @@ management.
|
||||
requiredGems = [ ];
|
||||
sha256 = ''00sr3yy7sbqaq7cb2d2kpycajxqf1b1wr1yy33z4bnzmqii0b0ir'';
|
||||
};
|
||||
timers_1_1_0 = {
|
||||
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/tarcieri/timers'';
|
||||
longDescription = ''Pure Ruby one-shot and periodic timers'';
|
||||
};
|
||||
name = ''timers-1.1.0'';
|
||||
requiredGems = [ ];
|
||||
sha256 = ''0x3vnkxy3bg9f6v1nhkfqkajr19glrzkmqd5a1wy8hrylx8rdfrv'';
|
||||
};
|
||||
tins_0_9_0 = {
|
||||
basename = ''tins'';
|
||||
meta = {
|
||||
|
@ -1,5 +1,6 @@
|
||||
{ fetchurl, writeScript, ruby, ncurses, sqlite, libxml2, libxslt, libffi
|
||||
, zlib, libuuid, gems, jdk, python, stdenv, libiconvOrEmpty }:
|
||||
, zlib, libuuid, gems, jdk, python, stdenv, libiconvOrEmpty, imagemagick
|
||||
, pkgconfig }:
|
||||
|
||||
let
|
||||
|
||||
@ -76,6 +77,12 @@ in
|
||||
NIX_POST_EXTRACT_FILES_HOOK = patchUsrBinEnv;
|
||||
};
|
||||
|
||||
rmagick = {
|
||||
buildInputs = [ imagemagick pkgconfig ];
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-I${imagemagick}/include/ImageMagick-6";
|
||||
};
|
||||
|
||||
xrefresh_server =
|
||||
let
|
||||
patch = fetchurl {
|
||||
|
@ -17,8 +17,8 @@ stdenv.mkDerivation rec {
|
||||
name = "ruby-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "ftp://ftp.ruby-lang.org/pub/ruby/1.8/${name}.tar.gz";
|
||||
sha256 = "0g2dsn8lmiqwqsp13ryzi97qxr7742v5l7v506x6wq9aiwpk42p6";
|
||||
url = "http://cache.ruby-lang.org/pub/ruby/1.8/${name}.tar.bz2";
|
||||
sha256 = "b4e34703137f7bfb8761c4ea474f7438d6ccf440b3d35f39cc5e4d4e239c07e3";
|
||||
};
|
||||
|
||||
# Have `configure' avoid `/usr/bin/nroff' in non-chroot builds.
|
||||
@ -45,7 +45,7 @@ stdenv.mkDerivation rec {
|
||||
passthru = rec {
|
||||
majorVersion = "1.8";
|
||||
minorVersion = "7";
|
||||
patchLevel = "371";
|
||||
patchLevel = "374";
|
||||
libPath = "lib/ruby/${majorVersion}";
|
||||
gemPath = "lib/ruby/gems/${majorVersion}";
|
||||
};
|
||||
|
@ -18,8 +18,8 @@ stdenv.mkDerivation rec {
|
||||
name = "ruby-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "ftp://ftp.ruby-lang.org/pub/ruby/1.9/${name}.tar.bz2";
|
||||
sha256 = "0w1avj8qfskvkgvrjxxc1cxjm14bf1v60ipvcl5q3zpn9k14k2cx";
|
||||
url = "http://cache.ruby-lang.org/pub/ruby/1.9/${name}.tar.bz2";
|
||||
sha256 = "0fdc6e860d0023ba7b94c7a0cf1f7d32908b65b526246de9dfd5bb39d0d7922b";
|
||||
};
|
||||
|
||||
# Have `configure' avoid `/usr/bin/nroff' in non-chroot builds.
|
||||
@ -62,7 +62,7 @@ stdenv.mkDerivation rec {
|
||||
passthru = rec {
|
||||
majorVersion = "1.9";
|
||||
minorVersion = "3";
|
||||
patchLevel = "429";
|
||||
patchLevel = "484";
|
||||
libPath = "lib/ruby/${majorVersion}";
|
||||
gemPath = "lib/ruby/gems/${majorVersion}";
|
||||
};
|
||||
|
@ -18,8 +18,8 @@ stdenv.mkDerivation rec {
|
||||
name = "ruby-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "ftp://ftp.ruby-lang.org/pub/ruby/2.0/${name}.tar.bz2";
|
||||
sha256 = "0pr9jf01cfap93xcngyd5zpns67ffjsgaxkm0qr1r464rj9d7066";
|
||||
url = "http://cache.ruby-lang.org/pub/ruby/2.0/${name}.tar.bz2";
|
||||
sha256 = "3de4e4d9aff4682fa4f8ed2b70bd0d746fae17452fc3d3a8e8f505ead9105ad9";
|
||||
};
|
||||
|
||||
# Have `configure' avoid `/usr/bin/nroff' in non-chroot builds.
|
||||
@ -30,11 +30,19 @@ stdenv.mkDerivation rec {
|
||||
++ (op zlibSupport zlib)
|
||||
++ (op opensslSupport openssl)
|
||||
++ (op gdbmSupport gdbm)
|
||||
++ (op yamlSupport libyaml);
|
||||
++ (op yamlSupport libyaml)
|
||||
# Looks like ruby fails to build on darwin without readline even if curses
|
||||
# support is not enabled, so add readline to the build inputs if curses
|
||||
# support is disabled (if it's enabled, we already have it) and we're
|
||||
# running on darwin
|
||||
++ (op (!cursesSupport && stdenv.isDarwin) readline);
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
configureFlags = ["--enable-shared" ];
|
||||
configureFlags = ["--enable-shared" ]
|
||||
# on darwin, we have /usr/include/tk.h -- so the configure script detects
|
||||
# that tk is installed
|
||||
++ ( if stdenv.isDarwin then [ "--with-out-ext=tk " ] else [ ]);
|
||||
|
||||
installFlags = stdenv.lib.optionalString docSupport "install-doc";
|
||||
# Bundler tries to create this directory
|
||||
@ -50,7 +58,7 @@ stdenv.mkDerivation rec {
|
||||
passthru = rec {
|
||||
majorVersion = "2.0";
|
||||
minorVersion = "0";
|
||||
patchLevel = "0";
|
||||
patchLevel = "353";
|
||||
libPath = "lib/ruby/${majorVersion}";
|
||||
gemPath = "lib/ruby/gems/${majorVersion}";
|
||||
};
|
||||
|
@ -1,15 +1,15 @@
|
||||
{stdenv, fetchurl, unzip}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "amrnb-7.0.0.2";
|
||||
name = "amrnb-11.0.0.0";
|
||||
srcAmr = fetchurl {
|
||||
url = http://www.3gpp.org/ftp/Specs/latest/Rel-7/26_series/26104-700.zip;
|
||||
sha256 = "0hgm8dddrqiinjdjxnsw0x899czjlvplq69z4kv8y4zqnrjlwzni";
|
||||
url = http://www.3gpp.org/ftp/Specs/latest/Rel-11/26_series/26104-b00.zip;
|
||||
sha256 = "1wf8ih0hk7w20vdlnw7jb7w73v15hbxgbvmq4wq7h2ghn0j8ppr3";
|
||||
};
|
||||
|
||||
src = fetchurl {
|
||||
url = http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.2.tar.bz2;
|
||||
sha256 = "0z4wjr0jml973vd0dvxlmy34daiswy5axlmpvc85k8qcr08i8zaa";
|
||||
url = http://ftp.penguin.cz/pub/users/utx/amr/amrnb-11.0.0.0.tar.bz2;
|
||||
sha256 = "1qgiw02n2a6r32pimnd97v2jkvnw449xrqmaxiivjy2jcr5h141q";
|
||||
};
|
||||
|
||||
buildInputs = [ unzip ];
|
||||
@ -17,7 +17,7 @@ stdenv.mkDerivation {
|
||||
configureFlags = [ "--cache-file=config.cache" "--with-downloader=true" ];
|
||||
|
||||
postConfigure = ''
|
||||
cp $srcAmr 26104-700.zip
|
||||
cp $srcAmr 26104-b00.zip
|
||||
'';
|
||||
|
||||
meta = {
|
||||
|
@ -13,6 +13,7 @@
|
||||
, dc1394Support ? false, libdc1394 ? null
|
||||
, x11grabSupport ? false, libXext ? null, libXfixes ? null
|
||||
, playSupport ? true, SDL ? null
|
||||
, freetypeSupport ? true, freetype ? null, fontconfig ? null
|
||||
}:
|
||||
|
||||
assert speexSupport -> speex != null;
|
||||
@ -27,6 +28,7 @@ assert vaapiSupport -> libva != null;
|
||||
assert faacSupport -> faac != null;
|
||||
assert x11grabSupport -> libXext != null && libXfixes != null;
|
||||
assert playSupport -> SDL != null;
|
||||
assert freetypeSupport -> freetype != null;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "ffmpeg-1.2.3";
|
||||
@ -59,7 +61,8 @@ stdenv.mkDerivation rec {
|
||||
++ stdenv.lib.optional faacSupport "--enable-libfaac --enable-nonfree"
|
||||
++ stdenv.lib.optional dc1394Support "--enable-libdc1394"
|
||||
++ stdenv.lib.optional x11grabSupport "--enable-x11grab"
|
||||
++ stdenv.lib.optional playSupport "--enable-ffplay";
|
||||
++ stdenv.lib.optional playSupport "--enable-ffplay"
|
||||
++ stdenv.lib.optional freetypeSupport "--enable-libfreetype --enable-fontconfig";
|
||||
|
||||
buildInputs = [ pkgconfig lame yasm zlib bzip2 alsaLib texinfo perl ]
|
||||
++ stdenv.lib.optional mp3Support lame
|
||||
@ -75,7 +78,8 @@ stdenv.mkDerivation rec {
|
||||
++ stdenv.lib.optional faacSupport faac
|
||||
++ stdenv.lib.optional dc1394Support libdc1394
|
||||
++ stdenv.lib.optionals x11grabSupport [ libXext libXfixes ]
|
||||
++ stdenv.lib.optional playSupport SDL;
|
||||
++ stdenv.lib.optional playSupport SDL
|
||||
++ stdenv.lib.optionals freetypeSupport [ freetype fontconfig ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
|
@ -40,7 +40,7 @@ in
|
||||
installPhase =
|
||||
''
|
||||
mkdir -p "$out/lib/locale"
|
||||
cp -v "$TMPDIR/nix/store/"*"/lib/locale/locale-archive" "$out/lib/locale"
|
||||
cp -v "$TMPDIR/$NIX_STORE/"*"/lib/locale/locale-archive" "$out/lib/locale"
|
||||
'';
|
||||
|
||||
meta.description = "Locale information for the GNU C Library";
|
||||
|
@ -2,8 +2,8 @@
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "Glob";
|
||||
version = "0.7.2";
|
||||
sha256 = "1x4gh7z9jx9hdkjwsc31yyjssw6i7ziixhjrxr9b8zkijk1b4r5i";
|
||||
version = "0.7.3";
|
||||
sha256 = "0yl0wxbd03dv0hfr2aqwm9f3xnhjkdicymqv3nmhjjslqq3a59zd";
|
||||
buildDepends = [ dlist filepath transformers ];
|
||||
meta = {
|
||||
homepage = "http://iki.fi/matti.niemenmaa/glob/";
|
||||
|
@ -8,11 +8,15 @@ cabal.mkDerivation (self: {
|
||||
isExecutable = true;
|
||||
buildDepends = [ HDBC mtl time utf8String ];
|
||||
extraLibraries = [ odbc ];
|
||||
noHaddock = true; # Haddocks currently fail to build
|
||||
meta = {
|
||||
homepage = "https://github.com/hdbc/hdbc-odbc";
|
||||
description = "ODBC driver for HDBC";
|
||||
license = self.stdenv.lib.licenses.bsd3;
|
||||
platforms = self.ghc.meta.platforms;
|
||||
maintainers = [ self.stdenv.lib.maintainers.andres ];
|
||||
maintainers = [
|
||||
self.stdenv.lib.maintainers.andres
|
||||
self.stdenv.lib.maintainers.ocharles
|
||||
];
|
||||
};
|
||||
})
|
||||
|
@ -1,10 +1,15 @@
|
||||
{ cabal, diffutils }:
|
||||
{ cabal, cmdargs, diffutils, doctest, filepath, hspec, lens, mtl
|
||||
, syb
|
||||
}:
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "HList";
|
||||
version = "0.2.3";
|
||||
sha256 = "1efbe0c2cb361ab0a9d864a09f9c58075132cb50094207260cb1363fe73c2908";
|
||||
version = "0.3.0.1";
|
||||
sha256 = "03mp99pb8whh3whyffyj8wbld8lv8i930dyjdpyfwiaj13x05iy4";
|
||||
buildDepends = [ mtl ];
|
||||
testDepends = [ cmdargs doctest filepath hspec lens mtl syb ];
|
||||
buildTools = [ diffutils ];
|
||||
doCheck = false;
|
||||
meta = {
|
||||
description = "Heterogeneous lists";
|
||||
license = self.stdenv.lib.licenses.mit;
|
||||
|
24
pkgs/development/libraries/haskell/HTTP/4000.2.9.nix
Normal file
24
pkgs/development/libraries/haskell/HTTP/4000.2.9.nix
Normal file
@ -0,0 +1,24 @@
|
||||
{ cabal, caseInsensitive, conduit, deepseq, httpdShed, httpTypes
|
||||
, HUnit, mtl, network, parsec, pureMD5, split, testFramework
|
||||
, testFrameworkHunit, wai, warp
|
||||
}:
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "HTTP";
|
||||
version = "4000.2.9";
|
||||
sha256 = "0fnf4blh7gw0cbap16ss811wr0haa2gqd0gzdbz668jk58n1gmz7";
|
||||
buildDepends = [ mtl network parsec ];
|
||||
testDepends = [
|
||||
caseInsensitive conduit deepseq httpdShed httpTypes HUnit mtl
|
||||
network pureMD5 split testFramework testFrameworkHunit wai warp
|
||||
];
|
||||
jailbreak = true;
|
||||
doCheck = false;
|
||||
meta = {
|
||||
homepage = "https://github.com/haskell/HTTP";
|
||||
description = "A library for client-side HTTP";
|
||||
license = self.stdenv.lib.licenses.bsd3;
|
||||
platforms = self.ghc.meta.platforms;
|
||||
maintainers = [ self.stdenv.lib.maintainers.andres ];
|
||||
};
|
||||
})
|
@ -2,8 +2,8 @@
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "ListLike";
|
||||
version = "4.0.0";
|
||||
sha256 = "13dw8pkj8dwxb81gbcm7gn221zyr3ck9s9s1iv7v1b69chv0zyxk";
|
||||
version = "4.0.1";
|
||||
sha256 = "1ny6h3f1l0gigyv2rs24s7w158vsflrdx4i9v1al4910cxh56awv";
|
||||
buildDepends = [ text vector ];
|
||||
testDepends = [ HUnit QuickCheck random text vector ];
|
||||
meta = {
|
||||
|
@ -1,10 +1,10 @@
|
||||
{ cabal, extensibleExceptions, transformers }:
|
||||
{ cabal, extensibleExceptions, monadsTf, transformers }:
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "MonadCatchIO-transformers";
|
||||
version = "0.3.0.0";
|
||||
sha256 = "0v7k6npfr1x9s4bk409y6sc1vhzs5pm4mwpky356z7kdvz2z274c";
|
||||
buildDepends = [ extensibleExceptions transformers ];
|
||||
version = "0.3.1.0";
|
||||
sha256 = "1r5syyalk8a81byhk39yp0j7vdrvlrpppbg52dql1fx6kfhysaxn";
|
||||
buildDepends = [ extensibleExceptions monadsTf transformers ];
|
||||
meta = {
|
||||
description = "Monad-transformer compatible version of the Control.Exception module";
|
||||
license = self.stdenv.lib.licenses.bsd3;
|
||||
|
@ -5,8 +5,8 @@
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "accelerate-cuda";
|
||||
version = "0.13.0.4";
|
||||
sha256 = "0zdb02mj9sbkj51a1q7sl6kmjx51gvps52dwc70qpm3rk71qnp1k";
|
||||
version = "0.14.0.0";
|
||||
sha256 = "1qms1w5rjjd77lldds2ljj9zr15dybnsaq8vxfyb5a4diq12bmi5";
|
||||
buildDepends = [
|
||||
accelerate binary cryptohash cuda fclabels filepath hashable
|
||||
hashtables languageCQuote mainlandPretty mtl SafeSemaphore srcloc
|
||||
|
@ -1,22 +1,23 @@
|
||||
{ cabal, accelerate, accelerateCuda, accelerateFft, accelerateIo
|
||||
, attoparsec, bmp, bytestringLexing, cereal, cmdargs, criterion
|
||||
, cuda, deepseq, fclabels, filepath, gloss, hashtables, mtl
|
||||
, mwcRandom, pgm, QuickCheck, random, repa, repaIo, testFramework
|
||||
, testFrameworkQuickcheck2, vector, vectorAlgorithms
|
||||
, attoparsec, bmp, bytestringLexing, cereal, criterion, ekg
|
||||
, fclabels, filepath, gloss, glossAccelerate, glossRasterAccelerate
|
||||
, HUnit, mwcRandom, primitive, QuickCheck, random, repa, repaIo
|
||||
, testFramework, testFrameworkHunit, testFrameworkQuickcheck2
|
||||
, vector, vectorAlgorithms
|
||||
}:
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "accelerate-examples";
|
||||
version = "0.13.0.0";
|
||||
sha256 = "18f8p47sf10zn678540qzzf5pl18w9f068s83lpz4lk0r5gf4lzx";
|
||||
version = "0.14.0.0";
|
||||
sha256 = "01hxww3ypjlcfimkvf7gxl2g7msad2yw1d6m0h4kkfqvpx84nfwr";
|
||||
isLibrary = false;
|
||||
isExecutable = true;
|
||||
buildDepends = [
|
||||
accelerate accelerateCuda accelerateFft accelerateIo attoparsec bmp
|
||||
bytestringLexing cereal cmdargs criterion cuda deepseq fclabels
|
||||
filepath gloss hashtables mtl mwcRandom pgm QuickCheck random repa
|
||||
repaIo testFramework testFrameworkQuickcheck2 vector
|
||||
vectorAlgorithms
|
||||
bytestringLexing cereal criterion ekg fclabels filepath gloss
|
||||
glossAccelerate glossRasterAccelerate HUnit mwcRandom primitive
|
||||
QuickCheck random repa repaIo testFramework testFrameworkHunit
|
||||
testFrameworkQuickcheck2 vector vectorAlgorithms
|
||||
];
|
||||
configureFlags = "-f-opencl";
|
||||
meta = {
|
||||
|
@ -2,8 +2,8 @@
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "accelerate-fft";
|
||||
version = "0.13.0.0";
|
||||
sha256 = "0gqdb7m0qf8wvccqnz9pafbvas3viwhr9i422cmfvjpxsmnzlcp7";
|
||||
version = "0.14.0.0";
|
||||
sha256 = "1rsrgrqn1gdds2wvv1mgzd3yg2mvbkgnj63ygjyzsk9j00wavd1g";
|
||||
buildDepends = [ accelerate accelerateCuda cuda cufft ];
|
||||
meta = {
|
||||
homepage = "https://github.com/AccelerateHS/accelerate-fft";
|
||||
|
@ -2,8 +2,8 @@
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "accelerate-io";
|
||||
version = "0.13.0.2";
|
||||
sha256 = "0lm1kkjs5gbd70k554vi9977v4bxxcxaw39r9wmwxf8nx2qxvshh";
|
||||
version = "0.14.0.0";
|
||||
sha256 = "1vvjmsfaz5xbvvb4x2fym43xvcjv41baxlfhlycgizaca4yw8w9h";
|
||||
buildDepends = [ accelerate bmp repa vector ];
|
||||
meta = {
|
||||
homepage = "https://github.com/AccelerateHS/accelerate-io";
|
||||
|
@ -1,10 +1,12 @@
|
||||
{ cabal, fclabels, hashable, hashtables }:
|
||||
{ cabal, fclabels, hashable, hashtables, unorderedContainers }:
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "accelerate";
|
||||
version = "0.13.0.5";
|
||||
sha256 = "1vqkv3k0w1zy0111a786npf3hypbcg675lbdkv2cf3zx5hqcnn6j";
|
||||
buildDepends = [ fclabels hashable hashtables ];
|
||||
version = "0.14.0.0";
|
||||
sha256 = "0b6mnv5l2vrbljak2yx9akpsyqc0qg1il54w0rlfm29fgqknlhjh";
|
||||
buildDepends = [
|
||||
fclabels hashable hashtables unorderedContainers
|
||||
];
|
||||
jailbreak = true;
|
||||
meta = {
|
||||
homepage = "https://github.com/AccelerateHS/accelerate/";
|
||||
|
@ -4,8 +4,8 @@
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "active";
|
||||
version = "0.1.0.9";
|
||||
sha256 = "0639qp4yc3dfvc9xcjk9k7qagvbcjwdgz3lklqsak9h551ccl7bv";
|
||||
version = "0.1.0.10";
|
||||
sha256 = "173ri9hv86sjfp3a0jp1y3v8rz0lfb6nz3yilcfvgc9sglcxa4bm";
|
||||
buildDepends = [ newtype semigroupoids semigroups vectorSpace ];
|
||||
testDepends = [
|
||||
newtype QuickCheck semigroupoids semigroups vectorSpace
|
||||
|
@ -2,8 +2,8 @@
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "asn1-types";
|
||||
version = "0.2.1";
|
||||
sha256 = "1gnyvinimxb9vw3gwvsdvja8ascm07v9f5grxh42fzqkx6fm5xvr";
|
||||
version = "0.2.2";
|
||||
sha256 = "0h3ww7iyf1xzl88mzmi03h6ws942953dr56v896vrkj3mj01hayx";
|
||||
buildDepends = [ time ];
|
||||
meta = {
|
||||
homepage = "http://github.com/vincenthz/hs-asn1-types";
|
||||
|
@ -5,8 +5,8 @@
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "bert";
|
||||
version = "1.2.1.1";
|
||||
sha256 = "1g5sm23cxlzc7lqdlrjn4f89g65ia2bhr25yfh286awxf23z8pyh";
|
||||
version = "1.2.2";
|
||||
sha256 = "1dlq9fl5d2adprcybs4d4cyhj9q2c1l4kcc6vnnyhbyn201gxgpn";
|
||||
buildDepends = [
|
||||
binary binaryConduit conduit mtl network networkConduit parsec time
|
||||
void
|
||||
|
@ -2,8 +2,8 @@
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "blaze-builder";
|
||||
version = "0.3.2.0";
|
||||
sha256 = "169q318jxhk7rmb8r679zhcdcmcca87d55341cnzajmc0580n6ih";
|
||||
version = "0.3.3.0";
|
||||
sha256 = "0j6nrwcnpcr7c17cxw3v85m19q8z91wb6jir8c6kls5m321hwd63";
|
||||
buildDepends = [ text ];
|
||||
meta = {
|
||||
homepage = "http://github.com/meiersi/blaze-builder";
|
||||
|
@ -1,10 +1,12 @@
|
||||
{ cabal, cairo, gtk2hsBuildtools, libc, mtl, pkgconfig, zlib }:
|
||||
{ cabal, cairo, gtk2hsBuildtools, libc, mtl, pkgconfig, utf8String
|
||||
, zlib
|
||||
}:
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "cairo";
|
||||
version = "0.12.4";
|
||||
sha256 = "0gy6nxhxam3yv0caj4psg9dd1a5yazh616fjbmjfh0kbk8vl6fbq";
|
||||
buildDepends = [ mtl ];
|
||||
version = "0.12.5.0";
|
||||
sha256 = "1khpksznh51yl27hs0zbabx8df04d26ccwh0vjidcwf3flvrbgwb";
|
||||
buildDepends = [ mtl utf8String ];
|
||||
buildTools = [ gtk2hsBuildtools ];
|
||||
extraLibraries = [ cairo libc pkgconfig zlib ];
|
||||
pkgconfigDepends = [ cairo ];
|
||||
|
24
pkgs/development/libraries/haskell/cassava/default.nix
Normal file
24
pkgs/development/libraries/haskell/cassava/default.nix
Normal file
@ -0,0 +1,24 @@
|
||||
{ cabal, attoparsec, blazeBuilder, deepseq, HUnit, QuickCheck
|
||||
, testFramework, testFrameworkHunit, testFrameworkQuickcheck2, text
|
||||
, unorderedContainers, vector
|
||||
}:
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "cassava";
|
||||
version = "0.2.2.0";
|
||||
sha256 = "0jv8lb9z7yf8rddyac0frsw4d1gchrgx8l9rryhl88gs7jss7dh7";
|
||||
buildDepends = [
|
||||
attoparsec blazeBuilder deepseq text unorderedContainers vector
|
||||
];
|
||||
testDepends = [
|
||||
attoparsec HUnit QuickCheck testFramework testFrameworkHunit
|
||||
testFrameworkQuickcheck2 text unorderedContainers vector
|
||||
];
|
||||
meta = {
|
||||
homepage = "https://github.com/tibbe/cassava";
|
||||
description = "A CSV parsing and encoding library";
|
||||
license = self.stdenv.lib.licenses.bsd3;
|
||||
platforms = self.ghc.meta.platforms;
|
||||
maintainers = [ self.stdenv.lib.maintainers.ocharles ];
|
||||
};
|
||||
})
|
@ -2,8 +2,8 @@
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "cereal-conduit";
|
||||
version = "0.7.1";
|
||||
sha256 = "0ry6vc3nkb1lj0p103b8pyd3472hx62s3c7yw3fk8mbjlygxyv43";
|
||||
version = "0.7.2";
|
||||
sha256 = "03jlhpz82a7j7n0351db0h7pkxihik3fv0wgjny7i0vlq7gyqdpl";
|
||||
buildDepends = [ cereal conduit transformers ];
|
||||
testDepends = [ cereal conduit HUnit mtl resourcet transformers ];
|
||||
meta = {
|
||||
|
@ -0,0 +1,14 @@
|
||||
{ cabal, libdevil }:
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "Codec-Image-DevIL";
|
||||
version = "0.2.3";
|
||||
sha256 = "1kv3hns9f0bhfb723nj9szyz3zfqpvy02azzsiymzjz4ajhqmrsz";
|
||||
buildDepends = [ libdevil ];
|
||||
meta = {
|
||||
homepage = "http://hackage.haskell.org/package/Codec-Image-DevIL";
|
||||
description = "Simple FFI interface to the DevIL image library";
|
||||
license = self.stdenv.lib.licenses.bsd3;
|
||||
platforms = self.ghc.meta.platforms;
|
||||
};
|
||||
})
|
@ -1,17 +1,17 @@
|
||||
{ cabal, doctest, hspec, liftedBase, mmorph, monadControl, mtl
|
||||
, QuickCheck, resourcet, text, transformers, transformersBase, void
|
||||
{ cabal, hspec, liftedBase, mmorph, monadControl, mtl, QuickCheck
|
||||
, resourcet, text, transformers, transformersBase, void
|
||||
}:
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "conduit";
|
||||
version = "1.0.9";
|
||||
sha256 = "00xzy6iq98p0b8bqncj2xl1gzba1kr58xmfbc3s29bqg1sisvjsz";
|
||||
version = "1.0.9.3";
|
||||
sha256 = "162lf83v0cip48y7a5mgvxrxnpr1vpc4lpcr8rbh0w981wkaxk4h";
|
||||
buildDepends = [
|
||||
liftedBase mmorph monadControl mtl resourcet text transformers
|
||||
transformersBase void
|
||||
];
|
||||
testDepends = [
|
||||
doctest hspec mtl QuickCheck resourcet text transformers void
|
||||
hspec mtl QuickCheck resourcet text transformers void
|
||||
];
|
||||
meta = {
|
||||
homepage = "http://github.com/snoyberg/conduit";
|
||||
|
@ -4,8 +4,8 @@
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "connection";
|
||||
version = "0.1.3";
|
||||
sha256 = "13bwlbga612kc7g3m3rrdzbdv4w0glp4af9r6crwgjsmxgimrgs9";
|
||||
version = "0.1.3.1";
|
||||
sha256 = "1z9vb20466lg7l8z4abfbsdzpix18hswpqcl7s2gv838s2wvd16w";
|
||||
buildDepends = [
|
||||
certificate cprngAes dataDefault network socks tls tlsExtra
|
||||
];
|
||||
|
@ -2,8 +2,8 @@
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "cuda";
|
||||
version = "0.5.1.0";
|
||||
sha256 = "1zsfsz8i05iq54wxj1maj6qqzv4ibr459h47knc7ds1qv4giwzhl";
|
||||
version = "0.5.1.1";
|
||||
sha256 = "0bz1pfcxxvq1s47nrwgj9cqmr20p9n3hh2hilih8083hnjjwh40x";
|
||||
buildTools = [ c2hs ];
|
||||
extraLibraries = [ cudatoolkit nvidia_x11 self.stdenv.gcc ];
|
||||
doCheck = false;
|
||||
|
@ -2,8 +2,8 @@
|
||||
|
||||
cabal.mkDerivation (self: {
|
||||
pname = "data-memocombinators";
|
||||
version = "0.4.4";
|
||||
sha256 = "06x79rgxi6cxrpzjzzsjk7yj7i0ajmcgns0n12lxakz9vxbqxyn2";
|
||||
version = "0.5.0";
|
||||
sha256 = "1kh2xj1z68gig8y5fqfwaha0mcd41laa2di9x2hryjwdgzswxy74";
|
||||
buildDepends = [ dataInttrie ];
|
||||
meta = {
|
||||
homepage = "http://github.com/luqui/data-memocombinators";
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user