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

This commit is contained in:
Eelco Dolstra 2016-09-05 19:10:12 +02:00
commit 7c239702b5
140 changed files with 2400 additions and 608 deletions

View File

@ -2,5 +2,9 @@
"userBlacklist": [ "userBlacklist": [
"civodul", "civodul",
"jhasse" "jhasse"
] ],
"alwaysNotifyForPaths": [
{ "name": "FRidh", "files": ["pkgs/top-level/python-packages.nix", "pkgs/development/interpreters/python/*", "pkgs/development/python-modules/*" ] }
],
"fileBlacklist": ["pkgs/top-level/all-packages.nix"]
} }

View File

@ -383,7 +383,7 @@ You can select a particular GHC version to compile with by setting the
Stack choose what GHC version it wants based on the snapshot specified Stack choose what GHC version it wants based on the snapshot specified
in `stack.yaml` (only works with Stack >= 1.1.3): in `stack.yaml` (only works with Stack >= 1.1.3):
{nixpkgs ? import <nixpkgs> { }, ghc ? nixpkgs.ghc} {nixpkgs ? import <nixpkgs> { }, ghc ? nixpkgs.ghc}:
with nixpkgs; with nixpkgs;

View File

@ -157,16 +157,16 @@ expression on standard output. For example:
<screen> <screen>
$ nix-generate-from-cpan XML::Simple $ nix-generate-from-cpan XML::Simple
XMLSimple = buildPerlPackage { XMLSimple = buildPerlPackage rec {
name = "XML-Simple-2.20"; name = "XML-Simple-2.22";
src = fetchurl { src = fetchurl {
url = mirror://cpan/authors/id/G/GR/GRANTM/XML-Simple-2.20.tar.gz; url = "mirror://cpan/authors/id/G/GR/GRANTM/${name}.tar.gz";
sha256 = "5cff13d0802792da1eb45895ce1be461903d98ec97c9c953bc8406af7294434a"; sha256 = "b9450ef22ea9644ae5d6ada086dc4300fa105be050a2030ebd4efd28c198eb49";
}; };
propagatedBuildInputs = [ XMLNamespaceSupport XMLSAX XMLSAXExpat ]; propagatedBuildInputs = [ XMLNamespaceSupport XMLSAX XMLSAXExpat ];
meta = { meta = {
description = "Easily read/write XML (esp config files)"; description = "An API for simple XML files";
license = "perl"; license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
}; };
}; };
</screen> </screen>

View File

@ -40,6 +40,7 @@
arobyn = "Alexei Robyn <shados@shados.net>"; arobyn = "Alexei Robyn <shados@shados.net>";
artuuge = "Artur E. Ruuge <artuuge@gmail.com>"; artuuge = "Artur E. Ruuge <artuuge@gmail.com>";
ashalkhakov = "Artyom Shalkhakov <artyom.shalkhakov@gmail.com>"; ashalkhakov = "Artyom Shalkhakov <artyom.shalkhakov@gmail.com>";
aske = "Kirill Boltaev <aske@fmap.me>";
asppsa = "Alastair Pharo <asppsa@gmail.com>"; asppsa = "Alastair Pharo <asppsa@gmail.com>";
astsmtl = "Alexander Tsamutali <astsmtl@yandex.ru>"; astsmtl = "Alexander Tsamutali <astsmtl@yandex.ru>";
aszlig = "aszlig <aszlig@redmoonstudios.org>"; aszlig = "aszlig <aszlig@redmoonstudios.org>";
@ -130,6 +131,7 @@
ericsagnes = "Eric Sagnes <eric.sagnes@gmail.com>"; ericsagnes = "Eric Sagnes <eric.sagnes@gmail.com>";
erikryb = "Erik Rybakken <erik.rybakken@math.ntnu.no>"; erikryb = "Erik Rybakken <erik.rybakken@math.ntnu.no>";
ertes = "Ertugrul Söylemez <esz@posteo.de>"; ertes = "Ertugrul Söylemez <esz@posteo.de>";
ethercrow = "Dmitry Ivanov <ethercrow@gmail.com>";
exi = "Reno Reckling <nixos@reckling.org>"; exi = "Reno Reckling <nixos@reckling.org>";
exlevan = "Alexey Levan <exlevan@gmail.com>"; exlevan = "Alexey Levan <exlevan@gmail.com>";
expipiplus1 = "Joe Hermaszewski <nix@monoid.al>"; expipiplus1 = "Joe Hermaszewski <nix@monoid.al>";

View File

@ -16,12 +16,22 @@ networking.networkmanager.enable = true;
some desktop managers (e.g., GNOME) enable NetworkManager some desktop managers (e.g., GNOME) enable NetworkManager
automatically for you.</para> automatically for you.</para>
<para>All users that should have permission to change network settings <para>All users that should have permission to change network settings must
must belong to the <code>networkmanager</code> group.</para> belong to the <code>networkmanager</code> group:
<programlisting>
users.extraUsers.youruser.extraGroups = [ "networkmanager" ];
</programlisting>
</para>
<para>NetworkManager is controlled using either <command>nmcli</command> or
<command>nmtui</command> (curses-based terminal user interface). See their
manual pages for details on their usage. Some desktop environments (GNOME, KDE)
have their own configuration tools for NetworkManager.</para>
<note><para><code>networking.networkmanager</code> and <note><para><code>networking.networkmanager</code> and
<code>networking.wireless</code> can not be enabled at the same time: <code>networking.wireless</code> (WPA Supplicant) cannot be enabled at the same
you can still connect to the wireless networks using time: you can still connect to the wireless networks using
NetworkManager.</para></note> NetworkManager.</para></note>
</section> </section>

View File

@ -11,17 +11,27 @@ with lib;
# TODO: find another name for it. # TODO: find another name for it.
fonts = mkOption { fonts = mkOption {
type = types.listOf types.path; type = types.listOf types.path;
default = [];
example = literalExample "[ pkgs.dejavu_fonts ]"; example = literalExample "[ pkgs.dejavu_fonts ]";
description = "List of primary font paths."; description = "List of primary font paths.";
}; };
enableDefaultFonts = mkOption {
type = types.bool;
default = false;
description = ''
Enable a basic set of fonts providing several font styles
and families and reasonable coverage of Unicode.
'';
};
}; };
}; };
config = { config = {
fonts.fonts = fonts.fonts = mkIf config.fonts.enableDefaultFonts
[ [
pkgs.xorg.fontbhlucidatypewriter100dpi pkgs.xorg.fontbhlucidatypewriter100dpi
pkgs.xorg.fontbhlucidatypewriter75dpi pkgs.xorg.fontbhlucidatypewriter75dpi

View File

@ -34,10 +34,10 @@ let
config.programs.ssh.package config.programs.ssh.package
pkgs.perl pkgs.perl
pkgs.procps pkgs.procps
pkgs.rsync
pkgs.strace pkgs.strace
pkgs.su pkgs.su
pkgs.time pkgs.time
pkgs.texinfoInteractive
pkgs.utillinux pkgs.utillinux
pkgs.which # 88K size pkgs.which # 88K size
]; ];
@ -104,7 +104,6 @@ in
"/etc/xdg" "/etc/xdg"
"/etc/gtk-2.0" "/etc/gtk-2.0"
"/etc/gtk-3.0" "/etc/gtk-3.0"
"/info"
"/lib" # FIXME: remove and update debug-info.nix "/lib" # FIXME: remove and update debug-info.nix
"/sbin" "/sbin"
"/share/applications" "/share/applications"
@ -112,7 +111,6 @@ in
"/share/doc" "/share/doc"
"/share/emacs" "/share/emacs"
"/share/icons" "/share/icons"
"/share/info"
"/share/menus" "/share/menus"
"/share/mime" "/share/mime"
"/share/nano" "/share/nano"

View File

@ -92,6 +92,7 @@ fi
mkdir -m 0755 -p $mountPoint/dev $mountPoint/proc $mountPoint/sys $mountPoint/etc $mountPoint/run $mountPoint/home mkdir -m 0755 -p $mountPoint/dev $mountPoint/proc $mountPoint/sys $mountPoint/etc $mountPoint/run $mountPoint/home
mkdir -m 01777 -p $mountPoint/tmp mkdir -m 01777 -p $mountPoint/tmp
mkdir -m 0755 -p $mountPoint/tmp/root mkdir -m 0755 -p $mountPoint/tmp/root
mkdir -m 0755 -p $mountPoint/var
mkdir -m 0700 -p $mountPoint/root mkdir -m 0700 -p $mountPoint/root
mount --rbind /dev $mountPoint/dev mount --rbind /dev $mountPoint/dev
mount --rbind /proc $mountPoint/proc mount --rbind /proc $mountPoint/proc
@ -168,7 +169,7 @@ if ! NIX_DB_DIR=$mountPoint/nix/var/nix/db nix-store --check-validity @nix@ 2> /
for i in $(@perl@/bin/perl @pathsFromGraph@ @nixClosure@); do for i in $(@perl@/bin/perl @pathsFromGraph@ @nixClosure@); do
echo " $i" echo " $i"
chattr -R -i $mountPoint/$i 2> /dev/null || true # clear immutable bit chattr -R -i $mountPoint/$i 2> /dev/null || true # clear immutable bit
@rsync@/bin/rsync -a $i $mountPoint/nix/store/ rsync -a $i $mountPoint/nix/store/
done done
# Register the paths in the Nix closure as valid. This is necessary # Register the paths in the Nix closure as valid. This is necessary

View File

@ -21,7 +21,7 @@ let
name = "nixos-install"; name = "nixos-install";
src = ./nixos-install.sh; src = ./nixos-install.sh;
inherit (pkgs) perl pathsFromGraph rsync; inherit (pkgs) perl pathsFromGraph;
nix = config.nix.package.out; nix = config.nix.package.out;
cacert = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"; cacert = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
root_uid = config.ids.uids.root; root_uid = config.ids.uids.root;

View File

@ -66,8 +66,9 @@
./programs/command-not-found/command-not-found.nix ./programs/command-not-found/command-not-found.nix
./programs/dconf.nix ./programs/dconf.nix
./programs/environment.nix ./programs/environment.nix
./programs/freetds.nix
./programs/fish.nix ./programs/fish.nix
./programs/freetds.nix
./programs/info.nix
./programs/kbdlight.nix ./programs/kbdlight.nix
./programs/light.nix ./programs/light.nix
./programs/man.nix ./programs/man.nix
@ -388,6 +389,7 @@
./services/networking/prayer.nix ./services/networking/prayer.nix
./services/networking/privoxy.nix ./services/networking/privoxy.nix
./services/networking/prosody.nix ./services/networking/prosody.nix
./services/networking/quagga.nix
./services/networking/quassel.nix ./services/networking/quassel.nix
./services/networking/racoon.nix ./services/networking/racoon.nix
./services/networking/radicale.nix ./services/networking/radicale.nix

View File

@ -11,4 +11,7 @@ with lib;
# This isn't perfect, but let's expect the user specifies an UTF-8 defaultLocale # This isn't perfect, but let's expect the user specifies an UTF-8 defaultLocale
i18n.supportedLocales = [ (config.i18n.defaultLocale + "/UTF-8") ]; i18n.supportedLocales = [ (config.i18n.defaultLocale + "/UTF-8") ];
services.nixosManual.enable = mkDefault false; services.nixosManual.enable = mkDefault false;
programs.man.enable = mkDefault false;
programs.info.enable = mkDefault false;
} }

View File

@ -0,0 +1,30 @@
{ config, lib, pkgs, ... }:
with lib;
{
options = {
programs.info.enable = mkOption {
type = types.bool;
default = true;
description = ''
Whether to enable info pages and the <command>info</command> command.
'';
};
};
config = mkIf config.programs.info.enable {
environment.systemPackages = [ pkgs.texinfoInteractive ];
environment.pathsToLink = [ "/info" "/share/info" ];
environment.extraOutputsToInstall = [ "info" ];
};
}

View File

