Merge staging-next into staging

This commit is contained in:
Frederik Rietdijk 2018-11-11 14:28:08 +01:00
commit 1d3bff25db
600 changed files with 13864 additions and 7148 deletions

3
.github/CODEOWNERS vendored
View File

@ -47,6 +47,9 @@
/nixos/doc/manual/man-nixos-option.xml @nbp /nixos/doc/manual/man-nixos-option.xml @nbp
/nixos/modules/installer/tools/nixos-option.sh @nbp /nixos/modules/installer/tools/nixos-option.sh @nbp
# NixOS modules
/nixos/modules @Infinisil
# Python-related code and docs # Python-related code and docs
/maintainers/scripts/update-python-libraries @FRidh /maintainers/scripts/update-python-libraries @FRidh
/pkgs/top-level/python-packages.nix @FRidh /pkgs/top-level/python-packages.nix @FRidh

View File

@ -19,6 +19,7 @@
<xi:include href="java.xml" /> <xi:include href="java.xml" />
<xi:include href="lua.xml" /> <xi:include href="lua.xml" />
<xi:include href="node.section.xml" /> <xi:include href="node.section.xml" />
<xi:include href="ocaml.xml" />
<xi:include href="perl.xml" /> <xi:include href="perl.xml" />
<xi:include href="python.section.xml" /> <xi:include href="python.section.xml" />
<xi:include href="qt.xml" /> <xi:include href="qt.xml" />

View File

@ -0,0 +1,101 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="sec-language-ocaml">
<title>OCaml</title>
<para>
OCaml libraries should be installed in
<literal>$(out)/lib/ocaml/${ocaml.version}/site-lib/</literal>. Such
directories are automatically added to the <literal>$OCAMLPATH</literal>
environment variable when building another package that depends on them
or when opening a <literal>nix-shell</literal>.
</para>
<para>
Given that most of the OCaml ecosystem is now built with dune,
nixpkgs includes a convenience build support function called
<literal>buildDunePackage</literal> that will build an OCaml package
using dune, OCaml and findlib and any additional dependencies provided
as <literal>buildInputs</literal> or <literal>propagatedBuildInputs</literal>.
</para>
<para>
Here is a simple package example. It defines an (optional) attribute
<literal>minimumOCamlVersion</literal> that will be used to throw a
descriptive evaluation error if building with an older OCaml is attempted.
It uses the <literal>fetchFromGitHub</literal> fetcher to get its source.
It sets the <literal>doCheck</literal> (optional) attribute to
<literal>true</literal> which means that tests will be run with
<literal>dune runtest -p angstrom</literal> after the build
(<literal>dune build -p angstrom</literal>) is complete.
It uses <literal>alcotest</literal> as a build input (because it is needed
to run the tests) and <literal>bigstringaf</literal> and
<literal>result</literal> as propagated build inputs (thus they will also
be available to libraries depending on this library).
The library will be installed using the <literal>angstrom.install</literal>
file that dune generates.
</para>
<programlisting>
{ stdenv, fetchFromGitHub, buildDunePackage, alcotest, result, bigstringaf }:
buildDunePackage rec {
pname = "angstrom";
version = "0.10.0";
minimumOCamlVersion = "4.03";
src = fetchFromGitHub {
owner = "inhabitedtype";
repo = pname;
rev = version;
sha256 = "0lh6024yf9ds0nh9i93r9m6p5psi8nvrqxl5x7jwl13zb0r9xfpw";
};
buildInputs = [ alcotest ];
propagatedBuildInputs = [ bigstringaf result ];
doCheck = true;
meta = {
homepage = https://github.com/inhabitedtype/angstrom;
description = "OCaml parser combinators built for speed and memory efficiency";
license = stdenv.lib.licenses.bsd3;
maintainers = with stdenv.lib.maintainers; [ sternenseemann ];
};
}
</programlisting>
<para>
Here is a second example, this time using a source archive generated with
<literal>dune-release</literal>. The <literal>unpackCmd</literal>
redefinition is necessary to be able to unpack the kind of tarball that
<literal>dune-release</literal> generates. This library does not depend
on any other OCaml library and no tests are run after building it.
</para>
<programlisting>
{ stdenv, fetchurl, buildDunePackage }:
buildDunePackage rec {
pname = "wtf8";
version = "1.0.1";
minimumOCamlVersion = "4.01";
src = fetchurl {
url = "https://github.com/flowtype/ocaml-${pname}/releases/download/v${version}/${pname}-${version}.tbz";
sha256 = "1msg3vycd3k8qqj61sc23qks541cxpb97vrnrvrhjnqxsqnh6ygq";
};
unpackCmd = "tar xjf $src";
meta = with stdenv.lib; {
homepage = https://github.com/flowtype/ocaml-wtf8;
description = "WTF-8 is a superset of UTF-8 that allows unpaired surrogates.";
license = licenses.mit;
maintainers = [ maintainers.eqyiel ];
};
}
</programlisting>
</section>

View File

@ -484,11 +484,11 @@ and in this case the `python35` interpreter is automatically used.
### Interpreters ### Interpreters
Versions 2.7, 3.5, 3.6 and 3.7 of the CPython interpreter are available as Versions 2.7, 3.5, 3.6 and 3.7 of the CPython interpreter are available as
respectively `python27`, `python35`, `python36` and `python37`. The PyPy interpreter respectively `python27`, `python35`, `python36`, and `python37`. The PyPy
is available as `pypy`. The aliases `python2` and `python3` correspond to respectively `python27` and interpreter is available as `pypy`. The aliases `python2` and `python3`
`python37`. The default interpreter, `python`, maps to `python2`. correspond to respectively `python27` and `python37`. The default interpreter,
The Nix expressions for the interpreters can be found in `python`, maps to `python2`. The Nix expressions for the interpreters can be
`pkgs/development/interpreters/python`. found in `pkgs/development/interpreters/python`.
All packages depending on any Python interpreter get appended All packages depending on any Python interpreter get appended
`out/{python.sitePackages}` to `$PYTHONPATH` if such directory `out/{python.sitePackages}` to `$PYTHONPATH` if such directory

View File

@ -250,6 +250,61 @@ meta.platforms = stdenv.lib.platforms.linux;
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term>
<varname>tests</varname>
</term>
<listitem>
<para>
An attribute set with as values tests. A test is a derivation, which
builds successfully when the test passes, and fails to build otherwise. A
derivation that is a test requires some <literal>meta</literal> elements
to be defined: <literal>needsVMSupport</literal> (automatically filled-in
for NixOS tests) and <literal>timeout</literal>.
</para>
<para>
The NixOS tests are available as <literal>nixosTests</literal> in
parameters of derivations. For instance, the OpenSMTPD derivation
includes lines similar to:
<programlisting>
{ /* ... */, nixosTests }:
{
# ...
meta.tests = {
basic-functionality-and-dovecot-integration = nixosTests.opensmtpd;
};
}
</programlisting>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>timeout</varname>
</term>
<listitem>
<para>
A timeout (in seconds) for building the derivation. If the derivation
takes longer than this time to build, it can fail due to breaking the
timeout. However, all computers do not have the same computing power,
hence some builders may decide to apply a multiplicative factor to this
value. When filling this value in, try to keep it approximately
consistent with other values already present in
<literal>nixpkgs</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>needsVMSupport</varname>
</term>
<listitem>
<para>
A boolan that states whether the derivation requires build-time support
for Virtual Machine to build successfully.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
<varname>hydraPlatforms</varname> <varname>hydraPlatforms</varname>

View File

@ -147,8 +147,8 @@ $ git add pkgs/development/libraries/libfoo/default.nix</screen>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
You can use <command>nix-prefetch-url</command> (or similar You can use <command>nix-prefetch-url</command>
nix-prefetch-git, etc) <replaceable>url</replaceable> to get the <replaceable>url</replaceable> to get the
SHA-256 hash of source distributions. There are similar commands as SHA-256 hash of source distributions. There are similar commands as
<command>nix-prefetch-git</command> and <command>nix-prefetch-git</command> and
<command>nix-prefetch-hg</command> available in <command>nix-prefetch-hg</command> available in

View File

@ -618,7 +618,7 @@ let f(h, h + 1, i) = i + h
</variablelist> </variablelist>
<variablelist> <variablelist>
<title>Variables affecting build properties</title> <title>Attributes affecting build properties</title>
<varlistentry> <varlistentry>
<term> <term>
<varname>enableParallelBuilding</varname> <varname>enableParallelBuilding</varname>
@ -637,21 +637,6 @@ let f(h, h + 1, i) = i + h
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term>
<varname>preferLocalBuild</varname>
</term>
<listitem>
<para>
If set, specifies that the package is so lightweight in terms of build
operations (e.g. write a text file from a Nix string to the store) that
there's no need to look for it in binary caches -- it's faster to just
build it locally. It also tells Hydra and other facilities that this
package doesn't need to be exported in binary caches (noone would use it,
after all).
</para>
</listitem>
</varlistentry>
</variablelist> </variablelist>
<variablelist> <variablelist>

View File

