Merge remote-tracking branch 'upstream/master' into hardened-stdenv

This commit is contained in:
Robin Gloster 2016-07-25 12:47:13 +00:00
commit f222d98746
261 changed files with 7674 additions and 1000924 deletions

View File

@ -1,6 +1,7 @@
[<img src="http://nixos.org/logo/nixos-hires.png" width="500px" alt="logo" />](https://nixos.org/nixos)
[![Build Status](https://travis-ci.org/NixOS/nixpkgs.svg?branch=master)](https://travis-ci.org/NixOS/nixpkgs)
[![Code Triagers Badge](https://www.codetriage.com/nixos/nixpkgs/badges/users.svg)](https://www.codetriage.com/nixos/nixpkgs)
[![Issue Stats](http://www.issuestats.com/github/nixos/nixpkgs/badge/pr?style=flat)](http://www.issuestats.com/github/nixos/nixpkgs)
[![Issue Stats](http://www.issuestats.com/github/nixos/nixpkgs/badge/issue?style=flat)](http://www.issuestats.com/github/nixos/nixpkgs)

View File

@ -1319,6 +1319,25 @@ someVar=$(stripHash $name; echo $strippedName)
<envar>GST_PLUGIN_SYSTEM_PATH</envar> environment variable.</para></listitem>
</varlistentry>
<varlistentry>
<term>paxctl</term>
<listitem><para>Defines the <varname>paxmark</varname> helper for
setting per-executable PaX flags on Linux (where it is available by
default; on all other platforms, <varname>paxmark</varname> is a no-op).
For example, to disable secure memory protections on the executable
<replaceable>foo</replaceable>:
<programlisting>
postFixup = ''
paxmark m $out/bin/<replaceable>foo</replaceable>
'';
</programlisting>
The <literal>m</literal> flag is the most common flag and is typically
required for applications that employ JIT compilation or otherwise need to
execute code generated at run-time. Disabling PaX protections should be
considered a last resort: if possible, problematic features should be
disabled or patched to work with PaX.</para></listitem>
</varlistentry>
</variablelist>
</para>

View File

@ -312,6 +312,7 @@
pmiddend = "Philipp Middendorf <pmidden@secure.mailbox.org>";
prikhi = "Pavan Rikhi <pavan.rikhi@gmail.com>";
profpatsch = "Profpatsch <mail@profpatsch.de>";
proglodyte = "Proglodyte <proglodyte23@gmail.com>";
pshendry = "Paul Hendry <paul@pshendry.com>";
psibi = "Sibi <sibi@psibi.in>";
pSub = "Pascal Wittmann <mail@pascal-wittmann.de>";
@ -376,6 +377,7 @@
SShrike = "Severen Redwood <severen@shrike.me>";
stephenmw = "Stephen Weinberg <stephen@q5comm.com>";
steveej = "Stefan Junker <mail@stefanjunker.de>";
swarren83 = "Shawn Warren <shawn.w.warren@gmail.com>";
swistak35 = "Rafał Łasocha <me@swistak35.com>";
szczyp = "Szczyp <qb@szczyp.com>";
sztupi = "Attila Sztupak <attila.sztupak@gmail.com>";
@ -433,4 +435,5 @@
zimbatm = "zimbatm <zimbatm@zimbatm.com>";
zohl = "Al Zohali <zohl@fmap.me>";
zoomulator = "Kim Simmons <zoomulator@gmail.com>";
amiloradovsky = "Andrew Miloradovsky <miloradovsky@gmail.com>";
}

View File

@ -395,15 +395,20 @@ my $meta = read_meta($pkg_path);
DEBUG( "metadata: ", encode_json( $meta->as_struct ) ) if defined $meta;
my @runtime_deps = sort( uniq( get_deps( $cb, $meta, "runtime" ) ) );
INFO("runtime deps: @runtime_deps");
my @build_deps = sort( uniq(
get_deps( $cb, $meta, "configure" ),
get_deps( $cb, $meta, "build" ),
get_deps( $cb, $meta, "test" )
) );
INFO("build deps: @build_deps");
my @runtime_deps = sort( uniq( get_deps( $cb, $meta, "runtime" ) ) );
INFO("runtime deps: @runtime_deps");
# Filter out runtime dependencies since those are already handled.
my %in_runtime_deps = map { $_ => 1 } @runtime_deps;
@build_deps = grep { not $in_runtime_deps{$_} } @build_deps;
INFO("build deps: @build_deps");
my $homepage = $meta ? $meta->resources->{homepage} : undef;
INFO("homepage: $homepage") if defined $homepage;

View File

@ -7,7 +7,11 @@
<title>Imperative Container Management</title>
<para>Well cover imperative container management using
<command>nixos-container</command> first. You create a container with
<command>nixos-container</command> first.
Be aware that container management is currently only possible
as <literal>root</literal>.</para>
<para>You create a container with
identifier <literal>foo</literal> as follows:
<screen>

View File

@ -23,6 +23,7 @@ effect after you run <command>nixos-rebuild</command>.</para>
<xi:include href="x-windows.xml" />
<xi:include href="networking.xml" />
<xi:include href="linux-kernel.xml" />
<xi:include href="grsecurity.xml" />
<!-- FIXME: auto-include NixOS module docs -->
<xi:include href="postgresql.xml" />

View File

@ -0,0 +1,335 @@
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0"
xml:id="sec-grsecurity">
<title>Grsecurity/PaX</title>
<para>
Grsecurity/PaX is a set of patches against the Linux kernel that make it
harder to exploit bugs. The patchset includes protections such as
enforcement of non-executable memory, address space layout randomization,
and chroot jail hardening. These and other
<link xlink:href="https://grsecurity.net/features.php">features</link>
render entire classes of exploits inert without additional efforts on the
part of the adversary.
</para>
<para>
The NixOS grsecurity/PaX module is designed with casual users in mind and is
intended to be compatible with normal desktop usage, without unnecessarily
compromising security. The following sections describe the configuration
and administration of a grsecurity/PaX enabled NixOS system. For
more comprehensive coverage, please refer to the
<link xlink:href="https://en.wikibooks.org/wiki/Grsecurity">grsecurity wikibook</link>
and the
<link xlink:href="https://wiki.archlinux.org/index.php/Grsecurity">Arch
Linux wiki page on grsecurity</link>.
<note><para>grsecurity/PaX is only available for the latest linux -stable
kernel; patches against older kernels are available from upstream only for
a fee.</para></note>
<note><para>We standardise on a desktop oriented configuration primarily due
to lack of resources. The grsecurity/PaX configuration state space is huge
and each configuration requires quite a bit of testing to ensure that the
resulting packages work as advertised. Defining additional package sets
would likely result in a large number of functionally broken packages, to
nobody's benefit.</para></note>.
</para>
<sect1 xml:id="sec-grsec-enable"><title>Enabling grsecurity/PaX</title>
<para>
To make use of grsecurity/PaX on NixOS, add the following to your
<filename>configuration.nix</filename>:
<programlisting>
security.grsecurity.enable = true;
</programlisting>
followed by
<programlisting>
# nixos-rebuild boot
# reboot
</programlisting>
For most users, further configuration should be unnecessary. All users
are encouraged to look over <xref linkend="sec-grsec-security" /> before
using the system, however. If you experience problems, please refer to
<xref linkend="sec-grsec-issues" />.
</para>
<para>
Once booted into the new system, you can optionally use
<command>paxtest</command> to exercise various PaX features:
<screen><![CDATA[
# nix-shell -p paxtest --command 'paxtest blackhat'
Executable anonymous mapping : Killed
Executable bss : Killed
# ... remaining output truncated for brevity
]]></screen>
</para>
</sect1>
<sect1 xml:id="sec-grsec-declarative-tuning"><title>Declarative tuning</title>
<para>
The default configuration mode is strictly declarative. Some features
simply cannot be changed at all after boot, while others are locked once the
system is up and running. Moreover, changes to the configuration enter
into effect only upon booting into the new system.
</para>
<para>
The NixOS module exposes a limited number of options for tuning the behavior
of grsecurity/PaX. These are options thought to be of particular interest
to most users. For experts, further tuning is possible via
<option>boot.kernelParams</option> (see
<xref linkend="sec-grsec-kernel-params" />) and
<option>boot.kernel.sysctl."kernel.grsecurity.*"</option> (the wikibook
contains an <link xlink:href="https://en.wikibooks.org/wiki/Grsecurity/Appendix/Sysctl_Options">
exhaustive listing of grsecurity sysctl tunables</link>).
</para>
</sect1>
<sect1 xml:id="sec-grsec-manual-tuning"><title>Manual tuning</title>
<para>
To permit manual tuning of grsecurity runtime parameters, set:
<programlisting>
security.grsecurity.lockTunables = false;
</programlisting>
Once booted into this system, grsecurity features that have a corresponding
sysctl tunable can be changed without rebooting, either by switching into
a new system profile or via the <command>sysctl</command> utility.
</para>
<para>
To lock all grsecurity tunables until the next boot, do:
<screen>
# systemctl start grsec-lock
</screen>
</para>
</sect1>
<sect1 xml:id="sec-grsec-security"><title>Security considerations</title>
<para>
The NixOS kernel is built using upstream's recommended settings for a
desktop deployment that generally favours security over performance. This
section details deviations from upstream's recommendations that may
compromise operational security.
<warning><para>There may be additional problems not covered here!</para>
</warning>.
</para>
<itemizedlist>
<listitem><para>
The following hardening features are disabled in the NixOS kernel:
<itemizedlist>
<listitem><para>Kernel symbol hiding: rendered useless by redistributing
kernel objects.</para></listitem>
<listitem><para>Randomization of kernel structures: rendered useless by
redistributing kernel objects.</para></listitem>
<listitem><para>TCP simultaneous OPEN connection is permitted: breaking
strict TCP conformance is inappropriate for a general purpose kernel.
The trade-off is that an attacker may be able to deny outgoing
connections if they are able to guess the source port allocated by your
OS for that connection <emphasis>and</emphasis> also manage to initiate
a TCP simultaneous OPEN on that port before the connection is actually
established.</para></listitem>
<listitem><para><filename class="directory">/sys</filename> hardening:
breaks systemd.</para></listitem>
<listitem><para>Trusted path execution: a desirable feature, but
requires some more work to operate smoothly on NixOS.</para></listitem>
</itemizedlist>
</para></listitem>
<listitem><para>
The NixOS module conditionally weakens <command>chroot</command>
restrictions to accommodate NixOS lightweight containers and sandboxed Nix
builds. This is problematic if the deployment also runs a privileged
network facing process that <emphasis>relies</emphasis> on
<command>chroot</command> for isolation.
</para></listitem>
<listitem><para>
The NixOS kernel is patched to allow usermode helpers from anywhere in the
Nix store. A usermode helper is an executable called by the kernel in
certain circumstances, e.g., <command>modprobe</command>. Vanilla
grsecurity only allows usermode helpers from paths typically owned by the
super user. The NixOS kernel allows an attacker to inject malicious code
into the Nix store which could then be executed by the kernel as a
usermode helper.
</para></listitem>
<listitem><para>
The following features are disabled because they overlap with
vanilla kernel mechanisms:
<itemizedlist>
<listitem><para><filename class="directory">/proc</filename> hardening:
use <option>security.hideProcessInformation</option> instead. This
trades weaker protection for greater compatibility.
</para></listitem>
<listitem><para><command>dmesg</command> restrictions:
use <option>boot.kernel.sysctl."kernel.dmesg_restrict"</option> instead
</para></listitem>
</itemizedlist>
</para></listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="sec-grsec-custom-kernel"><title>Using a custom grsecurity/PaX kernel</title>
<para>
The NixOS kernel is likely to be either too permissive or too restrictive
for many deployment scenarios. In addition to producing a kernel more
suitable for a particular deployment, a custom kernel may improve security
by depriving an attacker the ability to study the kernel object code, adding
yet more guesswork to successfully carry out certain exploits.
</para>
<para>
To use a custom kernel with upstream's recommended settings for server
deployments:
<programlisting>
boot.kernelPackages =
let
kernel = pkgs.linux_grsec_nixos.override {
extraConfig = ''
GRKERNSEC y
PAX y
GRKERNSEC_CONFIG_AUTO y
GRKERNSEC_CONFIG_SERVER y
GRKERNSEC_CONFIG_SECURITY y
'';
};
self = pkgs.linuxPackagesFor kernel self;
in self;
</programlisting>
The wikibook provides an exhaustive listing of
<link xlink:href="https://en.wikibooks.org/wiki/Grsecurity/Appendix/Grsecurity_and_PaX_Configuration_Options">kernel configuration options</link>.
</para>
<para>
The NixOS module makes several assumptions about the kernel and so may be
incompatible with your customised kernel. Most of these assumptions are
encoded as assertions &#x2014; mismatches should ideally result in a build
failure. Currently, the only way to work around incompatibilities is to
eschew the NixOS module and do all configuration yourself.
</para>
</sect1>
<sect1 xml:id="sec-grsec-pax-flags"><title>Per-executable PaX flags</title>
<para>
Manual tuning of per-file PaX flags for executables in the Nix store is
impossible on a properly configured system. If a package in Nixpkgs fails
due to PaX, that is a bug in the package recipe and should be reported to
the maintainer (including relevant <command>dmesg</command> output).
</para>
<para>
For executables installed outside of the Nix store, PaX flags can be set
using the <command>paxctl</command> utility:
<programlisting>
paxctl -czem <replaceable>foo</replaceable>
</programlisting>
<warning>
<para><command>paxctl</command> overwrites files in-place.</para>
</warning>
Equivalently, on file systems that support extended attributes:
<programlisting>
setfattr -n user.pax.flags -v em <replaceable>foo</replaceable>
</programlisting>
<!-- TODO: PaX flags via RBAC policy -->
</para>
</sect1>
<sect1 xml:id="sec-grsec-issues"><title>Issues and work-arounds</title>
<itemizedlist>
<listitem><para>Virtualization: KVM is the preferred virtualization
solution. Xen, Virtualbox, and VMWare are
<emphasis>unsupported</emphasis> and most likely require a custom kernel.
</para></listitem>
<listitem><para>
Attaching <command>gdb</command> to a running process is disallowed by
default: unprivileged users can only ptrace processes that are children of
the ptracing process. To relax this restriction, set
<programlisting>
boot.kernel.sysctl."kernel.grsecurity.harden_ptrace" = 0;
</programlisting>
</para></listitem>
<listitem><para>
Overflows in boot critical code (e.g., the root filesystem module) can
render the system unbootable. Work around by setting
<programlisting>
boot.kernel.kernelParams = [ "pax_size_overflow_report_only" ];
</programlisting>
</para></listitem>
<listitem><para>
The <citerefentry><refentrytitle>modify_ldt
</refentrytitle><manvolnum>2</manvolnum></citerefentry> syscall is disabled
by default. This restriction can interfere with programs designed to run
legacy 16-bit or segmented 32-bit code. To support applications that rely
on this syscall, set
<programlisting>
boot.kernel.sysctl."kernel.modify_ldt" = 1;
</programlisting>
</para></listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="sec-grsec-kernel-params"><title>Grsecurity/PaX kernel parameters</title>
<para>
The NixOS kernel supports the following kernel command line parameters:
<itemizedlist>
<listitem><para>
<literal>pax_nouderef</literal>: disable UDEREF (separate kernel and
user address spaces).
</para></listitem>
<listitem><para>
<literal>pax_weakuderef</literal>: enable a faster but
weaker variant of UDEREF on 64-bit processors with PCID support
(check <code>grep pcid /proc/cpuinfo</code>).
</para></listitem>
<listitem><para>
<literal>pax_sanitize_slab={off|fast|full}</literal>: control kernel
slab object sanitization
</para></listitem>
<listitem><para>
<literal>pax_size_overflow_report_only</literal>: log size overflow
violations but leave the violating task running
</para></listitem>
</itemizedlist>
</para>
</sect1>
</chapter>

View File

@ -45,9 +45,14 @@ following incompatible changes:</para>
<para>Other notable improvements:</para>
<itemizedlist>
<listitem>
<para>todo</para>
</listitem>
<listitem><para>Revamped grsecurity/PaX support. There is now only a single
general-purpose distribution kernel and the configuration interface has been
streamlined. Desktop users should be able to simply set
<programlisting>security.grsecurity.enable = true</programlisting> to get
a reasonably secure system without having to sacrifice too much
functionality. See <xref linkend="sec-grsecurity" /> for documentation
</para></listitem>
</itemizedlist>

View File

@ -27,6 +27,7 @@ let
clientConf = writeText "client.conf" ''
autospawn=${if nonSystemWide then "yes" else "no"}
${optionalString nonSystemWide "daemon-binary=${cfg.package.out}/bin/pulseaudio"}
${cfg.extraClientConf}
'';
# Write an /etc/asound.conf that causes all ALSA applications to
@ -96,6 +97,14 @@ in {
'';
};
extraClientConf = mkOption {
type = types.str;
default = "";
description = ''
Extra configuration appended to pulse/client.conf file.
'';
};
package = mkOption {
type = types.package;
default = pulseaudioLight;

View File

@ -271,6 +271,8 @@
squeezelite = 248;
turnserver = 249;
smokeping = 250;
gocd-agent = 251;
gocd-server = 252;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
@ -512,6 +514,8 @@
#squeezelite = 248; #unused
turnserver = 249;
smokeping = 250;
gocd-agent = 251;
gocd-server = 252;
# When adding a gid, make sure it doesn't match an existing
# uid. Users and groups with the same name should have equal

View File

@ -130,6 +130,8 @@
./services/computing/slurm/slurm.nix
./services/continuous-integration/buildkite-agent.nix
./services/continuous-integration/hydra/default.nix
./services/continuous-integration/gocd-agent/default.nix
./services/continuous-integration/gocd-server/default.nix
./services/continuous-integration/jenkins/default.nix
./services/continuous-integration/jenkins/job-builder.nix
./services/continuous-integration/jenkins/slave.nix
@ -461,6 +463,7 @@
./services/ttys/gpm.nix
./services/ttys/kmscon.nix
./services/web-apps/pump.io.nix
./services/web-apps/tt-rss.nix
./services/web-servers/apache-httpd/default.nix
./services/web-servers/caddy.nix
./services/web-servers/fcgiwrap.nix
@ -470,7 +473,7 @@
./services/web-servers/lighttpd/gitweb.nix
./services/web-servers/lighttpd/inginious.nix
./services/web-servers/nginx/default.nix
./services/web-servers/phpfpm.nix
./services/web-servers/phpfpm/default.nix
./services/web-servers/shellinabox.nix
./services/web-servers/tomcat.nix
./services/web-servers/uwsgi.nix

View File

@ -50,11 +50,11 @@ in
(isEnabled "PAX")
(isYES "GRKERNSEC_SYSCTL")
(isYES "GRKERNSEC_SYSCTL_DISTRO")
(isNO "GRKERNSEC_NO_RBAC")
];
# Install PaX related utillities into the system profile. Eventually, we
# also want to include gradm here.
environment.systemPackages = with pkgs; [ paxctl pax-utils ];
# Install PaX related utillities into the system profile.
environment.systemPackages = with pkgs; [ gradm paxctl pax-utils ];
# Install rules for the grsec device node
services.udev.packages = [ pkgs.gradm ];

View File

@ -0,0 +1,212 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.gocd-agent;
in {
options = {
services.gocd-agent = {
enable = mkEnableOption "gocd-agent";
user = mkOption {
default = "gocd-agent";
type = types.str;
description = ''
User the Go.CD agent should execute under.
'';
};
group = mkOption {
default = "gocd-agent";
type = types.str;
description = ''
If the default user "gocd-agent" is configured then this is the primary
group of that user.
'';
};
extraGroups = mkOption {
type = types.listOf types.str;
default = [ ];
example = [ "wheel" "docker" ];
description = ''
List of extra groups that the "gocd-agent" user should be a part of.
'';
};
packages = mkOption {
default = [ pkgs.stdenv pkgs.jre config.programs.ssh.package pkgs.nix ];
type = types.listOf types.package;
description = ''
Packages to add to PATH for the Go.CD agent process.
'';
};
agentConfig = mkOption {
default = "";
type = types.str;
example = ''
agent.auto.register.resources=ant,java
agent.auto.register.environments=QA,Performance
agent.auto.register.hostname=Agent01
'';
description = ''
Agent registration configuration.
'';
};
goServer = mkOption {
default = "127.0.0.1";
type = types.str;
description = ''
Address of GoCD Server to attach the Go.CD Agent to.
'';
};
goServerPort = mkOption {
default = 8153;
type = types.int;
description = ''
Port that Go.CD Server is Listening on.
'';
};
workDir = mkOption {
default = "/var/lib/go-agent";
type = types.str;
description = ''
Specifies the working directory in which the Go.CD agent java archive resides.
'';
};
heapSize = mkOption {
default = "128m";
type = types.str;
description = ''
Specifies the java heap memory size for the Go.CD agent java process.
'';
};
maxMemory = mkOption {
default = "256m";
type = types.str;
description = ''
Specifies the java maximum memory size for the Go.CD agent java process.
'';
};
startupOptions = mkOption {
default = [
"-Xms${cfg.heapSize}"
"-Xmx${cfg.maxMemory}"
"-Djava.io.tmpdir=/tmp"
"-Dcruise.console.publish.interval=10"
"-Djava.security.egd=file:/dev/./urandom"
];
description = ''
Specifies startup command line arguments to pass to Go.CD agent
java process. Example contains debug and gcLog arguments.
'';
};
extraOptions = mkOption {
default = [ ];
example = [
"-X debug"
"-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006"
"-verbose:gc"
"-Xloggc:go-agent-gc.log"
"-XX:+PrintGCTimeStamps"
"-XX:+PrintTenuringDistribution"
"-XX:+PrintGCDetails"
"-XX:+PrintGC"
];
description = ''
Specifies additional command line arguments to pass to Go.CD agent
java process. Example contains debug and gcLog arguments.
'';
};
environment = mkOption {
default = { };
type = with types; attrsOf str;
description = ''
Additional environment variables to be passed to the Go.CD agent process.
As a base environment, Go.CD agent receives NIX_PATH from
<option>environment.sessionVariables</option>, NIX_REMOTE is set to
"daemon".
'';
};
};
};
config = mkIf cfg.enable {
users.extraGroups = optional (cfg.group == "gocd-agent") {
name = "gocd-agent";
gid = config.ids.gids.gocd-agent;
};
users.extraUsers = optional (cfg.user == "gocd-agent") {
name = "gocd-agent";
description = "gocd-agent user";
createHome = true;
home = cfg.workDir;
group = cfg.group;
extraGroups = cfg.extraGroups;
useDefaultShell = true;
uid = config.ids.uids.gocd-agent;
};
systemd.services.gocd-agent = {
description = "GoCD Agent";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
environment =
let
selectedSessionVars =
lib.filterAttrs (n: v: builtins.elem n [ "NIX_PATH" ])
config.environment.sessionVariables;
in
selectedSessionVars //
{
NIX_REMOTE = "daemon";
AGENT_WORK_DIR = cfg.workDir;
AGENT_STARTUP_ARGS = ''${concatStringsSep " " cfg.startupOptions}'';
LOG_DIR = cfg.workDir;
LOG_FILE = "${cfg.workDir}/go-agent-start.log";
} //
cfg.environment;
path = cfg.packages;
script = ''
MPATH="''${PATH}";
source /etc/profile
export PATH="''${MPATH}:''${PATH}";
if ! test -f ~/.nixpkgs/config.nix; then
mkdir -p ~/.nixpkgs/
echo "{ allowUnfree = true; }" > ~/.nixpkgs/config.nix
fi
mkdir -p config
rm -f config/autoregister.properties
ln -s "${pkgs.writeText "autoregister.properties" cfg.agentConfig}" config/autoregister.properties
${pkgs.git}/bin/git config --global --add http.sslCAinfo /etc/ssl/certs/ca-certificates.crt
${pkgs.jre}/bin/java ${concatStringsSep " " cfg.startupOptions} \
${concatStringsSep " " cfg.extraOptions} \
-jar ${pkgs.gocd-agent}/go-agent/agent-bootstrapper.jar \
${cfg.goServer} \
${toString cfg.goServerPort}
'';
serviceConfig = {
User = cfg.user;
WorkingDirectory = cfg.workDir;
};
};
};
}

View File

@ -0,0 +1,183 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.gocd-server;
in {
options = {
services.gocd-server = {
enable = mkEnableOption "gocd-server";
user = mkOption {
default = "gocd-server";
type = types.str;
description = ''
User the Go.CD server should execute under.
'';
};
group = mkOption {
default = "gocd-server";
type = types.str;
description = ''
If the default user "gocd-server" is configured then this is the primary group of that user.
'';
};
extraGroups = mkOption {
default = [ ];
example = [ "wheel" "docker" ];
description = ''
List of extra groups that the "gocd-server" user should be a part of.
'';
};
listenAddress = mkOption {
default = "0.0.0.0";
example = "localhost";
type = types.str;
description = ''
Specifies the bind address on which the Go.CD server HTTP interface listens.
'';
};
port = mkOption {
default = 8153;
type = types.int;
description = ''
Specifies port number on which the Go.CD server HTTP interface listens.
'';
};
sslPort = mkOption {
default = 8154;
type = types.int;
description = ''
Specifies port number on which the Go.CD server HTTPS interface listens.
'';
};
workDir = mkOption {
default = "/var/lib/go-server";
type = types.str;
description = ''
Specifies the working directory in which the Go.CD server java archive resides.
'';
};
packages = mkOption {
default = [ pkgs.stdenv pkgs.jre config.programs.ssh.package pkgs.nix ];
type = types.listOf types.package;
description = ''
Packages to add to PATH for the Go.CD server's process.
'';
};
heapSize = mkOption {
default = "512m";
type = types.str;
description = ''
Specifies the java heap memory size for the Go.CD server's java process.
'';
};
maxMemory = mkOption {
default = "1024m";
type = types.str;
description = ''
Specifies the java maximum memory size for the Go.CD server's java process.
'';
};
extraOptions = mkOption {
default = [
"-Xms${cfg.heapSize}"
"-Xmx${cfg.maxMemory}"
"-Dcruise.listen.host=${cfg.listenAddress}"
"-Duser.language=en"
"-Djruby.rack.request.size.threshold.bytes=30000000"
"-Duser.country=US"
"-Dcruise.config.dir=${cfg.workDir}/conf"
"-Dcruise.config.file=${cfg.workDir}/conf/cruise-config.xml"
"-Dcruise.server.port=${toString cfg.port}"
"-Dcruise.server.ssl.port=${toString cfg.sslPort}"
];
example = [
"-X debug"
"-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
"-verbose:gc"
"-Xloggc:go-server-gc.log"
"-XX:+PrintGCTimeStamps"
"-XX:+PrintTenuringDistribution"
"-XX:+PrintGCDetails"
"-XX:+PrintGC"
];
description = ''
Specifies additional command line arguments to pass to Go.CD server's
java process. Example contains debug and gcLog arguments.
'';
};
environment = mkOption {
default = { };
type = with types; attrsOf str;
description = ''
Additional environment variables to be passed to the gocd-server process.
As a base environment, gocd-server receives NIX_PATH from
<option>environment.sessionVariables</option>, NIX_REMOTE is set to
"daemon".
'';
};
};
};
config = mkIf cfg.enable {
users.extraGroups = optional (cfg.group == "gocd-server") {
name = "gocd-server";
gid = config.ids.gids.gocd-server;
};
users.extraUsers = optional (cfg.user == "gocd-server") {
name = "gocd-server";
description = "gocd-server user";
createHome = true;
home = cfg.workDir;
group = cfg.group;
extraGroups = cfg.extraGroups;
useDefaultShell = true;
uid = config.ids.uids.gocd-server;
};
systemd.services.gocd-server = {
description = "GoCD Server";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
environment =
let
selectedSessionVars =
lib.filterAttrs (n: v: builtins.elem n [ "NIX_PATH" ])
config.environment.sessionVariables;
in
selectedSessionVars //
{ NIX_REMOTE = "daemon";
} //
cfg.environment;
path = cfg.packages;
script = ''
${pkgs.git}/bin/git config --global --add http.sslCAinfo /etc/ssl/certs/ca-certificates.crt
${pkgs.jre}/bin/java -server ${concatStringsSep " " cfg.extraOptions} \
-jar ${pkgs.gocd-server}/go-server/go.jar
'';
serviceConfig = {
User = cfg.user;
Group = cfg.group;
WorkingDirectory = cfg.workDir;
};
};
};
}

View File

@ -128,6 +128,10 @@ in
description = "Hostname of the MySQL master server";
};
slaveHost = mkOption {
description = "Hostname of the MySQL slave server";
};
masterUser = mkOption {
description = "Username of the MySQL replication user";
};
@ -231,10 +235,21 @@ in
fi
'') cfg.initialDatabases}
${optionalString (cfg.replication.role == "slave" && atLeast55)
${optionalString (cfg.replication.role == "master" && atLeast55)
''
# Set up the replication master
( echo "use mysql;"
echo "CREATE USER '${cfg.replication.masterUser}'@'${cfg.replication.slaveHost}' IDENTIFIED WITH mysql_native_password;"
echo "SET PASSWORD FOR '${cfg.replication.masterUser}'@'${cfg.replication.slaveHost}' = PASSWORD('${cfg.replication.masterPassword}');"
echo "GRANT REPLICATION SLAVE ON *.* TO '${cfg.replication.masterUser}'@'${cfg.replication.slaveHost}';"
) | ${mysql}/bin/mysql -u root -N
''}
${optionalString (cfg.replication.role == "slave" && atLeast55)
''
# Set up the replication slave
( echo "stop slave;"
echo "change master to master_host='${cfg.replication.masterHost}', master_user='${cfg.replication.masterUser}', master_password='${cfg.replication.masterPassword}';"
echo "start slave;"

View File

@ -9,6 +9,7 @@ let
header = {
description = "Syncthing service";
after = [ "network.target" ];
environment = {
STNORESTART = "yes";
STNOUPGRADE = "yes";
@ -113,9 +114,8 @@ in
environment.systemPackages = [ cfg.package ];
systemd.services = mkIf cfg.systemService {
syncthing = header // {
after = [ "network.target" ];
systemd.services.syncthing = mkIf cfg.systemService
header // {
wantedBy = [ "multi-user.target" ];
serviceConfig = service // {
User = cfg.user;
@ -124,14 +124,14 @@ in
ExecStart = "${cfg.package}/bin/syncthing -no-browser -home=${cfg.dataDir}";
};
};
};
systemd.user.services = {
syncthing = header // {
systemd.user.services.syncthing =
header // {
wantedBy = [ "default.target" ];
serviceConfig = service // {
ExecStart = "${cfg.package}/bin/syncthing -no-browser";
};
};
};
};
}

View File

@ -26,6 +26,10 @@ in
KillMode = "process";
};
};
environment.systemPackages = [ pkgs.zerotierone ];
# ZeroTier does not issue DHCP leases, but some strangers might...
networking.dhcpcd.denyInterfaces = [ "zt0" ];
environment.systemPackages = [ pkgs.zerotierone ];
};
}

