Merge remote-tracking branch 'upstream/master' into hardened-stdenv
This commit is contained in:
commit
f222d98746
|
@ -1,6 +1,7 @@
|
||||||
[<img src="http://nixos.org/logo/nixos-hires.png" width="500px" alt="logo" />](https://nixos.org/nixos)
|
[<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)
|
[![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/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)
|
[![Issue Stats](http://www.issuestats.com/github/nixos/nixpkgs/badge/issue?style=flat)](http://www.issuestats.com/github/nixos/nixpkgs)
|
||||||
|
|
||||||
|
|
|
@ -1319,6 +1319,25 @@ someVar=$(stripHash $name; echo $strippedName)
|
||||||
<envar>GST_PLUGIN_SYSTEM_PATH</envar> environment variable.</para></listitem>
|
<envar>GST_PLUGIN_SYSTEM_PATH</envar> environment variable.</para></listitem>
|
||||||
</varlistentry>
|
</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>
|
</variablelist>
|
||||||
|
|
||||||
</para>
|
</para>
|
||||||
|
|
|
@ -312,6 +312,7 @@
|
||||||
pmiddend = "Philipp Middendorf <pmidden@secure.mailbox.org>";
|
pmiddend = "Philipp Middendorf <pmidden@secure.mailbox.org>";
|
||||||
prikhi = "Pavan Rikhi <pavan.rikhi@gmail.com>";
|
prikhi = "Pavan Rikhi <pavan.rikhi@gmail.com>";
|
||||||
profpatsch = "Profpatsch <mail@profpatsch.de>";
|
profpatsch = "Profpatsch <mail@profpatsch.de>";
|
||||||
|
proglodyte = "Proglodyte <proglodyte23@gmail.com>";
|
||||||
pshendry = "Paul Hendry <paul@pshendry.com>";
|
pshendry = "Paul Hendry <paul@pshendry.com>";
|
||||||
psibi = "Sibi <sibi@psibi.in>";
|
psibi = "Sibi <sibi@psibi.in>";
|
||||||
pSub = "Pascal Wittmann <mail@pascal-wittmann.de>";
|
pSub = "Pascal Wittmann <mail@pascal-wittmann.de>";
|
||||||
|
@ -376,6 +377,7 @@
|
||||||
SShrike = "Severen Redwood <severen@shrike.me>";
|
SShrike = "Severen Redwood <severen@shrike.me>";
|
||||||
stephenmw = "Stephen Weinberg <stephen@q5comm.com>";
|
stephenmw = "Stephen Weinberg <stephen@q5comm.com>";
|
||||||
steveej = "Stefan Junker <mail@stefanjunker.de>";
|
steveej = "Stefan Junker <mail@stefanjunker.de>";
|
||||||
|
swarren83 = "Shawn Warren <shawn.w.warren@gmail.com>";
|
||||||
swistak35 = "Rafał Łasocha <me@swistak35.com>";
|
swistak35 = "Rafał Łasocha <me@swistak35.com>";
|
||||||
szczyp = "Szczyp <qb@szczyp.com>";
|
szczyp = "Szczyp <qb@szczyp.com>";
|
||||||
sztupi = "Attila Sztupak <attila.sztupak@gmail.com>";
|
sztupi = "Attila Sztupak <attila.sztupak@gmail.com>";
|
||||||
|
@ -433,4 +435,5 @@
|
||||||
zimbatm = "zimbatm <zimbatm@zimbatm.com>";
|
zimbatm = "zimbatm <zimbatm@zimbatm.com>";
|
||||||
zohl = "Al Zohali <zohl@fmap.me>";
|
zohl = "Al Zohali <zohl@fmap.me>";
|
||||||
zoomulator = "Kim Simmons <zoomulator@gmail.com>";
|
zoomulator = "Kim Simmons <zoomulator@gmail.com>";
|
||||||
|
amiloradovsky = "Andrew Miloradovsky <miloradovsky@gmail.com>";
|
||||||
}
|
}
|
||||||
|
|
|
@ -395,15 +395,20 @@ my $meta = read_meta($pkg_path);
|
||||||
|
|
||||||
DEBUG( "metadata: ", encode_json( $meta->as_struct ) ) if defined $meta;
|
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(
|
my @build_deps = sort( uniq(
|
||||||
get_deps( $cb, $meta, "configure" ),
|
get_deps( $cb, $meta, "configure" ),
|
||||||
get_deps( $cb, $meta, "build" ),
|
get_deps( $cb, $meta, "build" ),
|
||||||
get_deps( $cb, $meta, "test" )
|
get_deps( $cb, $meta, "test" )
|
||||||
) );
|
) );
|
||||||
INFO("build deps: @build_deps");
|
|
||||||
|
|
||||||
my @runtime_deps = sort( uniq( get_deps( $cb, $meta, "runtime" ) ) );
|
# Filter out runtime dependencies since those are already handled.
|
||||||
INFO("runtime deps: @runtime_deps");
|
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;
|
my $homepage = $meta ? $meta->resources->{homepage} : undef;
|
||||||
INFO("homepage: $homepage") if defined $homepage;
|
INFO("homepage: $homepage") if defined $homepage;
|
||||||
|
|
|
@ -7,7 +7,11 @@
|
||||||
<title>Imperative Container Management</title>
|
<title>Imperative Container Management</title>
|
||||||
|
|
||||||
<para>We’ll cover imperative container management using
|
<para>We’ll 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:
|
identifier <literal>foo</literal> as follows:
|
||||||
|
|
||||||
<screen>
|
<screen>
|
||||||
|
|
|
@ -23,6 +23,7 @@ effect after you run <command>nixos-rebuild</command>.</para>
|
||||||
<xi:include href="x-windows.xml" />
|
<xi:include href="x-windows.xml" />
|
||||||
<xi:include href="networking.xml" />
|
<xi:include href="networking.xml" />
|
||||||
<xi:include href="linux-kernel.xml" />
|
<xi:include href="linux-kernel.xml" />
|
||||||
|
<xi:include href="grsecurity.xml" />
|
||||||
|
|
||||||
<!-- FIXME: auto-include NixOS module docs -->
|
<!-- FIXME: auto-include NixOS module docs -->
|
||||||
<xi:include href="postgresql.xml" />
|
<xi:include href="postgresql.xml" />
|
||||||
|
|
335
nixos/doc/manual/configuration/grsecurity.xml
Normal file
335
nixos/doc/manual/configuration/grsecurity.xml
Normal 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 — 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>
|
|
@ -45,9 +45,14 @@ following incompatible changes:</para>
|
||||||
<para>Other notable improvements:</para>
|
<para>Other notable improvements:</para>
|
||||||
|
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>
|
|
||||||
<para>todo</para>
|
<listitem><para>Revamped grsecurity/PaX support. There is now only a single
|
||||||
</listitem>
|
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>
|
</itemizedlist>
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@ let
|
||||||
clientConf = writeText "client.conf" ''
|
clientConf = writeText "client.conf" ''
|
||||||
autospawn=${if nonSystemWide then "yes" else "no"}
|
autospawn=${if nonSystemWide then "yes" else "no"}
|
||||||
${optionalString nonSystemWide "daemon-binary=${cfg.package.out}/bin/pulseaudio"}
|
${optionalString nonSystemWide "daemon-binary=${cfg.package.out}/bin/pulseaudio"}
|
||||||
|
${cfg.extraClientConf}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# Write an /etc/asound.conf that causes all ALSA applications to
|
# 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 {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
default = pulseaudioLight;
|
default = pulseaudioLight;
|
||||||
|
|
|
@ -271,6 +271,8 @@
|
||||||
squeezelite = 248;
|
squeezelite = 248;
|
||||||
turnserver = 249;
|
turnserver = 249;
|
||||||
smokeping = 250;
|
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!
|
# 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
|
#squeezelite = 248; #unused
|
||||||
turnserver = 249;
|
turnserver = 249;
|
||||||
smokeping = 250;
|
smokeping = 250;
|
||||||
|
gocd-agent = 251;
|
||||||
|
gocd-server = 252;
|
||||||
|
|
||||||
# When adding a gid, make sure it doesn't match an existing
|
# When adding a gid, make sure it doesn't match an existing
|
||||||
# uid. Users and groups with the same name should have equal
|
# uid. Users and groups with the same name should have equal
|
||||||
|
|
|
@ -130,6 +130,8 @@
|
||||||
./services/computing/slurm/slurm.nix
|
./services/computing/slurm/slurm.nix
|
||||||
./services/continuous-integration/buildkite-agent.nix
|
./services/continuous-integration/buildkite-agent.nix
|
||||||
./services/continuous-integration/hydra/default.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/default.nix
|
||||||
./services/continuous-integration/jenkins/job-builder.nix
|
./services/continuous-integration/jenkins/job-builder.nix
|
||||||
./services/continuous-integration/jenkins/slave.nix
|
./services/continuous-integration/jenkins/slave.nix
|
||||||
|
@ -461,6 +463,7 @@
|
||||||
./services/ttys/gpm.nix
|
./services/ttys/gpm.nix
|
||||||
./services/ttys/kmscon.nix
|
./services/ttys/kmscon.nix
|
||||||
./services/web-apps/pump.io.nix
|
./services/web-apps/pump.io.nix
|
||||||
|
./services/web-apps/tt-rss.nix
|
||||||
./services/web-servers/apache-httpd/default.nix
|
./services/web-servers/apache-httpd/default.nix
|
||||||
./services/web-servers/caddy.nix
|
./services/web-servers/caddy.nix
|
||||||
./services/web-servers/fcgiwrap.nix
|
./services/web-servers/fcgiwrap.nix
|
||||||
|
@ -470,7 +473,7 @@
|
||||||
./services/web-servers/lighttpd/gitweb.nix
|
./services/web-servers/lighttpd/gitweb.nix
|
||||||
./services/web-servers/lighttpd/inginious.nix
|
./services/web-servers/lighttpd/inginious.nix
|
||||||
./services/web-servers/nginx/default.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/shellinabox.nix
|
||||||
./services/web-servers/tomcat.nix
|
./services/web-servers/tomcat.nix
|
||||||
./services/web-servers/uwsgi.nix
|
./services/web-servers/uwsgi.nix
|
||||||
|
|
|
@ -50,11 +50,11 @@ in
|
||||||
(isEnabled "PAX")
|
(isEnabled "PAX")
|
||||||
(isYES "GRKERNSEC_SYSCTL")
|
(isYES "GRKERNSEC_SYSCTL")
|
||||||
(isYES "GRKERNSEC_SYSCTL_DISTRO")
|
(isYES "GRKERNSEC_SYSCTL_DISTRO")
|
||||||
|
(isNO "GRKERNSEC_NO_RBAC")
|
||||||
];
|
];
|
||||||
|
|
||||||
# Install PaX related utillities into the system profile. Eventually, we
|
# Install PaX related utillities into the system profile.
|
||||||
# also want to include gradm here.
|
environment.systemPackages = with pkgs; [ gradm paxctl pax-utils ];
|
||||||
environment.systemPackages = with pkgs; [ paxctl pax-utils ];
|
|
||||||
|
|
||||||
# Install rules for the grsec device node
|
# Install rules for the grsec device node
|
||||||
services.udev.packages = [ pkgs.gradm ];
|
services.udev.packages = [ pkgs.gradm ];
|
||||||
|
|
|
@ -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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -128,6 +128,10 @@ in
|
||||||
description = "Hostname of the MySQL master server";
|
description = "Hostname of the MySQL master server";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
slaveHost = mkOption {
|
||||||
|
description = "Hostname of the MySQL slave server";
|
||||||
|
};
|
||||||
|
|
||||||
masterUser = mkOption {
|
masterUser = mkOption {
|
||||||
description = "Username of the MySQL replication user";
|
description = "Username of the MySQL replication user";
|
||||||
};
|
};
|
||||||
|
@ -231,10 +235,21 @@ in
|
||||||
fi
|
fi
|
||||||
'') cfg.initialDatabases}
|
'') cfg.initialDatabases}
|
||||||
|
|
||||||
${optionalString (cfg.replication.role == "slave" && atLeast55)
|
${optionalString (cfg.replication.role == "master" && atLeast55)
|
||||||
''
|
''
|
||||||
# Set up the replication master
|
# 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 "stop slave;"
|
||||||
echo "change master to master_host='${cfg.replication.masterHost}', master_user='${cfg.replication.masterUser}', master_password='${cfg.replication.masterPassword}';"
|
echo "change master to master_host='${cfg.replication.masterHost}', master_user='${cfg.replication.masterUser}', master_password='${cfg.replication.masterPassword}';"
|
||||||
echo "start slave;"
|
echo "start slave;"
|
||||||
|
|
|
@ -9,6 +9,7 @@ let
|
||||||
|
|
||||||
header = {
|
header = {
|
||||||
description = "Syncthing service";
|
description = "Syncthing service";
|
||||||
|
after = [ "network.target" ];
|
||||||
environment = {
|
environment = {
|
||||||
STNORESTART = "yes";
|
STNORESTART = "yes";
|
||||||
STNOUPGRADE = "yes";
|
STNOUPGRADE = "yes";
|
||||||
|
@ -113,9 +114,8 @@ in
|
||||||
|
|
||||||
environment.systemPackages = [ cfg.package ];
|
environment.systemPackages = [ cfg.package ];
|
||||||
|
|
||||||
systemd.services = mkIf cfg.systemService {
|
systemd.services.syncthing = mkIf cfg.systemService
|
||||||
syncthing = header // {
|
header // {
|
||||||
after = [ "network.target" ];
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
serviceConfig = service // {
|
serviceConfig = service // {
|
||||||
User = cfg.user;
|
User = cfg.user;
|
||||||
|
@ -124,14 +124,14 @@ in
|
||||||
ExecStart = "${cfg.package}/bin/syncthing -no-browser -home=${cfg.dataDir}";
|
ExecStart = "${cfg.package}/bin/syncthing -no-browser -home=${cfg.dataDir}";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user.services = {
|
systemd.user.services.syncthing =
|
||||||
syncthing = header // {
|
header // {
|
||||||
|
wantedBy = [ "default.target" ];
|
||||||
serviceConfig = service // {
|
serviceConfig = service // {
|
||||||
ExecStart = "${cfg.package}/bin/syncthing -no-browser";
|
ExecStart = "${cfg.package}/bin/syncthing -no-browser";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,10 @@ in
|
||||||
KillMode = "process";
|
KillMode = "process";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
environment.systemPackages = [ pkgs.zerotierone ];
|
|
||||||
|
# ZeroTier does not issue DHCP leases, but some strangers might...
|
||||||
|
networking.dhcpcd.denyInterfaces = [ "zt0" ];
|
||||||
|
|
||||||
|
environment.systemPackages = [ pkgs.zerotierone ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
569
nixos/modules/services/web-apps/tt-rss.nix
Normal file
569
nixos/modules/services/web-apps/tt-rss.nix
Normal 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}"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -9,6 +9,12 @@ let
|
||||||
|
|
||||||
pidFile = "${stateDir}/phpfpm.pid";
|
pidFile = "${stateDir}/phpfpm.pid";
|
||||||
|
|
||||||
|
mkPool = n: p: ''
|
||||||
|
[${n}]
|
||||||
|
listen = ${p.listen}
|
||||||
|
${p.extraConfig}
|
||||||
|
'';
|
||||||
|
|
||||||
cfgFile = pkgs.writeText "phpfpm.conf" ''
|
cfgFile = pkgs.writeText "phpfpm.conf" ''
|
||||||
[global]
|
[global]
|
||||||
pid = ${pidFile}
|
pid = ${pidFile}
|
||||||
|
@ -16,7 +22,7 @@ let
|
||||||
daemonize = yes
|
daemonize = yes
|
||||||
${cfg.extraConfig}
|
${cfg.extraConfig}
|
||||||
|
|
||||||
${concatStringsSep "\n" (mapAttrsToList (n: v: "[${n}]\n${v}") cfg.poolConfigs)}
|
${concatStringsSep "\n" (mapAttrsToList mkPool cfg.pools)}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
phpIni = pkgs.writeText "php.ini" ''
|
phpIni = pkgs.writeText "php.ini" ''
|
||||||
|
@ -61,33 +67,19 @@ in {
|
||||||
"Options appended to the PHP configuration file <filename>php.ini</filename>.";
|
"Options appended to the PHP configuration file <filename>php.ini</filename>.";
|
||||||
};
|
};
|
||||||
|
|
||||||
poolConfigs = mkOption {
|
pools = mkOption {
|
||||||
type = types.attrsOf types.lines;
|
type = types.attrsOf (types.submodule (import ./pool-options.nix {
|
||||||
|
inherit lib;
|
||||||
|
}));
|
||||||
default = {};
|
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 = ''
|
description = ''
|
||||||
A mapping between PHP FPM pool names and their configurations.
|
If no pools are defined, the phpfpm service is disabled.
|
||||||
See the documentation on <literal>php-fpm.conf</literal> for
|
|
||||||
details on configuration directives. If no pools are defined,
|
|
||||||
the phpfpm service is disabled.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf (cfg.poolConfigs != {}) {
|
config = mkIf (cfg.pools != {}) {
|
||||||
|
|
||||||
systemd.services.phpfpm = {
|
systemd.services.phpfpm = {
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
35
nixos/modules/services/web-servers/phpfpm/pool-options.nix
Normal file
35
nixos/modules/services/web-servers/phpfpm/pool-options.nix
Normal 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.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ let
|
||||||
makeColor = n: value: "COLOR_${toString n}=${value}";
|
makeColor = n: value: "COLOR_${toString n}=${value}";
|
||||||
makeColorCS =
|
makeColorCS =
|
||||||
let positions = [ "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E" "F" ];
|
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;
|
colors = concatImapStringsSep "\n" makeColor config.i18n.consoleColors;
|
||||||
|
|
||||||
isUnicode = hasSuffix "UTF-8" (toUpper config.i18n.defaultLocale);
|
isUnicode = hasSuffix "UTF-8" (toUpper config.i18n.defaultLocale);
|
||||||
|
|
|
@ -64,7 +64,7 @@ in rec {
|
||||||
(all nixos.tests.installer.btrfsSubvols)
|
(all nixos.tests.installer.btrfsSubvols)
|
||||||
(all nixos.tests.installer.btrfsSubvolDefault)
|
(all nixos.tests.installer.btrfsSubvolDefault)
|
||||||
(all nixos.tests.boot.biosCdrom)
|
(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.uefiCdrom)
|
||||||
(all nixos.tests.boot.uefiUsb)
|
(all nixos.tests.boot.uefiUsb)
|
||||||
(all nixos.tests.boot-stage1)
|
(all nixos.tests.boot-stage1)
|
||||||
|
|
|
@ -228,6 +228,8 @@ in rec {
|
||||||
tests.firewall = callTest tests/firewall.nix {};
|
tests.firewall = callTest tests/firewall.nix {};
|
||||||
tests.fleet = hydraJob (import tests/fleet.nix { system = "x86_64-linux"; });
|
tests.fleet = hydraJob (import tests/fleet.nix { system = "x86_64-linux"; });
|
||||||
#tests.gitlab = callTest tests/gitlab.nix {};
|
#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 = callTest tests/gnome3.nix {};
|
||||||
tests.gnome3-gdm = callTest tests/gnome3-gdm.nix {};
|
tests.gnome3-gdm = callTest tests/gnome3-gdm.nix {};
|
||||||
tests.grsecurity = callTest tests/grsecurity.nix {};
|
tests.grsecurity = callTest tests/grsecurity.nix {};
|
||||||
|
|
34
nixos/tests/gocd-agent.nix
Normal file
34
nixos/tests/gocd-agent.nix
Normal 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'");
|
||||||
|
'';
|
||||||
|
})
|
28
nixos/tests/gocd-server.nix
Normal file
28
nixos/tests/gocd-server.nix
Normal 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");
|
||||||
|
'';
|
||||||
|
})
|
|
@ -9,7 +9,6 @@ import ./make-test.nix ({ pkgs, ...} : {
|
||||||
machine = { config, pkgs, ... }:
|
machine = { config, pkgs, ... }:
|
||||||
{ security.grsecurity.enable = true;
|
{ security.grsecurity.enable = true;
|
||||||
boot.kernel.sysctl."kernel.grsecurity.deter_bruteforce" = 0;
|
boot.kernel.sysctl."kernel.grsecurity.deter_bruteforce" = 0;
|
||||||
security.apparmor.enable = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
|
@ -33,9 +32,15 @@ import ./make-test.nix ({ pkgs, ...} : {
|
||||||
$machine->succeed("${pkgs.paxtest}/lib/paxtest/mprotstack") =~ /Killed/ or die;
|
$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 {
|
subtest "tcc", sub {
|
||||||
$machine->execute("echo -e '#include <stdio.h>\nint main(void) { puts(\"hello\"); return 0; }' >main.c");
|
$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");
|
$machine->succeed("${pkgs.tinycc.bin}/bin/tcc -run main.c");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
subtest "RBAC", sub {
|
||||||
|
$machine->succeed("[ -c /dev/grsec ]");
|
||||||
|
};
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
|
|
@ -19,12 +19,10 @@ in
|
||||||
services.mysql.enable = true;
|
services.mysql.enable = true;
|
||||||
services.mysql.package = pkgs.mysql;
|
services.mysql.package = pkgs.mysql;
|
||||||
services.mysql.replication.role = "master";
|
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.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 ];
|
networking.firewall.allowedTCPPorts = [ 3306 ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -56,10 +54,11 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
startAll;
|
$master->start;
|
||||||
|
|
||||||
$master->waitForUnit("mysql");
|
|
||||||
$master->waitForUnit("mysql");
|
$master->waitForUnit("mysql");
|
||||||
|
$slave1->start;
|
||||||
|
$slave2->start;
|
||||||
|
$slave1->waitForUnit("mysql");
|
||||||
$slave2->waitForUnit("mysql");
|
$slave2->waitForUnit("mysql");
|
||||||
$slave2->sleep(100); # Hopefully this is long enough!!
|
$slave2->sleep(100); # Hopefully this is long enough!!
|
||||||
$slave2->succeed("echo 'use testdb; select * from tests' | mysql -u root -N | grep 4");
|
$slave2->succeed("echo 'use testdb; select * from tests' | mysql -u root -N | grep 4");
|
||||||
|
|
|
@ -10,7 +10,6 @@ import ./make-test.nix ({ pkgs, ...} : {
|
||||||
|
|
||||||
{
|
{
|
||||||
services.mysql.enable = true;
|
services.mysql.enable = true;
|
||||||
services.mysql.replication.role = "master";
|
|
||||||
services.mysql.initialDatabases = [ { name = "testdb"; schema = ./testdb.sql; } ];
|
services.mysql.initialDatabases = [ { name = "testdb"; schema = ./testdb.sql; } ];
|
||||||
services.mysql.package = pkgs.mysql;
|
services.mysql.package = pkgs.mysql;
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "ponymix-${version}";
|
name = "ponymix-${version}";
|
||||||
version = "4";
|
version = "5";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://code.falconindy.com/archive/ponymix/${name}.tar.xz";
|
url = "http://code.falconindy.com/archive/ponymix/${name}.tar.xz";
|
||||||
sha256 = "008pk3sqc8955k2f502z1syzv43a4q0yk5ws69lgpqfsy1mzki2d";
|
sha256 = "0qn2kms9h9b7da2xzkdgzrykhhdywr4psxnz03j8rg7wa9nwfw0x";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ libpulseaudio libnotify ];
|
buildInputs = [ libpulseaudio libnotify ];
|
||||||
|
|
|
@ -2,15 +2,15 @@
|
||||||
libharu, opencv, vigra, postgresql }:
|
libharu, opencv, vigra, postgresql }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "saga-2.2.2";
|
name = "saga-2.3.1";
|
||||||
|
|
||||||
buildInputs = [ gdal wxGTK30 proj libharu opencv vigra postgresql libiodbc lzma jasper ];
|
buildInputs = [ gdal wxGTK30 proj libharu opencv vigra postgresql libiodbc lzma jasper ];
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/project/saga-gis/SAGA%20-%202.2/SAGA%202.2.2/saga-2.2.2.tar.gz";
|
url = "mirror://sourceforge/project/saga-gis/SAGA%20-%202.3/SAGA%202.3.1/saga_2.3.1.tar.gz";
|
||||||
sha256 = "031cd70b7ec248f32f955a9316aefc7f7ab283c5129c49aa4bd748717d20357e";
|
sha256 = "1h4zkfid9z02mqm1f8az9j0pzmm95f83ra57c4r7bvrrz21w3xaq";
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
|
22
pkgs/applications/graphics/exrtools/default.nix
Normal file
22
pkgs/applications/graphics/exrtools/default.nix
Normal 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 ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
{ fetchurl, stdenv, m4, glibc, gtk3, libexif, libgphoto2, libsoup, libxml2, vala, sqlite
|
{ fetchurl, stdenv, m4, glibc, gtk3, libexif, libgphoto2, libsoup, libxml2, vala, sqlite
|
||||||
, webkitgtk, pkgconfig, gnome3, gst_all_1, which, udev, libgudev, libraw, glib, json_glib
|
, webkitgtk, pkgconfig, gnome3, gst_all_1, which, udev, libgudev, libraw, glib, json_glib
|
||||||
, gettext, desktop_file_utils, lcms2, gdk_pixbuf, librsvg, makeWrapper
|
, 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/
|
# for dependencies see http://www.yorba.org/projects/shotwell/install/
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "${major}.${minor}";
|
version = "${major}.${minor}";
|
||||||
major = "0.23";
|
major = "0.23";
|
||||||
minor = "2";
|
minor = "4";
|
||||||
name = "shotwell-${version}";
|
name = "shotwell-${version}";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://gnome/sources/shotwell/${major}/${name}.tar.xz";
|
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";
|
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 .
|
patchShebangs .
|
||||||
'';
|
'';
|
||||||
|
|
||||||
postInstall = ''
|
|
||||||
mkdir -p $out/share/gsettings-schemas/$name
|
|
||||||
mv $out/share/glib-2.0 $out/share/gsettings-schemas/$name/
|
|
||||||
'';
|
|
||||||
|
|
||||||
preFixup = ''
|
preFixup = ''
|
||||||
wrapProgram "$out/bin/shotwell" \
|
wrapProgram "$out/bin/shotwell" \
|
||||||
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
|
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
|
||||||
|
@ -42,7 +37,7 @@ stdenv.mkDerivation rec {
|
||||||
which udev libgudev gnome3.gexiv2 hicolor_icon_theme
|
which udev libgudev gnome3.gexiv2 hicolor_icon_theme
|
||||||
libraw json_glib gettext desktop_file_utils glib lcms2 gdk_pixbuf librsvg
|
libraw json_glib gettext desktop_file_utils glib lcms2 gdk_pixbuf librsvg
|
||||||
makeWrapper gnome_doc_utils gnome3.rest
|
makeWrapper gnome_doc_utils gnome3.rest
|
||||||
gnome3.defaultIconTheme ];
|
gnome3.defaultIconTheme itstool ];
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "Popular photo organizer for the GNOME desktop";
|
description = "Popular photo organizer for the GNOME desktop";
|
||||||
|
|
|
@ -2,14 +2,14 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "emem";
|
pname = "emem";
|
||||||
version = "0.2.18";
|
version = "0.2.23";
|
||||||
name = "${pname}-${version}";
|
name = "${pname}-${version}";
|
||||||
|
|
||||||
inherit jdk;
|
inherit jdk;
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/ebzzry/${pname}/releases/download/v${version}/${pname}.jar";
|
url = "https://github.com/ebzzry/${pname}/releases/download/v${version}/${pname}.jar";
|
||||||
sha256 = "090sd1q345xlari267j4k27lglnch26dkwa9pibb1q70hdygv0w8";
|
sha256 = "0isvhwczbm5fr8bkq45g9i80s50r4vw92b7f3wdzwx7p5sj48pwj";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ ];
|
buildInputs = [ ];
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -4,39 +4,24 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "lighthouse-${date}";
|
name = "lighthouse-${date}";
|
||||||
date = "2016-01-26";
|
date = "2016-07-20";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "emgram769";
|
owner = "emgram769";
|
||||||
repo = "lighthouse";
|
repo = "lighthouse";
|
||||||
rev = "bf11f111572475e855b0329202a14c9e128c7e57";
|
rev = "d1813ef8e2aca9f6b3609b1e0c6d1d5ee683281a";
|
||||||
sha256 = "1ppika61vg4sc9mczbkjqy2mhgxqg57xrnsmmq0h2lyvj0yhg3qn";
|
sha256 = "0v6ylm49f1b44zwq1y1gqxp2csyqblplr24ajllc2q3r0sc9m1ys";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
pkgconfig libX11 libxcb cairo gtk pango python27 python3
|
pkgconfig libX11 libxcb cairo gtk pango python27 python3
|
||||||
];
|
];
|
||||||
|
|
||||||
patches = [ ./Makefile.patch ];
|
makeFlags = [ "PREFIX=\${out}" ];
|
||||||
|
|
||||||
lighthouseInstaller = ''
|
preFixup = "chmod +x $out/share/lighthouse/.config/lighthouse/google.py";
|
||||||
#!${stdenv.shell}
|
|
||||||
cp -r $out/share/lighthouse/.config/lighthouse \$HOME/.config
|
|
||||||
chmod -R +w \$HOME/.config/lighthouse
|
|
||||||
'';
|
|
||||||
|
|
||||||
installPhase = ''
|
postFixup = "chmod -x $out/share/lighthouse/.config/lighthouse/google.py";
|
||||||
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
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "A simple flexible popup dialog to run on X";
|
description = "A simple flexible popup dialog to run on X";
|
||||||
|
|
43
pkgs/applications/misc/metamorphose2/default.nix
Normal file
43
pkgs/applications/misc/metamorphose2/default.nix
Normal 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;
|
||||||
|
};
|
||||||
|
}
|
|
@ -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
|
, libXi, xextproto, gettext, perl, pkgconfig, libyubikey, ykpers
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "pwsafe-${version}";
|
name = "pwsafe-${version}";
|
||||||
version = "0.95";
|
version = "0.99";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchFromGitHub {
|
||||||
url = "mirror://sourceforge/passwordsafe/pwsafe-${version}BETA-src.tgz";
|
owner = "pwsafe";
|
||||||
sha256 = "f0b081bc358fee97fce20f352e360960d2813989023b837102b90ba6ed787d46";
|
repo = "pwsafe";
|
||||||
|
rev = "${version}BETA";
|
||||||
|
sha256 = "1bkimz4g9v9kfjkqr3dqddh4jps7anzc1hgmirmmhwpac0xdp60g";
|
||||||
};
|
};
|
||||||
|
|
||||||
makefile = "Makefile.linux";
|
makefile = "Makefile.linux";
|
||||||
|
@ -30,6 +32,9 @@ stdenv.mkDerivation rec {
|
||||||
substituteInPlace $f --replace /usr/share/ $out/share/
|
substituteInPlace $f --replace /usr/share/ $out/share/
|
||||||
done
|
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
|
for f in `grep -Rl /usr/bin/ .`; do
|
||||||
substituteInPlace $f --replace /usr/bin/ ""
|
substituteInPlace $f --replace /usr/bin/ ""
|
||||||
done
|
done
|
||||||
|
@ -45,7 +50,7 @@ stdenv.mkDerivation rec {
|
||||||
$out/share/locale
|
$out/share/locale
|
||||||
|
|
||||||
(cd help && make -f Makefile.linux)
|
(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)
|
(cd src/ui/wxWidgets/I18N && make mos)
|
||||||
cp -dr src/ui/wxWidgets/I18N/mos/* $out/share/locale/
|
cp -dr src/ui/wxWidgets/I18N/mos/* $out/share/locale/
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
, libdrm, libffi, libICE, libSM
|
, libdrm, libffi, libICE, libSM
|
||||||
, libX11, libXcomposite, libXext, libXmu, libXrender, libxcb
|
, libX11, libXcomposite, libXext, libXmu, libXrender, libxcb
|
||||||
, libxml2, libxslt, ncurses, zlib
|
, libxml2, libxslt, ncurses, zlib
|
||||||
, qtbase, qtdeclarative, qtquick1, qtwebkit
|
, qtbase, qtdeclarative, qtwebkit
|
||||||
}:
|
}:
|
||||||
|
|
||||||
# this package contains the daemon version of dropbox
|
# this package contains the daemon version of dropbox
|
||||||
|
@ -23,11 +23,11 @@
|
||||||
let
|
let
|
||||||
# NOTE: When updating, please also update in current stable,
|
# NOTE: When updating, please also update in current stable,
|
||||||
# as older versions stop working
|
# as older versions stop working
|
||||||
version = "4.4.29";
|
version = "6.4.14";
|
||||||
sha256 =
|
sha256 =
|
||||||
{
|
{
|
||||||
"x86_64-linux" = "1ff01vqi9jiwhkqm81rh321bsz4brl11xal2xzm9gll7s2m8lz06";
|
"x86_64-linux" = "0wpdib3jf5bq4k8q5xv9g01fdcfjb4l903xjxn32rjw615s1q8bg";
|
||||||
"i686-linux" = "0lwvvyxy5xyxh0b2g8a9bdy0y2hgpbak4n6q6b30167fvpj1ad1i";
|
"i686-linux" = "1lgc7ryp2mn230cfsbndn9ss71l378kib0lvs89rkn25d5zfgzn4";
|
||||||
}."${stdenv.system}" or (throw "system ${stdenv.system} not supported");
|
}."${stdenv.system}" or (throw "system ${stdenv.system} not supported");
|
||||||
|
|
||||||
arch =
|
arch =
|
||||||
|
@ -45,7 +45,7 @@ let
|
||||||
libX11 libXcomposite libXext libXmu libXrender libxcb libxml2 libxslt
|
libX11 libXcomposite libXext libXmu libXrender libxcb libxml2 libxslt
|
||||||
ncurses zlib
|
ncurses zlib
|
||||||
|
|
||||||
qtbase qtdeclarative qtquick1 qtwebkit
|
qtbase qtdeclarative qtwebkit
|
||||||
];
|
];
|
||||||
|
|
||||||
desktopItem = makeDesktopItem {
|
desktopItem = makeDesktopItem {
|
||||||
|
|
|
@ -9,29 +9,10 @@
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
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;
|
system-x86_64 = lib.elem stdenv.system lib.platforms.x86_64;
|
||||||
packagedQt = "5.6.0";
|
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 {
|
in stdenv.mkDerivation rec {
|
||||||
name = "telegram-desktop-${version}";
|
name = "telegram-desktop-${version}";
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
{ stdenv, fetchurl, makeWrapper, makeDesktopItem, ant, jdk, jre }:
|
{ stdenv, fetchurl, makeWrapper, makeDesktopItem, ant, jdk, jre }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "3.4";
|
version = "3.5";
|
||||||
name = "jabref-${version}";
|
name = "jabref-${version}";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/JabRef/jabref/releases/download/v${version}/JabRef-${version}.jar";
|
url = "https://github.com/JabRef/jabref/releases/download/v${version}/JabRef-${version}.jar";
|
||||||
sha256 = "1pimjx1452z159hvi199n52j5vkdj5c59mns9mi5mqvwhgm9dghd";
|
sha256 = "19q86xc8qr6j8zd9rsc6aa3jd4kbblkr6ik1h6h7npq012019adm";
|
||||||
};
|
};
|
||||||
|
|
||||||
desktopItem = makeDesktopItem {
|
desktopItem = makeDesktopItem {
|
||||||
|
|
|
@ -1,15 +1,17 @@
|
||||||
{ stdenv, fetchurl, cmake, freetype, libpng, mesa, gettext, openssl, perl, libiconv
|
{ stdenv, fetchurl, cmake, freetype, libpng, mesa, gettext, openssl, perl, libiconv
|
||||||
, qtscript, qtserialport, qttools
|
, qtscript, qtserialport, qttools, makeQtWrapper
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "stellarium-0.14.2";
|
name = "stellarium-0.14.3";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/stellarium/${name}.tar.gz";
|
url = "mirror://sourceforge/stellarium/${name}.tar.gz";
|
||||||
sha256 = "1xxil0rv61zc08znfv83cpsc47y1gjl2f3njhz0pn5zd8jpaa15a";
|
sha256 = "1919wzlvhfxdxficbwhp31xlhm0571grgcmsfdp5y36z9yqwahfy";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ makeQtWrapper ];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
cmake freetype libpng mesa gettext openssl perl libiconv qtscript
|
cmake freetype libpng mesa gettext openssl perl libiconv qtscript
|
||||||
qtserialport qttools
|
qtserialport qttools
|
||||||
|
@ -17,6 +19,10 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
wrapQtProgram "$out/bin/stellarium"
|
||||||
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "Free open-source planetarium";
|
description = "Free open-source planetarium";
|
||||||
homepage = "http://stellarium.org/";
|
homepage = "http://stellarium.org/";
|
||||||
|
|
|
@ -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 {
|
stdenv.mkDerivation rec {
|
||||||
name = "cvc4-${version}";
|
name = "cvc4-${version}";
|
||||||
version = "1.4";
|
version = "1.5pre-smtcomp2016";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://cvc4.cs.nyu.edu/builds/src/cvc4-${version}.tar.gz";
|
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 = ''
|
preConfigure = ''
|
||||||
patchShebangs ./src/
|
patchShebangs ./src/
|
||||||
OLD_CPPFLAGS="$CPPFLAGS"
|
|
||||||
export CPPFLAGS="$CPPFLAGS -P"
|
|
||||||
'';
|
'';
|
||||||
postConfigure = ''CPPFLAGS="$OLD_CPPFLAGS"'';
|
|
||||||
doChecks = true;
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "A high-performance theorem prover and SMT solver";
|
description = "A high-performance theorem prover and SMT solver";
|
||||||
homepage = http://cvc4.cs.nyu.edu/web/;
|
homepage = http://cvc4.cs.nyu.edu/web/;
|
||||||
license = licenses.bsd3;
|
license = licenses.gpl3;
|
||||||
platforms = platforms.unix;
|
platforms = platforms.unix;
|
||||||
maintainers = with maintainers; [ vbgl thoughtpolice ];
|
maintainers = with maintainers; [ vbgl thoughtpolice ];
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,18 +1,20 @@
|
||||||
{ stdenv, fetchurl, perl, mlton }:
|
{ stdenv, fetchFromGitHub, perl, mlton }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "metis-prover-${version}";
|
name = "metis-prover-${version}";
|
||||||
version = "2.3.20160102";
|
version = "2.3.20160713";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchFromGitHub {
|
||||||
url = "http://www.gilith.com/software/metis/metis.tar.gz";
|
owner = "gilith";
|
||||||
sha256 = "13csr90i9lsxdyzxqiwgi98pa7phfl28drjcv4qdjhzi71wcdc66";
|
repo = "metis";
|
||||||
|
rev = "f0b1a17cd57eb098077e963ab092477aee9fb340";
|
||||||
|
sha256 = "1i7paax7b4byk8110f5zk4071mh5603r82bq7hbprqzljvsiipk7";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ perl ];
|
nativeBuildInputs = [ perl ];
|
||||||
buildInputs = [ mlton ];
|
buildInputs = [ mlton ];
|
||||||
|
|
||||||
patchPhase = "patchShebangs scripts/mlpp";
|
patchPhase = "patchShebangs .";
|
||||||
|
|
||||||
buildPhase = "make mlton";
|
buildPhase = "make mlton";
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ rec {
|
||||||
svnSupport = true;
|
svnSupport = true;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
git-annex = pkgs.haskell.packages.lts.git-annex-with-assistant;
|
git-annex = pkgs.haskell.packages.lts.git-annex;
|
||||||
gitAnnex = git-annex;
|
gitAnnex = git-annex;
|
||||||
|
|
||||||
git-annex-remote-b2 = callPackage ./git-annex-remote-b2 { };
|
git-annex-remote-b2 = callPackage ./git-annex-remote-b2 { };
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
, libv4l
|
, libv4l
|
||||||
, x264
|
, x264
|
||||||
, curl
|
, curl
|
||||||
|
, xorg
|
||||||
|
, makeWrapper
|
||||||
|
|
||||||
, alsaSupport ? false
|
, alsaSupport ? false
|
||||||
, alsaLib
|
, alsaLib
|
||||||
|
@ -20,13 +22,13 @@ let
|
||||||
optional = stdenv.lib.optional;
|
optional = stdenv.lib.optional;
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
name = "obs-studio-${version}";
|
name = "obs-studio-${version}";
|
||||||
version = "0.14.2";
|
version = "0.15.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "jp9000";
|
owner = "jp9000";
|
||||||
repo = "obs-studio";
|
repo = "obs-studio";
|
||||||
rev = "${version}";
|
rev = "${version}";
|
||||||
sha256 = "05yjm58d6daya1x6v8d73gx8fb20l0icay74nx0v4si2c898vm1j";
|
sha256 = "0vw203a1zj2npras589ml6gr5s11h9bhaica90plrh5ajayg0qwj";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake
|
nativeBuildInputs = [ cmake
|
||||||
|
@ -40,6 +42,7 @@ in stdenv.mkDerivation rec {
|
||||||
qtbase
|
qtbase
|
||||||
qtx11extras
|
qtx11extras
|
||||||
x264
|
x264
|
||||||
|
makeWrapper
|
||||||
]
|
]
|
||||||
++ optional alsaSupport alsaLib
|
++ optional alsaSupport alsaLib
|
||||||
++ optional pulseaudioSupport libpulseaudio;
|
++ optional pulseaudioSupport libpulseaudio;
|
||||||
|
@ -49,6 +52,11 @@ in stdenv.mkDerivation rec {
|
||||||
# to handle this.
|
# to handle this.
|
||||||
cmakeFlags = [ "-DCMAKE_CXX_FLAGS=-DDL_OPENGL=\\\"$(out)/lib/libobs-opengl.so\\\"" ];
|
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; {
|
meta = with stdenv.lib; {
|
||||||
description = "Free and open source software for video recording and live streaming";
|
description = "Free and open source software for video recording and live streaming";
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
|
|
|
@ -1,18 +1,51 @@
|
||||||
{ stdenv, fetchurl, pkgconfig, intltool, itstool, makeWrapper
|
{ stdenv, fetchurl, pkgconfig, intltool, itstool, wrapGAppsHook
|
||||||
, python3Packages, gst, gtk3, hicolor_icon_theme
|
, python3Packages, gst, gtk3, hicolor_icon_theme
|
||||||
, gobjectIntrospection, librsvg, gnome3, libnotify
|
, gobjectIntrospection, librsvg, gnome3, libnotify
|
||||||
|
# for gst-transcoder:
|
||||||
|
, which, meson, ninja
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
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 {
|
in stdenv.mkDerivation rec {
|
||||||
name = "pitivi-${version}";
|
name = "pitivi-${version}";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://gnome/sources/pitivi/${version}/${name}.tar.xz";
|
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; {
|
meta = with stdenv.lib; {
|
||||||
description = "Non-Linear video editor utilizing the power of GStreamer";
|
description = "Non-Linear video editor utilizing the power of GStreamer";
|
||||||
homepage = "http://pitivi.org/";
|
homepage = "http://pitivi.org/";
|
||||||
|
@ -24,26 +57,4 @@ in stdenv.mkDerivation rec {
|
||||||
license = licenses.lgpl21Plus;
|
license = licenses.lgpl21Plus;
|
||||||
platforms = platforms.linux;
|
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"
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,14 +4,15 @@
|
||||||
let
|
let
|
||||||
# Always get the information from
|
# Always get the information from
|
||||||
# https://github.com/coreos/rkt/blob/v${VERSION}/stage1/usr_from_coreos/coreos-common.mk
|
# 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";
|
coreosImageSystemdVersion = "229";
|
||||||
|
|
||||||
# TODO: track https://github.com/coreos/rkt/issues/1758 to allow "host" flavor.
|
# TODO: track https://github.com/coreos/rkt/issues/1758 to allow "host" flavor.
|
||||||
stage1Flavours = [ "coreos" "fly" ];
|
stage1Flavours = [ "coreos" "fly" ];
|
||||||
|
stage1Dir = "lib/rkt/stage1-images";
|
||||||
|
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
version = "1.10.1";
|
version = "1.11.0";
|
||||||
name = "rkt-${version}";
|
name = "rkt-${version}";
|
||||||
BUILDDIR="build-${name}";
|
BUILDDIR="build-${name}";
|
||||||
|
|
||||||
|
@ -19,12 +20,12 @@ in stdenv.mkDerivation rec {
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
owner = "coreos";
|
owner = "coreos";
|
||||||
repo = "rkt";
|
repo = "rkt";
|
||||||
sha256 = "0hy6b0lyjsh0m1ca7hga31nybrbi9wpf8c59wbzvm1wlnqzsjkqi";
|
sha256 = "05lm9grckbyjmv1292v00vw4h3nv6r7gmq04zhahcjyw7crx06sv";
|
||||||
};
|
};
|
||||||
|
|
||||||
stage1BaseImage = fetchurl {
|
stage1BaseImage = fetchurl {
|
||||||
url = "http://alpha.release.core-os.net/amd64-usr/${coreosImageRelease}/coreos_production_pxe_image.cpio.gz";
|
url = "http://alpha.release.core-os.net/amd64-usr/${coreosImageRelease}/coreos_production_pxe_image.cpio.gz";
|
||||||
sha256 = "06jawmjkhrrw9hsk98w5j6pxci17d46mvzbj52pslakacw60pbpp";
|
sha256 = "0dzp0vsjbipx8mcikrc5l7k3qjrg4y7h63r2nx6cycy7qhcmj85a";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
@ -41,6 +42,7 @@ in stdenv.mkDerivation rec {
|
||||||
--with-coreos-local-pxe-image-path=${stage1BaseImage}
|
--with-coreos-local-pxe-image-path=${stage1BaseImage}
|
||||||
--with-coreos-local-pxe-image-systemd-version=v${coreosImageSystemdVersion}
|
--with-coreos-local-pxe-image-systemd-version=v${coreosImageSystemdVersion}
|
||||||
" else "" }
|
" 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
|
cp -Rv $BUILDDIR/target/bin/rkt $out/bin
|
||||||
|
|
||||||
mkdir -p $out/lib/rkt/stage1-images/
|
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 \
|
wrapProgram $out/bin/rkt \
|
||||||
--prefix LD_LIBRARY_PATH : ${systemd}/lib \
|
--prefix LD_LIBRARY_PATH : ${systemd}/lib \
|
||||||
|
|
35
pkgs/applications/window-managers/evilwm/default.nix
Normal file
35
pkgs/applications/window-managers/evilwm/default.nix
Normal 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;
|
||||||
|
};
|
||||||
|
}
|
24
pkgs/applications/window-managers/i3/blocks-gaps.nix
Normal file
24
pkgs/applications/window-managers/i3/blocks-gaps.nix
Normal 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;
|
||||||
|
};
|
||||||
|
}
|
|
@ -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 }:
|
, libX11 , libXrender, libXext, libXinerama, libXrandr, libXft }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
|
@ -6,15 +6,14 @@ stdenv.mkDerivation rec {
|
||||||
version = "hg-2012-12-09";
|
version = "hg-2012-12-09";
|
||||||
name = "wmii-${version}";
|
name = "wmii-${version}";
|
||||||
|
|
||||||
src = fetchhg {
|
src = fetchurl {
|
||||||
url = https://code.google.com/p/wmii/;
|
url = https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/wmii/source-archive.zip;
|
||||||
sha256 = "1wqw41jb2fhq902a04ixfzmx0lia1pawahm1ymyrs3is6mm32r51";
|
sha256 = "1wmkq14zvmfrmydl8752xz852cy7agrx3qp4fy2cc5asb2r9abaz";
|
||||||
inherit rev;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# for dlopen-ing
|
# for dlopen-ing
|
||||||
patchPhase = ''
|
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"
|
substituteInPlace cmd/wmii.sh.sh --replace "\$(which which)" "${which}/bin/which"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
@ -30,14 +29,14 @@ stdenv.mkDerivation rec {
|
||||||
EOF
|
EOF
|
||||||
'';
|
'';
|
||||||
|
|
||||||
buildInputs = [ pkgconfig libixp_hg txt2tags dash python which
|
buildInputs = [ unzip pkgconfig libixp_hg txt2tags dash python which
|
||||||
libX11 libXrender libXext libXinerama libXrandr libXft ];
|
libX11 libXrender libXext libXinerama libXrandr libXft ];
|
||||||
|
|
||||||
# For some reason including mercurial in buildInputs did not help
|
# For some reason including mercurial in buildInputs did not help
|
||||||
makeFlags = "WMII_HGVERSION=hg${rev}";
|
makeFlags = "WMII_HGVERSION=hg${rev}";
|
||||||
|
|
||||||
meta = {
|
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";
|
description = "A small window manager controlled by a 9P filesystem";
|
||||||
maintainers = with stdenv.lib.maintainers; [ kovirobi ];
|
maintainers = with stdenv.lib.maintainers; [ kovirobi ];
|
||||||
license = stdenv.lib.licenses.mit;
|
license = stdenv.lib.licenses.mit;
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "man-pages-${version}";
|
name = "man-pages-${version}";
|
||||||
version = "4.06";
|
version = "4.07";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://kernel/linux/docs/man-pages/${name}.tar.xz";
|
url = "mirror://kernel/linux/docs/man-pages/${name}.tar.xz";
|
||||||
sha256 = "0vv056k9yyf05dqal9m2pq3pv9c8lnp7i5rjxvcnic6aq7vyrafb";
|
sha256 = "1vimj3va16plxmv46rw6nzw4m9l11hb7r1d217y1bjpd5q8nw8qz";
|
||||||
};
|
};
|
||||||
|
|
||||||
# keep developer docs separately (man2 and man3)
|
# keep developer docs separately (man2 and man3)
|
||||||
|
|
|
@ -2,13 +2,15 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "fira-code-${version}";
|
name = "fira-code-${version}";
|
||||||
version = "1.102";
|
version = "1.200";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/tonsky/FiraCode/releases/download/${version}/FiraCode_${version}.zip";
|
url = "https://github.com/tonsky/FiraCode/releases/download/${version}/FiraCode_${version}.zip";
|
||||||
sha256 = "0vcrzf7dmcy3n2ic05ihadmfgzmmmp0vz8grnqaxfi3y1jpw8ggy";
|
sha256 = "1zja7fsfh3xx2qv9wv46997d02l5nm483b5s39jpmxfracj8qam7";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sourceRoot = "otf";
|
||||||
|
|
||||||
buildInputs = [ unzip ];
|
buildInputs = [ unzip ];
|
||||||
phases = [ "unpackPhase" "installPhase" ];
|
phases = [ "unpackPhase" "installPhase" ];
|
||||||
|
|
||||||
|
|
|
@ -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;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,39 +1,41 @@
|
||||||
{ stdenv, fetchurl, wrapFonts }:
|
{ stdenv, fetchurl, mkfontdir, mkfontscale }:
|
||||||
|
|
||||||
let
|
stdenv.mkDerivation rec {
|
||||||
|
name = "ucs-fonts-${version}";
|
||||||
|
version = "20090406";
|
||||||
|
|
||||||
srcA = fetchurl {
|
srcs = [
|
||||||
url = http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz;
|
(fetchurl {
|
||||||
sha256 = "12hgizg25fzmk10wjl0c88x97h3pg5r9ga122s3y28wixz6x2bvh";
|
url = http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz;
|
||||||
};
|
sha256 = "12hgizg25fzmk10wjl0c88x97h3pg5r9ga122s3y28wixz6x2bvh";
|
||||||
|
})
|
||||||
srcB = fetchurl {
|
(fetchurl {
|
||||||
url = http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts-asian.tar.gz;
|
url = http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts-asian.tar.gz;
|
||||||
sha256 = "0ibjy4xpz5j373hsdr8bx99czfpclqmviwwv768j8n7z12z3wa51";
|
sha256 = "0ibjy4xpz5j373hsdr8bx99czfpclqmviwwv768j8n7z12z3wa51";
|
||||||
};
|
})
|
||||||
|
(fetchurl {
|
||||||
srcC = fetchurl {
|
url = http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts-75dpi100dpi.tar.gz;
|
||||||
url = http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts-75dpi100dpi.tar.gz;
|
sha256 = "08vqr8yb636xa1s28vf3pm22dzkia0gisvsi2svqjqh4kk290pzh";
|
||||||
sha256 = "08vqr8yb636xa1s28vf3pm22dzkia0gisvsi2svqjqh4kk290pzh";
|
})
|
||||||
};
|
];
|
||||||
|
|
||||||
in
|
sourceRoot = ".";
|
||||||
|
|
||||||
|
buildInputs = [ mkfontdir mkfontscale ];
|
||||||
|
|
||||||
|
phases = [ "unpackPhase" "installPhase" ];
|
||||||
|
|
||||||
wrapFonts (stdenv.mkDerivation {
|
|
||||||
name = "ucs-fonts";
|
|
||||||
|
|
||||||
phases = ["installPhase"];
|
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
tar xf ${srcA}
|
mkdir -p $out/share/fonts
|
||||||
tar xf ${srcB}
|
cp *.bdf $out/share/fonts
|
||||||
tar xf ${srcC}
|
cd $out/share/fonts
|
||||||
mkdir -p $out/share/fonts/ucs-fonts
|
mkfontdir
|
||||||
cp *.bdf $out/share/fonts/ucs-fonts
|
mkfontscale
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = with stdenv.lib; {
|
||||||
description = "Unicode bitmap fonts";
|
description = "Unicode bitmap fonts";
|
||||||
maintainers = [stdenv.lib.maintainers.raskin];
|
maintainers = [ maintainers.raskin ];
|
||||||
|
platforms = platforms.all;
|
||||||
};
|
};
|
||||||
})
|
}
|
||||||
|
|
|
@ -4,10 +4,11 @@ libffi, pam, alsaLib, luajit, bzip2, libuuid, libpthreadstubs, gdbm, libcap, mes
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "enlightenment-${version}";
|
name = "enlightenment-${version}";
|
||||||
version = "0.21.0";
|
version = "0.21.1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://download.enlightenment.org/rel/apps/enlightenment/${name}.tar.xz";
|
url = "http://download.enlightenment.org/rel/apps/enlightenment/${name}.tar.xz";
|
||||||
sha256 = "0p85dmk9ysbf9y7vlc92z7495mh9l860xj3s8pspy9mscv3dnwg9";
|
sha256 = "119sxrgrz163c01yx0q9n2jpmmbv0a58akmz0c2z4xy37f1m02rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{ stdenv, intltool, fetchurl, pkgconfig, udisks2, libsecret, libdvdread
|
{ 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
|
, itstool, gnome3, librsvg, gdk_pixbuf, libxml2, python
|
||||||
, libcanberra_gtk3, libxslt, libtool, docbook_xsl, libpwquality }:
|
, libcanberra_gtk3, libxslt, libtool, docbook_xsl, libpwquality }:
|
||||||
|
|
||||||
|
@ -17,13 +17,8 @@ stdenv.mkDerivation rec {
|
||||||
libnotify libdvdread libcanberra_gtk3 docbook_xsl
|
libnotify libdvdread libcanberra_gtk3 docbook_xsl
|
||||||
gdk_pixbuf gnome3.defaultIconTheme
|
gdk_pixbuf gnome3.defaultIconTheme
|
||||||
librsvg udisks2 gnome3.gnome_settings_daemon
|
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; {
|
meta = with stdenv.lib; {
|
||||||
homepage = http://en.wikipedia.org/wiki/GNOME_Disks;
|
homepage = http://en.wikipedia.org/wiki/GNOME_Disks;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{ stdenv, fetchurl, pkgconfig, dbus, libgcrypt, libtasn1, pam, python, glib, libxslt
|
{ 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 }:
|
, docbook_xsl_ns, docbook_xsl, gnome3 }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
|
@ -7,7 +7,7 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
buildInputs = with gnome3; [
|
buildInputs = with gnome3; [
|
||||||
dbus libgcrypt pam python gtk3 gconf libgnome_keyring
|
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 ];
|
propagatedBuildInputs = [ glib libtasn1 libxslt ];
|
||||||
|
@ -19,13 +19,6 @@ stdenv.mkDerivation rec {
|
||||||
"--with-pkcs11-modules=$$out/lib/pkcs11/"
|
"--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; {
|
meta = with stdenv.lib; {
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
maintainers = gnome3.maintainers;
|
maintainers = gnome3.maintainers;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{ stdenv, fetchurl, pkgconfig, glib, libxslt, gtk, makeWrapper
|
{ stdenv, fetchurl, pkgconfig, glib, libxslt, gtk, makeWrapper
|
||||||
, webkitgtk, json_glib, rest, libsecret, dbus_glib, gnome_common
|
, webkitgtk, json_glib, rest, libsecret, dbus_glib, gnome_common
|
||||||
, telepathy_glib, intltool, dbus_libs, icu, autoreconfHook
|
, 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 {
|
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
|
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
|
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; {
|
meta = with stdenv.lib; {
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
|
|
|
@ -20,6 +20,7 @@ kdeApp {
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
extra-cmake-modules
|
extra-cmake-modules
|
||||||
kdoctools
|
kdoctools
|
||||||
|
makeQtWrapper
|
||||||
];
|
];
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
gmp kconfig kconfigwidgets kguiaddons kinit knotifications
|
gmp kconfig kconfigwidgets kguiaddons kinit knotifications
|
||||||
|
|
|
@ -1,15 +1,14 @@
|
||||||
{ fetchgit, stdenv, guile, guile_lib, gwrap
|
{ fetchurl, stdenv, guile, guile_lib, gwrap
|
||||||
, pkgconfig, gconf, glib, gnome_vfs, gtk
|
, pkgconfig, gconf, glib, gnome_vfs, gtk
|
||||||
, libglade, libgnome, libgnomecanvas, libgnomeui
|
, libglade, libgnome, libgnomecanvas, libgnomeui
|
||||||
, pango, guileCairo, autoconf, automake, texinfo }:
|
, pango, guileCairo, autoconf, automake, texinfo }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "guile-gnome-platform-20150123";
|
name = "guile-gnome-platform-2.16.4";
|
||||||
|
|
||||||
src = fetchgit {
|
src = fetchurl {
|
||||||
url = "git://git.sv.gnu.org/guile-gnome.git";
|
url = "http://ftp.gnu.org/pub/gnu/guile-gnome/guile-gnome-platform/${name}.tar.gz";
|
||||||
rev = "0fcbe69797b9501b8f1283a78eb92bf43b08d080";
|
sha256 = "adabd48ed5993d8528fd604e0aa0d96ad81a61d06da6cdd68323572ad6c216c3";
|
||||||
sha256 = "19nsxwhrmrs9n16sb99pgy6zp6zpvmsd285kcjb54y362li7yc83";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
@ -38,7 +37,7 @@ stdenv.mkDerivation rec {
|
||||||
# The test suite tries to open an X display, which fails.
|
# The test suite tries to open an X display, which fails.
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
meta = {
|
meta = with stdenv.lib; {
|
||||||
description = "GNOME bindings for GNU Guile";
|
description = "GNOME bindings for GNU Guile";
|
||||||
|
|
||||||
longDescription =
|
longDescription =
|
||||||
|
@ -51,8 +50,8 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
homepage = http://www.gnu.org/software/guile-gnome/;
|
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 ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,9 +5,7 @@ with import ./lib.nix { inherit pkgs; };
|
||||||
self: super: {
|
self: super: {
|
||||||
|
|
||||||
# Some packages need a non-core version of Cabal.
|
# 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 = 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.
|
# Link statically to avoid runtime dependency on GHC.
|
||||||
jailbreak-cabal = (disableSharedExecutables super.jailbreak-cabal).override { Cabal = dontJailbreak self.Cabal_1_20_0_4; };
|
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;
|
clock = dontCheck super.clock;
|
||||||
Dust-crypto = dontCheck super.Dust-crypto;
|
Dust-crypto = dontCheck super.Dust-crypto;
|
||||||
hasql-postgres = dontCheck super.hasql-postgres;
|
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-expectations = dontCheck super.hspec-expectations;
|
||||||
hspec = super.hspec.override { stringbuilder = dontCheck super.stringbuilder; };
|
hspec = super.hspec.override { stringbuilder = dontCheck super.stringbuilder; };
|
||||||
HTTP = dontCheck super.HTTP;
|
HTTP = dontCheck super.HTTP;
|
||||||
nanospec_0_2_0 = dontCheck super.nanospec_0_2_0;
|
|
||||||
nanospec = dontCheck super.nanospec;
|
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;
|
options = dontCheck super.options;
|
||||||
statistics = dontCheck super.statistics;
|
statistics = dontCheck super.statistics;
|
||||||
c2hs = dontCheck super.c2hs;
|
c2hs = dontCheck super.c2hs;
|
||||||
|
@ -53,31 +36,8 @@ self: super: {
|
||||||
# Link the proper version.
|
# Link the proper version.
|
||||||
zeromq4-haskell = super.zeromq4-haskell.override { zeromq = pkgs.zeromq4; };
|
zeromq4-haskell = super.zeromq4-haskell.override { zeromq = pkgs.zeromq4; };
|
||||||
|
|
||||||
# This package needs a little help compiling properly on Darwin. Furthermore,
|
# This package needs a little help compiling properly on Darwin.
|
||||||
# Stackage compiles git-annex without the Assistant, supposedly because not
|
git-annex = (overrideCabal super.git-annex (drv: {
|
||||||
# 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: {
|
|
||||||
src = pkgs.fetchFromGitHub {
|
src = pkgs.fetchFromGitHub {
|
||||||
owner = "joeyh";
|
owner = "joeyh";
|
||||||
repo = "git-annex";
|
repo = "git-annex";
|
||||||
|
@ -175,13 +135,6 @@ self: super: {
|
||||||
HDBC-odbc = dontHaddock super.HDBC-odbc;
|
HDBC-odbc = dontHaddock super.HDBC-odbc;
|
||||||
hoodle-core = dontHaddock super.hoodle-core;
|
hoodle-core = dontHaddock super.hoodle-core;
|
||||||
hsc3-db = dontHaddock super.hsc3-db;
|
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;
|
hspec-discover = dontHaddock super.hspec-discover;
|
||||||
http-client-conduit = dontHaddock super.http-client-conduit;
|
http-client-conduit = dontHaddock super.http-client-conduit;
|
||||||
http-client-multipart = dontHaddock super.http-client-multipart;
|
http-client-multipart = dontHaddock super.http-client-multipart;
|
||||||
|
@ -249,10 +202,6 @@ self: super: {
|
||||||
# tests don't compile for some odd reason
|
# tests don't compile for some odd reason
|
||||||
jwt = dontCheck super.jwt;
|
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
|
# https://github.com/NixOS/cabal2nix/issues/136 and https://github.com/NixOS/cabal2nix/issues/216
|
||||||
gio = pkgs.lib.overrideDerivation (addPkgconfigDepend (
|
gio = pkgs.lib.overrideDerivation (addPkgconfigDepend (
|
||||||
addBuildTool super.gio self.gtk2hs-buildtools
|
addBuildTool super.gio self.gtk2hs-buildtools
|
||||||
|
@ -319,7 +268,6 @@ self: super: {
|
||||||
pocket-dns = dontCheck super.pocket-dns;
|
pocket-dns = dontCheck super.pocket-dns;
|
||||||
postgresql-simple = dontCheck super.postgresql-simple;
|
postgresql-simple = dontCheck super.postgresql-simple;
|
||||||
postgrest = dontCheck super.postgrest;
|
postgrest = dontCheck super.postgrest;
|
||||||
setenv_0_1_1_1 = dontCheck super.setenv_0_1_1_1;
|
|
||||||
snowball = dontCheck super.snowball;
|
snowball = dontCheck super.snowball;
|
||||||
sophia = dontCheck super.sophia;
|
sophia = dontCheck super.sophia;
|
||||||
test-sandbox = dontCheck super.test-sandbox;
|
test-sandbox = dontCheck super.test-sandbox;
|
||||||
|
@ -438,9 +386,6 @@ self: super: {
|
||||||
hsexif = dontCheck super.hsexif;
|
hsexif = dontCheck super.hsexif;
|
||||||
hspec-server = dontCheck super.hspec-server;
|
hspec-server = dontCheck super.hspec-server;
|
||||||
HTF = dontCheck super.HTF;
|
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 = dontCheck super.htsn;
|
||||||
htsn-import = dontCheck super.htsn-import;
|
htsn-import = dontCheck super.htsn-import;
|
||||||
http-client-openssl = dontCheck super.http-client-openssl;
|
http-client-openssl = dontCheck super.http-client-openssl;
|
||||||
|
@ -487,9 +432,6 @@ self: super: {
|
||||||
separated = dontCheck super.separated;
|
separated = dontCheck super.separated;
|
||||||
shadowsocks = dontCheck super.shadowsocks;
|
shadowsocks = dontCheck super.shadowsocks;
|
||||||
shake-language-c = dontCheck super.shake-language-c;
|
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;
|
static-resources = dontCheck super.static-resources;
|
||||||
strive = dontCheck super.strive; # fails its own hlint test with tons of warnings
|
strive = dontCheck super.strive; # fails its own hlint test with tons of warnings
|
||||||
svndump = dontCheck super.svndump;
|
svndump = dontCheck super.svndump;
|
||||||
|
@ -912,30 +854,13 @@ self: super: {
|
||||||
|
|
||||||
# https://github.com/guillaume-nargeot/hpc-coveralls/issues/52
|
# https://github.com/guillaume-nargeot/hpc-coveralls/issues/52
|
||||||
hpc-coveralls = disableSharedExecutables super.hpc-coveralls;
|
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
|
# https://github.com/fpco/stackage/issues/838
|
||||||
cryptonite = dontCheck super.cryptonite;
|
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/>.
|
# We cannot build this package w/o the C library from <http://www.phash.org/>.
|
||||||
phash = markBroken super.phash;
|
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
|
# https://github.com/sol/hpack/issues/53
|
||||||
hpack = dontCheck super.hpack;
|
hpack = dontCheck super.hpack;
|
||||||
|
|
||||||
|
@ -956,35 +881,15 @@ self: super: {
|
||||||
librarySystemDepends = (drv.librarySystemDepends or []) ++ [ pkgs.ncurses ];
|
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.
|
# We get lots of strange compiler errors during the test suite run.
|
||||||
jsaddle = dontCheck super.jsaddle;
|
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
|
# Looks like Avahi provides the missing library
|
||||||
dnssd = super.dnssd.override { dns_sd = pkgs.avahi.override { withLibdnssdCompat = true; }; };
|
dnssd = super.dnssd.override { dns_sd = pkgs.avahi.override { withLibdnssdCompat = true; }; };
|
||||||
|
|
||||||
# Haste stuff
|
# Haste stuff
|
||||||
haste-Cabal = self.callPackage ../tools/haskell/haste/haste-Cabal.nix {};
|
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; };
|
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
|
# Ensure the necessary frameworks are propagatedBuildInputs on darwin
|
||||||
|
@ -1025,18 +930,6 @@ self: super: {
|
||||||
[ pkgs.darwin.apple_sdk.frameworks.OpenCL ];
|
[ 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 is a new build driver a la Stack that's not yet available from Hackage.
|
||||||
tinc = self.callPackage ../tools/haskell/tinc {};
|
tinc = self.callPackage ../tools/haskell/tinc {};
|
||||||
|
|
||||||
|
@ -1077,4 +970,8 @@ self: super: {
|
||||||
sha256 = "1yh2g45mkfpwxq0vyzcbc4nbxh6wmb2xpp0k7r5byd8jicgvli29";
|
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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,8 +56,7 @@ self: super: {
|
||||||
Cabal_1_18_1_7 = dontJailbreak super.Cabal_1_18_1_7;
|
Cabal_1_18_1_7 = dontJailbreak super.Cabal_1_18_1_7;
|
||||||
|
|
||||||
# We have no working cabal-install at the moment.
|
# 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 = markBroken super.cabal-install;
|
||||||
cabal-install = self.cabal-install_1_18_1_0;
|
|
||||||
|
|
||||||
# https://github.com/tibbe/hashable/issues/85
|
# https://github.com/tibbe/hashable/issues/85
|
||||||
hashable = dontCheck super.hashable;
|
hashable = dontCheck super.hashable;
|
||||||
|
|
|
@ -48,7 +48,6 @@ self: super: {
|
||||||
|
|
||||||
# Newer versions don't compile.
|
# Newer versions don't compile.
|
||||||
Cabal_1_18_1_7 = dontJailbreak super.Cabal_1_18_1_7;
|
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
|
# https://github.com/peti/jailbreak-cabal/issues/9
|
||||||
jailbreak-cabal = super.jailbreak-cabal.override {
|
jailbreak-cabal = super.jailbreak-cabal.override {
|
||||||
|
|
|
@ -46,7 +46,6 @@ self: super: {
|
||||||
|
|
||||||
# Newer versions don't compile.
|
# Newer versions don't compile.
|
||||||
Cabal_1_18_1_7 = dontJailbreak super.Cabal_1_18_1_7;
|
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
|
# https://github.com/tibbe/hashable/issues/85
|
||||||
hashable = dontCheck super.hashable;
|
hashable = dontCheck super.hashable;
|
||||||
|
|
|
@ -97,6 +97,9 @@ self: super: {
|
||||||
conduit = addBuildDepend super.conduit self.void;
|
conduit = addBuildDepend super.conduit self.void;
|
||||||
|
|
||||||
# Needs additional inputs on pre 7.10.x compilers.
|
# 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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -142,4 +142,7 @@ self: super: {
|
||||||
# Needs additional inputs on pre 7.10.x compilers.
|
# Needs additional inputs on pre 7.10.x compilers.
|
||||||
semigroups = addBuildDepends super.semigroups (with self; [nats tagged unordered-containers]);
|
semigroups = addBuildDepends super.semigroups (with self; [nats tagged unordered-containers]);
|
||||||
|
|
||||||
|
# Haddock doesn't cope with the new markup.
|
||||||
|
bifunctors = dontHaddock super.bifunctors;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,6 +51,7 @@ self: super: {
|
||||||
};
|
};
|
||||||
buildDepends = [ primitive ];
|
buildDepends = [ primitive ];
|
||||||
license = pkgs.stdenv.lib.licenses.bsd3;
|
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
|
# ghc-mod has a ghc-8 branch that has not yet been merged
|
||||||
|
|
|
@ -88,20 +88,13 @@ package-maintainers:
|
||||||
- pipes-csv
|
- pipes-csv
|
||||||
- pipes-mongodb
|
- pipes-mongodb
|
||||||
khumba:
|
khumba:
|
||||||
- goatee
|
|
||||||
- goatee-gtk
|
|
||||||
- hoppy-docs
|
- hoppy-docs
|
||||||
- hoppy-generator
|
- hoppy-generator
|
||||||
- hoppy-runtime
|
- hoppy-runtime
|
||||||
- hoppy-std
|
- hoppy-std
|
||||||
- qtah-cpp-qt5
|
|
||||||
- qtah-examples
|
|
||||||
- qtah-generator
|
|
||||||
- qtah-qt5
|
|
||||||
psibi:
|
psibi:
|
||||||
- path-pieces
|
- path-pieces
|
||||||
- persistent
|
- persistent
|
||||||
- persistent-mongoDB
|
|
||||||
- persistent-mysql
|
- persistent-mysql
|
||||||
- persistent-postgresql
|
- persistent-postgresql
|
||||||
- persistent-redis
|
- persistent-redis
|
||||||
|
@ -811,6 +804,7 @@ dont-distribute-packages:
|
||||||
collections-api: [ i686-linux, x86_64-linux ]
|
collections-api: [ i686-linux, x86_64-linux ]
|
||||||
collections-base-instances: [ i686-linux, x86_64-linux ]
|
collections-base-instances: [ i686-linux, x86_64-linux ]
|
||||||
collections: [ 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 ]
|
color-counter: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
coltrane: [ i686-linux, x86_64-linux ]
|
coltrane: [ i686-linux, x86_64-linux ]
|
||||||
com: [ 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 ]
|
ecma262: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
ecu: [ i686-linux, x86_64-linux ]
|
ecu: [ i686-linux, x86_64-linux ]
|
||||||
eddie: [ i686-linux, x86_64-darwin, 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 ]
|
edenmodules: [ i686-linux, x86_64-linux ]
|
||||||
edenskel: [ i686-linux, x86_64-linux ]
|
edenskel: [ i686-linux, x86_64-linux ]
|
||||||
edentv: [ i686-linux, x86_64-linux ]
|
edentv: [ i686-linux, x86_64-linux ]
|
||||||
|
@ -1253,6 +1248,7 @@ dont-distribute-packages:
|
||||||
emgm: [ i686-linux, x86_64-linux ]
|
emgm: [ i686-linux, x86_64-linux ]
|
||||||
Emping: [ i686-linux, x86_64-linux ]
|
Emping: [ i686-linux, x86_64-linux ]
|
||||||
enchant: [ i686-linux, x86_64-darwin, 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 ]
|
enumerate: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
enumeration: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
enumeration: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
enumfun: [ i686-linux, x86_64-linux ]
|
enumfun: [ i686-linux, x86_64-linux ]
|
||||||
|
@ -1418,6 +1414,7 @@ dont-distribute-packages:
|
||||||
formura: [ i686-linux, x86_64-linux ]
|
formura: [ i686-linux, x86_64-linux ]
|
||||||
ForSyDe: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
ForSyDe: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
forth-hll: [ i686-linux, 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 ]
|
foscam-sort: [ i686-linux, x86_64-linux ]
|
||||||
Foster: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
Foster: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
fpco-api: [ i686-linux, 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 ]
|
GenussFold: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
geo-resolver: [ i686-linux, x86_64-linux ]
|
geo-resolver: [ i686-linux, x86_64-linux ]
|
||||||
GeocoderOpenCage: [ 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 ]
|
geodetics: [ i686-linux, x86_64-linux ]
|
||||||
geoip2: [ i686-linux ]
|
geoip2: [ i686-linux ]
|
||||||
GeoIp: [ i686-linux, x86_64-linux ]
|
GeoIp: [ i686-linux, x86_64-linux ]
|
||||||
|
geolite-csv: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
geom2d: [ i686-linux ]
|
geom2d: [ i686-linux ]
|
||||||
GeomPredicates-SSE: [ i686-linux, x86_64-linux ]
|
GeomPredicates-SSE: [ i686-linux, x86_64-linux ]
|
||||||
getemx: [ i686-linux, x86_64-darwin, 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-generic-instances: [ i686-linux, x86_64-linux ]
|
||||||
ghc-heap-view: [ i686-linux, x86_64-linux ]
|
ghc-heap-view: [ i686-linux, x86_64-linux ]
|
||||||
ghc-imported-from: [ 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-parser: [ i686-linux, x86_64-linux ]
|
||||||
ghc-pkg-autofix: [ i686-linux, x86_64-linux ]
|
ghc-pkg-autofix: [ i686-linux, x86_64-linux ]
|
||||||
ghc-pkg-lib: [ 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-webkit2: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
gi-webkit2webextension: [ 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 ]
|
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 ]
|
Gifcurry: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
ginger: [ i686-linux, x86_64-linux ]
|
ginger: [ i686-linux, x86_64-linux ]
|
||||||
ginsu: [ i686-linux, x86_64-linux ]
|
ginsu: [ i686-linux, x86_64-linux ]
|
||||||
|
@ -1587,6 +1586,7 @@ dont-distribute-packages:
|
||||||
git: [ i686-linux, x86_64-linux ]
|
git: [ i686-linux, x86_64-linux ]
|
||||||
gitdo: [ i686-linux, x86_64-linux ]
|
gitdo: [ i686-linux, x86_64-linux ]
|
||||||
github-backup: [ 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 ]
|
github-utils: [ i686-linux, x86_64-linux ]
|
||||||
gitit: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
gitit: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
gitlib-cross: [ i686-linux, 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-geometry: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
goal-probability: [ 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 ]
|
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 ]
|
gofer-prelude: [ i686-linux, x86_64-linux ]
|
||||||
gogol-adexchange-buyer: [ i686-linux, x86_64-darwin, 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 ]
|
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-th: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
groundhog: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
groundhog: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
Grow: [ i686-linux, 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 ]
|
GrowlNotify: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
gruff-examples: [ i686-linux, x86_64-linux ]
|
gruff-examples: [ i686-linux, x86_64-linux ]
|
||||||
gruff: [ 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-rules: [ i686-linux, x86_64-linux ]
|
||||||
haskell-src-meta-mwotton: [ i686-linux, x86_64-linux ]
|
haskell-src-meta-mwotton: [ i686-linux, x86_64-linux ]
|
||||||
haskell-token-utils: [ 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-tor: [ i686-linux, x86_64-linux ]
|
||||||
haskell-type-exts: [ i686-linux, x86_64-linux ]
|
haskell-type-exts: [ i686-linux, x86_64-linux ]
|
||||||
haskell-tyrant: [ 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 ]
|
hcube: [ i686-linux, x86_64-linux ]
|
||||||
hcwiid: [ i686-linux, x86_64-linux ]
|
hcwiid: [ i686-linux, x86_64-linux ]
|
||||||
hdaemonize-buildfix: [ 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-aeson: [ i686-linux, x86_64-linux ]
|
||||||
HDBC-mysql: [ i686-linux, x86_64-linux ]
|
HDBC-mysql: [ i686-linux, x86_64-linux ]
|
||||||
HDBC-odbc: [ 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 ]
|
hsdns-cache: [ i686-linux, x86_64-linux ]
|
||||||
Hsed: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
Hsed: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
hsfacter: [ 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 ]
|
HSFFIG: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
HSGEP: [ i686-linux, x86_64-linux ]
|
HSGEP: [ i686-linux, x86_64-linux ]
|
||||||
hsgnutls-yj: [ 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 ]
|
htodo: [ i686-linux, x86_64-linux ]
|
||||||
hts: [ i686-linux, x86_64-linux ]
|
hts: [ i686-linux, x86_64-linux ]
|
||||||
htsn-import: [ i686-linux, x86_64-darwin, 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-attoparsec: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
http-client-request-modifiers: [ 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 ]
|
http-conduit-browser: [ i686-linux, x86_64-linux ]
|
||||||
|
@ -2531,6 +2543,7 @@ dont-distribute-packages:
|
||||||
hyloutils: [ i686-linux, x86_64-linux ]
|
hyloutils: [ i686-linux, x86_64-linux ]
|
||||||
hyperdrive: [ i686-linux, x86_64-linux ]
|
hyperdrive: [ i686-linux, x86_64-linux ]
|
||||||
hyperloglog: [ i686-linux, x86_64-darwin, 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 ]
|
hyperpublic: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
hypher: [ i686-linux, x86_64-linux ]
|
hypher: [ i686-linux, x86_64-linux ]
|
||||||
i18n: [ i686-linux, x86_64-linux ]
|
i18n: [ i686-linux, x86_64-linux ]
|
||||||
|
@ -2625,6 +2638,7 @@ dont-distribute-packages:
|
||||||
IOR: [ i686-linux, x86_64-linux ]
|
IOR: [ i686-linux, x86_64-linux ]
|
||||||
IORefCAS: [ i686-linux, x86_64-linux ]
|
IORefCAS: [ i686-linux, x86_64-linux ]
|
||||||
iotransaction: [ 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 ]
|
ipatch: [ i686-linux, x86_64-linux ]
|
||||||
ipc: [ i686-linux, x86_64-linux ]
|
ipc: [ i686-linux, x86_64-linux ]
|
||||||
ipopt-hs: [ 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 ]
|
libpafe: [ i686-linux, x86_64-linux ]
|
||||||
libpq: [ i686-linux, x86_64-linux ]
|
libpq: [ i686-linux, x86_64-linux ]
|
||||||
librandomorg: [ 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 ]
|
libroman: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
libssh2-conduit: [ i686-linux, x86_64-linux ]
|
libssh2-conduit: [ i686-linux, x86_64-linux ]
|
||||||
libsystemd-daemon: [ 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-network: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
LogicGrowsOnTrees-processes: [ 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 ]
|
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 ]
|
lojban: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
lojbanParser: [ i686-linux, x86_64-linux ]
|
lojbanParser: [ i686-linux, x86_64-linux ]
|
||||||
lojbanXiragan: [ i686-linux, x86_64-linux ]
|
lojbanXiragan: [ i686-linux, x86_64-linux ]
|
||||||
|
@ -3081,6 +3097,7 @@ dont-distribute-packages:
|
||||||
microlens-aeson: [ i686-linux ]
|
microlens-aeson: [ i686-linux ]
|
||||||
midi-music-box: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
midi-music-box: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
midisurface: [ i686-linux, 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 ]
|
mighttpd: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
milena: [ i686-linux, x86_64-linux ]
|
milena: [ i686-linux, x86_64-linux ]
|
||||||
mime-string: [ 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 ]
|
Paraiso: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
parallel-tasks: [ i686-linux, x86_64-linux ]
|
parallel-tasks: [ i686-linux, x86_64-linux ]
|
||||||
parameterized-data: [ i686-linux, x86_64-darwin, 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-attoparsec: [ i686-linux, x86_64-linux ]
|
||||||
parco-parsec: [ i686-linux, x86_64-linux ]
|
parco-parsec: [ i686-linux, x86_64-linux ]
|
||||||
parco: [ 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 ]
|
perdure: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
PerfectHash: [ i686-linux, x86_64-linux ]
|
PerfectHash: [ i686-linux, 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 ]
|
permute: [ i686-linux, x86_64-linux ]
|
||||||
PermuteEffects: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
PermuteEffects: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
persistable-record: [ i686-linux, 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-database-url: [ i686-linux, x86_64-linux ]
|
||||||
persistent-hssqlppp: [ i686-linux, x86_64-linux ]
|
persistent-hssqlppp: [ i686-linux, x86_64-linux ]
|
||||||
persistent-map: [ 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-odbc: [ i686-linux, x86_64-linux ]
|
||||||
persistent-protobuf: [ i686-linux, x86_64-linux ]
|
persistent-protobuf: [ i686-linux, x86_64-linux ]
|
||||||
persistent-ratelimit: [ 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 ]
|
qhull-simple: [ i686-linux, x86_64-linux ]
|
||||||
QIO: [ i686-linux, x86_64-linux ]
|
QIO: [ i686-linux, x86_64-linux ]
|
||||||
qt: [ 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 ]
|
QuadEdge: [ i686-linux, x86_64-linux ]
|
||||||
quadratic-irrational: [ i686-linux, x86_64-linux ]
|
quadratic-irrational: [ i686-linux, x86_64-linux ]
|
||||||
QuadTree: [ 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 ]
|
quickterm: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
quicktest: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
quicktest: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
quickwebapp: [ i686-linux, 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-groups: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
quiver-interleave: [ i686-linux, x86_64-linux ]
|
quiver-interleave: [ i686-linux, x86_64-linux ]
|
||||||
quiver-sort: [ i686-linux, x86_64-darwin, 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-toolkit: [ i686-linux, x86_64-linux ]
|
||||||
repl: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
repl: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
RepLib: [ i686-linux, 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 ]
|
repo-based-blog: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
repr: [ i686-linux, x86_64-linux ]
|
repr: [ i686-linux, x86_64-linux ]
|
||||||
representable-functors: [ 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 ]
|
RNAFold: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
RNAFoldProgs: [ 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 ]
|
RNAwolf: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
|
robin: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
robot: [ i686-linux, x86_64-linux ]
|
robot: [ i686-linux, x86_64-linux ]
|
||||||
roguestar-engine: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
roguestar-engine: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
roguestar-gl: [ i686-linux, 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-aeson-specs: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
servant-csharp: [ i686-linux, x86_64-linux ]
|
servant-csharp: [ i686-linux, x86_64-linux ]
|
||||||
servant-docs: [ i686-linux ]
|
servant-docs: [ i686-linux ]
|
||||||
|
servant-ede: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
servant-elm: [ i686-linux, x86_64-linux ]
|
servant-elm: [ i686-linux, x86_64-linux ]
|
||||||
servant-examples: [ i686-linux, x86_64-linux ]
|
servant-examples: [ i686-linux, x86_64-linux ]
|
||||||
servant-github: [ 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 ]
|
simseq: [ i686-linux, x86_64-linux ]
|
||||||
sindre: [ i686-linux, x86_64-linux ]
|
sindre: [ i686-linux, x86_64-linux ]
|
||||||
singleton-nats: [ i686-linux, x86_64-darwin, 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 ]
|
sirkel: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
sized-vector: [ i686-linux, x86_64-linux ]
|
sized-vector: [ i686-linux, x86_64-linux ]
|
||||||
sized: [ i686-linux, x86_64-linux ]
|
sized: [ i686-linux, x86_64-linux ]
|
||||||
|
@ -4069,6 +4098,7 @@ dont-distribute-packages:
|
||||||
smartGroup: [ i686-linux, x86_64-linux ]
|
smartGroup: [ i686-linux, x86_64-linux ]
|
||||||
smartword: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
smartword: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
sme: [ i686-linux, x86_64-linux ]
|
sme: [ i686-linux, x86_64-linux ]
|
||||||
|
smerdyakov: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
Smooth: [ i686-linux, x86_64-linux ]
|
Smooth: [ i686-linux, x86_64-linux ]
|
||||||
smsaero: [ i686-linux, x86_64-linux ]
|
smsaero: [ i686-linux, x86_64-linux ]
|
||||||
smt-lib: [ i686-linux, x86_64-darwin, 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 ]
|
sqlvalue-list: [ i686-linux, x86_64-linux ]
|
||||||
squeeze: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
squeeze: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
srcinst: [ i686-linux, x86_64-linux ]
|
srcinst: [ i686-linux, x86_64-linux ]
|
||||||
|
sshtun: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
sssp: [ i686-linux, x86_64-linux ]
|
sssp: [ i686-linux, x86_64-linux ]
|
||||||
sstable: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
sstable: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
stable-marriage: [ i686-linux, 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-dirichlet: [ i686-linux, x86_64-linux ]
|
||||||
statistics-fusion: [ i686-linux, x86_64-linux ]
|
statistics-fusion: [ i686-linux, x86_64-linux ]
|
||||||
stb-truetype: [ 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 ]
|
step-function: [ i686-linux, x86_64-linux ]
|
||||||
stepwise: [ 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 ]
|
stm-chunked-queues: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
stmcontrol: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
stmcontrol: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
Stomp: [ i686-linux, x86_64-linux ]
|
Stomp: [ i686-linux, x86_64-linux ]
|
||||||
|
@ -4302,6 +4335,7 @@ dont-distribute-packages:
|
||||||
system-canonicalpath: [ i686-linux, x86_64-linux ]
|
system-canonicalpath: [ i686-linux, x86_64-linux ]
|
||||||
system-lifted: [ i686-linux, x86_64-linux ]
|
system-lifted: [ i686-linux, x86_64-linux ]
|
||||||
system-random-effect: [ 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 ]
|
t-regex: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
t3-client: [ 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 ]
|
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-list: [ i686-linux, x86_64-linux ]
|
||||||
tagged-th: [ i686-linux, x86_64-linux ]
|
tagged-th: [ i686-linux, x86_64-linux ]
|
||||||
tagsoup-ht: [ 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 ]
|
tagsoup-parsec: [ i686-linux, x86_64-linux ]
|
||||||
takusen-oracle: [ i686-linux, x86_64-linux ]
|
takusen-oracle: [ i686-linux, x86_64-linux ]
|
||||||
Takusen: [ 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-th: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
timezone-olson: [ 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 ]
|
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 ]
|
TinyLaunchbury: [ i686-linux, x86_64-linux ]
|
||||||
TinyURL: [ i686-linux, x86_64-linux ]
|
TinyURL: [ i686-linux, x86_64-linux ]
|
||||||
tip-haskell-frontend: [ 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-conduit: [ i686-linux, x86_64-linux ]
|
||||||
uri-enumerator-file: [ i686-linux, x86_64-linux ]
|
uri-enumerator-file: [ i686-linux, x86_64-linux ]
|
||||||
uri-enumerator: [ 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 ]
|
url-generic: [ i686-linux, x86_64-linux ]
|
||||||
urlcheck: [ i686-linux, x86_64-linux ]
|
urlcheck: [ i686-linux, x86_64-linux ]
|
||||||
urldecode: [ i686-linux, x86_64-linux ]
|
urldecode: [ i686-linux, x86_64-linux ]
|
||||||
|
@ -4649,6 +4683,7 @@ dont-distribute-packages:
|
||||||
vulkan: [ i686-linux, x86_64-linux ]
|
vulkan: [ i686-linux, x86_64-linux ]
|
||||||
wacom-daemon: [ i686-linux, x86_64-linux ]
|
wacom-daemon: [ i686-linux, x86_64-linux ]
|
||||||
waddle: [ 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-devel: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
wai-dispatch: [ 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 ]
|
wai-graceful: [ i686-linux, x86_64-linux ]
|
||||||
|
@ -4724,6 +4759,7 @@ dont-distribute-packages:
|
||||||
windowslive: [ i686-linux, x86_64-linux ]
|
windowslive: [ i686-linux, x86_64-linux ]
|
||||||
winerror: [ i686-linux, x86_64-linux ]
|
winerror: [ i686-linux, x86_64-linux ]
|
||||||
winio: [ 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 ]
|
wiring: [ i686-linux, x86_64-linux ]
|
||||||
wkt: [ i686-linux, x86_64-linux ]
|
wkt: [ i686-linux, x86_64-linux ]
|
||||||
WL500gPControl: [ i686-linux, x86_64-darwin, 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-continuations: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
yesod-crud-persist: [ 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-crud: [ i686-linux, x86_64-linux ]
|
||||||
|
yesod-csp: [ i686-linux, x86_64-darwin, x86_64-linux ]
|
||||||
yesod-datatables: [ i686-linux, x86_64-linux ]
|
yesod-datatables: [ i686-linux, x86_64-linux ]
|
||||||
yesod-examples: [ i686-linux, x86_64-linux ]
|
yesod-examples: [ i686-linux, x86_64-linux ]
|
||||||
yesod-goodies: [ i686-linux, x86_64-darwin, 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-links: [ i686-linux, x86_64-linux ]
|
||||||
yesod-mangopay: [ i686-linux, x86_64-linux ]
|
yesod-mangopay: [ i686-linux, x86_64-linux ]
|
||||||
yesod-markdown: [ i686-linux, x86_64-darwin, 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
Loading…
Reference in a new issue