@ -56,7 +56,6 @@ in
setXAuthLocation = mkOption { setXAuthLocation = mkOption {
type = types.bool; type = types.bool;
default = config.services.xserver.enable;
description = '' description = ''
Whether to set the path to <command>xauth</command> for X11-forwarded connections. Whether to set the path to <command>xauth</command> for X11-forwarded connections.
This causes a dependency on X11 packages. This causes a dependency on X11 packages.
@ -165,6 +164,9 @@ in
config = { config = {
programs.ssh.setXAuthLocation =
mkDefault (config.services.xserver.enable || config.programs.ssh.forwardX11);
assertions = assertions =
[ { assertion = cfg.forwardX11 -> cfg.setXAuthLocation; [ { assertion = cfg.forwardX11 -> cfg.setXAuthLocation;
message = "cannot enable X11 forwarding without setting XAuth location"; message = "cannot enable X11 forwarding without setting XAuth location";

View File

@ -25,7 +25,10 @@ in
enable = mkOption { enable = mkOption {
default = false; default = false;
description = '' description = ''
Whether to configure zsh as an interactive shell. Whether to configure zsh as an interactive shell. To enable zsh for
a particular user, use the <option>users.users.&lt;name?&gt;.shell</option>
option for that user. To enable zsh system-wide use the
<option>users.defaultUserShell</option> option.
''; '';
type = types.bool; type = types.bool;
}; };

View File

@ -72,6 +72,8 @@ in
(isNO "GRKERNSEC_NO_RBAC") (isNO "GRKERNSEC_NO_RBAC")
]; ];
nixpkgs.config.grsecurity = true;
# Install PaX related utillities into the system profile. # Install PaX related utillities into the system profile.
environment.systemPackages = with pkgs; [ gradm paxctl pax-utils ]; environment.systemPackages = with pkgs; [ gradm paxctl pax-utils ];

View File

@ -117,6 +117,7 @@ in
mkdir -p /run/setuid-wrapper-dirs mkdir -p /run/setuid-wrapper-dirs
wrapperDir=$(mktemp --directory --tmpdir=/run/setuid-wrapper-dirs setuid-wrappers.XXXXXXXXXX) wrapperDir=$(mktemp --directory --tmpdir=/run/setuid-wrapper-dirs setuid-wrappers.XXXXXXXXXX)
chmod a+rx $wrapperDir
${concatMapStrings makeSetuidWrapper setuidPrograms} ${concatMapStrings makeSetuidWrapper setuidPrograms}
@ -131,7 +132,7 @@ in
# Compatibility with old state, just remove the folder and symlink # Compatibility with old state, just remove the folder and symlink
rm -f ${wrapperDir}/* rm -f ${wrapperDir}/*
# if it happens to be a tmpfs # if it happens to be a tmpfs
umount ${wrapperDir} || true ${pkgs.utillinux}/bin/umount ${wrapperDir} || true
rm -d ${wrapperDir} rm -d ${wrapperDir}
ln -d --symbolic $wrapperDir ${wrapperDir} ln -d --symbolic $wrapperDir ${wrapperDir}
else else

View File

@ -28,13 +28,13 @@ in {
listenClientUrls = mkOption { listenClientUrls = mkOption {
description = "Etcd list of URLs to listen on for client traffic."; description = "Etcd list of URLs to listen on for client traffic.";
default = ["http://localhost:4001"]; default = ["http://127.0.0.1:2379"];
type = types.listOf types.str; type = types.listOf types.str;
}; };
listenPeerUrls = mkOption { listenPeerUrls = mkOption {
description = "Etcd list of URLs to listen on for peer traffic."; description = "Etcd list of URLs to listen on for peer traffic.";
default = ["http://localhost:7001"]; default = ["http://127.0.0.1:2380"];
type = types.listOf types.str; type = types.listOf types.str;
}; };
@ -46,7 +46,7 @@ in {
initialCluster = mkOption { initialCluster = mkOption {
description = "Etcd initial cluster configuration for bootstrapping."; description = "Etcd initial cluster configuration for bootstrapping.";
default = ["${cfg.name}=http://localhost:7001"]; default = ["${cfg.name}=http://127.0.0.1:2380"];
type = types.listOf types.str; type = types.listOf types.str;
}; };
@ -68,6 +68,54 @@ in {
type = types.str; type = types.str;
}; };
clientCertAuth = mkOption {
description = "Whether to use certs for client authentication";
default = false;
type = types.bool;
};
trustedCaFile = mkOption {
description = "Certificate authority file to use for clients";
default = null;
type = types.nullOr types.path;
};
certFile = mkOption {
description = "Cert file to use for clients";
default = null;
type = types.nullOr types.path;
};
keyFile = mkOption {
description = "Key file to use for clients";
default = null;
type = types.nullOr types.path;
};
peerCertFile = mkOption {
description = "Cert file to use for peer to peer communication";
default = cfg.certFile;
type = types.nullOr types.path;
};
peerKeyFile = mkOption {
description = "Key file to use for peer to peer communication";
default = cfg.keyFile;
type = types.nullOr types.path;
};
peerTrustedCaFile = mkOption {
description = "Certificate authority file to use for peer to peer communication";
default = cfg.trustedCaFile;
type = types.nullOr types.path;
};
peerClientCertAuth = mkOption {
description = "Whether to check all incoming peer requests from the cluster for valid client certificates signed by the supplied CA";
default = false;
type = types.bool;
};
extraConf = mkOption { extraConf = mkOption {
description = '' description = ''
Etcd extra configuration. See Etcd extra configuration. See
@ -99,7 +147,7 @@ in {
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ]; after = [ "network-interfaces.target" ];
environment = { environment = (filterAttrs (n: v: v != null) {
ETCD_NAME = cfg.name; ETCD_NAME = cfg.name;
ETCD_DISCOVERY = cfg.discovery; ETCD_DISCOVERY = cfg.discovery;
ETCD_DATA_DIR = cfg.dataDir; ETCD_DATA_DIR = cfg.dataDir;
@ -107,7 +155,14 @@ in {
ETCD_LISTEN_CLIENT_URLS = concatStringsSep "," cfg.listenClientUrls; ETCD_LISTEN_CLIENT_URLS = concatStringsSep "," cfg.listenClientUrls;
ETCD_LISTEN_PEER_URLS = concatStringsSep "," cfg.listenPeerUrls; ETCD_LISTEN_PEER_URLS = concatStringsSep "," cfg.listenPeerUrls;
ETCD_INITIAL_ADVERTISE_PEER_URLS = concatStringsSep "," cfg.initialAdvertisePeerUrls; ETCD_INITIAL_ADVERTISE_PEER_URLS = concatStringsSep "," cfg.initialAdvertisePeerUrls;
} // (optionalAttrs (cfg.discovery == ""){ ETCD_PEER_TRUSTED_CA_FILE = cfg.peerTrustedCaFile;
ETCD_PEER_CERT_FILE = cfg.peerCertFile;
ETCD_PEER_KEY_FILE = cfg.peerKeyFile;
ETCD_CLIENT_CERT_AUTH = toString cfg.peerClientCertAuth;
ETCD_TRUSTED_CA_FILE = cfg.trustedCaFile;
ETCD_CERT_FILE = cfg.certFile;
ETCD_KEY_FILE = cfg.keyFile;
}) // (optionalAttrs (cfg.discovery == ""){
ETCD_INITIAL_CLUSTER = concatStringsSep "," cfg.initialCluster; ETCD_INITIAL_CLUSTER = concatStringsSep "," cfg.initialCluster;
ETCD_INITIAL_CLUSTER_STATE = cfg.initialClusterState; ETCD_INITIAL_CLUSTER_STATE = cfg.initialClusterState;
ETCD_INITIAL_CLUSTER_TOKEN = cfg.initialClusterToken; ETCD_INITIAL_CLUSTER_TOKEN = cfg.initialClusterToken;

View File

@ -0,0 +1,187 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.quagga;
services = [ "babel" "bgp" "isis" "ospf6" "ospf" "pim" "rip" "ripng" ];
allServices = services ++ [ "zebra" ];
isEnabled = service: cfg.${service}.enable;
daemonName = service: if service == "zebra" then service else "${service}d";
configFile = service:
let
scfg = cfg.${service};
in
if scfg.configFile != null then scfg.configFile
else pkgs.writeText "${daemonName service}.conf"
''
! Quagga ${daemonName service} configuration
!
hostname ${config.networking.hostName}
log syslog
service password-encryption
!
${scfg.config}
!
end
'';
serviceOptions = service:
{
enable = mkEnableOption "the Quagga ${toUpper service} routing protocol";
configFile = mkOption {
type = types.nullOr types.path;
default = null;
example = "/etc/quagga/${daemonName service}.conf";
description = ''
Configuration file to use for Quagga ${daemonName service}.
By default the NixOS generated files are used.
'';
};
config = mkOption {
type = types.lines;
default = "";
example =
let
examples = {
rip = ''
router rip
network 10.0.0.0/8
'';
ospf = ''
router ospf
network 10.0.0.0/8 area 0
'';
bgp = ''
router bgp 65001
neighbor 10.0.0.1 remote-as 65001
'';
};
in
examples.${service} or "";
description = ''
${daemonName service} configuration statements.
'';
};
vtyListenAddress = mkOption {
type = types.str;
default = "127.0.0.1";
description = ''
Address to bind to for the VTY interface.
'';
};
vtyListenPort = mkOption {
type = types.nullOr types.int;
default = null;
description = ''
TCP Port to bind to for the VTY interface.
'';
};
};
in
{
###### interface
options.services.quagga =
{
zebra = (serviceOptions "zebra") // {
enable = mkOption {
type = types.bool;
default = any isEnabled services;
example = true;
description = ''
Whether to enable the Zebra routing manager.
The Zebra routing manager is automatically enabled
if any routing protocols are configured.
'';
};
};
} // (genAttrs services serviceOptions);
###### implementation
config = mkIf (any isEnabled allServices) {
environment.systemPackages = [
pkgs.quagga # for the vtysh tool
];
users.users.quagga = {
description = "Quagga daemon user";
isSystemUser = true;
group = "quagga";
};
users.groups = {
quagga = {};
# Members of the quaggavty group can use vtysh to inspect the Quagga daemons
quaggavty = {};
};
systemd.services =
let
quaggaService = service:
let
scfg = cfg.${service};
daemon = daemonName service;
in
nameValuePair daemon ({
wantedBy = [ "multi-user.target" ];
restartTriggers = [ (configFile service) ];
serviceConfig = {
Type = "forking";
PIDFile = "/run/quagga/${daemon}.pid";
ExecStart = "@${pkgs.quagga}/libexec/quagga/${daemon} ${daemon} -d -f ${configFile service}"
+ optionalString (scfg.vtyListenAddress != "") " -A ${scfg.vtyListenAddress}"
+ optionalString (scfg.vtyListenPort != null) " -P ${toString scfg.vtyListenPort}";
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
Restart = "on-abort";
};
} // (
if service == "zebra" then
{
description = "Quagga Zebra routing manager";
unitConfig.Documentation = "man:zebra(8)";
after = [ "network.target" ];
preStart = ''
install -m 0755 -o quagga -g quagga -d /run/quagga
${pkgs.iproute}/bin/ip route flush proto zebra
'';
}
else
{
description = "Quagga ${toUpper service} routing daemon";
unitConfig.Documentation = "man:${daemon}(8) man:zebra(8)";
bindsTo = [ "zebra.service" ];
after = [ "network.target" "zebra.service" ];
}
));
in
listToAttrs (map quaggaService (filter isEnabled allServices));
};
meta.maintainers = with lib.maintainers; [ tavyc ];
}

View File

@ -85,7 +85,7 @@ in
forwardX11 = mkOption { forwardX11 = mkOption {
type = types.bool; type = types.bool;
default = cfgc.setXAuthLocation; default = false;
description = '' description = ''
Whether to allow X11 connections to be forwarded. Whether to allow X11 connections to be forwarded.
''; '';
@ -227,6 +227,8 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
programs.ssh.setXAuthLocation = mkForce cfg.forwardX11;
users.extraUsers.sshd = users.extraUsers.sshd =
{ isSystemUser = true; { isSystemUser = true;
description = "SSH privilege separation user"; description = "SSH privilege separation user";

View File

@ -84,7 +84,7 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.dbus.daemon pkgs.dbus_tools ]; environment.systemPackages = [ pkgs.dbus.daemon pkgs.dbus ];
environment.etc = singleton environment.etc = singleton
{ source = configDir; { source = configDir;
@ -104,7 +104,7 @@ in
security.setuidOwners = singleton security.setuidOwners = singleton
{ program = "dbus-daemon-launch-helper"; { program = "dbus-daemon-launch-helper";
source = "${pkgs.dbus_daemon.out}/libexec/dbus-daemon-launch-helper"; source = "${pkgs.dbus.daemon}/libexec/dbus-daemon-launch-helper";
owner = "root"; owner = "root";
group = "messagebus"; group = "messagebus";
setuid = true; setuid = true;

View File

@ -80,8 +80,7 @@ in
}; };
systemd.services."container-getty@" = systemd.services."container-getty@" =
{ unitConfig.ConditionPathExists = "/dev/pts/%I"; # Work around being respawned when "machinectl login" exits. { serviceConfig.ExecStart = gettyCmd "--noclear --keep-baud pts/%I 115200,38400,9600 $TERM";
serviceConfig.ExecStart = gettyCmd "--noclear --keep-baud pts/%I 115200,38400,9600 $TERM";
restartIfChanged = false; restartIfChanged = false;
}; };

View File

@ -654,6 +654,8 @@ in
${xrandrMonitorSections} ${xrandrMonitorSections}
''; '';
fonts.enableDefaultFonts = mkDefault true;
}; };
} }

View File

@ -677,7 +677,7 @@ in
}; };
systemd.services.systemd-networkd-wait-online = { systemd.services.systemd-networkd-wait-online = {
before = [ "network-online.target" "ip-up.target" ]; before = [ "ip-up.target" ];
wantedBy = [ "network-online.target" "ip-up.target" ]; wantedBy = [ "network-online.target" "ip-up.target" ];
}; };

View File

@ -14,6 +14,7 @@ let
upstreamSystemUnits = upstreamSystemUnits =
[ # Targets. [ # Targets.
"basic.target" "basic.target"
"busnames.target"
"sysinit.target" "sysinit.target"
"sockets.target" "sockets.target"
"graphical.target" "graphical.target"
@ -140,6 +141,7 @@ let
"user.slice" "user.slice"
"machine.slice" "machine.slice"
"systemd-machined.service" "systemd-machined.service"
"systemd-nspawn@.service"
# Temporary file creation / cleanup. # Temporary file creation / cleanup.
"systemd-tmpfiles-clean.service" "systemd-tmpfiles-clean.service"
@ -727,16 +729,6 @@ in
systemd.targets.network-online.after = [ "ip-up.target" ]; systemd.targets.network-online.after = [ "ip-up.target" ];
systemd.targets.network-pre = {
wantedBy = [ "network.target" ];
before = [ "network.target" ];
};
systemd.targets.remote-fs-pre = {
wantedBy = [ "remote-fs.target" ];
before = [ "remote-fs.target" ];
};
systemd.units = systemd.units =
mapAttrs' (n: v: nameValuePair "${n}.target" (targetToUnit n v)) cfg.targets mapAttrs' (n: v: nameValuePair "${n}.target" (targetToUnit n v)) cfg.targets
// mapAttrs' (n: v: nameValuePair "${n}.service" (serviceToUnit n v)) cfg.services // mapAttrs' (n: v: nameValuePair "${n}.service" (serviceToUnit n v)) cfg.services

View File

@ -287,7 +287,7 @@ in
boot.specialFileSystems = { boot.specialFileSystems = {
"/proc" = { fsType = "proc"; options = [ "nosuid" "noexec" "nodev" ]; }; "/proc" = { fsType = "proc"; options = [ "nosuid" "noexec" "nodev" ]; };
"/sys" = { fsType = "sysfs"; options = [ "nosuid" "noexec" "nodev" ]; }; "/sys" = { fsType = "sysfs"; options = [ "nosuid" "noexec" "nodev" ]; };
"/run" = { fsType = "tmpfs"; options = [ "nosuid" "nodev" "strictatime" "mode=755" "size=${config.boot.runSize}" ]; }; "/run" = { fsType = "tmpfs"; options = [ "nodev" "strictatime" "mode=755" "size=${config.boot.runSize}" ]; };
"/dev" = { fsType = "devtmpfs"; options = [ "nosuid" "strictatime" "mode=755" "size=${config.boot.devSize}" ]; }; "/dev" = { fsType = "devtmpfs"; options = [ "nosuid" "strictatime" "mode=755" "size=${config.boot.devSize}" ]; };
"/dev/shm" = { fsType = "tmpfs"; options = [ "nosuid" "nodev" "strictatime" "mode=1777" "size=${config.boot.devShmSize}" ]; }; "/dev/shm" = { fsType = "tmpfs"; options = [ "nosuid" "nodev" "strictatime" "mode=1777" "size=${config.boot.devShmSize}" ]; };
"/dev/pts" = { fsType = "devpts"; options = [ "nosuid" "noexec" "mode=620" "gid=${toString config.ids.gids.tty}" ]; }; "/dev/pts" = { fsType = "devpts"; options = [ "nosuid" "noexec" "mode=620" "gid=${toString config.ids.gids.tty}" ]; };

View File

@ -234,6 +234,7 @@ in rec {
tests.etcd = hydraJob (import tests/etcd.nix { system = "x86_64-linux"; }); tests.etcd = hydraJob (import tests/etcd.nix { system = "x86_64-linux"; });
tests.ec2-nixops = hydraJob (import tests/ec2.nix { system = "x86_64-linux"; }).boot-ec2-nixops; tests.ec2-nixops = hydraJob (import tests/ec2.nix { system = "x86_64-linux"; }).boot-ec2-nixops;
tests.ec2-config = hydraJob (import tests/ec2.nix { system = "x86_64-linux"; }).boot-ec2-config; tests.ec2-config = hydraJob (import tests/ec2.nix { system = "x86_64-linux"; }).boot-ec2-config;
tests.ferm = callTest tests/ferm.nix {};
tests.firefox = callTest tests/firefox.nix {}; tests.firefox = callTest tests/firefox.nix {};
tests.firewall = callTest tests/firewall.nix {}; tests.firewall = callTest tests/firewall.nix {};
tests.fleet = hydraJob (import tests/fleet.nix { system = "x86_64-linux"; }); tests.fleet = hydraJob (import tests/fleet.nix { system = "x86_64-linux"; });
@ -279,6 +280,7 @@ in rec {
tests.printing = callTest tests/printing.nix {}; tests.printing = callTest tests/printing.nix {};
tests.proxy = callTest tests/proxy.nix {}; tests.proxy = callTest tests/proxy.nix {};
tests.pumpio = callTest tests/pump.io.nix {}; tests.pumpio = callTest tests/pump.io.nix {};
tests.quagga = callTest tests/quagga.nix {};
tests.quake3 = callTest tests/quake3.nix {}; tests.quake3 = callTest tests/quake3.nix {};
tests.runInMachine = callTest tests/run-in-machine.nix {}; tests.runInMachine = callTest tests/run-in-machine.nix {};
tests.sddm = callTest tests/sddm.nix {}; tests.sddm = callTest tests/sddm.nix {};

View File

@ -0,0 +1,157 @@
# This test runs simple etcd cluster
import ./make-test.nix ({ pkgs, ... } : let
runWithOpenSSL = file: cmd: pkgs.runCommand file {
buildInputs = [ pkgs.openssl ];
} cmd;
ca_key = runWithOpenSSL "ca-key.pem" "openssl genrsa -out $out 2048";
ca_pem = runWithOpenSSL "ca.pem" ''
openssl req \
-x509 -new -nodes -key ${ca_key} \
-days 10000 -out $out -subj "/CN=etcd-ca"
'';
etcd_key = runWithOpenSSL "etcd-key.pem" "openssl genrsa -out $out 2048";
etcd_csr = runWithOpenSSL "etcd.csr" ''
openssl req \
-new -key ${etcd_key} \
-out $out -subj "/CN=etcd" \
-config ${openssl_cnf}
'';
etcd_cert = runWithOpenSSL "etcd.pem" ''
openssl x509 \
-req -in ${etcd_csr} \
-CA ${ca_pem} -CAkey ${ca_key} \
-CAcreateserial -out $out \
-days 365 -extensions v3_req \
-extfile ${openssl_cnf}
'';
etcd_client_key = runWithOpenSSL "etcd-client-key.pem"
"openssl genrsa -out $out 2048";
etcd_client_csr = runWithOpenSSL "etcd-client-key.pem" ''
openssl req \
-new -key ${etcd_client_key} \
-out $out -subj "/CN=etcd-client" \
-config ${client_openssl_cnf}
'';
etcd_client_cert = runWithOpenSSL "etcd-client.crt" ''
openssl x509 \
-req -in ${etcd_client_csr} \
-CA ${ca_pem} -CAkey ${ca_key} -CAcreateserial \
-out $out -days 365 -extensions v3_req \
-extfile ${client_openssl_cnf}
'';
openssl_cnf = pkgs.writeText "openssl.cnf" ''
ions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = node1
DNS.2 = node2
DNS.3 = node3
IP.1 = 127.0.0.1
'';
client_openssl_cnf = pkgs.writeText "client-openssl.cnf" ''
ions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = clientAuth
'';
nodeConfig = {
services = {
etcd = {
enable = true;
keyFile = etcd_key;
certFile = etcd_cert;
trustedCaFile = ca_pem;
peerClientCertAuth = true;
listenClientUrls = ["https://127.0.0.1:2379"];
listenPeerUrls = ["https://0.0.0.0:2380"];
};
};
environment.variables = {
ETCDCTL_CERT_FILE = "${etcd_client_cert}";
ETCDCTL_KEY_FILE = "${etcd_client_key}";
ETCDCTL_CA_FILE = "${ca_pem}";
ETCDCTL_PEERS = "https://127.0.0.1:2379";
};
networking.firewall.allowedTCPPorts = [ 2380 ];
};
in {
name = "etcd";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ offline ];
};
nodes = {
node1 = { config, pkgs, nodes, ... }: {
require = [nodeConfig];
services.etcd = {
initialCluster = ["node1=https://node1:2380" "node2=https://node2:2380"];
initialAdvertisePeerUrls = ["https://node1:2380"];
};
};
node2 = { config, pkgs, ... }: {
require = [nodeConfig];
services.etcd = {
initialCluster = ["node1=https://node1:2380" "node2=https://node2:2380"];
initialAdvertisePeerUrls = ["https://node2:2380"];
};
};
node3 = { config, pkgs, ... }: {
require = [nodeConfig];
services.etcd = {
initialCluster = ["node1=https://node1:2380" "node2=https://node2:2380" "node3=https://node3:2380"];
initialAdvertisePeerUrls = ["https://node3:2380"];
initialClusterState = "existing";
};
};
};
testScript = ''
subtest "should start etcd cluster", sub {
$node1->start();
$node2->start();
$node1->waitForUnit("etcd.service");
$node2->waitForUnit("etcd.service");
$node2->waitUntilSucceeds("etcdctl cluster-health");
$node1->succeed("etcdctl set /foo/bar 'Hello world'");
$node2->succeed("etcdctl get /foo/bar | grep 'Hello world'");
};
subtest "should add another member", sub {
$node1->succeed("etcdctl member add node3 https://node3:2380");
$node3->start();
$node3->waitForUnit("etcd.service");
$node3->waitUntilSucceeds("etcdctl member list | grep 'node3'");
$node3->succeed("etcdctl cluster-health");
};
subtest "should survive member crash", sub {
$node3->crash;
$node1->succeed("etcdctl cluster-health");
$node1->succeed("etcdctl set /foo/bar 'Hello degraded world'");
$node1->succeed("etcdctl get /foo/bar | grep 'Hello degraded world'");
};
'';
})

View File

@ -1,111 +1,27 @@
# This test runs etcd as single node, multy node and using discovery # This test runs simple etcd node
import ./make-test.nix ({ pkgs, ... } : { import ./make-test.nix ({ pkgs, ... } : {
name = "etcd"; name = "etcd";
meta = with pkgs.stdenv.lib.maintainers; { meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ offline ]; maintainers = [ offline ];
}; };
nodes = { nodes = {
simple = node = { config, pkgs, nodes, ... }: {
{ config, pkgs, nodes, ... }:
{
services.etcd.enable = true; services.etcd.enable = true;
services.etcd.listenClientUrls = ["http://0.0.0.0:4001"];
environment.systemPackages = [ pkgs.curl ];
networking.firewall.allowedTCPPorts = [ 4001 ];
};
node1 =
{ config, pkgs, nodes, ... }:
{
services = {
etcd = {
enable = true;
listenPeerUrls = ["http://0.0.0.0:7001"];
initialAdvertisePeerUrls = ["http://node1:7001"];
initialCluster = ["node1=http://node1:7001" "node2=http://node2:7001"];
};
};
networking.firewall.allowedTCPPorts = [ 7001 ];
};
node2 =
{ config, pkgs, ... }:
{
services = {
etcd = {
enable = true;
listenPeerUrls = ["http://0.0.0.0:7001"];
initialAdvertisePeerUrls = ["http://node2:7001"];
initialCluster = ["node1=http://node1:7001" "node2=http://node2:7001"];
};
};
networking.firewall.allowedTCPPorts = [ 7001 ];
};
discovery1 =
{ config, pkgs, nodes, ... }:
{
services = {
etcd = {
enable = true;
listenPeerUrls = ["http://0.0.0.0:7001"];
initialAdvertisePeerUrls = ["http://discovery1:7001"];
discovery = "http://simple:4001/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83/";
};
};
networking.firewall.allowedTCPPorts = [ 7001 ];
};
discovery2 =
{ config, pkgs, ... }:
{
services = {
etcd = {
enable = true;
listenPeerUrls = ["http://0.0.0.0:7001"];
initialAdvertisePeerUrls = ["http://discovery2:7001"];
discovery = "http://simple:4001/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83/";
};
};
networking.firewall.allowedTCPPorts = [ 7001 ];
}; };
}; };
testScript = '' testScript = ''
subtest "single node", sub { subtest "should start etcd node", sub {
$simple->start(); $node->start();
$simple->waitForUnit("etcd.service"); $node->waitForUnit("etcd.service");
$simple->waitUntilSucceeds("etcdctl set /foo/bar 'Hello world'");
$simple->waitUntilSucceeds("etcdctl get /foo/bar | grep 'Hello world'");
}; };
subtest "multy node", sub { subtest "should write and read some values to etcd", sub {
$node1->start(); $node->succeed("etcdctl set /foo/bar 'Hello world'");
$node2->start(); $node->succeed("etcdctl get /foo/bar | grep 'Hello world'");
$node1->waitForUnit("etcd.service"); }
$node2->waitForUnit("etcd.service");
$node1->waitUntilSucceeds("etcdctl set /foo/bar 'Hello world'");
$node2->waitUntilSucceeds("etcdctl get /foo/bar | grep 'Hello world'");
$node1->shutdown();
$node2->shutdown();
};
subtest "discovery", sub {
$simple->succeed("curl -X PUT http://localhost:4001/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83/_config/size -d value=2");
$discovery1->start();
$discovery2->start();
$discovery1->waitForUnit("etcd.service");
$discovery2->waitForUnit("etcd.service");
$discovery1->waitUntilSucceeds("etcdctl set /foo/bar 'Hello world'");
$discovery2->waitUntilSucceeds("etcdctl get /foo/bar | grep 'Hello world'");
};
''; '';
}) })

72
nixos/tests/ferm.nix Normal file
View File

@ -0,0 +1,72 @@
import ./make-test.nix ({ pkgs, ...} : {
name = "ferm";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ mic92 ];
};
nodes =
{ client =
{ config, pkgs, ... }:
with pkgs.lib;
{
networking = {
interfaces.eth1.ip6 = mkOverride 0 [ { address = "fd00::2"; prefixLength = 64; } ];
interfaces.eth1.ip4 = mkOverride 0 [ { address = "192.168.1.2"; prefixLength = 24; } ];
};
};
server =
{ config, pkgs, ... }:
with pkgs.lib;
{
networking = {
interfaces.eth1.ip6 = mkOverride 0 [ { address = "fd00::1"; prefixLength = 64; } ];
interfaces.eth1.ip4 = mkOverride 0 [ { address = "192.168.1.1"; prefixLength = 24; } ];
};
services = {
ferm.enable = true;
ferm.config = ''
domain (ip ip6) table filter chain INPUT {
interface lo ACCEPT;
proto tcp dport 8080 REJECT reject-with tcp-reset;
}
'';
nginx.enable = true;
nginx.httpConfig = ''
server {
listen 80;
listen [::]:80;
listen 8080;
listen [::]:8080;
location /status { stub_status on; }
}
'';
};
};
};
testScript =
''
startAll;
$client->waitForUnit("network.target");
$server->waitForUnit("ferm.service");
$server->waitForUnit("nginx.service");
$server->waitUntilSucceeds("ss -ntl | grep -q 80");
subtest "port 80 is allowed", sub {
$client->succeed("curl --fail -g http://192.168.1.1:80/status");
$client->succeed("curl --fail -g http://[fd00::1]:80/status");
};
subtest "port 8080 is not allowed", sub {
$server->succeed("curl --fail -g http://192.168.1.1:8080/status");
$server->succeed("curl --fail -g http://[fd00::1]:8080/status");
$client->fail("curl --fail -g http://192.168.1.1:8080/status");
$client->fail("curl --fail -g http://[fd00::1]:8080/status");
};
'';
})

97
nixos/tests/quagga.nix Normal file
View File

@ -0,0 +1,97 @@
# This test runs Quagga and checks if OSPF routing works.
#
# Network topology:
# [ client ]--net1--[ router1 ]--net2--[ router2 ]--net3--[ server ]
#
# All interfaces are in OSPF Area 0.
import ./make-test.nix ({ pkgs, ... }:
let
ifAddr = node: iface: (pkgs.lib.head node.config.networking.interfaces.${iface}.ip4).address;
ospfConf = ''
interface eth2
ip ospf hello-interval 1
ip ospf dead-interval 5
!
router ospf
network 192.168.0.0/16 area 0
'';
in
{
name = "quagga";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ tavyc ];
};
nodes = {
client =
{ config, pkgs, nodes, ... }:
{
virtualisation.vlans = [ 1 ];
networking.defaultGateway = ifAddr nodes.router1 "eth1";
};
router1 =
{ config, pkgs, nodes, ... }:
{
virtualisation.vlans = [ 1 2 ];
boot.kernel.sysctl."net.ipv4.ip_forward" = "1";
networking.firewall.extraCommands = "iptables -A nixos-fw -i eth2 -p ospf -j ACCEPT";
services.quagga.ospf = {
enable = true;
config = ospfConf;
};
};
router2 =
{ config, pkgs, nodes, ... }:
{
virtualisation.vlans = [ 3 2 ];
boot.kernel.sysctl."net.ipv4.ip_forward" = "1";
networking.firewall.extraCommands = "iptables -A nixos-fw -i eth2 -p ospf -j ACCEPT";
services.quagga.ospf = {
enable = true;
config = ospfConf;
};
};
server =
{ config, pkgs, nodes, ... }:
{
virtualisation.vlans = [ 3 ];
networking.defaultGateway = ifAddr nodes.router2 "eth1";
networking.firewall.allowedTCPPorts = [ 80 ];
networking.firewall.allowPing = true;
services.httpd.enable = true;
services.httpd.adminAddr = "foo@example.com";
};
};
testScript =
{ nodes, ... }:
''
startAll;
# Wait for the networking to start on all machines
$_->waitForUnit("network.target") foreach values %vms;
# Wait for OSPF to form adjacencies
for my $gw ($router1, $router2) {
$gw->waitForUnit("ospfd");
$gw->waitUntilSucceeds("vtysh -c 'show ip ospf neighbor' | grep Full");
$gw->waitUntilSucceeds("vtysh -c 'show ip route' | grep '^O>'");
}
# Test ICMP.
$client->succeed("ping -c 3 server >&2");
# Test whether HTTP works.
$server->waitForUnit("httpd");
$client->succeed("curl --fail http://server/ >&2");
'';
})

View File

@ -27,6 +27,8 @@ rec {
namecoin = callPackage ./namecoin.nix { inherit namecoind; }; namecoin = callPackage ./namecoin.nix { inherit namecoind; };
namecoind = callPackage ./namecoind.nix { }; namecoind = callPackage ./namecoind.nix { };
ethabi = callPackage ./ethabi.nix { };
primecoin = callPackage ./primecoin.nix { withGui = true; }; primecoin = callPackage ./primecoin.nix { withGui = true; };
primecoind = callPackage ./primecoin.nix { withGui = false; }; primecoind = callPackage ./primecoin.nix { withGui = false; };

View File

@ -0,0 +1,24 @@
{ stdenv, fetchFromGitHub, rustPlatform }:
with rustPlatform;
buildRustPackage rec {
name = "ethabi-${version}";
version = "0.2.1";
src = fetchFromGitHub {
owner = "ethcore";
repo = "ethabi";
rev = "fbed04984cab0db8767e01054ee16271b8e36281";
sha256 = "1zgyyg1i5wmz8l1405yg5jmq4ddq530sl7018pkkc7l6cjj3bbhd";
};
depsSha256 = "0srxv0wbhvyflc967lkpd2mx5nk7asx2cbxa0qxvas16wy6vxz52";
meta = {
description = "Ethereum function call encoding (ABI) utility";
homepage = https://github.com/ethcore/ethabi/;
maintainers = [stdenv.lib.maintainers.dbrock];
inherit version;
};
}

View File

@ -0,0 +1,89 @@
{ stdenv, cmake, fetchFromGitHub, file, gcc_multi, libX11, makeWrapper
, overrideCC, qt5, requireFile, unzip, wineStable
}:
let
version = "1.3.2";
airwave-src = fetchFromGitHub {
owner = "phantom-code";
repo = "airwave";
rev = version;
sha256 = "053kkx5yq1vas0qisidkgq0h6hzfwy3677jprjkcrwc4hp2i2v12";
};
stdenv_multi = overrideCC stdenv gcc_multi;
vst-sdk = stdenv.mkDerivation rec {
name = "vstsdk366_27_06_2016_build_61";
src = requireFile {
name = "${name}.zip";
url = "http://www.steinberg.net/en/company/developers.html";
sha256 = "05gsr13bpi2hhp34rvhllsvmn44rqvmjdpg9fsgfzgylfkz0kiki";
};
nativeBuildInputs = [ unzip ];
installPhase = "cp -r . $out";
};
wine-wow64 = wineStable.override {
wineBuild = "wineWow";
};
wine-xembed = wine-wow64.overrideDerivation (oldAttrs: {
patchFlags = [ "-p2" ];
patches = [ "${airwave-src}/fix-xembed-wine-windows.patch" ];
});
in
stdenv_multi.mkDerivation {
name = "airwave-${version}";
src = airwave-src;
nativeBuildInputs = [ cmake makeWrapper ];
buildInputs = [ file libX11 qt5.qtbase wine-xembed ];
postPatch = ''
# Binaries not used directly should land in libexec/.
substituteInPlace src/common/storage.cpp --replace '"/bin"' '"/libexec"'
# For airwave-host-32.exe.so, point wineg++ to 32-bit versions of
# these libraries, as $NIX_LDFLAGS contains only 64-bit ones.
substituteInPlace src/host/CMakeLists.txt --replace '-m32' \
'-m32 -L${wine-xembed}/lib -L${wine-xembed}/lib/wine -L${stdenv_multi.cc.libc.out}/lib/32'
'';
# libstdc++.so link gets lost in 64-bit executables during
# shrinking.
dontPatchELF = true;
cmakeFlags = "-DVSTSDK_PATH=${vst-sdk}";
postInstall = ''
mv $out/bin $out/libexec
mkdir $out/bin
mv $out/libexec/airwave-manager $out/bin
wrapProgram $out/libexec/airwave-host-32.exe --set WINELOADER ${wine-xembed}/bin/wine
wrapProgram $out/libexec/airwave-host-64.exe --set WINELOADER ${wine-xembed}/bin/wine64
'';
meta = with stdenv.lib; {
description = "WINE-based VST bridge for Linux VST hosts";
longDescription = ''
Airwave is a wine based VST bridge, that allows for the use of
Windows 32- and 64-bit VST 2.4 audio plugins with Linux VST
hosts. Due to the use of shared memory, only one extra copying
is made for each data transfer. Airwave also uses the XEMBED
protocol to correctly embed the plugin editor into the host
window.
'';
homepage = https://github.com/phantom-code/airwave;
license = licenses.mit;
platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [ michalrus ];
hydraPlatforms = [];
};
}

View File

@ -0,0 +1,35 @@
{ stdenv, lib, fetchFromGitHub, autoconf, automake, which, libtool, pkgconfig
, ronn
, pcaudiolibSupport ? true, pcaudiolib
, sonicSupport ? true, sonic }:
stdenv.mkDerivation rec {
name = "espeak-ng-${version}";
version = "2016-08-28";
src = fetchFromGitHub {
owner = "espeak-ng";
repo = "espeak-ng";
rev = "b784e77c5708b61feed780d8f1113c4c8eb92200";
sha256 = "1whix4mv0qvsvifgpwwbdzhv621as3rxpn9ijqc2683h6k8pvcfk";
};
nativeBuildInputs = [ autoconf automake which libtool pkgconfig ronn ];
buildInputs = lib.optional pcaudiolibSupport pcaudiolib
++ lib.optional sonicSupport sonic;
preConfigure = "./autogen.sh";
postInstall = ''
patchelf --set-rpath "$(patchelf --print-rpath $out/bin/espeak-ng)" $out/bin/speak-ng
'';
meta = with stdenv.lib; {
description = "Open source speech synthesizer that supports over 70 languages, based on eSpeak";
homepage = "https://github.com/espeak-ng/espeak-ng";
license = licenses.gpl3;
maintainers = with maintainers; [ aske ];
platforms = platforms.linux;
};
}

View File

@ -6,11 +6,11 @@
pythonPackages.buildPythonApplication rec { pythonPackages.buildPythonApplication rec {
name = "gpodder-${version}"; name = "gpodder-${version}";
version = "3.9.0"; version = "3.9.1";
src = fetchurl { src = fetchurl {
url = "http://gpodder.org/src/${name}.tar.gz"; url = "http://gpodder.org/src/${name}.tar.gz";
sha256 = "1ik954idi0ldnw0wrv7mm71smyb6x66332jxcaf1dxsl12ccm44l"; sha256 = "036p9vnkr3if0k548xhhjmcwdaimy3yd24s3xd8vzlp0wdzkzrhn";
}; };
postPatch = with stdenv.lib; '' postPatch = with stdenv.lib; ''

View File

@ -0,0 +1,69 @@
{ stdenv, fetchzip, lib, makeWrapper, alsaLib, atk, cairo, gdk_pixbuf
, glib, gst_ffmpeg, gst_plugins_bad, gst_plugins_base
, gst_plugins_good, gst_plugins_ugly, gstreamer, gtk2, libSM, libX11
, libpng12, pango, zlib }:
stdenv.mkDerivation rec {
name = "transcribe-${version}";
version = "8.40";
src = if stdenv.system == "i686-linux" then
fetchzip {
url = "https://www.seventhstring.com/xscribe/downlinux32_old/xscsetup.tar.gz";
sha256 = "1ngidmj9zz8bmv754s5xfsjv7v6xr03vck4kigzq4bpc9b1fdhjq";
}
else if stdenv.system == "x86_64-linux" then
fetchzip {
url = "https://www.seventhstring.com/xscribe/downlinux64_old/xsc64setup.tar.gz";
sha256 = "0svzi8svj6zn06gj0hr8mpnhq4416dvb4g5al0gpb1g3paywdaf9";
}
else throw "Platform not supported";
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ gst_plugins_base gst_plugins_good
gst_plugins_bad gst_plugins_ugly gst_ffmpeg ];
dontPatchELF = true;
libPath = lib.makeLibraryPath [
stdenv.cc.cc glib gtk2 atk pango cairo gdk_pixbuf alsaLib
libX11 libSM libpng12 gstreamer gst_plugins_base zlib
];
installPhase = ''
mkdir -p $out/bin $out/libexec $out/share/doc
cp transcribe $out/libexec
cp xschelp.htb readme_gtk.html $out/share/doc
cp -r gtkicons $out/share/icons
ln -s $out/share/doc/xschelp.htb $out/libexec
patchelf \
--set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) \
$out/libexec/transcribe
wrapProgram $out/libexec/transcribe \
--prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH" \
--prefix LD_LIBRARY_PATH : "${libPath}"
ln -s $out/libexec/transcribe $out/bin/
'';
meta = with stdenv.lib; {
description = "Software to help transcribe recorded music";
longDescription = ''
The Transcribe! application is an assistant for people who want
to work out a piece of music from a recording, in order to write
it out, or play it themselves, or both. It doesn't do the
transcribing for you, but it is essentially a specialised player
program which is optimised for the purpose of transcription. It
has many transcription-specific features not found on
conventional music players.
'';
homepage = https://www.seventhstring.com/xscribe/;
license = licenses.unfree;
platforms = platforms.linux;
maintainers = with maintainers; [ michalrus ];
};
}

View File

@ -5,8 +5,8 @@ stdenv.mkDerivation (rec {
src = fetchgit { src = fetchgit {
url = "https://github.com/ProofGeneral/PG.git"; url = "https://github.com/ProofGeneral/PG.git";
rev = "16991280fb09743ae7320aef77f6a166afb907d7"; rev = "64ca55b1593fff8cfffab89c51d7e92c1a68dc27";
sha256 = "1yakjxfz6a09m7lrxff04sj1717gpmhq2bsibd5f9lkp6z0w2i0q"; sha256 = "1gz13fagxf0w2zgp7qd0w328qiv97295jwq7ra8vj61pdfi8xklj";
}; };
buildInputs = [ emacs texinfo perl which ] ++ stdenv.lib.optional enableDoc texLive; buildInputs = [ emacs texinfo perl which ] ++ stdenv.lib.optional enableDoc texLive;

View File

@ -119,6 +119,18 @@ in
{ {
clion = buildClion rec { clion = buildClion rec {
name = "clion-${version}";
version = "2016.2.1";
description = "C/C++ IDE. New. Intelligent. Cross-platform";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz";
sha256 = "01a8qylfw8bsyywlxgysghjd7d2rlp9x3myd6nqhn7c1803pcks4";
};
wmClass = "jetbrains-clion";
};
clion1 = buildClion rec {
name = "clion-${version}"; name = "clion-${version}";
version = "1.2.5"; version = "1.2.5";
description = "C/C++ IDE. New. Intelligent. Cross-platform"; description = "C/C++ IDE. New. Intelligent. Cross-platform";
@ -144,12 +156,12 @@ in
idea-community = buildIdea rec { idea-community = buildIdea rec {
name = "idea-community-${version}"; name = "idea-community-${version}";
version = "2016.2"; version = "2016.2.3";
description = "Integrated Development Environment (IDE) by Jetbrains, community edition"; description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
license = stdenv.lib.licenses.asl20; license = stdenv.lib.licenses.asl20;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz"; url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
sha256 = "164x4l0q31zpc1jh3js1xx9y6afrzsshmnkx1mwhmq8qmvzc4w32"; sha256 = "014fddfxzc8nwhp1nz8mb9p7zwk73azvlgmzy2jd9ypfwi3dwgrs";
}; };
wmClass = "jetbrains-idea-ce"; wmClass = "jetbrains-idea-ce";
}; };
@ -180,17 +192,29 @@ in
idea-ultimate = buildIdea rec { idea-ultimate = buildIdea rec {
name = "idea-ultimate-${version}"; name = "idea-ultimate-${version}";
version = "2016.2.2"; version = "2016.2.3";
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license"; description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
license = stdenv.lib.licenses.unfree; license = stdenv.lib.licenses.unfree;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/idea/ideaIU-${version}.tar.gz"; url = "https://download.jetbrains.com/idea/ideaIU-${version}.tar.gz";
sha256 = "1z5kr47n3hhx0ck163193lwlh76sykgchnq9hw1ihi25n6655j1z"; sha256 = "1y8y3kav4icpsb85p5csag6f16jqg4gnvagsl5k1c793ccbl63yk";
}; };
wmClass = "jetbrains-idea"; wmClass = "jetbrains-idea";
}; };
ruby-mine = buildRubyMine rec { ruby-mine = buildRubyMine rec {
name = "ruby-mine-${version}";
version = "2016.2.2";
description = "The Most Intelligent Ruby and Rails IDE";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/ruby/RubyMine-${version}.tar.gz";
sha256 = "1ck4axjbrvq2n1j2rvf9a2f7dqvalg2b8sqy9n9qkzdn04szaqsl";
};
wmClass = "jetbrains-rubymine";
};
ruby-mine7 = buildRubyMine rec {
name = "ruby-mine-${version}"; name = "ruby-mine-${version}";
version = "7.1.5"; version = "7.1.5";
description = "The Most Intelligent Ruby and Rails IDE"; description = "The Most Intelligent Ruby and Rails IDE";
@ -202,31 +226,55 @@ in
wmClass = "jetbrains-rubymine"; wmClass = "jetbrains-rubymine";
}; };
ruby-mine8 = buildRubyMine rec {
name = "ruby-mine-${version}";
version = "8.0.4";
description = "The Most Intelligent Ruby and Rails IDE";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/ruby/RubyMine-${version}.tar.gz";
sha256 = "0hipxib7377232w1jbf8h98bmh0djkllsrq3lq0w3fdxqglma43a";
};
wmClass = "jetbrains-rubymine";
};
pycharm-community = buildPycharm rec { pycharm-community = buildPycharm rec {
name = "pycharm-community-${version}"; name = "pycharm-community-${version}";
version = "2016.1.3"; version = "2016.2.2";
description = "PyCharm Community Edition"; description = "PyCharm Community Edition";
license = stdenv.lib.licenses.asl20; license = stdenv.lib.licenses.asl20;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/python/${name}.tar.gz"; url = "https://download.jetbrains.com/python/${name}.tar.gz";
sha256 = "1ks7crrfnhzkdxban2hh2pnr986vqwmac5zybmb1ighcyamhdi4q"; sha256 = "1v6vy4xh0n8wdjc25clxg57z7ria11x1zdba4j1hjs2z6l80kxbb";
}; };
wmClass = "jetbrains-pycharm-ce"; wmClass = "jetbrains-pycharm-ce";
}; };
pycharm-professional = buildPycharm rec { pycharm-professional = buildPycharm rec {
name = "pycharm-professional-${version}"; name = "pycharm-professional-${version}";
version = "2016.1.3"; version = "2016.2.2";
description = "PyCharm Professional Edition"; description = "PyCharm Professional Edition";
license = stdenv.lib.licenses.unfree; license = stdenv.lib.licenses.unfree;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/python/${name}.tar.gz"; url = "https://download.jetbrains.com/python/${name}.tar.gz";
sha256 = "1rn0i5qbvfjbl4v571ngmyslispibcq5ab0fb7xjl38vr1y417f2"; sha256 = "08x2x6lhr9100lmw1dq8rkz4mlyj4avcj2hpbd5qqybx9j4g6g44";
}; };
wmClass = "jetbrains-pycharm"; wmClass = "jetbrains-pycharm";
}; };
phpstorm = buildPhpStorm rec { phpstorm = buildPhpStorm rec {
name = "phpstorm-${version}";
version = "2016.2.1";
description = "Professional IDE for Web and PHP developers";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz";
sha256 = "0vgr0ds6z0y8qw2v55nr3pi5zb5x0n6pxm13hcp44iradns5kmbp";
};
wmClass = "jetbrains-phpstorm";
};
phpstorm10 = buildPhpStorm rec {
name = "phpstorm-${version}"; name = "phpstorm-${version}";
version = "10.0.4"; version = "10.0.4";
description = "Professional IDE for Web and PHP developers"; description = "Professional IDE for Web and PHP developers";
@ -239,6 +287,18 @@ in
}; };
webstorm = buildWebStorm rec { webstorm = buildWebStorm rec {
name = "webstorm-${version}";
version = "2016.2.2";
description = "Professional IDE for Web and JavaScript development";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
sha256 = "0n2fvhjasklshyfcbwwn6wahzld8x65bid08245awdqv33p87bq6";
};
wmClass = "jetbrains-webstorm";
};
webstorm10 = buildWebStorm rec {
name = "webstorm-${version}"; name = "webstorm-${version}";
version = "10.0.5"; version = "10.0.5";
description = "Professional IDE for Web and JavaScript development"; description = "Professional IDE for Web and JavaScript development";
@ -250,4 +310,15 @@ in
wmClass = "jetbrains-webstorm"; wmClass = "jetbrains-webstorm";
}; };
webstorm11 = buildWebStorm rec {
name = "webstorm-${version}";
version = "11.0.4";
description = "Professional IDE for Web and JavaScript development";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
sha256 = "17agyqdyz6naxyx6p0y240ar93gja0ypw01nm2qmfzvh7ch03r24";
};
wmClass = "jetbrains-webstorm";
};
} }

View File

@ -1,14 +1,16 @@
{ stdenv, fetchurl, unzip, ftgl, glew, asciidoc { stdenv, fetchFromGitHub, unzip, ftgl, glew, asciidoc
, cmake, mesa, zlib, python, expat, libxml2, libsigcxx, libuuid, freetype , cmake, mesa, zlib, python, expat, libxml2, libsigcxx, libuuid, freetype
, libpng, boost, doxygen, cairomm, pkgconfig, imagemagick, libjpeg, libtiff , libpng, boost, doxygen, cairomm, pkgconfig, imagemagick, libjpeg, libtiff
, gettext, intltool, perl, gtkmm, glibmm, gtkglext, pangox_compat, libXmu }: , gettext, intltool, perl, gtkmm, glibmm, gtkglext, pangox_compat, libXmu }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "0.8.0.3"; version = "0.8.0.5";
name = "k3d-${version}"; name = "k3d-${version}";
src = fetchurl { src = fetchFromGitHub {
url = "https://github.com/K-3D/k3d/archive/${name}.zip"; owner = "K-3D";
sha256 = "09ywwvlk8hh1357pnal96kc40ma4jq7776hqk0609rgz13s6babp"; repo = "k3d";
rev = name;
sha256 = "0q05d51vhnmrq887n15frpwkhx8w7n20h2sc1lpr338jzpryihb3";
}; };
cmakeFlags = "-DK3D_BUILD_DOCS=false -DK3D_BUILD_GUIDE=false"; cmakeFlags = "-DK3D_BUILD_DOCS=false -DK3D_BUILD_GUIDE=false";

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "josm-${version}"; name = "josm-${version}";
version = "9979"; version = "10786";
src = fetchurl { src = fetchurl {
url = "https://josm.openstreetmap.de/download/josm-snapshot-${version}.jar"; url = "https://josm.openstreetmap.de/download/josm-snapshot-${version}.jar";
sha256 = "0zy88f4h71qyj7vlhiwnayaaz50gg6bj5pfypy43ghmjrh01d9vh"; sha256 = "1dlb33nw8idipshiqy5p9vssdnkra3z2ixfixkj017b8wxdzvjpn";
}; };
phases = [ "installPhase" ]; phases = [ "installPhase" ];

View File

@ -29,8 +29,6 @@ stdenv.mkDerivation rec {
# python is run during runtime to do various tasks # python is run during runtime to do various tasks
postFixup = '' postFixup = ''
sed '1s:/usr/bin/python:${python}/bin/python:'
wrapProgram "$out/bin/lyx" \ wrapProgram "$out/bin/lyx" \
--prefix PATH : '${python}/bin' --prefix PATH : '${python}/bin'
''; '';

View File

@ -0,0 +1,30 @@
{ stdenv, fetchurl, zlib } :
stdenv.mkDerivation rec {
name = "osmctools-${version}";
version = "0.8.5";
src = fetchurl {
url = http://m.m.i24.cc/osmconvert.c;
sha256 = "9da0940912d1bc62223b962483fd796f92c959c48749806aee5806164e5875d7";
};
buildInputs = [ zlib ];
phases = [ "buildPhase" "installPhase" ];
buildPhase = ''
cc $src -lz -O3 -o osmconvert
'';
installPhase = ''
mkdir -p $out/bin
mv osmconvert $out/bin
'';
meta = with stdenv.lib; {
description = "Converter between various Open Street Map file formats";
homepage = http://wiki.openstreetmap.org/wiki/Osmconvert;
platforms = platforms.unix;
};
}

View File

@ -16,8 +16,12 @@ stdenv.mkDerivation rec {
''; '';
installPhase = '' installPhase = ''
runHook preInstall
mkdir -p "$out/bin" mkdir -p "$out/bin"
cp bin/* "$out/bin" cp bin/* "$out/bin"
runHook postInstall
''; '';
meta = { meta = {

View File

@ -1,5 +1,5 @@
{ stdenv, fetchurl, unzip, buildPythonApplication, makeQtWrapper, wrapGAppsHook { stdenv, fetchurl, unzip, buildPythonApplication, makeQtWrapper, wrapGAppsHook
, qtbase, pyqt5, jinja2, pygments, pyyaml, pypeg2, glib_networking , qtbase, pyqt5, jinja2, pygments, pyyaml, pypeg2, cssutils, glib_networking
, asciidoc, docbook_xml_dtd_45, docbook_xsl, libxml2, libxslt , asciidoc, docbook_xml_dtd_45, docbook_xsl, libxml2, libxslt
, gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly, gst-libav , gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly, gst-libav
, qtwebkit-plugins }: , qtwebkit-plugins }:
@ -46,7 +46,7 @@ in buildPythonApplication rec {
]; ];
propagatedBuildInputs = [ propagatedBuildInputs = [
pyyaml pyqt5 jinja2 pygments pypeg2 pyyaml pyqt5 jinja2 pygments pypeg2 cssutils
]; ];
postPatch = '' postPatch = ''

View File

@ -2,7 +2,7 @@
buildGoPackage rec { buildGoPackage rec {
name = "terraform-${version}"; name = "terraform-${version}";
version = "0.7.1"; version = "0.7.2";
rev = "v${version}"; rev = "v${version}";
goPackagePath = "github.com/hashicorp/terraform"; goPackagePath = "github.com/hashicorp/terraform";
@ -11,7 +11,7 @@ buildGoPackage rec {
inherit rev; inherit rev;
owner = "hashicorp"; owner = "hashicorp";
repo = "terraform"; repo = "terraform";
sha256 = "1nvz4nqkn8pl25zyw7x5079dbzmwdxsar9gbcjk1srfpa746j1y4"; sha256 = "002jg4iwg4g4hkg4hm3szlkyagqzipln3l44b8azh1a7vh1m8cp2";
}; };
postInstall = '' postInstall = ''

View File

@ -23,11 +23,11 @@
let let
# NOTE: When updating, please also update in current stable, # NOTE: When updating, please also update in current stable,
# as older versions stop working # as older versions stop working
version = "8.4.21"; version = "9.4.49";
sha256 = sha256 =
{ {
"x86_64-linux" = "1nihmr99mzyjhhdlg39j6g0m6hqgdz80lgrjdw1nnh38vq4fgbnq"; "x86_64-linux" = "0gkm4jhcn3pqaizmki98rbqb7mqyf6mjgmpslas1wr94q5msyrpd";
"i686-linux" = "09jfdc8isjcpvgnvfykawlvdq65ng0dg6b54m4vdswk58ggndvlq"; "i686-linux" = "08h5jxan6l9h4zfmvc5q2652dyplih2avayy8f9h8mppirpg68px";
}."${stdenv.system}" or (throw "system ${stdenv.system} not supported"); }."${stdenv.system}" or (throw "system ${stdenv.system} not supported");
arch = arch =

View File

@ -26,7 +26,7 @@ in stdenv.mkDerivation rec {
''; '';
buildPhase = '' buildPhase = ''
${python.interpreter}setup.py build ${python.interpreter} setup.py build
''; '';
installPhase = '' installPhase = ''

View File

@ -0,0 +1,21 @@
{stdenv, autoreconfHook, fetchFromGitHub, bison}:
let version = "0.9"; in
stdenv.mkDerivation rec {
name = "tcpkali-${version}";
src = fetchFromGitHub {
owner = "machinezone";
repo = "tcpkali";
rev = "v${version}";
sha256 = "03cbmnc60wkd7f4bapn5cbm3c4zas2l0znsbpci2mn8ms8agif82";
};
buildInputs = [autoreconfHook bison];
meta = {
description = "High performance TCP and WebSocket load generator and sink";
license = stdenv.lib.licenses.bsd2;
inherit (src.meta) homepage;
platforms = stdenv.lib.platforms.linux;
maintainers = with stdenv.lib.maintainers; [ ethercrow ];
};
}

View File

@ -0,0 +1,3 @@
source 'https://rubygems.org'
gem 'ledger_web'

View File

@ -0,0 +1,61 @@
GEM
remote: https://rubygems.org/
specs:
backports (3.6.8)
database_cleaner (1.5.3)
diff-lcs (1.2.5)
directory_watcher (1.5.1)
ledger_web (1.5.2)
database_cleaner
directory_watcher (~> 1.5.1)
pg
rack (>= 1.3.6)
rspec
sequel
sinatra
sinatra-contrib
sinatra-session
multi_json (1.12.1)
pg (0.18.4)
rack (1.6.4)
rack-protection (1.5.3)
rack
rack-test (0.6.3)
rack (>= 1.0)
rspec (3.5.0)
rspec-core (~> 3.5.0)
rspec-expectations (~> 3.5.0)
rspec-mocks (~> 3.5.0)
rspec-core (3.5.2)
rspec-support (~> 3.5.0)
rspec-expectations (3.5.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.5.0)
rspec-mocks (3.5.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.5.0)
rspec-support (3.5.0)
sequel (4.37.0)
sinatra (1.4.7)
rack (~> 1.5)
rack-protection (~> 1.4)
tilt (>= 1.3, < 3)
sinatra-contrib (1.4.7)
backports (>= 2.0)
multi_json
rack-protection
rack-test
sinatra (~> 1.4.0)
tilt (>= 1.3, < 3)
sinatra-session (1.0.0)
sinatra (>= 1.0)
tilt (2.0.5)
PLATFORMS
ruby
DEPENDENCIES
ledger_web (= 1.5.2)
BUNDLED WITH
1.12.5

View File

@ -0,0 +1,52 @@
{ stdenv, lib, fetchFromGitHub, makeWrapper, bundlerEnv, ruby
, withPostgresql ? true, postgresql
, withSqlite ? false, sqlite
}:
let
_name = "ledger-web";
cmd = "ledger_web";
env = bundlerEnv {
name = _name;
inherit ruby;
gemfile = ./Gemfile;
lockfile = ./Gemfile.lock;
gemset = ./gemset.nix;
meta = with lib; {
homepage = https://github.com/peterkeen/ledger-web;
platforms = platforms.linux;
maintainers = [ peterhoeg ];
license = licenses.mit;
};
};
in stdenv.mkDerivation rec {
name = "${_name}-${version}";
version = "1.5.2";
buildInputs = [ env ruby makeWrapper ]
++ lib.optional withPostgresql postgresql
++ lib.optional withSqlite sqlite;
src = fetchFromGitHub {
owner = "peterkeen";
repo = _name;
rev = "v${version}";
sha256 = "0an4d46h3pp7a8s96jl0dnw1imwdgnb2j474b9wrbidwc6cmfrm7";
};
dontStrip = true;
installPhase = ''
mkdir -p $out
cp --no-preserve=mode -r bin lib $out
chmod 0755 $out/bin/${cmd}
wrapProgram $out/bin/${cmd} \
--set BUNDLE_BIN ${env.bundler}/bin/bundle \
--set GEM_PATH ${env}/${env.ruby.gemPath}
'';
}

View File

@ -0,0 +1,164 @@
{
backports = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "1zcgqw7m7jb8n7b2jwla5cq0nw9wsgddxfmn0a9v89ihzd4i1a5k";
type = "gem";
};
version = "3.6.8";
};
database_cleaner = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "0fx6zmqznklmkbjl6f713jyl11d4g9q220rcl86m2jp82r8kfwjj";
type = "gem";
};
version = "1.5.3";
};
diff-lcs = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "1vf9civd41bnqi6brr5d9jifdw73j9khc6fkhfl1f8r9cpkdvlx1";
type = "gem";
};
version = "1.2.5";
};
directory_watcher = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "0fwc2shba7vks262ind74y3g76qp7znjq5q8b2dvza0yidgywhcq";
type = "gem";
};
version = "1.5.1";
};
ledger_web = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "0i4vagaiyayymlr41rsy4lg2cl1r011ib0ql9dgjadfy6imb4kqh";
type = "gem";
};
version = "1.5.2";
};
multi_json = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "1wpc23ls6v2xbk3l1qncsbz16npvmw8p0b38l8czdzri18mp51xk";
type = "gem";
};
version = "1.12.1";
};
pg = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "07dv4ma9xd75xpsnnwwg1yrpwpji7ydy0q1d9dl0yfqbzpidrw32";
type = "gem";
};
version = "0.18.4";
};
rack = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5";
type = "gem";
};
version = "1.6.4";
};
rack-protection = {
dependencies = ["rack"];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0cvb21zz7p9wy23wdav63z5qzfn4nialik22yqp6gihkgfqqrh5r";
type = "gem";
};
version = "1.5.3";
};
rack-test = {
dependencies = ["rack"];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0h6x5jq24makgv2fq5qqgjlrk74dxfy62jif9blk43llw8ib2q7z";
type = "gem";
};
version = "0.6.3";
};
rspec = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "16g3mmih999f0b6vcz2c3qsc7ks5zy4lj1rzjh8hf6wk531nvc6s";
type = "gem";
};
version = "3.5.0";
};
rspec-core = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "12yndf7y6g3s1306bv1aycsmd0gjy5m172spdhx54svca2fcpzy1";
type = "gem";
};
version = "3.5.2";
};
rspec-expectations = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "0bbqfrb1x8gmwf8x2xhhwvvlhwbbafq4isbvlibxi6jk602f09gs";
type = "gem";
};
version = "3.5.0";
};
rspec-mocks = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "0nl3ksivh9wwrjjd47z5dggrwx40v6gpb3a0gzbp1gs06a5dmk24";
type = "gem";
};
version = "3.5.0";
};
rspec-support = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "10vf3k3d472y573mag2kzfsfrf6rv355s13kadnpryk8d36yq5r0";
type = "gem";
};
version = "3.5.0";
};
sequel = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "11vdpr3r4dwhcan16gs4gjm2k21y9qz7ri5w2zz54pmnxp499cjw";
type = "gem";
};
version = "4.37.0";
};
sinatra = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "1b81kbr65mmcl9cdq2r6yc16wklyp798rxkgmm5pr9fvsj7jwmxp";
type = "gem";
};
version = "1.4.7";
};
sinatra-contrib = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "0vi3i0icbi2figiayxpvxbqpbn1syma7w4p4zw5mav1ln4c7jnfr";
type = "gem";
};
version = "1.4.7";
};
sinatra-session = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "183xl8i4d2hc03afd1i52gwn2xi3vzrv02g22llhfy5wkmm44gmq";
type = "gem";
};
version = "1.0.0";
};
tilt = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "0lgk8bfx24959yq1cn55php3321wddw947mgj07bxfnwyipy9hqf";
type = "gem";
};
version = "2.0.5";
};
}

View File

@ -268,5 +268,6 @@ in stdenv.mkDerivation rec {
maintainers = with maintainers; [ viric raskin ]; maintainers = with maintainers; [ viric raskin ];
platforms = platforms.linux; platforms = platforms.linux;
hydraPlatforms = []; hydraPlatforms = [];
requiredSystemFeatures = [ "big-parallel" ];
}; };
} }

View File

@ -271,5 +271,6 @@ in stdenv.mkDerivation rec {
license = licenses.lgpl3; license = licenses.lgpl3;
maintainers = with maintainers; [ viric raskin ]; maintainers = with maintainers; [ viric raskin ];
platforms = platforms.linux; platforms = platforms.linux;
requiredSystemFeatures = [ "big-parallel" ];
}; };
} }

View File

@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
cmakeFlags = [ "-DLIBMINC_DIR=${libminc}/lib/" ]; cmakeFlags = [ "-DLIBMINC_DIR=${libminc}/lib/" ];
checkPhase = "ctest"; checkPhase = "ctest";
doCheck = true; doCheck = false;
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = https://github.com/BIC-MNI/minc-tools; homepage = https://github.com/BIC-MNI/minc-tools;

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "geogebra-${version}"; name = "geogebra-${version}";
version = "5.0.265.0"; version = "5.0.271.0";
preferLocalBuild = true; preferLocalBuild = true;
src = fetchurl { src = fetchurl {
url = "http://download.geogebra.org/installers/5.0/GeoGebra-Linux-Portable-${version}.tar.bz2"; url = "http://download.geogebra.org/installers/5.0/GeoGebra-Linux-Portable-${version}.tar.bz2";
sha256 = "74e5abfa098ee0fc464cd391cd3ef6db474ff25e8ea4fbcd82c4b4b5d3d5c459"; sha256 = "5dd5be1cde27c9b567f79c38048045864064b69c0d2b469ae93e1fca5f543475";
}; };
srcIcon = fetchurl { srcIcon = fetchurl {

View File

@ -22,6 +22,8 @@ stdenv.mkDerivation {
hardeningDisable = [ "format" ]; hardeningDisable = [ "format" ];
enableParallelBuilding = true;
patchPhase = '' patchPhase = ''
cp -fv ${fakegit}/bin/checkout-git.sh libraries/checkout-git.sh cp -fv ${fakegit}/bin/checkout-git.sh libraries/checkout-git.sh
cp -fv ${fakegit}/bin/checkout-svn.sh libraries/checkout-svn.sh cp -fv ${fakegit}/bin/checkout-svn.sh libraries/checkout-svn.sh

View File

@ -10,7 +10,7 @@
}: }:
let let
version = "2.9.3"; version = "2.10.0";
svn = subversionClient.override { perlBindings = true; }; svn = subversionClient.override { perlBindings = true; };
in in
@ -19,7 +19,7 @@ stdenv.mkDerivation {
src = fetchurl { src = fetchurl {
url = "https://www.kernel.org/pub/software/scm/git/git-${version}.tar.xz"; url = "https://www.kernel.org/pub/software/scm/git/git-${version}.tar.xz";
sha256 = "0qzs681a64k3shh5p0rg41l1z16fbk5sj0xga45k34hp1hsp654z"; sha256 = "1rr9zyafb6q3wixyjar6cc7z7vdh1dqa4b5irz3gz1df02n68cy7";
}; };
hardeningDisable = [ "format" ]; hardeningDisable = [ "format" ];

View File

@ -1,8 +1,6 @@
diff --git a/git-sh-i18n.sh b/git-sh-i18n.sh
index e6c3116..4e34a2c 100644
--- a/git-sh-i18n.sh --- a/git-sh-i18n.sh
+++ b/git-sh-i18n.sh +++ b/git-sh-i18n.sh
@@ -15,69 +15,11 @@ else @@ -15,87 +15,11 @@
fi fi
export TEXTDOMAINDIR export TEXTDOMAINDIR
@ -44,6 +42,13 @@ index e6c3116..4e34a2c 100644
- git sh-i18n--envsubst "$1" - git sh-i18n--envsubst "$1"
- ) - )
- } - }
-
- eval_ngettext () {
- ngettext "$1" "$2" "$3" | (
- export PATH $(git sh-i18n--envsubst --variables "$2");
- git sh-i18n--envsubst "$2"
- )
- }
- ;; - ;;
-poison) -poison)
- # Emit garbage so that tests that incorrectly rely on translatable - # Emit garbage so that tests that incorrectly rely on translatable
@ -55,21 +60,32 @@ index e6c3116..4e34a2c 100644
- eval_gettext () { - eval_gettext () {
- printf "%s" "# GETTEXT POISON #" - printf "%s" "# GETTEXT POISON #"
- } - }
-
- eval_ngettext () {
- printf "%s" "# GETTEXT POISON #"
- }
- ;; - ;;
-*) -*)
- gettext () { - gettext () {
- printf "%s" "$1" - printf "%s" "$1"
- } - }
+# GNU gettext -
+export GIT_INTERNAL_GETTEXT_SH_SCHEME=gnu
+export PATH=@gettext@/bin:$PATH
- eval_gettext () { - eval_gettext () {
- printf "%s" "$1" | ( - printf "%s" "$1" | (
- export PATH $(git sh-i18n--envsubst --variables "$1"); - export PATH $(git sh-i18n--envsubst --variables "$1");
- git sh-i18n--envsubst "$1" - git sh-i18n--envsubst "$1"
- ) - )
- } - }
+# GNU gettext
+export GIT_INTERNAL_GETTEXT_SH_SCHEME=gnu
+export PATH=@gettext@/bin:$PATH
- eval_ngettext () {
- (test "$3" = 1 && printf "%s" "$1" || printf "%s" "$2") | (
- export PATH $(git sh-i18n--envsubst --variables "$2");
- git sh-i18n--envsubst "$2"
- )
- }
- ;; - ;;
-esac -esac
+. @gettext@/bin/gettext.sh +. @gettext@/bin/gettext.sh

View File

@ -2,12 +2,12 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "hub-${version}"; name = "hub-${version}";
version = "2.2.3"; version = "2.2.5";
src = fetchgit { src = fetchgit {
url = https://github.com/github/hub.git; url = https://github.com/github/hub.git;
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
sha256 = "1vswkx4lm6x4s04453qkmv970gjn79ma39fmdg8mnzy7lh2swws6"; sha256 = "13pab3r2ngac2kljy9jb4lz3g3d6smkwydlx23ydjvyjbg2zb75r";
}; };
@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
installPhase = '' installPhase = ''
mkdir -p "$out/bin" mkdir -p "$out/bin"
cp hub "$out/bin/" cp bin/hub "$out/bin/"
mkdir -p "$out/share/man/man1" mkdir -p "$out/share/man/man1"
cp "man/hub.1" "$out/share/man/man1/" cp "man/hub.1" "$out/share/man/man1/"

View File

@ -2,13 +2,13 @@
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
name = "${pname}-${version}"; name = "${pname}-${version}";
version = "3.34"; version = "3.35";
pname = "i3pystatus"; pname = "i3pystatus";
disabled = !python3Packages.isPy3k; disabled = !python3Packages.isPy3k;
src = fetchurl { src = fetchurl {
url = "mirror://pypi/i/${pname}/${name}.tar.gz"; url = "mirror://pypi/i/${pname}/${name}.tar.gz";
sha256 = "1bpkkf9q4zqq7fh65zynbv26nq24rfznmw71jjvda7g8kjrwjdk5"; sha256 = "0g5m05rbqvq1qrspm6fyzky9xfhaz5pvc4hfzgdxrzijn8nfc860";
}; };
propagatedBuildInputs = with python3Packages; [ keyring colour netifaces praw psutil basiciw ] ++ propagatedBuildInputs = with python3Packages; [ keyring colour netifaces praw psutil basiciw ] ++

View File

@ -1,55 +1,29 @@
{ lib, stdenv, fetchurl, makeWrapper, cmake, pkgconfig { lib, stdenv, fetchgit, cmake, pkgconfig
, wlc, dbus_libs, wayland, libxkbcommon, pixman, libinput, udev, zlib, libpng, libdrm, libX11 , wlc, dbus_libs, wayland, libxkbcommon, pixman, libinput, udev, zlib, libpng
, libdrm, libX11
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "orbment-${version}"; name = "orbment-${version}";
version = "git-2016-01-31"; version = "git-2016-08-13";
repo = "https://github.com/Cloudef/orbment";
rev = "7f649fb76649f826dd29578a5ec41bb561b116eb";
chck_repo = "https://github.com/Cloudef/chck"; src = fetchgit {
chck_rev = "fe5e2606b7242aa5d89af2ea9fd048821128d2bc"; url = "https://github.com/Cloudef/orbment";
inihck_repo = "https://github.com/Cloudef/inihck"; rev = "01dcfff9719e20261a6d8c761c0cc2f8fa0d0de5";
inihck_rev = "462cbd5fd67226714ac2bdfe4ceaec8e251b2d9c"; sha256 = "04mv9nh847vijr01zrs47fzmnwfhdx09vi3ddv843mx10yx7lqdb";
fetchSubmodules = true;
srcs = [ };
(fetchurl {
url = "${repo}/archive/${rev}.tar.gz";
sha256 = "5a426da0d5f4487911cfe9226865ed0cd1a7cdf253eec19d5eadc4b0d14a2ea0";
})
(fetchurl {
url = "${chck_repo}/archive/${chck_rev}.tar.gz";
sha256 = "ca316b544c48e837c32f08d613be42da10e0a3251e8e4488d1848b91ef92ab9e";
})
(fetchurl {
url = "${inihck_repo}/archive/${inihck_rev}.tar.gz";
sha256 = "d21f2ac25eafed285614f5f0ef7a1014d629ba382f4e64bc89fe2c3e98c2777f";
})
];
sourceRoot = "orbment-${rev}";
postUnpack = ''
rm -rf orbment-${rev}/lib/chck orbment-${rev}/lib/inihck
ln -s ../../chck-${chck_rev} orbment-${rev}/lib/chck
ln -s ../../inihck-${inihck_rev} orbment-${rev}/lib/inihck
'';
nativeBuildInputs = [ cmake pkgconfig ]; nativeBuildInputs = [ cmake pkgconfig ];
buildInputs = [ makeWrapper wlc dbus_libs wayland libxkbcommon pixman libinput udev zlib libpng libX11 libdrm ]; buildInputs = [
makeFlags = "PREFIX=$(out)"; wlc dbus_libs wayland libxkbcommon pixman libinput udev zlib libpng libX11
installPhase = "PREFIX=$out make install"; libdrm
];
LD_LIBRARY_PATH = lib.makeLibraryPath [ libX11 libdrm dbus_libs ];
preFixup = ''
wrapProgram $out/bin/orbment \
--prefix LD_LIBRARY_PATH : "${LD_LIBRARY_PATH}";
'';
meta = { meta = {
description = "Modular Wayland compositor"; description = "Modular Wayland compositor";
homepage = repo; homepage = src.url;
license = lib.licenses.mit; license = lib.licenses.mit;
platforms = lib.platforms.linux; platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ ]; maintainers = with lib.maintainers; [ ];

View File

@ -4,7 +4,7 @@
}: }:
let let
version = "0.8"; version = "0.9";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "sway-${version}"; name = "sway-${version}";
@ -13,7 +13,7 @@ in
owner = "Sircmpwn"; owner = "Sircmpwn";
repo = "sway"; repo = "sway";
rev = "${version}"; rev = "${version}";
sha256 = "10i62cn1z7fwg0jwkskmzcaha39lprkl4zvkp59jr5wvpjligdq3"; sha256 = "0qqqg23rknxnjcgvkfrx3pijqc3dvi74qmmavq07vy2qfs1xlwg0";
}; };
nativeBuildInputs = [ makeWrapper cmake pkgconfig asciidoc libxslt docbook_xsl ]; nativeBuildInputs = [ makeWrapper cmake pkgconfig asciidoc libxslt docbook_xsl ];

View File

@ -0,0 +1,20 @@
# Functions to build elisp files to locally configure emcas buffers.
# See https://github.com/shlevy/nix-buffer
{ runCommand }:
{
withPackages = pkgs: runCommand "dir-locals.el" { inherit pkgs; } ''
echo "(make-local-variable 'process-environment)" >> $out
echo "(setenv \"PATH\" (concat" >> $out
for pkg in $pkgs; do
echo " \"$pkg/bin:$pkg/sbin\"" >> $out
done
echo " (getenv \"PATH\")))" >> $out
echo -n "(setq-local exec-path (append '(" >> $out
for pkg in $pkgs; do
echo -en "\n \"$pkg/bin\" \"$pkg/sbin\"" >> $out
done
echo -e ")\\n exec-path))" >> $out
'';
}

View File

@ -123,8 +123,9 @@ rec {
mkdir -p /fs/dev mkdir -p /fs/dev
mount -o bind /dev /fs/dev mount -o bind /dev /fs/dev
mkdir -p /fs/dev /fs/dev/shm mkdir -p /fs/dev/shm /fs/dev/pts
mount -t tmpfs -o "mode=1777" none /fs/dev/shm mount -t tmpfs -o "mode=1777" none /fs/dev/shm
mount -t devpts none /fs/dev/pts
echo "mounting Nix store..." echo "mounting Nix store..."
mkdir -p /fs/nix/store mkdir -p /fs/nix/store
@ -261,9 +262,12 @@ rec {
exit 1 exit 1
fi fi
eval "$postVM" exitCode="$(cat xchg/in-vm-exit)"
if [ "$exitCode" != "0" ]; then
exit "$exitCode"
fi
exit $(cat xchg/in-vm-exit) eval "$postVM"
''; '';

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "fira-code-${version}"; name = "fira-code-${version}";
version = "1.200"; version = "1.201";
src = fetchurl { src = fetchurl {
url = "https://github.com/tonsky/FiraCode/releases/download/${version}/FiraCode_${version}.zip"; url = "https://github.com/tonsky/FiraCode/releases/download/${version}/FiraCode_${version}.zip";
sha256 = "1zja7fsfh3xx2qv9wv46997d02l5nm483b5s39jpmxfracj8qam7"; sha256 = "11hwpdqj41wvzc8l8zgfb132cxn8kxpxbgiqc2kinc25x2l1ikji";
}; };
sourceRoot = "otf"; sourceRoot = "otf";

View File

@ -22,5 +22,5 @@ stdenv.mkDerivation {
configureFlags = [ "--disable-scrollkeeper" "--disable-introspection"/*not useful AFAIK*/ ]; configureFlags = [ "--disable-scrollkeeper" "--disable-introspection"/*not useful AFAIK*/ ];
NIX_CFLAGS_COMPILE="-I${GConf}/include/gconf/2"; NIX_CFLAGS_COMPILE="-I${GConf.dev}/include/gconf/2";
} }

View File

@ -45,5 +45,6 @@ in stdenv.mkDerivation rec {
maintainers = gnome3.maintainers; maintainers = gnome3.maintainers;
license = licenses.lgpl2Plus; license = licenses.lgpl2Plus;
platforms = platforms.linux; platforms = platforms.linux;
requiredSystemFeatures = [ "big-parallel" ];
}; };
} }

