mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-28 09:53:10 +00:00
Merge branch 'master' into qt-5-tmp
This commit is contained in:
commit
a8538307e5
@ -165,7 +165,7 @@ run the script in the `python3` shell.
|
||||
|
||||
```py
|
||||
#! /usr/bin/env nix-shell
|
||||
#! nix-shell -i 'python3.withPackages(ps: [ps.numpy])'
|
||||
#! nix-shell -i python3 -p "python3.withPackages(ps: [ps.numpy])"
|
||||
|
||||
import numpy
|
||||
|
||||
|
@ -18,6 +18,7 @@
|
||||
<xi:include href="functions.xml" />
|
||||
<xi:include href="meta.xml" />
|
||||
<xi:include href="languages-frameworks/index.xml" />
|
||||
<xi:include href="platform-notes.xml" />
|
||||
<xi:include href="package-notes.xml" />
|
||||
<xi:include href="overlays.xml" />
|
||||
<xi:include href="coding-conventions.xml" />
|
||||
|
@ -200,11 +200,9 @@ meta-attributes</title>
|
||||
meta.platforms = stdenv.lib.platforms.linux;
|
||||
</programlisting>
|
||||
|
||||
Attribute Set <varname>stdenv.lib.platforms</varname> in
|
||||
<link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/lib/platforms.nix">
|
||||
<filename>nixpkgs/lib/platforms.nix</filename></link> defines various common
|
||||
lists of platforms types.
|
||||
</para></listitem>
|
||||
Attribute Set <varname>stdenv.lib.platforms</varname> defines
|
||||
<link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/lib/systems/doubles.nix">
|
||||
various common lists</link> of platforms types.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
|
@ -664,4 +664,34 @@ cp ${myEmacsConfig} $out/share/emacs/site-lisp/default.el
|
||||
|
||||
</section>
|
||||
|
||||
<section xml:id="sec-weechat">
|
||||
<title>Weechat</title>
|
||||
<para>
|
||||
Weechat can currently be configured to include your choice of plugins.
|
||||
To make use of this functionality, install an expression that overrides its configuration such as
|
||||
<programlisting>weechat.override {configure = {availablePlugins, ...}: {
|
||||
plugins = with availablePlugins; [ python perl ];
|
||||
}
|
||||
}</programlisting>
|
||||
</para>
|
||||
<para>
|
||||
The plugins currently available are <literal>python</literal>,
|
||||
<literal>perl</literal>, <literal>ruby</literal>, <literal>guile</literal>,
|
||||
<literal>tcl</literal> and <literal>lua</literal>.
|
||||
</para>
|
||||
<para>
|
||||
The python plugin allows the addition of extra libraries. For instance,
|
||||
the <literal>inotify.py</literal> script in weechat-scripts requires
|
||||
D-Bus or libnotify, and the <literal>fish.py</literal> script requires
|
||||
pycrypto. To use these scripts, use the <literal>python</literal>
|
||||
plugin's <literal>withPackages</literal> attribute:
|
||||
<programlisting>weechat.override {configure = {availablePlugins, ...}: {
|
||||
plugins = with availablePlugins; [
|
||||
(python.withPackages (ps: with ps; [ pycrypto python-dbus ]))
|
||||
];
|
||||
}
|
||||
}
|
||||
</programlisting>
|
||||
</para>
|
||||
</section>
|
||||
</chapter>
|
||||
|
83
doc/platform-notes.xml
Normal file
83
doc/platform-notes.xml
Normal file
@ -0,0 +1,83 @@
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xml:id="chap-platform-nodes">
|
||||
|
||||
<title>Platform Notes</title>
|
||||
|
||||
<section xml:id="sec-darwin">
|
||||
|
||||
<title>Darwin (macOS)</title>
|
||||
<para>Some common issues when packaging software for darwin:</para>
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
The darwin <literal>stdenv</literal> uses clang instead of gcc.
|
||||
When referring to the compiler <varname>$CC</varname> or <command>cc</command>
|
||||
will work in both cases. Some builds hardcode gcc/g++ in their
|
||||
build scripts, that can usually be fixed with using something
|
||||
like <literal>makeFlags = [ "CC=cc" ];</literal> or by patching
|
||||
the build scripts.
|
||||
</para>
|
||||
|
||||
<programlisting>
|
||||
stdenv.mkDerivation {
|
||||
name = "libfoo-1.2.3";
|
||||
# ...
|
||||
buildPhase = ''
|
||||
$CC -o hello hello.c
|
||||
'';
|
||||
}
|
||||
</programlisting>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
On darwin libraries are linked using absolute paths, libraries
|
||||
are resolved by their <literal>install_name</literal> at link
|
||||
time. Sometimes packages won't set this correctly causing the
|
||||
library lookups to fail at runtime. This can be fixed by adding
|
||||
extra linker flags or by running <command>install_name_tool -id</command>
|
||||
during the <function>fixupPhase</function>.
|
||||
</para>
|
||||
|
||||
<programlisting>
|
||||
stdenv.mkDerivation {
|
||||
name = "libfoo-1.2.3";
|
||||
# ...
|
||||
makeFlags = stdenv.lib.optional stdenv.isDarwin "LDFLAGS=-Wl,-install_name,$(out)/lib/libfoo.dylib";
|
||||
}
|
||||
</programlisting>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
Some packages assume xcode is available and use <command>xcrun</command>
|
||||
to resolve build tools like <command>clang</command>, etc.
|
||||
This causes errors like <code>xcode-select: error: no developer tools were found at '/Applications/Xcode.app'</code>
|
||||
while the build doesn't actually depend on xcode.
|
||||
</para>
|
||||
|
||||
<programlisting>
|
||||
stdenv.mkDerivation {
|
||||
name = "libfoo-1.2.3";
|
||||
# ...
|
||||
prePatch = ''
|
||||
substituteInPlace Makefile \
|
||||
--replace '/usr/bin/xcrun clang' clang
|
||||
'';
|
||||
}
|
||||
</programlisting>
|
||||
|
||||
<para>
|
||||
The package <literal>xcbuild</literal> can be used to build projects
|
||||
that really depend on Xcode, however projects that build some kind of
|
||||
graphical interface won't work without using Xcode in an impure way.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
</chapter>
|
@ -44,11 +44,13 @@
|
||||
anderspapitto = "Anders Papitto <anderspapitto@gmail.com>";
|
||||
andir = "Andreas Rammhold <andreas@rammhold.de>";
|
||||
andres = "Andres Loeh <ksnixos@andres-loeh.de>";
|
||||
andrestylianos = "Andre S. Ramos <andre.stylianos@gmail.com>";
|
||||
andrewrk = "Andrew Kelley <superjoe30@gmail.com>";
|
||||
andsild = "Anders Sildnes <andsild@gmail.com>";
|
||||
aneeshusa = "Aneesh Agrawal <aneeshusa@gmail.com>";
|
||||
ankhers = "Justin Wood <justin.k.wood@gmail.com>";
|
||||
antono = "Antono Vasiljev <self@antono.info>";
|
||||
antonxy = "Anton Schirg <anton.schirg@posteo.de>";
|
||||
apeschar = "Albert Peschar <albert@peschar.net>";
|
||||
apeyroux = "Alexandre Peyroux <alex@px.io>";
|
||||
ardumont = "Antoine R. Dumont <eniotna.t@gmail.com>";
|
||||
@ -93,6 +95,7 @@
|
||||
bramd = "Bram Duvigneau <bram@bramd.nl>";
|
||||
bstrik = "Berno Strik <dutchman55@gmx.com>";
|
||||
bzizou = "Bruno Bzeznik <Bruno@bzizou.net>";
|
||||
c0bw3b = "Renaud <c0bw3b@gmail.com>";
|
||||
c0dehero = "CodeHero <codehero@nerdpol.ch>";
|
||||
calbrecht = "Christian Albrecht <christian.albrecht@mayflower.de>";
|
||||
calrama = "Moritz Maxeiner <moritz@ucworks.org>";
|
||||
@ -262,6 +265,7 @@
|
||||
hbunke = "Hendrik Bunke <bunke.hendrik@gmail.com>";
|
||||
hce = "Hans-Christian Esperer <hc@hcesperer.org>";
|
||||
hectorj = "Hector Jusforgues <hector.jusforgues+nixos@gmail.com>";
|
||||
hedning = "Tor Hedin Brønner <torhedinbronner@gmail.com>";
|
||||
heel = "Sergii Paryzhskyi <parizhskiy@gmail.com>";
|
||||
henrytill = "Henry Till <henrytill@gmail.com>";
|
||||
hhm = "hhm <heehooman+nixpkgs@gmail.com>";
|
||||
@ -326,6 +330,7 @@
|
||||
KibaFox = "Kiba Fox <kiba.fox@foxypossibilities.com>";
|
||||
kierdavis = "Kier Davis <kierdavis@gmail.com>";
|
||||
kiloreux = "Kiloreux Emperex <kiloreux@gmail.com>";
|
||||
kini = "Keshav Kini <keshav.kini@gmail.com>";
|
||||
kkallio = "Karn Kallio <tierpluspluslists@gmail.com>";
|
||||
knedlsepp = "Josef Kemetmüller <josef.kemetmueller@gmail.com>";
|
||||
konimex = "Muhammad Herdiansyah <herdiansyah@netc.eu>";
|
||||
@ -562,6 +567,7 @@
|
||||
schristo = "Scott Christopher <schristopher@konputa.com>";
|
||||
scolobb = "Sergiu Ivanov <sivanov@colimite.fr>";
|
||||
sdll = "Sasha Illarionov <sasha.delly@gmail.com>";
|
||||
SeanZicari = "Sean Zicari <sean.zicari@gmail.com>";
|
||||
sepi = "Raffael Mancini <raffael@mancini.lu>";
|
||||
seppeljordan = "Sebastian Jordan <sebastian.jordan.mail@googlemail.com>";
|
||||
shanemikel = "Shane Pearlman <shanemikel1@gmail.com>";
|
||||
@ -585,6 +591,7 @@
|
||||
snyh = "Xia Bin <snyh@snyh.org>";
|
||||
solson = "Scott Olson <scott@solson.me>";
|
||||
sorpaas = "Wei Tang <hi@that.world>";
|
||||
sorki = "Richard Marko <srk@48.io>";
|
||||
spacefrogg = "Michael Raitza <spacefrogg-nixos@meterriblecrew.net>";
|
||||
spencerjanssen = "Spencer Janssen <spencerjanssen@gmail.com>";
|
||||
spinus = "Tomasz Czyż <tomasz.czyz@gmail.com>";
|
||||
@ -623,6 +630,7 @@
|
||||
ThomasMader = "Thomas Mader <thomas.mader@gmail.com>";
|
||||
thoughtpolice = "Austin Seipp <aseipp@pobox.com>";
|
||||
timbertson = "Tim Cuthbertson <tim@gfxmonk.net>";
|
||||
timokau = "Timo Kaufmann <timokau@zoho.com>";
|
||||
titanous = "Jonathan Rudenberg <jonathan@titanous.com>";
|
||||
tnias = "Philipp Bartsch <phil@grmr.de>";
|
||||
tohl = "Tomas Hlavaty <tom@logand.com>";
|
||||
|
@ -338,7 +338,7 @@ rec {
|
||||
# Type-check the remaining definitions, and merge them.
|
||||
mergedValue = foldl' (res: def:
|
||||
if type.check def.value then res
|
||||
else throw "The option value `${showOption loc}' in `${def.file}' is not a ${type.description}.")
|
||||
else throw "The option value `${showOption loc}' in `${def.file}' is not of type `${type.description}'.")
|
||||
(type.merge loc defsFinal) defsFinal;
|
||||
|
||||
isDefined = defsFinal != [];
|
||||
|
@ -2,7 +2,6 @@
|
||||
rec {
|
||||
pcBase = {
|
||||
name = "pc";
|
||||
uboot = null;
|
||||
kernelHeadersBaseConfig = "defconfig";
|
||||
kernelBaseConfig = "defconfig";
|
||||
# Build whatever possible as a module, if not stated in the extra config.
|
||||
@ -50,9 +49,6 @@ rec {
|
||||
kernelTarget = "uImage";
|
||||
# TODO reenable once manual-config's config actually builds a .dtb and this is checked to be working
|
||||
#kernelDTB = true;
|
||||
|
||||
# XXX can be anything non-null, pkgs actually only cares if it is set or not
|
||||
uboot = "pogoplug4";
|
||||
};
|
||||
|
||||
sheevaplug = {
|
||||
@ -162,9 +158,6 @@ rec {
|
||||
'';
|
||||
kernelMakeFlags = [ "LOADADDR=0x0200000" ];
|
||||
kernelTarget = "uImage";
|
||||
uboot = "sheevaplug";
|
||||
# Only for uboot = uboot :
|
||||
ubootConfig = "sheevaplug_config";
|
||||
kernelDTB = true; # Beyond 3.10
|
||||
gcc = {
|
||||
arch = "armv5te";
|
||||
@ -251,7 +244,6 @@ rec {
|
||||
LATENCYTOP y
|
||||
'';
|
||||
kernelTarget = "zImage";
|
||||
uboot = null;
|
||||
gcc = {
|
||||
arch = "armv6";
|
||||
fpu = "vfp";
|
||||
@ -342,7 +334,6 @@ rec {
|
||||
XEN? n
|
||||
'';
|
||||
kernelTarget = "zImage";
|
||||
uboot = null;
|
||||
};
|
||||
|
||||
scaleway-c1 = armv7l-hf-multiplatform // {
|
||||
@ -374,7 +365,6 @@ rec {
|
||||
kernelMakeFlags = [ "LOADADDR=0x10800000" ];
|
||||
kernelTarget = "uImage";
|
||||
kernelDTB = true;
|
||||
uboot = true; #XXX: any non-null value here is needed so that mkimage is present to build kernelTarget uImage
|
||||
gcc = {
|
||||
cpu = "cortex-a9";
|
||||
fpu = "neon";
|
||||
@ -464,7 +454,6 @@ rec {
|
||||
FTRACE n
|
||||
'';
|
||||
kernelTarget = "vmlinux";
|
||||
uboot = null;
|
||||
gcc = {
|
||||
arch = "loongson2f";
|
||||
abi = "n32";
|
||||
@ -477,7 +466,6 @@ rec {
|
||||
kernelAutoModules = false;
|
||||
kernelExtraConfig = ""; # TBD kernel config
|
||||
kernelTarget = "zImage";
|
||||
uboot = null;
|
||||
};
|
||||
|
||||
armv7l-hf-multiplatform = {
|
||||
@ -489,7 +477,6 @@ rec {
|
||||
kernelDTB = true;
|
||||
kernelAutoModules = true;
|
||||
kernelPreferBuiltin = true;
|
||||
uboot = null;
|
||||
kernelTarget = "zImage";
|
||||
kernelExtraConfig = ''
|
||||
# Fix broken sunxi-sid nvmem driver.
|
||||
@ -552,7 +539,6 @@ rec {
|
||||
# which our initrd builder can't currently do easily.
|
||||
USB_XHCI_TEGRA m
|
||||
'';
|
||||
uboot = null;
|
||||
kernelTarget = "Image";
|
||||
gcc = {
|
||||
arch = "armv8-a";
|
||||
|
@ -61,6 +61,16 @@ checkConfigError() {
|
||||
checkConfigOutput "false" config.enable ./declare-enable.nix
|
||||
checkConfigError 'The option .* defined in .* does not exist.' config.enable ./define-enable.nix
|
||||
|
||||
# Check integer types.
|
||||
# unsigned
|
||||
checkConfigOutput "42" config.value ./declare-int-unsigned-value.nix ./define-value-int-positive.nix
|
||||
checkConfigError 'The option value .* in .* is not of type.*unsigned integer.*' config.value ./declare-int-unsigned-value.nix ./define-value-int-negative.nix
|
||||
# positive
|
||||
checkConfigError 'The option value .* in .* is not of type.*positive integer.*' config.value ./declare-int-positive-value.nix ./define-value-int-zero.nix
|
||||
# between
|
||||
checkConfigOutput "42" config.value ./declare-int-between-value.nix ./define-value-int-positive.nix
|
||||
checkConfigError 'The option value .* in .* is not of type.*between.*-21 and 43.*inclusive.*' config.value ./declare-int-between-value.nix ./define-value-int-negative.nix
|
||||
|
||||
# Check mkForce without submodules.
|
||||
set -- config.enable ./declare-enable.nix ./define-enable.nix
|
||||
checkConfigOutput "true" "$@"
|
||||
@ -126,7 +136,7 @@ checkConfigOutput "true" "$@" ./define-module-check.nix
|
||||
# Check coerced value.
|
||||
checkConfigOutput "\"42\"" config.value ./declare-coerced-value.nix
|
||||
checkConfigOutput "\"24\"" config.value ./declare-coerced-value.nix ./define-value-string.nix
|
||||
checkConfigError 'The option value .* in .* is not a string or integer.' config.value ./declare-coerced-value.nix ./define-value-list.nix
|
||||
checkConfigError 'The option value .* in .* is not.*string or signed integer.*' config.value ./declare-coerced-value.nix ./define-value-list.nix
|
||||
|
||||
cat <<EOF
|
||||
====== module tests ======
|
||||
|
9
lib/tests/modules/declare-int-between-value.nix
Normal file
9
lib/tests/modules/declare-int-between-value.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{ lib, ... }:
|
||||
|
||||
{
|
||||
options = {
|
||||
value = lib.mkOption {
|
||||
type = lib.types.ints.between (-21) 43;
|
||||
};
|
||||
};
|
||||
}
|
9
lib/tests/modules/declare-int-positive-value.nix
Normal file
9
lib/tests/modules/declare-int-positive-value.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{ lib, ... }:
|
||||
|
||||
{
|
||||
options = {
|
||||
value = lib.mkOption {
|
||||
type = lib.types.ints.positive;
|
||||
};
|
||||
};
|
||||
}
|
9
lib/tests/modules/declare-int-unsigned-value.nix
Normal file
9
lib/tests/modules/declare-int-unsigned-value.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{ lib, ... }:
|
||||
|
||||
{
|
||||
options = {
|
||||
value = lib.mkOption {
|
||||
type = lib.types.ints.unsigned;
|
||||
};
|
||||
};
|
||||
}
|
3
lib/tests/modules/define-value-int-negative.nix
Normal file
3
lib/tests/modules/define-value-int-negative.nix
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
value = -23;
|
||||
}
|
3
lib/tests/modules/define-value-int-positive.nix
Normal file
3
lib/tests/modules/define-value-int-positive.nix
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
value = 42;
|
||||
}
|
3
lib/tests/modules/define-value-int-zero.nix
Normal file
3
lib/tests/modules/define-value-int-zero.nix
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
value = 0;
|
||||
}
|
@ -108,11 +108,64 @@ rec {
|
||||
};
|
||||
|
||||
int = mkOptionType rec {
|
||||
name = "int";
|
||||
description = "integer";
|
||||
check = isInt;
|
||||
merge = mergeOneOption;
|
||||
};
|
||||
name = "int";
|
||||
description = "signed integer";
|
||||
check = isInt;
|
||||
merge = mergeOneOption;
|
||||
};
|
||||
|
||||
# Specialized subdomains of int
|
||||
ints =
|
||||
let
|
||||
betweenDesc = lowest: highest:
|
||||
"${toString lowest} and ${toString highest} (both inclusive)";
|
||||
between = lowest: highest: assert lowest <= highest;
|
||||
addCheck int (x: x >= lowest && x <= highest) // {
|
||||
name = "intBetween";
|
||||
description = "integer between ${betweenDesc lowest highest}";
|
||||
};
|
||||
ign = lowest: highest: name: docStart:
|
||||
between lowest highest // {
|
||||
inherit name;
|
||||
description = docStart + "; between ${betweenDesc lowest highest}";
|
||||
};
|
||||
unsign = bit: range: ign 0 (range - 1)
|
||||
"unsignedInt${toString bit}" "${toString bit} bit unsigned integer";
|
||||
sign = bit: range: ign (0 - (range / 2)) (range / 2 - 1)
|
||||
"signedInt${toString bit}" "${toString bit} bit signed integer";
|
||||
|
||||
in rec {
|
||||
/* An int with a fixed range.
|
||||
*
|
||||
* Example:
|
||||
* (ints.between 0 100).check (-1)
|
||||
* => false
|
||||
* (ints.between 0 100).check (101)
|
||||
* => false
|
||||
* (ints.between 0 0).check 0
|
||||
* => true
|
||||
*/
|
||||
inherit between;
|
||||
|
||||
unsigned = addCheck types.int (x: x >= 0) // {
|
||||
name = "unsignedInt";
|
||||
description = "unsigned integer, meaning >=0";
|
||||
};
|
||||
positive = addCheck types.int (x: x > 0) // {
|
||||
name = "positiveInt";
|
||||
description = "positive integer, meaning >0";
|
||||
};
|
||||
u8 = unsign 8 256;
|
||||
u16 = unsign 16 65536;
|
||||
# the biggest int a 64-bit Nix accepts is 2^63 - 1 (9223372036854775808), for a 32-bit Nix it is 2^31 - 1 (2147483647)
|
||||
# the smallest int a 64-bit Nix accepts is -2^63 (-9223372036854775807), for a 32-bit Nix it is -2^31 (-2147483648)
|
||||
# u32 = unsign 32 4294967296;
|
||||
# u64 = unsign 64 18446744073709551616;
|
||||
|
||||
s8 = sign 8 256;
|
||||
s16 = sign 16 65536;
|
||||
# s32 = sign 32 4294967296;
|
||||
};
|
||||
|
||||
str = mkOptionType {
|
||||
name = "str";
|
||||
@ -172,7 +225,7 @@ rec {
|
||||
};
|
||||
|
||||
# drop this in the future:
|
||||
list = builtins.trace "`types.list' is deprecated; use `types.listOf' instead" types.listOf;
|
||||
list = builtins.trace "`types.list` is deprecated; use `types.listOf` instead" types.listOf;
|
||||
|
||||
listOf = elemType: mkOptionType rec {
|
||||
name = "listOf";
|
||||
@ -189,7 +242,7 @@ rec {
|
||||
).optionalValue
|
||||
) def.value
|
||||
else
|
||||
throw "The option value `${showOption loc}' in `${def.file}' is not a list.") defs)));
|
||||
throw "The option value `${showOption loc}` in `${def.file}` is not a list.") defs)));
|
||||
getSubOptions = prefix: elemType.getSubOptions (prefix ++ ["*"]);
|
||||
getSubModules = elemType.getSubModules;
|
||||
substSubModules = m: listOf (elemType.substSubModules m);
|
||||
@ -260,7 +313,7 @@ rec {
|
||||
let nrNulls = count (def: def.value == null) defs; in
|
||||
if nrNulls == length defs then null
|
||||
else if nrNulls != 0 then
|
||||
throw "The option `${showOption loc}' is defined both null and not null, in ${showFiles (getFiles defs)}."
|
||||
throw "The option `${showOption loc}` is defined both null and not null, in ${showFiles (getFiles defs)}."
|
||||
else elemType.merge loc defs;
|
||||
getSubOptions = elemType.getSubOptions;
|
||||
getSubModules = elemType.getSubModules;
|
||||
|
@ -18,6 +18,7 @@ import os
|
||||
import re
|
||||
import requests
|
||||
import toolz
|
||||
from concurrent.futures import ThreadPoolExecutor as pool
|
||||
|
||||
INDEX = "https://pypi.io/pypi"
|
||||
"""url of PyPI"""
|
||||
@ -235,7 +236,8 @@ def main():
|
||||
|
||||
packages = map(os.path.abspath, args.package)
|
||||
|
||||
count = list(map(_update, packages))
|
||||
with pool() as p:
|
||||
count = list(p.map(_update, packages))
|
||||
|
||||
logging.info("{} package(s) updated".format(sum(count)))
|
||||
|
||||
|
@ -22,10 +22,6 @@
|
||||
<listitem><para>A boolean, its values can be <literal>true</literal> or
|
||||
<literal>false</literal>.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><varname>types.int</varname></term>
|
||||
<listitem><para>An integer.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><varname>types.path</varname></term>
|
||||
<listitem><para>A filesystem path, defined as anything that when coerced to
|
||||
@ -39,7 +35,59 @@
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>String related types:</para>
|
||||
<para>Integer-related types:</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><varname>types.int</varname></term>
|
||||
<listitem><para>A signed integer.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<varname>types.ints.{s8, s16, s32}</varname>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>Signed integers with a fixed length (8, 16 or 32 bits).
|
||||
They go from
|
||||
<inlineequation><mathphrase>−2<superscript>n</superscript>/2</mathphrase>
|
||||
</inlineequation> to <inlineequation>
|
||||
<mathphrase>2<superscript>n</superscript>/2−1</mathphrase>
|
||||
</inlineequation>
|
||||
respectively (e.g. <literal>−128</literal> to <literal>127</literal>
|
||||
for 8 bits).
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<varname>types.ints.unsigned</varname>
|
||||
</term>
|
||||
<listitem><para>An unsigned integer (that is >= 0).
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<varname>types.ints.{u8, u16, u32}</varname>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>Unsigned integers with a fixed length (8, 16 or 32 bits).
|
||||
They go from
|
||||
<inlineequation><mathphrase>0</mathphrase></inlineequation> to <inlineequation>
|
||||
<mathphrase>2<superscript>n</superscript>−1</mathphrase>
|
||||
</inlineequation>
|
||||
respectively (e.g. <literal>0</literal> to <literal>255</literal>
|
||||
for 8 bits).
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<varname>types.ints.positive</varname>
|
||||
</term>
|
||||
<listitem><para>A positive integer (that is > 0).
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>String-related types:</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
@ -68,7 +116,7 @@
|
||||
|
||||
<section><title>Value Types</title>
|
||||
|
||||
<para>Value types are type that take a value parameter.</para>
|
||||
<para>Value types are types that take a value parameter.</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
@ -84,6 +132,17 @@
|
||||
<replaceable>sep</replaceable>, e.g. <literal>types.separatedString
|
||||
"|"</literal>.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<varname>types.ints.between</varname>
|
||||
<replaceable>lowest</replaceable>
|
||||
<replaceable>highest</replaceable>
|
||||
</term>
|
||||
<listitem><para>An integer between <replaceable>lowest</replaceable>
|
||||
and <replaceable>highest</replaceable> (both inclusive).
|
||||
Useful for creating types like <literal>types.port</literal>.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><varname>types.submodule</varname> <replaceable>o</replaceable></term>
|
||||
<listitem><para>A set of sub options <replaceable>o</replaceable>.
|
||||
|
@ -63,6 +63,15 @@ following incompatible changes:</para>
|
||||
pass literal dollar signs through Postfix, double them.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <literal>postage</literal> package (for web-based PostgreSQL
|
||||
administration) has been renamed to <literal>pgmanage</literal>. The
|
||||
corresponding module has also been renamed. To migrate please rename all
|
||||
<option>services.postage</option> options to
|
||||
<option>services.pgmanage</option>.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</section>
|
||||
|
@ -207,11 +207,12 @@
|
||||
ripple-data-api = 186;
|
||||
mediatomb = 187;
|
||||
rdnssd = 188;
|
||||
# ihaskell = 189; # unused
|
||||
ihaskell = 189;
|
||||
i2p = 190;
|
||||
lambdabot = 191;
|
||||
asterisk = 192;
|
||||
plex = 193;
|
||||
plexpy = 195;
|
||||
grafana = 196;
|
||||
skydns = 197;
|
||||
# ripple-rest = 198; # unused, removed 2017-08-12
|
||||
@ -483,7 +484,7 @@
|
||||
#ripple-data-api = 186; #unused
|
||||
mediatomb = 187;
|
||||
#rdnssd = 188; # unused
|
||||
# ihaskell = 189; # unused
|
||||
ihaskell = 189;
|
||||
i2p = 190;
|
||||
lambdabot = 191;
|
||||
asterisk = 192;
|
||||
|
@ -185,7 +185,7 @@
|
||||
./services/databases/neo4j.nix
|
||||
./services/databases/openldap.nix
|
||||
./services/databases/opentsdb.nix
|
||||
./services/databases/postage.nix
|
||||
./services/databases/pgmanage.nix
|
||||
./services/databases/postgresql.nix
|
||||
./services/databases/redis.nix
|
||||
./services/databases/riak.nix
|
||||
@ -304,7 +304,7 @@
|
||||
./services/misc/gogs.nix
|
||||
./services/misc/gollum.nix
|
||||
./services/misc/gpsd.nix
|
||||
#./services/misc/ihaskell.nix
|
||||
./services/misc/ihaskell.nix
|
||||
./services/misc/irkerd.nix
|
||||
./services/misc/jackett.nix
|
||||
./services/misc/logkeys.nix
|
||||
@ -413,6 +413,7 @@
|
||||
./services/networking/asterisk.nix
|
||||
./services/networking/atftpd.nix
|
||||
./services/networking/avahi-daemon.nix
|
||||
./services/networking/babeld.nix
|
||||
./services/networking/bind.nix
|
||||
./services/networking/autossh.nix
|
||||
./services/networking/bird.nix
|
||||
|
@ -10,7 +10,7 @@ let
|
||||
#! ${pkgs.stdenv.shell}
|
||||
${cfg.extraSessionCommands}
|
||||
PATH="${sway}/bin:$PATH"
|
||||
exec ${pkgs.dbus.dbus-launch} --exit-with-session "${sway}/bin/sway"
|
||||
exec ${pkgs.dbus.dbus-launch} --exit-with-session sway-setcap
|
||||
'';
|
||||
swayJoined = pkgs.symlinkJoin {
|
||||
name = "sway-wrapped";
|
||||
@ -53,7 +53,8 @@ in
|
||||
config = mkIf cfg.enable {
|
||||
environment.systemPackages = [ swayJoined ] ++ cfg.extraPackages;
|
||||
security.wrappers.sway = {
|
||||
source = "${swayJoined}/bin/sway";
|
||||
program = "sway-setcap";
|
||||
source = "${sway}/bin/sway";
|
||||
capabilities = "cap_sys_ptrace,cap_sys_tty_config=eip";
|
||||
owner = "root";
|
||||
group = "sway";
|
||||
|
@ -67,7 +67,7 @@ in
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = literalExample "0.0.0.0";
|
||||
description = "Address to bind to. The default it to bind to all addresses";
|
||||
description = "Address to bind to. The default is to bind to all addresses";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
|
@ -3,16 +3,16 @@
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.postage;
|
||||
cfg = config.services.pgmanage;
|
||||
|
||||
confFile = pkgs.writeTextFile {
|
||||
name = "postage.conf";
|
||||
name = "pgmanage.conf";
|
||||
text = ''
|
||||
connection_file = ${postageConnectionsFile}
|
||||
connection_file = ${pgmanageConnectionsFile}
|
||||
|
||||
allow_custom_connections = ${builtins.toJSON cfg.allowCustomConnections}
|
||||
|
||||
postage_port = ${toString cfg.port}
|
||||
pgmanage_port = ${toString cfg.port}
|
||||
|
||||
super_only = ${builtins.toJSON cfg.superOnly}
|
||||
|
||||
@ -20,7 +20,7 @@ let
|
||||
|
||||
login_timeout = ${toString cfg.loginTimeout}
|
||||
|
||||
web_root = ${cfg.package}/etc/postage/web_root
|
||||
web_root = ${cfg.package}/etc/pgmanage/web_root
|
||||
|
||||
data_root = ${cfg.dataRoot}
|
||||
|
||||
@ -33,24 +33,23 @@ let
|
||||
'';
|
||||
};
|
||||
|
||||
postageConnectionsFile = pkgs.writeTextFile {
|
||||
name = "postage-connections.conf";
|
||||
pgmanageConnectionsFile = pkgs.writeTextFile {
|
||||
name = "pgmanage-connections.conf";
|
||||
text = concatStringsSep "\n"
|
||||
(mapAttrsToList (name : conn : "${name}: ${conn}") cfg.connections);
|
||||
};
|
||||
|
||||
postage = "postage";
|
||||
in {
|
||||
pgmanage = "pgmanage";
|
||||
|
||||
options.services.postage = {
|
||||
pgmanageOptions = {
|
||||
enable = mkEnableOption "PostgreSQL Administration for the web";
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.postage;
|
||||
defaultText = "pkgs.postage";
|
||||
default = pkgs.pgmanage;
|
||||
defaultText = "pkgs.pgmanage";
|
||||
description = ''
|
||||
The postage package to use.
|
||||
The pgmanage package to use.
|
||||
'';
|
||||
};
|
||||
|
||||
@ -62,14 +61,14 @@ in {
|
||||
"mini-server" = "hostaddr=127.0.0.1 port=5432 dbname=postgres sslmode=require";
|
||||
};
|
||||
description = ''
|
||||
Postage requires at least one PostgreSQL server be defined.
|
||||
pgmanage requires at least one PostgreSQL server be defined.
|
||||
</para><para>
|
||||
Detailed information about PostgreSQL connection strings is available at:
|
||||
<link xlink:href="http://www.postgresql.org/docs/current/static/libpq-connect.html"/>
|
||||
</para><para>
|
||||
Note that you should not specify your user name or password. That
|
||||
information will be entered on the login screen. If you specify a
|
||||
username or password, it will be removed by Postage before attempting to
|
||||
username or password, it will be removed by pgmanage before attempting to
|
||||
connect to a database.
|
||||
'';
|
||||
};
|
||||
@ -78,7 +77,7 @@ in {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
This tells Postage whether or not to allow anyone to use a custom
|
||||
This tells pgmanage whether or not to allow anyone to use a custom
|
||||
connection from the login screen.
|
||||
'';
|
||||
};
|
||||
@ -87,7 +86,7 @@ in {
|
||||
type = types.int;
|
||||
default = 8080;
|
||||
description = ''
|
||||
This tells Postage what port to listen on for browser requests.
|
||||
This tells pgmanage what port to listen on for browser requests.
|
||||
'';
|
||||
};
|
||||
|
||||
@ -95,7 +94,7 @@ in {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
This tells Postage whether or not to set the listening socket to local
|
||||
This tells pgmanage whether or not to set the listening socket to local
|
||||
addresses only.
|
||||
'';
|
||||
};
|
||||
@ -104,10 +103,10 @@ in {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
This tells Postage whether or not to only allow super users to
|
||||
This tells pgmanage whether or not to only allow super users to
|
||||
login. The recommended value is true and will restrict users who are not
|
||||
super users from logging in to any PostgreSQL instance through
|
||||
Postage. Note that a connection will be made to PostgreSQL in order to
|
||||
pgmanage. Note that a connection will be made to PostgreSQL in order to
|
||||
test if the user is a superuser.
|
||||
'';
|
||||
};
|
||||
@ -116,8 +115,8 @@ in {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
This tells Postage to only allow users in a certain PostgreSQL group to
|
||||
login to Postage. Note that a connection will be made to PostgreSQL in
|
||||
This tells pgmanage to only allow users in a certain PostgreSQL group to
|
||||
login to pgmanage. Note that a connection will be made to PostgreSQL in
|
||||
order to test if the user is a member of the login group.
|
||||
'';
|
||||
};
|
||||
@ -133,10 +132,10 @@ in {
|
||||
|
||||
dataRoot = mkOption {
|
||||
type = types.str;
|
||||
default = "/var/lib/postage";
|
||||
default = "/var/lib/pgmanage";
|
||||
description = ''
|
||||
This tells Postage where to put the SQL file history. All tabs are saved
|
||||
to this location so that if you get disconnected from Postage you
|
||||
This tells pgmanage where to put the SQL file history. All tabs are saved
|
||||
to this location so that if you get disconnected from pgmanage you
|
||||
don't lose your work.
|
||||
'';
|
||||
};
|
||||
@ -156,15 +155,15 @@ in {
|
||||
});
|
||||
default = null;
|
||||
description = ''
|
||||
These options tell Postage where the TLS Certificate and Key files
|
||||
These options tell pgmanage where the TLS Certificate and Key files
|
||||
reside. If you use these options then you'll only be able to access
|
||||
Postage through a secure TLS connection. These options are only
|
||||
necessary if you wish to connect directly to Postage using a secure TLS
|
||||
connection. As an alternative, you can set up Postage in a reverse proxy
|
||||
pgmanage through a secure TLS connection. These options are only
|
||||
necessary if you wish to connect directly to pgmanage using a secure TLS
|
||||
connection. As an alternative, you can set up pgmanage in a reverse proxy
|
||||
configuration. This allows your web server to terminate the secure
|
||||
connection and pass on the request to Postage. You can find help to set
|
||||
connection and pass on the request to pgmanage. You can find help to set
|
||||
up this configuration in:
|
||||
<link xlink:href="https://github.com/workflowproducts/postage/blob/master/INSTALL_NGINX.md"/>
|
||||
<link xlink:href="https://github.com/pgManage/pgManage/blob/master/INSTALL_NGINX.md"/>
|
||||
'';
|
||||
};
|
||||
|
||||
@ -177,29 +176,47 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.postage = {
|
||||
description = "postage - PostgreSQL Administration for the web";
|
||||
wants = [ "postgresql.service" ];
|
||||
after = [ "postgresql.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
User = postage;
|
||||
Group = postage;
|
||||
ExecStart = "${pkgs.postage}/sbin/postage -c ${confFile}" +
|
||||
optionalString cfg.localOnly " --local-only=true";
|
||||
|
||||
in {
|
||||
|
||||
options.services.pgmanage = pgmanageOptions;
|
||||
|
||||
# This is deprecated and should be removed for NixOS-18.03.
|
||||
options.services.postage = pgmanageOptions;
|
||||
|
||||
config = mkMerge [
|
||||
{ assertions = [
|
||||
{ assertion = !config.services.postage.enable;
|
||||
message =
|
||||
"services.postage is deprecated in favour of pgmanage. " +
|
||||
"They have the same options so just substitute postage for pgmanage." ;
|
||||
}
|
||||
];
|
||||
}
|
||||
(mkIf cfg.enable {
|
||||
systemd.services.pgmanage = {
|
||||
description = "pgmanage - PostgreSQL Administration for the web";
|
||||
wants = [ "postgresql.service" ];
|
||||
after = [ "postgresql.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
User = pgmanage;
|
||||
Group = pgmanage;
|
||||
ExecStart = "${pkgs.pgmanage}/sbin/pgmanage -c ${confFile}" +
|
||||
optionalString cfg.localOnly " --local-only=true";
|
||||
};
|
||||
};
|
||||
};
|
||||
users = {
|
||||
users."${postage}" = {
|
||||
name = postage;
|
||||
group = postage;
|
||||
home = cfg.dataRoot;
|
||||
createHome = true;
|
||||
users = {
|
||||
users."${pgmanage}" = {
|
||||
name = pgmanage;
|
||||
group = pgmanage;
|
||||
home = cfg.dataRoot;
|
||||
createHome = true;
|
||||
};
|
||||
groups."${pgmanage}" = {
|
||||
name = pgmanage;
|
||||
};
|
||||
};
|
||||
groups."${postage}" = {
|
||||
name = postage;
|
||||
};
|
||||
};
|
||||
};
|
||||
})
|
||||
];
|
||||
}
|
@ -467,7 +467,15 @@ in {
|
||||
];
|
||||
})
|
||||
|
||||
(mkIf cfg.web.enable {
|
||||
(mkIf cfg.web.enable (let
|
||||
python27' = pkgs.python27.override {
|
||||
packageOverrides = self: super: {
|
||||
django = self.django_1_8;
|
||||
django_tagging = self.django_tagging_0_4_3;
|
||||
};
|
||||
};
|
||||
pythonPackages = python27'.pkgs;
|
||||
in {
|
||||
systemd.services.graphiteWeb = {
|
||||
description = "Graphite Web Interface";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
@ -477,8 +485,8 @@ in {
|
||||
PYTHONPATH = let
|
||||
penv = pkgs.python.buildEnv.override {
|
||||
extraLibs = [
|
||||
pkgs.python27Packages.graphite_web
|
||||
pkgs.python27Packages.pysqlite
|
||||
pythonPackages.graphite_web
|
||||
pythonPackages.pysqlite
|
||||
];
|
||||
};
|
||||
penvPack = "${penv}/${pkgs.python.sitePackages}";
|
||||
@ -516,17 +524,17 @@ in {
|
||||
fi
|
||||
|
||||
# Only collect static files when graphite_web changes.
|
||||
if ! [ "${dataDir}/current_graphite_web" -ef "${pkgs.python27Packages.graphite_web}" ]; then
|
||||
if ! [ "${dataDir}/current_graphite_web" -ef "${pythonPackages.graphite_web}" ]; then
|
||||
mkdir -p ${staticDir}
|
||||
${pkgs.pythonPackages.django_1_8}/bin/django-admin.py collectstatic --noinput --clear
|
||||
chown -R graphite:graphite ${staticDir}
|
||||
ln -sfT "${pkgs.python27Packages.graphite_web}" "${dataDir}/current_graphite_web"
|
||||
ln -sfT "${pythonPackages.graphite_web}" "${dataDir}/current_graphite_web"
|
||||
fi
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = [ pkgs.python27Packages.graphite_web ];
|
||||
})
|
||||
environment.systemPackages = [ pythonPackages.graphite_web ];
|
||||
}))
|
||||
|
||||
(mkIf cfg.api.enable {
|
||||
systemd.services.graphiteApi = {
|
||||
|
98
nixos/modules/services/networking/babeld.nix
Normal file
98
nixos/modules/services/networking/babeld.nix
Normal file
@ -0,0 +1,98 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.babeld;
|
||||
|
||||
paramsString = params:
|
||||
concatMapStringsSep "" (name: "${name} ${boolToString (getAttr name params)}")
|
||||
(attrNames params);
|
||||
|
||||
interfaceConfig = name:
|
||||
let
|
||||
interface = getAttr name cfg.interfaces;
|
||||
in
|
||||
"interface ${name} ${paramsString interface}\n";
|
||||
|
||||
configFile = with cfg; pkgs.writeText "babeld.conf" (
|
||||
(optionalString (cfg.interfaceDefaults != null) ''
|
||||
default ${paramsString cfg.interfaceDefaults}
|
||||
'')
|
||||
+ (concatMapStrings interfaceConfig (attrNames cfg.interfaces))
|
||||
+ extraConfig);
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
services.babeld = {
|
||||
|
||||
enable = mkOption {
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to run the babeld network routing daemon.
|
||||
'';
|
||||
};
|
||||
|
||||
interfaceDefaults = mkOption {
|
||||
default = null;
|
||||
description = ''
|
||||
A set describing default parameters for babeld interfaces.
|
||||
See <citerefentry><refentrytitle>babeld</refentrytitle><manvolnum>8</manvolnum></citerefentry> for options.
|
||||
'';
|
||||
type = types.nullOr (types.attrsOf types.unspecified);
|
||||
example =
|
||||
{
|
||||
wired = true;
|
||||
"split-horizon" = true;
|
||||
};
|
||||
};
|
||||
|
||||
interfaces = mkOption {
|
||||
default = {};
|
||||
description = ''
|
||||
A set describing babeld interfaces.
|
||||
See <citerefentry><refentrytitle>babeld</refentrytitle><manvolnum>8</manvolnum></citerefentry> for options.
|
||||
'';
|
||||
type = types.attrsOf (types.attrsOf types.unspecified);
|
||||
example =
|
||||
{ enp0s2 =
|
||||
{ wired = true;
|
||||
"hello-interval" = 5;
|
||||
"split-horizon" = "auto";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
default = "";
|
||||
description = ''
|
||||
Options that will be copied to babeld.conf.
|
||||
See <citerefentry><refentrytitle>babeld</refentrytitle><manvolnum>8</manvolnum></citerefentry> for details.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf config.services.babeld.enable {
|
||||
|
||||
systemd.services.babeld = {
|
||||
description = "Babel routing daemon";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig.ExecStart = "${pkgs.babeld}/bin/babeld -c ${configFile}";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
}
|
@ -28,7 +28,7 @@ in {
|
||||
description = "Keybase service";
|
||||
serviceConfig = {
|
||||
ExecStart = ''
|
||||
${pkgs.keybase}/bin/keybase -d service --auto-forked
|
||||
${pkgs.keybase}/bin/keybase service --auto-forked
|
||||
'';
|
||||
Restart = "on-failure";
|
||||
PrivateTmp = true;
|
||||
|
@ -32,6 +32,11 @@ let
|
||||
ipv6.ip6-privacy=2
|
||||
ethernet.cloned-mac-address=${cfg.ethernet.macAddress}
|
||||
wifi.cloned-mac-address=${cfg.wifi.macAddress}
|
||||
${optionalString (cfg.wifi.powersave != null)
|
||||
''wifi.powersave=${if cfg.wifi.powersave then "3" else "2"}''}
|
||||
|
||||
[device]
|
||||
wifi.scan-rand-mac-address=${if cfg.wifi.scanRandMacAddress then "yes" else "no"}
|
||||
'';
|
||||
|
||||
/*
|
||||
@ -179,7 +184,27 @@ in {
|
||||
};
|
||||
|
||||
ethernet.macAddress = macAddressOpt;
|
||||
wifi.macAddress = macAddressOpt;
|
||||
|
||||
wifi = {
|
||||
macAddress = macAddressOpt;
|
||||
|
||||
powersave = mkOption {
|
||||
type = types.nullOr types.bool;
|
||||
default = null;
|
||||
description = ''
|
||||
Whether to enable Wi-Fi power saving.
|
||||
'';
|
||||
};
|
||||
|
||||
scanRandMacAddress = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to enable MAC address randomization of a Wi-Fi device
|
||||
during scanning.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
useDnsmasq = mkOption {
|
||||
type = types.bool;
|
||||
|
@ -8,9 +8,9 @@ let
|
||||
|
||||
stateDir = "/var/lib/unbound";
|
||||
|
||||
access = concatMapStrings (x: " access-control: ${x} allow\n") cfg.allowedAccess;
|
||||
access = concatMapStringsSep "\n " (x: "access-control: ${x} allow") cfg.allowedAccess;
|
||||
|
||||
interfaces = concatMapStrings (x: " interface: ${x}\n") cfg.interfaces;
|
||||
interfaces = concatMapStringsSep "\n " (x: "interface: ${x}") cfg.interfaces;
|
||||
|
||||
isLocalAddress = x: substring 0 3 x == "::1" || substring 0 9 x == "127.0.0.1";
|
||||
|
||||
|
@ -195,6 +195,7 @@ let
|
||||
description = "WireGuard Tunnel - ${name}";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
environment.DEVICE = name;
|
||||
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
|
@ -193,6 +193,11 @@ in
|
||||
theme = mkDefault "breeze";
|
||||
};
|
||||
|
||||
boot.plymouth = {
|
||||
theme = mkDefault "breeze";
|
||||
themePackages = mkDefault [ pkgs.breeze-plymouth ];
|
||||
};
|
||||
|
||||
security.pam.services.kde = { allowNullPassword = true; };
|
||||
|
||||
# Doing these one by one seems silly, but we currently lack a better
|
||||
|
@ -97,12 +97,26 @@ in
|
||||
moduleName="$(sed -n 's,ModuleName *= *,,p' ${themesEnv}/share/plymouth/themes/${cfg.theme}/${cfg.theme}.plymouth)"
|
||||
|
||||
mkdir -p $out/lib/plymouth/renderers
|
||||
cp ${plymouth}/lib/plymouth/{text,details,$moduleName}.so $out/lib/plymouth
|
||||
# module might come from a theme
|
||||
cp ${themesEnv}/lib/plymouth/{text,details,$moduleName}.so $out/lib/plymouth
|
||||
cp ${plymouth}/lib/plymouth/renderers/{drm,frame-buffer}.so $out/lib/plymouth/renderers
|
||||
|
||||
mkdir -p $out/share/plymouth/themes
|
||||
cp ${plymouth}/share/plymouth/plymouthd.defaults $out/share/plymouth
|
||||
cp -r ${themesEnv}/share/plymouth/themes/{text,details,${cfg.theme}} $out/share/plymouth/themes
|
||||
|
||||
# copy themes into working directory for patching
|
||||
mkdir themes
|
||||
# use -L to copy the directories proper, not the symlinks to them
|
||||
cp -r -L ${themesEnv}/share/plymouth/themes/{text,details,${cfg.theme}} themes
|
||||
|
||||
# patch out any attempted references to the theme or plymouth's themes directory
|
||||
chmod -R +w themes
|
||||
find themes -type f | while read file
|
||||
do
|
||||
sed -i "s,/nix/.*/share/plymouth/themes,$out/share/plymouth/themes,g" $file
|
||||
done
|
||||
|
||||
cp -r themes/* $out/share/plymouth/themes
|
||||
cp ${cfg.logo} $out/share/plymouth/logo.png
|
||||
'';
|
||||
|
||||
|
@ -596,6 +596,8 @@ in
|
||||
{ config, pkgs, ... }:
|
||||
{ services.postgresql.enable = true;
|
||||
services.postgresql.package = pkgs.postgresql96;
|
||||
|
||||
system.stateVersion = "17.03";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -270,6 +270,10 @@ in rec {
|
||||
tests.plasma5 = callTest tests/plasma5.nix {};
|
||||
tests.keymap = callSubTests tests/keymap.nix {};
|
||||
tests.initrdNetwork = callTest tests/initrd-network.nix {};
|
||||
tests.kafka_0_9 = callTest tests/kafka_0_9.nix {};
|
||||
tests.kafka_0_10 = callTest tests/kafka_0_10.nix {};
|
||||
tests.kafka_0_11 = callTest tests/kafka_0_11.nix {};
|
||||
tests.kafka_1_0 = callTest tests/kafka_1_0.nix {};
|
||||
tests.kernel-copperhead = callTest tests/kernel-copperhead.nix {};
|
||||
tests.kernel-latest = callTest tests/kernel-latest.nix {};
|
||||
tests.kernel-lts = callTest tests/kernel-lts.nix {};
|
||||
@ -306,6 +310,7 @@ in rec {
|
||||
#tests.panamax = hydraJob (import tests/panamax.nix { system = "x86_64-linux"; });
|
||||
tests.peerflix = callTest tests/peerflix.nix {};
|
||||
tests.postgresql = callSubTests tests/postgresql.nix {};
|
||||
tests.pgmanage = callTest tests/pgmanage.nix {};
|
||||
tests.postgis = callTest tests/postgis.nix {};
|
||||
#tests.pgjwt = callTest tests/pgjwt.nix {};
|
||||
tests.printing = callTest tests/printing.nix {};
|
||||
@ -329,7 +334,7 @@ in rec {
|
||||
tests.wordpress = callTest tests/wordpress.nix {};
|
||||
tests.xfce = callTest tests/xfce.nix {};
|
||||
tests.xmonad = callTest tests/xmonad.nix {};
|
||||
|
||||
tests.zookeeper = callTest tests/zookeeper.nix {};
|
||||
|
||||
/* Build a bunch of typical closures so that Hydra can keep track of
|
||||
the evolution of closure sizes. */
|
||||
|
@ -9,9 +9,57 @@ import ./make-test.nix ({ pkgs, ...} : {
|
||||
nodes = {
|
||||
gitlab = { config, pkgs, ... }: {
|
||||
virtualisation.memorySize = 768;
|
||||
services.gitlab.enable = true;
|
||||
services.gitlab.databasePassword = "gitlab";
|
||||
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
virtualHosts = {
|
||||
"localhost" = {
|
||||
locations."/".proxyPass = "http://unix:/run/gitlab/gitlab-workhorse.socket";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.gitlab.serviceConfig.TimeoutStartSec = "10min";
|
||||
services.gitlab = {
|
||||
enable = true;
|
||||
databasePassword = "dbPassword";
|
||||
secrets = {
|
||||
secret = "secret";
|
||||
otp = "otpsecret";
|
||||
db = "dbsecret";
|
||||
|
||||
# nix-shell -p openssl --run "openssl genrsa 2048"
|
||||
jws = ''
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEA13/qEio76OWUtWO0WIz9lWnsTWOU8Esv4sQHDq9PCEFsLt21
|
||||
PAXrlWhLjjWcxGfsrDwnh7YErGHYL62BMSxMdFJolaknlQK/O/V8UETDe45VoHM+
|
||||
Znk270RfUcfYFgiihnXUZXVmL0om9TsQSk646wCcjCY9LxtxUyKNhvT7KjgYw2aX
|
||||
z34aw7M+Js3T2p1TjZPSC82GtmtKkJEKFMi5EjprLTDE7EdcUzr9Xuw+kQ+gRm9k
|
||||
7FE+JQqSoprwE3Q0v2OAn3UhLMgg0gNFRnsc5l6IAshDzV+H22RPqKKlJjVjjfPY
|
||||
0TQSvYLVApigHbDPH0BoCXfjFfQazbbP3OUHrwIDAQABAoIBAQCMU+tkcMQaYIV5
|
||||
qLdjgkwO467QpivyXcOM8wF1eosIYTHFQvIlZ+WEoSmyLQ8shlADyBgls01Pw1c3
|
||||
lNAv6RzQEmmwKzpvOh61OKH+0whIiOMRXHoh2IUBQZCgfHYlwvGyhUAN4WjtGmhM
|
||||
AG4XNTQNM5S9Xpkw97nP3Qwz+YskbbkrfqtCEVy9ro+4nhbjqPsuO3adbnkva4zR
|
||||
cyurRhrHgHU6LPjn5NHnHH4qw2faY2oAsL8pmpkTbO5IqWDvOcbjNfjVPgVoq26O
|
||||
bbaa1qs4nmc80qQgMjRPJef535xyf3eLsSlDvpf6O8sPrJzVR1zaqEqixpQCZDac
|
||||
+kRiSBrhAoGBAOwHiq0PuyJh6VzBu7ybqX6+gF/wA4Jkwzx6mbfaBgurvU1aospp
|
||||
kisIonAkxSbxllZMnjbkShZEdATYKeT9o5NEhnU4YnHfc5bJZbiWOZAzYGLcY7g8
|
||||
vDQ31pBItyY4pFgPbSpNlbUvUsoPVJ45RasRADDTNCzMzdjFQQXst2V9AoGBAOm7
|
||||
sSpzYfFPLEAhieAkuhtbsX58Boo46djiKVfzGftfp6F9aHTOfzGORU5jrZ16mSbS
|
||||
qkkC6BEFrATX2051dzzXC89fWoJYALrsffE5I3KlKXsCAWSnCP1MMxOfH+Ls61Mr
|
||||
7pK/LKfvJt53mUH4jIdbmmFUDwbg18oBEH+x9PmbAoGAS/+JqXu9N67rIxDGUE6W
|
||||
3tacI0f2+U9Uhe67/DTZaXyc8YFTlXU0uWKIWy+bw5RaYeM9tlL/f/f+m2i25KK+
|
||||
vrZ7zNag7CWU5GJovGyykDnauTpZaYM03mN0VPT08/uc/zXIYqyknbhlIeaZynCK
|
||||
fDB3LUF0NVCknz20WCIGU0kCgYEAkxY0ZXx61Dp4pFr2wwEZxQGs7uXpz64FKyEX
|
||||
12r6nMATY4Lh6y/Px0W6w5vis8lk+5Ny6cNUevHQ0LNuJS+yu6ywl+1vrbrnqroM
|
||||
f3LvpcPeGLSoX8jl1VDQi7aFgG6LoKly1xJLbdsH4NPutB9PgBbbTghx9GgmI88L
|
||||
rPA2M6UCgYBOmkYJocNgxg6B1/n4Tb9fN1Q/XuJrFDE6NxVUoke+IIyMPRH7FC3m
|
||||
VMYzu+b7zTVJjaBb1cmJemxl/xajziWDofJYPefhdbOVU7HXtmJFY0IG3pVxU1zW
|
||||
3bmDj5QAtCUDpuuNa6GEIT0YR4+D/V7o3DmlZ0tVIwKJmVJoQ2f5dw==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@ -19,6 +67,6 @@ import ./make-test.nix ({ pkgs, ...} : {
|
||||
$gitlab->start();
|
||||
$gitlab->waitForUnit("gitlab.service");
|
||||
$gitlab->waitForUnit("gitlab-sidekiq.service");
|
||||
$gitlab->waitUntilSucceeds("curl http://localhost:8080/users/sign_in");
|
||||
$gitlab->waitUntilSucceeds("curl http://localhost:80/users/sign_in");
|
||||
'';
|
||||
})
|
||||
|
48
nixos/tests/kafka_0_10.nix
Normal file
48
nixos/tests/kafka_0_10.nix
Normal file
@ -0,0 +1,48 @@
|
||||
import ./make-test.nix ({ pkgs, lib, ... } :
|
||||
let
|
||||
kafkaPackage = pkgs.apacheKafka_0_10;
|
||||
in {
|
||||
name = "kafka_0_10";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ nequissimus ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
zookeeper1 = { config, ... }: {
|
||||
services.zookeeper = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 2181 ];
|
||||
};
|
||||
kafka = { config, ... }: {
|
||||
services.apache-kafka = {
|
||||
enable = true;
|
||||
extraProperties = ''
|
||||
offsets.topic.replication.factor = 1
|
||||
'';
|
||||
package = kafkaPackage;
|
||||
zookeeper = "zookeeper1:2181";
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 9092 ];
|
||||
virtualisation.memorySize = 2048;
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
startAll;
|
||||
|
||||
$zookeeper1->waitForUnit("zookeeper");
|
||||
$zookeeper1->waitForUnit("network.target");
|
||||
$zookeeper1->waitForOpenPort(2181);
|
||||
|
||||
$kafka->waitForUnit("apache-kafka");
|
||||
$kafka->waitForUnit("network.target");
|
||||
$kafka->waitForOpenPort(9092);
|
||||
|
||||
$kafka->waitUntilSucceeds("${kafkaPackage}/bin/kafka-topics.sh --create --zookeeper zookeeper1:2181 --partitions 1 --replication-factor 1 --topic testtopic");
|
||||
$kafka->mustSucceed("echo 'test 1' | ${kafkaPackage}/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testtopic");
|
||||
$kafka->mustSucceed("${kafkaPackage}/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopic --from-beginning --max-messages 1 | grep 'test 1'");
|
||||
'';
|
||||
})
|
48
nixos/tests/kafka_0_11.nix
Normal file
48
nixos/tests/kafka_0_11.nix
Normal file
@ -0,0 +1,48 @@
|
||||
import ./make-test.nix ({ pkgs, lib, ... } :
|
||||
let
|
||||
kafkaPackage = pkgs.apacheKafka_0_11;
|
||||
in {
|
||||
name = "kafka_0_11";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ nequissimus ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
zookeeper1 = { config, ... }: {
|
||||
services.zookeeper = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 2181 ];
|
||||
};
|
||||
kafka = { config, ... }: {
|
||||
services.apache-kafka = {
|
||||
enable = true;
|
||||
extraProperties = ''
|
||||
offsets.topic.replication.factor = 1
|
||||
'';
|
||||
package = kafkaPackage;
|
||||
zookeeper = "zookeeper1:2181";
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 9092 ];
|
||||
virtualisation.memorySize = 2048;
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
startAll;
|
||||
|
||||
$zookeeper1->waitForUnit("zookeeper");
|
||||
$zookeeper1->waitForUnit("network.target");
|
||||
$zookeeper1->waitForOpenPort(2181);
|
||||
|
||||
$kafka->waitForUnit("apache-kafka");
|
||||
$kafka->waitForUnit("network.target");
|
||||
$kafka->waitForOpenPort(9092);
|
||||
|
||||
$kafka->waitUntilSucceeds("${kafkaPackage}/bin/kafka-topics.sh --create --zookeeper zookeeper1:2181 --partitions 1 --replication-factor 1 --topic testtopic");
|
||||
$kafka->mustSucceed("echo 'test 1' | ${kafkaPackage}/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testtopic");
|
||||
$kafka->mustSucceed("${kafkaPackage}/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopic --from-beginning --max-messages 1 | grep 'test 1'");
|
||||
'';
|
||||
})
|
48
nixos/tests/kafka_0_9.nix
Normal file
48
nixos/tests/kafka_0_9.nix
Normal file
@ -0,0 +1,48 @@
|
||||
import ./make-test.nix ({ pkgs, lib, ... } :
|
||||
let
|
||||
kafkaPackage = pkgs.apacheKafka_0_9;
|
||||
in {
|
||||
name = "kafka_0_9";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ nequissimus ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
zookeeper1 = { config, ... }: {
|
||||
services.zookeeper = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 2181 ];
|
||||
};
|
||||
kafka = { config, ... }: {
|
||||
services.apache-kafka = {
|
||||
enable = true;
|
||||
extraProperties = ''
|
||||
offsets.topic.replication.factor = 1
|
||||
'';
|
||||
package = kafkaPackage;
|
||||
zookeeper = "zookeeper1:2181";
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 9092 ];
|
||||
virtualisation.memorySize = 2048;
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
startAll;
|
||||
|
||||
$zookeeper1->waitForUnit("zookeeper");
|
||||
$zookeeper1->waitForUnit("network.target");
|
||||
$zookeeper1->waitForOpenPort(2181);
|
||||
|
||||
$kafka->waitForUnit("apache-kafka");
|
||||
$kafka->waitForUnit("network.target");
|
||||
$kafka->waitForOpenPort(9092);
|
||||
|
||||
$kafka->waitUntilSucceeds("${kafkaPackage}/bin/kafka-topics.sh --create --zookeeper zookeeper1:2181 --partitions 1 --replication-factor 1 --topic testtopic");
|
||||
$kafka->mustSucceed("echo 'test 1' | ${kafkaPackage}/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testtopic");
|
||||
$kafka->mustSucceed("${kafkaPackage}/bin/kafka-console-consumer.sh --zookeeper zookeeper1:2181 --topic testtopic --from-beginning --max-messages 1 | grep 'test 1'");
|
||||
'';
|
||||
})
|
48
nixos/tests/kafka_1_0.nix
Normal file
48
nixos/tests/kafka_1_0.nix
Normal file
@ -0,0 +1,48 @@
|
||||
import ./make-test.nix ({ pkgs, lib, ... } :
|
||||
let
|
||||
kafkaPackage = pkgs.apacheKafka_1_0;
|
||||
in {
|
||||
name = "kafka_1_0";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ nequissimus ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
zookeeper1 = { config, ... }: {
|
||||
services.zookeeper = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 2181 ];
|
||||
};
|
||||
kafka = { config, ... }: {
|
||||
services.apache-kafka = {
|
||||
enable = true;
|
||||
extraProperties = ''
|
||||
offsets.topic.replication.factor = 1
|
||||
'';
|
||||
package = kafkaPackage;
|
||||
zookeeper = "zookeeper1:2181";
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 9092 ];
|
||||
virtualisation.memorySize = 2048;
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
startAll;
|
||||
|
||||
$zookeeper1->waitForUnit("zookeeper");
|
||||
$zookeeper1->waitForUnit("network.target");
|
||||
$zookeeper1->waitForOpenPort(2181);
|
||||
|
||||
$kafka->waitForUnit("apache-kafka");
|
||||
$kafka->waitForUnit("network.target");
|
||||
$kafka->waitForOpenPort(9092);
|
||||
|
||||
$kafka->waitUntilSucceeds("${kafkaPackage}/bin/kafka-topics.sh --create --zookeeper zookeeper1:2181 --partitions 1 --replication-factor 1 --topic testtopic");
|
||||
$kafka->mustSucceed("echo 'test 1' | ${kafkaPackage}/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testtopic");
|
||||
$kafka->mustSucceed("${kafkaPackage}/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopic --from-beginning --max-messages 1 | grep 'test 1'");
|
||||
'';
|
||||
})
|
39
nixos/tests/pgmanage.nix
Normal file
39
nixos/tests/pgmanage.nix
Normal file
@ -0,0 +1,39 @@
|
||||
import ./make-test.nix ({ pkgs, ... } :
|
||||
let
|
||||
role = "test";
|
||||
password = "secret";
|
||||
conn = "local";
|
||||
in
|
||||
{
|
||||
name = "pgmanage";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ basvandijk ];
|
||||
};
|
||||
nodes = {
|
||||
one = { config, pkgs, ... }: {
|
||||
services = {
|
||||
postgresql = {
|
||||
enable = true;
|
||||
initialScript = pkgs.writeText "pg-init-script" ''
|
||||
CREATE ROLE ${role} SUPERUSER LOGIN PASSWORD '${password}';
|
||||
'';
|
||||
};
|
||||
pgmanage = {
|
||||
enable = true;
|
||||
connections = {
|
||||
"${conn}" = "hostaddr=127.0.0.1 port=${toString config.services.postgresql.port} dbname=postgres";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
startAll;
|
||||
$one->waitForUnit("default.target");
|
||||
$one->requireActiveUnit("pgmanage.service");
|
||||
|
||||
# Test if we can log in.
|
||||
$one->waitUntilSucceeds("curl 'http://localhost:8080/pgmanage/auth' --data 'action=login&connname=${conn}&username=${role}&password=${password}' --fail");
|
||||
'';
|
||||
})
|
28
nixos/tests/zookeeper.nix
Normal file
28
nixos/tests/zookeeper.nix
Normal file
@ -0,0 +1,28 @@
|
||||
import ./make-test.nix ({ pkgs, ...} : {
|
||||
name = "zookeeper";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ nequissimus ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
server = { pkgs, config, ... }: {
|
||||
services.zookeeper = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 2181 ];
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
startAll;
|
||||
|
||||
$server->waitForUnit("zookeeper");
|
||||
$server->waitForUnit("network.target");
|
||||
$server->waitForOpenPort(2181);
|
||||
|
||||
$server->waitUntilSucceeds("${pkgs.zookeeper}/bin/zkCli.sh -server localhost:2181 create /foo bar");
|
||||
$server->waitUntilSucceeds("${pkgs.zookeeper}/bin/zkCli.sh -server localhost:2181 set /foo hello");
|
||||
$server->waitUntilSucceeds("${pkgs.zookeeper}/bin/zkCli.sh -server localhost:2181 get /foo | grep hello");
|
||||
'';
|
||||
})
|
@ -7,13 +7,13 @@ with stdenv.lib;
|
||||
stdenv.mkDerivation rec {
|
||||
|
||||
name = "bitcoin" + (toString (optional (!withGui) "d")) + "-abc-" + version;
|
||||
version = "0.15.0";
|
||||
version = "0.16.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bitcoin-ABC";
|
||||
repo = "bitcoin-abc";
|
||||
rev = "v${version}";
|
||||
sha256 = "1fygn6cc99iasg5g5jyps5ps873hfnn4ln4hsmcwlwiqd591qxyv";
|
||||
sha256 = "0wwcgvd8zgl5qh6z1sa3kdv1lr9cwwbs9j2gaad5mqr9sfwbbxdh";
|
||||
};
|
||||
|
||||
patches = [ ./fix-bitcoin-qt-build.patch ];
|
||||
|
@ -7,12 +7,12 @@
|
||||
with stdenv.lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "2.1.3";
|
||||
version = "2.2.0";
|
||||
name = "audacity-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/audacity/audacity/archive/Audacity-${version}.tar.gz";
|
||||
sha256 = "11mx7gb4dbqrgfp7hm0154x3m76ddnmhf2675q5zkxn7jc5qfc6b";
|
||||
sha256 = "09xpr4bjnainz1xmc35v3qg3dadjr9wv8bmn1p4y91aqyihnhjry";
|
||||
};
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
|
@ -1,11 +1,7 @@
|
||||
{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, glib, ncurses
|
||||
, mpd_clientlib, gettext }:
|
||||
|
||||
let
|
||||
rpath = stdenv.lib.makeLibraryPath [
|
||||
glib ncurses mpd_clientlib
|
||||
];
|
||||
in stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation rec {
|
||||
name = "ncmpc-${version}";
|
||||
version = "0.28";
|
||||
|
||||
@ -19,12 +15,6 @@ in stdenv.mkDerivation rec {
|
||||
buildInputs = [ glib ncurses mpd_clientlib ];
|
||||
nativeBuildInputs = [ meson ninja pkgconfig gettext ];
|
||||
|
||||
postFixup = ''
|
||||
for elf in "$out"/bin/*; do
|
||||
patchelf --set-rpath '${rpath}':"$out/lib" "$elf"
|
||||
done
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Curses-based interface for MPD (music player daemon)";
|
||||
homepage = http://www.musicpd.org/clients/ncmpc/;
|
||||
|
@ -1,64 +1,44 @@
|
||||
{ stdenv, fetchurl, python2Packages, intltool
|
||||
, gst-python, withGstPlugins ? false, gst-plugins-base ? null
|
||||
, gst-plugins-good ? null, gst-plugins-ugly ? null, gst-plugins-bad ? null }:
|
||||
{ stdenv, fetchurl, python2Packages, wrapGAppsHook, gettext, intltool, libsoup, gnome3,
|
||||
tag ? "",
|
||||
gst_all_1, withGstPlugins ? true,
|
||||
xineBackend ? false, xineLib,
|
||||
withDbusPython ? false, withPyInotify ? false, withMusicBrainzNgs ? false, withPahoMqtt ? false,
|
||||
webkitgtk ? null,
|
||||
keybinder3 ? null, gtksourceview ? null, libmodplug ? null, kakasi ? null, libappindicator-gtk3 ? null }:
|
||||
|
||||
assert withGstPlugins -> gst-plugins-base != null
|
||||
|| gst-plugins-good != null
|
||||
|| gst-plugins-ugly != null
|
||||
|| gst-plugins-bad != null;
|
||||
|
||||
let
|
||||
version = "2.6.3";
|
||||
inherit (python2Packages) buildPythonApplication python mutagen pygtk pygobject2 dbus-python;
|
||||
in buildPythonApplication {
|
||||
# call the package quodlibet and just quodlibet
|
||||
name = "quodlibet${stdenv.lib.optionalString (!withGstPlugins) "-without-gst-plugins"}-${version}";
|
||||
let optionals = stdenv.lib.optionals; in
|
||||
python2Packages.buildPythonApplication rec {
|
||||
name = "quodlibet${tag}-${version}";
|
||||
version = "3.9.1";
|
||||
|
||||
# XXX, tests fail
|
||||
doCheck = false;
|
||||
|
||||
srcs = [
|
||||
(fetchurl {
|
||||
url = "https://bitbucket.org/lazka/quodlibet-files/raw/default/releases/quodlibet-${version}.tar.gz";
|
||||
sha256 = "0ilasi4b0ay8r6v6ba209wsm80fq2nmzigzc5kvphrk71jwypx6z";
|
||||
})
|
||||
(fetchurl {
|
||||
url = "https://bitbucket.org/lazka/quodlibet-files/raw/default/releases/quodlibet-plugins-${version}.tar.gz";
|
||||
sha256 = "1rv08rhdjad8sjhplqsspcf4vkazgkxyshsqmbfbrrk5kvv57ybc";
|
||||
})
|
||||
];
|
||||
src = fetchurl {
|
||||
url = "https://github.com/quodlibet/quodlibet/releases/download/release-${version}/quodlibet-${version}.tar.gz";
|
||||
sha256 = "d2b42df5d439213973dc97149fddc779a6c90cec389c24baf1c0bdcc39ffe591";
|
||||
};
|
||||
|
||||
preConfigure = ''
|
||||
# TODO: for now don't a apply gdist overrides, will be needed for shipping icons, gtk, etc
|
||||
sed -i /distclass/d setup.py
|
||||
'';
|
||||
nativeBuildInputs = [ wrapGAppsHook gettext intltool ];
|
||||
# ++ (with python2Packages; [ pytest pyflakes pycodestyle polib ]); # test deps
|
||||
|
||||
sourceRoot = "quodlibet-${version}";
|
||||
buildInputs = [ gnome3.defaultIconTheme libsoup webkitgtk keybinder3 gtksourceview libmodplug libappindicator-gtk3 kakasi ]
|
||||
++ (if xineBackend then [ xineLib ] else with gst_all_1;
|
||||
[ gstreamer gst-plugins-base ] ++ optionals withGstPlugins [ gst-plugins-good gst-plugins-ugly gst-plugins-bad ]);
|
||||
|
||||
postUnpack = ''
|
||||
# the patch searches for plugins in directory ../plugins
|
||||
# so link the appropriate directory there
|
||||
ln -sf quodlibet-plugins-${version} plugins
|
||||
'';
|
||||
propagatedBuildInputs = with python2Packages;
|
||||
[ pygobject3 pycairo mutagen pygtk gst-python feedparser faulthandler futures ]
|
||||
++ optionals withDbusPython [ dbus-python ]
|
||||
++ optionals withPyInotify [ pyinotify ]
|
||||
++ optionals withMusicBrainzNgs [ musicbrainzngs ]
|
||||
++ optionals stdenv.isDarwin [ pyobjc ]
|
||||
++ optionals withPahoMqtt [ paho-mqtt ];
|
||||
|
||||
patches = [ ./quodlibet-package-plugins.patch ];
|
||||
|
||||
buildInputs = stdenv.lib.optionals withGstPlugins [
|
||||
gst-plugins-base gst-plugins-good gst-plugins-ugly gst-plugins-bad
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
mutagen pygtk pygobject2 dbus-python gst-python intltool
|
||||
];
|
||||
|
||||
postInstall = stdenv.lib.optionalString withGstPlugins ''
|
||||
# Wrap quodlibet so it finds the GStreamer plug-ins
|
||||
wrapProgram "$out/bin/quodlibet" --prefix \
|
||||
GST_PLUGIN_SYSTEM_PATH ":" "$GST_PLUGIN_SYSTEM_PATH" \
|
||||
'';
|
||||
makeWrapperArgs = optionals (kakasi != null) [ "--prefix PATH : ${kakasi}/bin" ];
|
||||
|
||||
meta = {
|
||||
description = "GTK+-based audio player written in Python, using the Mutagen tagging library";
|
||||
license = stdenv.lib.licenses.gpl2;
|
||||
|
||||
longDescription = ''
|
||||
Quod Libet is a GTK+-based audio player written in Python, using
|
||||
@ -74,7 +54,7 @@ in buildPythonApplication {
|
||||
& internet radio, and all major audio formats.
|
||||
'';
|
||||
|
||||
maintainers = [ stdenv.lib.maintainers.coroa ];
|
||||
maintainers = with stdenv.lib.maintainers; [ coroa sauyon ];
|
||||
homepage = https://quodlibet.readthedocs.io/en/latest/;
|
||||
};
|
||||
}
|
||||
|
@ -1,18 +0,0 @@
|
||||
diff -Naur quodlibet-2.5.orig/setup.py quodlibet-2.5.new/setup.py
|
||||
--- quodlibet-2.5.orig/setup.py 2012-12-19 08:47:41.000000000 +0000
|
||||
+++ quodlibet-2.5.new/setup.py 2013-04-22 19:27:07.152631051 +0000
|
||||
@@ -337,5 +338,14 @@
|
||||
}
|
||||
}
|
||||
})
|
||||
+ else:
|
||||
+ from os.path import join
|
||||
+
|
||||
+ data_files = []
|
||||
+ for type in ["playorder", "songsmenu", "editing", "events", "gstreamer"]:
|
||||
+ data_files.append((join('quodlibet', 'plugins', type),
|
||||
+ glob.glob(join('..', 'plugins', type, '*.py'))))
|
||||
+ setup_kwargs.update({ 'data_files': data_files });
|
||||
+
|
||||
setup(**setup_kwargs)
|
||||
|
@ -7,15 +7,15 @@
|
||||
with stdenv.lib;
|
||||
|
||||
let
|
||||
ver_branch = "1.22";
|
||||
version = "1.22.0";
|
||||
ver_branch = "1.24";
|
||||
version = "1.24.0";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "lightdm-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "${meta.homepage}/${ver_branch}/${version}/+download/${name}.tar.xz";
|
||||
sha256 = "0a5bvfl2h7r873al6q7c819h0kg564k9fh51rl6489z6lyvazfg4";
|
||||
sha256 = "18j33bm54i8k7ncxcs69zqi4105s62n58jrydqn3ikrb71s9nl6d";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig intltool ];
|
||||
|
@ -32,7 +32,7 @@ let
|
||||
build_dir=$PWD
|
||||
cd $TMPDIR
|
||||
|
||||
local_path=$(basename ${store_path} .zip | sed -e 's/^[a-z0-9]*-//')
|
||||
local_path=$(basename ${url} .zip)
|
||||
|
||||
cp -r ${store_path} $local_path
|
||||
chmod u+rwX -R $local_path
|
||||
|
@ -3,18 +3,18 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "typora-${version}";
|
||||
version = "0.9.31";
|
||||
version = "0.9.38";
|
||||
|
||||
src =
|
||||
if stdenv.system == "x86_64-linux" then
|
||||
fetchurl {
|
||||
url = "https://www.typora.io/linux/typora_${version}_amd64.deb";
|
||||
sha256 = "786b5164d9c63ecc23eb427c5ff393285ce8fd540c5bfdd5c1464655fac87a42";
|
||||
sha256 = "bf6a069c5da4a7dc289bdb3c8d27e7a81daeaee99488d4d3b512c6b673780557";
|
||||
}
|
||||
else
|
||||
fetchurl {
|
||||
url = "https://www.typora.io/linux/typora_${version}_i386.deb";
|
||||
sha256 = "a8fe53f8984d9f8c4e06c14affbb616be58a91cd2b475b9681fb18a6e21930d1";
|
||||
sha256 = "edd092e96ebf69503cf6b39b77a61ec5e3185f8a1447da0bed063fa11861c1b9";
|
||||
}
|
||||
;
|
||||
|
||||
@ -57,8 +57,10 @@ stdenv.mkDerivation rec {
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
dpkg -x $src $out
|
||||
cp -av $out/usr/* $out
|
||||
mv $out/usr/bin $out
|
||||
mv $out/usr/share $out
|
||||
rm $out/bin/typora
|
||||
rmdir $out/usr
|
||||
|
||||
# Otherwise it looks "suspicious"
|
||||
chmod -R g-w $out
|
||||
@ -81,9 +83,8 @@ stdenv.mkDerivation rec {
|
||||
meta = with stdenv.lib; {
|
||||
description = "A minimal Markdown reading & writing app";
|
||||
homepage = https://typora.io;
|
||||
license = licenses.free;
|
||||
maintainers = with stdenv.lib.maintainers; [ jensbin ];
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ jensbin ];
|
||||
platforms = [ "x86_64-linux" "i686-linux" ];
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -1,12 +1,12 @@
|
||||
{ lib, fetchFromGitHub }:
|
||||
rec {
|
||||
version = "8.0.1150";
|
||||
version = "8.0.1257";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vim";
|
||||
repo = "vim";
|
||||
rev = "v${version}";
|
||||
sha256 = "1k1qkmb2jbymqikrp99q1yjagdf508xzabrw7b08dlh926b2v23j";
|
||||
sha256 = "1y4c7wn5gr7n4c2ni36kadr26aldydxlf06yj7nsmw22ywwg78ig";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
@ -14,8 +14,8 @@ let
|
||||
else throw "ImageMagick is not supported on this platform.";
|
||||
|
||||
cfg = {
|
||||
version = "7.0.7-8";
|
||||
sha256 = "0h2jbaxrxrmdcr5crf1d93sc60v4zfqrrl3w79md6h11wf57ksbp";
|
||||
version = "7.0.7-9";
|
||||
sha256 = "0p0879chcfrghcamwgxxcmaaj04xv0z91ris7hxi37qdw8c7836w";
|
||||
patches = [];
|
||||
};
|
||||
in
|
||||
|
@ -14,8 +14,8 @@ let
|
||||
else throw "ImageMagick is not supported on this platform.";
|
||||
|
||||
cfg = {
|
||||
version = "6.9.9-20";
|
||||
sha256 = "1pz8clmhnq26vdsp1j21czq3nfbvrmfdz30k7na7w4vh7wqxsrx1";
|
||||
version = "6.9.9-21";
|
||||
sha256 = "0241g3c207rawn61bz8rc5gz55k5mi2b0n3zlwa0jv9xczlkd6a9";
|
||||
patches = [];
|
||||
}
|
||||
# Freeze version on mingw so we don't need to port the patch too often.
|
||||
|
@ -6,11 +6,11 @@ with stdenv.lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "feh-${version}";
|
||||
version = "2.21";
|
||||
version = "2.22";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://feh.finalrewind.org/${name}.tar.bz2";
|
||||
sha256 = "0azgpr4al2pi4858z4xh4lfz84cvzxw3n426fn7rz6cdj34q212j";
|
||||
sha256 = "0yqcczb9c126zgfvjq2fpzqz0rg16yad8mfr3gryxwlbymy2cmxj";
|
||||
};
|
||||
|
||||
outputs = [ "out" "man" "doc" ];
|
||||
|
@ -9,11 +9,11 @@
|
||||
|
||||
mkDerivation rec {
|
||||
name = "krita-${version}";
|
||||
version = "3.2.1";
|
||||
version = "3.3.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://download.kde.org/stable/krita/${version}/${name}.tar.gz";
|
||||
sha256 = "0fafy5ggplgq2rz85sqa42vmkzs2r9dq47qfrbnn2n6pfzkcw1pg";
|
||||
url = https://download.kde.org/stable/krita/3.3.2/krita-3.3.2.1.tar.xz;
|
||||
sha256 = "0i3l27cfi1h486m74xf4ynk0pwx32xaqraa91a0g1bpj1jxf2mg5";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake extra-cmake-modules ];
|
||||
|
@ -1 +1 @@
|
||||
WGET_ARGS=( https://download.kde.org/stable/applications/17.08.1/ -A '*.tar.xz' )
|
||||
WGET_ARGS=( https://download.kde.org/stable/applications/17.08.2/ -A '*.tar.xz' )
|
||||
|
File diff suppressed because it is too large
Load Diff
33
pkgs/applications/misc/dump1090/default.nix
Normal file
33
pkgs/applications/misc/dump1090/default.nix
Normal file
@ -0,0 +1,33 @@
|
||||
{ stdenv, fetchFromGitHub, pkgconfig, libusb, rtl-sdr }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "dump1090-${version}";
|
||||
version = "2014-10-31";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "MalcolmRobb";
|
||||
repo = "dump1090";
|
||||
rev = "bff92c4ad772a0a8d433f788d39dae97e00e4dbe";
|
||||
sha256 = "06aaj9gpz5v4qzvnp8xf18wdfclp0jvn3hflls79ly46gz2dh9hy";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
|
||||
buildInputs = [ libusb rtl-sdr ];
|
||||
|
||||
makeFlags = [ "PREFIX=$out" ];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin $out/share
|
||||
cp -v dump1090 $out/bin/dump1090
|
||||
cp -vr public_html $out/share/dump1090
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A simple Mode S decoder for RTLSDR devices";
|
||||
homepage = https://github.com/MalcolmRobb/dump1090;
|
||||
license = licenses.bsd3;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ earldouglas ];
|
||||
};
|
||||
}
|
@ -1,11 +1,12 @@
|
||||
{ stdenv, fetchurl }:
|
||||
{ stdenv, fetchipfs }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "hello-2.10";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnu/hello/${name}.tar.gz";
|
||||
sha256 = "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i";
|
||||
src = fetchipfs {
|
||||
url = "https://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz";
|
||||
ipfs = "QmWyj65ak3wd8kG2EvPCXKd6Tij15m4SwJz6g2yG2rQ7w8";
|
||||
sha256 = "1im1gglfm4k10bh4mdaqzmx3lm3kivnsmxrvl6vyvmfqqzljq75l";
|
||||
};
|
||||
|
||||
doCheck = true;
|
||||
|
64
pkgs/applications/misc/hubstaff/default.nix
Normal file
64
pkgs/applications/misc/hubstaff/default.nix
Normal file
@ -0,0 +1,64 @@
|
||||
{ stdenv, fetchurl, unzip, makeWrapper, libX11, zlib, libSM, libICE, libXext
|
||||
, freetype, libXrender, fontconfig, libXft, libXinerama, libnotify, glib
|
||||
, gtk3, libappindicator-gtk3, curl }:
|
||||
|
||||
let
|
||||
|
||||
version = "1.2.14-36df5e3";
|
||||
|
||||
rpath = stdenv.lib.makeLibraryPath
|
||||
[ libX11 zlib libSM libICE libXext freetype libXrender fontconfig libXft
|
||||
libXinerama stdenv.cc.cc.lib libnotify glib gtk3 libappindicator-gtk3
|
||||
curl ];
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "hubstaff-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://hubstaff-production.s3.amazonaws.com/downloads/HubstaffClient/Builds/Release/${version}/Hubstaff-${version}.sh";
|
||||
sha256 = "0yzhxk9zppj94llnf8naa6ca61f7c8jaj6b1m25zffnnz37m1sdb";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ unzip makeWrapper ];
|
||||
|
||||
unpackCmd = ''
|
||||
# MojoSetups have a ZIP file at the end. ZIP’s magic string is
|
||||
# most often PK\x03\x04. This *should* work for future updates,
|
||||
# but feel free to come up with something more reasonable.
|
||||
dataZipOffset=$(grep --max-count=1 --byte-offset --only-matching --text $'PK\x03\x04' $curSrc | cut -d: -f1)
|
||||
dd bs=$dataZipOffset skip=1 if=$curSrc of=data.zip 2>/dev/null
|
||||
unzip -q data.zip "data/*"
|
||||
rm data.zip
|
||||
'';
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
# TODO: handle 32-bit arch?
|
||||
rm -r x86
|
||||
|
||||
opt=$out/opt/hubstaff
|
||||
mkdir -p $out/bin $opt
|
||||
cp -r . $opt/
|
||||
|
||||
prog=$opt/x86_64/HubstaffClient.bin.x86_64
|
||||
|
||||
patchelf --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) $prog
|
||||
wrapProgram $prog --prefix LD_LIBRARY_PATH : ${rpath}
|
||||
|
||||
ln -s $prog $out/bin/HubstaffClient
|
||||
|
||||
# Why is this needed? SEGV otherwise.
|
||||
ln -s $opt/data/resources $opt/x86_64/resources
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Time tracking software";
|
||||
homepage = https://hubstaff.com/;
|
||||
license = licenses.unfree;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
maintainers = [ maintainers.michalrus ];
|
||||
};
|
||||
}
|
33
pkgs/applications/misc/ipmicfg/default.nix
Normal file
33
pkgs/applications/misc/ipmicfg/default.nix
Normal file
@ -0,0 +1,33 @@
|
||||
{ stdenv, fetchzip }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "ipmicfg-${version}";
|
||||
version = "1.27.0";
|
||||
buildVersion = "170620";
|
||||
|
||||
src = fetchzip {
|
||||
url = "ftp://ftp.supermicro.com/utility/IPMICFG/IPMICFG_${version}_build.${buildVersion}.zip";
|
||||
sha256 = "0jr2vih4hzymb62mbqyykwcrjhbhazf6wr1g0cq8ji586i3z3vw5";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p "$out/bin" "$out/opt/ipmicfg"
|
||||
cp Linux/64bit/* "$out/opt/ipmicfg"
|
||||
|
||||
patchelf "$out/opt/ipmicfg/IPMICFG-Linux.x86_64" \
|
||||
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
--set-rpath "${stdenv.lib.makeLibraryPath [ stdenv.cc.cc ]}"
|
||||
|
||||
ln -s "$out/opt/ipmicfg/IPMICFG-Linux.x86_64" "$out/bin/ipmicfg"
|
||||
'';
|
||||
|
||||
dontPatchShebangs = true; # There are no scripts and it complains about null bytes.
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Supermicro IPMI configuration tool";
|
||||
homepage = "http://www.supermicro.com/products/nfo/ipmi.cfm";
|
||||
license = licenses.unfree;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
maintainers = with maintainers; [ sorki ];
|
||||
};
|
||||
}
|
52
pkgs/applications/misc/masterpdfeditor/default.nix
Normal file
52
pkgs/applications/misc/masterpdfeditor/default.nix
Normal file
@ -0,0 +1,52 @@
|
||||
{ stdenv, fetchurl, glibc, sane-backends, qtbase, qtsvg, libXext, libX11, libXdmcp, libXau, libxcb }:
|
||||
let
|
||||
version = "4.3.61";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "masterpdfeditor-${version}";
|
||||
src = fetchurl {
|
||||
url = "http://get.code-industry.net/public/master-pdf-editor-${version}_qt5.amd64.tar.gz";
|
||||
sha256 = "1g6mx8nch6ypf78h6xsb673wim19wn5ni5840armzg0pvi3sfknm";
|
||||
};
|
||||
libPath = stdenv.lib.makeLibraryPath [
|
||||
stdenv.cc.cc
|
||||
glibc
|
||||
sane-backends
|
||||
qtbase
|
||||
qtsvg
|
||||
libXext
|
||||
libX11
|
||||
libXdmcp
|
||||
libXau
|
||||
libxcb
|
||||
];
|
||||
dontStrip = true;
|
||||
installPhase = ''
|
||||
p=$out/opt/masterpdfeditor
|
||||
mkdir -p $out/bin $p $out/share/applications $out/share/pixmaps
|
||||
|
||||
substituteInPlace masterpdfeditor4.desktop \
|
||||
--replace 'Exec=/opt/master-pdf-editor-4' "Exec=$out/bin" \
|
||||
--replace 'Path=/opt/master-pdf-editor-4' "Path=$out/bin" \
|
||||
--replace 'Icon=/opt/master-pdf-editor-4' "Icon=$out/share/pixmaps"
|
||||
cp -v masterpdfeditor4.png $out/share/pixmaps/
|
||||
cp -v masterpdfeditor4.desktop $out/share/applications
|
||||
|
||||
cp -v masterpdfeditor4 $p/
|
||||
ln -s $p/masterpdfeditor4 $out/bin/masterpdfeditor4
|
||||
cp -v -r stamps templates lang fonts $p
|
||||
|
||||
install -D license.txt $out/share/$name/LICENSE
|
||||
|
||||
patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
--set-rpath $libPath \
|
||||
$p/masterpdfeditor4
|
||||
'';
|
||||
meta = with stdenv.lib; {
|
||||
description = "Master PDF Editor";
|
||||
homepage = "https://code-industry.net/free-pdf-editor/";
|
||||
license = licenses.unfreeRedistributable;
|
||||
platforms = with platforms; [ "x86_64-linux" ];
|
||||
maintainers = with maintainers; [ cmcdragonkai flokli ];
|
||||
};
|
||||
}
|
@ -1,14 +1,14 @@
|
||||
{ stdenv, fetchFromGitHub, runCommand, postgresql, openssl } :
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "postage-${version}";
|
||||
version = "3.2.18";
|
||||
name = "pgmanage-${version}";
|
||||
version = "10.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "workflowproducts";
|
||||
repo = "postage";
|
||||
rev = "eV${version}";
|
||||
sha256 = "1kdg8pw2vxwkxw3b6dim4s740s60j3iyrh96524wi3lqkkq98krn";
|
||||
owner = "pgManage";
|
||||
repo = "pgManage";
|
||||
rev = "v${version}";
|
||||
sha256 = "0g9kvhs9b6kc1s7j90fqv71amiy9v0w5p906yfvl0j7pf3ayq35a";
|
||||
};
|
||||
|
||||
buildInputs = [ postgresql openssl ];
|
||||
@ -20,8 +20,8 @@ stdenv.mkDerivation rec {
|
||||
the style of NGINX and Node.js. This heart makes Postage as fast as any
|
||||
PostgreSQL interface can hope to be.
|
||||
'';
|
||||
homepage = http://www.workflowproducts.com/postage.html;
|
||||
license = licenses.asl20;
|
||||
homepage = https://github.com/pgManage/pgManage;
|
||||
license = licenses.postgresql;
|
||||
maintainers = [ maintainers.basvandijk ];
|
||||
};
|
||||
}
|
@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
Remember to open port 24800 (used by synergys program) if you want to
|
||||
host mouse and keyboard.";
|
||||
homepage = https://code.google.com/p/quicksynergy/;
|
||||
homepage = https://sourceforge.net/projects/quicksynergy/;
|
||||
license = stdenv.lib.licenses.gpl2;
|
||||
maintainers = [ stdenv.lib.maintainers.spinus ];
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
|
@ -1,64 +1,23 @@
|
||||
{
|
||||
stdenv,
|
||||
cmake, doxygen, pkgconfig, autoreconfHook,
|
||||
curl,
|
||||
fetchgit,
|
||||
grantlee,
|
||||
libgit2,
|
||||
libusb,
|
||||
libssh2,
|
||||
libxml2,
|
||||
libxslt,
|
||||
libzip,
|
||||
qtbase, qtconnectivity, qtquickcontrols, qtscript, qtsvg, qttools, qtwebkit,
|
||||
sqlite
|
||||
{ stdenv, fetchurl, fetchFromGitHub, autoreconfHook, cmake, makeWrapper, pkgconfig, qmake
|
||||
, curl, grantlee, libgit2, libusb, libssh2, libxml2, libxslt, libzip, zlib
|
||||
, qtbase, qtconnectivity, qtlocation, qtsvg, qttools, qtwebkit
|
||||
}:
|
||||
|
||||
let
|
||||
version = "4.6.0";
|
||||
|
||||
libmarble = stdenv.mkDerivation rec {
|
||||
name = "libmarble-ssrf-${version}";
|
||||
|
||||
src = fetchgit {
|
||||
url = "git://git.subsurface-divelog.org/marble";
|
||||
rev = "refs/tags/v${version}";
|
||||
sha256 = "1dm2hdk6y36ls7pxbzkqmyc46hdy2cd5f6pkxa6nfrbhvk5f31zd";
|
||||
};
|
||||
|
||||
buildInputs = [ qtbase qtquickcontrols qtscript qtwebkit ];
|
||||
nativeBuildInputs = [ doxygen pkgconfig cmake ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
cmakeFlags = [
|
||||
"-DQTONLY=TRUE"
|
||||
"-DQT5BUILD=ON"
|
||||
"-DBUILD_MARBLE_TESTS=NO"
|
||||
"-DWITH_DESIGNER_PLUGIN=NO"
|
||||
"-DBUILD_MARBLE_APPS=NO"
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Qt library for a slippy map with patches from the Subsurface project";
|
||||
homepage = http://subsurface-divelog.org;
|
||||
license = licenses.lgpl21;
|
||||
maintainers = with maintainers; [ mguentner ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
};
|
||||
version = "4.7.2";
|
||||
|
||||
libdc = stdenv.mkDerivation rec {
|
||||
name = "libdivecomputer-ssrf-${version}";
|
||||
|
||||
src = fetchgit {
|
||||
url = "git://subsurface-divelog.org/libdc";
|
||||
rev = "refs/tags/v${version}";
|
||||
sha256 = "0s82c8bvqph9c9chwzd76iwrw968w7lgjm3pj4hmad1jim67bs6n";
|
||||
src = fetchurl {
|
||||
url = "https://subsurface-divelog.org/downloads/libdivecomputer-subsurface-branch-${version}.tgz";
|
||||
sha256 = "04wadhhva1bfnwk0kl359kcv0f83mgym2fzs441spw5llcl7k52r";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook ];
|
||||
|
||||
buildInputs = [ zlib ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
@ -70,31 +29,73 @@ let
|
||||
};
|
||||
};
|
||||
|
||||
googlemaps = stdenv.mkDerivation rec {
|
||||
name = "googlemaps-${version}";
|
||||
|
||||
version = "2017-09-17";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vladest";
|
||||
repo = "googlemaps";
|
||||
rev = "1b857c02504dd52b1aa442418b8dcea78ced3f35";
|
||||
sha256 = "14icmc925g4abwwdrldjc387aiyvcp3ia5z7mfh9qa09bv829a84";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ qmake ];
|
||||
|
||||
buildInputs = [ qtbase qtlocation ];
|
||||
|
||||
pluginsSubdir = "lib/qt-${qtbase.qtCompatVersion}/plugins";
|
||||
|
||||
installPhase = ''
|
||||
mkdir $out $(dirname ${pluginsSubdir})
|
||||
mv plugins ${pluginsSubdir}
|
||||
mv lib $out/
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
inherit (src.meta) homepage;
|
||||
description = "QtLocation plugin for Google maps tile API";
|
||||
maintainers = with maintainers; [ orivej ];
|
||||
license = licenses.mit;
|
||||
platforms = platforms.all;
|
||||
};
|
||||
};
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
name = "subsurface-${version}";
|
||||
|
||||
src = fetchgit {
|
||||
url = "git://git.subsurface-divelog.org/subsurface";
|
||||
rev = "refs/tags/v${version}";
|
||||
sha256 = "1rk5n52p6cnyjrgi7ybhmvh7y31zxrjny0mqpnc1wql69f90h94c";
|
||||
src = fetchurl {
|
||||
url = "https://subsurface-divelog.org/downloads/Subsurface-${version}.tgz";
|
||||
sha256 = "06f215xx1nc2q2qff2ihcl86fkrlnkvacl1swi3fw9iik6nq3bjp";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
libdc libmarble
|
||||
libdc googlemaps
|
||||
curl grantlee libgit2 libssh2 libusb libxml2 libxslt libzip
|
||||
qtbase qtconnectivity qtsvg qttools qtwebkit
|
||||
];
|
||||
nativeBuildInputs = [ cmake pkgconfig ];
|
||||
|
||||
enableParallelBuilding = false; # subsurfacewebservices.h dependency on ui_webservices.h
|
||||
nativeBuildInputs = [ cmake makeWrapper pkgconfig ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DMARBLE_LIBRARIES=${libmarble}/lib/libssrfmarblewidget.so"
|
||||
"-DLIBDC_FROM_PKGCONFIG=ON"
|
||||
"-DNO_PRINTING=OFF"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/subsurface \
|
||||
--prefix QT_PLUGIN_PATH : "${googlemaps}/${googlemaps.pluginsSubdir}"
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
passthru = { inherit version libdc googlemaps; };
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Subsurface is an open source divelog program that runs on Windows, Mac and Linux";
|
||||
description = "A divelog program";
|
||||
longDescription = ''
|
||||
Subsurface can track single- and multi-tank dives using air, Nitrox or TriMix.
|
||||
It allows tracking of dive locations including GPS coordinates (which can also
|
||||
|
@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "symless";
|
||||
repo = "synergy";
|
||||
repo = "synergy-core";
|
||||
rev = "v${version}-stable";
|
||||
sha256 = "0ksgr9hkf09h54572p7k7b9zkfhcdb2g2d5x7ixxn028y8i3jyp3";
|
||||
};
|
||||
|
@ -4,13 +4,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "tilix-${version}";
|
||||
version = "1.6.4";
|
||||
version = "1.7.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gnunn1";
|
||||
repo = "tilix";
|
||||
rev = "${version}";
|
||||
sha256 = "1vqi68jlbbaky1569kd4lr6p02zsiv7v2rfb8j1pzwj7gydblaac";
|
||||
sha256 = "0x0bnb26hjvxmvvd7c9k8fw97gcm3z5ssr6r8x90xbyyw6h58hhh";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -1,21 +1,25 @@
|
||||
{ stdenv, fetchurl, qt4, qmake4Hook }:
|
||||
{ stdenv, fetchFromGitHub, qt4, qmake4Hook }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "arora-${version}";
|
||||
version = "0.11.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://arora.googlecode.com/files/${name}.tar.gz";
|
||||
sha256 = "1ffkranxi93lrg5r7a90pix9j8xqmf0z1mb1m8579v9m34cyypvg";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Arora";
|
||||
repo = "arora";
|
||||
rev = version;
|
||||
sha256 = "0wmivgx3mw51rghi6q8fgivpkqc98z2mqmllf7c98ln0wd8rkf3c";
|
||||
};
|
||||
|
||||
buildInputs = [ qt4 ];
|
||||
nativeBuildInputs = [ qmake4Hook ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
platforms = qt4.meta.platforms;
|
||||
maintainers = [ maintainers.phreedom ];
|
||||
description = "A cross-platform Qt4 Webkit browser";
|
||||
homepage = http://arora.googlecode.com;
|
||||
homepage = https://github.com/Arora/arora;
|
||||
};
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -54,9 +54,12 @@ let
|
||||
|
||||
inherit (generated) version sources;
|
||||
|
||||
arch = if stdenv.system == "i686-linux"
|
||||
then "linux-i686"
|
||||
else "linux-x86_64";
|
||||
mozillaPlatforms = {
|
||||
"i686-linux" = "linux-i686";
|
||||
"x86_64-linux" = "linux-x86_64";
|
||||
};
|
||||
|
||||
arch = mozillaPlatforms.${stdenv.system};
|
||||
|
||||
isPrefixOf = prefix: string:
|
||||
builtins.substring 0 (builtins.stringLength prefix) string == prefix;
|
||||
@ -185,7 +188,7 @@ stdenv.mkDerivation {
|
||||
free = false;
|
||||
url = http://www.mozilla.org/en-US/foundation/trademarks/policy/;
|
||||
};
|
||||
platforms = platforms.linux;
|
||||
platforms = builtins.attrNames mozillaPlatforms;
|
||||
maintainers = with maintainers; [ garbas ];
|
||||
};
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -10,14 +10,14 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "palemoon-${version}";
|
||||
version = "27.5.0";
|
||||
version = "27.6.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
name = "palemoon-src";
|
||||
owner = "MoonchildProductions";
|
||||
repo = "Pale-Moon";
|
||||
rev = version + "_Release";
|
||||
sha256 = "0m4fgwxn6hs8r240i6acaajx76cvqy1b7cqmdsxd33qpjrrj1h9d";
|
||||
sha256 = "1v5rbam93fcc7c1l69clr9chi2l0zv0dhjq12v535n8vv9lhahhl";
|
||||
};
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
|
@ -28,13 +28,14 @@ let
|
||||
};
|
||||
|
||||
in buildPythonApplication rec {
|
||||
name = "qutebrowser-${version}";
|
||||
version = "1.0.2";
|
||||
name = "qutebrowser-${version}${fix_postfix}";
|
||||
fix_postfix = "-1";
|
||||
version = "1.0.3";
|
||||
namePrefix = "";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/The-Compiler/qutebrowser/releases/download/v${version}/${name}.tar.gz";
|
||||
sha256 = "093nmvl9x3ykrpmvnmx98g9npg4wmq0mmf7qzgbzmg93dnyq2cpk";
|
||||
url = "https://github.com/qutebrowser/qutebrowser/releases/download/v${version}/${name}.tar.gz";
|
||||
sha256 = "04d6hg2yf2wjwn0sd05bpx3zngnb93g7rizbdq17bbpmnwxchzap";
|
||||
};
|
||||
|
||||
# Needs tox
|
||||
|
@ -98,7 +98,7 @@ let
|
||||
fteLibPath = makeLibraryPath [ stdenv.cc.cc gmp ];
|
||||
|
||||
# Upstream source
|
||||
version = "7.0.8";
|
||||
version = "7.0.9";
|
||||
|
||||
lang = "en-US";
|
||||
|
||||
@ -108,7 +108,7 @@ let
|
||||
"https://github.com/TheTorProject/gettorbrowser/releases/download/v${version}/tor-browser-linux64-${version}_${lang}.tar.xz"
|
||||
"https://dist.torproject.org/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz"
|
||||
];
|
||||
sha256 = "0bi4l4ma40ifsajvjpwv6ixphijqvb7yrci2jcyykh3j41ndfjf2";
|
||||
sha256 = "0ykbpp0qr3glygmnnc6ac41kkvrxn52472z6kbpf7i6qzvk4ba0d";
|
||||
};
|
||||
|
||||
"i686-linux" = fetchurl {
|
||||
@ -116,7 +116,7 @@ let
|
||||
"https://github.com/TheTorProject/gettorbrowser/releases/download/v${version}/tor-browser-linux32-${version}_${lang}.tar.xz"
|
||||
"https://dist.torproject.org/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz"
|
||||
];
|
||||
sha256 = "182q1gb8jnk92wxr7m977yxcksa8d3zg90qbsja1raym2vhqaf73";
|
||||
sha256 = "02alpzmvm3ldlp51sqppz41d12lx93n5qj6i3gqz6din96swm7j8";
|
||||
};
|
||||
};
|
||||
in
|
||||
|
@ -24,9 +24,6 @@ buildPythonApplication rec {
|
||||
# unicode-capable filesystem (and setting LC_ALL doesn't work).
|
||||
# setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
|
||||
postPatch = ''
|
||||
sed -i '/def test_non_ascii/i\ import pytest\
|
||||
@pytest.mark.skip' flexget/tests/test_filesystem.py
|
||||
|
||||
substituteInPlace requirements.txt \
|
||||
--replace "chardet==3.0.3" "chardet" \
|
||||
--replace "rebulk==0.8.2" "rebulk" \
|
||||
@ -35,7 +32,13 @@ buildPythonApplication rec {
|
||||
--replace "sqlalchemy==1.1.10" "sqlalchemy" \
|
||||
--replace "zxcvbn-python==4.4.15" "zxcvbn-python" \
|
||||
--replace "flask-cors==3.0.2" "flask-cors" \
|
||||
--replace "certifi==2017.4.17" "certifi"
|
||||
--replace "certifi==2017.4.17" "certifi" \
|
||||
--replace "apscheduler==3.3.1" "apscheduler" \
|
||||
--replace "path.py==10.3.1" "path.py" \
|
||||
--replace "tempora==1.8" "tempora" \
|
||||
--replace "cheroot==5.5.0" "cheroot" \
|
||||
--replace "six==1.10.0" "six" \
|
||||
--replace "aniso8601==1.2.1" "aniso8601"
|
||||
'';
|
||||
|
||||
checkPhase = ''
|
||||
@ -47,7 +50,8 @@ buildPythonApplication rec {
|
||||
and not test_double_episodes \
|
||||
and not test_inject_force \
|
||||
and not test_double_prefered \
|
||||
and not test_double"
|
||||
and not test_double \
|
||||
and not test_non_ascii"
|
||||
'';
|
||||
|
||||
buildInputs = [ pytest mock vcrpy pytest-catchlog boto3 ];
|
||||
|
35
pkgs/applications/networking/gmailieer/default.nix
Normal file
35
pkgs/applications/networking/gmailieer/default.nix
Normal file
@ -0,0 +1,35 @@
|
||||
{ stdenv, fetchFromGitHub, python3Packages }:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
name = "gmailieer";
|
||||
version = "0.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gauteh";
|
||||
repo = "gmailieer";
|
||||
rev = "v${version}";
|
||||
sha256 = "1app783gf0p9p196nqsgbyl6s1bp304dfav86fqiq86h1scld787";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
notmuch
|
||||
oauth2client
|
||||
google_api_python_client
|
||||
tqdm
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Fast email-fetching and two-way tag synchronization between notmuch and GMail";
|
||||
longDescription = ''
|
||||
This program can pull email and labels (and changes to labels)
|
||||
from your GMail account and store them locally in a maildir with
|
||||
the labels synchronized with a notmuch database. The changes to
|
||||
tags in the notmuch database may be pushed back remotely to your
|
||||
GMail account.
|
||||
'';
|
||||
homepage = https://github.com/gauteh/gmailieer;
|
||||
repositories.git = https://github.com/gauteh/gmailieer.git;
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ kaiha ];
|
||||
};
|
||||
}
|
@ -4,7 +4,7 @@
|
||||
|
||||
let
|
||||
|
||||
version = "4.29.4.1662";
|
||||
version = "4.30.0.1663";
|
||||
|
||||
rpath = stdenv.lib.makeLibraryPath [
|
||||
xdg_utils
|
||||
@ -44,7 +44,7 @@ let
|
||||
if stdenv.system == "x86_64-linux" then
|
||||
fetchurl {
|
||||
url = "https://atlassian.artifactoryonline.com/atlassian/hipchat-apt-client/pool/HipChat4-${version}-Linux.deb";
|
||||
sha256 = "1cz9zv9aj8xdrjs6dgi7fpm4q9l9find4m8l0nmvac2s4r60vw6y";
|
||||
sha256 = "13mh49nx75pvaygzi70sg96iad3mn9ym0p4p3ja46amkxbdkq7h7";
|
||||
}
|
||||
else
|
||||
throw "HipChat is not supported on ${stdenv.system}";
|
||||
|
@ -0,0 +1,61 @@
|
||||
{ stdenv, fetchFromGitHub, fetchNodeModules, nodejs-8_x, ruby, sencha }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "rambox-bare-${version}";
|
||||
version = "0.5.13";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "saenzramiro";
|
||||
repo = "rambox";
|
||||
rev = version;
|
||||
sha256 = "0c770a9z017y6gcrpyri7s1gifm8zi5f29bq5nvh3zzg4wgqh326";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ nodejs-8_x ruby sencha ];
|
||||
|
||||
node_modules = fetchNodeModules {
|
||||
inherit src;
|
||||
|
||||
nodejs = nodejs-8_x;
|
||||
sha256 = "1y3q8ggyvfywxqi5hn9mvr1sjfylspis43iyf4b7snyr1a1br3r4";
|
||||
};
|
||||
|
||||
patches = [ ./hide-check-for-updates.patch ./isDev.patch ];
|
||||
|
||||
# These credentials are only for this derivation. If you want to get credentials
|
||||
# for another distribution, go to https://auth0.com. If you want to reuse the same
|
||||
# domain, drop a line at yegortimoshenko@gmail.com!
|
||||
auth0ClientID = "0spuNKfIGeLAQ_Iki9t3fGxbfJl3k8SU";
|
||||
auth0Domain = "nixpkgs.auth0.com";
|
||||
|
||||
configurePhase = ''
|
||||
echo 'var auth0Cfg = { clientID: "${auth0ClientID}", domain: "${auth0Domain}" };' > env.js
|
||||
ln -s ${node_modules} node_modules
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
mkdir ../rambox-build
|
||||
npm run sencha:compile:build
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mv ../rambox-build/ $out
|
||||
|
||||
# https://github.com/saenzramiro/rambox/issues/1281
|
||||
echo '{"name": "rambox", "version": "${version}", "main": "electron/main.js"}' > $out/package.json
|
||||
|
||||
# https://github.com/saenzramiro/rambox/issues/1282
|
||||
cp --parents ext/packages/ext-locale/build/ext-locale-*.js $out
|
||||
|
||||
# Symbolic link causes `Uncaught Error: Cannot find module 'immutable'`
|
||||
cp -r ${node_modules} $out/node_modules
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Messaging and emailing app that combines common web applications into one";
|
||||
homepage = http://rambox.pro;
|
||||
license = licenses.gpl3;
|
||||
maintainers = with maintainers; [ gnidorah ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
@ -1,64 +1,26 @@
|
||||
{ stdenv, fetchurl, dpkg, makeWrapper
|
||||
, xorg, gtk2, atk, glib, pango, gdk_pixbuf, cairo, freetype, fontconfig
|
||||
, gnome2, dbus, nss, nspr, alsaLib, cups, expat, udev, libnotify, xdg_utils }:
|
||||
{ stdenv, newScope, makeWrapper, electron, xdg_utils }:
|
||||
|
||||
let
|
||||
bits = if stdenv.system == "x86_64-linux" then "x64"
|
||||
else "ia32";
|
||||
|
||||
version = "0.5.13";
|
||||
|
||||
runtimeDeps = [
|
||||
udev libnotify
|
||||
];
|
||||
deps = (with xorg; [
|
||||
libXi libXcursor libXdamage libXrandr libXcomposite libXext libXfixes
|
||||
libXrender libX11 libXtst libXScrnSaver libxcb
|
||||
]) ++ [
|
||||
gtk2 atk glib pango gdk_pixbuf cairo freetype fontconfig dbus
|
||||
gnome2.GConf nss nspr alsaLib cups expat stdenv.cc.cc
|
||||
] ++ runtimeDeps;
|
||||
in stdenv.mkDerivation rec {
|
||||
name = "rambox-${version}";
|
||||
src = fetchurl {
|
||||
url = "https://github.com/saenzramiro/rambox/releases/download/${version}/Rambox_${version}-${bits}.deb";
|
||||
sha256 = if bits == "x64" then
|
||||
"0bn562fr1wsnn3xsd4q2rrxi6c56vckrkfmjl2dqb30hpmj2vn0d" else
|
||||
"180ndvkil5mk5idwnn7spfygnhhll6pjc342pfzgmzk46a723qs4";
|
||||
callPackage = newScope self;
|
||||
self = {
|
||||
fetchNodeModules = callPackage ./fetchNodeModules.nix {};
|
||||
rambox-bare = callPackage ./bare.nix {};
|
||||
sencha = callPackage ./sencha {};
|
||||
};
|
||||
in
|
||||
|
||||
# don't remove runtime deps
|
||||
dontPatchELF = true;
|
||||
with self;
|
||||
|
||||
buildInputs = [ dpkg makeWrapper ];
|
||||
stdenv.mkDerivation {
|
||||
name = "rambox-${rambox-bare.version}";
|
||||
|
||||
unpackPhase = "dpkg-deb -x $src .";
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
unpackPhase = ":";
|
||||
|
||||
installPhase = ''
|
||||
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" opt/Rambox/rambox
|
||||
patchelf --set-rpath "$out/opt/Rambox:${stdenv.lib.makeLibraryPath deps}" opt/Rambox/rambox
|
||||
|
||||
mkdir -p $out/bin
|
||||
cp -r opt $out
|
||||
ln -s $out/opt/Rambox/rambox $out/bin
|
||||
|
||||
# provide resources
|
||||
cp -r usr/share $out
|
||||
substituteInPlace $out/share/applications/rambox.desktop \
|
||||
--replace Exec=\"/opt/Rambox/rambox\" Exec=rambox
|
||||
makeWrapper ${electron}/bin/electron $out/bin/rambox \
|
||||
--add-flags "${rambox-bare} --without-update" \
|
||||
--prefix PATH : ${xdg_utils}/bin
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
paxmark m $out/opt/Rambox/rambox
|
||||
wrapProgram $out/opt/Rambox/rambox --prefix PATH : ${xdg_utils}/bin
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Free and Open Source messaging and emailing app that combines common web applications into one";
|
||||
homepage = http://rambox.pro;
|
||||
license = licenses.mit;
|
||||
maintainers = [ maintainers.gnidorah ];
|
||||
platforms = ["i686-linux" "x86_64-linux"];
|
||||
hydraPlatforms = [];
|
||||
};
|
||||
}
|
||||
|
@ -0,0 +1,26 @@
|
||||
{ stdenv, jq }: { src, nodejs, sha256 }:
|
||||
|
||||
# Only npm >= 5.4.2 is deterministic, see:
|
||||
# https://github.com/npm/npm/issues/17979#issuecomment-332701215
|
||||
assert stdenv.lib.versionAtLeast nodejs.version "8.9.0";
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "node_modules";
|
||||
|
||||
outputHashAlgo = "sha256";
|
||||
outputHash = sha256;
|
||||
outputHashMode = "recursive";
|
||||
|
||||
nativeBuildInputs = [ jq nodejs ];
|
||||
|
||||
buildCommand = ''
|
||||
cp -r ${src}/* .
|
||||
HOME=. npm install --force --ignore-scripts --only=production
|
||||
for f in $(find node_modules -name package.json); do
|
||||
# https://github.com/npm/npm/issues/10393
|
||||
jq -S 'delpaths(keys | map(select(startswith("_")) | [.]))' $f > $f.tmp
|
||||
mv $f.tmp $f
|
||||
done
|
||||
mv node_modules $out
|
||||
'';
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
https://github.com/saenzramiro/rambox/issues/1283
|
||||
|
||||
diff -urNZ a/electron/menu.js b/electron/menu.js
|
||||
--- a/electron/menu.js 2017-11-02 22:02:59.753119865 +0000
|
||||
+++ b/electron/menu.js 2017-11-02 22:08:34.419698562 +0000
|
||||
@@ -220,14 +220,6 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
- label: locale['menu.help[5]'],
|
||||
- click(item, win) {
|
||||
- const webContents = win.webContents;
|
||||
- const send = webContents.send.bind(win.webContents);
|
||||
- send('autoUpdater:check-update');
|
||||
- }
|
||||
- },
|
||||
- {
|
||||
label: locale['menu.help[6]'],
|
||||
click() {
|
||||
sendAction('showAbout')
|
||||
@@ -290,14 +282,6 @@
|
||||
type: 'separator'
|
||||
});
|
||||
helpSubmenu.push({
|
||||
- label: `&`+locale['menu.help[5]'],
|
||||
- click(item, win) {
|
||||
- const webContents = win.webContents;
|
||||
- const send = webContents.send.bind(win.webContents);
|
||||
- send('autoUpdater:check-update');
|
||||
- }
|
||||
- });
|
||||
- helpSubmenu.push({
|
||||
label: `&`+locale['menu.help[6]'],
|
||||
click() {
|
||||
sendAction('showAbout')
|
@ -0,0 +1,14 @@
|
||||
https://github.com/saenzramiro/rambox/issues/1280
|
||||
|
||||
diff -urNZ a/electron/main.js b/electron/main.js
|
||||
--- a/electron/main.js 2017-11-02 14:58:06.085127616 +0000
|
||||
+++ b/electron/main.js 2017-11-02 14:58:18.316887679 +0000
|
||||
@@ -8,7 +8,7 @@
|
||||
// Configuration
|
||||
const Config = require('electron-config');
|
||||
// Development
|
||||
-const isDev = require('electron-is-dev');
|
||||
+const isDev = false;
|
||||
// Updater
|
||||
const updater = require('./updater');
|
||||
// File System
|
@ -0,0 +1,41 @@
|
||||
{ stdenv, fetchurl, gzip, which, unzip, jdk }:
|
||||
|
||||
let
|
||||
version = "6.5.2";
|
||||
srcs = {
|
||||
i686-linux = fetchurl {
|
||||
url = "https://cdn.sencha.com/cmd/${version}/no-jre/SenchaCmd-${version}-linux-i386.sh.zip";
|
||||
sha256 = "18gcqw9434xab97skcb97iw4p4s2pgggvq7jaisblap0ja00kqjr";
|
||||
};
|
||||
x86_64-linux = fetchurl {
|
||||
url = "https://cdn.sencha.com/cmd/${version}/no-jre/SenchaCmd-${version}-linux-amd64.sh.zip";
|
||||
sha256 = "1b8jv99k37q1bi7b29f23lfzxc66v5fqdmr1rxsrqchwcrllc0z7";
|
||||
};
|
||||
};
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit version;
|
||||
|
||||
name = "sencha-bare-${version}";
|
||||
src = srcs.${stdenv.system};
|
||||
|
||||
nativeBuildInputs = [ gzip which unzip ];
|
||||
buildInputs = [ jdk ];
|
||||
|
||||
sourceRoot = ".";
|
||||
|
||||
configurePhase = ''
|
||||
substituteAll ${./response.varfile} response.varfile
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
./SenchaCmd*.sh -q -dir $out -varfile response.varfile
|
||||
rm $out/shell-wrapper.sh $out/Uninstaller
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
license = licenses.unfree;
|
||||
platforms = attrNames srcs;
|
||||
};
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
{ stdenv, callPackage, makeWrapper }:
|
||||
|
||||
let
|
||||
sencha-bare = callPackage ./bare.nix {};
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "sencha-${sencha-bare.version}";
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
unpackPhase = ":";
|
||||
|
||||
installPhase = ''
|
||||
makeWrapper ${sencha-bare}/sencha $out/bin/sencha
|
||||
'';
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
addToPath$Integer=1
|
||||
parentDir=.
|
||||
sys.adminRights$Boolean=false
|
||||
sys.component.148$Boolean=true
|
||||
sys.component.157$Boolean=true
|
||||
sys.component.26$Boolean=true
|
||||
sys.component.30$Boolean=true
|
||||
sys.component.90$Boolean=true
|
||||
sys.component.91$Boolean=true
|
||||
sys.component.92$Boolean=true
|
||||
sys.component.94$Boolean=true
|
||||
sys.installationDir=@out@
|
||||
sys.languageId=en
|
@ -1,7 +1,12 @@
|
||||
{stdenv, fetchurl, python27Packages, file }:
|
||||
{ stdenv, fetchurl, python27Packages, file }:
|
||||
|
||||
let
|
||||
inherit (python27Packages) python;
|
||||
requirements = (import ./requirements.nix {
|
||||
inherit stdenv fetchurl;
|
||||
pythonPackages = python27Packages;
|
||||
});
|
||||
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "salut-a-toi";
|
||||
@ -13,12 +18,15 @@ in
|
||||
sha256 = "0kn9403n8fpzl0hsb9kkzicsmzq2fjl627l31yykbqzc4nsr780d";
|
||||
};
|
||||
|
||||
buildInputs = with python27Packages;
|
||||
buildInputs = with python27Packages;
|
||||
[
|
||||
python twisted urwid wxPython pygobject2
|
||||
wokkel dbus-python pyfeed wrapPython setuptools file
|
||||
dbus-python wrapPython setuptools file
|
||||
pycrypto pyxdg
|
||||
];
|
||||
] ++ (with requirements; [
|
||||
pyfeed
|
||||
wokkel
|
||||
]);
|
||||
|
||||
configurePhase = ''
|
||||
sed -i "/use_setuptools/d" setup.py
|
||||
@ -26,7 +34,7 @@ in
|
||||
sed -e "1aexport PATH=\"\$PATH\":\"$out/bin\":\"${python27Packages.twisted}/bin\"" -i src/sat.sh
|
||||
sed -e "1aexport PYTHONPATH=\"\$PYTHONPATHPATH\":\"$PYTHONPATH\":"$out/${python.sitePackages}"" -i src/sat.sh
|
||||
|
||||
echo 'import wokkel.muc' | python
|
||||
echo 'import wokkel.muc' | python
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
@ -39,7 +47,7 @@ in
|
||||
for i in "$out/bin"/*; do
|
||||
head -n 1 "$i" | grep -E '[/ ]python( |$)' && {
|
||||
wrapProgram "$i" --prefix PYTHONPATH : "$PYTHONPATH:$out/${python.sitePackages}"
|
||||
} || true
|
||||
} || true
|
||||
done
|
||||
'';
|
||||
|
||||
|
@ -0,0 +1,67 @@
|
||||
{ fetchurl
|
||||
, stdenv
|
||||
, pythonPackages
|
||||
}:
|
||||
|
||||
let
|
||||
buildPythonPackage = pythonPackages.buildPythonPackage;
|
||||
|
||||
xe = buildPythonPackage rec {
|
||||
url = "http://www.blarg.net/%7Esteveha/xe-0.7.4.tar.gz";
|
||||
name = stdenv.lib.nameFromURL url ".tar";
|
||||
src = fetchurl {
|
||||
inherit url;
|
||||
sha256 = "0v9878cl0y9cczdsr6xjy8v9l139lc23h4m5f86p4kpf2wlnpi42";
|
||||
};
|
||||
|
||||
# error: invalid command 'test'
|
||||
doCheck = false;
|
||||
|
||||
meta = {
|
||||
homepage = "http://home.blarg.net/~steveha/xe.html";
|
||||
description = "XML elements";
|
||||
};
|
||||
};
|
||||
|
||||
in {
|
||||
|
||||
pyfeed = (buildPythonPackage rec {
|
||||
url = "http://www.blarg.net/%7Esteveha/pyfeed-0.7.4.tar.gz";
|
||||
|
||||
name = stdenv.lib.nameFromURL url ".tar";
|
||||
|
||||
src = fetchurl {
|
||||
inherit url;
|
||||
sha256 = "1h4msq573m7wm46h3cqlx4rsn99f0l11rhdqgf50lv17j8a8vvy1";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ xe ];
|
||||
|
||||
# error: invalid command 'test'
|
||||
doCheck = false;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = "http://home.blarg.net/~steveha/pyfeed.html";
|
||||
description = "Tools for syndication feeds";
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
wokkel = buildPythonPackage (rec {
|
||||
url = "http://wokkel.ik.nu/releases/0.7.0/wokkel-0.7.0.tar.gz";
|
||||
name = stdenv.lib.nameFromURL url ".tar";
|
||||
src = fetchurl {
|
||||
inherit url;
|
||||
sha256 = "0rnshrzw8605x05mpd8ndrx3ri8h6cx713mp8sl4f04f4gcrz8ml";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with pythonPackages; [twisted dateutil];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Some (mainly XMPP-related) additions to twisted";
|
||||
homepage = "http://wokkel.ik.nu/";
|
||||
license = licenses.mit;
|
||||
};
|
||||
});
|
||||
|
||||
}
|
@ -0,0 +1,88 @@
|
||||
{ stdenv, lib, fetchurl, dpkg, gnome2, atk, cairo, gdk_pixbuf, glib, freetype,
|
||||
fontconfig, dbus, libX11, xlibs, libXi, libXcursor, libXdamage, libXrandr,
|
||||
libXcomposite, libXext, libXfixes, libXrender, libXtst, libXScrnSaver, nss,
|
||||
nspr, alsaLib, cups, expat, udev
|
||||
}:
|
||||
let
|
||||
rpath = lib.makeLibraryPath [
|
||||
alsaLib
|
||||
atk
|
||||
cairo
|
||||
cups
|
||||
dbus
|
||||
expat
|
||||
fontconfig
|
||||
freetype
|
||||
gdk_pixbuf
|
||||
glib
|
||||
gnome2.GConf
|
||||
gnome2.gtk
|
||||
gnome2.pango
|
||||
libX11
|
||||
libXScrnSaver
|
||||
libXcomposite
|
||||
libXcursor
|
||||
libXdamage
|
||||
libXext
|
||||
libXfixes
|
||||
libXi
|
||||
libXrandr
|
||||
libXrender
|
||||
libXtst
|
||||
nspr
|
||||
nss
|
||||
stdenv.cc.cc
|
||||
udev
|
||||
xlibs.libxcb
|
||||
];
|
||||
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "signal-desktop-${version}";
|
||||
|
||||
version = "1.0.35";
|
||||
|
||||
src =
|
||||
if stdenv.system == "x86_64-linux" then
|
||||
fetchurl {
|
||||
url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
|
||||
sha256 = "d9f9d4d54f4121efc8eadf1cf0ff957828088b313e53b66dc540b851c44c1860";
|
||||
}
|
||||
else
|
||||
throw "Signal for Desktop is not currently supported on ${stdenv.system}";
|
||||
|
||||
phases = [ "unpackPhase" "installPhase" ];
|
||||
nativeBuildInputs = [ dpkg ];
|
||||
unpackPhase = "dpkg-deb -x $src .";
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp -R opt $out
|
||||
|
||||
mv ./usr/share $out/share
|
||||
mv $out/opt/Signal $out/libexec
|
||||
rmdir $out/opt
|
||||
|
||||
chmod -R g-w $out
|
||||
|
||||
# Patch signal
|
||||
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
--set-rpath ${rpath}:$out/libexec $out/libexec/signal-desktop
|
||||
|
||||
# Symlink to bin
|
||||
mkdir -p $out/bin
|
||||
ln -s $out/libexec/signal-desktop $out/bin/signal-desktop
|
||||
|
||||
# Fix the desktop link
|
||||
substituteInPlace $out/share/applications/signal-desktop.desktop \
|
||||
--replace /opt/Signal/signal-desktop $out/bin/signal-desktop
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Signal Private Messenger for the Desktop.";
|
||||
homepage = https://signal.org/;
|
||||
license = lib.licenses.gpl3;
|
||||
platforms = [
|
||||
"x86_64-linux"
|
||||
];
|
||||
};
|
||||
}
|
@ -1,81 +1,129 @@
|
||||
{ stdenv, fetchurl, ncurses, openssl, aspell, gnutls
|
||||
, zlib, curl , pkgconfig, libgcrypt
|
||||
{ stdenv, fetchurl, fetchpatch, lib
|
||||
, ncurses, openssl, aspell, gnutls
|
||||
, zlib, curl, pkgconfig, libgcrypt
|
||||
, cmake, makeWrapper, libobjc, libresolv, libiconv
|
||||
, writeScriptBin, symlinkJoin # for withPlugins
|
||||
, asciidoctor # manpages
|
||||
, guileSupport ? true, guile
|
||||
, luaSupport ? true, lua5
|
||||
, perlSupport ? true, perl
|
||||
, pythonPackages
|
||||
, pythonSupport ? true, pythonPackages
|
||||
, rubySupport ? true, ruby
|
||||
, tclSupport ? true, tcl
|
||||
, extraBuildInputs ? [] }:
|
||||
|
||||
assert guileSupport -> guile != null;
|
||||
assert luaSupport -> lua5 != null;
|
||||
assert perlSupport -> perl != null;
|
||||
assert rubySupport -> ruby != null;
|
||||
assert tclSupport -> tcl != null;
|
||||
, extraBuildInputs ? []
|
||||
, configure ? null
|
||||
, runCommand }:
|
||||
|
||||
let
|
||||
inherit (pythonPackages) python pycrypto pync;
|
||||
in
|
||||
plugins = [
|
||||
{ name = "perl"; enabled = perlSupport; cmakeFlag = "ENABLE_PERL"; buildInputs = [ perl ]; }
|
||||
{ name = "tcl"; enabled = tclSupport; cmakeFlag = "ENABLE_TCL"; buildInputs = [ tcl ]; }
|
||||
{ name = "ruby"; enabled = rubySupport; cmakeFlag = "ENABLE_RUBY"; buildInputs = [ ruby ]; }
|
||||
{ name = "guile"; enabled = guileSupport; cmakeFlag = "ENABLE_GUILE"; buildInputs = [ guile ]; }
|
||||
{ name = "lua"; enabled = luaSupport; cmakeFlag = "ENABLE_LUA"; buildInputs = [ lua5 ]; }
|
||||
{ name = "python"; enabled = pythonSupport; cmakeFlag = "ENABLE_PYTHON"; buildInputs = [ python ]; }
|
||||
];
|
||||
enabledPlugins = builtins.filter (p: p.enabled) plugins;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "1.9.1";
|
||||
name = "weechat-${version}";
|
||||
weechat =
|
||||
assert lib.all (p: p.enabled -> ! (builtins.elem null p.buildInputs)) plugins;
|
||||
stdenv.mkDerivation rec {
|
||||
version = "1.9.1";
|
||||
name = "weechat-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://weechat.org/files/src/weechat-${version}.tar.bz2";
|
||||
sha256 = "1kgi079bq4n0wb7hc7mz8p7ay1b2m0a4wpvb92sfsxrnh10qr5m1";
|
||||
};
|
||||
src = fetchurl {
|
||||
url = "http://weechat.org/files/src/weechat-${version}.tar.bz2";
|
||||
sha256 = "1kgi079bq4n0wb7hc7mz8p7ay1b2m0a4wpvb92sfsxrnh10qr5m1";
|
||||
};
|
||||
|
||||
outputs = [ "out" "man" ];
|
||||
patches = [
|
||||
# TODO: Remove this patch when weechat is updated to a release that
|
||||
# incorporates weechat/weechat#971
|
||||
(fetchpatch {
|
||||
url = https://github.com/lheckemann/weechat/commit/45a4f0565cc745b9c6e943f20199015185696df0.patch;
|
||||
sha256 = "0x7vv7g0k3b2hj444x2cinyv1mq5bkr6m18grfnyy6swbymzc9bj";
|
||||
})
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
cmakeFlags = with stdenv.lib; [
|
||||
"-DENABLE_MAN=ON"
|
||||
"-DENABLE_DOC=ON"
|
||||
]
|
||||
++ optionals stdenv.isDarwin ["-DICONV_LIBRARY=${libiconv}/lib/libiconv.dylib" "-DCMAKE_FIND_FRAMEWORK=LAST"]
|
||||
++ optional (!guileSupport) "-DENABLE_GUILE=OFF"
|
||||
++ optional (!luaSupport) "-DENABLE_LUA=OFF"
|
||||
++ optional (!perlSupport) "-DENABLE_PERL=OFF"
|
||||
++ optional (!rubySupport) "-DENABLE_RUBY=OFF"
|
||||
++ optional (!tclSupport) "-DENABLE_TCL=OFF"
|
||||
;
|
||||
outputs = [ "out" "man" ] ++ map (p: p.name) enabledPlugins;
|
||||
|
||||
buildInputs = with stdenv.lib; [
|
||||
ncurses python openssl aspell gnutls zlib curl pkgconfig
|
||||
libgcrypt pycrypto makeWrapper
|
||||
cmake
|
||||
asciidoctor
|
||||
enableParallelBuilding = true;
|
||||
cmakeFlags = with stdenv.lib; [
|
||||
"-DENABLE_MAN=ON"
|
||||
"-DENABLE_DOC=ON"
|
||||
]
|
||||
++ optionals stdenv.isDarwin [ pync libobjc libresolv ]
|
||||
++ optional guileSupport guile
|
||||
++ optional luaSupport lua5
|
||||
++ optional perlSupport perl
|
||||
++ optional rubySupport ruby
|
||||
++ optional tclSupport tcl
|
||||
++ extraBuildInputs;
|
||||
++ optionals stdenv.isDarwin ["-DICONV_LIBRARY=${libiconv}/lib/libiconv.dylib" "-DCMAKE_FIND_FRAMEWORK=LAST"]
|
||||
++ map (p: "-D${p.cmakeFlag}=" + (if p.enabled then "ON" else "OFF")) plugins
|
||||
;
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-I${python}/include/${python.libPrefix}"
|
||||
# Fix '_res_9_init: undefined symbol' error
|
||||
+ (stdenv.lib.optionalString stdenv.isDarwin "-DBIND_8_COMPAT=1 -lresolv");
|
||||
buildInputs = with stdenv.lib; [
|
||||
ncurses openssl aspell gnutls zlib curl pkgconfig
|
||||
libgcrypt makeWrapper cmake asciidoctor
|
||||
]
|
||||
++ optionals stdenv.isDarwin [ libobjc libresolv ]
|
||||
++ concatMap (p: p.buildInputs) enabledPlugins
|
||||
++ extraBuildInputs;
|
||||
|
||||
postInstall = with stdenv.lib; ''
|
||||
NIX_PYTHONPATH="$out/lib/${python.libPrefix}/site-packages"
|
||||
wrapProgram "$out/bin/weechat" \
|
||||
${optionalString perlSupport "--prefix PATH : ${perl}/bin"} \
|
||||
--prefix PATH : ${pythonPackages.python}/bin \
|
||||
--prefix PYTHONPATH : "$PYTHONPATH" \
|
||||
--prefix PYTHONPATH : "$NIX_PYTHONPATH"
|
||||
'';
|
||||
NIX_CFLAGS_COMPILE = "-I${python}/include/${python.libPrefix}"
|
||||
# Fix '_res_9_init: undefined symbol' error
|
||||
+ (stdenv.lib.optionalString stdenv.isDarwin "-DBIND_8_COMPAT=1 -lresolv");
|
||||
|
||||
meta = {
|
||||
homepage = http://www.weechat.org/;
|
||||
description = "A fast, light and extensible chat client";
|
||||
license = stdenv.lib.licenses.gpl3;
|
||||
maintainers = with stdenv.lib.maintainers; [ lovek323 garbas the-kenny ];
|
||||
platforms = stdenv.lib.platforms.unix;
|
||||
};
|
||||
}
|
||||
postInstall = with stdenv.lib; ''
|
||||
for p in ${concatMapStringsSep " " (p: p.name) enabledPlugins}; do
|
||||
from=$out/lib/weechat/plugins/$p.so
|
||||
to=''${!p}/lib/weechat/plugins/$p.so
|
||||
mkdir -p $(dirname $to)
|
||||
mv $from $to
|
||||
done
|
||||
'';
|
||||
|
||||
meta = {
|
||||
homepage = http://www.weechat.org/;
|
||||
description = "A fast, light and extensible chat client";
|
||||
license = stdenv.lib.licenses.gpl3;
|
||||
maintainers = with stdenv.lib.maintainers; [ lovek323 garbas the-kenny lheckemann ];
|
||||
platforms = stdenv.lib.platforms.unix;
|
||||
};
|
||||
};
|
||||
in if configure == null then weechat else
|
||||
let
|
||||
perlInterpreter = perl;
|
||||
config = configure {
|
||||
availablePlugins = let
|
||||
simplePlugin = name: {pluginFile = "${weechat.${name}}/lib/weechat/plugins/${name}.so";};
|
||||
in rec {
|
||||
python = {
|
||||
pluginFile = "${weechat.python}/lib/weechat/plugins/python.so";
|
||||
withPackages = pkgsFun: (python // {
|
||||
extraEnv = ''
|
||||
export PYTHONHOME="${pythonPackages.python.withPackages pkgsFun}"
|
||||
'';
|
||||
});
|
||||
};
|
||||
perl = (simplePlugin "perl") // {
|
||||
extraEnv = ''
|
||||
export PATH="${perlInterpreter}/bin:$PATH"
|
||||
'';
|
||||
};
|
||||
tcl = simplePlugin "tcl";
|
||||
ruby = simplePlugin "ruby";
|
||||
guile = simplePlugin "guile";
|
||||
lua = simplePlugin "lua";
|
||||
};
|
||||
};
|
||||
|
||||
inherit (config) plugins;
|
||||
|
||||
pluginsDir = runCommand "weechat-plugins" {} ''
|
||||
mkdir -p $out/plugins
|
||||
for plugin in ${lib.concatMapStringsSep " " (p: p.pluginFile) plugins} ; do
|
||||
ln -s $plugin $out/plugins
|
||||
done
|
||||
'';
|
||||
in writeScriptBin "weechat" ''
|
||||
#!${stdenv.shell}
|
||||
export WEECHAT_EXTRA_LIBDIR=${pluginsDir}
|
||||
${lib.concatMapStringsSep "\n" (p: lib.optionalString (p ? extraEnv) p.extraEnv) plugins}
|
||||
exec ${weechat}/bin/weechat "$@"
|
||||
''
|
||||
|
30
pkgs/applications/networking/p2p/tixati/default.nix
Normal file
30
pkgs/applications/networking/p2p/tixati/default.nix
Normal file
@ -0,0 +1,30 @@
|
||||
{ stdenv, fetchurl, glib, zlib, dbus, dbus_glib, gtk2, gdk_pixbuf, cairo, pango }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "tixati-${version}";
|
||||
version = "2.55";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download2.tixati.com/download/tixati-${version}-1.x86_64.manualinstall.tar.gz";
|
||||
sha256 = "02mha6lfcb0mg0y977bxa6xg8krpbsbzpm4b5xw6y6wign4d8a8w";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
--set-rpath ${stdenv.lib.makeLibraryPath [ glib zlib dbus dbus_glib gtk2 gdk_pixbuf cairo pango ]} \
|
||||
tixati
|
||||
install -D tixati $out/bin/tixati
|
||||
install -D tixati.desktop $out/share/applications/tixati.desktop
|
||||
install -D tixati.png $out/share/icons/tixati.png
|
||||
'';
|
||||
|
||||
dontStrip = true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Torrent client";
|
||||
homepage = http://www.tixati.com;
|
||||
license = licenses.unfree;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
maintainers = with maintainers; [ volth ];
|
||||
};
|
||||
}
|
20
pkgs/applications/networking/pyload/beautifulsoup.nix
Normal file
20
pkgs/applications/networking/pyload/beautifulsoup.nix
Normal file
@ -0,0 +1,20 @@
|
||||
{ pythonPackages, isPy3k, pkgs }:
|
||||
|
||||
pythonPackages.buildPythonPackage rec {
|
||||
name = "beautifulsoup-3.2.1";
|
||||
disabled = isPy3k;
|
||||
|
||||
src = pkgs.fetchurl {
|
||||
url = "http://www.crummy.com/software/BeautifulSoup/download/3.x/BeautifulSoup-3.2.1.tar.gz";
|
||||
sha256 = "1nshbcpdn0jpcj51x0spzjp519pkmqz0n0748j7dgpz70zlqbfpm";
|
||||
};
|
||||
|
||||
# error: invalid command 'test'
|
||||
doCheck = false;
|
||||
|
||||
meta = {
|
||||
homepage = http://www.crummy.com/software/BeautifulSoup/;
|
||||
license = "bsd";
|
||||
description = "Undemanding HTML/XML parser";
|
||||
};
|
||||
}
|
@ -1,5 +1,12 @@
|
||||
{ stdenv, fetchFromGitHub, fetchpatch, pythonPackages, gocr, unrar, rhino, spidermonkey }:
|
||||
pythonPackages.buildPythonApplication rec {
|
||||
{ stdenv, fetchFromGitHub, fetchpatch, pythonPackages, gocr, unrar, rhino, spidermonkey
|
||||
, pkgs }:
|
||||
|
||||
let
|
||||
beautifulsoup = pythonPackages.callPackage ./beautifulsoup.nix {
|
||||
inherit pythonPackages;
|
||||
};
|
||||
|
||||
in pythonPackages.buildPythonApplication rec {
|
||||
version = "0.4.9-next";
|
||||
name = "pyLoad-" + version;
|
||||
|
||||
|
@ -5,15 +5,19 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "abiword-${version}";
|
||||
version = "3.0.1";
|
||||
version = "3.0.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://www.abisource.org/downloads/abiword/${version}/source/${name}.tar.gz";
|
||||
sha256 = "1ik591rx15nn3n1297cwykl8wvrlgj78i528id9wbidgy3xzd570";
|
||||
url = "http://www.abisource.com/downloads/abiword/${version}/source/${name}.tar.gz";
|
||||
sha256 = "08imry821g81apdwym3gcs4nss0l9j5blqk31j5rv602zmcd9gxg";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
patches = [
|
||||
./patches/fix-13791.patch
|
||||
];
|
||||
|
||||
buildInputs =
|
||||
[ pkgconfig gtk3 libglade librsvg bzip2 libgnomecanvas fribidi libpng popt
|
||||
libgsf enchant wv libjpeg perl boost libxslt goffice makeWrapper iconTheme
|
||||
@ -29,6 +33,6 @@ stdenv.mkDerivation rec {
|
||||
homepage = http://www.abisource.com/;
|
||||
license = licenses.gpl3;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ pSub ];
|
||||
maintainers = with maintainers; [ pSub ylwghst ];
|
||||
};
|
||||
}
|
||||
|
161
pkgs/applications/office/abiword/patches/fix-13791.patch
Normal file
161
pkgs/applications/office/abiword/patches/fix-13791.patch
Normal file
@ -0,0 +1,161 @@
|
||||
From 46388f407c893123d9b3824a7570b050fc3b049b Mon Sep 17 00:00:00 2001
|
||||
From: James Cameron <quozl@laptop.org>
|
||||
Date: Thu, 17 Aug 2017 15:05:39 +1000
|
||||
Subject: [PATCH] Fix flickering
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
- in GR_Caret::s_blink_timeout, avoid repeated calls by stopping the
|
||||
timer, it will be restarted when needed,
|
||||
|
||||
- in GR_Caret::s_enable, avoid extra unnecessary _blink calls when blink
|
||||
is enabled, as they serve no purpose,
|
||||
|
||||
- in XAP_UnixFrameImpl::_fe::expose, use the Cairo clip rectangle
|
||||
instead of the expose event area, thanks to Hubert Figuière in
|
||||
865c1dda7e13deff04573ffc42028b71fee07f9c,
|
||||
|
||||
- in XAP_UnixFrameImpl::_fe::expose, do not return FALSE, as other
|
||||
handlers will need to handle the draw event,
|
||||
|
||||
- in GR_UnixCairoGraphics::flush, fix excessive draw events;
|
||||
gtk_widget_queue_draw only marks the widget as needing redrawing,
|
||||
which causes a draw event for each call to flush, therefore every
|
||||
caret blink, so use gdk_flush instead,
|
||||
|
||||
Fixes AbiSource #13791.
|
||||
Fixes Debian #851052.
|
||||
Fixes Fedora #1287835.
|
||||
Fixes Ubuntu LP: #1574278.
|
||||
Fixes Sugar Labs #4915.
|
||||
|
||||
Signed-off-by: James Cameron <quozl@laptop.org>
|
||||
---
|
||||
src/af/gr/gtk/gr_UnixCairoGraphics.cpp | 4 +---
|
||||
src/af/gr/xp/gr_Caret.cpp | 13 ++++---------
|
||||
src/af/xap/gtk/xap_UnixFrameImpl.cpp | 27 ++++++++++++++++++---------
|
||||
src/af/xap/gtk/xap_UnixFrameImpl.h | 2 +-
|
||||
4 files changed, 24 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/src/af/gr/gtk/gr_UnixCairoGraphics.cpp b/src/af/gr/gtk/gr_UnixCairoGraphics.cpp
|
||||
index 509bd37..7c3c06f 100644
|
||||
--- a/src/af/gr/gtk/gr_UnixCairoGraphics.cpp
|
||||
+++ b/src/af/gr/gtk/gr_UnixCairoGraphics.cpp
|
||||
@@ -577,9 +577,7 @@ void GR_UnixCairoGraphics::_endPaint()
|
||||
|
||||
void GR_UnixCairoGraphics::flush(void)
|
||||
{
|
||||
- if (m_Widget) {
|
||||
- gtk_widget_queue_draw(m_Widget);
|
||||
- }
|
||||
+ gdk_flush();
|
||||
}
|
||||
|
||||
bool GR_UnixCairoGraphics::queryProperties(GR_Graphics::Properties gp) const
|
||||
diff --git a/src/af/gr/xp/gr_Caret.cpp b/src/af/gr/xp/gr_Caret.cpp
|
||||
index 5d5d116..a8aa451 100644
|
||||
--- a/src/af/gr/xp/gr_Caret.cpp
|
||||
+++ b/src/af/gr/xp/gr_Caret.cpp
|
||||
@@ -155,22 +155,17 @@ void GR_Caret::s_enable(UT_Worker * _w)
|
||||
{
|
||||
GR_Caret * c = static_cast<GR_Caret *>(_w->getInstanceData());
|
||||
|
||||
+ c->m_enabler->stop();
|
||||
c->m_worker->stop();
|
||||
- c->_blink(true);
|
||||
- if (!c->m_bCursorIsOn)
|
||||
- c->_blink(true); // blink again
|
||||
- else
|
||||
- {
|
||||
- c->_blink(true); // ?? - MARCM
|
||||
- c->_blink(true);
|
||||
- }
|
||||
c->m_worker->start();
|
||||
- c->m_enabler->stop();
|
||||
+ c->_blink(true);
|
||||
}
|
||||
|
||||
void GR_Caret::s_blink_timeout(UT_Worker * _w)
|
||||
{
|
||||
GR_Caret * c = static_cast<GR_Caret *>(_w->getInstanceData());
|
||||
+
|
||||
+ c->m_blinkTimeout->stop();
|
||||
if (c->isEnabled())
|
||||
c->disable();
|
||||
}
|
||||
diff --git a/src/af/xap/gtk/xap_UnixFrameImpl.cpp b/src/af/xap/gtk/xap_UnixFrameImpl.cpp
|
||||
index 780000e..e81961a 100644
|
||||
--- a/src/af/xap/gtk/xap_UnixFrameImpl.cpp
|
||||
+++ b/src/af/xap/gtk/xap_UnixFrameImpl.cpp
|
||||
@@ -1208,15 +1208,23 @@ gint XAP_UnixFrameImpl::_fe::delete_event(GtkWidget * w, GdkEvent * /*event*/, g
|
||||
}
|
||||
|
||||
#if GTK_CHECK_VERSION(3,0,0)
|
||||
-gint XAP_UnixFrameImpl::_fe::draw(GtkWidget * w, cairo_t * cr)
|
||||
+gboolean XAP_UnixFrameImpl::_fe::draw(GtkWidget * w, cairo_t * cr)
|
||||
#else
|
||||
gint XAP_UnixFrameImpl::_fe::expose(GtkWidget * w, GdkEventExpose* pExposeEvent)
|
||||
#endif
|
||||
{
|
||||
XAP_UnixFrameImpl * pUnixFrameImpl = static_cast<XAP_UnixFrameImpl *>(g_object_get_data(G_OBJECT(w), "user_data"));
|
||||
FV_View * pView = static_cast<FV_View *>(pUnixFrameImpl->getFrame()->getCurrentView());
|
||||
+ double x, y, width, height;
|
||||
#if GTK_CHECK_VERSION(3,0,0)
|
||||
- GdkEventExpose *pExposeEvent = reinterpret_cast<GdkEventExpose *>(gtk_get_current_event());
|
||||
+ cairo_clip_extents (cr, &x, &y, &width, &height);
|
||||
+ width -= x;
|
||||
+ height -= y;
|
||||
+#else
|
||||
+ x = pExposeEvent->area.x;
|
||||
+ y = pExposeEvent->area.y;
|
||||
+ width = pExposeEvent->area.width;
|
||||
+ height = pExposeEvent->area.height;
|
||||
#endif
|
||||
/* Jean: commenting out next lines since the zoom update code does draw only
|
||||
* part of what needs to be updated. */
|
||||
@@ -1230,20 +1238,21 @@ gint XAP_UnixFrameImpl::_fe::expose(GtkWidget * w, GdkEventExpose* pExposeEvent)
|
||||
UT_Rect rClip;
|
||||
if (pGr->getPaintCount () > 0)
|
||||
return TRUE;
|
||||
- xxx_UT_DEBUGMSG(("Expose area: x %d y %d width %d height %d \n",pExposeEvent->area.x,pExposeEvent->area.y,pExposeEvent->area.width,pExposeEvent->area.height));
|
||||
- rClip.left = pGr->tlu(pExposeEvent->area.x);
|
||||
- rClip.top = pGr->tlu(pExposeEvent->area.y);
|
||||
- rClip.width = pGr->tlu(pExposeEvent->area.width)+1;
|
||||
- rClip.height = pGr->tlu(pExposeEvent->area.height)+1;
|
||||
-#if GTK_CHECK_VERSION(3,0,0)
|
||||
+ rClip.left = pGr->tlu(x);
|
||||
+ rClip.top = pGr->tlu(y);
|
||||
+ #if GTK_CHECK_VERSION(3,0,0)
|
||||
+ rClip.width = pGr->tlu(width);
|
||||
+ rClip.height = pGr->tlu(height);
|
||||
static_cast<GR_CairoGraphics *>(pGr)->setCairo(cr);
|
||||
pView->draw(&rClip);
|
||||
static_cast<GR_CairoGraphics *>(pGr)->setCairo(NULL);
|
||||
#else
|
||||
+ rClip.width = pGr->tlu(width)+1;
|
||||
+ rClip.height = pGr->tlu(height)+1;
|
||||
pView->draw(&rClip);
|
||||
#endif
|
||||
}
|
||||
- return FALSE;
|
||||
+ return TRUE;
|
||||
}
|
||||
|
||||
static bool bScrollWait = false;
|
||||
diff --git a/src/af/xap/gtk/xap_UnixFrameImpl.h b/src/af/xap/gtk/xap_UnixFrameImpl.h
|
||||
index 30ee5d8..26fbb2e 100644
|
||||
--- a/src/af/xap/gtk/xap_UnixFrameImpl.h
|
||||
+++ b/src/af/xap/gtk/xap_UnixFrameImpl.h
|
||||
@@ -152,7 +152,7 @@ protected:
|
||||
static gint key_release_event(GtkWidget* w, GdkEventKey* e);
|
||||
static gint delete_event(GtkWidget * w, GdkEvent * /*event*/, gpointer /*data*/);
|
||||
#if GTK_CHECK_VERSION(3,0,0)
|
||||
- static gint draw(GtkWidget * w, cairo_t * cr);
|
||||
+ static gboolean draw(GtkWidget * w, cairo_t * cr);
|
||||
#else
|
||||
static gint expose(GtkWidget * w, GdkEventExpose* pExposeEvent);
|
||||
#endif
|
||||
--
|
||||
2.11.0
|
||||
|
@ -51,5 +51,6 @@ stdenv.mkDerivation rec {
|
||||
maintainers = with maintainers; [ phreedom ebzzry ];
|
||||
inherit (kdelibs4.meta) platforms;
|
||||
license = licenses.gpl2;
|
||||
broken = true;
|
||||
};
|
||||
}
|
||||
|
@ -1,42 +1,26 @@
|
||||
{ stdenv, pkgs, fetchurl, python3Packages, fetchFromGitHub, fetchzip, python3, beancount }:
|
||||
{ stdenv, python3, beancount }:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
version = "1.3";
|
||||
name = "fava-${version}";
|
||||
let
|
||||
inherit (python3.pkgs) buildPythonApplication fetchPypi;
|
||||
in
|
||||
buildPythonApplication rec {
|
||||
pname = "fava";
|
||||
version = "1.5";
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "beancount";
|
||||
repo = "fava";
|
||||
rev = "v${version}";
|
||||
sha256 = "0g0aj0qcmpny6dipi00nks7h3mf5a4jfd6bxjm1rb5807wswcpg8";
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "0d3jncidzvfsxjplzg4cmflqr4mxrbrlj5bh6fpxj529pialpkk6";
|
||||
};
|
||||
|
||||
assets = fetchzip {
|
||||
url = "https://github.com/beancount/fava/releases/download/v${version}/fava-${version}.tar.gz";
|
||||
sha256 = "0yn2psbn436g1w5ixn94z8ca6dfd54izg98979arn0k7slpiccvz";
|
||||
};
|
||||
doCheck = false;
|
||||
|
||||
checkInputs = with python3Packages; [ pytest ];
|
||||
|
||||
checkPhase = ''
|
||||
# pyexcel is optional
|
||||
# the other 2 tests fail due non-unicode locales
|
||||
PATH=$out/bin:$PATH pytest tests \
|
||||
--ignore tests/test_util_excel.py \
|
||||
--ignore tests/test_cli.py \
|
||||
--ignore tests/test_translations.py \
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
cp -r $assets/fava/static/gen $out/${python3.sitePackages}/fava/static
|
||||
'';
|
||||
|
||||
propagatedBuildInputs = with python3Packages;
|
||||
propagatedBuildInputs = with python3.pkgs;
|
||||
[ flask dateutil pygments wheel markdown2 flaskbabel tornado
|
||||
click beancount ];
|
||||
|
||||
meta = {
|
||||
homepage = https://github.com/aumayr/fava;
|
||||
homepage = https://beancount.github.io/fava;
|
||||
description = "Web interface for beancount";
|
||||
license = stdenv.lib.licenses.mit;
|
||||
maintainers = with stdenv.lib.maintainers; [ matthiasbeyer ];
|
||||
|
47
pkgs/applications/office/wordgrinder/default.nix
Normal file
47
pkgs/applications/office/wordgrinder/default.nix
Normal file
@ -0,0 +1,47 @@
|
||||
{ stdenv, fetchFromGitHub, pkgconfig, makeWrapper
|
||||
, lua52Packages, libXft, ncurses, readline, zlib }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "wordgrinder-${version}";
|
||||
version = "0.6-db14181";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
repo = "wordgrinder";
|
||||
owner = "davidgiven";
|
||||
rev = "db141815e8bd1da6e684a1142a59492e516f3041";
|
||||
sha256 = "1l1jqzcqiwnc8r1igfi7ay4pzzhdhss81znnmfr4rc1ia8bpdjc2";
|
||||
};
|
||||
|
||||
makeFlags = [
|
||||
"PREFIX=$(out)"
|
||||
"LUA_INCLUDE=${lua52Packages.lua}/include"
|
||||
"LUA_LIB=${lua52Packages.lua}/lib/liblua.so"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ pkgconfig makeWrapper ];
|
||||
|
||||
buildInputs = [
|
||||
libXft
|
||||
lua52Packages.lua
|
||||
ncurses
|
||||
readline
|
||||
zlib
|
||||
];
|
||||
|
||||
# To be able to find <Xft.h>
|
||||
NIX_CFLAGS_COMPILE = "-I${libXft.dev}/include/X11";
|
||||
|
||||
# Binaries look for LuaFileSystem library (lfs.so) at runtime
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/wordgrinder --set LUA_CPATH "${lua52Packages.luafilesystem}/lib/lua/5.2/lfs.so";
|
||||
wrapProgram $out/bin/xwordgrinder --set LUA_CPATH "${lua52Packages.luafilesystem}/lib/lua/5.2/lfs.so";
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Text-based word processor";
|
||||
homepage = https://cowlark.com/wordgrinder;
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ matthiasbeyer ];
|
||||
platforms = with stdenv.lib.platforms; linux;
|
||||
};
|
||||
}
|
@ -10,7 +10,7 @@ stdenv.mkDerivation {
|
||||
|
||||
buildInputs = [ readline libX11 flex bison libICE libXaw libXext ];
|
||||
|
||||
configureFlags = [ "--enable-x" "--with-x" "--with-readline" "--enable-xspice" "--enable-cider" ];
|
||||
configureFlags = [ "--enable-x" "--with-x" "--with-readline" "--enable-xspice" "--enable-cider" "--with-ngshared" ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "The Next Generation Spice (Electronic Circuit Simulator)";
|
||||
|
@ -1,15 +1,15 @@
|
||||
{ stdenv, fetchFromGitHub, cln, gmp, swig, pkgconfig, readline, libantlr3c,
|
||||
boost, jdk, autoreconfHook, python2, antlr3_4 }:
|
||||
{ stdenv, fetchurl, cln, gmp, swig, pkgconfig
|
||||
, readline, libantlr3c, boost, jdk, autoreconfHook
|
||||
, python2, antlr3_4
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "cvc4-unstable-${version}";
|
||||
version = "2017-05-18";
|
||||
name = "cvc4-${version}";
|
||||
version = "1.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "CVC4";
|
||||
repo = "CVC4";
|
||||
rev = "d77107cc56b0a089364c3d1512813701c155ea93";
|
||||
sha256 = "085bjrrm33rl5pwqx13af9sgni9cfbg70wag6lm08jj41ws411xs";
|
||||
src = fetchurl {
|
||||
url = "http://cvc4.cs.stanford.edu/downloads/builds/src/cvc4-${version}.tar.gz";
|
||||
sha256 = "0yxxawgc9vd2cz883swjlm76rbdkj48n7a8dfppsami530y2rvhi";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
||||
@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
|
||||
"--with-readline"
|
||||
"--with-boost=${boost.dev}"
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
patchShebangs ./src/
|
||||
'';
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "symbiyosys-${version}";
|
||||
version = "2017.10.16";
|
||||
version = "2017.11.05";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cliffordwolf";
|
||||
repo = "symbiyosys";
|
||||
rev = "f403b99fae053baab651e3ec8345a68cb3ba6a96";
|
||||
sha256 = "0jzzlybxaqmhrasfjv3q3skshalr7lvv4p142qgdqz1ig36znbi8";
|
||||
rev = "db9c7e97b8f84ef7e9b18ae630009897c7982a08";
|
||||
sha256 = "0pyznkjm0vjmaf6mpwknmh052qrwy2fzi05h80ysx1bxc51ns0m0";
|
||||
};
|
||||
|
||||
buildInputs = [ python3 yosys ];
|
||||
|
@ -2,38 +2,40 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "yices-${version}";
|
||||
version = "2.5.3";
|
||||
version = "2.5.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/SRI-CSL/yices2/archive/Yices-${version}.tar.gz";
|
||||
name = "${name}-src.tar.gz";
|
||||
sha256 = "0a3zzbvmgyiljzqn6xmc037gismm779p696jywk09j2pqbvp52ac";
|
||||
sha256 = "1k8wmlddi3zv5kgg6xbch3a0s0xqsmsfc7y6z8zrgcyhswl36h7p";
|
||||
};
|
||||
|
||||
patchPhase = ''patchShebangs tests/regress/check.sh'';
|
||||
|
||||
configureFlags = [ "--with-static-gmp=${gmp-static.out}/lib/libgmp.a"
|
||||
"--with-static-gmp-include-dir=${gmp-static.dev}/include"
|
||||
"--enable-mcsat"
|
||||
];
|
||||
nativeBuildInputs = [ autoreconfHook ];
|
||||
buildInputs = [ gmp-static gperf libpoly ];
|
||||
buildInputs = [ gmp-static gperf libpoly ];
|
||||
configureFlags =
|
||||
[ "--with-static-gmp=${gmp-static.out}/lib/libgmp.a"
|
||||
"--with-static-gmp-include-dir=${gmp-static.dev}/include"
|
||||
"--enable-mcsat"
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
doCheck = true;
|
||||
|
||||
# Usual shenanigans
|
||||
patchPhase = ''patchShebangs tests/regress/check.sh'';
|
||||
|
||||
# Includes a fix for the embedded soname being libyices.so.2.5, but
|
||||
# only installing the libyices.so.2.5.1 file.
|
||||
# only installing the libyices.so.2.5.x file.
|
||||
installPhase = ''
|
||||
make install LDCONFIG=true
|
||||
(cd $out/lib && ln -s -f libyices.so.2.5.3 libyices.so.2.5)
|
||||
(cd $out/lib && ln -s -f libyices.so.${version} libyices.so.2.5)
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A high-performance theorem prover and SMT solver";
|
||||
homepage = "http://yices.csl.sri.com";
|
||||
license = licenses.gpl3;
|
||||
platforms = platforms.linux ++ platforms.darwin;
|
||||
platforms = with platforms; linux ++ darwin;
|
||||
maintainers = [ maintainers.thoughtpolice ];
|
||||
};
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user