View File

@ -0,0 +1,569 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.tt-rss;
configVersion = 26;
boolToString = b: if b then "true" else "false";
cacheDir = "cache";
lockDir = "lock";
feedIconsDir = "feed-icons";
dbPort = if cfg.database.port == null
then (if cfg.database.type == "pgsql" then 5432 else 3306)
else cfg.database.port;
poolName = "tt-rss";
virtualHostName = "tt-rss";
tt-rss-config = pkgs.writeText "config.php" ''
<?php
define('PHP_EXECUTABLE', '${pkgs.php}/bin/php');
define('LOCK_DIRECTORY', '${lockDir}');
define('CACHE_DIR', '${cacheDir}');
define('ICONS_DIR', '${feedIconsDir}');
define('ICONS_URL', '${feedIconsDir}');
define('SELF_URL_PATH', '${cfg.selfUrlPath}');
define('MYSQL_CHARSET', 'UTF8');
define('DB_TYPE', '${cfg.database.type}');
define('DB_HOST', '${cfg.database.host}');
define('DB_USER', '${cfg.database.user}');
define('DB_NAME', '${cfg.database.name}');
define('DB_PASS', '${escape ["'" "\\"] cfg.database.password}');
define('DB_PORT', '${toString dbPort}');
define('AUTH_AUTO_CREATE', ${boolToString cfg.auth.autoCreate});
define('AUTH_AUTO_LOGIN', ${boolToString cfg.auth.autoLogin});
define('FEED_CRYPT_KEY', '${escape ["'" "\\"] cfg.feedCryptKey}');
define('SINGLE_USER_MODE', ${boolToString cfg.singleUserMode});
define('SIMPLE_UPDATE_MODE', ${boolToString cfg.simpleUpdateMode});
define('CHECK_FOR_UPDATES', ${boolToString cfg.checkForUpdates});
define('FORCE_ARTICLE_PURGE', ${toString cfg.forceArticlePurge});
define('SESSION_COOKIE_LIFETIME', ${toString cfg.sessionCookieLifetime});
define('ENABLE_GZIP_OUTPUT', ${boolToString cfg.enableGZipOutput});
define('PLUGINS', '${builtins.concatStringsSep "," cfg.plugins}');
define('LOG_DESTINATION', '${cfg.logDestination}');
define('CONFIG_VERSION', ${toString configVersion});
define('PUBSUBHUBBUB_ENABLED', ${boolToString cfg.pubSubHubbub.enable});
define('PUBSUBHUBBUB_HUB', '${cfg.pubSubHubbub.hub}');
define('SPHINX_SERVER', '${cfg.sphinx.server}');
define('SPHINX_INDEX', '${builtins.concatStringsSep "," cfg.sphinx.index}');
define('ENABLE_REGISTRATION', ${boolToString cfg.registration.enable});
define('REG_NOTIFY_ADDRESS', '${cfg.registration.notifyAddress}');
define('REG_MAX_USERS', ${toString cfg.registration.maxUsers});
define('SMTP_SERVER', '${cfg.email.server}');
define('SMTP_LOGIN', '${cfg.email.login}');
define('SMTP_PASSWORD', '${escape ["'" "\\"] cfg.email.password}');
define('SMTP_SECURE', '${cfg.email.security}');
define('SMTP_FROM_NAME', '${escape ["'" "\\"] cfg.email.fromName}');
define('SMTP_FROM_ADDRESS', '${escape ["'" "\\"] cfg.email.fromAddress}');
define('DIGEST_SUBJECT', '${escape ["'" "\\"] cfg.email.digestSubject}');
'';
in {
###### interface
options = {
services.tt-rss = {
enable = mkEnableOption "tt-rss";
user = mkOption {
type = types.str;
default = "nginx";
example = "nginx";
description = ''
User account under which both the service and the web-application run.
'';
};
pool = mkOption {
type = types.str;
default = "${poolName}";
description = ''
Name of existing phpfpm pool that is used to run web-application.
If not specified a pool will be created automatically with
default values.
'';
};
# TODO: Re-enable after https://github.com/NixOS/nixpkgs/pull/15862 is merged
# virtualHost = mkOption {
# type = types.str;
# default = "${virtualHostName}";
# description = ''
# Name of existing nginx virtual host that is used to run web-application.
# If not specified a host will be created automatically with
# default values.
# '';
# };
database = {
type = mkOption {
type = types.enum ["pgsql" "mysql"];
default = "pgsql";
description = ''
Database to store feeds. Supported are pgsql and mysql.
'';
};
host = mkOption {
type = types.str;
default = "localhost";
description = ''
Host of the database.
'';
};
name = mkOption {
type = types.str;
default = "tt_rss";
description = ''
Name of the existing database.
'';
};
user = mkOption {
type = types.str;
default = "tt_rss";
description = ''
The database user. The user must exist and has access to
the specified database.
'';
};
password = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
The database user's password.
'';
};
port = mkOption {
type = types.nullOr types.int;
default = null;
description = ''
The database's port. If not set, the default ports will be provided (5432
and 3306 for pgsql and mysql respectively).
'';
};
};
auth = {
autoCreate = mkOption {
type = types.bool;
default = true;
description = ''
Allow authentication modules to auto-create users in tt-rss internal
database when authenticated successfully.
'';
};
autoLogin = mkOption {
type = types.bool;
default = true;
description = ''
Automatically login user on remote or other kind of externally supplied
authentication, otherwise redirect to login form as normal.
If set to true, users won't be able to set application language
and settings profile.
'';
};
};
pubSubHubbub = {
hub = mkOption {
type = types.str;
default = "";
description = ''
URL to a PubSubHubbub-compatible hub server. If defined, "Published
articles" generated feed would automatically become PUSH-enabled.
'';
};
enable = mkOption {
type = types.bool;
default = false;
description = ''
Enable client PubSubHubbub support in tt-rss. When disabled, tt-rss
won't try to subscribe to PUSH feed updates.
'';
};
};
sphinx = {
server = mkOption {
type = types.str;
default = "localhost:9312";
description = ''
Hostname:port combination for the Sphinx server.
'';
};
index = mkOption {
type = types.listOf types.str;
default = ["ttrss" "delta"];
description = ''
Index names in Sphinx configuration. Example configuration
files are available on tt-rss wiki.
'';
};
};
registration = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Allow users to register themselves. Please be aware that allowing
random people to access your tt-rss installation is a security risk
and potentially might lead to data loss or server exploit. Disabled
by default.
'';
};
notifyAddress = mkOption {
type = types.str;
default = "";
description = ''
Email address to send new user notifications to.
'';
};
maxUsers = mkOption {
type = types.int;
default = 0;
description = ''
Maximum amount of users which will be allowed to register on this
system. 0 - no limit.
'';
};
};
email = {
server = mkOption {
type = types.str;
default = "";
example = "localhost:25";
description = ''
Hostname:port combination to send outgoing mail. Blank - use system
MTA.
'';
};
login = mkOption {
type = types.str;
default = "";
description = ''
SMTP authentication login used when sending outgoing mail.
'';
};
password = mkOption {
type = types.str;
default = "";
description = ''
SMTP authentication password used when sending outgoing mail.
'';
};
security = mkOption {
type = types.enum ["" "ssl" "tls"];
default = "";
description = ''
Used to select a secure SMTP connection. Allowed values: ssl, tls,
or empty.
'';
};
fromName = mkOption {
type = types.str;
default = "Tiny Tiny RSS";
description = ''
Name for sending outgoing mail. This applies to password reset
notifications, digest emails and any other mail.
'';
};
fromAddress = mkOption {
type = types.str;
default = "";
description = ''
Address for sending outgoing mail. This applies to password reset
notifications, digest emails and any other mail.
'';
};
digestSubject = mkOption {
type = types.str;
default = "[tt-rss] New headlines for last 24 hours";
description = ''
Subject line for email digests.
'';
};
};
sessionCookieLifetime = mkOption {
type = types.int;
default = 86400;
description = ''
Default lifetime of a session (e.g. login) cookie. In seconds,
0 means cookie will be deleted when browser closes.
'';
};
selfUrlPath = mkOption {
type = types.str;
description = ''
Full URL of your tt-rss installation. This should be set to the
location of tt-rss directory, e.g. http://example.org/tt-rss/
You need to set this option correctly otherwise several features
including PUSH, bookmarklets and browser integration will not work properly.
'';
example = "http://localhost";
};
feedCryptKey = mkOption {
type = types.str;
default = "";
description = ''
Key used for encryption of passwords for password-protected feeds
in the database. A string of 24 random characters. If left blank, encryption
is not used. Requires mcrypt functions.
Warning: changing this key will make your stored feed passwords impossible
to decrypt.
'';
};
singleUserMode = mkOption {
type = types.bool;
default = true;
description = ''
Operate in single user mode, disables all functionality related to
multiple users and authentication. Enabling this assumes you have
your tt-rss directory protected by other means (e.g. http auth).
'';
};
simpleUpdateMode = mkOption {
type = types.bool;
default = false;
description = ''
Enables fallback update mode where tt-rss tries to update feeds in
background while tt-rss is open in your browser.
If you don't have a lot of feeds and don't want to or can't run
background processes while not running tt-rss, this method is generally
viable to keep your feeds up to date.
Still, there are more robust (and recommended) updating methods
available, you can read about them here: http://tt-rss.org/wiki/UpdatingFeeds
'';
};
forceArticlePurge = mkOption {
type = types.int;
default = 0;
description = ''
When this option is not 0, users ability to control feed purging
intervals is disabled and all articles (which are not starred)
older than this amount of days are purged.
'';
};
checkForUpdates = mkOption {
type = types.bool;
default = true;
description = ''
Check for updates automatically if running Git version
'';
};
enableGZipOutput = mkOption {
type = types.bool;
default = true;
description = ''
Selectively gzip output to improve wire performance. This requires
PHP Zlib extension on the server.
Enabling this can break tt-rss in several httpd/php configurations,
if you experience weird errors and tt-rss failing to start, blank pages
after login, or content encoding errors, disable it.
'';
};
plugins = mkOption {
type = types.listOf types.str;
default = ["auth_internal" "note"];
description = ''
List of plugins to load automatically for all users.
System plugins have to be specified here. Please enable at least one
authentication plugin here (auth_*).
Users may enable other user plugins from Preferences/Plugins but may not
disable plugins specified in this list.
Disabling auth_internal in this list would automatically disable
reset password link on the login form.
'';
};
logDestination = mkOption {
type = types.enum ["" "sql" "syslog"];
default = "sql";
description = ''
Log destination to use. Possible values: sql (uses internal logging
you can read in Preferences -> System), syslog - logs to system log.
Setting this to blank uses PHP logging (usually to http server
error.log).
'';
};
};
};
###### implementation
config = let
root = "/var/lib/tt-rss";
in mkIf cfg.enable {
services.phpfpm.pools = if cfg.pool == "${poolName}" then {
"${poolName}" = {
listen = "/var/run/phpfpm/${poolName}.sock";
extraConfig = ''
listen.owner = nginx
listen.group = nginx
listen.mode = 0600
user = nginx
pm = dynamic
pm.max_children = 75
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500
catch_workers_output = 1
'';
};
} else {};
# TODO: Re-enable after https://github.com/NixOS/nixpkgs/pull/15862 is merged
# services.nginx.virtualHosts = if cfg.virtualHost == "${virtualHostName}" then {
# "${virtualHostName}" = {
# root = "${root}";
# extraConfig = ''
# access_log /var/log/nginx-${virtualHostName}-access.log;
# error_log /var/log/nginx-${virtualHostName}-error.log;
# '';
# locations."/" = {
# extraConfig = ''
# index index.php;
# '';
# };
# locations."~ \.php$" = {
# extraConfig = ''
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# fastcgi_pass unix:${config.services.phpfpm.pools."${cfg.pool}".listen};
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME ${root}/$fastcgi_script_name;
# include ${pkgs.nginx}/conf/fastcgi_params;
# '';
# };
# };
# } else {};
systemd.services.tt-rss = let
dbService = if cfg.database.type == "pgsql" then "postgresql.service" else "mysql.service";
in {
description = "Tiny Tiny RSS feeds update daemon";
preStart = let
callSql = if cfg.database.type == "pgsql" then (e: ''
${optionalString (cfg.database.password != null)
"PGPASSWORD=${cfg.database.password}"} ${pkgs.postgresql95}/bin/psql \
-U ${cfg.database.user} \
-h ${cfg.database.host} \
--port ${toString dbPort} \
-c '${e}' \
${cfg.database.name}'')
else if cfg.database.type == "mysql" then (e: ''
echo '${e}' | ${pkgs.mysql}/bin/mysql \
${optionalString (cfg.database.password != null)
"-p${cfg.database.password}"} \
-u ${cfg.database.user} \
-h ${cfg.database.host} \
-P ${toString dbPort} \
${cfg.database.name}'')
else "";
in ''
rm -rf "${root}/*"
mkdir -m 755 -p "${root}"
cp -r "${pkgs.tt-rss}/"* "${root}"
ln -sf "${tt-rss-config}" "${root}/config.php"
chown -R "${cfg.user}" "${root}"
chmod -R 755 "${root}"
'' + (optionalString (cfg.database.type == "pgsql") ''
exists=$(${callSql "select count(*) > 0 from pg_tables where tableowner = user"} \
| tail -n+3 | head -n-2 | sed -e 's/[ \n\t]*//')
if [ "$exists" == 'f' ]; then
${callSql "\\i ${pkgs.tt-rss}/schema/ttrss_schema_${cfg.database.type}.sql"}
else
echo 'The database contains some data. Leaving it as it is.'
fi;
'') + (optionalString (cfg.database.type == "mysql") ''
exists=$(${callSql "select count(*) > 0 from information_schema.tables where table_schema = schema()"} \
| tail -n+2 | sed -e 's/[ \n\t]*//')
if [ "$exists" == '0' ]; then
${callSql "\\. ${pkgs.tt-rss}/schema/ttrss_schema_${cfg.database.type}.sql"}
else
echo 'The database contains some data. Leaving it as it is.'
fi;
'');
serviceConfig = {
User = "${cfg.user}";
ExecStart = "${pkgs.php}/bin/php /var/lib/tt-rss/update.php --daemon";
StandardOutput = "syslog";
StandardError = "syslog";
PermissionsStartOnly = true;
};
wantedBy = [ "multi-user.target" ];
requires = ["${dbService}"];
after = ["network.target" "${dbService}"];
};
};
}

View File

@ -9,6 +9,12 @@ let
pidFile = "${stateDir}/phpfpm.pid";
mkPool = n: p: ''
[${n}]
listen = ${p.listen}
${p.extraConfig}
'';
cfgFile = pkgs.writeText "phpfpm.conf" ''
[global]
pid = ${pidFile}
@ -16,7 +22,7 @@ let
daemonize = yes
${cfg.extraConfig}
${concatStringsSep "\n" (mapAttrsToList (n: v: "[${n}]\n${v}") cfg.poolConfigs)}
${concatStringsSep "\n" (mapAttrsToList mkPool cfg.pools)}
'';
phpIni = pkgs.writeText "php.ini" ''
@ -61,33 +67,19 @@ in {
"Options appended to the PHP configuration file <filename>php.ini</filename>.";
};
poolConfigs = mkOption {
type = types.attrsOf types.lines;
pools = mkOption {
type = types.attrsOf (types.submodule (import ./pool-options.nix {
inherit lib;
}));
default = {};
example = literalExample ''
{ mypool = '''
listen = /run/phpfpm/mypool
user = nobody
pm = dynamic
pm.max_children = 75
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500
''';
}
'';
description = ''
A mapping between PHP FPM pool names and their configurations.
See the documentation on <literal>php-fpm.conf</literal> for
details on configuration directives. If no pools are defined,
the phpfpm service is disabled.
If no pools are defined, the phpfpm service is disabled.
'';
};
};
};
config = mkIf (cfg.poolConfigs != {}) {
config = mkIf (cfg.pools != {}) {
systemd.services.phpfpm = {
wantedBy = [ "multi-user.target" ];

View File

@ -0,0 +1,35 @@
{ lib }:
with lib; {
options = {
listen = mkOption {
type = types.str;
example = "/path/to/unix/socket";
description = ''
The address on which to accept FastCGI requests.
'';
};
extraConfig = mkOption {
type = types.lines;
example = ''
user = nobody
pm = dynamic
pm.max_children = 75
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500
'';
description = ''
Extra lines that go into the pool configuration.
See the documentation on <literal>php-fpm.conf</literal> for
details on configuration directives.
'';
};
};
}

View File

@ -7,7 +7,7 @@ let
makeColor = n: value: "COLOR_${toString n}=${value}";
makeColorCS =
let positions = [ "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E" "F" ];
in n: value: "\033]P${elemAt position n}${value}";
in n: value: "\\033]P${elemAt positions (n - 1)}${value}";
colors = concatImapStringsSep "\n" makeColor config.i18n.consoleColors;
isUnicode = hasSuffix "UTF-8" (toUpper config.i18n.defaultLocale);

View File

@ -64,7 +64,7 @@ in rec {
(all nixos.tests.installer.btrfsSubvols)
(all nixos.tests.installer.btrfsSubvolDefault)
(all nixos.tests.boot.biosCdrom)
(all nixos.tests.boot.biosUsb)
#(all nixos.tests.boot.biosUsb) # disabled due to issue #15690
(all nixos.tests.boot.uefiCdrom)
(all nixos.tests.boot.uefiUsb)
(all nixos.tests.boot-stage1)

View File

@ -228,6 +228,8 @@ in rec {
tests.firewall = callTest tests/firewall.nix {};
tests.fleet = hydraJob (import tests/fleet.nix { system = "x86_64-linux"; });
#tests.gitlab = callTest tests/gitlab.nix {};
tests.gocd-agent = callTest tests/gocd-agent.nix {};
tests.gocd-server = callTest tests/gocd-server.nix {};
tests.gnome3 = callTest tests/gnome3.nix {};
tests.gnome3-gdm = callTest tests/gnome3-gdm.nix {};
tests.grsecurity = callTest tests/grsecurity.nix {};

View File

@ -0,0 +1,34 @@
# verifies:
# 1. GoCD agent starts
# 2. GoCD agent responds
# 3. GoCD agent is available on GoCD server using GoCD API
# 3.1. https://api.go.cd/current/#get-all-agents
import ./make-test.nix ({ pkgs, ...} : {
name = "gocd-agent";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ swarren83 ];
};
nodes = {
gocd_agent =
{ config, pkgs, ... }:
{
virtualisation.memorySize = 2048;
services.gocd-agent = {
enable = true;
};
services.gocd-server = {
enable = true;
};
};
};
testScript = ''
startAll;
$gocd_agent->waitForUnit("gocd-server");
$gocd_agent->waitForOpenPort("8153");
$gocd_agent->waitForUnit("gocd-agent");
$gocd_agent->waitUntilSucceeds("curl -s -f localhost:8153/go/api/agents -H 'Accept: application/vnd.go.cd.v2+json'");
'';
})

View File

@ -0,0 +1,28 @@
# verifies:
# 1. GoCD server starts
# 2. GoCD server responds
import ./make-test.nix ({ pkgs, ...} :
{
name = "gocd-server";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ swarren83 ];
};
nodes = {
gocd_server =
{ config, pkgs, ... }:
{
virtualisation.memorySize = 2048;
services.gocd-server.enable = true;
};
};
testScript = ''
$gocd_server->start;
$gocd_server->waitForUnit("gocd-server");
$gocd_server->waitForOpenPort("8153");
$gocd_server->waitUntilSucceeds("curl -s -f localhost:8153/go");
'';
})

View File

@ -9,7 +9,6 @@ import ./make-test.nix ({ pkgs, ...} : {
machine = { config, pkgs, ... }:
{ security.grsecurity.enable = true;
boot.kernel.sysctl."kernel.grsecurity.deter_bruteforce" = 0;
security.apparmor.enable = true;
};
testScript = ''
@ -33,9 +32,15 @@ import ./make-test.nix ({ pkgs, ...} : {
$machine->succeed("${pkgs.paxtest}/lib/paxtest/mprotstack") =~ /Killed/ or die;
};
# tcc -run executes run-time generated code and so allows us to test whether
# paxmark actually works (otherwise, the process should be terminated)
subtest "tcc", sub {
$machine->execute("echo -e '#include <stdio.h>\nint main(void) { puts(\"hello\"); return 0; }' >main.c");
$machine->succeed("${pkgs.tinycc.bin}/bin/tcc -run main.c");
};
subtest "RBAC", sub {
$machine->succeed("[ -c /dev/grsec ]");
};
'';
})

View File

@ -19,12 +19,10 @@ in
services.mysql.enable = true;
services.mysql.package = pkgs.mysql;
services.mysql.replication.role = "master";
services.mysql.replication.slaveHost = "%";
services.mysql.replication.masterUser = replicateUser;
services.mysql.replication.masterPassword = replicatePassword;
services.mysql.initialDatabases = [ { name = "testdb"; schema = ./testdb.sql; } ];
services.mysql.initialScript = pkgs.writeText "initmysql"
''
create user '${replicateUser}'@'%' identified by '${replicatePassword}';
grant replication slave on *.* to '${replicateUser}'@'%';
'';
networking.firewall.allowedTCPPorts = [ 3306 ];
};
@ -56,10 +54,11 @@ in
};
testScript = ''
startAll;
$master->waitForUnit("mysql");
$master->start;
$master->waitForUnit("mysql");
$slave1->start;
$slave2->start;
$slave1->waitForUnit("mysql");
$slave2->waitForUnit("mysql");
$slave2->sleep(100); # Hopefully this is long enough!!
$slave2->succeed("echo 'use testdb; select * from tests' | mysql -u root -N | grep 4");

View File

@ -10,7 +10,6 @@ import ./make-test.nix ({ pkgs, ...} : {
{
services.mysql.enable = true;
services.mysql.replication.role = "master";
services.mysql.initialDatabases = [ { name = "testdb"; schema = ./testdb.sql; } ];
services.mysql.package = pkgs.mysql;
};

View File

@ -2,10 +2,10 @@
stdenv.mkDerivation rec {
name = "ponymix-${version}";
version = "4";
version = "5";
src = fetchurl {
url = "http://code.falconindy.com/archive/ponymix/${name}.tar.xz";
sha256 = "008pk3sqc8955k2f502z1syzv43a4q0yk5ws69lgpqfsy1mzki2d";
sha256 = "0qn2kms9h9b7da2xzkdgzrykhhdywr4psxnz03j8rg7wa9nwfw0x";
};
buildInputs = [ libpulseaudio libnotify ];

View File

@ -2,15 +2,15 @@
libharu, opencv, vigra, postgresql }:
stdenv.mkDerivation rec {
name = "saga-2.2.2";
name = "saga-2.3.1";
buildInputs = [ gdal wxGTK30 proj libharu opencv vigra postgresql libiodbc lzma jasper ];
enableParallelBuilding = true;
src = fetchurl {
url = "mirror://sourceforge/project/saga-gis/SAGA%20-%202.2/SAGA%202.2.2/saga-2.2.2.tar.gz";
sha256 = "031cd70b7ec248f32f955a9316aefc7f7ab283c5129c49aa4bd748717d20357e";
url = "mirror://sourceforge/project/saga-gis/SAGA%20-%202.3/SAGA%202.3.1/saga_2.3.1.tar.gz";
sha256 = "1h4zkfid9z02mqm1f8az9j0pzmm95f83ra57c4r7bvrrz21w3xaq";
};
meta = {

View File

@ -0,0 +1,22 @@
{ stdenv, fetchurl, pkgconfig, openexr, libpng12, libjpeg }:
stdenv.mkDerivation rec {
name = "exrtools";
version = "0.4";
src = fetchurl {
url = "http://scanline.ca/exrtools/${name}-${version}.tar.gz";
sha256 = "0jpkskqs1yjiighab4s91jy0c0qxcscwadfn94xy2mm2bx2qwp4z";
};
buildInputs = [ stdenv pkgconfig openexr libpng12 libjpeg ];
meta = with stdenv.lib; {
description = "Collection of utilities for manipulating OpenEXR images";
homepage = "http://scanline.ca/exrtools";
platforms = platforms.linux;
license = licenses.mit;
maintainers = [ maintainers.juliendehos ];
};
}

View File

@ -1,19 +1,19 @@
{ fetchurl, stdenv, m4, glibc, gtk3, libexif, libgphoto2, libsoup, libxml2, vala, sqlite
, webkitgtk, pkgconfig, gnome3, gst_all_1, which, udev, libgudev, libraw, glib, json_glib
, gettext, desktop_file_utils, lcms2, gdk_pixbuf, librsvg, makeWrapper
, gnome_doc_utils, hicolor_icon_theme }:
, gnome_doc_utils, hicolor_icon_theme, itstool }:
# for dependencies see http://www.yorba.org/projects/shotwell/install/
stdenv.mkDerivation rec {
version = "${major}.${minor}";
major = "0.23";
minor = "2";
minor = "4";
name = "shotwell-${version}";
src = fetchurl {
url = "mirror://gnome/sources/shotwell/${major}/${name}.tar.xz";
sha256 = "d52caae4e3204f2f78e2eb828d955848ea6fef5c91d3ac6e9eb0b185c0490b39";
sha256 = "1hnl0lxibklmr1cy95ij1b3jgvdsw4zlcja53ngfxvlsi2r2bbxi";
};
NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/glib-2.0 -I${glib.out}/lib/glib-2.0/include";
@ -24,11 +24,6 @@ stdenv.mkDerivation rec {
patchShebangs .
'';
postInstall = ''
mkdir -p $out/share/gsettings-schemas/$name
mv $out/share/glib-2.0 $out/share/gsettings-schemas/$name/
'';
preFixup = ''
wrapProgram "$out/bin/shotwell" \
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
@ -42,7 +37,7 @@ stdenv.mkDerivation rec {
which udev libgudev gnome3.gexiv2 hicolor_icon_theme
libraw json_glib gettext desktop_file_utils glib lcms2 gdk_pixbuf librsvg
makeWrapper gnome_doc_utils gnome3.rest
gnome3.defaultIconTheme ];
gnome3.defaultIconTheme itstool ];
meta = with stdenv.lib; {
description = "Popular photo organizer for the GNOME desktop";

View File

@ -2,14 +2,14 @@
stdenv.mkDerivation rec {
pname = "emem";
version = "0.2.18";
version = "0.2.23";
name = "${pname}-${version}";
inherit jdk;
src = fetchurl {
url = "https://github.com/ebzzry/${pname}/releases/download/v${version}/${pname}.jar";
sha256 = "090sd1q345xlari267j4k27lglnch26dkwa9pibb1q70hdygv0w8";
sha256 = "0isvhwczbm5fr8bkq45g9i80s50r4vw92b7f3wdzwx7p5sj48pwj";
};
buildInputs = [ ];

View File

@ -1,31 +0,0 @@
# Description: Fix lighthouse Makefile
Index: Makefile
===================================================================
--- ./Makefile 1970-01-01 02:00:01.000000000 +0200
+++ ./Makefile 1970-01-01 02:00:01.000000000 +0200
@@ -19,21 +19,10 @@
endif
# Library specific
-HAS_GDK := $(shell pkg-config --exists gdk-2.0 echo $?)
-ifdef $(HAS_GDK)
- CFLAGS+=`pkg-config --cflags gdk-2.0`
- LDFLAGS+=`pkg-config --libs gdk-2.0`
-else
- CFLAGS+=-DNO_GDK
-endif
-HAS_PANGO := $(shell pkg-config --exists pango echo $?)
-ifdef $(HAS_PANGO)
- CFLAGS+=`pkg-config --cflags pango`
- LDFLAGS+=`pkg-config --libs pango`
-else
- CFLAGS+=-DNO_PANGO
-endif
-
+CFLAGS+=$(shell pkg-config --cflags gdk-2.0)
+LDFLAGS+=$(shell pkg-config --libs gdk-2.0)
+CFLAGS+=$(shell pkg-config --cflags pango)
+LDFLAGS+=$(shell pkg-config --libs pango)
all: lighthouse

View File

@ -4,39 +4,24 @@
stdenv.mkDerivation rec {
name = "lighthouse-${date}";
date = "2016-01-26";
date = "2016-07-20";
src = fetchFromGitHub {
owner = "emgram769";
repo = "lighthouse";
rev = "bf11f111572475e855b0329202a14c9e128c7e57";
sha256 = "1ppika61vg4sc9mczbkjqy2mhgxqg57xrnsmmq0h2lyvj0yhg3qn";
rev = "d1813ef8e2aca9f6b3609b1e0c6d1d5ee683281a";
sha256 = "0v6ylm49f1b44zwq1y1gqxp2csyqblplr24ajllc2q3r0sc9m1ys";
};
buildInputs = [
pkgconfig libX11 libxcb cairo gtk pango python27 python3
];
patches = [ ./Makefile.patch ];
makeFlags = [ "PREFIX=\${out}" ];
lighthouseInstaller = ''
#!${stdenv.shell}
cp -r $out/share/lighthouse/.config/lighthouse \$HOME/.config
chmod -R +w \$HOME/.config/lighthouse
'';
preFixup = "chmod +x $out/share/lighthouse/.config/lighthouse/google.py";
installPhase = ''
mkdir -p $out/bin
cp lighthouse $out/bin
chmod +x config/lighthouse/cmd*
chmod +x config/lighthouse/google.py
patchShebangs config/lighthouse/
patchShebangs config/lighthouse/scripts/
mkdir -p $out/share/lighthouse/.config
cp -r config/lighthouse $out/share/lighthouse/.config
echo "${lighthouseInstaller}" > $out/bin/lighthouse-install
chmod +x $out/bin/lighthouse-install
'';
postFixup = "chmod -x $out/share/lighthouse/.config/lighthouse/google.py";
meta = with stdenv.lib; {
description = "A simple flexible popup dialog to run on X";

View File

@ -0,0 +1,43 @@
{ stdenv, fetchgit, makeWrapper, gettext
, python27, python2Packages
}:
stdenv.mkDerivation rec {
name = "metamorphose2-${version}";
version = "0.9.0beta";
# exif-py vendored via submodule
# mutagen vendored via copy
src = fetchgit {
url = "https://github.com/metamorphose/metamorphose2.git";
#rev = "refs/tags/v2.${version}"; #for when wxPython3 support is released
rev = "d2bdd6a86340b9668e93b35a6a568894c9909d68";
sha256 = "0ivcb3c8hidrff0ivl4dnwa2p3ihpqjdbvdig8dhg9mm5phdbabn";
};
postPatch = ''
substituteInPlace messages/Makefile \
--replace "\$(shell which msgfmt)" "${gettext}/bin/msgfmt"
'';
postInstall = ''
rm $out/bin/metamorphose2
makeWrapper ${python27}/bin/python $out/bin/metamorphose2 \
--prefix PYTHONPATH : $PYTHONPATH:$(toPythonPath "$out") \
--add-flags "-O $out/share/metamorphose2/metamorphose2.py -w=3"
'';
buildInput = [ gettext python27 ];
nativeBuildInputs = [ makeWrapper ];
propagatedBuildInputs = [ python2Packages.wxPython python2Packages.pillow ];
makeFlags = [ "PREFIX=$(out)" ];
meta = with stdenv.lib; {
description = "a graphical mass renaming program for files and folders";
homepage = "https://github.com/metamorphose/metamorphose2";
license = with licenses; gpl3Plus;
maintainer = with maintainers; [ ramkromberg ];
platforms = with platforms; linux;
};
}

View File

@ -1,14 +1,16 @@
{ stdenv, fetchurl, wxGTK, libuuid, xercesc, zip , libXt, libXtst
{ stdenv, fetchFromGitHub, wxGTK, libuuid, xercesc, zip , libXt, libXtst
, libXi, xextproto, gettext, perl, pkgconfig, libyubikey, ykpers
}:
stdenv.mkDerivation rec {
name = "pwsafe-${version}";
version = "0.95";
version = "0.99";
src = fetchurl {
url = "mirror://sourceforge/passwordsafe/pwsafe-${version}BETA-src.tgz";
sha256 = "f0b081bc358fee97fce20f352e360960d2813989023b837102b90ba6ed787d46";
src = fetchFromGitHub {
owner = "pwsafe";
repo = "pwsafe";
rev = "${version}BETA";
sha256 = "1bkimz4g9v9kfjkqr3dqddh4jps7anzc1hgmirmmhwpac0xdp60g";
};
makefile = "Makefile.linux";
@ -30,6 +32,9 @@ stdenv.mkDerivation rec {
substituteInPlace $f --replace /usr/share/ $out/share/
done
# Fix hard coded zip path.
substituteInPlace help/Makefile.linux --replace /usr/bin/zip ${zip}/bin/zip
for f in `grep -Rl /usr/bin/ .`; do
substituteInPlace $f --replace /usr/bin/ ""
done
@ -45,7 +50,7 @@ stdenv.mkDerivation rec {
$out/share/locale
(cd help && make -f Makefile.linux)
cp help/help.zip $out/share/doc/passwordsafe/help
cp help/help*.zip $out/share/doc/passwordsafe/help
(cd src/ui/wxWidgets/I18N && make mos)
cp -dr src/ui/wxWidgets/I18N/mos/* $out/share/locale/

View File

@ -3,7 +3,7 @@
, libdrm, libffi, libICE, libSM
, libX11, libXcomposite, libXext, libXmu, libXrender, libxcb
, libxml2, libxslt, ncurses, zlib
, qtbase, qtdeclarative, qtquick1, qtwebkit
, qtbase, qtdeclarative, qtwebkit
}:
# this package contains the daemon version of dropbox
@ -23,11 +23,11 @@
let
# NOTE: When updating, please also update in current stable,
# as older versions stop working
version = "4.4.29";
version = "6.4.14";
sha256 =
{
"x86_64-linux" = "1ff01vqi9jiwhkqm81rh321bsz4brl11xal2xzm9gll7s2m8lz06";
"i686-linux" = "0lwvvyxy5xyxh0b2g8a9bdy0y2hgpbak4n6q6b30167fvpj1ad1i";
"x86_64-linux" = "0wpdib3jf5bq4k8q5xv9g01fdcfjb4l903xjxn32rjw615s1q8bg";
"i686-linux" = "1lgc7ryp2mn230cfsbndn9ss71l378kib0lvs89rkn25d5zfgzn4";
}."${stdenv.system}" or (throw "system ${stdenv.system} not supported");
arch =
@ -45,7 +45,7 @@ let
libX11 libXcomposite libXext libXmu libXrender libxcb libxml2 libxslt
ncurses zlib
qtbase qtdeclarative qtquick1 qtwebkit
qtbase qtdeclarative qtwebkit
];
desktopItem = makeDesktopItem {

View File

@ -9,29 +9,10 @@
}:
let
/* Find the index of the first element in the list matching the specified
predicate or returns null if no such element exists.
Example:
findFirstIndex (x: x > 3) [ 1 6 4 ]
=> 1
*/
findFirstIndex = pred: list:
# Poor man's Either via a list.
let searchFun = old: curr:
if lib.isList old then old
else if pred curr then [old]
else old + 1;
res = lib.foldl searchFun 0 list;
in if lib.isList res then lib.elemAt res 0 else null;
extractVersion = ver:
let suffix = findFirstIndex (x: x == "-") (lib.stringToCharacters ver);
in if suffix == null then ver else lib.substring 0 suffix ver;
system-x86_64 = lib.elem stdenv.system lib.platforms.x86_64;
packagedQt = "5.6.0";
systemQt = extractVersion qtbase.version;
# Hacky: split "1.2.3-4" into "1.2.3" and "4"
systemQt = (builtins.parseDrvName qtbase.version).name;
in stdenv.mkDerivation rec {
name = "telegram-desktop-${version}";

View File

@ -1,12 +1,12 @@
{ stdenv, fetchurl, makeWrapper, makeDesktopItem, ant, jdk, jre }:
stdenv.mkDerivation rec {
version = "3.4";
version = "3.5";
name = "jabref-${version}";
src = fetchurl {
url = "https://github.com/JabRef/jabref/releases/download/v${version}/JabRef-${version}.jar";
sha256 = "1pimjx1452z159hvi199n52j5vkdj5c59mns9mi5mqvwhgm9dghd";
sha256 = "19q86xc8qr6j8zd9rsc6aa3jd4kbblkr6ik1h6h7npq012019adm";
};
desktopItem = makeDesktopItem {

View File

@ -1,15 +1,17 @@
{ stdenv, fetchurl, cmake, freetype, libpng, mesa, gettext, openssl, perl, libiconv
, qtscript, qtserialport, qttools
, qtscript, qtserialport, qttools, makeQtWrapper
}:
stdenv.mkDerivation rec {
name = "stellarium-0.14.2";
name = "stellarium-0.14.3";
src = fetchurl {
url = "mirror://sourceforge/stellarium/${name}.tar.gz";
sha256 = "1xxil0rv61zc08znfv83cpsc47y1gjl2f3njhz0pn5zd8jpaa15a";
sha256 = "1919wzlvhfxdxficbwhp31xlhm0571grgcmsfdp5y36z9yqwahfy";
};
nativeBuildInputs = [ makeQtWrapper ];
buildInputs = [
cmake freetype libpng mesa gettext openssl perl libiconv qtscript
qtserialport qttools
@ -17,6 +19,10 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true;
postInstall = ''
wrapQtProgram "$out/bin/stellarium"
'';
meta = {
description = "Free open-source planetarium";
homepage = "http://stellarium.org/";

View File

@ -1,27 +1,30 @@
{ stdenv, fetchurl, gmp, libantlr3c, boost, autoreconfHook }:
{ stdenv, fetchurl, cln, gmp, swig, pkgconfig, readline, libantlr3c, boost, jdk, autoreconfHook, python2 }:
stdenv.mkDerivation rec {
name = "cvc4-${version}";
version = "1.4";
version = "1.5pre-smtcomp2016";
src = fetchurl {
url = "http://cvc4.cs.nyu.edu/builds/src/cvc4-${version}.tar.gz";
sha256 = "093h7zgv4z4ad503j30dpn8k2pz9m90pvd7gi5axdmwsxgwlzzkn";
sha256 = "15wz0plfc9q8acrwq1ljgsgqmh8pyz5alzv5xpchvv9w76lvj2zf";
};
buildInputs = [ gmp libantlr3c boost autoreconfHook ];
buildInputs = [ gmp cln pkgconfig readline swig libantlr3c boost jdk autoreconfHook python2 ];
configureFlags = [
"--enable-language-bindings=c,c++,java"
"--enable-gpl"
"--with-cln"
"--with-readline"
"--with-boost=${boost.dev}"
];
preConfigure = ''
patchShebangs ./src/
OLD_CPPFLAGS="$CPPFLAGS"
export CPPFLAGS="$CPPFLAGS -P"
'';
postConfigure = ''CPPFLAGS="$OLD_CPPFLAGS"'';
doChecks = true;
meta = with stdenv.lib; {
description = "A high-performance theorem prover and SMT solver";
homepage = http://cvc4.cs.nyu.edu/web/;
license = licenses.bsd3;
license = licenses.gpl3;
platforms = platforms.unix;
maintainers = with maintainers; [ vbgl thoughtpolice ];
};

View File

@ -1,18 +1,20 @@
{ stdenv, fetchurl, perl, mlton }:
{ stdenv, fetchFromGitHub, perl, mlton }:
stdenv.mkDerivation rec {
name = "metis-prover-${version}";
version = "2.3.20160102";
version = "2.3.20160713";
src = fetchurl {
url = "http://www.gilith.com/software/metis/metis.tar.gz";
sha256 = "13csr90i9lsxdyzxqiwgi98pa7phfl28drjcv4qdjhzi71wcdc66";
src = fetchFromGitHub {
owner = "gilith";
repo = "metis";
rev = "f0b1a17cd57eb098077e963ab092477aee9fb340";
sha256 = "1i7paax7b4byk8110f5zk4071mh5603r82bq7hbprqzljvsiipk7";
};
nativeBuildInputs = [ perl ];
buildInputs = [ mlton ];
patchPhase = "patchShebangs scripts/mlpp";
patchPhase = "patchShebangs .";
buildPhase = "make mlton";

View File

@ -39,7 +39,7 @@ rec {
svnSupport = true;
}));
git-annex = pkgs.haskell.packages.lts.git-annex-with-assistant;
git-annex = pkgs.haskell.packages.lts.git-annex;
gitAnnex = git-annex;
git-annex-remote-b2 = callPackage ./git-annex-remote-b2 { };

View File

@ -9,6 +9,8 @@
, libv4l
, x264
, curl
, xorg
, makeWrapper
, alsaSupport ? false
, alsaLib
@ -20,13 +22,13 @@ let
optional = stdenv.lib.optional;
in stdenv.mkDerivation rec {
name = "obs-studio-${version}";
version = "0.14.2";
version = "0.15.2";
src = fetchFromGitHub {
owner = "jp9000";
repo = "obs-studio";
rev = "${version}";
sha256 = "05yjm58d6daya1x6v8d73gx8fb20l0icay74nx0v4si2c898vm1j";
sha256 = "0vw203a1zj2npras589ml6gr5s11h9bhaica90plrh5ajayg0qwj";
};
nativeBuildInputs = [ cmake
@ -40,6 +42,7 @@ in stdenv.mkDerivation rec {
qtbase
qtx11extras
x264
makeWrapper
]
++ optional alsaSupport alsaLib
++ optional pulseaudioSupport libpulseaudio;
@ -49,6 +52,11 @@ in stdenv.mkDerivation rec {
# to handle this.
cmakeFlags = [ "-DCMAKE_CXX_FLAGS=-DDL_OPENGL=\\\"$(out)/lib/libobs-opengl.so\\\"" ];
postInstall = ''
wrapProgram $out/bin/obs \
--prefix "LD_LIBRARY_PATH" : "${xorg.libX11.out}/lib"
'';
meta = with stdenv.lib; {
description = "Free and open source software for video recording and live streaming";
longDescription = ''

View File

@ -1,18 +1,51 @@
{ stdenv, fetchurl, pkgconfig, intltool, itstool, makeWrapper
{ stdenv, fetchurl, pkgconfig, intltool, itstool, wrapGAppsHook
, python3Packages, gst, gtk3, hicolor_icon_theme
, gobjectIntrospection, librsvg, gnome3, libnotify
# for gst-transcoder:
, which, meson, ninja
}:
let
version = "0.95";
version = "0.96";
# gst-transcoder will eventually be merged with gstreamer (according to
# gst-transcoder 1.8.0 release notes). For now the only user is pitivi so we
# don't bother exposing the package to all of nixpkgs.
gst-transcoder = stdenv.mkDerivation rec {
name = "gst-transcoder-1.8.0";
src = fetchurl {
name = "${name}.tar.gz";
url = "https://github.com/pitivi/gst-transcoder/archive/1.8.0.tar.gz";
sha256 = "0iggr6idmp7cmfsf6pkhfl3jq1bkga37jl5prbcl1zapkzi26fg6";
};
buildInputs = [ which meson ninja pkgconfig gobjectIntrospection ]
++ (with gst; [ gstreamer gst-plugins-base ]);
};
in stdenv.mkDerivation rec {
name = "pitivi-${version}";
src = fetchurl {
url = "mirror://gnome/sources/pitivi/${version}/${name}.tar.xz";
sha256 = "04ykw619aikhxk5wj7z44pvwl52053d1kamcxpscw0ixrh5j45az";
sha256 = "115d37mvi32yds8gqj2yidkk6pap7szavhjf2hw0388ynydlc2zs";
};
nativeBuildInputs = [ pkgconfig intltool itstool wrapGAppsHook ];
buildInputs = [
gobjectIntrospection gtk3 librsvg gnome3.gnome_desktop
gnome3.defaultIconTheme
gnome3.gsettings_desktop_schemas libnotify
gst-transcoder
] ++ (with gst; [
gstreamer gst-editing-services
gst-plugins-base gst-plugins-good
gst-plugins-bad gst-plugins-ugly gst-libav gst-validate
]) ++ (with python3Packages; [
python pygobject3 gst-python pyxdg numpy pycairo sqlite3 matplotlib
dbus
]);
meta = with stdenv.lib; {
description = "Non-Linear video editor utilizing the power of GStreamer";
homepage = "http://pitivi.org/";
@ -24,26 +57,4 @@ in stdenv.mkDerivation rec {
license = licenses.lgpl21Plus;
platforms = platforms.linux;
};
nativeBuildInputs = [ pkgconfig intltool itstool makeWrapper ];
buildInputs = [
gobjectIntrospection gtk3 librsvg gnome3.gnome_desktop
gnome3.defaultIconTheme
gnome3.gsettings_desktop_schemas libnotify
] ++ (with gst; [
gstreamer gst-editing-services
gst-plugins-base gst-plugins-good
gst-plugins-bad gst-plugins-ugly gst-libav gst-validate
]) ++ (with python3Packages; [
python pygobject3 gst-python pyxdg numpy pycairo sqlite3 matplotlib
]);
preFixup = ''
wrapProgram "$out/bin/pitivi" \
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0" \
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$out/share:$GSETTINGS_SCHEMAS_PATH"
'';
}

View File

@ -4,14 +4,15 @@
let
# Always get the information from
# https://github.com/coreos/rkt/blob/v${VERSION}/stage1/usr_from_coreos/coreos-common.mk
coreosImageRelease = "1068.0.0";
coreosImageRelease = "1097.0.0";
coreosImageSystemdVersion = "229";
# TODO: track https://github.com/coreos/rkt/issues/1758 to allow "host" flavor.
stage1Flavours = [ "coreos" "fly" ];
stage1Dir = "lib/rkt/stage1-images";
in stdenv.mkDerivation rec {
version = "1.10.1";
version = "1.11.0";
name = "rkt-${version}";
BUILDDIR="build-${name}";
@ -19,12 +20,12 @@ in stdenv.mkDerivation rec {
rev = "v${version}";
owner = "coreos";
repo = "rkt";
sha256 = "0hy6b0lyjsh0m1ca7hga31nybrbi9wpf8c59wbzvm1wlnqzsjkqi";
sha256 = "05lm9grckbyjmv1292v00vw4h3nv6r7gmq04zhahcjyw7crx06sv";
};
stage1BaseImage = fetchurl {
url = "http://alpha.release.core-os.net/amd64-usr/${coreosImageRelease}/coreos_production_pxe_image.cpio.gz";
sha256 = "06jawmjkhrrw9hsk98w5j6pxci17d46mvzbj52pslakacw60pbpp";
sha256 = "0dzp0vsjbipx8mcikrc5l7k3qjrg4y7h63r2nx6cycy7qhcmj85a";
};
buildInputs = [
@ -41,6 +42,7 @@ in stdenv.mkDerivation rec {
--with-coreos-local-pxe-image-path=${stage1BaseImage}
--with-coreos-local-pxe-image-systemd-version=v${coreosImageSystemdVersion}
" else "" }
--with-stage1-default-location=$out/${stage1Dir}/stage1-${builtins.elemAt stage1Flavours 0}.aci
);
'';
@ -53,7 +55,7 @@ in stdenv.mkDerivation rec {
cp -Rv $BUILDDIR/target/bin/rkt $out/bin
mkdir -p $out/lib/rkt/stage1-images/
cp -Rv $BUILDDIR/target/bin/stage1-*.aci $out/lib/rkt/stage1-images/
cp -Rv $BUILDDIR/target/bin/stage1-*.aci $out/${stage1Dir}/
wrapProgram $out/bin/rkt \
--prefix LD_LIBRARY_PATH : ${systemd}/lib \

View File

@ -0,0 +1,35 @@
{ stdenv, fetchurl, libX11, libXext, libXrandr, libXrender,
xproto, xextproto, randrproto, renderproto, kbproto, patches ? [] }:
stdenv.mkDerivation rec {
name = "evilwm-1.1.1";
src = fetchurl {
url = "http://www.6809.org.uk/evilwm/${name}.tar.gz";
sha256 = "79589c296a5915ee0bae1d231e8912601fc794d9f0a9cacb6b648ff9a5f2602a";
};
buildInputs = [ libX11 libXext libXrandr libXrender
xproto xextproto randrproto renderproto kbproto ];
prePatch = ''substituteInPlace ./Makefile --replace /usr $out \
--replace "CC = gcc" "#CC = gcc"'';
# Allow users set their own list of patches
inherit patches;
meta = with stdenv.lib; {
homepage = "http://www.6809.org.uk/evilwm/";
description = "Minimalist window manager for the X Window System";
license = {
shortName = "evilwm";
fullName = "Custom, inherited from aewm and 9wm";
url = http://www.6809.org.uk/evilwm/;
free = true;
}; # like BSD/MIT, but Share-Alike'y; See README.
maintainers = with maintainers; [ amiloradovsky ];
platforms = platforms.all;
};
}

View File

@ -0,0 +1,24 @@
{ fetchFromGitHub, stdenv }:
stdenv.mkDerivation rec {
name = "i3blocks-gaps-${version}";
version = "1.4";
src = fetchFromGitHub {
owner = "Airblader";
repo = "i3blocks-gaps";
rev = "4cfdf93c75f729a2c96d471004d31734e923812f";
sha256 = "0v9307ij8xzwdaxay3r75sd2cp453s3qb6q7dy9fks2p6wwqpazi";
};
makeFlags = "all";
installFlags = "PREFIX=\${out} VERSION=${version}";
meta = with stdenv.lib; {
description = "A flexible scheduler for your i3bar blocks -- this is a fork to use with i3-gaps";
homepage = https://github.com/Airblader/i3blocks-gaps;
license = licenses.gpl3;
maintainers = [ "carlsverre" ];
platforms = platforms.all;
};
}

View File

@ -1,4 +1,4 @@
{ stdenv, fetchhg, pkgconfig, libixp_hg, txt2tags, dash, python, which
{ stdenv, fetchurl, unzip, pkgconfig, libixp_hg, txt2tags, dash, python, which
, libX11 , libXrender, libXext, libXinerama, libXrandr, libXft }:
stdenv.mkDerivation rec {
@ -6,15 +6,14 @@ stdenv.mkDerivation rec {
version = "hg-2012-12-09";
name = "wmii-${version}";
src = fetchhg {
url = https://code.google.com/p/wmii/;
sha256 = "1wqw41jb2fhq902a04ixfzmx0lia1pawahm1ymyrs3is6mm32r51";
inherit rev;
src = fetchurl {
url = https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/wmii/source-archive.zip;
sha256 = "1wmkq14zvmfrmydl8752xz852cy7agrx3qp4fy2cc5asb2r9abaz";
};
# for dlopen-ing
patchPhase = ''
substituteInPlace lib/libstuff/x11/xft.c --replace "libXft.so" "${libXft}/lib/libXft.so"
substituteInPlace lib/libstuff/x11/xft.c --replace "libXft.so" "$(pkg-config --variable=libdir xft)/libXft.so.2"
substituteInPlace cmd/wmii.sh.sh --replace "\$(which which)" "${which}/bin/which"
'';
@ -30,14 +29,14 @@ stdenv.mkDerivation rec {
EOF
'';
buildInputs = [ pkgconfig libixp_hg txt2tags dash python which
buildInputs = [ unzip pkgconfig libixp_hg txt2tags dash python which
libX11 libXrender libXext libXinerama libXrandr libXft ];
# For some reason including mercurial in buildInputs did not help
makeFlags = "WMII_HGVERSION=hg${rev}";
meta = {
homepage = "https://code.google.com/p/wmii/";
homepage = "https://code.google.com/archive/p/wmii/";
description = "A small window manager controlled by a 9P filesystem";
maintainers = with stdenv.lib.maintainers; [ kovirobi ];
license = stdenv.lib.licenses.mit;

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "man-pages-${version}";
version = "4.06";
version = "4.07";
src = fetchurl {
url = "mirror://kernel/linux/docs/man-pages/${name}.tar.xz";
sha256 = "0vv056k9yyf05dqal9m2pq3pv9c8lnp7i5rjxvcnic6aq7vyrafb";
sha256 = "1vimj3va16plxmv46rw6nzw4m9l11hb7r1d217y1bjpd5q8nw8qz";
};
# keep developer docs separately (man2 and man3)

View File

@ -2,13 +2,15 @@
stdenv.mkDerivation rec {
name = "fira-code-${version}";
version = "1.102";
version = "1.200";
src = fetchurl {
url = "https://github.com/tonsky/FiraCode/releases/download/${version}/FiraCode_${version}.zip";
sha256 = "0vcrzf7dmcy3n2ic05ihadmfgzmmmp0vz8grnqaxfi3y1jpw8ggy";
sha256 = "1zja7fsfh3xx2qv9wv46997d02l5nm483b5s39jpmxfracj8qam7";
};
sourceRoot = "otf";
buildInputs = [ unzip ];
phases = [ "unpackPhase" "installPhase" ];

View File

@ -1,31 +0,0 @@
args @ { fetchurl, stdenv, builderDefs, paths, mkfontdir, mkfontscale }:
with args;
let localDefs = builderDefs.passthru.function {
src =""; /* put a fetchurl here */
buildInputs = [mkfontdir mkfontscale];
configureFlags = [];
};
in with localDefs;
let
doInstall = fullDepEntry ("
mkdir -p \$out/share/fonts/
cd \$out/share/fonts
for i in ${toString paths}; do
find \$i -type f -exec ln -s '{}' . ';' ;
done
mkfontdir
mkfontscale
") [minInit addInputs defEnsureDir] ;
in
stdenv.mkDerivation rec {
name = "wrapped-font-dir";
builder = writeScript (name + "-builder")
(textClosure localDefs [ doInstall doForceShare doPropagate]);
preferLocalBuild = true;
meta = {
description = "
Just a wrapper to create fonts.dir and fonts.scale .
";
inherit src;
};
}

View File

@ -1,39 +1,41 @@
{ stdenv, fetchurl, wrapFonts }:
{ stdenv, fetchurl, mkfontdir, mkfontscale }:
let
stdenv.mkDerivation rec {
name = "ucs-fonts-${version}";
version = "20090406";
srcA = fetchurl {
url = http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz;
sha256 = "12hgizg25fzmk10wjl0c88x97h3pg5r9ga122s3y28wixz6x2bvh";
};
srcB = fetchurl {
url = http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts-asian.tar.gz;
sha256 = "0ibjy4xpz5j373hsdr8bx99czfpclqmviwwv768j8n7z12z3wa51";
};
srcC = fetchurl {
url = http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts-75dpi100dpi.tar.gz;
sha256 = "08vqr8yb636xa1s28vf3pm22dzkia0gisvsi2svqjqh4kk290pzh";
};
srcs = [
(fetchurl {
url = http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz;
sha256 = "12hgizg25fzmk10wjl0c88x97h3pg5r9ga122s3y28wixz6x2bvh";
})
(fetchurl {
url = http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts-asian.tar.gz;
sha256 = "0ibjy4xpz5j373hsdr8bx99czfpclqmviwwv768j8n7z12z3wa51";
})
(fetchurl {
url = http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts-75dpi100dpi.tar.gz;
sha256 = "08vqr8yb636xa1s28vf3pm22dzkia0gisvsi2svqjqh4kk290pzh";
})
];
in
sourceRoot = ".";
buildInputs = [ mkfontdir mkfontscale ];
phases = [ "unpackPhase" "installPhase" ];
wrapFonts (stdenv.mkDerivation {
name = "ucs-fonts";
phases = ["installPhase"];
installPhase = ''
tar xf ${srcA}
tar xf ${srcB}
tar xf ${srcC}
mkdir -p $out/share/fonts/ucs-fonts
cp *.bdf $out/share/fonts/ucs-fonts
mkdir -p $out/share/fonts
cp *.bdf $out/share/fonts
cd $out/share/fonts
mkfontdir
mkfontscale
'';
meta = {
meta = with stdenv.lib; {
description = "Unicode bitmap fonts";
maintainers = [stdenv.lib.maintainers.raskin];
maintainers = [ maintainers.raskin ];
platforms = platforms.all;
};
})
}

View File

@ -4,10 +4,11 @@ libffi, pam, alsaLib, luajit, bzip2, libuuid, libpthreadstubs, gdbm, libcap, mes
stdenv.mkDerivation rec {
name = "enlightenment-${version}";
version = "0.21.0";
version = "0.21.1";
src = fetchurl {
url = "http://download.enlightenment.org/rel/apps/enlightenment/${name}.tar.xz";
sha256 = "0p85dmk9ysbf9y7vlc92z7495mh9l860xj3s8pspy9mscv3dnwg9";
sha256 = "119sxrgrz163c01yx0q9n2jpmmbv0a58akmz0c2z4xy37f1m02rx";
};
nativeBuildInputs = [ pkgconfig ];

View File

@ -1,5 +1,5 @@
{ stdenv, intltool, fetchurl, pkgconfig, udisks2, libsecret, libdvdread
, bash, gtk3, glib, makeWrapper, cracklib, libnotify
, bash, gtk3, glib, wrapGAppsHook, cracklib, libnotify
, itstool, gnome3, librsvg, gdk_pixbuf, libxml2, python
, libcanberra_gtk3, libxslt, libtool, docbook_xsl, libpwquality }:
@ -17,13 +17,8 @@ stdenv.mkDerivation rec {
libnotify libdvdread libcanberra_gtk3 docbook_xsl
gdk_pixbuf gnome3.defaultIconTheme
librsvg udisks2 gnome3.gnome_settings_daemon
gnome3.gsettings_desktop_schemas makeWrapper libxml2 ];
gnome3.gsettings_desktop_schemas wrapGAppsHook libxml2 ];
preFixup = ''
wrapProgram "$out/bin/gnome-disks" \
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
--prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
'';
meta = with stdenv.lib; {
homepage = http://en.wikipedia.org/wiki/GNOME_Disks;

View File

@ -1,5 +1,5 @@
{ stdenv, fetchurl, pkgconfig, dbus, libgcrypt, libtasn1, pam, python, glib, libxslt
, intltool, pango, gcr, gdk_pixbuf, atk, p11_kit, makeWrapper
, intltool, pango, gcr, gdk_pixbuf, atk, p11_kit, wrapGAppsHook
, docbook_xsl_ns, docbook_xsl, gnome3 }:
stdenv.mkDerivation rec {
@ -7,7 +7,7 @@ stdenv.mkDerivation rec {
buildInputs = with gnome3; [
dbus libgcrypt pam python gtk3 gconf libgnome_keyring
pango gcr gdk_pixbuf atk p11_kit makeWrapper
pango gcr gdk_pixbuf atk p11_kit wrapGAppsHook
];
propagatedBuildInputs = [ glib libtasn1 libxslt ];
@ -19,13 +19,6 @@ stdenv.mkDerivation rec {
"--with-pkcs11-modules=$$out/lib/pkcs11/"
];
preFixup = ''
wrapProgram "$out/bin/gnome-keyring" \
--prefix XDG_DATA_DIRS : "${glib}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
wrapProgram "$out/bin/gnome-keyring-daemon" \
--prefix XDG_DATA_DIRS : "${glib}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
'';
meta = with stdenv.lib; {
platforms = platforms.linux;
maintainers = gnome3.maintainers;

View File

@ -1,7 +1,7 @@
{ stdenv, fetchurl, pkgconfig, glib, libxslt, gtk, makeWrapper
, webkitgtk, json_glib, rest, libsecret, dbus_glib, gnome_common
, telepathy_glib, intltool, dbus_libs, icu, autoreconfHook
, libsoup, docbook_xsl_ns, docbook_xsl, gnome3
, libsoup, docbook_xsl_ns, docbook_xsl, gnome3, wrapGAppsHook
}:
stdenv.mkDerivation rec {
@ -16,15 +16,10 @@ stdenv.mkDerivation rec {
sed "/if HAVE_INTROSPECTION/a INTROSPECTION_COMPILER_ARGS = --shared-library=$out/lib/libgoa-1.0.so" -i src/goa/Makefile.am
'';
buildInputs = [ pkgconfig glib libxslt gtk webkitgtk json_glib rest gnome_common makeWrapper
buildInputs = [ pkgconfig glib libxslt gtk webkitgtk json_glib rest gnome_common wrapGAppsHook
libsecret dbus_glib telepathy_glib intltool icu libsoup autoreconfHook
docbook_xsl_ns docbook_xsl gnome3.defaultIconTheme ];
docbook_xsl_ns docbook_xsl gnome3.defaultIconTheme ];
preFixup = ''
for f in "$out/libexec/"*; do
wrapProgram "$f" --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
done
'';
meta = with stdenv.lib; {
platforms = platforms.linux;

View File

@ -20,6 +20,7 @@ kdeApp {
nativeBuildInputs = [
extra-cmake-modules
kdoctools
makeQtWrapper
];
propagatedBuildInputs = [
gmp kconfig kconfigwidgets kguiaddons kinit knotifications

View File

@ -1,15 +1,14 @@
{ fetchgit, stdenv, guile, guile_lib, gwrap
{ fetchurl, stdenv, guile, guile_lib, gwrap
, pkgconfig, gconf, glib, gnome_vfs, gtk
, libglade, libgnome, libgnomecanvas, libgnomeui
, pango, guileCairo, autoconf, automake, texinfo }:
stdenv.mkDerivation rec {
name = "guile-gnome-platform-20150123";
name = "guile-gnome-platform-2.16.4";
src = fetchgit {
url = "git://git.sv.gnu.org/guile-gnome.git";
rev = "0fcbe69797b9501b8f1283a78eb92bf43b08d080";
sha256 = "19nsxwhrmrs9n16sb99pgy6zp6zpvmsd285kcjb54y362li7yc83";
src = fetchurl {
url = "http://ftp.gnu.org/pub/gnu/guile-gnome/guile-gnome-platform/${name}.tar.gz";
sha256 = "adabd48ed5993d8528fd604e0aa0d96ad81a61d06da6cdd68323572ad6c216c3";
};
buildInputs = [
@ -38,7 +37,7 @@ stdenv.mkDerivation rec {
# The test suite tries to open an X display, which fails.
doCheck = false;
meta = {
meta = with stdenv.lib; {
description = "GNOME bindings for GNU Guile";
longDescription =
@ -51,8 +50,8 @@ stdenv.mkDerivation rec {
homepage = http://www.gnu.org/software/guile-gnome/;
license = stdenv.lib.licenses.gpl2Plus;
license = licenses.gpl2Plus;
maintainers = [ stdenv.lib.maintainers.taktoa ];
maintainers = with maintainers; [ taktoa amiloradovsky ];
};
}

View File

@ -5,9 +5,7 @@ with import ./lib.nix { inherit pkgs; };
self: super: {
# Some packages need a non-core version of Cabal.
Cabal_1_22_4_0 = super.Cabal_1_22_4_0.overrideScope (self: super: { binary = self.binary_0_7_6_1; });
cabal-install = super.cabal-install.overrideScope (self: super: { Cabal = self.Cabal_1_24_0_0; });
cabal-install_1_18_1_0 = (dontCheck super.cabal-install_1_18_1_0).overrideScope (self: super: { Cabal = self.Cabal_1_18_1_7; });
# Link statically to avoid runtime dependency on GHC.
jailbreak-cabal = (disableSharedExecutables super.jailbreak-cabal).override { Cabal = dontJailbreak self.Cabal_1_20_0_4; };
@ -19,25 +17,10 @@ self: super: {
clock = dontCheck super.clock;
Dust-crypto = dontCheck super.Dust-crypto;
hasql-postgres = dontCheck super.hasql-postgres;
hspec_2_1_2 = super.hspec_2_1_2.override { stringbuilder = dontCheck super.stringbuilder; };
hspec_2_1_3 = super.hspec_2_1_3.override { stringbuilder = dontCheck super.stringbuilder; };
hspec_2_1_4 = super.hspec_2_1_4.override { stringbuilder = dontCheck super.stringbuilder; };
hspec_2_1_5 = super.hspec_2_1_5.override { stringbuilder = dontCheck super.stringbuilder; };
hspec_2_1_6 = super.hspec_2_1_6.override { stringbuilder = dontCheck super.stringbuilder; };
hspec_2_1_7 = super.hspec_2_1_7.override { stringbuilder = dontCheck super.stringbuilder; };
hspec_2_1_10 = super.hspec_2_1_10.override { stringbuilder = dontCheck super.stringbuilder; };
hspec_2_2_1 = super.hspec_2_2_1.override { stringbuilder = dontCheck super.stringbuilder; };
hspec_2_2_2 = super.hspec_2_2_2.override { stringbuilder = dontCheck super.stringbuilder; };
hspec-expectations_0_6_1_1 = dontCheck super.hspec-expectations_0_6_1_1;
hspec-expectations_0_6_1 = dontCheck super.hspec-expectations_0_6_1;
hspec-expectations_0_7_1 = dontCheck super.hspec-expectations_0_7_1;
hspec-expectations = dontCheck super.hspec-expectations;
hspec = super.hspec.override { stringbuilder = dontCheck super.stringbuilder; };
HTTP = dontCheck super.HTTP;
nanospec_0_2_0 = dontCheck super.nanospec_0_2_0;
nanospec = dontCheck super.nanospec;
options_1_2_1 = dontCheck super.options_1_2_1;
options_1_2 = dontCheck super.options_1_2;
options = dontCheck super.options;
statistics = dontCheck super.statistics;
c2hs = dontCheck super.c2hs;
@ -53,31 +36,8 @@ self: super: {
# Link the proper version.
zeromq4-haskell = super.zeromq4-haskell.override { zeromq = pkgs.zeromq4; };
# This package needs a little help compiling properly on Darwin. Furthermore,
# Stackage compiles git-annex without the Assistant, supposedly because not
# all required dependencies are part of Stackage. To comply with Stackage, we
# make 'git-annex-without-assistant' our default version, but offer another
# build which has the assistant to be used in the top-level.
git-annex_5_20150727 = (disableCabalFlag super.git-annex_5_20150727 "assistant").override {
dbus = if pkgs.stdenv.isLinux then self.dbus else null;
lsof = if pkgs.stdenv.isLinux then pkgs.lsof else null;
fdo-notify = if pkgs.stdenv.isLinux then self.fdo-notify else null;
hinotify = if pkgs.stdenv.isLinux then self.hinotify else self.fsnotify;
};
git-annex = (disableCabalFlag super.git-annex "assistant").override {
dbus = if pkgs.stdenv.isLinux then self.dbus else null;
lsof = if pkgs.stdenv.isLinux then pkgs.lsof else null;
fdo-notify = if pkgs.stdenv.isLinux then self.fdo-notify else null;
hinotify = if pkgs.stdenv.isLinux then self.hinotify else self.fsnotify;
};
# Joey Hess is nuts. The release tarball uploaded to Hackage deliberately
# lacks files to break in the installation procedure, because ... you know
# ... because! He feels people shouldn't use the tarballs he publishes and
# instead use the git repository instead. Which makes me seriously wonder why
# the f*ck I'm spending my spare time packaging this crap when I could just
# as well install Syncthing in the time I routinely waste adding kludges to
# work around this guy's crazy ideas of how to express his individuality.
git-annex-with-assistant = (overrideCabal super.git-annex (drv: {
# This package needs a little help compiling properly on Darwin.
git-annex = (overrideCabal super.git-annex (drv: {
src = pkgs.fetchFromGitHub {
owner = "joeyh";
repo = "git-annex";
@ -175,13 +135,6 @@ self: super: {
HDBC-odbc = dontHaddock super.HDBC-odbc;
hoodle-core = dontHaddock super.hoodle-core;
hsc3-db = dontHaddock super.hsc3-db;
hspec-discover_2_1_10 = dontHaddock super.hspec-discover_2_1_10;
hspec-discover_2_1_2 = dontHaddock super.hspec-discover_2_1_2;
hspec-discover_2_1_3 = dontHaddock super.hspec-discover_2_1_3;
hspec-discover_2_1_4 = dontHaddock super.hspec-discover_2_1_4;
hspec-discover_2_1_5 = dontHaddock super.hspec-discover_2_1_5;
hspec-discover_2_1_6 = dontHaddock super.hspec-discover_2_1_6;
hspec-discover_2_1_7 = dontHaddock super.hspec-discover_2_1_7;
hspec-discover = dontHaddock super.hspec-discover;
http-client-conduit = dontHaddock super.http-client-conduit;
http-client-multipart = dontHaddock super.http-client-multipart;
@ -249,10 +202,6 @@ self: super: {
# tests don't compile for some odd reason
jwt = dontCheck super.jwt;
# https://github.com/NixOS/cabal2nix/issues/136
gio_0_13_0_3 = addPkgconfigDepend super.gio_0_13_0_3 pkgs.glib;
gio_0_13_0_4 = addPkgconfigDepend super.gio_0_13_0_4 pkgs.glib;
gio_0_13_1_0 = addPkgconfigDepend super.gio_0_13_1_0 pkgs.glib;
# https://github.com/NixOS/cabal2nix/issues/136 and https://github.com/NixOS/cabal2nix/issues/216
gio = pkgs.lib.overrideDerivation (addPkgconfigDepend (
addBuildTool super.gio self.gtk2hs-buildtools
@ -319,7 +268,6 @@ self: super: {
pocket-dns = dontCheck super.pocket-dns;
postgresql-simple = dontCheck super.postgresql-simple;
postgrest = dontCheck super.postgrest;
setenv_0_1_1_1 = dontCheck super.setenv_0_1_1_1;
snowball = dontCheck super.snowball;
sophia = dontCheck super.sophia;
test-sandbox = dontCheck super.test-sandbox;
@ -438,9 +386,6 @@ self: super: {
hsexif = dontCheck super.hsexif;
hspec-server = dontCheck super.hspec-server;
HTF = dontCheck super.HTF;
HTF_0_12_2_3 = dontCheck super.HTF_0_12_2_3;
HTF_0_12_2_4 = dontCheck super.HTF_0_12_2_4;
HTF_0_13_0_0 = dontCheck super.HTF_0_13_0_0;
htsn = dontCheck super.htsn;
htsn-import = dontCheck super.htsn-import;
http-client-openssl = dontCheck super.http-client-openssl;
@ -487,9 +432,6 @@ self: super: {
separated = dontCheck super.separated;
shadowsocks = dontCheck super.shadowsocks;
shake-language-c = dontCheck super.shake-language-c;
shake-language-c_0_6_3 = dontCheck super.shake-language-c_0_6_3;
shake-language-c_0_6_4 = dontCheck super.shake-language-c_0_6_4;
shake-language-c_0_8_0 = dontCheck super.shake-language-c_0_8_0;
static-resources = dontCheck super.static-resources;
strive = dontCheck super.strive; # fails its own hlint test with tons of warnings
svndump = dontCheck super.svndump;
@ -912,30 +854,13 @@ self: super: {
# https://github.com/guillaume-nargeot/hpc-coveralls/issues/52
hpc-coveralls = disableSharedExecutables super.hpc-coveralls;
hpc-coveralls_0_9_0 = disableSharedExecutables super.hpc-coveralls_0_9_0;
# Test suite won't compile.
semigroupoids_5_0_0_3 = dontCheck super.semigroupoids_5_0_0_3;
# This is fixed in newer versions.
zip-archive_0_2_3_5 = addBuildTool super.zip-archive_0_2_3_5 pkgs.zip;
# https://github.com/fpco/stackage/issues/838
cryptonite = dontCheck super.cryptonite;
cryptonite_0_6 = dontCheck super.cryptonite_0_6 ;
# https://github.com/fpco/stackage/issues/843
hmatrix-gsl-stats_0_4_1 = overrideCabal super.hmatrix-gsl-stats_0_4_1 (drv: {
postUnpack = "rm */Setup.lhs";
});
# We cannot build this package w/o the C library from <http://www.phash.org/>.
phash = markBroken super.phash;
# https://github.com/yesodweb/serversession/issues/2
# https://github.com/haskell/cabal/issues/2661
serversession-backend-acid-state_1_0_1 = dontCheck super.serversession-backend-acid-state_1_0_1;
# https://github.com/sol/hpack/issues/53
hpack = dontCheck super.hpack;
@ -956,35 +881,15 @@ self: super: {
librarySystemDepends = (drv.librarySystemDepends or []) ++ [ pkgs.ncurses ];
});
# https://github.com/mainland/language-c-quote/issues/57
language-c-quote = super.language-c-quote.override { alex = self.alex_3_1_4; };
# https://github.com/agda/agda/issues/1840
Agda_2_4_2_3 = super.Agda_2_4_2_3.override {
unordered-containers = self.unordered-containers_0_2_5_1;
cpphs = self.cpphs_1_19_3;
};
Agda_2_4_2_4 = super.Agda_2_4_2_4.override {
unordered-containers = self.unordered-containers_0_2_5_1;
cpphs = self.cpphs_1_19_3;
};
Agda = super.Agda.override {
unordered-containers = self.unordered-containers_0_2_5_1;
cpphs = self.cpphs_1_19_3;
};
# We get lots of strange compiler errors during the test suite run.
jsaddle = dontCheck super.jsaddle;
# https://github.com/gwern/mueval/issues/14
mueval = super.mueval.override { hint = self.hint_0_4_3; };
# Looks like Avahi provides the missing library
dnssd = super.dnssd.override { dns_sd = pkgs.avahi.override { withLibdnssdCompat = true; }; };
# Haste stuff
haste-Cabal = self.callPackage ../tools/haskell/haste/haste-Cabal.nix {};
haste-cabal-install = self.callPackage ../tools/haskell/haste/haste-cabal-install.nix { Cabal = self.haste-Cabal; HTTP = self.HTTP_4000_2_23; };
haste-cabal-install = self.callPackage ../tools/haskell/haste/haste-cabal-install.nix { Cabal = self.haste-Cabal; };
haste-compiler = self.callPackage ../tools/haskell/haste/haste-compiler.nix { inherit overrideCabal; super-haste-compiler = super.haste-compiler; };
# Ensure the necessary frameworks are propagatedBuildInputs on darwin
@ -1025,18 +930,6 @@ self: super: {
[ pkgs.darwin.apple_sdk.frameworks.OpenCL ];
});
# Tests must be disabled on darwin for all versions of c2hs
# (e.g. Stackage LTS releases).
c2hs_0_20_1 = if pkgs.stdenv.isDarwin
then dontCheck super.c2hs_0_20_1
else super.c2hs_0_20_1;
c2hs_0_25_2 = if pkgs.stdenv.isDarwin
then dontCheck super.c2hs_0_25_2
else super.c2hs_0_25_2;
c2hs_0_27_1 = if pkgs.stdenv.isDarwin
then dontCheck super.c2hs_0_27_1
else super.c2hs_0_27_1;
# tinc is a new build driver a la Stack that's not yet available from Hackage.
tinc = self.callPackage ../tools/haskell/tinc {};
@ -1077,4 +970,8 @@ self: super: {
sha256 = "1yh2g45mkfpwxq0vyzcbc4nbxh6wmb2xpp0k7r5byd8jicgvli29";
});
# Glob depends conditionally on semigroups for GHC < 8
Glob = if pkgs.lib.versionAtLeast self.ghc.version "8.0"
then super.Glob
else addBuildDepend super.Glob self.semigroups;
}

View File

@ -56,8 +56,7 @@ self: super: {
Cabal_1_18_1_7 = dontJailbreak super.Cabal_1_18_1_7;
# We have no working cabal-install at the moment.
cabal-install_1_18_1_0 = markBroken super.cabal-install_1_18_1_0;
cabal-install = self.cabal-install_1_18_1_0;
cabal-install = markBroken super.cabal-install;
# https://github.com/tibbe/hashable/issues/85
hashable = dontCheck super.hashable;

View File

@ -48,7 +48,6 @@ self: super: {
# Newer versions don't compile.
Cabal_1_18_1_7 = dontJailbreak super.Cabal_1_18_1_7;
cabal-install = self.cabal-install_1_18_1_0;
# https://github.com/peti/jailbreak-cabal/issues/9
jailbreak-cabal = super.jailbreak-cabal.override {

View File

@ -46,7 +46,6 @@ self: super: {
# Newer versions don't compile.
Cabal_1_18_1_7 = dontJailbreak super.Cabal_1_18_1_7;
cabal-install = self.cabal-install_1_18_1_0;
# https://github.com/tibbe/hashable/issues/85
hashable = dontCheck super.hashable;

View File

@ -97,6 +97,9 @@ self: super: {
conduit = addBuildDepend super.conduit self.void;
# Needs additional inputs on pre 7.10.x compilers.
semigroups = addBuildDepends super.semigroups (with self; [nats tagged unordered-containers transformers]);
semigroups = addBuildDepends super.semigroups (with self; [bytestring-builder nats tagged unordered-containers transformers]);
# Haddock doesn't cope with the new markup.
bifunctors = dontHaddock super.bifunctors;
}

View File

@ -142,4 +142,7 @@ self: super: {
# Needs additional inputs on pre 7.10.x compilers.
semigroups = addBuildDepends super.semigroups (with self; [nats tagged unordered-containers]);
# Haddock doesn't cope with the new markup.
bifunctors = dontHaddock super.bifunctors;
}

View File

@ -51,6 +51,7 @@ self: super: {
};
buildDepends = [ primitive ];
license = pkgs.stdenv.lib.licenses.bsd3;
broken = true; # needs template-haskell >=2.9 && <2.11
}) {};
# ghc-mod has a ghc-8 branch that has not yet been merged

View File

@ -88,20 +88,13 @@ package-maintainers:
- pipes-csv
- pipes-mongodb
khumba:
- goatee
- goatee-gtk
- hoppy-docs
- hoppy-generator
- hoppy-runtime
- hoppy-std
- qtah-cpp-qt5
- qtah-examples
- qtah-generator
- qtah-qt5
psibi:
- path-pieces
- persistent
- persistent-mongoDB
- persistent-mysql
- persistent-postgresql
- persistent-redis
@ -811,6 +804,7 @@ dont-distribute-packages:
collections-api: [ i686-linux, x86_64-linux ]
collections-base-instances: [ i686-linux, x86_64-linux ]
collections: [ i686-linux, x86_64-linux ]
colonnade: [ i686-linux, x86_64-darwin, x86_64-linux ]
color-counter: [ i686-linux, x86_64-darwin, x86_64-linux ]
coltrane: [ i686-linux, x86_64-linux ]
com: [ i686-linux, x86_64-linux ]
@ -1220,6 +1214,7 @@ dont-distribute-packages:
ecma262: [ i686-linux, x86_64-darwin, x86_64-linux ]
ecu: [ i686-linux, x86_64-linux ]
eddie: [ i686-linux, x86_64-darwin, x86_64-linux ]
ede: [ i686-linux, x86_64-darwin, x86_64-linux ]
edenmodules: [ i686-linux, x86_64-linux ]
edenskel: [ i686-linux, x86_64-linux ]
edentv: [ i686-linux, x86_64-linux ]
@ -1253,6 +1248,7 @@ dont-distribute-packages:
emgm: [ i686-linux, x86_64-linux ]
Emping: [ i686-linux, x86_64-linux ]
enchant: [ i686-linux, x86_64-darwin, x86_64-linux ]
engine-io-growler: [ i686-linux, x86_64-darwin, x86_64-linux ]
enumerate: [ i686-linux, x86_64-darwin, x86_64-linux ]
enumeration: [ i686-linux, x86_64-darwin, x86_64-linux ]
enumfun: [ i686-linux, x86_64-linux ]
@ -1418,6 +1414,7 @@ dont-distribute-packages:
formura: [ i686-linux, x86_64-linux ]
ForSyDe: [ i686-linux, x86_64-darwin, x86_64-linux ]
forth-hll: [ i686-linux, x86_64-linux ]
fortran-src: [ i686-linux, x86_64-darwin, x86_64-linux ]
foscam-sort: [ i686-linux, x86_64-linux ]
Foster: [ i686-linux, x86_64-darwin, x86_64-linux ]
fpco-api: [ i686-linux, x86_64-linux ]
@ -1508,9 +1505,11 @@ dont-distribute-packages:
GenussFold: [ i686-linux, x86_64-darwin, x86_64-linux ]
geo-resolver: [ i686-linux, x86_64-linux ]
GeocoderOpenCage: [ i686-linux, x86_64-linux ]
geodetic: [ i686-linux, x86_64-darwin, x86_64-linux ]
geodetics: [ i686-linux, x86_64-linux ]
geoip2: [ i686-linux ]
GeoIp: [ i686-linux, x86_64-linux ]
geolite-csv: [ i686-linux, x86_64-darwin, x86_64-linux ]
geom2d: [ i686-linux ]
GeomPredicates-SSE: [ i686-linux, x86_64-linux ]
getemx: [ i686-linux, x86_64-darwin, x86_64-linux ]
@ -1525,7 +1524,6 @@ dont-distribute-packages:
ghc-generic-instances: [ i686-linux, x86_64-linux ]
ghc-heap-view: [ i686-linux, x86_64-linux ]
ghc-imported-from: [ i686-linux, x86_64-linux ]
ghc-mod: [ i686-linux, x86_64-linux ]
ghc-parser: [ i686-linux, x86_64-linux ]
ghc-pkg-autofix: [ i686-linux, x86_64-linux ]
ghc-pkg-lib: [ i686-linux, x86_64-linux ]
@ -1573,6 +1571,7 @@ dont-distribute-packages:
gi-webkit2: [ i686-linux, x86_64-darwin, x86_64-linux ]
gi-webkit2webextension: [ i686-linux, x86_64-darwin, x86_64-linux ]
gi-webkit: [ i686-linux, x86_64-linux ]
giak: [ i686-linux, x86_64-darwin, x86_64-linux ]
Gifcurry: [ i686-linux, x86_64-darwin, x86_64-linux ]
ginger: [ i686-linux, x86_64-linux ]
ginsu: [ i686-linux, x86_64-linux ]
@ -1587,6 +1586,7 @@ dont-distribute-packages:
git: [ i686-linux, x86_64-linux ]
gitdo: [ i686-linux, x86_64-linux ]
github-backup: [ i686-linux, x86_64-linux ]
github-release: [ i686-linux, x86_64-darwin, x86_64-linux ]
github-utils: [ i686-linux, x86_64-linux ]
gitit: [ i686-linux, x86_64-darwin, x86_64-linux ]
gitlib-cross: [ i686-linux, x86_64-linux ]
@ -1627,6 +1627,8 @@ dont-distribute-packages:
goal-geometry: [ i686-linux, x86_64-darwin, x86_64-linux ]
goal-probability: [ i686-linux, x86_64-darwin, x86_64-linux ]
goal-simulation: [ i686-linux, x86_64-darwin, x86_64-linux ]
goatee-gtk: [ i686-linux, x86_64-darwin, x86_64-linux ]
goatee: [ i686-linux, x86_64-darwin, x86_64-linux ]
gofer-prelude: [ i686-linux, x86_64-linux ]
gogol-adexchange-buyer: [ i686-linux, x86_64-darwin, x86_64-linux ]
gogol-adexchange-seller: [ i686-linux, x86_64-darwin, x86_64-linux ]
@ -1773,6 +1775,7 @@ dont-distribute-packages:
groundhog-th: [ i686-linux, x86_64-darwin, x86_64-linux ]
groundhog: [ i686-linux, x86_64-darwin, x86_64-linux ]
Grow: [ i686-linux, x86_64-linux ]
growler: [ i686-linux, x86_64-darwin, x86_64-linux ]
GrowlNotify: [ i686-linux, x86_64-darwin, x86_64-linux ]
gruff-examples: [ i686-linux, x86_64-linux ]
gruff: [ i686-linux, x86_64-linux ]
@ -1975,6 +1978,12 @@ dont-distribute-packages:
haskell-rules: [ i686-linux, x86_64-linux ]
haskell-src-meta-mwotton: [ i686-linux, x86_64-linux ]
haskell-token-utils: [ i686-linux, x86_64-linux ]
haskell-tools-ast-fromghc: [ i686-linux, x86_64-darwin, x86_64-linux ]
haskell-tools-ast-gen: [ i686-linux, x86_64-darwin, x86_64-linux ]
haskell-tools-ast-trf: [ i686-linux, x86_64-darwin, x86_64-linux ]
haskell-tools-ast: [ i686-linux, x86_64-darwin, x86_64-linux ]
haskell-tools-prettyprint: [ i686-linux, x86_64-darwin, x86_64-linux ]
haskell-tools-refactor: [ i686-linux, x86_64-darwin, x86_64-linux ]
haskell-tor: [ i686-linux, x86_64-linux ]
haskell-type-exts: [ i686-linux, x86_64-linux ]
haskell-tyrant: [ i686-linux, x86_64-linux ]
@ -2075,6 +2084,7 @@ dont-distribute-packages:
hcube: [ i686-linux, x86_64-linux ]
hcwiid: [ i686-linux, x86_64-linux ]
hdaemonize-buildfix: [ i686-linux, x86_64-linux ]
hdaemonize: [ i686-linux, x86_64-darwin, x86_64-linux ]
hdbc-aeson: [ i686-linux, x86_64-linux ]
HDBC-mysql: [ i686-linux, x86_64-linux ]
HDBC-odbc: [ i686-linux, x86_64-linux ]
@ -2386,6 +2396,7 @@ dont-distribute-packages:
hsdns-cache: [ i686-linux, x86_64-linux ]
Hsed: [ i686-linux, x86_64-darwin, x86_64-linux ]
hsfacter: [ i686-linux, x86_64-darwin, x86_64-linux ]
hsfcsh: [ i686-linux, x86_64-darwin, x86_64-linux ]
HSFFIG: [ i686-linux, x86_64-darwin, x86_64-linux ]
HSGEP: [ i686-linux, x86_64-linux ]
hsgnutls-yj: [ i686-linux, x86_64-linux ]
@ -2462,6 +2473,7 @@ dont-distribute-packages:
htodo: [ i686-linux, x86_64-linux ]
hts: [ i686-linux, x86_64-linux ]
htsn-import: [ i686-linux, x86_64-darwin, x86_64-linux ]
htsn: [ i686-linux, x86_64-darwin, x86_64-linux ]
http-attoparsec: [ i686-linux, x86_64-darwin, x86_64-linux ]
http-client-request-modifiers: [ i686-linux, x86_64-darwin, x86_64-linux ]
http-conduit-browser: [ i686-linux, x86_64-linux ]
@ -2531,6 +2543,7 @@ dont-distribute-packages:
hyloutils: [ i686-linux, x86_64-linux ]
hyperdrive: [ i686-linux, x86_64-linux ]
hyperloglog: [ i686-linux, x86_64-darwin, x86_64-linux ]
hyperloglogplus: [ i686-linux, x86_64-darwin, x86_64-linux ]
hyperpublic: [ i686-linux, x86_64-darwin, x86_64-linux ]
hypher: [ i686-linux, x86_64-linux ]
i18n: [ i686-linux, x86_64-linux ]
@ -2625,6 +2638,7 @@ dont-distribute-packages:
IOR: [ i686-linux, x86_64-linux ]
IORefCAS: [ i686-linux, x86_64-linux ]
iotransaction: [ i686-linux, x86_64-linux ]
ip: [ i686-linux, x86_64-darwin, x86_64-linux ]
ipatch: [ i686-linux, x86_64-linux ]
ipc: [ i686-linux, x86_64-linux ]
ipopt-hs: [ i686-linux, x86_64-linux ]
@ -2875,6 +2889,7 @@ dont-distribute-packages:
libpafe: [ i686-linux, x86_64-linux ]
libpq: [ i686-linux, x86_64-linux ]
librandomorg: [ i686-linux, x86_64-linux ]
librato: [ i686-linux, x86_64-darwin, x86_64-linux ]
libroman: [ i686-linux, x86_64-darwin, x86_64-linux ]
libssh2-conduit: [ i686-linux, x86_64-linux ]
libsystemd-daemon: [ i686-linux, x86_64-linux ]
@ -2954,6 +2969,7 @@ dont-distribute-packages:
LogicGrowsOnTrees-network: [ i686-linux, x86_64-darwin, x86_64-linux ]
LogicGrowsOnTrees-processes: [ i686-linux, x86_64-darwin, x86_64-linux ]
LogicGrowsOnTrees: [ i686-linux, x86_64-darwin, x86_64-linux ]
logsink: [ i686-linux, x86_64-darwin, x86_64-linux ]
lojban: [ i686-linux, x86_64-darwin, x86_64-linux ]
lojbanParser: [ i686-linux, x86_64-linux ]
lojbanXiragan: [ i686-linux, x86_64-linux ]
@ -3081,6 +3097,7 @@ dont-distribute-packages:
microlens-aeson: [ i686-linux ]
midi-music-box: [ i686-linux, x86_64-darwin, x86_64-linux ]
midisurface: [ i686-linux, x86_64-linux ]
mighttpd2: [ i686-linux, x86_64-darwin, x86_64-linux ]
mighttpd: [ i686-linux, x86_64-darwin, x86_64-linux ]
milena: [ i686-linux, x86_64-linux ]
mime-string: [ i686-linux, x86_64-linux ]
@ -3405,6 +3422,7 @@ dont-distribute-packages:
Paraiso: [ i686-linux, x86_64-darwin, x86_64-linux ]
parallel-tasks: [ i686-linux, x86_64-linux ]
parameterized-data: [ i686-linux, x86_64-darwin, x86_64-linux ]
paranoia: [ i686-linux, x86_64-darwin, x86_64-linux ]
parco-attoparsec: [ i686-linux, x86_64-linux ]
parco-parsec: [ i686-linux, x86_64-linux ]
parco: [ i686-linux, x86_64-linux ]
@ -3445,6 +3463,7 @@ dont-distribute-packages:
perdure: [ i686-linux, x86_64-darwin, x86_64-linux ]
PerfectHash: [ i686-linux, x86_64-linux ]
perfecthash: [ i686-linux, x86_64-linux ]
periodic: [ i686-linux, x86_64-darwin, x86_64-linux ]
permute: [ i686-linux, x86_64-linux ]
PermuteEffects: [ i686-linux, x86_64-darwin, x86_64-linux ]
persistable-record: [ i686-linux, x86_64-linux ]
@ -3453,6 +3472,7 @@ dont-distribute-packages:
persistent-database-url: [ i686-linux, x86_64-linux ]
persistent-hssqlppp: [ i686-linux, x86_64-linux ]
persistent-map: [ i686-linux, x86_64-linux ]
persistent-mongoDB: [ i686-linux, x86_64-darwin, x86_64-linux ]
persistent-odbc: [ i686-linux, x86_64-linux ]
persistent-protobuf: [ i686-linux, x86_64-linux ]
persistent-ratelimit: [ i686-linux, x86_64-linux ]
@ -3641,6 +3661,10 @@ dont-distribute-packages:
qhull-simple: [ i686-linux, x86_64-linux ]
QIO: [ i686-linux, x86_64-linux ]
qt: [ i686-linux, x86_64-linux ]
qtah-cpp-qt5: [ i686-linux, x86_64-darwin, x86_64-linux ]
qtah-examples: [ i686-linux, x86_64-darwin, x86_64-linux ]
qtah-generator: [ i686-linux, x86_64-darwin, x86_64-linux ]
qtah-qt5: [ i686-linux, x86_64-darwin, x86_64-linux ]
QuadEdge: [ i686-linux, x86_64-linux ]
quadratic-irrational: [ i686-linux, x86_64-linux ]
QuadTree: [ i686-linux, x86_64-linux ]
@ -3666,6 +3690,7 @@ dont-distribute-packages:
quickterm: [ i686-linux, x86_64-darwin, x86_64-linux ]
quicktest: [ i686-linux, x86_64-darwin, x86_64-linux ]
quickwebapp: [ i686-linux, x86_64-linux ]
quipper: [ i686-linux, x86_64-darwin, x86_64-linux ]
quiver-groups: [ i686-linux, x86_64-darwin, x86_64-linux ]
quiver-interleave: [ i686-linux, x86_64-linux ]
quiver-sort: [ i686-linux, x86_64-darwin, x86_64-linux ]
@ -3802,6 +3827,7 @@ dont-distribute-packages:
repl-toolkit: [ i686-linux, x86_64-linux ]
repl: [ i686-linux, x86_64-darwin, x86_64-linux ]
RepLib: [ i686-linux, x86_64-linux ]
replicant: [ i686-linux, x86_64-darwin, x86_64-linux ]
repo-based-blog: [ i686-linux, x86_64-darwin, x86_64-linux ]
repr: [ i686-linux, x86_64-linux ]
representable-functors: [ i686-linux, x86_64-linux ]
@ -3839,6 +3865,7 @@ dont-distribute-packages:
RNAFold: [ i686-linux, x86_64-darwin, x86_64-linux ]
RNAFoldProgs: [ i686-linux, x86_64-darwin, x86_64-linux ]
RNAwolf: [ i686-linux, x86_64-darwin, x86_64-linux ]
robin: [ i686-linux, x86_64-darwin, x86_64-linux ]
robot: [ i686-linux, x86_64-linux ]
roguestar-engine: [ i686-linux, x86_64-darwin, x86_64-linux ]
roguestar-gl: [ i686-linux, x86_64-linux ]
@ -3971,6 +3998,7 @@ dont-distribute-packages:
servant-aeson-specs: [ i686-linux, x86_64-darwin, x86_64-linux ]
servant-csharp: [ i686-linux, x86_64-linux ]
servant-docs: [ i686-linux ]
servant-ede: [ i686-linux, x86_64-darwin, x86_64-linux ]
servant-elm: [ i686-linux, x86_64-linux ]
servant-examples: [ i686-linux, x86_64-linux ]
servant-github: [ i686-linux, x86_64-linux ]
@ -4050,6 +4078,7 @@ dont-distribute-packages:
simseq: [ i686-linux, x86_64-linux ]
sindre: [ i686-linux, x86_64-linux ]
singleton-nats: [ i686-linux, x86_64-darwin, x86_64-linux ]
siphon: [ i686-linux, x86_64-darwin, x86_64-linux ]
sirkel: [ i686-linux, x86_64-darwin, x86_64-linux ]
sized-vector: [ i686-linux, x86_64-linux ]
sized: [ i686-linux, x86_64-linux ]
@ -4069,6 +4098,7 @@ dont-distribute-packages:
smartGroup: [ i686-linux, x86_64-linux ]
smartword: [ i686-linux, x86_64-darwin, x86_64-linux ]
sme: [ i686-linux, x86_64-linux ]
smerdyakov: [ i686-linux, x86_64-darwin, x86_64-linux ]
Smooth: [ i686-linux, x86_64-linux ]
smsaero: [ i686-linux, x86_64-linux ]
smt-lib: [ i686-linux, x86_64-darwin, x86_64-linux ]
@ -4192,6 +4222,7 @@ dont-distribute-packages:
sqlvalue-list: [ i686-linux, x86_64-linux ]
squeeze: [ i686-linux, x86_64-darwin, x86_64-linux ]
srcinst: [ i686-linux, x86_64-linux ]
sshtun: [ i686-linux, x86_64-darwin, x86_64-linux ]
sssp: [ i686-linux, x86_64-linux ]
sstable: [ i686-linux, x86_64-darwin, x86_64-linux ]
stable-marriage: [ i686-linux, x86_64-linux ]
@ -4208,8 +4239,10 @@ dont-distribute-packages:
statistics-dirichlet: [ i686-linux, x86_64-linux ]
statistics-fusion: [ i686-linux, x86_64-linux ]
stb-truetype: [ i686-linux, x86_64-linux ]
steeloverseer: [ i686-linux, x86_64-darwin, x86_64-linux ]
step-function: [ i686-linux, x86_64-linux ]
stepwise: [ i686-linux, x86_64-linux ]
stgi: [ i686-linux, x86_64-darwin, x86_64-linux ]
stm-chunked-queues: [ i686-linux, x86_64-darwin, x86_64-linux ]
stmcontrol: [ i686-linux, x86_64-darwin, x86_64-linux ]
Stomp: [ i686-linux, x86_64-linux ]
@ -4302,6 +4335,7 @@ dont-distribute-packages:
system-canonicalpath: [ i686-linux, x86_64-linux ]
system-lifted: [ i686-linux, x86_64-linux ]
system-random-effect: [ i686-linux, x86_64-linux ]
systemstats: [ i686-linux, x86_64-darwin, x86_64-linux ]
t-regex: [ i686-linux, x86_64-darwin, x86_64-linux ]
t3-client: [ i686-linux, x86_64-darwin, x86_64-linux ]
t3-server: [ i686-linux, x86_64-darwin, x86_64-linux ]
@ -4313,6 +4347,7 @@ dont-distribute-packages:
tagged-list: [ i686-linux, x86_64-linux ]
tagged-th: [ i686-linux, x86_64-linux ]
tagsoup-ht: [ i686-linux, x86_64-linux ]
tagsoup-megaparsec: [ i686-linux, x86_64-darwin, x86_64-linux ]
tagsoup-parsec: [ i686-linux, x86_64-linux ]
takusen-oracle: [ i686-linux, x86_64-linux ]
Takusen: [ i686-linux, x86_64-linux ]
@ -4422,8 +4457,6 @@ dont-distribute-packages:
timezone-olson-th: [ i686-linux, x86_64-darwin, x86_64-linux ]
timezone-olson: [ i686-linux, x86_64-darwin, x86_64-linux ]
timezone-series: [ i686-linux, x86_64-darwin, x86_64-linux ]
tinc: [ i686-linux, x86_64-darwin, x86_64-linux ]
tinc: [ i686-linux, x86_64-darwin, x86_64-linux ]
TinyLaunchbury: [ i686-linux, x86_64-linux ]
TinyURL: [ i686-linux, x86_64-linux ]
tip-haskell-frontend: [ i686-linux, x86_64-linux ]
@ -4569,6 +4602,7 @@ dont-distribute-packages:
uri-conduit: [ i686-linux, x86_64-linux ]
uri-enumerator-file: [ i686-linux, x86_64-linux ]
uri-enumerator: [ i686-linux, x86_64-linux ]
uri-templater: [ i686-linux, x86_64-darwin, x86_64-linux ]
url-generic: [ i686-linux, x86_64-linux ]
urlcheck: [ i686-linux, x86_64-linux ]
urldecode: [ i686-linux, x86_64-linux ]
@ -4649,6 +4683,7 @@ dont-distribute-packages:
vulkan: [ i686-linux, x86_64-linux ]
wacom-daemon: [ i686-linux, x86_64-linux ]
waddle: [ i686-linux, x86_64-linux ]
wai-app-file-cgi: [ i686-linux, x86_64-darwin, x86_64-linux ]
wai-devel: [ i686-linux, x86_64-darwin, x86_64-linux ]
wai-dispatch: [ i686-linux, x86_64-darwin, x86_64-linux ]
wai-graceful: [ i686-linux, x86_64-linux ]
@ -4724,6 +4759,7 @@ dont-distribute-packages:
windowslive: [ i686-linux, x86_64-linux ]
winerror: [ i686-linux, x86_64-linux ]
winio: [ i686-linux, x86_64-linux ]
wire-streams: [ i686-linux, x86_64-darwin, x86_64-linux ]
wiring: [ i686-linux, x86_64-linux ]
wkt: [ i686-linux, x86_64-linux ]
WL500gPControl: [ i686-linux, x86_64-darwin, x86_64-linux ]
@ -4847,9 +4883,11 @@ dont-distribute-packages:
yesod-continuations: [ i686-linux, x86_64-darwin, x86_64-linux ]
yesod-crud-persist: [ i686-linux, x86_64-darwin, x86_64-linux ]
yesod-crud: [ i686-linux, x86_64-linux ]
yesod-csp: [ i686-linux, x86_64-darwin, x86_64-linux ]
yesod-datatables: [ i686-linux, x86_64-linux ]
yesod-examples: [ i686-linux, x86_64-linux ]
yesod-goodies: [ i686-linux, x86_64-darwin, x86_64-linux ]
yesod-ip: [ i686-linux, x86_64-darwin, x86_64-linux ]
yesod-links: [ i686-linux, x86_64-linux ]
yesod-mangopay: [ i686-linux, x86_64-linux ]
yesod-markdown: [ i686-linux, x86_64-darwin, x86_64-linux ]

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

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