View File

@ -19,6 +19,7 @@
, haddock-api , haddock-api
, ghcjs-prim , ghcjs-prim
, regex-posix , regex-posix
, callPackage
, bootPkgs, gmp , bootPkgs, gmp
, jailbreak-cabal , jailbreak-cabal
@ -128,7 +129,7 @@ in mkDerivation (rec {
--with-gmp-libraries ${gmp.out}/lib --with-gmp-libraries ${gmp.out}/lib
''; '';
passthru = let passthru = let
ghcjsNodePkgs = pkgs.nodePackages.override { ghcjsNodePkgs = callPackage ../../../top-level/node-packages.nix {
generated = ./node-packages-generated.nix; generated = ./node-packages-generated.nix;
self = ghcjsNodePkgs; self = ghcjsNodePkgs;
}; };

View File

@ -1,10 +1,14 @@
{stdenv, fetchFromGitHub, which, m4, python, bison, flex, llvmPackages}: {stdenv, fetchFromGitHub, bash, which, m4, python, bison, flex, llvmPackages, clangWrapSelf,
testedTargets ? ["sse4" "host"]
}:
# TODO: patch LLVM so Knights Landing works better (patch included in ispc github) # TODO: patch LLVM so Skylake-EX works better (patch included in ispc github) - needed for LLVM 3.9?
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "20151128"; version = "1.9.1";
rev = "d3020580ff18836de2d4cae18901980b551d9d01"; rev = "v${version}";
inherit testedTargets;
name = "ispc-${version}"; name = "ispc-${version}";
@ -12,10 +16,10 @@ stdenv.mkDerivation rec {
owner = "ispc"; owner = "ispc";
repo = "ispc"; repo = "ispc";
inherit rev; inherit rev;
sha256 = "15qi22qvmlx3jrhrf3rwl0y77v66prpan6qb66a55dw3pw2d4jvn"; sha256 = "1wwsyvn44hd5iyi5779l5378x096307slpyl29wrsmfp66796693";
}; };
enableParallelBuilding = false; enableParallelBuilding = true;
doCheck = true; doCheck = true;
@ -26,14 +30,17 @@ stdenv.mkDerivation rec {
bison bison
flex flex
llvm llvm
clang llvmPackages.clang-unwrapped # we need to link against libclang, so we need the unwrapped
]; ];
# https://github.com/ispc/ispc/pull/1190
patches = [ ./gcc5.patch ];
postPatch = "sed -i -e 's/\\/bin\\///g' -e 's/-lcurses/-lncurses/g' Makefile"; postPatch = "sed -i -e 's/\\/bin\\///g' -e 's/-lcurses/-lncurses/g' Makefile";
# TODO: this correctly catches errors early, but also some things that are just weird and don't seem to be real
# errors
#configurePhase = ''
# makeFlagsArray=( SHELL="${bash}/bin/bash -o pipefail" )
#'';
installPhase = '' installPhase = ''
mkdir -p $out/bin mkdir -p $out/bin
cp ispc $out/bin cp ispc $out/bin
@ -41,10 +48,19 @@ stdenv.mkDerivation rec {
checkPhase = '' checkPhase = ''
export ISPC_HOME=$PWD export ISPC_HOME=$PWD
python run_tests.py for target in $testedTargets
do
echo "Testing target $target"
echo "================================"
echo
PATH=${llvmPackages.clang}/bin:$PATH python run_tests.py -t $target --non-interactive --verbose --file=test_output.log
fgrep -q "No new fails" test_output.log || exit 1
done
''; '';
makeFlags = [ makeFlags = [
"CXX=${llvmPackages.clang}/bin/clang++"
"CLANG=${llvmPackages.clang}/bin/clang"
"CLANG_INCLUDE=${llvmPackages.clang-unwrapped}/include" "CLANG_INCLUDE=${llvmPackages.clang-unwrapped}/include"
]; ];
@ -52,7 +68,7 @@ stdenv.mkDerivation rec {
homepage = https://ispc.github.io/ ; homepage = https://ispc.github.io/ ;
description = "Intel 'Single Program, Multiple Data' Compiler, a vectorised language"; description = "Intel 'Single Program, Multiple Data' Compiler, a vectorised language";
license = licenses.bsd3; license = licenses.bsd3;
platforms = platforms.unix; platforms = ["x86_64-linux"]; # TODO: buildable on more platforms?
maintainers = [ maintainers.aristid ]; maintainers = [ maintainers.aristid ];
}; };
} }