@ -13,6 +13,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
* add it to this list. The URL mentioned above is a good source for inspiration. * add it to this list. The URL mentioned above is a good source for inspiration.
*/ */
abstyles = spdx {
spdxId = "Abstyles";
fullName = "Abstyles License";
};
afl21 = spdx { afl21 = spdx {
spdxId = "AFL-2.1"; spdxId = "AFL-2.1";
fullName = "Academic Free License v2.1"; fullName = "Academic Free License v2.1";

View File

@ -73,7 +73,7 @@ rec {
# Get the commit id of a git repo # Get the commit id of a git repo
# Example: commitIdFromGitRepo <nixpkgs/.git> # Example: commitIdFromGitRepo <nixpkgs/.git>
commitIdFromGitRepo = commitIdFromGitRepo =
let readCommitFromFile = path: file: let readCommitFromFile = file: path:
with builtins; with builtins;
let fileName = toString path + "/" + file; let fileName = toString path + "/" + file;
packedRefsName = toString path + "/packed-refs"; packedRefsName = toString path + "/packed-refs";
@ -85,7 +85,7 @@ rec {
matchRef = match "^ref: (.*)$" fileContent; matchRef = match "^ref: (.*)$" fileContent;
in if isNull matchRef in if isNull matchRef
then fileContent then fileContent
else readCommitFromFile path (lib.head matchRef) else readCommitFromFile (lib.head matchRef) path
# Sometimes, the file isn't there at all and has been packed away in the # Sometimes, the file isn't there at all and has been packed away in the
# packed-refs file, so we have to grep through it: # packed-refs file, so we have to grep through it:
else if lib.pathExists packedRefsName else if lib.pathExists packedRefsName
@ -96,7 +96,7 @@ rec {
then throw ("Could not find " + file + " in " + packedRefsName) then throw ("Could not find " + file + " in " + packedRefsName)
else lib.head matchRef else lib.head matchRef
else throw ("Not a .git directory: " + path); else throw ("Not a .git directory: " + path);
in lib.flip readCommitFromFile "HEAD"; in readCommitFromFile "HEAD";
pathHasContext = builtins.hasContext or (lib.hasPrefix builtins.storeDir); pathHasContext = builtins.hasContext or (lib.hasPrefix builtins.storeDir);

View File

@ -169,6 +169,9 @@ rec {
# s32 = sign 32 4294967296; # s32 = sign 32 4294967296;
}; };
# Alias of u16 for a port number
port = ints.u16;
float = mkOptionType rec { float = mkOptionType rec {
name = "float"; name = "float";
description = "floating point number"; description = "floating point number";

View File

@ -624,6 +624,11 @@
github = "bramd"; github = "bramd";
name = "Bram Duvigneau"; name = "Bram Duvigneau";
}; };
braydenjw = {
email = "nixpkgs@willenborg.ca";
github = "braydenjw";
name = "Brayden Willenborg";
};
brian-dawn = { brian-dawn = {
email = "brian.t.dawn@gmail.com"; email = "brian.t.dawn@gmail.com";
github = "brian-dawn"; github = "brian-dawn";
@ -962,6 +967,11 @@
github = "danielfullmer"; github = "danielfullmer";
name = "Daniel Fullmer"; name = "Daniel Fullmer";
}; };
das-g = {
email = "nixpkgs@raphael.dasgupta.ch";
github = "das-g";
name = "Raphael Das Gupta";
};
das_j = { das_j = {
email = "janne@hess.ooo"; email = "janne@hess.ooo";
github = "dasJ"; github = "dasJ";
@ -1744,6 +1754,11 @@
email = "t@larkery.com"; email = "t@larkery.com";
name = "Tom Hinton"; name = "Tom Hinton";
}; };
hlolli = {
email = "hlolli@gmail.com";
github = "hlolli";
name = "Hlodver Sigurdsson";
};
hodapp = { hodapp = {
email = "hodapp87@gmail.com"; email = "hodapp87@gmail.com";
github = "Hodapp87"; github = "Hodapp87";
@ -2224,6 +2239,11 @@
github = "knedlsepp"; github = "knedlsepp";
name = "Josef Kemetmüller"; name = "Josef Kemetmüller";
}; };
knl = {
email = "nikola@knezevic.co";
github = "knl";
name = "Nikola Knežević";
};
konimex = { konimex = {
email = "herdiansyah@netc.eu"; email = "herdiansyah@netc.eu";
github = "konimex"; github = "konimex";
@ -2671,6 +2691,11 @@
github = "melsigl"; github = "melsigl";
name = "Melanie B. Sigl"; name = "Melanie B. Sigl";
}; };
melkor333 = {
email = "samuel@ton-kunst.ch";
github = "melkor333";
name = "Samuel Ruprecht";
};
metabar = { metabar = {
email = "softs@metabarcoding.org"; email = "softs@metabarcoding.org";
name = "Celine Mercier"; name = "Celine Mercier";
@ -2680,6 +2705,11 @@
github = "mgdelacroix"; github = "mgdelacroix";
name = "Miguel de la Cruz"; name = "Miguel de la Cruz";
}; };
mgregoire = {
email = "gregoire@martinache.net";
github = "M-Gregoire";
name = "Gregoire Martinache";
};
mgttlinger = { mgttlinger = {
email = "megoettlinger@gmail.com"; email = "megoettlinger@gmail.com";
github = "mgttlinger"; github = "mgttlinger";
@ -3805,6 +3835,11 @@
github = "scolobb"; github = "scolobb";
name = "Sergiu Ivanov"; name = "Sergiu Ivanov";
}; };
screendriver = {
email = "nix@echooff.de";
github = "screendriver";
name = "Christian Rackerseder";
};
Scriptkiddi = { Scriptkiddi = {
email = "nixos@scriptkiddi.de"; email = "nixos@scriptkiddi.de";
github = "scriptkiddi"; github = "scriptkiddi";
@ -3988,6 +4023,11 @@
github = "spacefrogg"; github = "spacefrogg";
name = "Michael Raitza"; name = "Michael Raitza";
}; };
spacekookie = {
email = "kookie@spacekookie.de";
github = "spacekookie";
name = "Katharina Fey";
};
spencerjanssen = { spencerjanssen = {
email = "spencerjanssen@gmail.com"; email = "spencerjanssen@gmail.com";
github = "spencerjanssen"; github = "spencerjanssen";

View File

@ -106,7 +106,7 @@
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry xml:id='types.ints.ux'>
<term> <term>
<varname>types.ints.{u8, u16, u32}</varname> <varname>types.ints.{u8, u16, u32}</varname>
</term> </term>
@ -131,6 +131,17 @@
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term>
<varname>types.port</varname>
</term>
<listitem>
<para>
A port number. This type is an alias to
<link linkend='types.ints.ux'><varname>types.ints.u16</varname></link>.
</para>
</listitem>
</varlistentry>
</variablelist> </variablelist>
<para> <para>

View File

@ -99,6 +99,8 @@
start org.nixos.nix-daemon</command>. start org.nixos.nix-daemon</command>.
</para> </para>
</listitem> </listitem>
</itemizedlist>
</listitem>
<listitem> <listitem>
<para> <para>
The Syncthing state and configuration data has been moved from The Syncthing state and configuration data has been moved from
@ -109,8 +111,6 @@
without Syncthing resetting the permission on every start. without Syncthing resetting the permission on every start.
</para> </para>
</listitem> </listitem>
</itemizedlist>
</listitem>
<listitem> <listitem>
<para> <para>
Package <varname>rabbitmq_server</varname> is renamed to Package <varname>rabbitmq_server</varname> is renamed to
@ -199,6 +199,13 @@
these changes. Please review http://lucene.apache.org/solr/ carefully before upgrading. these changes. Please review http://lucene.apache.org/solr/ carefully before upgrading.
</para> </para>
</listitem> </listitem>
<listitem>
<para>
Package <literal>ckb</literal> is renamed to <literal>ckb-next</literal>,
and options <literal>hardware.ckb.*</literal> are renamed to
<literal>hardware.ckb-next.*</literal>.
</para>
</listitem>
</itemizedlist> </itemizedlist>
</section> </section>
@ -226,6 +233,19 @@
supports loading TrueCrypt volumes. supports loading TrueCrypt volumes.
</para> </para>
</listitem> </listitem>
<listitem>
<para>
The Kubernetes DNS addons, kube-dns, has been replaced with CoreDNS.
This change is made in accordance with Kubernetes making CoreDNS the official default
starting from
<link xlink:href="https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md#sig-cluster-lifecycle">Kubernetes v1.11</link>.
Please beware that upgrading DNS-addon on existing clusters might induce
minor downtime while the DNS-addon terminates and re-initializes.
Also note that the DNS-service now runs with 2 pod replicas by default.
The desired number of replicas can be configured using:
<option>services.kubernetes.addons.dns.replicas</option>.
</para>
</listitem>
</itemizedlist> </itemizedlist>
</section> </section>
</section> </section>

View File

@ -69,7 +69,9 @@ in rec {
mkdir -p $out/coverage-data mkdir -p $out/coverage-data
mv $i $out/coverage-data/$(dirname $(dirname $i)) mv $i $out/coverage-data/$(dirname $(dirname $i))
done done
''; # */ '';
meta.needsVMSupport = true;
}; };

View File

@ -3,17 +3,17 @@
with lib; with lib;
let let
cfg = config.hardware.ckb; cfg = config.hardware.ckb-next;
in in
{ {
options.hardware.ckb = { options.hardware.ckb-next = {
enable = mkEnableOption "the Corsair keyboard/mouse driver"; enable = mkEnableOption "the Corsair keyboard/mouse driver";
package = mkOption { package = mkOption {
type = types.package; type = types.package;
default = pkgs.ckb; default = pkgs.ckb-next;
defaultText = "pkgs.ckb"; defaultText = "pkgs.ckb-next";
description = '' description = ''
The package implementing the Corsair keyboard/mouse driver. The package implementing the Corsair keyboard/mouse driver.
''; '';
@ -23,12 +23,12 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment.systemPackages = [ cfg.package ]; environment.systemPackages = [ cfg.package ];
systemd.services.ckb = { systemd.services.ckb-next = {
description = "Corsair Keyboard Daemon"; description = "Corsair Keyboards and Mice Daemon";
wantedBy = ["multi-user.target"]; wantedBy = ["multi-user.target"];
script = "${cfg.package}/bin/ckb-daemon"; script = "exec ${cfg.package}/bin/ckb-next-daemon";
serviceConfig = { serviceConfig = {
Restart = "always"; Restart = "on-failure";
StandardOutput = "syslog"; StandardOutput = "syslog";
}; };
}; };

View File

@ -334,6 +334,7 @@
slurm = 307; slurm = 307;
kapacitor = 308; kapacitor = 308;
solr = 309; solr = 309;
alerta = 310;
# 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!
@ -628,6 +629,7 @@
slurm = 307; slurm = 307;
kapacitor = 308; kapacitor = 308;
solr = 309; solr = 309;
alerta = 310;
# 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

View File

@ -34,7 +34,7 @@
./config/zram.nix ./config/zram.nix
./hardware/all-firmware.nix ./hardware/all-firmware.nix
./hardware/brightnessctl.nix ./hardware/brightnessctl.nix
./hardware/ckb.nix ./hardware/ckb-next.nix
./hardware/cpu/amd-microcode.nix ./hardware/cpu/amd-microcode.nix
./hardware/cpu/intel-microcode.nix ./hardware/cpu/intel-microcode.nix
./hardware/digitalbitbox.nix ./hardware/digitalbitbox.nix
@ -90,6 +90,7 @@
./programs/criu.nix ./programs/criu.nix
./programs/dconf.nix ./programs/dconf.nix
./programs/digitalbitbox/default.nix ./programs/digitalbitbox/default.nix
./programs/dmrconfig.nix
./programs/environment.nix ./programs/environment.nix
./programs/firejail.nix ./programs/firejail.nix
./programs/fish.nix ./programs/fish.nix
@ -419,6 +420,7 @@
./services/misc/weechat.nix ./services/misc/weechat.nix
./services/misc/xmr-stak.nix ./services/misc/xmr-stak.nix
./services/misc/zookeeper.nix ./services/misc/zookeeper.nix
./services/monitoring/alerta.nix
./services/monitoring/apcupsd.nix ./services/monitoring/apcupsd.nix
./services/monitoring/arbtt.nix ./services/monitoring/arbtt.nix
./services/monitoring/bosun.nix ./services/monitoring/bosun.nix
@ -429,6 +431,7 @@
./services/monitoring/dd-agent/dd-agent.nix ./services/monitoring/dd-agent/dd-agent.nix
./services/monitoring/fusion-inventory.nix ./services/monitoring/fusion-inventory.nix
./services/monitoring/grafana.nix ./services/monitoring/grafana.nix
./services/monitoring/grafana-reporter.nix
./services/monitoring/graphite.nix ./services/monitoring/graphite.nix
./services/monitoring/hdaps.nix ./services/monitoring/hdaps.nix
./services/monitoring/heapster.nix ./services/monitoring/heapster.nix

View File

@ -0,0 +1,38 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.programs.dmrconfig;
in {
meta.maintainers = [ maintainers.etu ];
###### interface
options = {
programs.dmrconfig = {
enable = mkOption {
default = false;
type = types.bool;
description = ''
Whether to configure system to enable use of dmrconfig. This
enables the required udev rules and installs the program.
'';
relatedPackages = [ "dmrconfig" ];
};
package = mkOption {
default = pkgs.dmrconfig;
type = types.package;
defaultText = "pkgs.dmrconfig";
description = "dmrconfig derivation to use";
};
};
};
###### implementation
config = mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
services.udev.packages = [ cfg.package ];
};
}

View File

@ -282,6 +282,10 @@ with lib;
(mkRenamedOptionModule [ "programs" "man" "enable" ] [ "documentation" "man" "enable" ]) (mkRenamedOptionModule [ "programs" "man" "enable" ] [ "documentation" "man" "enable" ])
(mkRenamedOptionModule [ "services" "nixosManual" "enable" ] [ "documentation" "nixos" "enable" ]) (mkRenamedOptionModule [ "services" "nixosManual" "enable" ] [ "documentation" "nixos" "enable" ])
# ckb
(mkRenamedOptionModule [ "hardware" "ckb" "enable" ] [ "hardware" "ckb-next" "enable" ])
(mkRenamedOptionModule [ "hardware" "ckb" "package" ] [ "hardware" "ckb-next" "package" ])
] ++ (flip map [ "blackboxExporter" "collectdExporter" "fritzboxExporter" ] ++ (flip map [ "blackboxExporter" "collectdExporter" "fritzboxExporter"
"jsonExporter" "minioExporter" "nginxExporter" "nodeExporter" "jsonExporter" "minioExporter" "nginxExporter" "nodeExporter"
"snmpExporter" "unifiExporter" "varnishExporter" ] "snmpExporter" "unifiExporter" "varnishExporter" ]

View File

@ -346,8 +346,12 @@ in {
description = "Bacula File Daemon"; description = "Bacula File Daemon";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
path = [ pkgs.bacula ]; path = [ pkgs.bacula ];
serviceConfig.ExecStart = "${pkgs.bacula}/sbin/bacula-fd -f -u root -g bacula -c ${fd_conf}"; serviceConfig = {
serviceConfig.ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; ExecStart = "${pkgs.bacula}/sbin/bacula-fd -f -u root -g bacula -c ${fd_conf}";
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
LogsDirectory = "bacula";
StateDirectory = "bacula";
};
}; };
systemd.services.bacula-sd = mkIf sd_cfg.enable { systemd.services.bacula-sd = mkIf sd_cfg.enable {
@ -355,8 +359,12 @@ in {
description = "Bacula Storage Daemon"; description = "Bacula Storage Daemon";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
path = [ pkgs.bacula ]; path = [ pkgs.bacula ];
serviceConfig.ExecStart = "${pkgs.bacula}/sbin/bacula-sd -f -u bacula -g bacula -c ${sd_conf}"; serviceConfig = {
serviceConfig.ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; ExecStart = "${pkgs.bacula}/sbin/bacula-sd -f -u bacula -g bacula -c ${sd_conf}";
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
LogsDirectory = "bacula";
StateDirectory = "bacula";
};
}; };
services.postgresql.enable = dir_cfg.enable == true; services.postgresql.enable = dir_cfg.enable == true;
@ -366,8 +374,12 @@ in {
description = "Bacula Director Daemon"; description = "Bacula Director Daemon";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
path = [ pkgs.bacula ]; path = [ pkgs.bacula ];
serviceConfig.ExecStart = "${pkgs.bacula}/sbin/bacula-dir -f -u bacula -g bacula -c ${dir_conf}"; serviceConfig = {
serviceConfig.ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; ExecStart = "${pkgs.bacula}/sbin/bacula-dir -f -u bacula -g bacula -c ${dir_conf}";
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
LogsDirectory = "bacula";
StateDirectory = "bacula";
};
preStart = '' preStart = ''
if ! test -e "${libDir}/db-created"; then if ! test -e "${libDir}/db-created"; then
${pkgs.postgresql}/bin/createuser --no-superuser --no-createdb --no-createrole bacula ${pkgs.postgresql}/bin/createuser --no-superuser --no-createdb --no-createrole bacula

View File

@ -3,8 +3,13 @@
with lib; with lib;
let let
version = "1.14.10"; version = "1.2.5";
cfg = config.services.kubernetes.addons.dns; cfg = config.services.kubernetes.addons.dns;
ports = {
dns = 10053;
health = 10054;
metrics = 10055;
};
in { in {
options.services.kubernetes.addons.dns = { options.services.kubernetes.addons.dns = {
enable = mkEnableOption "kubernetes dns addon"; enable = mkEnableOption "kubernetes dns addon";
@ -27,49 +32,130 @@ in {
type = types.str; type = types.str;
}; };
kube-dns = mkOption { replicas = mkOption {
description = "Docker image to seed for the kube-dns main container."; description = "Number of DNS pod replicas to deploy in the cluster.";
type = types.attrs; default = 2;
default = { type = types.int;
imageName = "k8s.gcr.io/k8s-dns-kube-dns-amd64";
imageDigest = "sha256:b99fc3eee2a9f052f7eb4cc00f15eb12fc405fa41019baa2d6b79847ae7284a8";
finalImageTag = version;
sha256 = "0x583znk9smqn0fix7ld8sm5jgaxhqhx3fq97b1wkqm7iwhvl3pj";
};
}; };
dnsmasq-nanny = mkOption { coredns = mkOption {
description = "Docker image to seed for the kube-dns dnsmasq container."; description = "Docker image to seed for the CoreDNS container.";
type = types.attrs; type = types.attrs;
default = { default = {
imageName = "k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64"; imageName = "coredns/coredns";
imageDigest = "sha256:bbb2a290a568125b3b996028958eb773f33b5b87a6b37bf38a28f8b62dddb3c8"; imageDigest = "sha256:33c8da20b887ae12433ec5c40bfddefbbfa233d5ce11fb067122e68af30291d6";
finalImageTag = version; finalImageTag = version;
sha256 = "1fihml7s2mfwgac51cbqpylkwbivc8nyhgi4vb820s83zvl8a6y1"; sha256 = "13q19rgwapv27xcs664dw502254yw4zw63insf6g2danidv2mg6i";
};
};
sidecar = mkOption {
description = "Docker image to seed for the kube-dns sidecar container.";
type = types.attrs;
default = {
imageName = "k8s.gcr.io/k8s-dns-sidecar-amd64";
imageDigest = "sha256:4f1ab957f87b94a5ec1edc26fae50da2175461f00afecf68940c4aa079bd08a4";
finalImageTag = version;
sha256 = "08l1bv5jgrhvjzpqpbinrkgvv52snc4fzyd8ya9v18ns2klyz7m0";
}; };
}; };
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
services.kubernetes.kubelet.seedDockerImages = with pkgs.dockerTools; [ services.kubernetes.kubelet.seedDockerImages =
(pullImage cfg.kube-dns) singleton (pkgs.dockerTools.pullImage cfg.coredns);
(pullImage cfg.dnsmasq-nanny)
(pullImage cfg.sidecar)
];
services.kubernetes.addonManager.addons = { services.kubernetes.addonManager.addons = {
kubedns-deployment = { coredns-sa = {
apiVersion = "v1";
kind = "ServiceAccount";
metadata = {
labels = {
"addonmanager.kubernetes.io/mode" = "Reconcile";
"k8s-app" = "kube-dns";
"kubernetes.io/cluster-service" = "true";
};
name = "coredns";
namespace = "kube-system";
};
};
coredns-cr = {
apiVersion = "rbac.authorization.k8s.io/v1beta1";
kind = "ClusterRole";
metadata = {
labels = {
"addonmanager.kubernetes.io/mode" = "Reconcile";
"k8s-app" = "kube-dns";
"kubernetes.io/cluster-service" = "true";
"kubernetes.io/bootstrapping" = "rbac-defaults";
};
name = "system:coredns";
};
rules = [
{
apiGroups = [ "" ];
resources = [ "endpoints" "services" "pods" "namespaces" ];
verbs = [ "list" "watch" ];
}
{
apiGroups = [ "" ];
resources = [ "nodes" ];
verbs = [ "get" ];
}
];
};
coredns-crb = {
apiVersion = "rbac.authorization.k8s.io/v1beta1";
kind = "ClusterRoleBinding";
metadata = {
annotations = {
"rbac.authorization.kubernetes.io/autoupdate" = "true";
};
labels = {
"addonmanager.kubernetes.io/mode" = "Reconcile";
"k8s-app" = "kube-dns";
"kubernetes.io/cluster-service" = "true";
"kubernetes.io/bootstrapping" = "rbac-defaults";
};
name = "system:coredns";
};
roleRef = {
apiGroup = "rbac.authorization.k8s.io";
kind = "ClusterRole";
name = "system:coredns";
};
subjects = [
{
kind = "ServiceAccount";
name = "coredns";
namespace = "kube-system";
}
];
};
coredns-cm = {
apiVersion = "v1";
kind = "ConfigMap";
metadata = {
labels = {
"addonmanager.kubernetes.io/mode" = "Reconcile";
"k8s-app" = "kube-dns";
"kubernetes.io/cluster-service" = "true";
};
name = "coredns";
namespace = "kube-system";
};
data = {
Corefile = ".:${toString ports.dns} {
errors
health :${toString ports.health}
kubernetes ${cfg.clusterDomain} in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
}
prometheus :${toString ports.metrics}
proxy . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}";
};
};
coredns-deploy = {
apiVersion = "extensions/v1beta1"; apiVersion = "extensions/v1beta1";
kind = "Deployment"; kind = "Deployment";
metadata = { metadata = {
@ -77,182 +163,96 @@ in {
"addonmanager.kubernetes.io/mode" = "Reconcile"; "addonmanager.kubernetes.io/mode" = "Reconcile";
"k8s-app" = "kube-dns"; "k8s-app" = "kube-dns";
"kubernetes.io/cluster-service" = "true"; "kubernetes.io/cluster-service" = "true";
"kubernetes.io/name" = "CoreDNS";
}; };
name = "kube-dns"; name = "coredns";
namespace = "kube-system"; namespace = "kube-system";
}; };
spec = { spec = {
selector.matchLabels."k8s-app" = "kube-dns"; replicas = cfg.replicas;
strategy = { selector = {
rollingUpdate = { matchLabels = { k8s-app = "kube-dns"; };
maxSurge = "10%";
maxUnavailable = 0;
}; };
strategy = {
rollingUpdate = { maxUnavailable = 1; };
type = "RollingUpdate";
}; };
template = { template = {
metadata = { metadata = {
annotations."scheduler.alpha.kubernetes.io/critical-pod" = ""; labels = {
labels.k8s-app = "kube-dns"; k8s-app = "kube-dns";
};
}; };
spec = { spec = {
priorityClassName = "system-cluster-critical";
containers = [ containers = [
{ {
name = "kubedns"; args = [ "-conf" "/etc/coredns/Corefile" ];
image = with cfg.kube-dns; "${imageName}:${finalImageTag}"; image = with cfg.coredns; "${imageName}:${finalImageTag}";
imagePullPolicy = "Never";
livenessProbe = {
failureThreshold = 5;
httpGet = {
path = "/health";
port = ports.health;
scheme = "HTTP";
};
initialDelaySeconds = 60;
successThreshold = 1;
timeoutSeconds = 5;
};
name = "coredns";
ports = [
{
containerPort = ports.dns;
name = "dns";
protocol = "UDP";
}
{
containerPort = ports.dns;
name = "dns-tcp";
protocol = "TCP";
}
{
containerPort = ports.metrics;
name = "metrics";
protocol = "TCP";
}
];
resources = { resources = {
limits.memory = "170Mi"; limits = {
memory = "170Mi";
};
requests = { requests = {
cpu = "100m"; cpu = "100m";
memory = "70Mi"; memory = "70Mi";
}; };
}; };
livenessProbe = { securityContext = {
failureThreshold = 5; allowPrivilegeEscalation = false;
httpGet = { capabilities = {
path = "/healthcheck/kubedns"; drop = [ "all" ];
port = 10054;
scheme = "HTTP";
};
initialDelaySeconds = 60;
successThreshold = 1;
timeoutSeconds = 5;
};
readinessProbe = {
httpGet = {
path = "/readiness";
port = 8081;
scheme = "HTTP";
};
initialDelaySeconds = 3;
timeoutSeconds = 5;
};
args = [
"--domain=${cfg.clusterDomain}"
"--dns-port=10053"
"--config-dir=/kube-dns-config"
"--v=2"
];
env = [
{
name = "PROMETHEUS_PORT";
value = "10055";
}
];
ports = [
{
containerPort = 10053;
name = "dns-local";
protocol = "UDP";
}
{
containerPort = 10053;
name = "dns-tcp-local";
protocol = "TCP";
}
{
containerPort = 10055;
name = "metrics";
protocol = "TCP";
}
];
volumeMounts = [
{
mountPath = "/kube-dns-config";
name = "kube-dns-config";
}
];
}
{
name = "dnsmasq";
image = with cfg.dnsmasq-nanny; "${imageName}:${finalImageTag}";
livenessProbe = {
httpGet = {
path = "/healthcheck/dnsmasq";
port = 10054;
scheme = "HTTP";
};
initialDelaySeconds = 60;
timeoutSeconds = 5;
successThreshold = 1;
failureThreshold = 5;
};
args = [
"-v=2"
"-logtostderr"
"-configDir=/etc/k8s/dns/dnsmasq-nanny"
"-restartDnsmasq=true"
"--"
"-k"
"--cache-size=1000"
"--log-facility=-"
"--server=/${cfg.clusterDomain}/127.0.0.1#10053"
"--server=/in-addr.arpa/127.0.0.1#10053"
"--server=/ip6.arpa/127.0.0.1#10053"
];
ports = [
{
containerPort = 53;
name = "dns";
protocol = "UDP";
}
{
containerPort = 53;
name = "dns-tcp";
protocol = "TCP";
}
];
resources = {
requests = {
cpu = "150m";
memory = "20Mi";
}; };
readOnlyRootFilesystem = true;
}; };
volumeMounts = [ volumeMounts = [
{ {
mountPath = "/etc/k8s/dns/dnsmasq-nanny"; mountPath = "/etc/coredns";
name = "kube-dns-config"; name = "config-volume";
readOnly = true;
} }
]; ];
} }
{
name = "sidecar";
image = with cfg.sidecar; "${imageName}:${finalImageTag}";
livenessProbe = {
httpGet = {
path = "/metrics";
port = 10054;
scheme = "HTTP";
};
initialDelaySeconds = 60;
timeoutSeconds = 5;
successThreshold = 1;
failureThreshold = 5;
};
args = [
"--v=2"
"--logtostderr"
"--probe=kubedns,127.0.0.1:10053,kubernetes.default.svc.${cfg.clusterDomain},5,A"
"--probe=dnsmasq,127.0.0.1:53,kubernetes.default.svc.${cfg.clusterDomain},5,A"
];
ports = [
{
containerPort = 10054;
name = "metrics";
protocol = "TCP";
}
];
resources = {
requests = {
cpu = "10m";
memory = "20Mi";
};
};
}
]; ];
dnsPolicy = "Default"; dnsPolicy = "Default";
serviceAccountName = "kube-dns"; nodeSelector = {
"beta.kubernetes.io/os" = "linux";
};
serviceAccountName = "coredns";
tolerations = [ tolerations = [
{
effect = "NoSchedule";
key = "node-role.kubernetes.io/master";
}
{ {
key = "CriticalAddonsOnly"; key = "CriticalAddonsOnly";
operator = "Exists"; operator = "Exists";
@ -261,10 +261,15 @@ in {
volumes = [ volumes = [
{ {
configMap = { configMap = {
name = "kube-dns"; items = [
optional = true; {
key = "Corefile";
path = "Corefile";
}
];
name = "coredns";
}; };
name = "kube-dns-config"; name = "config-volume";
} }
]; ];
}; };
@ -272,15 +277,19 @@ in {
}; };
}; };
kubedns-svc = { coredns-svc = {
apiVersion = "v1"; apiVersion = "v1";
kind = "Service"; kind = "Service";
metadata = { metadata = {
annotations = {
"prometheus.io/port" = toString ports.metrics;
"prometheus.io/scrape" = "true";
};
labels = { labels = {
"addonmanager.kubernetes.io/mode" = "Reconcile"; "addonmanager.kubernetes.io/mode" = "Reconcile";
"k8s-app" = "kube-dns"; "k8s-app" = "kube-dns";
"kubernetes.io/cluster-service" = "true"; "kubernetes.io/cluster-service" = "true";
"kubernetes.io/name" = "KubeDNS"; "kubernetes.io/name" = "CoreDNS";
}; };
name = "kube-dns"; name = "kube-dns";
namespace = "kube-system"; namespace = "kube-system";
@ -288,35 +297,20 @@ in {
spec = { spec = {
clusterIP = cfg.clusterIp; clusterIP = cfg.clusterIp;
ports = [ ports = [
{name = "dns"; port = 53; protocol = "UDP";} {
{name = "dns-tcp"; port = 53; protocol = "TCP";} name = "dns";
port = 53;
targetPort = ports.dns;
protocol = "UDP";
}
{
name = "dns-tcp";
port = 53;
targetPort = ports.dns;
protocol = "TCP";
}
]; ];
selector.k8s-app = "kube-dns"; selector = { k8s-app = "kube-dns"; };
};
};
kubedns-sa = {
apiVersion = "v1";
kind = "ServiceAccount";
metadata = {
name = "kube-dns";
namespace = "kube-system";
labels = {
"kubernetes.io/cluster-service" = "true";
"addonmanager.kubernetes.io/mode" = "Reconcile";
};
};
};
kubedns-cm = {
apiVersion = "v1";
kind = "ConfigMap";
metadata = {
name = "kube-dns";
namespace = "kube-system";
labels = {
"addonmanager.kubernetes.io/mode" = "EnsureExists";
};
}; };
}; };
}; };

View File

@ -145,6 +145,7 @@ in {
systemd.services.jupyter = { systemd.services.jupyter = {
description = "Jupyter development server"; description = "Jupyter development server";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
# TODO: Patch notebook so we can explicitly pass in a shell # TODO: Patch notebook so we can explicitly pass in a shell

View File

@ -6,6 +6,7 @@ let
cfg = config.services.rspamd; cfg = config.services.rspamd;
opts = options.services.rspamd; opts = options.services.rspamd;
postfixCfg = config.services.postfix;
bindSocketOpts = {options, config, ... }: { bindSocketOpts = {options, config, ... }: {
options = { options = {
@ -58,7 +59,7 @@ let
}; };
type = mkOption { type = mkOption {
type = types.nullOr (types.enum [ type = types.nullOr (types.enum [
"normal" "controller" "fuzzy_storage" "proxy" "lua" "normal" "controller" "fuzzy_storage" "rspamd_proxy" "lua"
]); ]);
description = "The type of this worker"; description = "The type of this worker";
}; };
@ -99,18 +100,20 @@ let
description = "Additional entries to put verbatim into worker section of rspamd config file."; description = "Additional entries to put verbatim into worker section of rspamd config file.";
}; };
}; };
config = mkIf (name == "normal" || name == "controller" || name == "fuzzy") { config = mkIf (name == "normal" || name == "controller" || name == "fuzzy" || name == "rspamd_proxy") {
type = mkDefault name; type = mkDefault name;
includes = mkDefault [ "$CONFDIR/worker-${name}.inc" ]; includes = mkDefault [ "$CONFDIR/worker-${if name == "rspamd_proxy" then "proxy" else name}.inc" ];
bindSockets = mkDefault (if name == "normal" bindSockets =
then [{ let
socket = "/run/rspamd/rspamd.sock"; unixSocket = name: {
mode = "0660"; mode = "0660";
socket = "/run/rspamd/${name}.sock";
owner = cfg.user; owner = cfg.user;
group = cfg.group; group = cfg.group;
}] };
else if name == "controller" in mkDefault (if name == "normal" then [(unixSocket "rspamd")]
then [ "localhost:11334" ] else if name == "controller" then [ "localhost:11334" ]
else if name == "rspamd_proxy" then [ (unixSocket "proxy") ]
else [] ); else [] );
}; };
}; };
@ -138,24 +141,31 @@ let
.include(try=true; priority=10) "$LOCAL_CONFDIR/override.d/logging.inc" .include(try=true; priority=10) "$LOCAL_CONFDIR/override.d/logging.inc"
} }
${concatStringsSep "\n" (mapAttrsToList (name: value: '' ${concatStringsSep "\n" (mapAttrsToList (name: value: let
worker ${optionalString (value.name != "normal" && value.name != "controller") "${value.name}"} { includeName = if name == "rspamd_proxy" then "proxy" else name;
tryOverride = if value.extraConfig == "" then "true" else "false";
in ''
worker "${value.type}" {
type = "${value.type}"; type = "${value.type}";
${optionalString (value.enable != null) ${optionalString (value.enable != null)
"enabled = ${if value.enable != false then "yes" else "no"};"} "enabled = ${if value.enable != false then "yes" else "no"};"}
${mkBindSockets value.enable value.bindSockets} ${mkBindSockets value.enable value.bindSockets}
${optionalString (value.count != null) "count = ${toString value.count};"} ${optionalString (value.count != null) "count = ${toString value.count};"}
${concatStringsSep "\n " (map (each: ".include \"${each}\"") value.includes)} ${concatStringsSep "\n " (map (each: ".include \"${each}\"") value.includes)}
${value.extraConfig} .include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/worker-${includeName}.inc"
.include(try=${tryOverride}; priority=10) "$LOCAL_CONFDIR/override.d/worker-${includeName}.inc"
} }
'') cfg.workers)} '') cfg.workers)}
${cfg.extraConfig} ${optionalString (cfg.extraConfig != "") ''
.include(priority=10) "$LOCAL_CONFDIR/override.d/extra-config.inc"
''}
''; '';
filterFiles = files: filterAttrs (n: v: v.enable) files;
rspamdDir = pkgs.linkFarm "etc-rspamd-dir" ( rspamdDir = pkgs.linkFarm "etc-rspamd-dir" (
(mapAttrsToList (name: file: { name = "local.d/${name}"; path = file.source; }) cfg.locals) ++ (mapAttrsToList (name: file: { name = "local.d/${name}"; path = file.source; }) (filterFiles cfg.locals)) ++
(mapAttrsToList (name: file: { name = "override.d/${name}"; path = file.source; }) cfg.overrides) ++ (mapAttrsToList (name: file: { name = "override.d/${name}"; path = file.source; }) (filterFiles cfg.overrides)) ++
(optional (cfg.localLuaRules != null) { name = "rspamd.local.lua"; path = cfg.localLuaRules; }) ++ (optional (cfg.localLuaRules != null) { name = "rspamd.local.lua"; path = cfg.localLuaRules; }) ++
[ { name = "rspamd.conf"; path = rspamdConfFile; } ] [ { name = "rspamd.conf"; path = rspamdConfFile; } ]
); );
@ -188,6 +198,15 @@ let
in mkDefault (pkgs.writeText name' config.text)); in mkDefault (pkgs.writeText name' config.text));
}; };
}; };
configOverrides =
(mapAttrs' (n: v: nameValuePair "worker-${if n == "rspamd_proxy" then "proxy" else n}.inc" {
text = v.extraConfig;
})
(filterAttrs (n: v: v.extraConfig != "") cfg.workers))
// (if cfg.extraConfig == "" then {} else {
"extra-config.inc".text = cfg.extraConfig;
});
in in
{ {
@ -207,7 +226,7 @@ in
}; };
locals = mkOption { locals = mkOption {
type = with types; loaOf (submodule (configFileModule "locals")); type = with types; attrsOf (submodule (configFileModule "locals"));
default = {}; default = {};
description = '' description = ''
Local configuration files, written into <filename>/etc/rspamd/local.d/{name}</filename>. Local configuration files, written into <filename>/etc/rspamd/local.d/{name}</filename>.
@ -220,7 +239,7 @@ in
}; };
overrides = mkOption { overrides = mkOption {
type = with types; loaOf (submodule (configFileModule "overrides")); type = with types; attrsOf (submodule (configFileModule "overrides"));
default = {}; default = {};
description = '' description = ''
Overridden configuration files, written into <filename>/etc/rspamd/override.d/{name}</filename>. Overridden configuration files, written into <filename>/etc/rspamd/override.d/{name}</filename>.
@ -293,6 +312,29 @@ in
Group to use when no root privileges are required. Group to use when no root privileges are required.
''; '';
}; };
postfix = {
enable = mkOption {
type = types.bool;
default = false;
description = "Add rspamd milter to postfix main.conf";
};
config = mkOption {
type = with types; attrsOf (either bool (either str (listOf str)));
description = ''
Addon to postfix configuration
'';
default = {
smtpd_milters = ["unix:/run/rspamd/rspamd-milter.sock"];
non_smtpd_milters = ["unix:/run/rspamd/rspamd-milter.sock"];
};
example = {
smtpd_milters = ["unix:/run/rspamd/rspamd-milter.sock"];
non_smtpd_milters = ["unix:/run/rspamd/rspamd-milter.sock"];
};
};
};
}; };
}; };
@ -300,6 +342,25 @@ in
###### implementation ###### implementation
config = mkIf cfg.enable { config = mkIf cfg.enable {
services.rspamd.overrides = configOverrides;
services.rspamd.workers = mkIf cfg.postfix.enable {
controller = {};
rspamd_proxy = {
bindSockets = [ {
mode = "0660";
socket = "/run/rspamd/rspamd-milter.sock";
owner = cfg.user;
group = postfixCfg.group;
} ];
extraConfig = ''
upstream "local" {
default = yes; # Self-scan upstreams are always default
self_scan = yes; # Enable self-scan
}
'';
};
};
services.postfix.config = mkIf cfg.postfix.enable cfg.postfix.config;
# Allow users to run 'rspamc' and 'rspamadm'. # Allow users to run 'rspamc' and 'rspamadm'.
environment.systemPackages = [ pkgs.rspamd ]; environment.systemPackages = [ pkgs.rspamd ];

View File

@ -6,6 +6,7 @@ let
cfg = config.services.gitea; cfg = config.services.gitea;
gitea = cfg.package; gitea = cfg.package;
pg = config.services.postgresql; pg = config.services.postgresql;
useMysql = cfg.database.type == "mysql";
usePostgresql = cfg.database.type == "postgres"; usePostgresql = cfg.database.type == "postgres";
configFile = pkgs.writeText "app.ini" '' configFile = pkgs.writeText "app.ini" ''
APP_NAME = ${cfg.appName} APP_NAME = ${cfg.appName}
@ -14,7 +15,7 @@ let
[database] [database]
DB_TYPE = ${cfg.database.type} DB_TYPE = ${cfg.database.type}
HOST = ${cfg.database.host}:${toString cfg.database.port} HOST = ${if cfg.database.socket != null then cfg.database.socket else cfg.database.host + ":" + toString cfg.database.port}
NAME = ${cfg.database.name} NAME = ${cfg.database.name}
USER = ${cfg.database.user} USER = ${cfg.database.user}
PASSWD = #dbpass# PASSWD = #dbpass#
@ -148,6 +149,13 @@ in
''; '';
}; };
socket = mkOption {
type = types.nullOr types.path;
default = null;
example = "/run/mysqld/mysqld.sock";
description = "Path to the unix socket file to use for authentication.";
};
path = mkOption { path = mkOption {
type = types.str; type = types.str;
default = "${cfg.stateDir}/data/gitea.db"; default = "${cfg.stateDir}/data/gitea.db";
@ -253,7 +261,7 @@ in
systemd.services.gitea = { systemd.services.gitea = {
description = "gitea"; description = "gitea";
after = [ "network.target" "postgresql.service" ]; after = [ "network.target" ] ++ lib.optional usePostgresql "postgresql.service" ++ lib.optional useMysql "mysql.service";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
path = [ gitea.bin ]; path = [ gitea.bin ];

View File

@ -62,11 +62,15 @@ let
''} ''}
$extraOptions $extraOptions
END END
'' + optionalString cfg.checkConfig '' '' + optionalString cfg.checkConfig (
if pkgs.stdenv.hostPlatform != pkgs.stdenv.buildPlatform then ''
echo "Ignore nix.checkConfig when cross-compiling"
'' else ''
echo "Checking that Nix can read nix.conf..." echo "Checking that Nix can read nix.conf..."
ln -s $out ./nix.conf ln -s $out ./nix.conf
NIX_CONF_DIR=$PWD ${cfg.package}/bin/nix show-config >/dev/null NIX_CONF_DIR=$PWD ${cfg.package}/bin/nix show-config >/dev/null
''); '')
);
in in

View File

@ -6,11 +6,8 @@ let
cfg = config.services.packagekit; cfg = config.services.packagekit;
backend = "nix";
packagekitConf = '' packagekitConf = ''
[Daemon] [Daemon]
DefaultBackend=${backend}
KeepCache=false KeepCache=false
''; '';

View File

@ -0,0 +1,116 @@
{ options, config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.alerta;
alertaConf = pkgs.writeTextFile {
name = "alertad.conf";
text = ''
DATABASE_URL = '${cfg.databaseUrl}'
DATABASE_NAME = '${cfg.databaseName}'
LOG_FILE = '${cfg.logDir}/alertad.log'
LOG_FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
CORS_ORIGINS = [ ${concatMapStringsSep ", " (s: "\"" + s + "\"") cfg.corsOrigins} ];
AUTH_REQUIRED = ${if cfg.authenticationRequired then "True" else "False"}
SIGNUP_ENABLED = ${if cfg.signupEnabled then "True" else "False"}
${cfg.extraConfig}
'';
};
in
{
options.services.alerta = {
enable = mkEnableOption "alerta";
port = mkOption {
type = types.int;
default = 5000;
description = "Port of Alerta";
};
bind = mkOption {
type = types.str;
default = "0.0.0.0";
example = literalExample "0.0.0.0";
description = "Address to bind to. The default is to bind to all addresses";
};
logDir = mkOption {
type = types.path;
description = "Location where the logfiles are stored";
default = "/var/log/alerta";
};
databaseUrl = mkOption {
type = types.str;
description = "URL of the MongoDB or PostgreSQL database to connect to";
default = "mongodb://localhost";
example = "mongodb://localhost";
};
databaseName = mkOption {
type = types.str;
description = "Name of the database instance to connect to";
default = "monitoring";
example = "monitoring";
};
corsOrigins = mkOption {
type = types.listOf types.str;
description = "List of URLs that can access the API for Cross-Origin Resource Sharing (CORS)";
example = [ "http://localhost" "http://localhost:5000" ];
default = [ "http://localhost" "http://localhost:5000" ];
};
authenticationRequired = mkOption {
type = types.bool;
description = "Whether users must authenticate when using the web UI or command-line tool";
default = false;
};
signupEnabled = mkOption {
type = types.bool;
description = "Whether to prevent sign-up of new users via the web UI";
default = true;
};
extraConfig = mkOption {
description = "These lines go into alertad.conf verbatim.";
default = "";
type = types.lines;
};
};
config = mkIf cfg.enable {
systemd.services.alerta = {
description = "Alerta Monitoring System";
wantedBy = [ "multi-user.target" ];
after = [ "networking.target" ];
environment = {
ALERTA_SVR_CONF_FILE = alertaConf;
};
serviceConfig = {
ExecStart = "${pkgs.python36Packages.alerta-server}/bin/alertad run --port ${toString cfg.port} --host ${cfg.bind}";
User = "alerta";
Group = "alerta";
PermissionsStartOnly = true;
};
preStart = ''
mkdir -p ${cfg.logDir}
chown alerta:alerta ${cfg.logDir}
'';
};
environment.systemPackages = [ pkgs.python36Packages.alerta ];
users.users.alerta = {
uid = config.ids.uids.alerta;
description = "Alerta user";
};
users.groups.alerta = {
gid = config.ids.gids.alerta;
};
};
}

View File

@ -0,0 +1,66 @@
{ options, config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.grafana_reporter;
in {
options.services.grafana_reporter = {
enable = mkEnableOption "grafana_reporter";
grafana = {
protocol = mkOption {
description = "Grafana protocol.";
default = "http";
type = types.enum ["http" "https"];
};
addr = mkOption {
description = "Grafana address.";
default = "127.0.0.1";
type = types.str;
};
port = mkOption {
description = "Grafana port.";
default = 3000;
type = types.int;
};
};
addr = mkOption {
description = "Listening address.";
default = "127.0.0.1";
type = types.str;
};
port = mkOption {
description = "Listening port.";
default = 8686;
type = types.int;
};
templateDir = mkOption {
description = "Optional template directory to use custom tex templates";
default = "${pkgs.grafana_reporter}";
type = types.str;
};
};
config = mkIf cfg.enable {
systemd.services.grafana_reporter = {
description = "Grafana Reporter Service Daemon";
wantedBy = ["multi-user.target"];
after = ["network.target"];
serviceConfig = let
args = lib.concatSepString " " [
"-proto ${cfg.grafana.protocol}://"
"-ip ${cfg.grafana.addr}:${toString cfg.grafana.port}"
"-port :${toString cfg.port}"
"-templates ${cfg.templateDir}"
];
in {
ExecStart = "${pkgs.grafana_reporter.bin}/bin/grafana-reporter ${args}";
};
};
};
}

View File

@ -42,6 +42,15 @@ let
password = "${cfg.defaultDatabase.password}" password = "${cfg.defaultDatabase.password}"
''} ''}
${optionalString (cfg.alerta.enable) ''
[alerta]
enabled = true
url = "${cfg.alerta.url}"
token = "${cfg.alerta.token}"
environment = "${cfg.alerta.environment}"
origin = "${cfg.alerta.origin}"
''}
${cfg.extraConfig} ${cfg.extraConfig}
''; '';
}; };
@ -120,6 +129,35 @@ in
type = types.string; type = types.string;
}; };
}; };
alerta = {
enable = mkEnableOption "kapacitor alerta integration";
url = mkOption {
description = "The URL to the Alerta REST API";
default = "http://localhost:5000";
example = "http://localhost:5000";
type = types.string;
};
token = mkOption {
description = "Default Alerta authentication token";
type = types.str;
default = "";
};
environment = mkOption {
description = "Default Alerta environment";
type = types.str;
default = "Production";
};
origin = mkOption {
description = "Default origin of alert";
type = types.str;
default = "kapacitor";
};
};
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {

View File

@ -1,33 +1,30 @@
# Monit system watcher
# http://mmonit.org/monit/
{config, pkgs, lib, ...}: {config, pkgs, lib, ...}:
let inherit (lib) mkOption mkIf; with lib;
let
cfg = config.services.monit;
in in
{ {
options = { options.services.monit = {
services.monit = {
enable = mkOption { enable = mkEnableOption "Monit";
default = false;
description = ''
Whether to run Monit system watcher.
'';
};
config = mkOption { config = mkOption {
type = types.lines;
default = ""; default = "";
description = "monitrc content"; description = "monitrc content";
}; };
};
}; };
config = mkIf config.services.monit.enable { config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.monit ]; environment.systemPackages = [ pkgs.monit ];
environment.etc."monitrc" = { environment.etc."monitrc" = {
text = config.services.monit.config; text = cfg.config;
mode = "0400"; mode = "0400";
}; };

View File

@ -198,6 +198,9 @@ in
install -m 0755 -d /var/log/glusterfs install -m 0755 -d /var/log/glusterfs
''; '';
# glustereventsd uses the `gluster` executable
path = [ glusterfs ];
serviceConfig = { serviceConfig = {
Type="simple"; Type="simple";
Environment="PYTHONPATH=${glusterfs}/usr/lib/python2.7/site-packages"; Environment="PYTHONPATH=${glusterfs}/usr/lib/python2.7/site-packages";

View File

@ -130,7 +130,7 @@ in
}; };
ports = mkOption { ports = mkOption {
type = types.listOf types.int; type = types.listOf types.port;
default = [22]; default = [22];
description = '' description = ''
Specifies on which ports the SSH daemon listens. Specifies on which ports the SSH daemon listens.

View File

@ -171,7 +171,12 @@ in {
dbhost = mkOption { dbhost = mkOption {
type = types.nullOr types.str; type = types.nullOr types.str;
default = "localhost"; default = "localhost";
description = "Database host."; description = ''
Database host.
Note: for using Unix authentication with PostgreSQL, this should be
set to <literal>/tmp</literal>.
'';
}; };
dbport = mkOption { dbport = mkOption {
type = with types; nullOr (either int str); type = with types; nullOr (either int str);

View File

@ -246,10 +246,7 @@ checkFS() {
if [ "$fsType" = iso9660 -o "$fsType" = udf ]; then return 0; fi if [ "$fsType" = iso9660 -o "$fsType" = udf ]; then return 0; fi
# Don't check resilient COWs as they validate the fs structures at mount time # Don't check resilient COWs as they validate the fs structures at mount time
if [ "$fsType" = btrfs -o "$fsType" = zfs ]; then return 0; fi if [ "$fsType" = btrfs -o "$fsType" = zfs -o "$fsType" = bcachefs ]; then return 0; fi
# Skip fsck for bcachefs - not implemented yet.
if [ "$fsType" = bcachefs ]; then return 0; fi
# Skip fsck for nilfs2 - not needed by design and no fsck tool for this filesystem. # Skip fsck for nilfs2 - not needed by design and no fsck tool for this filesystem.
if [ "$fsType" = nilfs2 ]; then return 0; fi if [ "$fsType" = nilfs2 ]; then return 0; fi

View File

@ -230,6 +230,8 @@ in
let let
fsToSkipCheck = [ "none" "bindfs" "btrfs" "zfs" "tmpfs" "nfs" "vboxsf" "glusterfs" ]; fsToSkipCheck = [ "none" "bindfs" "btrfs" "zfs" "tmpfs" "nfs" "vboxsf" "glusterfs" ];
skipCheck = fs: fs.noCheck || fs.device == "none" || builtins.elem fs.fsType fsToSkipCheck; skipCheck = fs: fs.noCheck || fs.device == "none" || builtins.elem fs.fsType fsToSkipCheck;
# https://wiki.archlinux.org/index.php/fstab#Filepath_spaces
escape = string: builtins.replaceStrings [ " " ] [ "\\040" ] string;
in '' in ''
# This is a generated file. Do not edit! # This is a generated file. Do not edit!
# #
@ -238,10 +240,10 @@ in
# Filesystems. # Filesystems.
${concatMapStrings (fs: ${concatMapStrings (fs:
(if fs.device != null then fs.device (if fs.device != null then escape fs.device
else if fs.label != null then "/dev/disk/by-label/${fs.label}" else if fs.label != null then "/dev/disk/by-label/${escape fs.label}"
else throw "No device specified for mount point ${fs.mountPoint}.") else throw "No device specified for mount point ${fs.mountPoint}.")
+ " " + fs.mountPoint + " " + escape fs.mountPoint
+ " " + fs.fsType + " " + fs.fsType
+ " " + builtins.concatStringsSep "," fs.options + " " + builtins.concatStringsSep "," fs.options
+ " 0" + " 0"

View File

@ -1,26 +1,65 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, utils, ... }:
with lib; with lib;
let let
inInitrd = any (fs: fs == "bcachefs") config.boot.initrd.supportedFilesystems; bootFs = filterAttrs (n: fs: (fs.fsType == "bcachefs") && (utils.fsNeededForBoot fs)) config.fileSystems;
commonFunctions = ''
prompt() {
local name="$1"
printf "enter passphrase for $name: "
}
tryUnlock() {
local name="$1"
local path="$2"
if bcachefs unlock -c $path > /dev/null 2> /dev/null; then # test for encryption
prompt $name
until bcachefs unlock $path 2> /dev/null; do # repeat until sucessfully unlocked
printf "unlocking failed!\n"
prompt $name
done
printf "unlocking successful.\n"
fi
}
'';
openCommand = name: fs:
let
# we need only unlock one device manually, and cannot pass multiple at once
# remove this adaptation when bcachefs implements mounting by filesystem uuid
# also, implement automatic waiting for the constituent devices when that happens
# bcachefs does not support mounting devices with colons in the path, ergo we don't (see #49671)
firstDevice = head (splitString ":" fs.device);
in
''
tryUnlock ${name} ${firstDevice}
'';
in in
{ {
config = mkIf (any (fs: fs == "bcachefs") config.boot.supportedFilesystems) { config = mkIf (elem "bcachefs" config.boot.supportedFilesystems) (mkMerge [
{
system.fsPackages = [ pkgs.bcachefs-tools ]; system.fsPackages = [ pkgs.bcachefs-tools ];
# use kernel package with bcachefs support until it's in mainline # use kernel package with bcachefs support until it's in mainline
boot.kernelPackages = pkgs.linuxPackages_testing_bcachefs; boot.kernelPackages = pkgs.linuxPackages_testing_bcachefs;
boot.initrd.availableKernelModules = mkIf inInitrd [ "bcachefs" ]; }
boot.initrd.extraUtilsCommands = mkIf inInitrd (mkIf ((elem "bcachefs" config.boot.initrd.supportedFilesystems) || (bootFs != {})) {
'' # the cryptographic modules are required only for decryption attempts
copy_bin_and_libs ${pkgs.bcachefs-tools}/bin/fsck.bcachefs boot.initrd.availableKernelModules = [ "bcachefs" "chacha20" "poly1305" ];
boot.initrd.extraUtilsCommands = ''
copy_bin_and_libs ${pkgs.bcachefs-tools}/bin/bcachefs
'';
boot.initrd.extraUtilsCommandsTest = ''
$out/bin/bcachefs version
''; '';
}; boot.initrd.postDeviceCommands = commonFunctions + concatStrings (mapAttrsToList openCommand bootFs);
})
]);
} }

View File

@ -45,6 +45,7 @@ let
system.nixos.revision = nixpkgs.rev or nixpkgs.shortRev; system.nixos.revision = nixpkgs.rev or nixpkgs.shortRev;
}; };
makeModules = module: rest: [ configuration versionModule module rest ];
makeIso = makeIso =
{ module, type, system, ... }: { module, type, system, ... }:
@ -53,7 +54,9 @@ let
hydraJob ((import lib/eval-config.nix { hydraJob ((import lib/eval-config.nix {
inherit system; inherit system;
modules = [ configuration module versionModule { isoImage.isoBaseName = "nixos-${type}"; } ]; modules = makeModules module {
isoImage.isoBaseName = "nixos-${type}";
};
}).config.system.build.isoImage); }).config.system.build.isoImage);
@ -64,7 +67,7 @@ let
hydraJob ((import lib/eval-config.nix { hydraJob ((import lib/eval-config.nix {
inherit system; inherit system;
modules = [ configuration module versionModule ]; modules = makeModules module {};
}).config.system.build.sdImage); }).config.system.build.sdImage);
@ -77,7 +80,7 @@ let
config = (import lib/eval-config.nix { config = (import lib/eval-config.nix {
inherit system; inherit system;
modules = [ configuration module versionModule ]; modules = makeModules module {};
}).config; }).config;
tarball = config.system.build.tarball; tarball = config.system.build.tarball;
@ -97,7 +100,7 @@ let
buildFromConfig = module: sel: forAllSystems (system: hydraJob (sel (import ./lib/eval-config.nix { buildFromConfig = module: sel: forAllSystems (system: hydraJob (sel (import ./lib/eval-config.nix {
inherit system; inherit system;
modules = [ configuration module versionModule ] ++ singleton modules = makeModules module
({ ... }: ({ ... }:
{ fileSystems."/".device = mkDefault "/dev/sda1"; { fileSystems."/".device = mkDefault "/dev/sda1";
boot.loader.grub.device = mkDefault "/dev/sda"; boot.loader.grub.device = mkDefault "/dev/sda";
@ -108,7 +111,7 @@ let
let let
configEvaled = import lib/eval-config.nix { configEvaled = import lib/eval-config.nix {
inherit system; inherit system;
modules = [ module versionModule ]; modules = makeModules module {};
}; };
build = configEvaled.config.system.build; build = configEvaled.config.system.build;
kernelTarget = configEvaled.pkgs.stdenv.hostPlatform.platform.kernelTarget; kernelTarget = configEvaled.pkgs.stdenv.hostPlatform.platform.kernelTarget;
@ -301,6 +304,7 @@ in rec {
tests.fsck = callTest tests/fsck.nix {}; tests.fsck = callTest tests/fsck.nix {};
tests.fwupd = callTest tests/fwupd.nix {}; tests.fwupd = callTest tests/fwupd.nix {};
tests.gdk-pixbuf = callTest tests/gdk-pixbuf.nix {}; tests.gdk-pixbuf = callTest tests/gdk-pixbuf.nix {};
tests.gitea = callSubTests tests/gitea.nix {};
tests.gitlab = callTest tests/gitlab.nix {}; tests.gitlab = callTest tests/gitlab.nix {};
tests.gitolite = callTest tests/gitolite.nix {}; tests.gitolite = callTest tests/gitolite.nix {};
tests.gjs = callTest tests/gjs.nix {}; tests.gjs = callTest tests/gjs.nix {};
@ -332,6 +336,7 @@ in rec {
tests.plasma5 = callTest tests/plasma5.nix {}; tests.plasma5 = callTest tests/plasma5.nix {};
tests.plotinus = callTest tests/plotinus.nix {}; tests.plotinus = callTest tests/plotinus.nix {};
tests.keymap = callSubTests tests/keymap.nix {}; tests.keymap = callSubTests tests/keymap.nix {};
tests.incron = callTest tests/incron.nix {};
tests.initrdNetwork = callTest tests/initrd-network.nix {}; tests.initrdNetwork = callTest tests/initrd-network.nix {};
tests.kafka = callSubTests tests/kafka.nix {}; tests.kafka = callSubTests tests/kafka.nix {};
tests.kernel-latest = callTest tests/kernel-latest.nix {}; tests.kernel-latest = callTest tests/kernel-latest.nix {};

74
nixos/tests/gitea.nix Normal file
View File

@ -0,0 +1,74 @@
{ system ? builtins.currentSystem }:
with import ../lib/testing.nix { inherit system; };
with pkgs.lib;
{
mysql = makeTest {
name = "gitea-mysql";
meta.maintainers = [ maintainers.aanderse ];
machine =
{ config, pkgs, ... }:
{ services.mysql.enable = true;
services.mysql.package = pkgs.mariadb;
services.mysql.ensureDatabases = [ "gitea" ];
services.mysql.ensureUsers = [
{ name = "gitea";
ensurePermissions = { "gitea.*" = "ALL PRIVILEGES"; };
}
];
services.gitea.enable = true;
services.gitea.database.type = "mysql";
services.gitea.database.socket = "/run/mysqld/mysqld.sock";
};
testScript = ''
startAll;
$machine->waitForUnit('gitea.service');
$machine->waitForOpenPort('3000');
$machine->succeed("curl --fail http://localhost:3000/");
'';
};
postgres = makeTest {
name = "gitea-postgres";
meta.maintainers = [ maintainers.aanderse ];
machine =
{ config, pkgs, ... }:
{
services.gitea.enable = true;
services.gitea.database.type = "postgres";
services.gitea.database.password = "secret";
};
testScript = ''
startAll;
$machine->waitForUnit('gitea.service');
$machine->waitForOpenPort('3000');
$machine->succeed("curl --fail http://localhost:3000/");
'';
};
sqlite = makeTest {
name = "gitea-sqlite";
meta.maintainers = [ maintainers.aanderse ];
machine =
{ config, pkgs, ... }:
{ services.gitea.enable = true;
};
testScript = ''
startAll;
$machine->waitForUnit('gitea.service');
$machine->waitForOpenPort('3000');
$machine->succeed("curl --fail http://localhost:3000/");
'';
};
}

View File

@ -31,7 +31,8 @@ mycurl -X POST -d '@data.json' $URL/login -c hydra-cookie.txt
cat >data.json <<EOF cat >data.json <<EOF
{ {
"displayname":"Trivial", "displayname":"Trivial",
"enabled":"1" "enabled":"1",
"visible":"1"
} }
EOF EOF
mycurl --silent -X PUT $URL/project/$PROJECT_NAME -d @data.json -b hydra-cookie.txt mycurl --silent -X PUT $URL/project/$PROJECT_NAME -d @data.json -b hydra-cookie.txt

52
nixos/tests/incron.nix Normal file
View File

@ -0,0 +1,52 @@
import ./make-test.nix ({ pkgs, lib, ... }:
{
name = "incron";
meta.maintainers = [ lib.maintainers.aanderse ];
machine =
{ ... }:
{ services.incron.enable = true;
services.incron.extraPackages = [ pkgs.coreutils ];
services.incron.systab = ''
/test IN_CREATE,IN_MODIFY,IN_CLOSE_WRITE,IN_MOVED_FROM,IN_MOVED_TO echo "$@/$# $%" >> /root/incron.log
'';
# ensure the directory to be monitored exists before incron is started
system.activationScripts.incronTest = ''
mkdir /test
'';
};
testScript = ''
startAll;
$machine->waitForUnit("multi-user.target");
$machine->waitForUnit("incron.service");
$machine->succeed("test -d /test");
# create some activity for incron to monitor
$machine->succeed("touch /test/file");
$machine->succeed("echo foo >> /test/file");
$machine->succeed("mv /test/file /root");
$machine->succeed("mv /root/file /test");
$machine->sleep(1);
# touch /test/file
$machine->succeed("grep '/test/file IN_CREATE' /root/incron.log");
# echo foo >> /test/file
$machine->succeed("grep '/test/file IN_MODIFY' /root/incron.log");
$machine->succeed("grep '/test/file IN_CLOSE_WRITE' /root/incron.log");
# mv /test/file /root
$machine->succeed("grep '/test/file IN_MOVED_FROM' /root/incron.log");
# mv /root/file /test
$machine->succeed("grep '/test/file IN_MOVED_TO' /root/incron.log");
# ensure something unexpected is not present
$machine->fail("grep 'IN_OPEN' /root/incron.log");
'';
})

View File

@ -87,7 +87,7 @@ let
# check if pods are running # check if pods are running
$machine1->waitUntilSucceeds("kubectl get pod redis | grep Running"); $machine1->waitUntilSucceeds("kubectl get pod redis | grep Running");
$machine1->waitUntilSucceeds("kubectl get pod probe | grep Running"); $machine1->waitUntilSucceeds("kubectl get pod probe | grep Running");
$machine1->waitUntilSucceeds("kubectl get pods -n kube-system | grep 'kube-dns.*3/3'"); $machine1->waitUntilSucceeds("kubectl get pods -n kube-system | grep 'coredns.*1/1'");
# check dns on host (dnsmasq) # check dns on host (dnsmasq)
$machine1->succeed("host redis.default.svc.cluster.local"); $machine1->succeed("host redis.default.svc.cluster.local");
@ -111,7 +111,7 @@ let
# check if pods are running # check if pods are running
$machine1->waitUntilSucceeds("kubectl get pod redis | grep Running"); $machine1->waitUntilSucceeds("kubectl get pod redis | grep Running");
$machine1->waitUntilSucceeds("kubectl get pod probe | grep Running"); $machine1->waitUntilSucceeds("kubectl get pod probe | grep Running");
$machine1->waitUntilSucceeds("kubectl get pods -n kube-system | grep 'kube-dns.*3/3'"); $machine1->waitUntilSucceeds("kubectl get pods -n kube-system | grep 'coredns.*1/1'");
# check dns on hosts (dnsmasq) # check dns on hosts (dnsmasq)
$machine1->succeed("host redis.default.svc.cluster.local"); $machine1->succeed("host redis.default.svc.cluster.local");

View File

@ -120,4 +120,6 @@ import ./make-test.nix {
$smtp2->waitUntilFails('smtpctl show queue | egrep .'); $smtp2->waitUntilFails('smtpctl show queue | egrep .');
$client->succeed('check-mail-landed >&2'); $client->succeed('check-mail-landed >&2');
''; '';
meta.timeout = 30;
} }

View File

@ -28,6 +28,8 @@ let
${checkSocket "/run/rspamd/rspamd.sock" "rspamd" "rspamd" "660" } ${checkSocket "/run/rspamd/rspamd.sock" "rspamd" "rspamd" "660" }
sleep 10; sleep 10;
$machine->log($machine->succeed("cat /etc/rspamd/rspamd.conf")); $machine->log($machine->succeed("cat /etc/rspamd/rspamd.conf"));
$machine->log($machine->succeed("grep 'CONFDIR/worker-controller.inc' /etc/rspamd/rspamd.conf"));
$machine->log($machine->succeed("grep 'CONFDIR/worker-normal.inc' /etc/rspamd/rspamd.conf"));
$machine->log($machine->succeed("systemctl cat rspamd.service")); $machine->log($machine->succeed("systemctl cat rspamd.service"));
$machine->log($machine->succeed("curl http://localhost:11334/auth")); $machine->log($machine->succeed("curl http://localhost:11334/auth"));
$machine->log($machine->succeed("curl http://127.0.0.1:11334/auth")); $machine->log($machine->succeed("curl http://127.0.0.1:11334/auth"));
@ -56,6 +58,8 @@ in
${checkSocket "/run/rspamd.sock" "root" "root" "600" } ${checkSocket "/run/rspamd.sock" "root" "root" "600" }
${checkSocket "/run/rspamd-worker.sock" "root" "root" "666" } ${checkSocket "/run/rspamd-worker.sock" "root" "root" "666" }
$machine->log($machine->succeed("cat /etc/rspamd/rspamd.conf")); $machine->log($machine->succeed("cat /etc/rspamd/rspamd.conf"));
$machine->log($machine->succeed("grep 'CONFDIR/worker-controller.inc' /etc/rspamd/rspamd.conf"));
$machine->log($machine->succeed("grep 'CONFDIR/worker-normal.inc' /etc/rspamd/rspamd.conf"));
$machine->log($machine->succeed("rspamc -h /run/rspamd-worker.sock stat")); $machine->log($machine->succeed("rspamc -h /run/rspamd-worker.sock stat"));
$machine->log($machine->succeed("curl --unix-socket /run/rspamd-worker.sock http://localhost/ping")); $machine->log($machine->succeed("curl --unix-socket /run/rspamd-worker.sock http://localhost/ping"));
''; '';
@ -78,6 +82,15 @@ in
owner = "root"; owner = "root";
group = "root"; group = "root";
}]; }];
workers.controller2 = {
type = "controller";
bindSockets = [ "0.0.0.0:11335" ];
extraConfig = ''
static_dir = "''${WWWDIR}";
secure_ip = null;
password = "verysecretpassword";
'';
};
}; };
}; };
@ -87,8 +100,14 @@ in
${checkSocket "/run/rspamd.sock" "root" "root" "600" } ${checkSocket "/run/rspamd.sock" "root" "root" "600" }
${checkSocket "/run/rspamd-worker.sock" "root" "root" "666" } ${checkSocket "/run/rspamd-worker.sock" "root" "root" "666" }
$machine->log($machine->succeed("cat /etc/rspamd/rspamd.conf")); $machine->log($machine->succeed("cat /etc/rspamd/rspamd.conf"));
$machine->log($machine->succeed("grep 'CONFDIR/worker-controller.inc' /etc/rspamd/rspamd.conf"));
$machine->log($machine->succeed("grep 'CONFDIR/worker-normal.inc' /etc/rspamd/rspamd.conf"));
$machine->log($machine->succeed("grep 'LOCAL_CONFDIR/override.d/worker-controller2.inc' /etc/rspamd/rspamd.conf"));
$machine->log($machine->succeed("grep 'verysecretpassword' /etc/rspamd/override.d/worker-controller2.inc"));
$machine->waitUntilSucceeds("journalctl -u rspamd | grep -i 'starting controller process' >&2");
$machine->log($machine->succeed("rspamc -h /run/rspamd-worker.sock stat")); $machine->log($machine->succeed("rspamc -h /run/rspamd-worker.sock stat"));
$machine->log($machine->succeed("curl --unix-socket /run/rspamd-worker.sock http://localhost/ping")); $machine->log($machine->succeed("curl --unix-socket /run/rspamd-worker.sock http://localhost/ping"));
$machine->log($machine->succeed("curl http://localhost:11335/ping"));
''; '';
}; };
customLuaRules = makeTest { customLuaRules = makeTest {
@ -110,7 +129,23 @@ in
''; '';
services.rspamd = { services.rspamd = {
enable = true; enable = true;
locals."groups.conf".text = '' locals = {
"antivirus.conf" = mkIf false { text = ''
clamav {
action = "reject";
symbol = "CLAM_VIRUS";
type = "clamav";
log_clean = true;
servers = "/run/clamav/clamd.ctl";
}
'';};
"redis.conf" = {
enable = false;
text = ''
servers = "127.0.0.1";
'';
};
"groups.conf".text = ''
group "cows" { group "cows" {
symbol { symbol {
NO_MUH = { NO_MUH = {
@ -120,6 +155,7 @@ in
} }
} }
''; '';
};
localLuaRules = pkgs.writeText "rspamd.local.lua" '' localLuaRules = pkgs.writeText "rspamd.local.lua" ''
local rspamd_logger = require "rspamd_logger" local rspamd_logger = require "rspamd_logger"
rspamd_config.NO_MUH = { rspamd_config.NO_MUH = {
@ -152,6 +188,10 @@ in
$machine->log($machine->succeed("cat /etc/rspamd/rspamd.conf")); $machine->log($machine->succeed("cat /etc/rspamd/rspamd.conf"));
$machine->log($machine->succeed("cat /etc/rspamd/rspamd.local.lua")); $machine->log($machine->succeed("cat /etc/rspamd/rspamd.local.lua"));
$machine->log($machine->succeed("cat /etc/rspamd/local.d/groups.conf")); $machine->log($machine->succeed("cat /etc/rspamd/local.d/groups.conf"));
# Verify that redis.conf was not written
$machine->fail("cat /etc/rspamd/local.d/redis.conf >&2");
# Verify that antivirus.conf was not written
$machine->fail("cat /etc/rspamd/local.d/antivirus.conf >&2");
${checkSocket "/run/rspamd/rspamd.sock" "rspamd" "rspamd" "660" } ${checkSocket "/run/rspamd/rspamd.sock" "rspamd" "rspamd" "660" }
$machine->log($machine->succeed("curl --unix-socket /run/rspamd/rspamd.sock http://localhost/ping")); $machine->log($machine->succeed("curl --unix-socket /run/rspamd/rspamd.sock http://localhost/ping"));
$machine->log($machine->succeed("rspamc -h 127.0.0.1:11334 stat")); $machine->log($machine->succeed("rspamc -h 127.0.0.1:11334 stat"));
@ -162,4 +202,48 @@ in
$machine->log($machine->succeed("cat /etc/tests/muh.eml | rspamc -h 127.0.0.1:11334 symbols | grep NO_MUH")); $machine->log($machine->succeed("cat /etc/tests/muh.eml | rspamc -h 127.0.0.1:11334 symbols | grep NO_MUH"));
''; '';
}; };
postfixIntegration = makeTest {
name = "rspamd-postfix-integration";
machine = {
environment.systemPackages = with pkgs; [ msmtp ];
environment.etc."tests/gtube.eml".text = ''
From: Sheep1<bah@example.com>
To: Sheep2<tester@example.com>
Subject: Evil cows
I find cows to be evil don't you?
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
'';
environment.etc."tests/example.eml".text = ''
From: Sheep1<bah@example.com>
To: Sheep2<tester@example.com>
Subject: Evil cows
I find cows to be evil don't you?
'';
users.users.tester.password = "test";
services.postfix = {
enable = true;
destination = ["example.com"];
};
services.rspamd = {
enable = true;
postfix.enable = true;
};
};
testScript = ''
${initMachine}
$machine->waitForOpenPort(11334);
$machine->waitForOpenPort(25);
${checkSocket "/run/rspamd/rspamd-milter.sock" "rspamd" "postfix" "660" }
$machine->log($machine->succeed("rspamc -h 127.0.0.1:11334 stat"));
$machine->log($machine->succeed("msmtp --host=localhost -t --read-envelope-from < /etc/tests/example.eml"));
$machine->log($machine->fail("msmtp --host=localhost -t --read-envelope-from < /etc/tests/gtube.eml"));
$machine->waitUntilFails('[ "$(postqueue -p)" != "Mail queue is empty" ]');
$machine->fail("journalctl -u postfix | grep -i error >&2");
$machine->fail("journalctl -u postfix | grep -i warning >&2");
'';
};
} }

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "bs1770gain-${version}"; name = "bs1770gain-${version}";
version = "0.5.0"; version = "0.5.1";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/bs1770gain/${name}.tar.gz"; url = "mirror://sourceforge/bs1770gain/${name}.tar.gz";
sha256 = "0vd7320k7s2zcn2vganclxbr1vav18ghld27rcwskvcc3dm8prii"; sha256 = "0r4fbajgfmnwgl63hcm56f1j8m5f135q6j5jkzdvrrhpcj39yx06";
}; };
buildInputs = [ ffmpeg sox ]; buildInputs = [ ffmpeg sox ];

View File

@ -14,7 +14,7 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "csound-${version}"; name = "csound-${version}";
version = "6.11.0"; version = "6.12.0";
enableParallelBuilding = true; enableParallelBuilding = true;
@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
owner = "csound"; owner = "csound";
repo = "csound"; repo = "csound";
rev = version; rev = version;
sha256 = "1nnfl8dqvc5b3f94zbvdg6bxr2wlp7as78hb31awxmvfwwihpv18"; sha256 = "0pv4s54cayvavdp6y30n3r1l5x83x9whyyd2v24y0dh224v3hbxi";
}; };
cmakeFlags = [ "-DBUILD_CSOUND_AC=0" ] # fails to find Score.hpp cmakeFlags = [ "-DBUILD_CSOUND_AC=0" ] # fails to find Score.hpp

View File

@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Open source speech synthesizer that supports over 70 languages, based on eSpeak"; description = "Open source speech synthesizer that supports over 70 languages, based on eSpeak";
homepage = https://github.com/espeak-ng/espeak-ng; homepage = src.meta.homepage;
license = licenses.gpl3; license = licenses.gpl3;
maintainers = with maintainers; [ aske ]; maintainers = with maintainers; [ aske ];
platforms = platforms.linux; platforms = platforms.linux;

View File

@ -5,13 +5,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "flacon-${version}"; name = "flacon-${version}";
version = "4.1.0"; version = "5.0.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "flacon"; owner = "flacon";
repo = "flacon"; repo = "flacon";
rev = "v${version}"; rev = "v${version}";
sha256 = "1sw2v2w3s79lbzhkf96m8lwvag824am7rwfzzsi8bz6sa6krmj0m"; sha256 = "0pglqm2z7mp5igqmfnmvrgjhfbfrj8q5jvd0a0g2dzv3rqwfw4vc";
}; };
nativeBuildInputs = [ cmake pkgconfig makeWrapper ]; nativeBuildInputs = [ cmake pkgconfig makeWrapper ];

View File

@ -16,7 +16,7 @@
, gst_plugins ? with gst_all_1; [ gst-plugins-good gst-plugins-ugly ] , gst_plugins ? with gst_all_1; [ gst-plugins-good gst-plugins-ugly ]
}: }:
let let
version = "7.1"; version = "7.2";
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
name = "gradio-${version}"; name = "gradio-${version}";
@ -25,7 +25,7 @@ in stdenv.mkDerivation rec {
owner = "haecker-felix"; owner = "haecker-felix";
repo = "gradio"; repo = "gradio";
rev = "v${version}"; rev = "v${version}";
sha256 = "0x0hmcjvpgvsm64ywcc71srlwqybfhadn5nkwycq0lh7r49d89kx"; sha256 = "0c4vlrfl0ljkiwarpwa8wcfmmihh6a5j4pi4yr0qshyl9xxvxiv3";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -4,7 +4,7 @@
, gobjectIntrospection, wrapGAppsHook }: , gobjectIntrospection, wrapGAppsHook }:
python3.pkgs.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
version = "0.9.610"; version = "0.9.611";
name = "lollypop-${version}"; name = "lollypop-${version}";
format = "other"; format = "other";
@ -14,7 +14,7 @@ python3.pkgs.buildPythonApplication rec {
url = "https://gitlab.gnome.org/World/lollypop"; url = "https://gitlab.gnome.org/World/lollypop";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
fetchSubmodules = true; fetchSubmodules = true;
sha256 = "0nn4cjw0c2ysd3y2a7l08ybcd21v993wsz99f7w0881jhws3q5p4"; sha256 = "1k78a26sld0xd14c9hr4qv8c7qaq1m8zqk1mzrh4pl7ysqqg9p20";
}; };
nativeBuildInputs = with python3.pkgs; [ nativeBuildInputs = with python3.pkgs; [

View File

@ -8,13 +8,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "mixxx-${version}"; name = "mixxx-${version}";
version = "2.1.4"; version = "2.1.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "mixxxdj"; owner = "mixxxdj";
repo = "mixxx"; repo = "mixxx";
rev = "release-${version}"; rev = "release-${version}";
sha256 = "1q1px4033marraprvgr5yq9jlz943kcc10fdkn7py2ma8cfgnipq"; sha256 = "0h14pwglz03sdmgzviypv1qa1xfjclrnhyqaq5nd60j47h4z39dr";
}; };
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];

View File

@ -2,11 +2,11 @@
pythonPackages.buildPythonApplication rec { pythonPackages.buildPythonApplication rec {
pname = "Mopidy-Iris"; pname = "Mopidy-Iris";
version = "3.28.1"; version = "3.29.2";
src = pythonPackages.fetchPypi { src = pythonPackages.fetchPypi {
inherit pname version; inherit pname version;
sha256 = "0yph01z8lw0r5bw3aa14w0l7z1ymxvpmb131gbaw3ib0srssgz64"; sha256 = "1v767a2j6lzp5yppfjna0ifv8psj60pphzd7njcdkx71dvpswpi2";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

View File

@ -1,21 +1,22 @@
{ stdenv, python2Packages, fetchurl, gettext }: { stdenv, python3Packages, fetchurl, gettext, chromaprint }:
let let
pythonPackages = python2Packages; pythonPackages = python3Packages;
in pythonPackages.buildPythonApplication rec { in pythonPackages.buildPythonApplication rec {
pname = "picard"; pname = "picard";
version = "1.4.2"; version = "2.0.4";
src = fetchurl { src = fetchurl {
url = "http://ftp.musicbrainz.org/pub/musicbrainz/picard/picard-${version}.tar.gz"; url = "http://ftp.musicbrainz.org/pub/musicbrainz/picard/picard-${version}.tar.gz";
sha256 = "0d12k40d9fbcn801gp5zdsgvjdrh4g97vda3ga16rmmvfwwfxbgh"; sha256 = "0ds3ylpqn717fnzcjrfn05v5xram01bj6n3hwn9igmkd1jgf8vhc";
}; };
buildInputs = [ gettext ]; buildInputs = [ gettext ];
propagatedBuildInputs = with pythonPackages; [ propagatedBuildInputs = with pythonPackages; [
pyqt4 pyqt5
mutagen mutagen
chromaprint
discid discid
]; ];
@ -23,6 +24,11 @@ in pythonPackages.buildPythonApplication rec {
python setup.py install --prefix="$out" python setup.py install --prefix="$out"
''; '';
prePatch = ''
# Pesky unicode punctuation.
substituteInPlace setup.cfg --replace "" "'"
'';
doCheck = false; doCheck = false;
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -9,7 +9,7 @@
let optionals = stdenv.lib.optionals; in let optionals = stdenv.lib.optionals; in
python3.pkgs.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
pname = "quodlibet${tag}"; pname = "quodlibet${tag}";
version = "4.1.0"; version = "4.2.0";
# XXX, tests fail # XXX, tests fail
# https://github.com/quodlibet/quodlibet/issues/2820 # https://github.com/quodlibet/quodlibet/issues/2820
@ -17,7 +17,7 @@ python3.pkgs.buildPythonApplication rec {
src = fetchurl { src = fetchurl {
url = "https://github.com/quodlibet/quodlibet/releases/download/release-${version}/quodlibet-${version}.tar.gz"; url = "https://github.com/quodlibet/quodlibet/releases/download/release-${version}/quodlibet-${version}.tar.gz";
sha256 = "1vcxx4sz5i4ag74pjpdfw7jkwxfb8jhvn8igcjwd5cccw4gscm2z"; sha256 = "0w64i999ipzgjb4c4lzw7jp792amd6km46wahx7m3bpzly55r3f6";
}; };
nativeBuildInputs = [ wrapGAppsHook gettext intltool ]; nativeBuildInputs = [ wrapGAppsHook gettext intltool ];

View File

@ -1,9 +1,9 @@
{ stdenv, fetchFromGitHub, cmake, ninja, pkgconfig, vala, gtk3, libxml2, granite, webkitgtk, clutter-gtk { stdenv, fetchFromGitHub, cmake, ninja, pkgconfig, vala_0_40, gtk3, libxml2, granite, webkitgtk, clutter-gtk
, clutter-gst, libunity, libnotify, sqlite, gst_all_1, libsoup, json-glib, gnome3, gobjectIntrospection, wrapGAppsHook }: , clutter-gst, libunity, libnotify, sqlite, gst_all_1, libsoup, json-glib, gnome3, gobjectIntrospection, wrapGAppsHook }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "vocal"; pname = "vocal";
version = "2.2.0"; version = "2.3.0";
name = "${pname}-${version}"; name = "${pname}-${version}";
@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
owner = "needle-and-thread"; owner = "needle-and-thread";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "09cm4azyaa9fmfymygf25gf0klpm5p04k6bc1i90jhw0f1im8sgl"; sha256 = "1wkkyai14in4yk3q4qq23wk3l49px2xi8z819y3glna236qsq6qp";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -20,13 +20,14 @@ stdenv.mkDerivation rec {
libxml2 libxml2
ninja ninja
pkgconfig pkgconfig
vala vala_0_40 # should be `elementary.vala` when elementary attribute set is merged
wrapGAppsHook wrapGAppsHook
]; ];
buildInputs = with gst_all_1; [ buildInputs = with gst_all_1; [
clutter-gst clutter-gst
clutter-gtk clutter-gtk
gnome3.defaultIconTheme # should be `elementary.defaultIconTheme`when elementary attribute set is merged
gnome3.libgee gnome3.libgee
granite granite
gst-plugins-base gst-plugins-base

View File

@ -0,0 +1,29 @@
{ stdenv, lib, fetchFromGitHub, linux-pam }:
stdenv.mkDerivation rec {
name = "ly-${version}";
version = "0.2.1";
src = fetchFromGitHub {
owner = "cylgom";
repo = "ly";
rev = version;
sha256 = "16gjcrd4a6i4x8q8iwlgdildm7cpdsja8z22pf2izdm6rwfki97d";
fetchSubmodules = true;
};
buildInputs = [ linux-pam ];
makeFlags = [ "FLAGS=-Wno-error" ];
installPhase = ''
mkdir -p $out/bin
cp bin/ly $out/bin
'';
meta = with lib; {
description = "TUI display manager";
license = licenses.wtfpl;
homepage = https://github.com/cylgom/ly;
maintainers = [ maintainers.spacekookie ];
};
}

View File

@ -13,14 +13,14 @@ let
sha256Hash = "117skqjax1xz9plarhdnrw2rwprjpybdc7mx7wggxapyy920vv5r"; sha256Hash = "117skqjax1xz9plarhdnrw2rwprjpybdc7mx7wggxapyy920vv5r";
}; };
betaVersion = { betaVersion = {
version = "3.3.0.14"; # "Android Studio 3.3 Beta 2" version = "3.3.0.15"; # "Android Studio 3.3 Beta 3"
build = "182.5078385"; build = "182.5105271";
sha256Hash = "10jw508fzxbknfl1l058ksnnli2nav91wmh2x2p0mz96lkf5bvhn"; sha256Hash = "03j3g39v1g4jf5q37bd50zfqsgjfnwnyhjgx8vkfwlg263vhhvdq";
}; };
latestVersion = { # canary & dev latestVersion = { # canary & dev
version = "3.4.0.1"; # "Android Studio 3.4 Canary 2" version = "3.4.0.2"; # "Android Studio 3.4 Canary 3"
build = "183.5081642"; build = "183.5112304";
sha256Hash = "0ck6habkgnwbr10pr3bfy8ywm3dsm21k9jdj7g685v22sw0zy3yk"; sha256Hash = "0dzk4ag1dirfq8l2q91j6hsfyi07wx52qcsmbjb9a2710rlwpdhp";
}; };
in rec { in rec {
# Old alias # Old alias

View File

@ -1,7 +1,7 @@
{ stdenv, lib, fetchurl, ncurses, xlibsWrapper, libXaw, libXpm, Xaw3d { stdenv, lib, fetchurl, ncurses, xlibsWrapper, libXaw, libXpm, Xaw3d
, pkgconfig, gettext, libXft, dbus, libpng, libjpeg, libungif , pkgconfig, gettext, libXft, dbus, libpng, libjpeg, libungif
, libtiff, librsvg, gconf, libxml2, imagemagick, gnutls, libselinux , libtiff, librsvg, gconf, libxml2, imagemagick, gnutls, libselinux
, alsaLib, cairo, acl, gpm, AppKit, GSS, ImageIO , alsaLib, cairo, acl, gpm, cf-private, AppKit, GSS, ImageIO
, withX ? !stdenv.isDarwin , withX ? !stdenv.isDarwin
, withGTK2 ? false, gtk2 ? null , withGTK2 ? false, gtk2 ? null
, withGTK3 ? true, gtk3 ? null, gsettings-desktop-schemas ? null , withGTK3 ? true, gtk3 ? null, gsettings-desktop-schemas ? null
@ -61,9 +61,12 @@ stdenv.mkDerivation rec {
++ lib.optional (withX && withGTK2) gtk2 ++ lib.optional (withX && withGTK2) gtk2
++ lib.optionals (withX && withGTK3) [ gtk3 gsettings-desktop-schemas ] ++ lib.optionals (withX && withGTK3) [ gtk3 gsettings-desktop-schemas ]
++ lib.optional (stdenv.isDarwin && withX) cairo ++ lib.optional (stdenv.isDarwin && withX) cairo
++ lib.optionals (withX && withXwidgets) [ webkitgtk24x-gtk3 glib-networking ]; ++ lib.optionals (withX && withXwidgets) [ webkitgtk24x-gtk3 glib-networking ]
++ lib.optionals stdenv.isDarwin [
propagatedBuildInputs = lib.optionals stdenv.isDarwin [ AppKit GSS ImageIO ]; AppKit GSS ImageIO
# Needed for CFNotificationCenterAddObserver symbols.
cf-private
];
hardeningDisable = [ "format" ]; hardeningDisable = [ "format" ];

View File

@ -1,7 +1,7 @@
{ stdenv, lib, fetchurl, ncurses, xlibsWrapper, libXaw, libXpm, Xaw3d { stdenv, lib, fetchurl, ncurses, xlibsWrapper, libXaw, libXpm, Xaw3d
, pkgconfig, gettext, libXft, dbus, libpng, libjpeg, libungif , pkgconfig, gettext, libXft, dbus, libpng, libjpeg, libungif
, libtiff, librsvg, gconf, libxml2, imagemagick, gnutls, libselinux , libtiff, librsvg, gconf, libxml2, imagemagick, gnutls, libselinux
, alsaLib, cairo, acl, gpm, AppKit, GSS, ImageIO, m17n_lib, libotf , alsaLib, cairo, acl, gpm, cf-private, AppKit, GSS, ImageIO, m17n_lib, libotf
, systemd ? null , systemd ? null
, withX ? !stdenv.isDarwin , withX ? !stdenv.isDarwin
, withNS ? stdenv.isDarwin , withNS ? stdenv.isDarwin
@ -64,9 +64,12 @@ stdenv.mkDerivation rec {
++ lib.optional (withX && withGTK2) gtk2-x11 ++ lib.optional (withX && withGTK2) gtk2-x11
++ lib.optionals (withX && withGTK3) [ gtk3-x11 gsettings-desktop-schemas ] ++ lib.optionals (withX && withGTK3) [ gtk3-x11 gsettings-desktop-schemas ]
++ lib.optional (stdenv.isDarwin && withX) cairo ++ lib.optional (stdenv.isDarwin && withX) cairo
++ lib.optionals (withX && withXwidgets) [ webkitgtk ]; ++ lib.optionals (withX && withXwidgets) [ webkitgtk ]
++ lib.optionals withNS [
propagatedBuildInputs = lib.optionals withNS [ AppKit GSS ImageIO ]; AppKit GSS ImageIO
# Needed for CFNotificationCenterAddObserver symbols.
cf-private
];
hardeningDisable = [ "format" ]; hardeningDisable = [ "format" ];

View File

@ -1,5 +1,5 @@
{ stdenv, fetchurl, ncurses, pkgconfig, texinfo, libxml2, gnutls, gettext, autoconf, automake { stdenv, fetchurl, ncurses, pkgconfig, texinfo, libxml2, gnutls, gettext, autoconf, automake
, AppKit, Carbon, Cocoa, IOKit, OSAKit, Quartz, QuartzCore, WebKit , cf-private, AppKit, Carbon, Cocoa, IOKit, OSAKit, Quartz, QuartzCore, WebKit
, ImageCaptureCore, GSS, ImageIO # These may be optional , ImageCaptureCore, GSS, ImageIO # These may be optional
}: }:
@ -33,6 +33,8 @@ stdenv.mkDerivation rec {
buildInputs = [ ncurses libxml2 gnutls texinfo gettext buildInputs = [ ncurses libxml2 gnutls texinfo gettext
AppKit Carbon Cocoa IOKit OSAKit Quartz QuartzCore WebKit AppKit Carbon Cocoa IOKit OSAKit Quartz QuartzCore WebKit
ImageCaptureCore GSS ImageIO # may be optional ImageCaptureCore GSS ImageIO # may be optional
# Needed for CFNotificationCenterAddObserver symbols.
cf-private
]; ];
postUnpack = '' postUnpack = ''

View File

@ -4,12 +4,12 @@ with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "kakoune-unstable-${version}"; name = "kakoune-unstable-${version}";
version = "2018.09.04"; version = "2018.10.27";
src = fetchFromGitHub { src = fetchFromGitHub {
repo = "kakoune"; repo = "kakoune";
owner = "mawww"; owner = "mawww";
rev = "v${version}"; rev = "v${version}";
sha256 = "08v55hh7whm6hx6a047gszh0h5g35k3r8r52aggv7r2ybzrrw6w1"; sha256 = "1w7jmq57h8gxxbzg0n3lgd6cci77xb9mziy6lr8330nzqc85zp9p";
}; };
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];
buildInputs = [ ncurses asciidoc docbook_xsl libxslt ]; buildInputs = [ ncurses asciidoc docbook_xsl libxslt ];

View File

@ -0,0 +1,48 @@
{ stdenv, appimage-run, fetchurl }:
let
version = "2.3.12";
plat = {
"i386-linux" = "i386";
"x86_64-linux" = "x86_64";
}.${stdenv.hostPlatform.system};
sha256 = {
"i386-linux" = "0q7izk20r14kxn3n4pn92jgnynfnlnylg55brz8n1lqxc0dc3v24";
"x86_64-linux" = "0myg4qv0vrwh8s9sckb12ld9f86ymx4yypvpy0w5qn1bxk5hbafc";
}.${stdenv.hostPlatform.system};
in
stdenv.mkDerivation rec {
name = "standardnotes-${version}";
src = fetchurl {
url = "https://github.com/standardnotes/desktop/releases/download/v${version}/standard-notes-${version}-${plat}.AppImage";
inherit sha256;
};
buildInputs = [ appimage-run ];
unpackPhase = ":";
installPhase = ''
mkdir -p $out/{bin,share}
cp $src $out/share/standardNotes.AppImage
echo "#!/bin/sh" > $out/bin/standardnotes
echo "${appimage-run}/bin/appimage-run $out/share/standardNotes.AppImage" >> $out/bin/standardnotes
chmod +x $out/bin/standardnotes $out/share/standardNotes.AppImage
'';
meta = with stdenv.lib; {
description = "A simple and private notes app";
longDescription = ''
Standard Notes is a private notes app that features unmatched simplicity,
end-to-end encryption, powerful extensions, and open-source applications.
'';
homepage = https://standardnotes.org;
license = licenses.agpl3;
maintainers = with maintainers; [ mgregoire ];
platforms = [ "i386-linux" "x86_64-linux" ];
};
}

View File

@ -2,12 +2,12 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "texmaker"; pname = "texmaker";
version = "5.0.2"; version = "5.0.3";
name = "${pname}-${version}"; name = "${pname}-${version}";
src = fetchurl { src = fetchurl {
url = "http://www.xm1math.net/texmaker/${name}.tar.bz2"; url = "http://www.xm1math.net/texmaker/${name}.tar.bz2";
sha256 = "0y81mjm89b99pr9svcwpaf4iz2q9pc9hjas5kiwd1pbgl5vqskm9"; sha256 = "0vrj9w5lk3vf6138n5bz8phmy3xp5kv4dq1rgirghcf4hbxdyx30";
}; };
buildInputs = [ qtbase qtscript poppler zlib ]; buildInputs = [ qtbase qtscript poppler zlib ];

View File

@ -6,7 +6,7 @@
sha256 = "18ifhv5q9prd175q3vxbqf6qyvkk6bc7d2lhqdk0q78i68kv9y0c"; sha256 = "18ifhv5q9prd175q3vxbqf6qyvkk6bc7d2lhqdk0q78i68kv9y0c";
} }
# apple frameworks # apple frameworks
, Carbon, Cocoa , cf-private, Carbon, Cocoa
}: }:
let let
@ -19,7 +19,11 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ gettext pkgconfig ]; nativeBuildInputs = [ gettext pkgconfig ];
buildInputs = [ ncurses ] buildInputs = [ ncurses ]
++ stdenv.lib.optionals stdenv.hostPlatform.isDarwin [ Carbon Cocoa ]; ++ stdenv.lib.optionals stdenv.hostPlatform.isDarwin [
Carbon Cocoa
# Needed for OBJC_CLASS_$_NSArray symbols.
cf-private
];
configureFlags = [ configureFlags = [
"--enable-multibyte" "--enable-multibyte"

View File

@ -6,11 +6,11 @@ with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "feh-${version}"; name = "feh-${version}";
version = "2.28"; version = "2.28.1";
src = fetchurl { src = fetchurl {
url = "https://feh.finalrewind.org/${name}.tar.bz2"; url = "https://feh.finalrewind.org/${name}.tar.bz2";
sha256 = "1nfka7w6pzj2bbwx8vydr2wwm7z8mrbqiy1xrq97c1g5bxy2vlhk"; sha256 = "0wian0gnx0yfxf8x9b8wr57fjd6rnmi3y3xj83ni6x0xqrjnf1lp";
}; };
outputs = [ "out" "man" "doc" ]; outputs = [ "out" "man" "doc" ];

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, pkgconfig, intltool, babl, gegl, gtk2, glib, gdk_pixbuf, isocodes { stdenv, fetchurl, substituteAll, pkgconfig, intltool, babl, gegl, gtk2, glib, gdk_pixbuf, isocodes
, pango, cairo, freetype, fontconfig, lcms, libpng, libjpeg, poppler, poppler_data, libtiff , pango, cairo, freetype, fontconfig, lcms, libpng, libjpeg, poppler, poppler_data, libtiff
, libmng, librsvg, libwmf, zlib, libzip, ghostscript, aalib, shared-mime-info , libmng, librsvg, libwmf, zlib, libzip, ghostscript, aalib, shared-mime-info
, python2Packages, libexif, gettext, xorg, glib-networking, libmypaint, gexiv2 , python2Packages, libexif, gettext, xorg, glib-networking, libmypaint, gexiv2
@ -9,11 +9,11 @@ let
inherit (python2Packages) pygtk wrapPython python; inherit (python2Packages) pygtk wrapPython python;
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
name = "gimp-${version}"; name = "gimp-${version}";
version = "2.10.6"; version = "2.10.8";
src = fetchurl { src = fetchurl {
url = "http://download.gimp.org/pub/gimp/v${stdenv.lib.versions.majorMinor version}/${name}.tar.bz2"; url = "http://download.gimp.org/pub/gimp/v${stdenv.lib.versions.majorMinor version}/${name}.tar.bz2";
sha256 = "07qh2ljbza2mph1gh8sicn27qihhj8hx3ivvry2874cfh8ghgj2f"; sha256 = "16sb4kslwin2jbgdb4nhks78pd0af8mvj8g5hap3hj946p7w2jfq";
}; };
nativeBuildInputs = [ pkgconfig intltool gettext wrapPython ]; nativeBuildInputs = [ pkgconfig intltool gettext wrapPython ];
@ -36,6 +36,15 @@ in stdenv.mkDerivation rec {
export GIO_EXTRA_MODULES="${glib-networking}/lib/gio/modules:$GIO_EXTRA_MODULES" export GIO_EXTRA_MODULES="${glib-networking}/lib/gio/modules:$GIO_EXTRA_MODULES"
''; '';
patches = [
# to remove compiler from the runtime closure, reference was retained via
# gimp --version --verbose output
(substituteAll {
src = ./remove-cc-reference.patch;
cc_version = stdenv.cc.cc.name;
})
];
postFixup = '' postFixup = ''
wrapPythonProgramsIn $out/lib/gimp/${passthru.majorVersion}/plug-ins/ wrapPythonProgramsIn $out/lib/gimp/${passthru.majorVersion}/plug-ins/
wrapProgram $out/bin/gimp-${stdenv.lib.versions.majorMinor version} \ wrapProgram $out/bin/gimp-${stdenv.lib.versions.majorMinor version} \

View File

@ -0,0 +1,13 @@
diff --git a/app/gimp-version.c b/app/gimp-version.c
index 12605c6..a9083da 100644
--- a/app/gimp-version.c
+++ b/app/gimp-version.c
@@ -203,7 +203,7 @@ gimp_version (gboolean be_verbose,
lib_versions = gimp_library_versions (localized);
verbose_info = g_strdup_printf ("git-describe: %s\n"
"C compiler:\n%s\n%s",
- GIMP_GIT_VERSION, CC_VERSION,
+ GIMP_GIT_VERSION, "@cc_version@",
lib_versions);
g_free (lib_versions);

View File

@ -2,13 +2,13 @@
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "krop"; pname = "krop";
version = "0.5.0"; version = "0.5.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "arminstraub"; owner = "arminstraub";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "0y8z9xr10wbzmi1dg1zpcsf3ihnxrnvlaf72821x3390s3qsnydf"; sha256 = "0b1zqpks4vzq7sfhf7r9qrshr77f1ncj18x7d0fa3g29rxa42dcr";
}; };
propagatedBuildInputs = with python3Packages; [ propagatedBuildInputs = with python3Packages; [

View File

@ -4,13 +4,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "openimageio-${version}"; name = "openimageio-${version}";
version = "1.8.15"; version = "1.8.16";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "OpenImageIO"; owner = "OpenImageIO";
repo = "oiio"; repo = "oiio";
rev = "Release-${version}"; rev = "Release-${version}";
sha256 = "0fbl5rzmip5q155lfsr07n65dnhww1kw97masps1i1x40gq15czx"; sha256 = "0isx137c6anvs1xfxi0z35v1cw855xvnq2ca0pakqqpdh0yivrps";
}; };
outputs = [ "bin" "out" "dev" "doc" ]; outputs = [ "bin" "out" "dev" "doc" ];

View File

@ -6,11 +6,11 @@
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "rapid-photo-downloader"; pname = "rapid-photo-downloader";
version = "0.9.12"; version = "0.9.13";
src = fetchurl { src = fetchurl {
url = "https://launchpad.net/rapid/pyqt/${version}/+download/${pname}-${version}.tar.gz"; url = "https://launchpad.net/rapid/pyqt/${version}/+download/${pname}-${version}.tar.gz";
sha256 = "0nzahps7hs120xv2r55k293kialf83nx44x3jg85yh349rpqrii8"; sha256 = "1517w18sxil1gwd78jjbbixcd1b0sp05imnnd5h5lr8wl3f0szj0";
}; };
# Disable version check and fix install tests # Disable version check and fix install tests

View File

@ -0,0 +1,25 @@
{ stdenv, fetchurl, qmake, poppler, pkgconfig, libunarr, libGLU
, qtdeclarative, qtgraphicaleffects, qtmultimedia, qtquickcontrols, qtscript
}:
stdenv.mkDerivation rec {
name = "yacreader-${version}";
version = "9.5.0";
src = fetchurl {
url = "https://github.com/YACReader/yacreader/releases/download/${version}/${name}-src.tar.xz";
sha256 = "0cv5y76kjvsqsv4fp99j8np5pm4m76868i1nn40q6hy573dmxwm6";
};
nativeBuildInputs = [ qmake pkgconfig ];
buildInputs = [ poppler libunarr libGLU qtmultimedia qtscript ];
propagatedBuildInputs = [ qtquickcontrols qtgraphicaleffects qtdeclarative ];
enableParallelBuilding = true;
meta = {
description = "A comic reader for cross-platform reading and managing your digital comic collection";
homepage = http://www.yacreader.com;
license = stdenv.lib.licenses.gpl3;
};
}

View File

@ -18,6 +18,7 @@
libGL, libGL,
xclip, xclip,
# Darwin Frameworks # Darwin Frameworks
cf-private,
AppKit, AppKit,
CoreFoundation, CoreFoundation,
CoreGraphics, CoreGraphics,
@ -40,15 +41,6 @@ let
libGL libGL
libXi libXi
]; ];
darwinFrameworks = [
AppKit
CoreFoundation
CoreGraphics
CoreServices
CoreText
Foundation
OpenGL
];
in buildRustPackage rec { in buildRustPackage rec {
name = "alacritty-unstable-${version}"; name = "alacritty-unstable-${version}";
version = "0.2.1"; version = "0.2.1";
@ -71,7 +63,11 @@ in buildRustPackage rec {
]; ];
buildInputs = rpathLibs buildInputs = rpathLibs
++ lib.optionals stdenv.isDarwin darwinFrameworks; ++ lib.optionals stdenv.isDarwin [
AppKit CoreFoundation CoreGraphics CoreServices CoreText Foundation OpenGL
# Needed for CFURLResourceIsReachable symbols.
cf-private
];
outputs = [ "out" "terminfo" ]; outputs = [ "out" "terminfo" ];

View File

@ -0,0 +1,28 @@
{ buildGoPackage
, fetchFromGitHub
, lib
}:
buildGoPackage rec {
name = "archiver-${version}";
version = "3.0.0";
goPackagePath = "github.com/mholt/archiver";
src = fetchFromGitHub {
owner = "mholt";
repo = "archiver";
rev = "v${version}";
sha256 = "1wngv51333h907mp6nbzd9dq6r0x06mag2cij92912jcbzy0q8bk";
};
goDeps = ./deps.nix;
meta = with lib; {
description = "Easily create and extract .zip, .tar, .tar.gz, .tar.bz2, .tar.xz, .tar.lz4, .tar.sz, and .rar (extract-only) files with Go";
homepage = https://github.com/mholt/archiver;
license = licenses.mit;
maintainers = with maintainers; [ kalbasit ];
platforms = platforms.all;
};
}

56
pkgs/applications/misc/archiver/deps.nix generated Normal file
View File

@ -0,0 +1,56 @@
[
{
goPackagePath = "github.com/dsnet/compress";
fetch = {
type = "git";
url = "https://github.com/dsnet/compress";
rev = "cc9eb1d7ad760af14e8f918698f745e80377af4f";
sha256 = "159liclywmyb6zx88ga5gn42hfl4cpk1660zss87fkx31hdq9fgx";
};
}
{
goPackagePath = "github.com/golang/snappy";
fetch = {
type = "git";
url = "https://github.com/golang/snappy";
rev = "2e65f85255dbc3072edf28d6b5b8efc472979f5a";
sha256 = "05w6mpc4qcy0pv8a2bzng8nf4s5rf5phfang4jwy9rgf808q0nxf";
};
}
{
goPackagePath = "github.com/nwaples/rardecode";
fetch = {
type = "git";
url = "https://github.com/nwaples/rardecode";
rev = "197ef08ef68c4454ae5970a9c2692d6056ceb8d7";
sha256 = "0vvijw7va283dbdvnf4bgkn7bjngxqzk1rzdpy8sl343r62bmh4g";
};
}
{
goPackagePath = "github.com/pierrec/lz4";
fetch = {
type = "git";
url = "https://github.com/pierrec/lz4";
rev = "623b5a2f4d2a41e411730dcdfbfdaeb5c0c4564e";
sha256 = "1hhf7vyz5irrqs7ixdmvsvzmy9izv3ha8jbyy0cs486h61nzqkki";
};
}
{
goPackagePath = "github.com/ulikunitz/xz";
fetch = {
type = "git";
url = "https://github.com/ulikunitz/xz";
rev = "590df8077fbcb06ad62d7714da06c00e5dd2316d";
sha256 = "07mivr4aiw3b8qzwajsxyjlpbkf3my4xx23lv0yryc4pciam5lhy";
};
}
{
goPackagePath = "github.com/xi2/xz";
fetch = {
type = "git";
url = "https://github.com/xi2/xz";
rev = "48954b6210f8d154cb5f8484d3a3e1f83489309e";
sha256 = "178r0fa2dpzxf0sabs7dn0c8fa7vs87zlxk6spkn374ls9pir7nq";
};
}
]

View File

@ -1,7 +1,7 @@
{ stdenv, fetchurl, poppler_utils, pkgconfig, libpng { stdenv, fetchurl, poppler_utils, pkgconfig, libpng
, imagemagick, libjpeg, fontconfig, podofo, qtbase, qmake, icu, sqlite , imagemagick, libjpeg, fontconfig, podofo, qtbase, qmake, icu, sqlite
, makeWrapper, unrarSupport ? false, chmlib, python2Packages, libusb1, libmtp , makeWrapper, unrarSupport ? false, chmlib, python2Packages, libusb1, libmtp
, xdg_utils, makeDesktopItem, wrapGAppsHook , xdg_utils, makeDesktopItem, wrapGAppsHook, removeReferencesTo
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true; enableParallelBuilding = true;
nativeBuildInputs = [ makeWrapper pkgconfig qmake ]; nativeBuildInputs = [ makeWrapper pkgconfig qmake removeReferencesTo ];
buildInputs = [ buildInputs = [
poppler_utils libpng imagemagick libjpeg poppler_utils libpng imagemagick libjpeg
@ -58,8 +58,8 @@ stdenv.mkDerivation rec {
export MAGICK_LIB=${imagemagick.out}/lib export MAGICK_LIB=${imagemagick.out}/lib
export FC_INC_DIR=${fontconfig.dev}/include/fontconfig export FC_INC_DIR=${fontconfig.dev}/include/fontconfig
export FC_LIB_DIR=${fontconfig.lib}/lib export FC_LIB_DIR=${fontconfig.lib}/lib
export PODOFO_INC_DIR=${podofo}/include/podofo export PODOFO_INC_DIR=${podofo.dev}/include/podofo
export PODOFO_LIB_DIR=${podofo}/lib export PODOFO_LIB_DIR=${podofo.lib}/lib
export SIP_BIN=${python2Packages.sip}/bin/sip export SIP_BIN=${python2Packages.sip}/bin/sip
${python2Packages.python.interpreter} setup.py install --prefix=$out ${python2Packages.python.interpreter} setup.py install --prefix=$out
@ -88,6 +88,15 @@ stdenv.mkDerivation rec {
runHook postInstall runHook postInstall
''; '';
# Remove some references to shrink the closure size. This reference (as of
# 2018-11-06) was a single string like the following:
# /nix/store/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-podofo-0.9.6-dev/include/podofo/base/PdfVariant.h
preFixup = ''
remove-references-to -t ${podofo.dev} $out/lib/calibre/calibre/plugins/podofo.so
'';
disallowedReferences = [ podofo.dev ];
calibreDesktopItem = makeDesktopItem { calibreDesktopItem = makeDesktopItem {
name = "calibre"; name = "calibre";
desktopName = "calibre"; desktopName = "calibre";

View File

@ -4,7 +4,7 @@ with python3Packages;
buildPythonApplication rec { buildPythonApplication rec {
name = "${pname}-${version}"; name = "${pname}-${version}";
pname = "cheat"; pname = "cheat";
version = "2.2.3"; version = "2.3.1";
propagatedBuildInputs = [ docopt pygments ]; propagatedBuildInputs = [ docopt pygments ];
@ -12,7 +12,7 @@ buildPythonApplication rec {
owner = "chrisallenlane"; owner = "chrisallenlane";
repo = "cheat"; repo = "cheat";
rev = version; rev = version;
sha256 = "1p9a54fax3b1ilqcwdlccy08ww3igwsyzcyikqivaxj5p6mqq6wl"; sha256 = "1dcpjvbv648r8325qjf30m8b4cyrrjbzc2kvh40zy2mbjsa755zr";
}; };
# no tests available # no tests available
doCheck = false; doCheck = false;

View File

@ -3,11 +3,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "chirp-daily-${version}"; name = "chirp-daily-${version}";
version = "20181009"; version = "20181018";
src = fetchurl { src = fetchurl {
url = "https://trac.chirp.danplanet.com/chirp_daily/daily-${version}/${name}.tar.gz"; url = "https://trac.chirp.danplanet.com/chirp_daily/daily-${version}/${name}.tar.gz";
sha256 = "1h7i8skdjkz7n6dz3q9pzg1k31nh1ivy2mx3864bjvpkc7m6yyd9"; sha256 = "0jd7xi6q09b3djn1k7pj1sbqvw24kn7dcp9r6abvxily4pc1xhdr";
}; };
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];

View File

@ -5,13 +5,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "CopyQ-${version}"; name = "CopyQ-${version}";
version = "3.6.1"; version = "3.7.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "hluk"; owner = "hluk";
repo = "CopyQ"; repo = "CopyQ";
rev = "v${version}"; rev = "v${version}";
sha256 = "0drhafnr1d595wa8zwvmgmrrqb86navdk4iw6ly6gmh0i800wz0z"; sha256 = "1dm02l1ry7ndn283774nzmg89wy1933f4iyf6n02p152zgx4llyf";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View File

@ -7,7 +7,7 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "dbeaver-ce-${version}"; name = "dbeaver-ce-${version}";
version = "5.2.2"; version = "5.2.4";
desktopItem = makeDesktopItem { desktopItem = makeDesktopItem {
name = "dbeaver"; name = "dbeaver";
@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
url = "https://dbeaver.io/files/${version}/dbeaver-ce-${version}-linux.gtk.x86_64.tar.gz"; url = "https://dbeaver.io/files/${version}/dbeaver-ce-${version}-linux.gtk.x86_64.tar.gz";
sha256 = "1rrj0c7ksvv9irsz9hb4ip30qgmzps4dy1nj4vl8mzzf389xa43n"; sha256 = "1zwbqr5s76r77x7klydpqbaqakzzilzv92ddyck1sj5jiy5prwpp";
}; };
installPhase = '' installPhase = ''

View File

@ -3,13 +3,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "dmrconfig-${version}"; name = "dmrconfig-${version}";
version = "2018-10-29"; version = "2018-11-07";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "sergev"; owner = "sergev";
repo = "dmrconfig"; repo = "dmrconfig";
rev = "4924d00283c3c81a4b8251669e42aecd96b6145a"; rev = "b58985d3c848b927e91699d97f96d9de014c3fc7";
sha256 = "00a4hmbr71g0d4faskb8q96y6z212g2r4n533yvp88z8rq8vbxxn"; sha256 = "083f21hz6vqjpndkn27nsjnhnc5a4bw0cr26ryfqcvz275rj4k18";
}; };
buildInputs = [ buildInputs = [
@ -20,8 +20,10 @@ stdenv.mkDerivation rec {
substituteInPlace Makefile --replace /usr/local/bin/dmrconfig $out/bin/dmrconfig substituteInPlace Makefile --replace /usr/local/bin/dmrconfig $out/bin/dmrconfig
''; '';
preInstall = '' installPhase = ''
mkdir -p $out/bin mkdir -p $out/bin $out/lib/udev/rules.d
make install
install 99-dmr.rules $out/lib/udev/rules.d/99-dmr.rules
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -16,13 +16,13 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "gImageReader-${version}"; name = "gImageReader-${version}";
version = "3.2.99"; version = "3.3.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner= "manisandro"; owner= "manisandro";
repo = "gImageReader"; repo = "gImageReader";
rev = "v${version}"; rev = "v${version}";
sha256 = "19dbxq83j77lbvi10a8x0xxgw5hbsqyc852c196zzvmwk3km6pnc"; sha256 = "0pjk4kr7bc5q4hi1xf7na2zln9fyqdazgzq62r3bg41nzy7fakcz";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -1,4 +1,4 @@
{ stdenv, fetchgit, fetchurl, writeScript { stdenv, writeScript, fetchFromGitHub
, libGL, libX11, libXext, python3, libXrandr, libXrender, libpulseaudio, libXcomposite , libGL, libX11, libXext, python3, libXrandr, libXrender, libpulseaudio, libXcomposite
, enableGlfw ? false, glfw }: , enableGlfw ? false, glfw }:
@ -22,12 +22,13 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "glava-${version}"; name = "glava-${version}";
version = "1.5.5"; version = "1.5.8";
src = fetchgit { src = fetchFromGitHub {
url = "https://github.com/wacossusca34/glava.git"; owner = "wacossusca34";
repo = "glava";
rev = "v${version}"; rev = "v${version}";
sha256 = "0mpbgllwz45wkax6pgvnh1pz2q4yvbzq2l8z8kff13wrsdvl8lh0"; sha256 = "0mps82qw2mhxx8069jvqz1v8n4x7ybrrjv92ij6cms8xi1y8v0fm";
}; };
buildInputs = [ buildInputs = [

View File

@ -47,6 +47,7 @@ stdenv.mkDerivation rec {
cmakeFlags = [ cmakeFlags = [
"-DGFlags_ROOT_DIR=${google-gflags}/lib" "-DGFlags_ROOT_DIR=${google-gflags}/lib"
"-DGLOG_INCLUDE_DIR=${glog}/include" "-DGLOG_INCLUDE_DIR=${glog}/include"
"-DENABLE_UNIT_TESTING=OFF"
# gnss-sdr doesn't truly depend on BLAS or LAPACK, as long as # gnss-sdr doesn't truly depend on BLAS or LAPACK, as long as
# armadillo is built using both, so skip checking for them. # armadillo is built using both, so skip checking for them.

View File

@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "bastibl"; owner = "bastibl";
repo = "gr-rds"; repo = "gr-rds";
rev = "$v{version}"; rev = "v${version}";
sha256 = "008284ya464q4h4fd0zvcn6g7bym231p8fl3kdxncz9ks4zsbsxs"; sha256 = "008284ya464q4h4fd0zvcn6g7bym231p8fl3kdxncz9ks4zsbsxs";
}; };

View File

@ -39,7 +39,7 @@ GEM
nokogiri (1.8.4) nokogiri (1.8.4)
mini_portile2 (~> 2.3.0) mini_portile2 (~> 2.3.0)
posix-spawn (0.3.13) posix-spawn (0.3.13)
rack (1.6.10) rack (1.6.11)
rack-protection (1.5.5) rack-protection (1.5.5)
rack rack
rouge (2.2.1) rouge (2.2.1)
@ -65,4 +65,4 @@ DEPENDENCIES
gollum gollum
BUNDLED WITH BUNDLED WITH
1.16.3 1.16.4

View File

@ -137,10 +137,10 @@
rack = { rack = {
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0in0amn0kwvzmi8h5zg6ijrx5wpsf8h96zrfmnk1kwh2ql4sxs2q"; sha256 = "1g9926ln2lw12lfxm4ylq1h6nl0rafl10za3xvjzc87qvnqic87f";
type = "gem"; type = "gem";
}; };
version = "1.6.10"; version = "1.6.11";
}; };
rack-protection = { rack-protection = {
dependencies = ["rack"]; dependencies = ["rack"];

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "gpxsee-${version}"; name = "gpxsee-${version}";
version = "6.2"; version = "6.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tumic0"; owner = "tumic0";
repo = "GPXSee"; repo = "GPXSee";
rev = version; rev = version;
sha256 = "13hd6n5mzkk4nx9v9dwg8vvixr73zjba72h6vmxvz9fmywc4rs5p"; sha256 = "0kbnmcis04kjqkd0msfjd8rdmdf23c71dpzx9wcpf2yadc9rv4c9";
}; };
nativeBuildInputs = [ qmake ]; nativeBuildInputs = [ qmake ];

View File

@ -0,0 +1,35 @@
{ lib
, buildPythonApplication
, isPy3k
, fetchFromGitHub
, manuel
, setuptools
, docutils
, lxml
, svg-path
, pygments
, watchdog
}:
buildPythonApplication rec {
pname = "hovercraft";
version = "2.6";
disabled = ! isPy3k;
src = fetchFromGitHub {
owner = "regebro";
repo = "hovercraft";
rev = version;
sha256 = "150sn6kvqi2s89di1akl5i0g81fasji2ipr12zq5s4dcnhw4r5wp";
};
checkInputs = [ manuel ];
propagatedBuildInputs = [ setuptools docutils lxml svg-path pygments watchdog ];
meta = with lib; {
description = "Makes impress.js presentations from reStructuredText";
homepage = https://github.com/regebro/hovercraft;
license = licenses.mit;
maintainers = with maintainers; [ goibhniu makefu ];
};
}

View File

@ -9,7 +9,7 @@ GEM
addressable (2.5.2) addressable (2.5.2)
public_suffix (>= 2.0.2, < 4.0) public_suffix (>= 2.0.2, < 4.0)
colorator (1.1.0) colorator (1.1.0)
concurrent-ruby (1.0.5) concurrent-ruby (1.1.1)
em-websocket (0.5.1) em-websocket (0.5.1)
eventmachine (>= 0.12.9) eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0) http_parser.rb (~> 0.6.0)
@ -23,7 +23,7 @@ GEM
http_parser.rb (0.6.0) http_parser.rb (0.6.0)
i18n (0.9.5) i18n (0.9.5)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
jekyll (3.8.4) jekyll (3.8.5)
addressable (~> 2.4) addressable (~> 2.4)
colorator (~> 1.0) colorator (~> 1.0)
em-websocket (~> 0.5) em-websocket (~> 0.5)
@ -47,14 +47,14 @@ GEM
jekyll (~> 3.3) jekyll (~> 3.3)
jekyll-sitemap (1.2.0) jekyll-sitemap (1.2.0)
jekyll (~> 3.3) jekyll (~> 3.3)
jekyll-watch (2.0.0) jekyll-watch (2.1.2)
listen (~> 3.0) listen (~> 3.0)
jemoji (0.10.1) jemoji (0.10.1)
gemoji (~> 3.0) gemoji (~> 3.0)
html-pipeline (~> 2.2) html-pipeline (~> 2.2)
jekyll (~> 3.0) jekyll (~> 3.0)
kramdown (1.17.0) kramdown (1.17.0)
liquid (4.0.0) liquid (4.0.1)
listen (3.1.5) listen (3.1.5)
rb-fsevent (~> 0.9, >= 0.9.4) rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7) rb-inotify (~> 0.9, >= 0.9.7)
@ -62,18 +62,18 @@ GEM
mercenary (0.3.6) mercenary (0.3.6)
mini_portile2 (2.3.0) mini_portile2 (2.3.0)
minitest (5.11.3) minitest (5.11.3)
nokogiri (1.8.4) nokogiri (1.8.5)
mini_portile2 (~> 2.3.0) mini_portile2 (~> 2.3.0)
pathutil (0.16.1) pathutil (0.16.2)
forwardable-extended (~> 2.6) forwardable-extended (~> 2.6)
public_suffix (3.0.3) public_suffix (3.0.3)
rb-fsevent (0.10.3) rb-fsevent (0.10.3)
rb-inotify (0.9.10) rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2) ffi (>= 0.5.0, < 2)
rouge (3.2.1) rouge (3.3.0)
ruby_dep (1.5.0) ruby_dep (1.5.0)
safe_yaml (1.0.4) safe_yaml (1.0.4)
sass (3.5.7) sass (3.6.0)
sass-listen (~> 4.0.0) sass-listen (~> 4.0.0)
sass-listen (4.0.0) sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4) rb-fsevent (~> 0.9, >= 0.9.4)
@ -96,4 +96,4 @@ DEPENDENCIES
rouge rouge
BUNDLED WITH BUNDLED WITH
1.16.3 1.16.4

View File

@ -28,10 +28,10 @@
concurrent-ruby = { concurrent-ruby = {
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "183lszf5gx84kcpb779v6a2y0mx9sssy8dgppng1z9a505nj1qcf"; sha256 = "1bnr2dlj2a11qy3rwh6m1mv5419vy32j2axk3ln7bphyvwn7pli0";
type = "gem"; type = "gem";
}; };
version = "1.0.5"; version = "1.1.1";
}; };
em-websocket = { em-websocket = {
dependencies = ["eventmachine" "http_parser.rb"]; dependencies = ["eventmachine" "http_parser.rb"];
@ -104,10 +104,10 @@
dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml"]; dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml"];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "01rnf0y7wx4rzh2ag74bg37vkxbg8m4nf450lypgh4khrarr3bhw"; sha256 = "1nn2sc308l2mz0yiall4r90l6vy67qp4sy9zapi73a948nd4a5k3";
type = "gem"; type = "gem";
}; };
version = "3.8.4"; version = "3.8.5";
}; };
jekyll-avatar = { jekyll-avatar = {
dependencies = ["jekyll"]; dependencies = ["jekyll"];
@ -158,10 +158,10 @@
dependencies = ["listen"]; dependencies = ["listen"];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0m7scvj3ki8bmyx5v8pzibpg6my10nycnc28lip98dskf8iakprp"; sha256 = "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv";
type = "gem"; type = "gem";
}; };
version = "2.0.0"; version = "2.1.2";
}; };
jemoji = { jemoji = {
dependencies = ["gemoji" "html-pipeline" "jekyll"]; dependencies = ["gemoji" "html-pipeline" "jekyll"];
@ -183,10 +183,10 @@
liquid = { liquid = {
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"; sha256 = "0bs9smxgj29s4k76zfj09f7mhd35qwm9zki1yqa4jfwiki8v97nw";
type = "gem"; type = "gem";
}; };
version = "4.0.0"; version = "4.0.1";
}; };
listen = { listen = {
dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"]; dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"];
@ -225,19 +225,19 @@
dependencies = ["mini_portile2"]; dependencies = ["mini_portile2"];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1h9nml9h3m0mpvmh8jfnqvblnz5n5y3mmhgfc38avfmfzdrq9bgc"; sha256 = "0byyxrazkfm29ypcx5q4syrv126nvjnf7z6bqi01sqkv4llsi4qz";
type = "gem"; type = "gem";
}; };
version = "1.8.4"; version = "1.8.5";
}; };
pathutil = { pathutil = {
dependencies = ["forwardable-extended"]; dependencies = ["forwardable-extended"];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0wc18ms1rzi44lpjychyw2a96jcmgxqdvy2949r4vvb5f4p0lgvz"; sha256 = "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4";
type = "gem"; type = "gem";
}; };
version = "0.16.1"; version = "0.16.2";
}; };
public_suffix = { public_suffix = {
source = { source = {
@ -267,10 +267,10 @@
rouge = { rouge = {
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0h79gn2wmn1wix2d27lgiaimccyj8gvizrllyym500pir408x62f"; sha256 = "1digsi2s8wyzx8vsqcxasw205lg6s7izx8jypl8rrpjwshmv83ql";
type = "gem"; type = "gem";
}; };
version = "3.2.1"; version = "3.3.0";
}; };
ruby_dep = { ruby_dep = {
source = { source = {
@ -292,10 +292,10 @@
dependencies = ["sass-listen"]; dependencies = ["sass-listen"];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1sy7xsbgpcy90j5ynbq967yplffp74pvph3r8ivn2sv2b44q6i61"; sha256 = "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh";
type = "gem"; type = "gem";
}; };
version = "3.5.7"; version = "3.6.0";
}; };
sass-listen = { sass-listen = {
dependencies = ["rb-fsevent" "rb-inotify"]; dependencies = ["rb-fsevent" "rb-inotify"];

View File

@ -16,7 +16,7 @@ GEM
execjs execjs
coffee-script-source (1.11.1) coffee-script-source (1.11.1)
colorator (1.1.0) colorator (1.1.0)
concurrent-ruby (1.0.5) concurrent-ruby (1.1.1)
em-websocket (0.5.1) em-websocket (0.5.1)
eventmachine (>= 0.12.9) eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0) http_parser.rb (~> 0.6.0)
@ -34,7 +34,7 @@ GEM
http_parser.rb (0.6.0) http_parser.rb (0.6.0)
i18n (0.9.5) i18n (0.9.5)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
jekyll (3.8.4) jekyll (3.8.5)
addressable (~> 2.4) addressable (~> 2.4)
colorator (~> 1.0) colorator (~> 1.0)
em-websocket (~> 0.5) em-websocket (~> 0.5)
@ -68,14 +68,14 @@ GEM
jekyll (~> 3.3) jekyll (~> 3.3)
jekyll-sitemap (1.2.0) jekyll-sitemap (1.2.0)
jekyll (~> 3.3) jekyll (~> 3.3)
jekyll-watch (2.0.0) jekyll-watch (2.1.2)
listen (~> 3.0) listen (~> 3.0)
jemoji (0.10.1) jemoji (0.10.1)
gemoji (~> 3.0) gemoji (~> 3.0)
html-pipeline (~> 2.2) html-pipeline (~> 2.2)
jekyll (~> 3.0) jekyll (~> 3.0)
kramdown (1.17.0) kramdown (1.17.0)
liquid (4.0.0) liquid (4.0.1)
liquid-c (3.0.0) liquid-c (3.0.0)
liquid (>= 3.0.0) liquid (>= 3.0.0)
listen (3.1.5) listen (3.1.5)
@ -90,11 +90,11 @@ GEM
minitest (5.11.3) minitest (5.11.3)
multi_json (1.13.1) multi_json (1.13.1)
multipart-post (2.0.0) multipart-post (2.0.0)
nokogiri (1.8.4) nokogiri (1.8.5)
mini_portile2 (~> 2.3.0) mini_portile2 (~> 2.3.0)
octokit (4.12.0) octokit (4.13.0)
sawyer (~> 0.8.0, >= 0.5.3) sawyer (~> 0.8.0, >= 0.5.3)
pathutil (0.16.1) pathutil (0.16.2)
forwardable-extended (~> 2.6) forwardable-extended (~> 2.6)
public_suffix (3.0.3) public_suffix (3.0.3)
pygments.rb (1.2.1) pygments.rb (1.2.1)
@ -105,10 +105,10 @@ GEM
rdiscount (2.2.0.1) rdiscount (2.2.0.1)
rdoc (6.0.4) rdoc (6.0.4)
redcarpet (3.4.0) redcarpet (3.4.0)
rouge (3.2.1) rouge (3.3.0)
ruby_dep (1.5.0) ruby_dep (1.5.0)
safe_yaml (1.0.4) safe_yaml (1.0.4)
sass (3.5.7) sass (3.6.0)
sass-listen (~> 4.0.0) sass-listen (~> 4.0.0)
sass-listen (4.0.0) sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4) rb-fsevent (~> 0.9, >= 0.9.4)
@ -152,4 +152,4 @@ DEPENDENCIES
yajl-ruby (~> 1.3.1) yajl-ruby (~> 1.3.1)
BUNDLED WITH BUNDLED WITH
1.16.3 1.16.4

View File

@ -62,10 +62,10 @@
concurrent-ruby = { concurrent-ruby = {
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "183lszf5gx84kcpb779v6a2y0mx9sssy8dgppng1z9a505nj1qcf"; sha256 = "1bnr2dlj2a11qy3rwh6m1mv5419vy32j2axk3ln7bphyvwn7pli0";
type = "gem"; type = "gem";
}; };
version = "1.0.5"; version = "1.1.1";
}; };
em-websocket = { em-websocket = {
dependencies = ["eventmachine" "http_parser.rb"]; dependencies = ["eventmachine" "http_parser.rb"];
@ -163,10 +163,10 @@
dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml"]; dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml"];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "01rnf0y7wx4rzh2ag74bg37vkxbg8m4nf450lypgh4khrarr3bhw"; sha256 = "1nn2sc308l2mz0yiall4r90l6vy67qp4sy9zapi73a948nd4a5k3";
type = "gem"; type = "gem";
}; };
version = "3.8.4"; version = "3.8.5";
}; };
jekyll-avatar = { jekyll-avatar = {
dependencies = ["jekyll"]; dependencies = ["jekyll"];
@ -261,10 +261,10 @@
dependencies = ["listen"]; dependencies = ["listen"];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0m7scvj3ki8bmyx5v8pzibpg6my10nycnc28lip98dskf8iakprp"; sha256 = "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv";
type = "gem"; type = "gem";
}; };
version = "2.0.0"; version = "2.1.2";
}; };
jemoji = { jemoji = {
dependencies = ["gemoji" "html-pipeline" "jekyll"]; dependencies = ["gemoji" "html-pipeline" "jekyll"];
@ -286,10 +286,10 @@
liquid = { liquid = {
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"; sha256 = "0bs9smxgj29s4k76zfj09f7mhd35qwm9zki1yqa4jfwiki8v97nw";
type = "gem"; type = "gem";
}; };
version = "4.0.0"; version = "4.0.1";
}; };
liquid-c = { liquid-c = {
dependencies = ["liquid"]; dependencies = ["liquid"];
@ -370,28 +370,28 @@
dependencies = ["mini_portile2"]; dependencies = ["mini_portile2"];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1h9nml9h3m0mpvmh8jfnqvblnz5n5y3mmhgfc38avfmfzdrq9bgc"; sha256 = "0byyxrazkfm29ypcx5q4syrv126nvjnf7z6bqi01sqkv4llsi4qz";
type = "gem"; type = "gem";
}; };
version = "1.8.4"; version = "1.8.5";
}; };
octokit = { octokit = {
dependencies = ["sawyer"]; dependencies = ["sawyer"];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1lki5vlsiijdmhaqdvr29zmcyvrlmkgi0x92hgan2194l2ikfjlh"; sha256 = "1yh0yzzqg575ix3y2l2261b9ag82gv2v4f1wczdhcmfbxcz755x6";
type = "gem"; type = "gem";
}; };
version = "4.12.0"; version = "4.13.0";
}; };
pathutil = { pathutil = {
dependencies = ["forwardable-extended"]; dependencies = ["forwardable-extended"];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0wc18ms1rzi44lpjychyw2a96jcmgxqdvy2949r4vvb5f4p0lgvz"; sha256 = "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4";
type = "gem"; type = "gem";
}; };
version = "0.16.1"; version = "0.16.2";
}; };
public_suffix = { public_suffix = {
source = { source = {
@ -454,10 +454,10 @@
rouge = { rouge = {
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0h79gn2wmn1wix2d27lgiaimccyj8gvizrllyym500pir408x62f"; sha256 = "1digsi2s8wyzx8vsqcxasw205lg6s7izx8jypl8rrpjwshmv83ql";
type = "gem"; type = "gem";
}; };
version = "3.2.1"; version = "3.3.0";
}; };
ruby_dep = { ruby_dep = {
source = { source = {
@ -479,10 +479,10 @@
dependencies = ["sass-listen"]; dependencies = ["sass-listen"];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1sy7xsbgpcy90j5ynbq967yplffp74pvph3r8ivn2sv2b44q6i61"; sha256 = "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh";
type = "gem"; type = "gem";
}; };
version = "3.5.7"; version = "3.6.0";
}; };
sass-listen = { sass-listen = {
dependencies = ["rb-fsevent" "rb-inotify"]; dependencies = ["rb-fsevent" "rb-inotify"];

View File

@ -20,12 +20,12 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "kdeconnect"; pname = "kdeconnect";
version = "1.3.1"; version = "1.3.3";
name = "${pname}-${version}"; name = "${pname}-${version}";
src = fetchurl { src = fetchurl {
url = "mirror://kde/stable/${pname}/${version}/src/${pname}-kde-${version}.tar.xz"; url = "mirror://kde/stable/${pname}/${version}/src/${pname}-kde-${version}.tar.xz";
sha256 = "0rzjbn4d2lh81n19dd3a5ilm8qml3zs3g3ahg75avcw8770rr344"; sha256 = "1vac0mw1myrswr61adv7lgif0c4wzw5wnsj0sqxj6msp4l4pfgsg";
}; };
buildInputs = [ buildInputs = [

View File

@ -1,12 +1,12 @@
{ stdenv, buildEnv, fetchurl, mono }: { stdenv, buildEnv, fetchurl, mono }:
let let
version = "1.7.3.1"; version = "1.8.0";
drv = stdenv.mkDerivation { drv = stdenv.mkDerivation {
name = "keepassrpc-${version}"; name = "keepassrpc-${version}";
src = fetchurl { src = fetchurl {
url = "https://github.com/kee-org/keepassrpc/releases/download/v${version}/KeePassRPC.plgx"; url = "https://github.com/kee-org/keepassrpc/releases/download/v${version}/KeePassRPC.plgx";
sha256 = "1y9b35qg27caj3pbaqqzrqpk61hbbd8617ziwdc9vl799i786m9k"; sha256 = "1dclfpia559cqf78qw29zz235h1df5md4kgjv3bbi8y41wwmx7cd";
}; };
meta = with stdenv.lib; { meta = with stdenv.lib; {
@ -14,7 +14,7 @@ let
homepage = https://github.com/kee-org/keepassrpc; homepage = https://github.com/kee-org/keepassrpc;
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
license = licenses.gpl2; license = licenses.gpl2;
maintainers = with maintainers; [ mjanczyk svsdep ]; maintainers = with maintainers; [ mjanczyk svsdep mgregoire ];
}; };
pluginFilename = "KeePassRPC.plgx"; pluginFilename = "KeePassRPC.plgx";

View File

@ -3,12 +3,12 @@
mkDerivation rec { mkDerivation rec {
pname = "latte-dock"; pname = "latte-dock";
version = "0.8.1"; version = "0.8.2";
name = "${pname}-${version}"; name = "${pname}-${version}";
src = fetchurl { src = fetchurl {
url = "https://download.kde.org/stable/${pname}/${name}.tar.xz"; url = "https://download.kde.org/stable/${pname}/${name}.tar.xz";
sha256 = "1f480ahrsxrksiiyspg7kb1hnz4vcjbs3w039cjkq2vp4wvjd74q"; sha256 = "1acwgxg9swmazi9bg5a0iyyin07h2gvp3mhbn6cfqqhpmndqxfdx";
name = "${name}.tar.xz"; name = "${name}.tar.xz";
}; };

View File

@ -7,11 +7,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "mlterm-${version}"; name = "mlterm-${version}";
version = "3.8.6"; version = "3.8.7";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/project/mlterm/01release/${name}/${name}.tar.gz"; url = "mirror://sourceforge/project/mlterm/01release/${name}/${name}.tar.gz";
sha256 = "06zylbinh84s9v79hrlvv44rd57z7kvgz9afbps3rjcbncxcmivd"; sha256 = "10j7q7rk6ck86xl1898maxhgkp1h7vy7nliv9sk5bqgs7rdwn4kl";
}; };
nativeBuildInputs = [ pkgconfig autoconf ]; nativeBuildInputs = [ pkgconfig autoconf ];

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, qt4, qmake4Hook, libpulseaudio }: { stdenv, fetchFromGitHub, qt4, qmake4Hook, libpulseaudio }:
let let
version = "1.1.5"; version = "1.1.6";
in in
stdenv.mkDerivation { stdenv.mkDerivation {
name = "multimon-ng-${version}"; name = "multimon-ng-${version}";
@ -9,7 +9,7 @@ stdenv.mkDerivation {
owner = "EliasOenal"; owner = "EliasOenal";
repo = "multimon-ng"; repo = "multimon-ng";
rev = "${version}"; rev = "${version}";
sha256 = "00h884hn5afrx5i52xmngpsv3204hgb7xpw9my3lm8sajmfrjj1g"; sha256 = "1a166mh73x77yrrnhhhzk44qrkgwav26vpidv1547zj3x3m8p0bm";
}; };
buildInputs = [ qt4 libpulseaudio ]; buildInputs = [ qt4 libpulseaudio ];

View File

@ -3,13 +3,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "opencpn-${version}"; name = "opencpn-${version}";
version = "4.8.4"; version = "4.8.8";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "OpenCPN"; owner = "OpenCPN";
repo = "OpenCPN"; repo = "OpenCPN";
rev = "v${version}"; rev = "v${version}";
sha256 = "0v4klprzddmpq7w8h2pm69sgbshirdmjrlzhz62b606gbr58fazf"; sha256 = "1z9xfc5fgbdslzak3iqg9nx6wggxwv8qwfxfhvfblkyg6kjw30dg";
}; };
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];
@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
meta = { meta = {
description = "A concise ChartPlotter/Navigator"; description = "A concise ChartPlotter/Navigator";
maintainers = [ stdenv.lib.maintainers.kragniz ]; maintainers = [ stdenv.lib.maintainers.kragniz ];
platforms = stdenv.lib.platforms.all; platforms = [ "x86_64-linux" ];
license = stdenv.lib.licenses.gpl2; license = stdenv.lib.licenses.gpl2;
homepage = https://opencpn.org/; homepage = https://opencpn.org/;
}; };

View File

@ -0,0 +1,23 @@
{ stdenv, fetchFromGitHub, cmake, libosmium, protozero, boost, bzip2, zlib, expat }:
stdenv.mkDerivation rec {
name = "osmium-tool-${version}";
version = "1.9.1";
src = fetchFromGitHub {
owner = "osmcode";
repo = "osmium-tool";
rev = "v${version}";
sha256 = "1cwabjbrdpqbi2gl7448sgniiwwa73avi9l6pnvh4r0jia2wi5wk";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ libosmium protozero boost bzip2 zlib expat ];
meta = with stdenv.lib; {
description = "Multipurpose command line tool for working with OpenStreetMap data based on the Osmium library";
homepage = "https://osmcode.org/osmium-tool/";
license = with licenses; [ gpl3 mit bsd3 ];
maintainers = with maintainers; [ das-g ];
};
}

View File

@ -0,0 +1,87 @@
{ stdenv, lib, makeWrapper, fetchurl
, dpkg, wrapGAppsHook, autoPatchelfHook
, gtk3, cairo, gnome2, atk, gdk_pixbuf, glib
, at-spi2-atk, dbus, libX11, libxcb, libXi
, libXcursor, libXdamage, libXrandr, libXcomposite
, libXext, libXfixes, libXrender, libXtst, libXScrnSaver
, nss, nspr, alsaLib, cups, fontconfig, expat
, libudev0-shim, glibc, curl, openssl, libnghttp2, gnome3 }:
stdenv.mkDerivation rec {
name = "polar-bookshelf-${version}";
version = "1.0.11";
# fetching a .deb because there's no easy way to package this Electron app
src = fetchurl {
url = "https://github.com/burtonator/polar-bookshelf/releases/download/v${version}/polar-bookshelf-${version}-amd64.deb";
sha256 = "11rrwd5cr984nhgrib12hx6k74hzgmb3cfk6qnr1l604dk9pqfqx";
};
buildInputs = [
gnome3.gsettings_desktop_schemas
glib
gtk3
cairo
gnome2.pango
atk
gdk_pixbuf
at-spi2-atk
dbus
libX11
libxcb
libXi
libXcursor
libXdamage
libXrandr
libXcomposite
libXext
libXfixes
libXrender
libXtst
libXScrnSaver
nss
nspr
alsaLib
cups
fontconfig
expat
];
nativeBuildInputs = [
wrapGAppsHook
autoPatchelfHook
makeWrapper
dpkg
];
runtimeLibs = lib.makeLibraryPath [ libudev0-shim glibc curl openssl libnghttp2 ];
unpackPhase = "dpkg-deb -x $src .";
installPhase = ''
mkdir -p $out/share/polar-bookshelf
mkdir -p $out/bin
mkdir -p $out/lib
mv opt/Polar\ Bookshelf/* $out/share/polar-bookshelf
mv $out/share/polar-bookshelf/*.so $out/lib
mv usr/share/* $out/share/
ln -s $out/share/polar-bookshelf/polar-bookshelf $out/bin/polar-bookshelf
'';
preFixup = ''
gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : "${runtimeLibs}" )
'';
meta = {
homepage = https://getpolarized.io/;
description = "Personal knowledge repository for PDF and web content supporting incremental reading and document annotation";
license = stdenv.lib.licenses.gpl3;
platforms = stdenv.lib.platforms.linux;
maintainers = [ stdenv.lib.maintainers.noneucat ];
};
}

View File

@ -1,14 +1,14 @@
{ stdenv, fetchurl, qt5 }: { stdenv, fetchurl, qt5 }:
let let
version = "1.40.13"; version = "1.40.23";
in in
stdenv.mkDerivation { stdenv.mkDerivation {
name = "qtbitcointrader-${version}"; name = "qtbitcointrader-${version}";
src = fetchurl { src = fetchurl {
url = "https://github.com/JulyIGHOR/QtBitcoinTrader/archive/v${version}.tar.gz"; url = "https://github.com/JulyIGHOR/QtBitcoinTrader/archive/v${version}.tar.gz";
sha256 = "0d6b9ls742nghzg5y97dx7myvv8i88f0s27lhr52yy4833hdxdwn"; sha256 = "11r2jzb09a62hf9fkg6aw8pg2js8c87k6lba9xz2q8n6d6jv44r1";
}; };
buildInputs = [ qt5.qtbase qt5.qtmultimedia qt5.qtscript ]; buildInputs = [ qt5.qtbase qt5.qtmultimedia qt5.qtscript ];

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