View File

@ -1,22 +0,0 @@
diff --git a/cbackend.cpp b/cbackend.cpp
index 3552205..9c05824 100644
--- a/cbackend.cpp
+++ b/cbackend.cpp
@@ -1641,7 +1641,7 @@ void CWriter::printConstant(llvm::Constant *CPV, bool Static) {
V = Tmp.convertToDouble();
}
- if (isnan(V)) {
+ if (std::isnan(V)) {
// The value is NaN
// FIXME the actual NaN bits should be emitted.
@@ -1665,7 +1665,7 @@ void CWriter::printConstant(llvm::Constant *CPV, bool Static) {
else
Out << "LLVM_NAN" << (Val == QuietNaN ? "" : "S") << "(\""
<< Buffer << "\") /*nan*/ ";
- } else if (isinf(V)) {
+ } else if (std::isinf(V)) {
// The value is Inf
if (V < 0) Out << '-';
Out << "LLVM_INF" <<

View File

@ -48,12 +48,12 @@ in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "julia"; pname = "julia";
version = "0.4.5"; version = "0.4.6";
name = "${pname}-${version}"; name = "${pname}-${version}";
src = fetchurl { src = fetchurl {
url = "https://github.com/JuliaLang/${pname}/releases/download/v${version}/${name}.tar.gz"; url = "https://github.com/JuliaLang/${pname}/releases/download/v${version}/${name}.tar.gz";
sha256 = "09gc6yf3v4in0qwhrbgjrjgvblp941di0mli4zax22mvf4dzc7s4"; sha256 = "17wsppmsf782icyzri34zha61wfx4brfq4h68qg17w6zimd2plg5";
}; };
prePatch = '' prePatch = ''

View File

@ -60,7 +60,7 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; { meta = with stdenv.lib; {
inherit (src.meta) homepage; inherit (src.meta) homepage;
description = "A low-level counterpart to Lua"; description = "A low-level counterpart to Lua";
platforms = platforms.unix; platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [ jb55 ]; maintainers = with maintainers; [ jb55 ];
license = licenses.mit; license = licenses.mit;
}; };

View File

@ -85,7 +85,10 @@ let
ghcWithHoogle = selectFrom: ghcWithHoogle = selectFrom:
let let
packages = selectFrom self; packages = selectFrom self;
hoogle = callPackage ./hoogle.nix { inherit packages; }; hoogle = callPackage ./hoogle.nix {
inherit packages;
hoogle = self.hoogle_4_2_43;
};
in withPackages (packages ++ [ hoogle ]); in withPackages (packages ++ [ hoogle ]);
ghc = ghc // { ghc = ghc // {

View File

@ -6,7 +6,7 @@ assert zlibSupport -> zlib != null;
let let
majorVersion = "5.3.1"; majorVersion = "5.4.0";
version = "${majorVersion}"; version = "${majorVersion}";
libPrefix = "pypy${majorVersion}"; libPrefix = "pypy${majorVersion}";
@ -18,7 +18,7 @@ let
src = fetchurl { src = fetchurl {
url = "https://bitbucket.org/pypy/pypy/get/release-pypy${pythonVersion}-v${version}.tar.bz2"; url = "https://bitbucket.org/pypy/pypy/get/release-pypy${pythonVersion}-v${version}.tar.bz2";
sha256 = "19cq2ngkh5q5jxwhw81rd6p0qna73z85jfik88w0856k5aj86yha"; sha256 = "1jm4ak6rbqhdhm8gjbd5hanabskbyzhzvjcl93fj0i017yirw88i";
}; };
# http://bugs.python.org/issue27369 # http://bugs.python.org/issue27369
@ -32,6 +32,14 @@ let
patch lib-python/2.7/test/test_pyexpat.py < '${expatch}' patch lib-python/2.7/test/test_pyexpat.py < '${expatch}'
''; '';
# Increase recursion limit. This patch is not needed on pypy > 5.4.0
patches = [
(fetchurl {
url = "https://bitbucket.org/pypy/pypy/commits/a5db0f4359abb3f64b6d7ed83202e1cb0de37fb2/raw/";
sha256 = "07nvqjhj0kl67f3kjwhmybaqg6089ps3q8r0si1lgk3gyb56ygn0";
})
];
buildInputs = [ bzip2 openssl pkgconfig pythonFull libffi ncurses expat sqlite tk tcl xlibsWrapper libX11 makeWrapper gdbm db ] buildInputs = [ bzip2 openssl pkgconfig pythonFull libffi ncurses expat sqlite tk tcl xlibsWrapper libX11 makeWrapper gdbm db ]
++ stdenv.lib.optional (stdenv ? cc && stdenv.cc.libc != null) stdenv.cc.libc ++ stdenv.lib.optional (stdenv ? cc && stdenv.cc.libc != null) stdenv.cc.libc
++ stdenv.lib.optional zlibSupport zlib; ++ stdenv.lib.optional zlibSupport zlib;

View File

@ -1,5 +1,5 @@
{ stdenv, fetchurl, fetchpatch, pkgconfig, audiofile, libcap { stdenv, fetchurl, fetchpatch, pkgconfig, audiofile, libcap
, openglSupport ? false, mesa_noglu , openglSupport ? false, mesa_noglu, mesa_glu
, alsaSupport ? true, alsaLib , alsaSupport ? true, alsaLib
, x11Support ? true, libXext, libICE, libXrandr , x11Support ? true, libXext, libICE, libXrandr
, pulseaudioSupport ? true, libpulseaudio , pulseaudioSupport ? true, libpulseaudio
@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
optionals x11Support [ libXext libICE libXrandr ] ++ optionals x11Support [ libXext libICE libXrandr ] ++
optional alsaSupport alsaLib ++ optional alsaSupport alsaLib ++
optional stdenv.isLinux libcap ++ optional stdenv.isLinux libcap ++
optional openglSupport mesa_noglu ++ optionals openglSupport [ mesa_noglu mesa_glu ] ++
optional pulseaudioSupport libpulseaudio ++ optional pulseaudioSupport libpulseaudio ++
optional stdenv.isDarwin Cocoa; optional stdenv.isDarwin Cocoa;

View File

@ -0,0 +1,23 @@
{ stdenv, fetchFromGitHub, cmake, curl }:
stdenv.mkDerivation {
name = "curlcpp-20160901";
src = fetchFromGitHub {
owner = "JosephP91";
repo = "curlcpp";
rev = "98286da1d6c9f6158344a8e272eae5030cbf6c0e";
sha256 = "00nm2b8ik1yvaz5dp1b61jid841jv6zf8k5ma2nxbf1di1apqh0d";
};
buildInputs = [ cmake curl ];
meta = with stdenv.lib; {
homepage = "http://josephp91.github.io/curlcpp/";
description = "Object oriented C++ wrapper for CURL";
platforms = platforms.unix ;
license = licenses.mit;
maintainers = [ maintainers.juliendehos ];
};
}

View File

@ -1,4 +1,4 @@
{ stdenv, lib, fetchurl, pkgconfig, expat, systemd, glib, dbus_glib, python { stdenv, lib, fetchurl, pkgconfig, expat, systemd
, libX11 ? null, libICE ? null, libSM ? null, x11Support ? (stdenv.isLinux || stdenv.isDarwin) }: , libX11 ? null, libICE ? null, libSM ? null, x11Support ? (stdenv.isLinux || stdenv.isDarwin) }:
assert x11Support -> libX11 != null assert x11Support -> libX11 != null

View File

@ -1,13 +1,13 @@
{ stdenv, fetchFromGitHub, libtool, autoconf, automake }: { stdenv, fetchFromGitHub, libtool, autoconf, automake }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "v0.99.2"; version = "v0.99.4";
name = "fastjson-${version}"; name = "fastjson-${version}";
src = fetchFromGitHub { src = fetchFromGitHub {
repo = "libfastjson"; repo = "libfastjson";
owner = "rsyslog"; owner = "rsyslog";
rev = "eabae907c9d991143e17da278a239819f2e8ae1c"; rev = "6e057a094cb225c9d80d8d6e6b1f36ca88a942dd";
sha256 = "17fhaqdn0spc4p0848ahcy68swm6l5yd3bx6bdzxmmwj1jdrmvzk"; sha256 = "1pn207p9zns0aqm6z5l5fdgb94wyyhaw83lyvyfdxmai74nbqs65";
}; };
buildInputs = [ autoconf automake libtool ]; buildInputs = [ autoconf automake libtool ];

View File

@ -10,7 +10,6 @@
, libgnomeui ? null , libgnomeui ? null
, libgnomeprint ? null , libgnomeprint ? null
, libgnomeprintui ? null , libgnomeprintui ? null
, gnomepanel ? null
, libxml2 , libxml2
, monoDLLFixer , monoDLLFixer
}: }:
@ -36,7 +35,6 @@ stdenv.mkDerivation {
buildInputs = [ buildInputs = [
pkgconfig mono glib pango gtk GConf libglade libgnomecanvas pkgconfig mono glib pango gtk GConf libglade libgnomecanvas
libgtkhtml libgnomeui libgnomeprint libgnomeprintui gtkhtml libxml2 libgtkhtml libgnomeui libgnomeprint libgnomeprintui gtkhtml libxml2
gnomepanel
]; ];
dontStrip = true; dontStrip = true;

View File

@ -10,7 +10,6 @@
, libgnomeui ? null , libgnomeui ? null
, libgnomeprint ? null , libgnomeprint ? null
, libgnomeprintui ? null , libgnomeprintui ? null
, gnomepanel ? null
, libxml2 , libxml2
, monoDLLFixer , monoDLLFixer
}: }:
@ -35,7 +34,6 @@ stdenv.mkDerivation {
buildInputs = [ buildInputs = [
pkgconfig mono glib pango gtk3 GConf libglade libgnomecanvas pkgconfig mono glib pango gtk3 GConf libglade libgnomecanvas
libgtkhtml libgnomeui libgnomeprint libgnomeprintui gtkhtml libxml2 libgtkhtml libgnomeui libgnomeprint libgnomeprintui gtkhtml libxml2
gnomepanel
]; ];
dontStrip = true; dontStrip = true;

View File

@ -1,11 +1,11 @@
{stdenv, fetchurl, cmake, libX11, libuuid, xz}: {stdenv, fetchurl, cmake, libX11, libuuid, xz}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "itk-4.0.0"; name = "itk-4.10.0";
src = fetchurl { src = fetchurl {
url = mirror://sourceforge/itk/InsightToolkit-4.0.0.tar.xz; url = mirror://sourceforge/itk/InsightToolkit-4.10.0.tar.xz;
sha256 = "05z49sw612cbyiaghcsda0xylrkf06jh81ql79si5632w1hpgbd9"; sha256 = "0pxijhqsnwcp9jv1d8p11hsj90k8ajpwxhrnn8kk8c56k7y1207a";
}; };
cmakeFlags = [ cmakeFlags = [

View File

@ -1,17 +1,19 @@
{ stdenv, fetchurl, ncurses, groff }: { stdenv, fetchurl, ncurses, groff }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "libedit-20150325-3.1"; name = "libedit-20160903-3.1";
src = fetchurl { src = fetchurl {
url = "http://www.thrysoee.dk/editline/${name}.tar.gz"; url = "http://thrysoee.dk/editline/${name}.tar.gz";
sha256 = "1if8zi9h52m80ck796an28rrqfljk2n8cn25m3fl0prwz155x2n8"; sha256 = "0rvmm8z6hal5bbp5pljp7yvkpqi4pkas1amizhvg35v0skkx5jqc";
}; };
outputs = [ "out" "dev" ];
# Have `configure' avoid `/usr/bin/nroff' in non-chroot builds. # Have `configure' avoid `/usr/bin/nroff' in non-chroot builds.
NROFF = "${groff}/bin/nroff"; NROFF = "${groff}/bin/nroff";
patches = [ ./01-cygwin.patch ./freebsd-wchar.patch ]; patches = [ ./01-cygwin.patch ];
propagatedBuildInputs = [ ncurses ]; propagatedBuildInputs = [ ncurses ];
@ -23,7 +25,7 @@ stdenv.mkDerivation rec {
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = "http://www.thrysoee.dk/editline/"; homepage = http://www.thrysoee.dk/editline/;
description = "A port of the NetBSD Editline library (libedit)"; description = "A port of the NetBSD Editline library (libedit)";
license = licenses.bsd3; license = licenses.bsd3;
platforms = platforms.all; platforms = platforms.all;

View File

@ -1,13 +0,0 @@
diff --git a/src/chartype.h b/src/chartype.h
index 0beee17..4ac86f3 100644
--- a/src/chartype.h
+++ b/src/chartype.h
@@ -44,7 +44,7 @@
* supports non-BMP code points without requiring UTF-16, but nothing
* seems to actually advertise this properly, despite Unicode 3.1 having
* been around since 2001... */
-#if !defined(__NetBSD__) && !defined(__sun) && !(defined(__APPLE__) && defined(__MACH__)) && !defined(__OpenBSD__)
+#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__sun) && !(defined(__APPLE__) && defined(__MACH__)) && !defined(__OpenBSD__)
#ifndef __STDC_ISO_10646__
/* In many places it is assumed that the first 127 code points are ASCII
* compatible, so ensure wchar_t indeed does ISO 10646 and not some other

View File

@ -1,13 +0,0 @@
diff --git a/src/chartype.h b/src/chartype.h
index c35825c..be5aac0 100644
--- a/src/chartype.h
+++ b/src/chartype.h
@@ -44,7 +44,7 @@
* supports non-BMP code points without requiring UTF-16, but nothing
* seems to actually advertise this properly, despite Unicode 3.1 having
* been around since 2001... */
-#if !defined(__NetBSD__) && !defined(__sun) && !(defined(__APPLE__) && defined(__MACH__))
+#if !defined(__NetBSD__) && !defined(__sun) && !(defined(__APPLE__) && defined(__MACH__)) && !defined(__DragonFly__) && !defined(__FreeBSD__)
#ifndef __STDC_ISO_10646__
/* In many places it is assumed that the first 127 code points are ASCII
* compatible, so ensure wchar_t indeed does ISO 10646 and not some other

View File

@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
sha256 = "1mzbqr6sqisppz88mh73bbh5sw57g8l87qvhcjdx5pmbd183idni"; sha256 = "1mzbqr6sqisppz88mh73bbh5sw57g8l87qvhcjdx5pmbd183idni";
}; };
outputs = [ "out" "dev" "devdoc" ]; outputs = [ "out" "dev" "devdoc" "info" ];
buildInputs = [ libgcrypt curl gnutls pkgconfig ]; buildInputs = [ libgcrypt curl gnutls pkgconfig ];
preCheck = '' preCheck = ''

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, pkgconfig, gnutls, zlib }: { stdenv, fetchurl, pkgconfig, gnutls, zlib }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "librelp-1.2.8"; name = "librelp-1.2.12";
src = fetchurl { src = fetchurl {
url = "http://download.rsyslog.com/librelp/${name}.tar.gz"; url = "http://download.rsyslog.com/librelp/${name}.tar.gz";
sha256 = "1qxj7isa2d10aw6c4a9pd3fx08vv06rrhac312avgcjmdqaa88r6"; sha256 = "1mvvxqfsfg96rb6xv3fw7mcsqmyfnsb74sc53gnhpcpp4h2p6m83";
}; };
buildInputs = [ pkgconfig gnutls zlib ]; buildInputs = [ pkgconfig gnutls zlib ];

View File

@ -2,20 +2,27 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "nlohmann_json-${version}"; name = "nlohmann_json-${version}";
version = "2.0.2"; version = "2.0.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nlohmann"; owner = "nlohmann";
repo = "json"; repo = "json";
rev = "v${version}"; rev = "v${version}";
sha256 = "10sk8d23vh0c7b3qafjz2n8r5jv8vc275bl069ikhqnx1zxv6hwp"; sha256 = "192mg2y93g9q0jdn3fdffydpxk19nsrcv92kfip6srkdkwja18ri";
}; };
buildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
doCheck = true; doCheck = true;
checkTarget = "test"; checkTarget = "test";
crossAttrs = {
cmakeFlags = "-DBuildTests=OFF";
doCheck = false;
} // stdenv.lib.optionalAttrs (stdenv.cross.libc == "msvcrt") {
cmakeFlags = "-DBuildTests=OFF -DCMAKE_SYSTEM_NAME=Windows";
};
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Header only C++ library for the JSON file format"; description = "Header only C++ library for the JSON file format";
homepage = https://github.com/nlohmann/json; homepage = https://github.com/nlohmann/json;

View File

@ -0,0 +1,29 @@
{ stdenv, lib, fetchFromGitHub, autoconf, automake, which, libtool, pkgconfig,
alsaLib, portaudio,
pulseaudioSupport ? true, libpulseaudio }:
stdenv.mkDerivation rec {
name = "pcaudiolib-${version}";
version = "2016-07-19";
src = fetchFromGitHub {
owner = "rhdunn";
repo = "pcaudiolib";
rev = "4f836ea909bdaa8a6e0e89c587efc745b546b459";
sha256 = "0z99nh4ibb9md2cd21762n1dmv6jk988785s1cxd8lsy4hp4pwfa";
};
nativeBuildInputs = [ autoconf automake which libtool pkgconfig ];
buildInputs = [ portaudio alsaLib ] ++ lib.optional pulseaudioSupport libpulseaudio;
preConfigure = "./autogen.sh";
meta = with stdenv.lib; {
description = "Provides a C API to different audio devices";
homepage = "https://github.com/rhdunn/pcaudiolib";
license = licenses.gpl3;
maintainers = with maintainers; [ aske ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,25 @@
{ stdenv, fetchFromGitHub }:
stdenv.mkDerivation rec {
name = "sonic-${version}";
version = "2016-03-01";
src = fetchFromGitHub {
owner = "waywardgeek";
repo = "sonic";
rev = "71bdf26c55716a45af50c667c0335a9519e952dd";
sha256 = "1kcl8fdf92kafmfhvyjal5gvkn99brkjyzbi9gw3rd5b30m3xz2b";
};
postPatch = ''
sed -i "s,^PREFIX=.*,PREFIX=$out," Makefile
'';
meta = with stdenv.lib; {
description = "Simple library to speed up or slow down speech";
homepage = "https://github.com/waywardgeek/sonic";
license = licenses.asl20;
maintainers = with maintainers; [ aske ];
platforms = platforms.linux;
};
}

View File

@ -6,11 +6,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "speech-dispatcher-${version}"; name = "speech-dispatcher-${version}";
version = "0.8.3"; version = "0.8.5";
src = fetchurl { src = fetchurl {
url = "http://www.freebsoft.org/pub/projects/speechd/${name}.tar.gz"; url = "http://www.freebsoft.org/pub/projects/speechd/${name}.tar.gz";
sha256 = "0kqy7z4l59n2anc7xn588w4rkacig1hajx8c53qrh90ypar978ln"; sha256 = "18jlxnhlahyi6njc6l6576hfvmzivjjgfjyd2n7vvrvx9inphjrb";
}; };
buildInputs = [ intltool libtool glib dotconf libsndfile libao python3Packages.python ] buildInputs = [ intltool libtool glib dotconf libsndfile libao python3Packages.python ]

View File

@ -47,6 +47,8 @@ stdenv.mkDerivation rec {
configureFlags = with stdenv.lib; [ configureFlags = with stdenv.lib; [
"--disable-geolocation" "--disable-geolocation"
"--disable-jit" "--disable-jit"
# needed for parallel building
"--enable-dependency-tracking"
(optionalString enableIntrospection "--enable-introspection") (optionalString enableIntrospection "--enable-introspection")
] ++ optional withGtk2 [ ] ++ optional withGtk2 [
"--with-gtk=2.0" "--with-gtk=2.0"
@ -86,7 +88,6 @@ stdenv.mkDerivation rec {
(if withGtk2 then gtk2 else gtk3) (if withGtk2 then gtk2 else gtk3)
]; ];
# Still fails with transient errors in version 2.4.9. enableParallelBuilding = true;
enableParallelBuilding = false;
} }

View File

@ -5,51 +5,25 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "wlc-${version}"; name = "wlc-${version}";
version = "v0.0.3"; version = "0.0.5";
chck_repo = "https://github.com/Cloudef/chck"; src = fetchgit {
chck_rev = "fe5e2606b7242aa5d89af2ea9fd048821128d2bc"; url = "https://github.com/Cloudef/wlc";
rev = "refs/tags/v${version}";
wl_protos_repo = "git://anongit.freedesktop.org/wayland/wayland-protocols"; sha256 = "0pg95n488fjlkc8n8x1h2dh4mxb7qln6mrq906lwwqv94aks9b43";
wl_protos_rev = "0b05b70f9da245582f01581be4ca36db683682b8"; fetchSubmodules = true;
wl_protos_rev_short = "0b05b70"; };
srcs = [
(fetchFromGitHub {
owner = "Cloudef";
repo = "wlc";
rev = version;
sha256 = "0l29axg4y7qjd5hf3kgf38hkjykb4mcsjkba0zdm583kkjzdzkb2";
})
(fetchurl {
url = "${chck_repo}/archive/${chck_rev}.tar.gz";
sha256 = "ca316b544c48e837c32f08d613be42da10e0a3251e8e4488d1848b91ef92ab9e";
})
(fetchgit {
url = "${wl_protos_repo}";
rev = "${wl_protos_rev}";
sha256 = "9c1cfbb570142b2109ecef4d11b17f25e94ed2e0569f522ea56f244c60465224";
})
];
sourceRoot = "wlc-${version}-src";
postUnpack = ''
rm -rf wlc-*/lib/chck ${sourceRoot}/protos/wayland-protocols
ln -s ../../chck-${chck_rev} ${sourceRoot}/lib/chck
ln -s ../../wayland-protocols-${wl_protos_rev_short} ${sourceRoot}/protos/wayland-protocols
'';
nativeBuildInputs = [ cmake pkgconfig ]; nativeBuildInputs = [ cmake pkgconfig ];
buildInputs = [ buildInputs = [
wayland pixman libxkbcommon libinput libxcb xcbutilwm xcbutilimage mesa libdrm udev wayland pixman libxkbcommon libinput libxcb xcbutilwm xcbutilimage mesa libdrm udev
libpthreadstubs libX11 libXau libXdmcp libXext libXdamage libxshmfence libXxf86vm libX11 libXdamage systemd dbus_libs
systemd dbus_libs
]; ];
makeFlags = "PREFIX=$(out) -lchck";
installPhase = "PREFIX=$out make install"; doCheck = true;
checkTarget = "test";
meta = { meta = {
description = "A library for making a simple Wayland compositor"; description = "A library for making a simple Wayland compositor";

View File

@ -1,15 +1,18 @@
{ stdenv, composableDerivation, fetchurl, xapian, pkgconfig, zlib { stdenv, composableDerivation, fetchurl, xapian, pkgconfig, zlib
, python ? null, php ? null, ruby ? null }: , python ? null, sphinx ? null, php ? null, ruby ? null }:
assert (python != null) -> (sphinx != null);
let inherit (composableDerivation) wwf; in let inherit (composableDerivation) wwf; in
composableDerivation.composableDerivation {} rec { composableDerivation.composableDerivation {} rec {
name = "xapian-bindings-1.2.23"; name = "xapian-bindings-${version}";
version = (builtins.parseDrvName xapian.name).version;
src = fetchurl { src = fetchurl {
url = "http://oligarchy.co.uk/xapian/1.2.23/${name}.tar.xz"; url = "http://oligarchy.co.uk/xapian/${version}/${name}.tar.xz";
sha256 = "05929d9bq9df25kh2i6gk2w09w7p5qknf9cc7mrm2g46finbbd0r"; sha256 = "0lv2zblayfax4v7z3sj067b0av0phf3gc2s2d1cvkw0bkl07mv1s";
}; };
buildInputs = [ xapian pkgconfig zlib ]; buildInputs = [ xapian pkgconfig zlib ];
@ -19,7 +22,18 @@ composableDerivation.composableDerivation {} rec {
wwf { wwf {
name = "python"; name = "python";
enable = { enable = {
buildInputs = [ python ]; buildInputs = [ python sphinx ];
# Our `sphinx-build` binary is a shell wrapper around
# `sphinx-build` python code. Makefile tries to execute it
# using python2 and fails. Fixing that here.
patchPhase = ''
for a in python/Makefile* ; do
substituteInPlace $a \
--replace '$(PYTHON2) $(SPHINX_BUILD)' '$(SPHINX_BUILD)'
done
'';
# export same env vars as in pythonNew # export same env vars as in pythonNew
preConfigure = '' preConfigure = ''
export PYTHON_LIB=$out/lib/${python.libPrefix}/site-packages export PYTHON_LIB=$out/lib/${python.libPrefix}/site-packages

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "xapian-${version}"; name = "xapian-${version}";
version = "1.2.23"; version = "1.4.0";
src = fetchurl { src = fetchurl {
url = "http://oligarchy.co.uk/xapian/${version}/xapian-core-${version}.tar.xz"; url = "http://oligarchy.co.uk/xapian/${version}/xapian-core-${version}.tar.xz";
sha256 = "0z9lhvfaazzmd611bnii9a0d19sqnjs0s9vbcgjhcv8s9spax0wp"; sha256 = "0xv4da5rmqqzkkkzx2v3jwh5hz5zxhd2b7m8x30fk99a25blyn0h";
}; };
outputs = [ "out" "doc" ]; outputs = [ "out" "doc" ];

View File

@ -1,15 +1,15 @@
{ stdenv, fetchurl, pkgconfig, xapian, perl, pcre, zlib }: { stdenv, fetchurl, pkgconfig, xapian, perl, pcre, zlib, libmagic }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "xapian-omega-${version}"; name = "xapian-omega-${version}";
version = "1.2.21"; version = (builtins.parseDrvName xapian.name).version;
src = fetchurl { src = fetchurl {
url = "http://oligarchy.co.uk/xapian/${version}/xapian-omega-${version}.tar.xz"; url = "http://oligarchy.co.uk/xapian/${version}/xapian-omega-${version}.tar.xz";
sha256 = "0zjjr4ypanwrjkcpgi37d72v2jjcfwnw8lgddv0i7z2jf1fklbc6"; sha256 = "07s341m1csk4v7mc44mqrzc1nxpnmdkji9k1cirbx6q0nlshdz0h";
}; };
buildInputs = [ pkgconfig xapian perl pcre zlib ]; buildInputs = [ pkgconfig xapian perl pcre zlib libmagic ];
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Indexer and CGI search front-end built on Xapian library"; description = "Indexer and CGI search front-end built on Xapian library";

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, buildPerlPackage, DBI, sqlite }: { stdenv, fetchurl, buildPerlPackage, DBI, sqlite }:
buildPerlPackage rec { buildPerlPackage rec {
name = "DBD-SQLite-1.48"; name = "DBD-SQLite-1.50";
src = fetchurl { src = fetchurl {
url = "mirror://cpan/authors/id/I/IS/ISHIGAKI/${name}.tar.gz"; url = "mirror://cpan/authors/id/I/IS/ISHIGAKI/${name}.tar.gz";
sha256 = "19hf0fc4dlnpmxsxx3jjbh2z6d2jafgdlqhwz4irkp2cbl7j75xk"; sha256 = "1qcw2nzla03ywrl6mx1qklvbc8n5bn4gxqbjnvadfkwlffmi7i9s";
}; };
propagatedBuildInputs = [ DBI ]; propagatedBuildInputs = [ DBI ];
@ -37,7 +37,7 @@ buildPerlPackage rec {
# Disabled because the tests can randomly fail due to timeouts # Disabled because the tests can randomly fail due to timeouts
# (e.g. "database is locked(5) at dbdimp.c line 402 at t/07busy.t"). # (e.g. "database is locked(5) at dbdimp.c line 402 at t/07busy.t").
doCheck = false; #doCheck = false;
meta.platforms = stdenv.lib.platforms.unix; meta.platforms = stdenv.lib.platforms.unix;
} }

View File

@ -1,7 +1,8 @@
{ stdenv, fetchurl, python, mkPythonDerivation, pkgconfig, glib }: { stdenv, fetchurl, python, mkPythonDerivation, pkgconfig, glib }:
mkPythonDerivation rec { mkPythonDerivation rec {
name = "pygobject-2.28.6"; name = "pygobject-${version}";
version = "2.28.6";
src = fetchurl { src = fetchurl {
url = "mirror://gnome/sources/pygobject/2.28/${name}.tar.xz"; url = "mirror://gnome/sources/pygobject/2.28/${name}.tar.xz";

View File

@ -44,7 +44,7 @@ buildPythonPackage rec {
postInstall = '' postInstall = ''
rm $out/bin/pygtk-codegen-2.0 rm $out/bin/pygtk-codegen-2.0
ln -s ${pygobject}/bin/pygobject-codegen-2.0 $out/bin/pygtk-codegen-2.0 ln -s ${pygobject}/bin/pygobject-codegen-2.0 $out/bin/pygtk-codegen-2.0
ln -s ${pygobject}/lib/${python.libPrefix}/site-packages/${pygobject.name}.pth \ ln -s ${pygobject}/lib/${python.libPrefix}/site-packages/pygobject-${pygobject.version}.pth \
$out/lib/${python.libPrefix}/site-packages/${name}.pth $out/lib/${python.libPrefix}/site-packages/${name}.pth
''; '';
} }

View File

@ -14,6 +14,7 @@ in mkPythonDerivation {
configurePhase = '' configurePhase = ''
mkdir -p $out mkdir -p $out
lndir ${dbus-python} $out lndir ${dbus-python} $out
rm -rf "$out/nix-support"
export PYTHONPATH=$PYTHONPATH:$out/lib/${python.libPrefix}/site-packages export PYTHONPATH=$PYTHONPATH:$out/lib/${python.libPrefix}/site-packages

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