Merge branch 'master' into staging

This commit is contained in:
Shea Levy 2018-03-20 08:38:28 -04:00
commit 4250dd5de4
No known key found for this signature in database
GPG key ID: 5C0BD6957D86FE27
382 changed files with 9537 additions and 4559 deletions

1
.github/CODEOWNERS vendored
View file

@ -83,7 +83,6 @@
/pkgs/applications/editors/eclipse @rycee
# https://github.com/NixOS/nixpkgs/issues/31401
/lib/maintainers.nix @ghost
/lib/licenses.nix @ghost
# Qt / KDE

View file

@ -81,6 +81,10 @@ pkgs.stdenv.mkDerivation {
inputFile = ./languages-frameworks/vim.md;
outputFile = "./languages-frameworks/vim.xml";
}
+ toDocbook {
inputFile = ./languages-frameworks/emscripten.md;
outputFile = "./languages-frameworks/emscripten.xml";
}
+ ''
echo ${lib.nixpkgsVersion} > .version

View file

@ -0,0 +1,185 @@
# User's Guide to Emscripten in Nixpkgs
[Emscripten](https://github.com/kripken/emscripten): An LLVM-to-JavaScript Compiler
This section of the manual covers how to use `emscripten` in nixpkgs.
Minimal requirements:
* nix
* nixpkgs
Modes of use of `emscripten`:
* **Imperative usage** (on the command line):
If you want to work with `emcc`, `emconfigure` and `emmake` as you are used to from Ubuntu and similar distributions you can use these commands:
* `nix-env -i emscripten`
* `nix-shell -p emscripten`
* **Declarative usage**:
This mode is far more power full since this makes use of `nix` for dependency management of emscripten libraries and targets by using the `mkDerivation` which is implemented by `pkgs.emscriptenStdenv` and `pkgs.buildEmscriptenPackage`. The source for the packages is in `pkgs/top-level/emscripten-packages.nix` and the abstraction behind it in `pkgs/development/em-modules/generic/default.nix`.
* build and install all packages:
* `nix-env -iA emscriptenPackages`
* dev-shell for zlib implementation hacking:
* `nix-shell -A emscriptenPackages.zlib`
## Imperative usage
A few things to note:
* `export EMCC_DEBUG=2` is nice for debugging
* `~/.emscripten`, the build artifact cache sometimes creates issues and needs to be removed from time to time
## Declarative usage
Let's see two different examples from `pkgs/top-level/emscripten-packages.nix`:
* `pkgs.zlib.override`
* `pkgs.buildEmscriptenPackage`
Both are interesting concepts.
A special requirement of the `pkgs.buildEmscriptenPackage` is the `doCheck = true` is a default meaning that each emscriptenPackage requires a `checkPhase` implemented.
* Use `export EMCC_DEBUG=2` from within a emscriptenPackage's `phase` to get more detailed debug output what is going wrong.
* ~/.emscripten cache is requiring us to set `HOME=$TMPDIR` in individual phases. This makes compilation slower but also makes it more deterministic.
### Usage 1: pkgs.zlib.override
This example uses `zlib` from nixpkgs but instead of compiling **C** to **ELF** it compiles **C** to **JS** since we were using `pkgs.zlib.override` and changed stdenv to `pkgs.emscriptenStdenv`. A few adaptions and hacks were set in place to make it working. One advantage is that when `pkgs.zlib` is updated, it will automatically update this package as well. However, this can also be the downside...
See the `zlib` example:
zlib = (pkgs.zlib.override {
stdenv = pkgs.emscriptenStdenv;
}).overrideDerivation
(old: rec {
buildInputs = old.buildInputs ++ [ pkgconfig ];
# we need to reset this setting!
NIX_CFLAGS_COMPILE="";
configurePhase = ''
# FIXME: Some tests require writing at $HOME
HOME=$TMPDIR
runHook preConfigure
#export EMCC_DEBUG=2
emconfigure ./configure --prefix=$out --shared
runHook postConfigure
'';
dontStrip = true;
outputs = [ "out" ];
buildPhase = ''
emmake make
'';
installPhase = ''
emmake make install
'';
checkPhase = ''
echo "================= testing zlib using node ================="
echo "Compiling a custom test"
set -x
emcc -O2 -s EMULATE_FUNCTION_POINTER_CASTS=1 test/example.c -DZ_SOLO \
libz.so.${old.version} -I . -o example.js
echo "Using node to execute the test"
${pkgs.nodejs}/bin/node ./example.js
set +x
if [ $? -ne 0 ]; then
echo "test failed for some reason"
exit 1;
else
echo "it seems to work! very good."
fi
echo "================= /testing zlib using node ================="
'';
postPatch = pkgs.stdenv.lib.optionalString pkgs.stdenv.isDarwin ''
substituteInPlace configure \
--replace '/usr/bin/libtool' 'ar' \
--replace 'AR="libtool"' 'AR="ar"' \
--replace 'ARFLAGS="-o"' 'ARFLAGS="-r"'
'';
});
### Usage 2: pkgs.buildEmscriptenPackage
This `xmlmirror` example features a emscriptenPackage which is defined completely from this context and no `pkgs.zlib.override` is used.
xmlmirror = pkgs.buildEmscriptenPackage rec {
name = "xmlmirror";
buildInputs = [ pkgconfig autoconf automake libtool gnumake libxml2 nodejs openjdk json_c ];
nativeBuildInputs = [ pkgconfig zlib ];
src = pkgs.fetchgit {
url = "https://gitlab.com/odfplugfest/xmlmirror.git";
rev = "4fd7e86f7c9526b8f4c1733e5c8b45175860a8fd";
sha256 = "1jasdqnbdnb83wbcnyrp32f36w3xwhwp0wq8lwwmhqagxrij1r4b";
};
configurePhase = ''
rm -f fastXmlLint.js*
# a fix for ERROR:root:For asm.js, TOTAL_MEMORY must be a multiple of 16MB, was 234217728
# https://gitlab.com/odfplugfest/xmlmirror/issues/8
sed -e "s/TOTAL_MEMORY=234217728/TOTAL_MEMORY=268435456/g" -i Makefile.emEnv
# https://github.com/kripken/emscripten/issues/6344
# https://gitlab.com/odfplugfest/xmlmirror/issues/9
sed -e "s/\$(JSONC_LDFLAGS) \$(ZLIB_LDFLAGS) \$(LIBXML20_LDFLAGS)/\$(JSONC_LDFLAGS) \$(LIBXML20_LDFLAGS) \$(ZLIB_LDFLAGS) /g" -i Makefile.emEnv
# https://gitlab.com/odfplugfest/xmlmirror/issues/11
sed -e "s/-o fastXmlLint.js/-s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]' -o fastXmlLint.js/g" -i Makefile.emEnv
'';
buildPhase = ''
HOME=$TMPDIR
make -f Makefile.emEnv
'';
outputs = [ "out" "doc" ];
installPhase = ''
mkdir -p $out/share
mkdir -p $doc/share/${name}
cp Demo* $out/share
cp -R codemirror-5.12 $out/share
cp fastXmlLint.js* $out/share
cp *.xsd $out/share
cp *.js $out/share
cp *.xhtml $out/share
cp *.html $out/share
cp *.json $out/share
cp *.rng $out/share
cp README.md $doc/share/${name}
'';
checkPhase = ''
'';
};
### Declarative debugging
Use `nix-shell -I nixpkgs=/some/dir/nixpkgs -A emscriptenPackages.libz` and from there you can go trough the individual steps. This makes it easy to build a good `unit test` or list the files of the project.
1. `nix-shell -I nixpkgs=/some/dir/nixpkgs -A emscriptenPackages.libz`
2. `cd /tmp/`
3. `unpackPhase`
4. cd libz-1.2.3
5. `configurePhase`
6. `buildPhase`
7. ... happy hacking...
## Summary
Using this toolchain makes it easy to leverage `nix` from NixOS, MacOSX or even Windows (WSL+ubuntu+nix). This toolchain is reproducible, behaves like the rest of the packages from nixpkgs and contains a set of well working examples to learn and adapt from.
If in trouble, ask the maintainers.

View file

@ -30,6 +30,7 @@ such as Perl or Haskell. These are described in this chapter.</para>
<xi:include href="rust.xml" />
<xi:include href="texlive.xml" />
<xi:include href="vim.xml" />
<xi:include href="emscripten.xml" />
</chapter>

View file

@ -174,7 +174,7 @@ meta-attributes</title>
maintainers of this Nix expression. If
you would like to be a maintainer of a package, you may want to add
yourself to <link
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/lib/maintainers.nix"><filename>nixpkgs/lib/maintainers.nix</filename></link>
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/maintainers/maintainer-list.nix"><filename>nixpkgs/maintainers/maintainer-list.nix</filename></link>
and write something like <literal>[ stdenv.lib.maintainers.alice
stdenv.lib.maintainers.bob ]</literal>.</para></listitem>
</varlistentry>

View file

@ -47,7 +47,7 @@ let
filesystem = callLibs ./filesystem.nix;
# back-compat aliases
platforms = systems.doubles;
platforms = systems.forMeta;
inherit (builtins) add addErrorContext attrNames
concatLists deepSeq elem elemAt filter genericClosure genList

View file

@ -179,6 +179,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
fullName = "CeCILL-C Free Software License Agreement";
};
cpal10 = spdx {
spdxId = "CPAL-1.0";
fullName = "Common Public Attribution License 1.0";
};
cpl10 = spdx {
spdxId = "CPL-1.0";
fullName = "Common Public License 1.0";

View file

@ -67,4 +67,23 @@ rec {
*/
hiPrioSet = set: mapDerivationAttrset hiPrio set;
/* Check to see if a platform is matched by the given `meta.platforms`
element.
A `meta.platform` pattern is either
1. (legacy) a system string.
2. (modern) a pattern for the platform `parsed` field.
We can inject these into a patten for the whole of a structured platform,
and then match that.
*/
platformMatch = platform: elem: let
pattern =
if builtins.isString elem
then { system = elem; }
else { parsed = elem; };
in lib.matchAttrs pattern platform;
}

View file

@ -3,6 +3,7 @@
rec {
doubles = import ./doubles.nix { inherit lib; };
forMeta = import ./for-meta.nix { inherit lib; };
parse = import ./parse.nix { inherit lib; };
inspect = import ./inspect.nix { inherit lib; };
platforms = import ./platforms.nix { inherit lib; };

View file

@ -30,14 +30,14 @@ in rec {
aarch64 = filterDoubles predicates.isAarch64;
x86 = filterDoubles predicates.isx86;
i686 = filterDoubles predicates.isi686;
mips = filterDoubles predicates.isMips;
x86_64 = filterDoubles predicates.isx86_64;
mips = filterDoubles predicates.isMips;
cygwin = filterDoubles predicates.isCygwin;
darwin = filterDoubles predicates.isDarwin;
freebsd = filterDoubles predicates.isFreeBSD;
# Should be better, but MinGW is unclear, and HURD is bit-rotted.
gnu = filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnu; });
gnu = filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnu; });
illumos = filterDoubles predicates.isSunOS;
linux = filterDoubles predicates.isLinux;
netbsd = filterDoubles predicates.isNetBSD;

27
lib/systems/for-meta.nix Normal file
View file

@ -0,0 +1,27 @@
{ lib }:
let
inherit (lib.systems) parse;
inherit (lib.systems.inspect) patterns;
in rec {
inherit (lib.systems.doubles) all mesaPlatforms;
none = [];
arm = [ patterns.isArm ];
aarch64 = [ patterns.isAarch64 ];
x86 = [ patterns.isx86 ];
i686 = [ patterns.isi686 ];
x86_64 = [ patterns.isx86_64 ];
mips = [ patterns.isMips ];
cygwin = [ patterns.isCygwin ];
darwin = [ patterns.isDarwin ];
freebsd = [ patterns.isFreeBSD ];
# Should be better, but MinGW is unclear, and HURD is bit-rotted.
gnu = [ { kernel = parse.kernels.linux; abi = parse.abis.gnu; } ];
illumos = [ patterns.isSunOS ];
linux = [ patterns.isLinux ];
netbsd = [ patterns.isNetBSD ];
openbsd = [ patterns.isOpenBSD ];
unix = patterns.isUnix; # Actually a list
}

View file

@ -5,51 +5,51 @@ with lib.lists;
rec {
patterns = rec {
i686 = { cpu = cpuTypes.i686; };
x86_64 = { cpu = cpuTypes.x86_64; };
PowerPC = { cpu = cpuTypes.powerpc; };
x86 = { cpu = { family = "x86"; }; };
Arm = { cpu = { family = "arm"; }; };
Aarch64 = { cpu = { family = "aarch64"; }; };
Mips = { cpu = { family = "mips"; }; };
RiscV = { cpu = { family = "riscv"; }; };
Wasm = { cpu = { family = "wasm"; }; };
isi686 = { cpu = cpuTypes.i686; };
isx86_64 = { cpu = cpuTypes.x86_64; };
isPowerPC = { cpu = cpuTypes.powerpc; };
isx86 = { cpu = { family = "x86"; }; };
isArm = { cpu = { family = "arm"; }; };
isAarch64 = { cpu = { family = "aarch64"; }; };
isMips = { cpu = { family = "mips"; }; };
isRiscV = { cpu = { family = "riscv"; }; };
isWasm = { cpu = { family = "wasm"; }; };
"32bit" = { cpu = { bits = 32; }; };
"64bit" = { cpu = { bits = 64; }; };
BigEndian = { cpu = { significantByte = significantBytes.bigEndian; }; };
LittleEndian = { cpu = { significantByte = significantBytes.littleEndian; }; };
is32bit = { cpu = { bits = 32; }; };
is64bit = { cpu = { bits = 64; }; };
isBigEndian = { cpu = { significantByte = significantBytes.bigEndian; }; };
isLittleEndian = { cpu = { significantByte = significantBytes.littleEndian; }; };
BSD = { kernel = { families = { inherit (kernelFamilies) bsd; }; }; };
Unix = [ BSD Darwin Linux SunOS Hurd Cygwin ];
isBSD = { kernel = { families = { inherit (kernelFamilies) bsd; }; }; };
isDarwin = { kernel = { families = { inherit (kernelFamilies) darwin; }; }; };
isUnix = [ isBSD isDarwin isLinux isSunOS isHurd isCygwin ];
Darwin = { kernel = kernels.darwin; };
Linux = { kernel = kernels.linux; };
SunOS = { kernel = kernels.solaris; };
FreeBSD = { kernel = kernels.freebsd; };
Hurd = { kernel = kernels.hurd; };
NetBSD = { kernel = kernels.netbsd; };
OpenBSD = { kernel = kernels.openbsd; };
Windows = { kernel = kernels.windows; };
Cygwin = { kernel = kernels.windows; abi = abis.cygnus; };
MinGW = { kernel = kernels.windows; abi = abis.gnu; };
isMacOS = { kernel = kernels.macos; };
isiOS = { kernel = kernels.ios; };
isLinux = { kernel = kernels.linux; };
isSunOS = { kernel = kernels.solaris; };
isFreeBSD = { kernel = kernels.freebsd; };
isHurd = { kernel = kernels.hurd; };
isNetBSD = { kernel = kernels.netbsd; };
isOpenBSD = { kernel = kernels.openbsd; };
isWindows = { kernel = kernels.windows; };
isCygwin = { kernel = kernels.windows; abi = abis.cygnus; };
isMinGW = { kernel = kernels.windows; abi = abis.gnu; };
Android = [ { abi = abis.android; } { abi = abis.androideabi; } ];
Musl = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf ];
isAndroid = [ { abi = abis.android; } { abi = abis.androideabi; } ];
isMusl = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf ];
Kexecable = map (family: { kernel = kernels.linux; cpu.family = family; })
[ "x86" "arm" "aarch64" "mips" ];
Efi = map (family: { cpu.family = family; })
[ "x86" "arm" "aarch64" ];
Seccomputable = map (family: { kernel = kernels.linux; cpu.family = family; })
[ "x86" "arm" "aarch64" "mips" ];
isKexecable = map (family: { kernel = kernels.linux; cpu.family = family; })
[ "x86" "arm" "aarch64" "mips" ];
isEfi = map (family: { cpu.family = family; })
[ "x86" "arm" "aarch64" ];
isSeccomputable = map (family: { kernel = kernels.linux; cpu.family = family; })
[ "x86" "arm" "aarch64" "mips" ];
};
matchAnyAttrs = patterns:
if builtins.isList patterns then attrs: any (pattern: matchAttrs pattern attrs) patterns
else matchAttrs patterns;
predicates = mapAttrs'
(name: value: nameValuePair ("is" + name) (matchAnyAttrs value))
patterns;
predicates = mapAttrs (_: matchAnyAttrs) patterns;
}

View file

@ -134,6 +134,7 @@ rec {
kernelFamilies = setTypes types.openKernelFamily {
bsd = {};
darwin = {};
};
################################################################################
@ -149,7 +150,10 @@ rec {
types.kernel = enum (attrValues kernels);
kernels = with execFormats; with kernelFamilies; setTypes types.openKernel {
darwin = { execFormat = macho; families = { }; };
# TODO(@Ericson2314): Don't want to mass-rebuild yet to keeping 'darwin' as
# the nnormalized name for macOS.
macos = { execFormat = macho; families = { inherit darwin; }; name = "darwin"; };
ios = { execFormat = macho; families = { inherit darwin; }; };
freebsd = { execFormat = elf; families = { inherit bsd; }; };
hurd = { execFormat = elf; families = { }; };
linux = { execFormat = elf; families = { }; };
@ -159,9 +163,13 @@ rec {
solaris = { execFormat = elf; families = { }; };
windows = { execFormat = pe; families = { }; };
} // { # aliases
# 'darwin' is the kernel for all of them. We choose macOS by default.
darwin = kernels.macos;
# TODO(@Ericson2314): Handle these Darwin version suffixes more generally.
darwin10 = kernels.darwin;
darwin14 = kernels.darwin;
darwin10 = kernels.macos;
darwin14 = kernels.macos;
watchos = kernels.ios;
tvos = kernels.ios;
win32 = kernels.windows;
};
@ -263,8 +271,8 @@ rec {
mkSystemFromString = s: mkSystemFromSkeleton (mkSkeletonFromList (lib.splitString "-" s));
doubleFromSystem = { cpu, vendor, kernel, abi, ... }:
if abi == abis.cygnus
then "${cpu.name}-cygwin"
/**/ if abi == abis.cygnus then "${cpu.name}-cygwin"
else if kernel.families ? darwin then "${cpu.name}-darwin"
else "${cpu.name}-${kernel.name}";
tripleFromSystem = { cpu, vendor, kernel, abi, ... } @ sys: assert isSystem sys; let

View file

@ -63,6 +63,10 @@
github = "DmitryTsygankov";
name = "Dmitry Tsygankov";
};
Esteth = {
email = "adam.copp@gmail.com";
name = "Adam Copp";
};
FireyFly = {
email = "nix@firefly.nu";
github = "FireyFly";
@ -87,6 +91,11 @@
github = "MP2E";
name = "Cray Elliott";
};
Mogria = {
email = "m0gr14@gmail.com";
github = "mogria";
name = "Mogria";
};
MostAwesomeDude = {
email = "cds@corbinsimpson.com";
github = "MostAwesomeDude";
@ -617,6 +626,11 @@
github = "bradediger";
name = "Brad Ediger";
};
brainrape = {
email = "martonboros@gmail.com";
github = "brainrape";
name = "Marton Boros";
};
bramd = {
email = "bram@bramd.nl";
github = "bramd";
@ -2037,6 +2051,11 @@
github = "lo1tuma";
name = "Mathias Schreck";
};
lopsided98 = {
email = "benwolsieffer@gmail.com";
github = "lopsided98";
name = "Ben Wolsieffer";
};
loskutov = {
email = "ignat.loskutov@gmail.com";
github = "loskutov";
@ -2164,6 +2183,11 @@
github = "markuskowa";
name = "Markus Kowalewski";
};
marsam = {
email = "marsam@users.noreply.github.com";
github = "marsam";
name = "Mario Rodas";
};
martijnvermaat = {
email = "martijn@vermaat.name";
github = "martijnvermaat";
@ -2920,6 +2944,11 @@
github = "rbasso";
name = "Rafael Basso";
};
rdnetto = {
email = "rdnetto@gmail.com";
github = "rdnetto";
name = "Reuben D'Netto";
};
redbaron = {
email = "ivanov.maxim@gmail.com";
github = "redbaron";
@ -3447,6 +3476,11 @@
github = "tavyc";
name = "Octavian Cerna";
};
tazjin = {
email = "mail@tazj.in";
github = "tazjin";
name = "Vincent Ambo";
};
teh = {
email = "tehunger@gmail.com";
github = "teh";

View file

@ -13,7 +13,7 @@ from pyquery import PyQuery as pq
maintainers_json = subprocess.check_output([
'nix-instantiate', '-E', 'import ./lib/maintainers.nix {}', '--eval', '--json'
'nix-instantiate', '-E', 'import ./maintainers/maintainer-list.nix {}', '--eval', '--json'
])
maintainers = json.loads(maintainers_json)
MAINTAINERS = {v: k for k, v in maintainers.iteritems()}

View file

@ -45,7 +45,7 @@ let
let
maintainer =
if ! builtins.hasAttr maintainer' pkgs.lib.maintainers then
builtins.throw "Maintainer with name `${maintainer'} does not exist in `lib/maintainers.nix`."
builtins.throw "Maintainer with name `${maintainer'} does not exist in `maintainers/maintainer-list.nix`."
else
builtins.getAttr maintainer' pkgs.lib.maintainers;
in

View file

@ -10,7 +10,7 @@ git_data="$(echo "$raw_git_log" | grep 'Author:' |
# Name - nick - email correspondence from log and from maintainer list
# Also there are a few manual entries
maintainers="$(cat "$(dirname "$0")/../../lib/maintainers.nix" |
maintainers="$(cat "$(dirname "$0")/../maintainer-list.nix" |
grep '=' | sed -re 's/\\"/''/g;
s/[ ]*([^ =]*)[ ]*=[ ]*" *(.*[^ ]) *[<](.*)[>] *".*/\1\t\2\t\3/')"
git_lines="$( ( echo "$git_data";

View file

@ -282,8 +282,8 @@ options.mod = mkOption {
option set (<xref linkend='ex-submodule-listof-definition' />).</para>
<example xml:id='ex-submodule-listof-declaration'><title>Declaration of a list
nof submodules</title>
<example xml:id='ex-submodule-listof-declaration'><title>Declaration of a list
of submodules</title>
<screen>
options.mod = mkOption {
description = "submodule example";

View file

@ -15,13 +15,19 @@ let
opengl = config.hardware.opengl;
kernel = pkgs.linux_4_9.override {
extraConfig = ''
KALLSYMS_ALL y
'';
};
in
{
config = mkIf enabled {
nixpkgs.config.xorg.abiCompat = "1.18";
nixpkgs.config.xorg.abiCompat = "1.19";
services.xserver.drivers = singleton
{ name = "amdgpu"; modules = [ package ]; libPath = [ package ]; };
@ -31,6 +37,9 @@ in
boot.extraModulePackages = [ package ];
boot.kernelPackages =
pkgs.recurseIntoAttrs (pkgs.linuxPackagesFor kernel);
boot.blacklistedKernelModules = [ "radeon" ];
hardware.firmware = [ package ];
@ -38,10 +47,15 @@ in
system.activationScripts.setup-amdgpu-pro = ''
mkdir -p /run/lib
ln -sfn ${package}/lib ${package.libCompatDir}
ln -sfn ${package} /run/amdgpu-pro
'' + optionalString opengl.driSupport32Bit ''
ln -sfn ${package32}/lib ${package32.libCompatDir}
'';
system.requiredKernelConfig = with config.lib.kernelConfig; [
(isYes "KALLSYMS_ALL")
];
environment.etc = {
"amd/amdrc".source = package + "/etc/amd/amdrc";
"amd/amdapfxx.blb".source = package + "/etc/amd/amdapfxx.blb";

View file

@ -160,6 +160,7 @@
./services/audio/ympd.nix
./services/backup/almir.nix
./services/backup/bacula.nix
./services/backup/borgbackup.nix
./services/backup/crashplan.nix
./services/backup/crashplan-small-business.nix
./services/backup/mysql-backup.nix

View file

@ -47,8 +47,8 @@ in
default = true;
description =
''
Whether users of the <code>wheel</code> group can execute
commands as super user without entering a password.
Whether users of the <code>wheel</code> group must
provide a password to run commands as super user via <command>sudo</command>.
'';
};

View file

@ -0,0 +1,580 @@
{ config, lib, pkgs, ... }:
with lib;
let
isLocalPath = x:
builtins.substring 0 1 x == "/" # absolute path
|| builtins.substring 0 1 x == "." # relative path
|| builtins.match "[.*:.*]" == null; # not machine:path
mkExcludeFile = cfg:
# Write each exclude pattern to a new line
pkgs.writeText "excludefile" (concatStringsSep "\n" cfg.exclude);
mkKeepArgs = cfg:
# If cfg.prune.keep e.g. has a yearly attribute,
# its content is passed on as --keep-yearly
concatStringsSep " "
(mapAttrsToList (x: y: "--keep-${x}=${toString y}") cfg.prune.keep);
mkBackupScript = cfg: ''
on_exit()
{
exitStatus=$?
# Reset the EXIT handler, or else we're called again on 'exit' below
trap - EXIT
${cfg.postHook}
exit $exitStatus
}
trap 'on_exit' INT TERM QUIT EXIT
archiveName="${cfg.archiveBaseName}-$(date ${cfg.dateFormat})"
archiveSuffix="${optionalString cfg.appendFailedSuffix ".failed"}"
${cfg.preHook}
'' + optionalString cfg.doInit ''
# Run borg init if the repo doesn't exist yet
if ! borg list > /dev/null; then
borg init \
--encryption ${cfg.encryption.mode} \
$extraInitArgs
${cfg.postInit}
fi
'' + ''
borg create \
--compression ${cfg.compression} \
--exclude-from ${mkExcludeFile cfg} \
$extraCreateArgs \
"::$archiveName$archiveSuffix" \
${escapeShellArgs cfg.paths}
'' + optionalString cfg.appendFailedSuffix ''
borg rename "::$archiveName$archiveSuffix" "$archiveName"
'' + ''
${cfg.postCreate}
'' + optionalString (cfg.prune.keep != { }) ''
borg prune \
${mkKeepArgs cfg} \
--prefix ${escapeShellArg cfg.prune.prefix} \
$extraPruneArgs
${cfg.postPrune}
'';
mkPassEnv = cfg: with cfg.encryption;
if passCommand != null then
{ BORG_PASSCOMMAND = passCommand; }
else if passphrase != null then
{ BORG_PASSPHRASE = passphrase; }
else { };
mkBackupService = name: cfg:
let
userHome = config.users.users.${cfg.user}.home;
in nameValuePair "borgbackup-job-${name}" {
description = "BorgBackup job ${name}";
path = with pkgs; [
borgbackup openssh
];
script = mkBackupScript cfg;
serviceConfig = {
User = cfg.user;
Group = cfg.group;
# Only run when no other process is using CPU or disk
CPUSchedulingPolicy = "idle";
IOSchedulingClass = "idle";
ProtectSystem = "strict";
ReadWritePaths =
[ "${userHome}/.config/borg" "${userHome}/.cache/borg" ]
# Borg needs write access to repo if it is not remote
++ optional (isLocalPath cfg.repo) cfg.repo;
PrivateTmp = true;
};
environment = {
BORG_REPO = cfg.repo;
inherit (cfg) extraInitArgs extraCreateArgs extraPruneArgs;
} // (mkPassEnv cfg) // cfg.environment;
inherit (cfg) startAt;
};
# Paths listed in ReadWritePaths must exist before service is started
mkActivationScript = name: cfg:
let
install = "install -o ${cfg.user} -g ${cfg.group}";
in
nameValuePair "borgbackup-job-${name}" (stringAfter [ "users" ] (''
# Eensure that the home directory already exists
# We can't assert createHome == true because that's not the case for root
cd "${config.users.users.${cfg.user}.home}"
${install} -d .config/borg
${install} -d .cache/borg
'' + optionalString (isLocalPath cfg.repo) ''
${install} -d ${escapeShellArg cfg.repo}
''));
mkPassAssertion = name: cfg: {
assertion = with cfg.encryption;
mode != "none" -> passCommand != null || passphrase != null;
message =
"passCommand or passphrase has to be specified because"
+ '' borgbackup.jobs.${name}.encryption != "none"'';
};
mkRepoService = name: cfg:
nameValuePair "borgbackup-repo-${name}" {
description = "Create BorgBackup repository ${name} directory";
script = ''
mkdir -p ${escapeShellArg cfg.path}
chown ${cfg.user}:${cfg.group} ${escapeShellArg cfg.path}
'';
serviceConfig = {
# The service's only task is to ensure that the specified path exists
Type = "oneshot";
};
wantedBy = [ "multi-user.target" ];
};
mkAuthorizedKey = cfg: appendOnly: key:
let
# Because of the following line, clients do not need to specify an absolute repo path
cdCommand = "cd ${escapeShellArg cfg.path}";
restrictedArg = "--restrict-to-${if cfg.allowSubRepos then "path" else "repository"} .";
appendOnlyArg = optionalString appendOnly "--append-only";
quotaArg = optionalString (cfg.quota != null) "--storage-quota ${cfg.quota}";
serveCommand = "borg serve ${restrictedArg} ${appendOnlyArg} ${quotaArg}";
in
''command="${cdCommand} && ${serveCommand}",restrict ${key}'';
mkUsersConfig = name: cfg: {
users.${cfg.user} = {
openssh.authorizedKeys.keys =
(map (mkAuthorizedKey cfg false) cfg.authorizedKeys
++ map (mkAuthorizedKey cfg true) cfg.authorizedKeysAppendOnly);
useDefaultShell = true;
};
groups.${cfg.group} = { };
};
mkKeysAssertion = name: cfg: {
assertion = cfg.authorizedKeys != [ ] || cfg.authorizedKeysAppendOnly != [ ];
message =
"borgbackup.repos.${name} does not make sense"
+ " without at least one public key";
};
in {
meta.maintainers = with maintainers; [ dotlambda ];
###### interface
options.services.borgbackup.jobs = mkOption {
description = "Deduplicating backups using BorgBackup.";
default = { };
example = literalExample ''
{
rootBackup = {
paths = "/";
exclude = [ "/nix" ];
repo = "/path/to/local/repo";
encryption = {
mode = "repokey";
passphrase = "secret";
};
compression = "auto,lzma";
startAt = "weekly";
};
}
'';
type = types.attrsOf (types.submodule (let globalConfig = config; in
{ name, config, ... }: {
options = {
paths = mkOption {
type = with types; either path (nonEmptyListOf path);
description = "Path(s) to back up.";
example = "/home/user";
apply = x: if isList x then x else [ x ];
};
repo = mkOption {
type = types.str;
description = "Remote or local repository to back up to.";
example = "user@machine:/path/to/repo";
};
archiveBaseName = mkOption {
type = types.strMatching "[^/{}]+";
default = "${globalConfig.networking.hostName}-${name}";
defaultText = "\${config.networking.hostName}-<name>";
description = ''
How to name the created archives. A timestamp, whose format is
determined by <option>dateFormat</option>, will be appended. The full
name can be modified at runtime (<literal>$archiveName</literal>).
Placeholders like <literal>{hostname}</literal> must not be used.
'';
};
dateFormat = mkOption {
type = types.str;
description = ''
Arguments passed to <command>date</command>
to create a timestamp suffix for the archive name.
'';
default = "+%Y-%m-%dT%H:%M:%S";
example = "-u +%s";
};
startAt = mkOption {
type = with types; either str (listOf str);
default = "daily";
description = ''
When or how often the backup should run.
Must be in the format described in
<citerefentry><refentrytitle>systemd.time</refentrytitle>
<manvolnum>7</manvolnum></citerefentry>.
If you do not want the backup to start
automatically, use <literal>[ ]</literal>.
'';
};
user = mkOption {
type = types.str;
description = ''
The user <command>borg</command> is run as.
User or group need read permission
for the specified <option>paths</option>.
'';
default = "root";
};
group = mkOption {
type = types.str;
description = ''
The group borg is run as. User or group needs read permission
for the specified <option>paths</option>.
'';
default = "root";
};
encryption.mode = mkOption {
type = types.enum [
"repokey" "keyfile"
"repokey-blake2" "keyfile-blake2"
"authenticated" "authenticated-blake2"
"none"
];
description = ''
Encryption mode to use. Setting a mode
other than <literal>"none"</literal> requires
you to specify a <option>passCommand</option>
or a <option>passphrase</option>.
'';
};
encryption.passCommand = mkOption {
type = with types; nullOr str;
description = ''
A command which prints the passphrase to stdout.
Mutually exclusive with <option>passphrase</option>.
'';
default = null;
example = "cat /path/to/passphrase_file";
};
encryption.passphrase = mkOption {
type = with types; nullOr str;
description = ''
The passphrase the backups are encrypted with.
Mutually exclusive with <option>passCommand</option>.
If you do not want the passphrase to be stored in the
world-readable Nix store, use <option>passCommand</option>.
'';
default = null;
};
compression = mkOption {
# "auto" is optional,
# compression mode must be given,
# compression level is optional
type = types.strMatching "none|(auto,)?(lz4|zstd|zlib|lzma)(,[[:digit:]]{1,2})?";
description = ''
Compression method to use. Refer to
<command>borg help compression</command>
for all available options.
'';
default = "lz4";
example = "auto,lzma";
};
exclude = mkOption {
type = with types; listOf str;
description = ''
Exclude paths matching any of the given patterns. See
<command>borg help patterns</command> for pattern syntax.
'';
default = [ ];
example = [
"/home/*/.cache"
"/nix"
];
};
doInit = mkOption {
type = types.bool;
description = ''
Run <command>borg init</command> if the
specified <option>repo</option> does not exist.
You should set this to <literal>false</literal>
if the repository is located on an external drive
that might not always be mounted.
'';
default = true;
};
appendFailedSuffix = mkOption {
type = types.bool;
description = ''
Append a <literal>.failed</literal> suffix
to the archive name, which is only removed if
<command>borg create</command> has a zero exit status.
'';
default = true;
};
prune.keep = mkOption {
# Specifying e.g. `prune.keep.yearly = -1`
# means there is no limit of yearly archives to keep
# The regex is for use with e.g. --keep-within 1y
type = with types; attrsOf (either int (strMatching "[[:digit:]]+[Hdwmy]"));
description = ''
Prune a repository by deleting all archives not matching any of the
specified retention options. See <command>borg help prune</command>
for the available options.
'';
default = { };
example = literalExample ''
{
within = "1d"; # Keep all archives from the last day
daily = 7;
weekly = 4;
monthly = -1; # Keep at least one archive for each month
}
'';
};
prune.prefix = mkOption {
type = types.str;
description = ''
Only consider archive names starting with this prefix for pruning.
By default, only archives created by this job are considered.
Use <literal>""</literal> to consider all archives.
'';
default = config.archiveBaseName;
defaultText = "\${archiveBaseName}";
};
environment = mkOption {
type = with types; attrsOf str;
description = ''
Environment variables passed to the backup script.
You can for example specify which SSH key to use.
'';
default = { };
example = { BORG_RSH = "ssh -i /path/to/key"; };
};
preHook = mkOption {
type = types.lines;
description = ''
Shell commands to run before the backup.
This can for example be used to mount file systems.
'';
default = "";
example = ''
# To add excluded paths at runtime
extraCreateArgs="$extraCreateArgs --exclude /some/path"
'';
};
postInit = mkOption {
type = types.lines;
description = ''
Shell commands to run after <command>borg init</command>.
'';
default = "";
};
postCreate = mkOption {
type = types.lines;
description = ''
Shell commands to run after <command>borg create</command>. The name
of the created archive is stored in <literal>$archiveName</literal>.
'';
default = "";
};
postPrune = mkOption {
type = types.lines;
description = ''
Shell commands to run after <command>borg prune</command>.
'';
default = "";
};
postHook = mkOption {
type = types.lines;
description = ''
Shell commands to run just before exit. They are executed
even if a previous command exits with a non-zero exit code.
The latter is available as <literal>$exitStatus</literal>.
'';
default = "";
};
extraInitArgs = mkOption {
type = types.str;
description = ''
Additional arguments for <command>borg init</command>.
Can also be set at runtime using <literal>$extraInitArgs</literal>.
'';
default = "";
example = "--append-only";
};
extraCreateArgs = mkOption {
type = types.str;
description = ''
Additional arguments for <command>borg create</command>.
Can also be set at runtime using <literal>$extraCreateArgs</literal>.
'';
default = "";
example = "--stats --checkpoint-interval 600";
};
extraPruneArgs = mkOption {
type = types.str;
description = ''
Additional arguments for <command>borg prune</command>.
Can also be set at runtime using <literal>$extraPruneArgs</literal>.
'';
default = "";
example = "--save-space";
};
};
}
));
};
options.services.borgbackup.repos = mkOption {
description = ''
Serve BorgBackup repositories to given public SSH keys,
restricting their access to the repository only.
Also, clients do not need to specify the absolute path when accessing the repository,
i.e. <literal>user@machine:.</literal> is enough. (Note colon and dot.)
'';
default = { };
type = types.attrsOf (types.submodule (
{ name, config, ... }: {
options = {
path = mkOption {
type = types.path;
description = ''
Where to store the backups. Note that the directory
is created automatically, with correct permissions.
'';
default = "/var/lib/borgbackup";
};
user = mkOption {
type = types.str;
description = ''
The user <command>borg serve</command> is run as.
User or group needs write permission
for the specified <option>path</option>.
'';
default = "borg";
};
group = mkOption {
type = types.str;
description = ''
The group <command>borg serve</command> is run as.
User or group needs write permission
for the specified <option>path</option>.
'';
default = "borg";
};
authorizedKeys = mkOption {
type = with types; listOf str;
description = ''
Public SSH keys that are given full write access to this repository.
You should use a different SSH key for each repository you write to, because
the specified keys are restricted to running <command>borg serve</command>
and can only access this single repository.
'';
default = [ ];
};
authorizedKeysAppendOnly = mkOption {
type = with types; listOf str;
description = ''
Public SSH keys that can only be used to append new data (archives) to the repository.
Note that archives can still be marked as deleted and are subsequently removed from disk
upon accessing the repo with full write access, e.g. when pruning.
'';
default = [ ];
};
allowSubRepos = mkOption {
type = types.bool;
description = ''
Allow clients to create repositories in subdirectories of the
specified <option>path</option>. These can be accessed using
<literal>user@machine:path/to/subrepo</literal>. Note that a
<option>quota</option> applies to repositories independently.
Therefore, if this is enabled, clients can create multiple
repositories and upload an arbitrary amount of data.
'';
default = false;
};
quota = mkOption {
# See the definition of parse_file_size() in src/borg/helpers/parseformat.py
type = with types; nullOr (strMatching "[[:digit:].]+[KMGTP]?");
description = ''
Storage quota for the repository. This quota is ensured for all
sub-repositories if <option>allowSubRepos</option> is enabled
but not for the overall storage space used.
'';
default = null;
example = "100G";
};
};
}
));
};
###### implementation
config = mkIf (with config.services.borgbackup; jobs != { } || repos != { })
(with config.services.borgbackup; {
assertions =
mapAttrsToList mkPassAssertion jobs
++ mapAttrsToList mkKeysAssertion repos;
system.activationScripts = mapAttrs' mkActivationScript jobs;
systemd.services =
# A job named "foo" is mapped to systemd.services.borgbackup-job-foo
mapAttrs' mkBackupService jobs
# A repo named "foo" is mapped to systemd.services.borgbackup-repo-foo
// mapAttrs' mkRepoService repos;
users = mkMerge (mapAttrsToList mkUsersConfig repos);
environment.systemPackages = with pkgs; [ borgbackup ];
});
}

View file

@ -145,6 +145,11 @@ in {
};
config = mkIf cfg.enable {
# server references the dejavu fonts
environment.systemPackages = [
pkgs.dejavu_fonts
];
users.extraGroups = optional (cfg.group == "jenkins") {
name = "jenkins";
gid = config.ids.gids.jenkins;
@ -200,10 +205,12 @@ in {
${replacePlugins}
'';
# For reference: https://wiki.jenkins.io/display/JENKINS/JenkinsLinuxStartupScript
script = ''
${pkgs.jdk}/bin/java ${concatStringsSep " " cfg.extraJavaOptions} -jar ${cfg.package}/webapps/jenkins.war --httpListenAddress=${cfg.listenAddress} \
--httpPort=${toString cfg.port} \
--prefix=${cfg.prefix} \
-Djava.awt.headless=true \
${concatStringsSep " " cfg.extraOptions}
'';

View file

@ -40,6 +40,10 @@ let
SECRET_KEY = #secretkey#
INSTALL_LOCK = true
[log]
ROOT_PATH = ${cfg.log.rootPath}
LEVEL = ${cfg.log.level}
${cfg.extraConfig}
'';
in
@ -65,6 +69,19 @@ in
description = "gitea data directory.";
};
log = {
rootPath = mkOption {
default = "${cfg.stateDir}/log";
type = types.str;
description = "Root path for log files.";
};
level = mkOption {
default = "Trace";
type = types.enum [ "Trace" "Debug" "Info" "Warn" "Error" "Critical" ];
description = "General log level.";
};
};
user = mkOption {
type = types.str;
default = "gitea";
@ -287,6 +304,7 @@ in
description = "Gitea Service";
home = cfg.stateDir;
createHome = true;
useDefaultShell = true;
};
};

View file

@ -104,7 +104,6 @@ in {
config = mkIf cfg.enable {
systemd.services.home-assistant = {
description = "Home Assistant";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
preStart = lib.optionalString (cfg.config != null) ''
rm -f ${cfg.configDir}/configuration.yaml
@ -121,6 +120,16 @@ in {
ReadWritePaths = "${cfg.configDir}";
PrivateTmp = true;
};
path = [
"/run/wrappers" # needed for ping
];
};
systemd.targets.home-assistant = rec {
description = "Home Assistant";
wantedBy = [ "multi-user.target" ];
wants = [ "home-assistant.service" ];
after = wants;
};
users.extraUsers.hass = {

View file

@ -25,6 +25,7 @@ let
DATABASE_USER = cfg.database.user;
DATABASE_PASSWORD = cfg.database.password;
DATABASE_PATH = cfg.database.path;
DATABASE_CONN_MAX_LIFETIME = cfg.database.connMaxLifetime;
SECURITY_ADMIN_USER = cfg.security.adminUser;
SECURITY_ADMIN_PASSWORD = cfg.security.adminPassword;
@ -143,6 +144,15 @@ in {
default = "${cfg.dataDir}/data/grafana.db";
type = types.path;
};
connMaxLifetime = mkOption {
description = ''
Sets the maximum amount of time (in seconds) a connection may be reused.
For MySQL this setting should be shorter than the `wait_timeout' variable.
'';
default = 14400;
type = types.int;
};
};
security = {
@ -241,7 +251,9 @@ in {
description = "Grafana Service Daemon";
wantedBy = ["multi-user.target"];
after = ["networking.target"];
environment = mapAttrs' (n: v: nameValuePair "GF_${n}" (toString v)) envOptions;
environment = {
QT_QPA_PLATFORM = "offscreen";
} // mapAttrs' (n: v: nameValuePair "GF_${n}" (toString v)) envOptions;
serviceConfig = {
ExecStart = "${cfg.package.bin}/bin/grafana-server -homepath ${cfg.dataDir}";
WorkingDirectory = cfg.dataDir;

View file

@ -12,9 +12,12 @@ let
dn = cfg.ldapBindDN;
password = cfg.ldapBindPassword;
};
insecureldap = cfg.ldapInsecure;
userattr = cfg.ldapUserAttr;
baseDN = cfg.ldapBaseDN;
insecureldap = cfg.ldapInsecure;
userattr = cfg.ldapUserAttr;
baseDN = cfg.ldapBaseDN;
enableldapRoles = cfg.enableLdapRoles;
roleAttr = cfg.roleAttr;
groupClassAttr = cfg.groupClassAttr;
};
aws = {
account = cfg.awsAccount;
@ -70,6 +73,24 @@ in {
description = "Password of account to use to query the LDAP server";
};
enableLdapRoles = mkOption {
type = types.bool;
default = false;
description = "Whether to assign user roles based on the user's LDAP group memberships";
};
groupClassAttr = mkOption {
type = types.str;
default = "groupOfNames";
description = "The objectclass attribute to search for groups when enableLdapRoles is true";
};
roleAttr = mkOption {
type = types.str;
default = "businessCategory";
description = "Which LDAP group attribute to search for authorized role ARNs";
};
awsAccount = mkOption {
type = types.str;
description = "AWS account number";

View file

@ -6,13 +6,22 @@ let
cfg = config.services.varnish;
commandLine = "-f ${pkgs.writeText "default.vcl" cfg.config}" +
optionalString (cfg.extraModules != []) " -p vmod_path='${makeSearchPathOutput "lib" "lib/varnish/vmods" ([pkgs.varnish] ++ cfg.extraModules)}' -r vmod_path";
optionalString (cfg.extraModules != []) " -p vmod_path='${makeSearchPathOutput "lib" "lib/varnish/vmods" ([cfg.package] ++ cfg.extraModules)}' -r vmod_path";
in
{
options = {
services.varnish = {
enable = mkEnableOption "Varnish Server";
package = mkOption {
type = types.package;
default = pkgs.varnish5;
defaultText = "pkgs.varnish5";
description = ''
The package to use
'';
};
http_address = mkOption {
type = types.str;
default = "*:6081";
@ -39,7 +48,7 @@ in
extraModules = mkOption {
type = types.listOf types.package;
default = [];
example = literalExample "[ pkgs.varnish-geoip ]";
example = literalExample "[ pkgs.varnish5Packages.geoip ]";
description = "
Varnish modules (except 'std').
";
@ -73,7 +82,7 @@ in
serviceConfig = {
Type = "simple";
PermissionsStartOnly = true;
ExecStart = "${pkgs.varnish}/sbin/varnishd -a ${cfg.http_address} -n ${cfg.stateDir} -F ${cfg.extraCommandLine} ${commandLine}";
ExecStart = "${cfg.package}/sbin/varnishd -a ${cfg.http_address} -n ${cfg.stateDir} -F ${cfg.extraCommandLine} ${commandLine}";
Restart = "always";
RestartSec = "5s";
User = "varnish";
@ -84,13 +93,13 @@ in
};
};
environment.systemPackages = [ pkgs.varnish ];
environment.systemPackages = [ cfg.package ];
# check .vcl syntax at compile time (e.g. before nixops deployment)
system.extraDependencies = [
(pkgs.stdenv.mkDerivation {
name = "check-varnish-syntax";
buildCommand = "${pkgs.varnish}/sbin/varnishd -C ${commandLine} 2> $out";
buildCommand = "${cfg.package}/sbin/varnishd -C ${commandLine} 2> $out || (cat $out; exit 1)";
})
];

View file

@ -12,6 +12,7 @@ in
./afterstep.nix
./bspwm.nix
./dwm.nix
./evilwm.nix
./exwm.nix
./fluxbox.nix
./fvwm.nix

View file

@ -489,7 +489,7 @@ in
networking.interfaces = mkOption {
default = {};
example =
{ eth0.ipv4 = [ {
{ eth0.ipv4.addresses = [ {
address = "131.211.84.78";
prefixLength = 25;
} ];

View file

@ -119,18 +119,10 @@ in {
after = [ "systemd-udev-settle.service" ]
++ optional vswitch.enable "vswitchd.service";
environment = {
LIBVIRTD_ARGS = ''--config "${configFile}" ${concatStringsSep " " cfg.extraOptions}'';
};
environment.LIBVIRTD_ARGS = ''--config "${configFile}" ${concatStringsSep " " cfg.extraOptions}'';
path = with pkgs; [
bridge-utils
dmidecode
dnsmasq
ebtables
cfg.qemuPackage # libvirtd requires qemu-img to manage disk images
]
++ optional vswitch.enable vswitch.package;
path = [ cfg.qemuPackage ] # libvirtd requires qemu-img to manage disk images
++ optional vswitch.enable vswitch.package;
preStart = ''
mkdir -p /var/log/libvirt/qemu -m 755

View file

@ -320,7 +320,7 @@ in
mkOption {
default = [
"-net nic,netdev=user.0,model=virtio"
"-netdev user,id=user.0,\${QEMU_NET_OPTS:+,$QEMU_NET_OPTS}"
"-netdev user,id=user.0\${QEMU_NET_OPTS:+,$QEMU_NET_OPTS}"
];
type = types.listOf types.str;
description = ''

View file

@ -17,14 +17,14 @@ let
} // args);
# Note: only supportedSystems are considered.
callTestOnTheseSystems = systems: fn: args:
forTheseSystems
callTestOnMatchingSystems = systems: fn: args:
forMatchingSystems
(intersectLists supportedSystems systems)
(system: hydraJob (importTest fn args system));
callTest = callTestOnTheseSystems supportedSystems;
callTest = callTestOnMatchingSystems supportedSystems;
callSubTests = callSubTestsOnTheseSystems supportedSystems;
callSubTestsOnTheseSystems = systems: fn: args: let
callSubTests = callSubTestsOnMatchingSystems supportedSystems;
callSubTestsOnMatchingSystems = systems: fn: args: let
discover = attrs: let
subTests = filterAttrs (const (hasAttr "test")) attrs;
in mapAttrs (const (t: hydraJob t.test)) subTests;
@ -127,7 +127,7 @@ in rec {
# Build the initial ramdisk so Hydra can keep track of its size over time.
initialRamdisk = buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.initialRamdisk);
netboot = forTheseSystems [ "x86_64-linux" "aarch64-linux" ] (system: makeNetboot {
netboot = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] (system: makeNetboot {
inherit system;
modules = [
./modules/installer/netboot/netboot-minimal.nix
@ -141,7 +141,7 @@ in rec {
inherit system;
});
iso_graphical = forTheseSystems [ "x86_64-linux" ] (system: makeIso {
iso_graphical = forMatchingSystems [ "x86_64-linux" ] (system: makeIso {
module = ./modules/installer/cd-dvd/installation-cd-graphical-kde.nix;
type = "graphical";
inherit system;
@ -149,7 +149,7 @@ in rec {
# A variant with a more recent (but possibly less stable) kernel
# that might support more hardware.
iso_minimal_new_kernel = forTheseSystems [ "x86_64-linux" ] (system: makeIso {
iso_minimal_new_kernel = forMatchingSystems [ "x86_64-linux" ] (system: makeIso {
module = ./modules/installer/cd-dvd/installation-cd-minimal-new-kernel.nix;
type = "minimal-new-kernel";
inherit system;
@ -157,7 +157,7 @@ in rec {
# A bootable VirtualBox virtual appliance as an OVA file (i.e. packaged OVF).
ova = forTheseSystems [ "x86_64-linux" ] (system:
ova = forMatchingSystems [ "x86_64-linux" ] (system:
with import nixpkgs { inherit system; };
@ -233,9 +233,9 @@ in rec {
tests.boot-stage1 = callTest tests/boot-stage1.nix {};
tests.borgbackup = callTest tests/borgbackup.nix {};
tests.buildbot = callTest tests/buildbot.nix {};
tests.cadvisor = callTestOnTheseSystems ["x86_64-linux"] tests/cadvisor.nix {};
tests.ceph = callTestOnTheseSystems ["x86_64-linux"] tests/ceph.nix {};
tests.chromium = (callSubTestsOnTheseSystems ["x86_64-linux"] tests/chromium.nix {}).stable or {};
tests.cadvisor = callTestOnMatchingSystems ["x86_64-linux"] tests/cadvisor.nix {};
tests.ceph = callTestOnMatchingSystems ["x86_64-linux"] tests/ceph.nix {};
tests.chromium = (callSubTestsOnMatchingSystems ["x86_64-linux"] tests/chromium.nix {}).stable or {};
tests.cjdns = callTest tests/cjdns.nix {};
tests.cloud-init = callTest tests/cloud-init.nix {};
tests.containers-ipv4 = callTest tests/containers-ipv4.nix {};
@ -249,21 +249,21 @@ in rec {
tests.containers-hosts = callTest tests/containers-hosts.nix {};
tests.containers-macvlans = callTest tests/containers-macvlans.nix {};
tests.couchdb = callTest tests/couchdb.nix {};
tests.docker = callTestOnTheseSystems ["x86_64-linux"] tests/docker.nix {};
tests.docker-tools = callTestOnTheseSystems ["x86_64-linux"] tests/docker-tools.nix {};
tests.docker-edge = callTestOnTheseSystems ["x86_64-linux"] tests/docker-edge.nix {};
tests.docker = callTestOnMatchingSystems ["x86_64-linux"] tests/docker.nix {};
tests.docker-tools = callTestOnMatchingSystems ["x86_64-linux"] tests/docker-tools.nix {};
tests.docker-edge = callTestOnMatchingSystems ["x86_64-linux"] tests/docker-edge.nix {};
tests.dovecot = callTest tests/dovecot.nix {};
tests.dnscrypt-proxy = callTestOnTheseSystems ["x86_64-linux"] tests/dnscrypt-proxy.nix {};
tests.dnscrypt-proxy = callTestOnMatchingSystems ["x86_64-linux"] tests/dnscrypt-proxy.nix {};
tests.ecryptfs = callTest tests/ecryptfs.nix {};
tests.etcd = callTestOnTheseSystems ["x86_64-linux"] tests/etcd.nix {};
tests.ec2-nixops = (callSubTestsOnTheseSystems ["x86_64-linux"] tests/ec2.nix {}).boot-ec2-nixops or {};
tests.ec2-config = (callSubTestsOnTheseSystems ["x86_64-linux"] tests/ec2.nix {}).boot-ec2-config or {};
tests.elk = callSubTestsOnTheseSystems ["x86_64-linux"] tests/elk.nix {};
tests.etcd = callTestOnMatchingSystems ["x86_64-linux"] tests/etcd.nix {};
tests.ec2-nixops = (callSubTestsOnMatchingSystems ["x86_64-linux"] tests/ec2.nix {}).boot-ec2-nixops or {};
tests.ec2-config = (callSubTestsOnMatchingSystems ["x86_64-linux"] tests/ec2.nix {}).boot-ec2-config or {};
tests.elk = callSubTestsOnMatchingSystems ["x86_64-linux"] tests/elk.nix {};
tests.env = callTest tests/env.nix {};
tests.ferm = callTest tests/ferm.nix {};
tests.firefox = callTest tests/firefox.nix {};
tests.firewall = callTest tests/firewall.nix {};
tests.fleet = callTestOnTheseSystems ["x86_64-linux"] tests/fleet.nix {};
tests.fleet = callTestOnMatchingSystems ["x86_64-linux"] tests/fleet.nix {};
tests.fwupd = callTest tests/fwupd.nix {};
#tests.gitlab = callTest tests/gitlab.nix {};
tests.gitolite = callTest tests/gitolite.nix {};
@ -296,7 +296,7 @@ in rec {
tests.kernel-copperhead = callTest tests/kernel-copperhead.nix {};
tests.kernel-latest = callTest tests/kernel-latest.nix {};
tests.kernel-lts = callTest tests/kernel-lts.nix {};
tests.kubernetes = callSubTestsOnTheseSystems ["x86_64-linux"] tests/kubernetes/default.nix {};
tests.kubernetes = callSubTestsOnMatchingSystems ["x86_64-linux"] tests/kubernetes/default.nix {};
tests.latestKernel.login = callTest tests/login.nix { latestKernel = true; };
tests.ldap = callTest tests/ldap.nix {};
#tests.lightdm = callTest tests/lightdm.nix {};
@ -326,14 +326,14 @@ in rec {
tests.nginx = callTest tests/nginx.nix { };
tests.nghttpx = callTest tests/nghttpx.nix { };
tests.nix-ssh-serve = callTest tests/nix-ssh-serve.nix { };
tests.novacomd = callTestOnTheseSystems ["x86_64-linux"] tests/novacomd.nix { };
tests.novacomd = callTestOnMatchingSystems ["x86_64-linux"] tests/novacomd.nix { };
tests.leaps = callTest tests/leaps.nix { };
tests.nsd = callTest tests/nsd.nix {};
tests.openssh = callTest tests/openssh.nix {};
tests.openldap = callTest tests/openldap.nix {};
tests.owncloud = callTest tests/owncloud.nix {};
tests.pam-oath-login = callTest tests/pam-oath-login.nix {};
#tests.panamax = callTestOnTheseSystems ["x86_64-linux"] tests/panamax.nix {};
#tests.panamax = callTestOnMatchingSystems ["x86_64-linux"] tests/panamax.nix {};
tests.peerflix = callTest tests/peerflix.nix {};
tests.php-pcre = callTest tests/php-pcre.nix {};
tests.postgresql = callSubTests tests/postgresql.nix {};
@ -366,7 +366,7 @@ in rec {
tests.tomcat = callTest tests/tomcat.nix {};
tests.udisks2 = callTest tests/udisks2.nix {};
tests.vault = callTest tests/vault.nix {};
tests.virtualbox = callSubTestsOnTheseSystems ["x86_64-linux"] tests/virtualbox.nix {};
tests.virtualbox = callSubTestsOnMatchingSystems ["x86_64-linux"] tests/virtualbox.nix {};
tests.wordpress = callTest tests/wordpress.nix {};
tests.xautolock = callTest tests/xautolock.nix {};
tests.xfce = callTest tests/xfce.nix {};

View file

@ -1,21 +1,162 @@
import ./make-test.nix ({ pkgs, ...}: {
import ./make-test.nix ({ pkgs, ... }:
let
passphrase = "supersecret";
dataDir = "/ran:dom/data";
excludeFile = "not_this_file";
keepFile = "important_file";
keepFileData = "important_data";
localRepo = "/root/back:up";
archiveName = "my_archive";
remoteRepo = "borg@server:."; # No need to specify path
privateKey = pkgs.writeText "id_ed25519" ''
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACBx8UB04Q6Q/fwDFjakHq904PYFzG9pU2TJ9KXpaPMcrwAAAJB+cF5HfnBe
RwAAAAtzc2gtZWQyNTUxOQAAACBx8UB04Q6Q/fwDFjakHq904PYFzG9pU2TJ9KXpaPMcrw
AAAEBN75NsJZSpt63faCuaD75Unko0JjlSDxMhYHAPJk2/xXHxQHThDpD9/AMWNqQer3Tg
9gXMb2lTZMn0pelo8xyvAAAADXJzY2h1ZXR6QGt1cnQ=
-----END OPENSSH PRIVATE KEY-----
'';
publicKey = ''
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHHxQHThDpD9/AMWNqQer3Tg9gXMb2lTZMn0pelo8xyv root@client
'';
privateKeyAppendOnly = pkgs.writeText "id_ed25519" ''
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACBacZuz1ELGQdhI7PF6dGFafCDlvh8pSEc4cHjkW0QjLwAAAJC9YTxxvWE8
cQAAAAtzc2gtZWQyNTUxOQAAACBacZuz1ELGQdhI7PF6dGFafCDlvh8pSEc4cHjkW0QjLw
AAAEAAhV7wTl5dL/lz+PF/d4PnZXuG1Id6L/mFEiGT1tZsuFpxm7PUQsZB2Ejs8Xp0YVp8
IOW+HylIRzhweORbRCMvAAAADXJzY2h1ZXR6QGt1cnQ=
-----END OPENSSH PRIVATE KEY-----
'';
publicKeyAppendOnly = ''
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFpxm7PUQsZB2Ejs8Xp0YVp8IOW+HylIRzhweORbRCMv root@client
'';
in {
name = "borgbackup";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ mic92 ];
meta = with pkgs.stdenv.lib; {
maintainers = with maintainers; [ dotlambda ];
};
nodes = {
machine = { config, pkgs, ... }: {
environment.systemPackages = [ pkgs.borgbackup ];
client = { config, pkgs, ... }: {
services.borgbackup.jobs = {
local = rec {
paths = dataDir;
repo = localRepo;
preHook = ''
# Don't append a timestamp
archiveName="${archiveName}"
'';
encryption = {
mode = "repokey";
inherit passphrase;
};
compression = "auto,zlib,9";
prune.keep = {
within = "1y";
yearly = 5;
};
exclude = [ "*/${excludeFile}" ];
postHook = "echo post";
startAt = [ ]; # Do not run automatically
};
remote = {
paths = dataDir;
repo = remoteRepo;
encryption.mode = "none";
startAt = [ ];
environment.BORG_RSH = "ssh -oStrictHostKeyChecking=no -i /root/id_ed25519";
};
remoteAppendOnly = {
paths = dataDir;
repo = remoteRepo;
encryption.mode = "none";
startAt = [ ];
environment.BORG_RSH = "ssh -oStrictHostKeyChecking=no -i /root/id_ed25519.appendOnly";
};
};
};
server = { config, pkgs, ... }: {
services.openssh = {
enable = true;
passwordAuthentication = false;
challengeResponseAuthentication = false;
};
services.borgbackup.repos.repo1 = {
authorizedKeys = [ publicKey ];
path = "/data/borgbackup";
};
# Second repo to make sure the authorizedKeys options are merged correctly
services.borgbackup.repos.repo2 = {
authorizedKeysAppendOnly = [ publicKeyAppendOnly ];
path = "/data/borgbackup";
quota = ".5G";
};
};
};
testScript = ''
my $borg = "BORG_PASSPHRASE=supersecret borg";
$machine->succeed("$borg init --encryption=repokey /tmp/backup");
$machine->succeed("mkdir /tmp/data/ && echo 'data' >/tmp/data/file");
$machine->succeed("$borg create --stats /tmp/backup::test /tmp/data");
$machine->succeed("$borg extract /tmp/backup::test");
$machine->succeed('c=$(cat data/file) && echo "c = $c" >&2 && [[ "$c" == "data" ]]');
startAll;
$client->fail('test -d "${remoteRepo}"');
$client->succeed("cp ${privateKey} /root/id_ed25519");
$client->succeed("chmod 0600 /root/id_ed25519");
$client->succeed("cp ${privateKeyAppendOnly} /root/id_ed25519.appendOnly");
$client->succeed("chmod 0600 /root/id_ed25519.appendOnly");
$client->succeed("mkdir -p ${dataDir}");
$client->succeed("touch ${dataDir}/${excludeFile}");
$client->succeed("echo '${keepFileData}' > ${dataDir}/${keepFile}");
subtest "local", sub {
my $borg = "BORG_PASSPHRASE='${passphrase}' borg";
$client->systemctl("start --wait borgbackup-job-local");
$client->fail("systemctl is-failed borgbackup-job-local");
# Make sure exactly one archive has been created
$client->succeed("c=\$($borg list '${localRepo}' | wc -l) && [[ \$c == '1' ]]");
# Make sure excludeFile has been excluded
$client->fail("$borg list '${localRepo}::${archiveName}' | grep -qF '${excludeFile}'");
# Make sure keepFile has the correct content
$client->succeed("$borg extract '${localRepo}::${archiveName}'");
$client->succeed('c=$(cat ${dataDir}/${keepFile}) && [[ "$c" == "${keepFileData}" ]]');
};
subtest "remote", sub {
my $borg = "BORG_RSH='ssh -oStrictHostKeyChecking=no -i /root/id_ed25519' borg";
$server->waitForUnit("sshd.service");
$client->waitForUnit("network.target");
$client->systemctl("start --wait borgbackup-job-remote");
$client->fail("systemctl is-failed borgbackup-job-remote");
# Make sure we can't access repos other than the specified one
$client->fail("$borg list borg\@server:wrong");
#TODO: Make sure that data is actually deleted
};
subtest "remoteAppendOnly", sub {
my $borg = "BORG_RSH='ssh -oStrictHostKeyChecking=no -i /root/id_ed25519.appendOnly' borg";
$server->waitForUnit("sshd.service");
$client->waitForUnit("network.target");
$client->systemctl("start --wait borgbackup-job-remoteAppendOnly");
$client->fail("systemctl is-failed borgbackup-job-remoteAppendOnly");
# Make sure we can't access repos other than the specified one
$client->fail("$borg list borg\@server:wrong");
#TODO: Make sure that data is not actually deleted
};
'';
})

View file

@ -17,7 +17,7 @@ import ./make-test.nix ({ pkgs, ... }:
$machine->waitForUnit('multi-user.target');
$machine->waitForUnit('vault.service');
$machine->waitForOpenPort(8200);
$machine->succeed('vault init');
$machine->succeed('vault status | grep "Sealed: true"');
$machine->succeed('vault operator init');
$machine->succeed('vault status | grep Sealed | grep true');
'';
})

View file

@ -1,22 +0,0 @@
Fix buffer overflow
--- eflite-0.4.1.orig/es.c
+++ eflite-0.4.1/es.c
@@ -329,7 +329,7 @@
char *p;
p = getenv("HOME");
- sprintf(buf, "%s/.es.conf", p);
+ snprintf(buf, sizeof(buf), "%s/.es.conf", p);
fp = fopen(buf, "r");
if (!fp) fp = fopen("/etc/es.conf", "r");
if (!fp) return 1;
@@ -438,7 +438,7 @@
char logname[200];
if ((flags & 0xffff) > DEBUG) return;
- sprintf(logname, "%s/es.log", getenv("HOME"));
+ snprintf(logname, sizeof(logname), "%s/es.log", getenv("HOME"));
va_start(arg, text);
vsnprintf(buf, 200, text, arg);
va_end(arg);

View file

@ -1,98 +0,0 @@
--- eflite-0.4.1.orig/fs.c
+++ eflite-0.4.1/fs.c
@@ -9,7 +9,7 @@
* GNU General Public License, as published by the Free Software
* Foundation. Please see the file COPYING for details.
*
- * $Id: fs.c,v 1.19 2007/01/18 23:58:42 mgorse Exp $
+ * $Id: fs.c,v 1.22 2008/03/05 15:21:43 mgorse Exp $
*
* Notes:
*
@@ -505,19 +505,6 @@
}
}
-
-
-static void play_audio_close(void *cancel)
-{
- if (audiodev)
- {
- audio_drain(audiodev);
- close_audiodev();
- // usleep(5000);
- }
-}
-
-
static inline void determine_playlen(int speed, cst_wave *wptr, int type, int *pl, int *s)
{
int playlen, skip;
@@ -573,12 +560,12 @@
type = ac[ac_head].type;
WAVE_UNLOCK;
pthread_testcancel();
- pthread_cleanup_push(play_audio_close, NULL);
-
+
es_log(2, "Opening audio device.");
/* We abuse the wave mutex here to avoid being canceled
* while the audio device is being openned */
WAVE_LOCK;
+ assert(audiodev == NULL);
audiodev = audio_open(wptr->sample_rate, wptr->num_channels, CST_AUDIO_LINEAR16);
WAVE_UNLOCK;
if (audiodev == NULL)
@@ -606,8 +593,8 @@
#ifdef DEBUG
start_time = get_ticks_count();
#endif
- pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
audio_write(audiodev, wptr->samples + skip, playlen * 2);
+ pthread_testcancel();
es_log(2, "Write took %.2f seconds.", get_ticks_count() - start_time);
}
es_log(2, "play: syncing.");
@@ -617,16 +604,16 @@
audio_flush(audiodev);
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL);
es_log(2, "Flush took %.2f seconds.", get_ticks_count() - start_time);
- es_log(2, "play: Closing audio device");
- close_audiodev();
- pthread_cleanup_pop(0);
- pthread_testcancel();
- TEXT_LOCK;
+ pthread_testcancel();
+
+ TEXT_LOCK;
time_left -= ((float)playlen) / wptr->sample_rate;
pthread_cond_signal(&text_condition);
TEXT_UNLOCK;
WAVE_LOCK;
+ es_log(2, "play: Closing audio device");
+ close_audiodev();
ac_destroy(&ac[ac_head]);
ac_head++;
if (ac_head == ac_tail)
@@ -894,6 +881,7 @@
WAVE_LOCK_NI;
pthread_cond_signal(&wave_condition); // necessary because we inhibit cancellation while waiting
pthread_cancel(wave_thread);
+ if (audiodev != NULL) audio_drain(audiodev);
WAVE_UNLOCK_NI;
}
@@ -917,7 +905,10 @@
}
/* At this point, no thread is running */
-
+
+ // Make sure audio device is closed
+ close_audiodev();
+
/* Free any wave data */
es_log(2, "s_clear: freeing wave data: %d", ac_tail);
for (i = 0; i < ac_tail; i++)

View file

@ -1,21 +1,40 @@
{stdenv,fetchurl,flite,alsaLib,debug ? false}:
{ stdenv, fetchurl, fetchpatch, flite, alsaLib, debug ? false }:
stdenv.mkDerivation rec {
name = "eflite-${version}";
version = "0.4.1";
src = fetchurl {
url = "https://sourceforge.net/projects/eflite/files/eflite/${version}/${name}.tar.gz";
sha256 = "088p9w816s02s64grfs28gai3lnibzdjb9d1jwxzr8smbs2qbbci";
};
buildInputs = [ flite alsaLib ];
configureFlags = "flite_dir=${flite} --with-audio=alsa --with-vox=cmu_us_kal16";
configureFlags = [
"flite_dir=${flite}"
"--with-audio=alsa"
"--with-vox=cmu_us_kal16"
];
patches = [
./buf-overflow.patch
./cvs-update.patch
./link.patch
(fetchpatch {
url = "https://sources.debian.org/data/main/e/eflite/0.4.1-8/debian/patches/cvs-update";
sha256 = "0r631vzmky7b7qyhm152557y4fr0xqrpi3y4w66fcn6p4rj03j05";
})
(fetchpatch {
url = "https://sources.debian.org/data/main/e/eflite/0.4.1-8/debian/patches/buf-overflow";
sha256 = "071qk133kb7n7bq6kxgh3p9bba6hcl1ixsn4lx8vp8klijgrvkmx";
})
(fetchpatch {
url = "https://sources.debian.org/data/main/e/eflite/0.4.1-8/debian/patches/link";
sha256 = "0p833dp4pdsya72bwh3syvkq85927pm6snxvx13lvcppisbhj0fc";
})
./format.patch
]; # Patches are taken from debian.
];
CFLAGS = stdenv.lib.optionalString debug " -DDEBUG=2";
meta = {
homepage = http://eflite.sourceforge.net;
description = "EFlite is a speech server for screen readers";

View file

@ -1,11 +0,0 @@
--- eflite-0.4.1/Makefile.in 2007-01-19 01:01:09.000000000 +0100
+++ eflite-0.4.1-new/Makefile.in 2017-03-01 23:25:34.223615492 +0100
@@ -34,7 +34,7 @@
$(CC) $(LDFLAGS) -o $@ $^ -lm $(LIBS) $(FLITE_LIBS) $(AUDIOLIBS)
fs.o: fs.c
- $(CC) $(CFLAGS) @AUDIODEFS@ -I. -I$(flite_include_dir) -DREGISTER_VOX=register_$(subst cmu_us_kal16,cmu_us_kal,$(FL_VOX)) -DSTANDALONE -DEFLITE -c -o $@ $<
+ $(CC) $(CFLAGS) @AUDIODEFS@ -I. -I$(flite_include_dir) -DREGISTER_VOX=register_$(FL_VOX) -DSTANDALONE -DEFLITE -c -o $@ $<
tone.o: tone.c
$(CC) $(CFLAGS) -I$(flite_include_dir) -DEFLITE -c -o $@ $<

View file

@ -0,0 +1,36 @@
{ mkDerivation, fetchFromGitHub, lib
, extra-cmake-modules, kdoctools, wrapGAppsHook
, qtmultimedia, qtquickcontrols2, qtwebsockets
, kconfig, kcmutils, kcrash, kdeclarative, kfilemetadata, kinit
, baloo
}:
mkDerivation rec {
name = "elisa-${version}";
# 0.1 is expected in early/mid 2018-04
version = "0.0.20180320";
src = fetchFromGitHub {
owner = "KDE";
repo = "elisa";
rev = "9dd35d7244a8a3553275152f5b50fbe6d272ce64";
sha256 = "0mjqvcpk2y4jlwkka8gzl50wgqjjx9bzpbrj79cr0ib3jyviss4k";
};
nativeBuildInputs = [ extra-cmake-modules kdoctools wrapGAppsHook ];
propagatedBuildInputs = [
qtmultimedia qtquickcontrols2 qtwebsockets
kconfig kcmutils kcrash kdeclarative kfilemetadata kinit
baloo
];
enableParallelBuilding = true;
meta = with lib; {
description = "Elisa Music Player";
license = licenses.gpl3;
maintainers = with maintainers; [ peterhoeg ];
inherit (kconfig.meta) platforms;
};
}

View file

@ -0,0 +1,48 @@
{ stdenv, lib, pkgconfig, fetchFromGitHub, scons, python, glibmm, libpulseaudio, libao
}:
let
version = "unstable-2018-02-10";
in stdenv.mkDerivation rec {
name = "rhvoice-${version}";
src = fetchFromGitHub {
owner = "Olga-Yakovleva";
repo = "RHVoice";
rev = "7a25a881b0465e47a12d8029b56f3b71a1d02312";
sha256 = "1gkrlmv7msh9qlm0gkjqpl9gswghpclfdwszr1p85v8vk6m63v0b";
};
nativeBuildInputs = [
scons pkgconfig
];
buildInputs = [
python glibmm libpulseaudio libao
];
# SConstruct patch
# Scons creates an independent environment that assumes standard POSIX paths.
# The patch is needed to push the nix environment.
# - PATH
# - PKG_CONFIG_PATH, to find available (sound) libraries
# - RPATH, to link to the newly built libraries
patches = [ ./honor_nix_environment.patch ];
buildPhase = ''
scons prefix=$out
'';
installPhase = ''
scons install
'';
meta = {
description = "A free and open source speech synthesizer for Russian language and others";
homepage = https://github.com/Olga-Yakovleva/RHVoice/wiki;
license = lib.licenses.gpl3;
maintainers = with lib.maintainers; [ berce ];
platforms = with lib.platforms; all;
};
}

View file

@ -0,0 +1,14 @@
diff --git a/SConstruct b/SConstruct
index 2421399..ba39254 100644
--- a/SConstruct
+++ b/SConstruct
@@ -147,6 +147,9 @@ def create_base_env(vars):
env_args["package_name"]="RHVoice"
env_args["CPPDEFINES"]=[("RHVOICE","1")]
env=Environment(**env_args)
+ env.PrependENVPath("PATH", os.environ["PATH"])
+ env["ENV"]["PKG_CONFIG_PATH"]=os.environ["PKG_CONFIG_PATH"]
+ env["RPATH"]=env["libdir"]
env["package_version"]=get_version(env["release"])
env.Append(CPPDEFINES=("PACKAGE",env.subst(r'\"$package_name\"')))
env.Append(CPPDEFINES=("VERSION",env.subst(r'\"$package_version\"')))

View file

@ -112,6 +112,7 @@ let
# environment is used as a work around for that.
fhsEnv = buildFHSUserEnv {
name = "${pname}-fhs-env";
multiPkgs = pkgs: [ pkgs.ncurses5 ];
};
in

View file

@ -1,26 +1,25 @@
{ stdenv, fetchurl, spidermonkey, unzip, curl, pcre, readline, openssl, perl, html-tidy }:
{ stdenv, fetchFromGitHub, duktape, curl, pcre, readline, openssl, perl, html-tidy }:
stdenv.mkDerivation rec {
name = "edbrowse-${version}";
version = "3.6.1";
version = "3.7.2";
nativeBuildInputs = [ unzip ];
buildInputs = [ curl pcre readline openssl spidermonkey perl html-tidy ];
buildInputs = [ curl pcre readline openssl duktape perl html-tidy ];
patchPhase = ''
substituteInPlace src/ebjs.c --replace \"edbrowse-js\" \"$out/bin/edbrowse-js\"
for i in ./tools/*.pl
do
substituteInPlace $i --replace "/usr/bin/perl" "${perl}/bin/perl"
done
'';
NIX_CFLAGS_COMPILE = "-I${spidermonkey}/include/mozjs-31";
makeFlags = "-C src prefix=$(out)";
src = fetchurl {
url = "http://edbrowse.org/${name}.zip";
sha256 = "1grkn09r31nmvcnm76jkd8aclmd9n5141mpqvb86wndp9pa7gz7q";
src = fetchFromGitHub {
owner = "CMB";
repo = "edbrowse";
rev = "v${version}";
sha256 = "00wi0m91zf8p8wk4ixlz99dndgv4xqy93m2vsiwdr3khw3jwipp2";
};
meta = with stdenv.lib; {
description = "Command Line Editor Browser";
@ -35,6 +34,5 @@ stdenv.mkDerivation rec {
homepage = http://edbrowse.org/;
maintainers = [ maintainers.schmitthenner maintainers.vrthra ];
platforms = platforms.linux;
broken = true; # no compatible spidermonkey
};
}

View file

@ -54,10 +54,10 @@
}) {};
adaptive-wrap = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "adaptive-wrap";
version = "0.5.1";
version = "0.5.2";
src = fetchurl {
url = "https://elpa.gnu.org/packages/adaptive-wrap-0.5.1.el";
sha256 = "0qi7gjprcpywk2daivnlavwsx53hl5wcqvpxbwinvigg42vxh3ll";
url = "https://elpa.gnu.org/packages/adaptive-wrap-0.5.2.el";
sha256 = "1qcf1cabn4wb34cdmlyk3rv5dl1dcrxrbaw38kly1prs6y4l22aw";
};
packageRequires = [];
meta = {
@ -1438,10 +1438,10 @@
}) {};
muse = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "muse";
version = "3.20";
version = "3.20.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/muse-3.20.tar";
sha256 = "0i5gfhgxdm1ripw7j3ixqlfkinx3fxjj2gk5md99h70iigrhcnm9";
url = "https://elpa.gnu.org/packages/muse-3.20.1.tar";
sha256 = "0h8lxm08r519psz93m1i43prkcpsm2dgkcvdlpvg7sm0ky7i5cay";
};
packageRequires = [];
meta = {
@ -1688,6 +1688,19 @@
license = lib.licenses.free;
};
}) {};
posframe = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild {
pname = "posframe";
version = "0.3.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/posframe-0.3.0.el";
sha256 = "0q74lwklr29c50qgaqly48nj7f49kgxiv70lsvhdy8cg2v082v8k";
};
packageRequires = [ emacs ];
meta = {
homepage = "https://elpa.gnu.org/packages/posframe.html";
license = lib.licenses.free;
};
}) {};
psgml = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "psgml";
version = "1.3.4";
@ -2400,10 +2413,10 @@
xelb = callPackage ({ cl-generic, elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "xelb";
version = "0.13";
version = "0.14";
src = fetchurl {
url = "https://elpa.gnu.org/packages/xelb-0.13.tar";
sha256 = "0sfygy6ihjwszhn6a81fz2yn70rr7vpygl7z49vz4rsd8s0fdgjc";
url = "https://elpa.gnu.org/packages/xelb-0.14.tar";
sha256 = "09flnbjy9ck784kprz036rwg9qk45hpv0w5hz3pz3zhwyk57fv74";
};
packageRequires = [ cl-generic emacs ];
meta = {

File diff suppressed because it is too large Load diff

View file

@ -1,23 +1,26 @@
{ stdenv, fetchurl, qt4, qmake4Hook, poppler_qt4, zlib, pkgconfig, poppler }:
{ stdenv, fetchurl, qtbase, qtscript, qmake, zlib, pkgconfig, poppler }:
stdenv.mkDerivation rec {
pname = "texmaker";
version = "4.5";
version = "5.0.2";
name = "${pname}-${version}";
src = fetchurl {
url = "http://www.xm1math.net/texmaker/${name}.tar.bz2";
sha256 = "056njk6j8wma23mlp7xa3rgfaxx0q8ynwx8wkmj7iy0b85p9ds9c";
sha256 = "0y81mjm89b99pr9svcwpaf4iz2q9pc9hjas5kiwd1pbgl5vqskm9";
};
buildInputs = [ qt4 poppler_qt4 zlib ];
nativeBuildInputs = [ pkgconfig poppler qmake4Hook ];
buildInputs = [ qtbase qtscript poppler zlib ];
nativeBuildInputs = [ pkgconfig poppler qmake ];
NIX_CFLAGS_COMPILE="-I${poppler.dev}/include/poppler";
preConfigure = ''
qmakeFlags="$qmakeFlags DESKTOPDIR=$out/share/applications ICONDIR=$out/share/pixmaps"
qmakeFlags="$qmakeFlags DESKTOPDIR=$out/share/applications ICONDIR=$out/share/pixmaps METAINFODIR=$out/share/metainfo"
'';
enableParallelBuilding = true;
meta = with stdenv.lib; {
description = "TeX and LaTeX editor";
longDescription=''

View file

@ -3,13 +3,13 @@
stdenv.mkDerivation rec {
name = "tiled-${version}";
version = "1.1.2";
version = "1.1.3";
src = fetchFromGitHub {
owner = "bjorn";
repo = "tiled";
rev = "v${version}";
sha256 = "1bzp89914rlrwf2whky3fx10rwxqiwbw9acyqllvam3l4hmv4nlz";
sha256 = "0rf50w7nkdm70999q1mj7sy5hyjj41qjf4izi849q9a7xnhddv44";
};
nativeBuildInputs = [ pkgconfig qmake ];

View file

@ -1,82 +0,0 @@
{ stdenv, buildEnv, fetchgit, makeWrapper, writeScript, fetchurl, zip, pkgs
, node_webkit }:
let
name = "zed-${version}";
version = "1.1.0";
nodePackages = import ./node.nix {
inherit pkgs;
system = stdenv.system;
};
node_env = buildEnv {
name = "node_env";
paths = [ nodePackages."body-parser-~1.6.3" nodePackages."express-~4.8.3"
nodePackages."request-~2.34.0" nodePackages."tar-~0.1.19"
nodePackages."ws-~0.4.32" ];
pathsToLink = [ "/lib" ];
ignoreCollisions = true;
};
zed = stdenv.mkDerivation rec {
inherit name version;
src = fetchgit {
url = "git://github.com/zedapp/zed";
rev = "refs/tags/v${version}";
sha256 = "1zvlngv73h968jd2m42ylr9vfhf35n80wzy616cv2ic7gmr1fl9p";
};
buildInputs = [ makeWrapper zip ];
dontBuild = true;
installPhase = ''
export NWPATH="${node_webkit}/share/node-webkit";
mkdir -p $out/zed
cd ${src}/app; zip -r $out/zed/app.nw *; cd ..
cat $NWPATH/nw $out/zed/app.nw > $out/zed/zed-bin
cp $NWPATH/nw.pak $out/zed/
cp nw/zed-linux $out/zed/zed
chmod +x $out/zed/zed*
cp Zed.desktop.tmpl Zed.svg Zed.png $out/zed
rm $out/zed/app.nw
'';
postFixup = ''
wrapProgram $out/zed/zed-bin \
--prefix NODE_PATH : ${node_env}/lib/node_modules
'';
};
zed_script = writeScript "zed.sh" ''
if [[ $1 == http://* ]] || [[ $1 == https://* ]]; then
PROJECT=$1
elif [ "" != "$1" ]; then
PROJECT=$(readlink -f $1)
fi
${zed}/zed/zed-bin $PROJECT
'';
in stdenv.mkDerivation rec {
inherit name version;
src = zed;
installPhase = ''
mkdir -p $out/bin
ln -s ${zed_script} $out/bin/zed
'';
meta = with stdenv.lib; {
description = "A fully offline-capable, open source, keyboard-focused, text and code editor for power users";
license = licenses.mit;
homepage = http://zedapp.org/;
maintainers = with maintainers; [ matejc ma27 ];
platforms = platforms.linux;
};
}

View file

@ -1,6 +0,0 @@
[ { "body-parser": "~1.6.3" }
, { "express": "~4.8.3" }
, { "request": "~2.34.0" }
, { "tar": "~0.1.19" }
, { "ws": "~0.4.32" }
]

View file

@ -1,7 +0,0 @@
#!/usr/bin/env nix-shell
#! nix-shell -i bash -p nodePackages.node2nix
node2nix -6 -i deps.json \
-e ../../../development/node-packages/node-env.nix \
--no-copy-node-env \
-c node.nix

View file

@ -1,882 +0,0 @@
# This file has been generated by node2nix 1.5.3. Do not edit!
{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
let
sources = {
"accepts-1.0.7" = {
name = "accepts";
packageName = "accepts";
version = "1.0.7";
src = fetchurl {
url = "https://registry.npmjs.org/accepts/-/accepts-1.0.7.tgz";
sha1 = "5b501fb4f0704309964ccdb048172541208dab1a";
};
};
"asn1-0.1.11" = {
name = "asn1";
packageName = "asn1";
version = "0.1.11";
src = fetchurl {
url = "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz";
sha1 = "559be18376d08a4ec4dbe80877d27818639b2df7";
};
};
"assert-plus-0.1.5" = {
name = "assert-plus";
packageName = "assert-plus";
version = "0.1.5";
src = fetchurl {
url = "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz";
sha1 = "ee74009413002d84cec7219c6ac811812e723160";
};
};
"async-0.9.2" = {
name = "async";
packageName = "async";
version = "0.9.2";
src = fetchurl {
url = "https://registry.npmjs.org/async/-/async-0.9.2.tgz";
sha1 = "aea74d5e61c1f899613bf64bda66d4c78f2fd17d";
};
};
"aws-sign2-0.5.0" = {
name = "aws-sign2";
packageName = "aws-sign2";
version = "0.5.0";
src = fetchurl {
url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz";
sha1 = "c57103f7a17fc037f02d7c2e64b602ea223f7d63";
};
};
"balanced-match-1.0.0" = {
name = "balanced-match";
packageName = "balanced-match";
version = "1.0.0";
src = fetchurl {
url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
};
};
"block-stream-0.0.9" = {
name = "block-stream";
packageName = "block-stream";
version = "0.0.9";
src = fetchurl {
url = "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz";
sha1 = "13ebfe778a03205cfe03751481ebb4b3300c126a";
};
};
"boom-0.4.2" = {
name = "boom";
packageName = "boom";
version = "0.4.2";
src = fetchurl {
url = "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz";
sha1 = "7a636e9ded4efcefb19cef4947a3c67dfaee911b";
};
};
"brace-expansion-1.1.11" = {
name = "brace-expansion";
packageName = "brace-expansion";
version = "1.1.11";
src = fetchurl {
url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
sha512 = "248cnpbbf0p32h53rd3g8wzpgrkaj4p078ra1g6l16f82i6bzkvmhwqan5rk88apbll9ly1476kngd7f7z27i3b3zxpbb3064f8yaw8";
};
};
"buffer-crc32-0.2.3" = {
name = "buffer-crc32";
packageName = "buffer-crc32";
version = "0.2.3";
src = fetchurl {
url = "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.3.tgz";
sha1 = "bb54519e95d107cbd2400e76d0cab1467336d921";
};
};
"bytes-1.0.0" = {
name = "bytes";
packageName = "bytes";
version = "1.0.0";
src = fetchurl {
url = "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz";
sha1 = "3569ede8ba34315fab99c3e92cb04c7220de1fa8";
};
};
"combined-stream-0.0.7" = {
name = "combined-stream";
packageName = "combined-stream";
version = "0.0.7";
src = fetchurl {
url = "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz";
sha1 = "0137e657baa5a7541c57ac37ac5fc07d73b4dc1f";
};
};
"commander-2.1.0" = {
name = "commander";
packageName = "commander";
version = "2.1.0";
src = fetchurl {
url = "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz";
sha1 = "d121bbae860d9992a3d517ba96f56588e47c6781";
};
};
"concat-map-0.0.1" = {
name = "concat-map";
packageName = "concat-map";
version = "0.0.1";
src = fetchurl {
url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
};
};
"cookie-0.1.2" = {
name = "cookie";
packageName = "cookie";
version = "0.1.2";
src = fetchurl {
url = "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz";
sha1 = "72fec3d24e48a3432073d90c12642005061004b1";
};
};
"cookie-signature-1.0.4" = {
name = "cookie-signature";
packageName = "cookie-signature";
version = "1.0.4";
src = fetchurl {
url = "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.4.tgz";
sha1 = "0edd22286e3a111b9a2a70db363e925e867f6aca";
};
};
"cryptiles-0.2.2" = {
name = "cryptiles";
packageName = "cryptiles";
version = "0.2.2";
src = fetchurl {
url = "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz";
sha1 = "ed91ff1f17ad13d3748288594f8a48a0d26f325c";
};
};
"ctype-0.5.3" = {
name = "ctype";
packageName = "ctype";
version = "0.5.3";
src = fetchurl {
url = "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz";
sha1 = "82c18c2461f74114ef16c135224ad0b9144ca12f";
};
};
"debug-1.0.4" = {
name = "debug";
packageName = "debug";
version = "1.0.4";
src = fetchurl {
url = "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz";
sha1 = "5b9c256bd54b6ec02283176fa8a0ede6d154cbf8";
};
};
"delayed-stream-0.0.5" = {
name = "delayed-stream";
packageName = "delayed-stream";
version = "0.0.5";
src = fetchurl {
url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz";
sha1 = "d4b1f43a93e8296dfe02694f4680bc37a313c73f";
};
};
"depd-0.4.4" = {
name = "depd";
packageName = "depd";
version = "0.4.4";
src = fetchurl {
url = "https://registry.npmjs.org/depd/-/depd-0.4.4.tgz";
sha1 = "07091fae75f97828d89b4a02a2d4778f0e7c0662";
};
};
"destroy-1.0.3" = {
name = "destroy";
packageName = "destroy";
version = "1.0.3";
src = fetchurl {
url = "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz";
sha1 = "b433b4724e71fd8551d9885174851c5fc377e2c9";
};
};
"ee-first-1.0.5" = {
name = "ee-first";
packageName = "ee-first";
version = "1.0.5";
src = fetchurl {
url = "https://registry.npmjs.org/ee-first/-/ee-first-1.0.5.tgz";
sha1 = "8c9b212898d8cd9f1a9436650ce7be202c9e9ff0";
};
};
"escape-html-1.0.1" = {
name = "escape-html";
packageName = "escape-html";
version = "1.0.1";
src = fetchurl {
url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz";
sha1 = "181a286ead397a39a92857cfb1d43052e356bff0";
};
};
"finalhandler-0.1.0" = {
name = "finalhandler";
packageName = "finalhandler";
version = "0.1.0";
src = fetchurl {
url = "https://registry.npmjs.org/finalhandler/-/finalhandler-0.1.0.tgz";
sha1 = "da05bbc4f5f4a30c84ce1d91f3c154007c4e9daa";
};
};
"forever-agent-0.5.2" = {
name = "forever-agent";
packageName = "forever-agent";
version = "0.5.2";
src = fetchurl {
url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz";
sha1 = "6d0e09c4921f94a27f63d3b49c5feff1ea4c5130";
};
};
"form-data-0.1.4" = {
name = "form-data";
packageName = "form-data";
version = "0.1.4";
src = fetchurl {
url = "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz";
sha1 = "91abd788aba9702b1aabfa8bc01031a2ac9e3b12";
};
};
"fresh-0.2.2" = {
name = "fresh";
packageName = "fresh";
version = "0.2.2";
src = fetchurl {
url = "https://registry.npmjs.org/fresh/-/fresh-0.2.2.tgz";
sha1 = "9731dcf5678c7faeb44fb903c4f72df55187fa77";
};
};
"fs.realpath-1.0.0" = {
name = "fs.realpath";
packageName = "fs.realpath";
version = "1.0.0";
src = fetchurl {
url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
};
};
"fstream-0.1.31" = {
name = "fstream";
packageName = "fstream";
version = "0.1.31";
src = fetchurl {
url = "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz";
sha1 = "7337f058fbbbbefa8c9f561a28cab0849202c988";
};
};
"glob-7.1.2" = {
name = "glob";
packageName = "glob";
version = "7.1.2";
src = fetchurl {
url = "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz";
sha512 = "08vjxzixc9dwc1hn5pd60yyij98krk2pr758aiga97r02ncvaqx1hidi95wk470k1v84gg4alls9bm52m77174z128bgf13b61x951h";
};
};
"graceful-fs-3.0.11" = {
name = "graceful-fs";
packageName = "graceful-fs";
version = "3.0.11";
src = fetchurl {
url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz";
sha1 = "7613c778a1afea62f25c630a086d7f3acbbdd818";
};
};
"hawk-1.0.0" = {
name = "hawk";
packageName = "hawk";
version = "1.0.0";
src = fetchurl {
url = "https://registry.npmjs.org/hawk/-/hawk-1.0.0.tgz";
sha1 = "b90bb169807285411da7ffcb8dd2598502d3b52d";
};
};
"hoek-0.9.1" = {
name = "hoek";
packageName = "hoek";
version = "0.9.1";
src = fetchurl {
url = "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz";
sha1 = "3d322462badf07716ea7eb85baf88079cddce505";
};
};
"http-signature-0.10.1" = {
name = "http-signature";
packageName = "http-signature";
version = "0.10.1";
src = fetchurl {
url = "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz";
sha1 = "4fbdac132559aa8323121e540779c0a012b27e66";
};
};
"iconv-lite-0.4.4" = {
name = "iconv-lite";
packageName = "iconv-lite";
version = "0.4.4";
src = fetchurl {
url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.4.tgz";
sha1 = "e95f2e41db0735fc21652f7827a5ee32e63c83a8";
};
};
"inflight-1.0.6" = {
name = "inflight";
packageName = "inflight";
version = "1.0.6";
src = fetchurl {
url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
};
};
"inherits-2.0.3" = {
name = "inherits";
packageName = "inherits";
version = "2.0.3";
src = fetchurl {
url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
sha1 = "633c2c83e3da42a502f52466022480f4208261de";
};
};
"ipaddr.js-0.1.2" = {
name = "ipaddr.js";
packageName = "ipaddr.js";
version = "0.1.2";
src = fetchurl {
url = "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-0.1.2.tgz";
sha1 = "6a1fd3d854f5002965c34d7bbcd9b4a8d4b0467e";
};
};
"json-stringify-safe-5.0.1" = {
name = "json-stringify-safe";
packageName = "json-stringify-safe";
version = "5.0.1";
src = fetchurl {
url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
};
};
"media-typer-0.2.0" = {
name = "media-typer";
packageName = "media-typer";
version = "0.2.0";
src = fetchurl {
url = "https://registry.npmjs.org/media-typer/-/media-typer-0.2.0.tgz";
sha1 = "d8a065213adfeaa2e76321a2b6dda36ff6335984";
};
};
"merge-descriptors-0.0.2" = {
name = "merge-descriptors";
packageName = "merge-descriptors";
version = "0.0.2";
src = fetchurl {
url = "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-0.0.2.tgz";
sha1 = "c36a52a781437513c57275f39dd9d317514ac8c7";
};
};
"methods-1.1.0" = {
name = "methods";
packageName = "methods";
version = "1.1.0";
src = fetchurl {
url = "https://registry.npmjs.org/methods/-/methods-1.1.0.tgz";
sha1 = "5dca4ee12df52ff3b056145986a8f01cbc86436f";
};
};
"mime-1.2.11" = {
name = "mime";
packageName = "mime";
version = "1.2.11";
src = fetchurl {
url = "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz";
sha1 = "58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10";
};
};
"mime-types-1.0.2" = {
name = "mime-types";
packageName = "mime-types";
version = "1.0.2";
src = fetchurl {
url = "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz";
sha1 = "995ae1392ab8affcbfcb2641dd054e943c0d5dce";
};
};
"minimatch-3.0.4" = {
name = "minimatch";
packageName = "minimatch";
version = "3.0.4";
src = fetchurl {
url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
sha512 = "1879a3j85h92ypvb7lpv1dqpcxl49rqnbgs5la18zmj1yqhwl60c2m74254wbr5pp3znckqpkg9dvjyrz6hfz8b9vag5a3j910db4f8";
};
};
"minimist-0.0.8" = {
name = "minimist";
packageName = "minimist";
version = "0.0.8";
src = fetchurl {
url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz";
sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
};
};
"mkdirp-0.5.1" = {
name = "mkdirp";
packageName = "mkdirp";
version = "0.5.1";
src = fetchurl {
url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
};
};
"ms-0.6.2" = {
name = "ms";
packageName = "ms";
version = "0.6.2";
src = fetchurl {
url = "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz";
sha1 = "d89c2124c6fdc1353d65a8b77bf1aac4b193708c";
};
};
"nan-1.0.0" = {
name = "nan";
packageName = "nan";
version = "1.0.0";
src = fetchurl {
url = "https://registry.npmjs.org/nan/-/nan-1.0.0.tgz";
sha1 = "ae24f8850818d662fcab5acf7f3b95bfaa2ccf38";
};
};
"natives-1.1.1" = {
name = "natives";
packageName = "natives";
version = "1.1.1";
src = fetchurl {
url = "https://registry.npmjs.org/natives/-/natives-1.1.1.tgz";
sha512 = "08a9lf00d2pkqmdi6ipp00pjin0gwl6fh283cjdjbayaz834lppwrw19kn4s642kwa46bfcway3033j6rbqd96iy86qrzrfgz35mr7i";
};
};
"negotiator-0.4.7" = {
name = "negotiator";
packageName = "negotiator";
version = "0.4.7";
src = fetchurl {
url = "https://registry.npmjs.org/negotiator/-/negotiator-0.4.7.tgz";
sha1 = "a4160f7177ec806738631d0d3052325da42abdc8";
};
};
"node-uuid-1.4.8" = {
name = "node-uuid";
packageName = "node-uuid";
version = "1.4.8";
src = fetchurl {
url = "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz";
sha1 = "b040eb0923968afabf8d32fb1f17f1167fdab907";
};
};
"oauth-sign-0.3.0" = {
name = "oauth-sign";
packageName = "oauth-sign";
version = "0.3.0";
src = fetchurl {
url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.3.0.tgz";
sha1 = "cb540f93bb2b22a7d5941691a288d60e8ea9386e";
};
};
"on-finished-2.1.0" = {
name = "on-finished";
packageName = "on-finished";
version = "2.1.0";
src = fetchurl {
url = "https://registry.npmjs.org/on-finished/-/on-finished-2.1.0.tgz";
sha1 = "0c539f09291e8ffadde0c8a25850fb2cedc7022d";
};
};
"once-1.4.0" = {
name = "once";
packageName = "once";
version = "1.4.0";
src = fetchurl {
url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
};
};
"options-0.0.6" = {
name = "options";
packageName = "options";
version = "0.0.6";
src = fetchurl {
url = "https://registry.npmjs.org/options/-/options-0.0.6.tgz";
sha1 = "ec22d312806bb53e731773e7cdaefcf1c643128f";
};
};
"parseurl-1.3.2" = {
name = "parseurl";
packageName = "parseurl";
version = "1.3.2";
src = fetchurl {
url = "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz";
sha1 = "fc289d4ed8993119460c156253262cdc8de65bf3";
};
};
"path-is-absolute-1.0.1" = {
name = "path-is-absolute";
packageName = "path-is-absolute";
version = "1.0.1";
src = fetchurl {
url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
};
};
"path-to-regexp-0.1.3" = {
name = "path-to-regexp";
packageName = "path-to-regexp";
version = "0.1.3";
src = fetchurl {
url = "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.3.tgz";
sha1 = "21b9ab82274279de25b156ea08fd12ca51b8aecb";
};
};
"proxy-addr-1.0.1" = {
name = "proxy-addr";
packageName = "proxy-addr";
version = "1.0.1";
src = fetchurl {
url = "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.1.tgz";
sha1 = "c7c566d5eb4e3fad67eeb9c77c5558ccc39b88a8";
};
};
"punycode-1.4.1" = {
name = "punycode";
packageName = "punycode";
version = "1.4.1";
src = fetchurl {
url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz";
sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
};
};
"qs-0.6.6" = {
name = "qs";
packageName = "qs";
version = "0.6.6";
src = fetchurl {
url = "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz";
sha1 = "6e015098ff51968b8a3c819001d5f2c89bc4b107";
};
};
"qs-2.2.2" = {
name = "qs";
packageName = "qs";
version = "2.2.2";
src = fetchurl {
url = "https://registry.npmjs.org/qs/-/qs-2.2.2.tgz";
sha1 = "dfe783f1854b1ac2b3ade92775ad03e27e03218c";
};
};
"range-parser-1.0.0" = {
name = "range-parser";
packageName = "range-parser";
version = "1.0.0";
src = fetchurl {
url = "https://registry.npmjs.org/range-parser/-/range-parser-1.0.0.tgz";
sha1 = "a4b264cfe0be5ce36abe3765ac9c2a248746dbc0";
};
};
"raw-body-1.3.0" = {
name = "raw-body";
packageName = "raw-body";
version = "1.3.0";
src = fetchurl {
url = "https://registry.npmjs.org/raw-body/-/raw-body-1.3.0.tgz";
sha1 = "978230a156a5548f42eef14de22d0f4f610083d1";
};
};
"rimraf-2.6.2" = {
name = "rimraf";
packageName = "rimraf";
version = "2.6.2";
src = fetchurl {
url = "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz";
sha512 = "3kmrqh8xli7rzfm8wc6j9lp0c6vml172iv3z088an9xlwl1xvkvh3fn92za66ms4c9yww80qa5kan31k1z1ypqvkchmh1mznb09xdwn";
};
};
"send-0.8.5" = {
name = "send";
packageName = "send";
version = "0.8.5";
src = fetchurl {
url = "https://registry.npmjs.org/send/-/send-0.8.5.tgz";
sha1 = "37f708216e6f50c175e74c69fec53484e2fd82c7";
};
};
"serve-static-1.5.4" = {
name = "serve-static";
packageName = "serve-static";
version = "1.5.4";
src = fetchurl {
url = "https://registry.npmjs.org/serve-static/-/serve-static-1.5.4.tgz";
sha1 = "819fb37ae46bd02dd520b77fcf7fd8f5112f9782";
};
};
"sntp-0.2.4" = {
name = "sntp";
packageName = "sntp";
version = "0.2.4";
src = fetchurl {
url = "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz";
sha1 = "fb885f18b0f3aad189f824862536bceeec750900";
};
};
"tinycolor-0.0.1" = {
name = "tinycolor";
packageName = "tinycolor";
version = "0.0.1";
src = fetchurl {
url = "https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz";
sha1 = "320b5a52d83abb5978d81a3e887d4aefb15a6164";
};
};
"tough-cookie-2.3.4" = {
name = "tough-cookie";
packageName = "tough-cookie";
version = "2.3.4";
src = fetchurl {
url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz";
sha512 = "0ncm6j3cjq1f26mzjf04k9bkw1b08w53s4qa3a11c1bdj4pgnqv1422c1xs5jyy6y1psppjx52fhagq5zkjkgrcpdkxcdiry96r77jd";
};
};
"tunnel-agent-0.3.0" = {
name = "tunnel-agent";
packageName = "tunnel-agent";
version = "0.3.0";
src = fetchurl {
url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.3.0.tgz";
sha1 = "ad681b68f5321ad2827c4cfb1b7d5df2cfe942ee";
};
};
"type-is-1.3.2" = {
name = "type-is";
packageName = "type-is";
version = "1.3.2";
src = fetchurl {
url = "https://registry.npmjs.org/type-is/-/type-is-1.3.2.tgz";
sha1 = "4f2a5dc58775ca1630250afc7186f8b36309d1bb";
};
};
"utils-merge-1.0.0" = {
name = "utils-merge";
packageName = "utils-merge";
version = "1.0.0";
src = fetchurl {
url = "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz";
sha1 = "0294fb922bb9375153541c4f7096231f287c8af8";
};
};
"vary-0.1.0" = {
name = "vary";
packageName = "vary";
version = "0.1.0";
src = fetchurl {
url = "https://registry.npmjs.org/vary/-/vary-0.1.0.tgz";
sha1 = "df0945899e93c0cc5bd18cc8321d9d21e74f6176";
};
};
"wrappy-1.0.2" = {
name = "wrappy";
packageName = "wrappy";
version = "1.0.2";
src = fetchurl {
url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
};
};
};
in
{
"body-parser-~1.6.3" = nodeEnv.buildNodePackage {
name = "body-parser";
packageName = "body-parser";
version = "1.6.7";
src = fetchurl {
url = "https://registry.npmjs.org/body-parser/-/body-parser-1.6.7.tgz";
sha1 = "82306becadf44543e826b3907eae93f0237c4e5c";
};
dependencies = [
sources."bytes-1.0.0"
sources."depd-0.4.4"
sources."ee-first-1.0.5"
sources."iconv-lite-0.4.4"
sources."media-typer-0.2.0"
sources."mime-types-1.0.2"
sources."on-finished-2.1.0"
sources."qs-2.2.2"
sources."raw-body-1.3.0"
sources."type-is-1.3.2"
];
buildInputs = globalBuildInputs;
meta = {
description = "Node.js body parsing middleware";
homepage = https://github.com/expressjs/body-parser;
license = "MIT";
};
production = true;
bypassCache = false;
};
"express-~4.8.3" = nodeEnv.buildNodePackage {
name = "express";
packageName = "express";
version = "4.8.8";
src = fetchurl {
url = "https://registry.npmjs.org/express/-/express-4.8.8.tgz";
sha1 = "6aba348ccdfa87608040b12ca0010107a0aac28e";
};
dependencies = [
sources."accepts-1.0.7"
sources."buffer-crc32-0.2.3"
sources."cookie-0.1.2"
sources."cookie-signature-1.0.4"
sources."debug-1.0.4"
sources."depd-0.4.4"
sources."destroy-1.0.3"
sources."ee-first-1.0.5"
sources."escape-html-1.0.1"
sources."finalhandler-0.1.0"
sources."fresh-0.2.2"
sources."ipaddr.js-0.1.2"
sources."media-typer-0.2.0"
sources."merge-descriptors-0.0.2"
sources."methods-1.1.0"
sources."mime-1.2.11"
sources."mime-types-1.0.2"
sources."ms-0.6.2"
sources."negotiator-0.4.7"
sources."on-finished-2.1.0"
sources."parseurl-1.3.2"
sources."path-to-regexp-0.1.3"
sources."proxy-addr-1.0.1"
sources."qs-2.2.2"
sources."range-parser-1.0.0"
sources."send-0.8.5"
sources."serve-static-1.5.4"
sources."type-is-1.3.2"
sources."utils-merge-1.0.0"
sources."vary-0.1.0"
];
buildInputs = globalBuildInputs;
meta = {
description = "Fast, unopinionated, minimalist web framework";
homepage = http://expressjs.com/;
license = "MIT";
};
production = true;
bypassCache = false;
};
"request-~2.34.0" = nodeEnv.buildNodePackage {
name = "request";
packageName = "request";
version = "2.34.0";
src = fetchurl {
url = "https://registry.npmjs.org/request/-/request-2.34.0.tgz";
sha1 = "b5d8b9526add4a2d4629f4d417124573996445ae";
};
dependencies = [
sources."asn1-0.1.11"
sources."assert-plus-0.1.5"
sources."async-0.9.2"
sources."aws-sign2-0.5.0"
sources."boom-0.4.2"
sources."combined-stream-0.0.7"
sources."cryptiles-0.2.2"
sources."ctype-0.5.3"
sources."delayed-stream-0.0.5"
sources."forever-agent-0.5.2"
sources."form-data-0.1.4"
sources."hawk-1.0.0"
sources."hoek-0.9.1"
sources."http-signature-0.10.1"
sources."json-stringify-safe-5.0.1"
sources."mime-1.2.11"
sources."node-uuid-1.4.8"
sources."oauth-sign-0.3.0"
sources."punycode-1.4.1"
sources."qs-0.6.6"
sources."sntp-0.2.4"
sources."tough-cookie-2.3.4"
sources."tunnel-agent-0.3.0"
];
buildInputs = globalBuildInputs;
meta = {
description = "Simplified HTTP request client.";
homepage = https://github.com/mikeal/request;
license = "Apache, Version 2.0";
};
production = true;
bypassCache = false;
};
"tar-~0.1.19" = nodeEnv.buildNodePackage {
name = "tar";
packageName = "tar";
version = "0.1.20";
src = fetchurl {
url = "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz";
sha1 = "42940bae5b5f22c74483699126f9f3f27449cb13";
};
dependencies = [
sources."balanced-match-1.0.0"
sources."block-stream-0.0.9"
sources."brace-expansion-1.1.11"
sources."concat-map-0.0.1"
sources."fs.realpath-1.0.0"
sources."fstream-0.1.31"
sources."glob-7.1.2"
sources."graceful-fs-3.0.11"
sources."inflight-1.0.6"
sources."inherits-2.0.3"
sources."minimatch-3.0.4"
sources."minimist-0.0.8"
sources."mkdirp-0.5.1"
sources."natives-1.1.1"
sources."once-1.4.0"
sources."path-is-absolute-1.0.1"
sources."rimraf-2.6.2"
sources."wrappy-1.0.2"
];
buildInputs = globalBuildInputs;
meta = {
description = "tar for node";
homepage = https://github.com/isaacs/node-tar;
license = "BSD";
};
production = true;
bypassCache = false;
};
"ws-~0.4.32" = nodeEnv.buildNodePackage {
name = "ws";
packageName = "ws";
version = "0.4.32";
src = fetchurl {
url = "https://registry.npmjs.org/ws/-/ws-0.4.32.tgz";
sha1 = "787a6154414f3c99ed83c5772153b20feb0cec32";
};
dependencies = [
sources."commander-2.1.0"
sources."nan-1.0.0"
sources."options-0.0.6"
sources."tinycolor-0.0.1"
];
buildInputs = globalBuildInputs;
meta = {
description = "simple to use, blazing fast and thoroughly tested websocket client, server and console for node.js, up-to-date against RFC-6455";
homepage = https://github.com/einaros/ws;
};
production = true;
bypassCache = false;
};
}

View file

@ -1,17 +0,0 @@
# This file has been generated by node2nix 1.5.3. Do not edit!
{pkgs ? import <nixpkgs> {
inherit system;
}, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-6_x"}:
let
nodeEnv = import ../../../development/node-packages/node-env.nix {
inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
inherit nodejs;
libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
};
in
import ./node-packages.nix {
inherit (pkgs) fetchurl fetchgit;
inherit nodeEnv;
}

View file

@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake ];
buildInputs = [
boost ilmbase libjpeg libpng
boost ilmbase libjpeg libpng
libtiff opencolorio openexr
unzip
];
@ -43,6 +43,6 @@ stdenv.mkDerivation rec {
description = "A library and tools for reading and writing images";
license = licenses.bsd3;
maintainers = [ maintainers.goibhniu ];
platforms = platforms.linux;
platforms = platforms.unix;
};
}

View file

@ -77,9 +77,9 @@ index 0000000..1bd9bb5
+ <block start="/(\()/" end="/(\))/" scheme="NixExpression" region00="Symbol" region01="PairStart" region10="Symbol" region11="PairEnd"/>
+ <block start="/(\[)/" end="/(\])/" scheme="NixExpression" region00="Symbol" region01="PairStart" region10="Symbol" region11="PairEnd"/>
+
+ <regexp match="/[\w\d.+=?~-]*(\/[\w\d.+=?~-]+)+/" region0="Path"/>
+ <regexp match="/&lt;[\w\d\/.+=?~-]+&gt;/" region0="Path"/>
+ <regexp match="/(ftp|mirror|http|https|git):\/\/[\w\d\/:?=&amp;.~-]+/" region0="URL"/>
+ <regexp match="/[\w\d.+=?~-]*(\/[\w\d.+?~-]+)+/" region0="Path"/>
+ <regexp match="/&lt;[\w\d\/.+?~-]+&gt;/" region0="Path"/>
+ <regexp match="/(ftp|mirror|http|https|git):\/\/[\w\d\/:?=&amp;.~+-]+/" region0="URL"/>
+ <block start="/(&quot;)/" end="/(&quot;)/" scheme="String" region="String" region00="def:StringEdge" region01="def:PairStart" region10="def:StringEdge" region11="def:PairEnd"/>
+ <block start="/(&apos;&apos;)/" end="/(&apos;&apos;)/" scheme="BlockString" region="String" region00="def:StringEdge" region01="def:PairStart" region10="def:StringEdge" region11="def:PairEnd"/>
+

View file

@ -3,15 +3,15 @@
with stdenv.lib;
stdenv.mkDerivation rec {
rev = "192dace49c2e5456ca235833ee9877e4b8b491cc";
build = "unstable-2017-10-08.git${builtins.substring 0 7 rev}";
rev = "819d131110a9fedfc14f3b3bea8f1f56e68b077a";
build = "unstable-2018-02-27.git${builtins.substring 0 7 rev}";
name = "far2l-2.1.${build}";
src = fetchFromGitHub {
owner = "elfmz";
repo = "far2l";
rev = rev;
sha256 = "1l1sf5zlr99xrmjlpzfk3snxqw13xgvnqilw4n7051b8km0snrbl";
sha256 = "1xjy2ricd68pm9j758pb2axc2269ns2xh86443x5llfcaxrjja4b";
};
nativeBuildInputs = [ cmake pkgconfig m4 makeWrapper imagemagick ];

View file

@ -22,6 +22,9 @@ stdenv.mkDerivation {
prePatch = ''
sed -e '/curl.types.h/d' -i *.{c,h,hpp,cpp}
'';
patches = [ ./pointer_int_comparison.patch ];
patchFlags = [ "-p1" "--binary" ]; # patch has dos style eol
meta = with stdenv.lib; {
description = "Open Street Map viewer";

View file

@ -0,0 +1,11 @@
--- blah_/jni/gosmore.cpp 1970-01-01 01:00:01.000000000 +0100
+++ /dev/stdin 2018-03-18 00:21:08.474217132 +0100
@@ -1273,7 +1273,7 @@
if (deg[i] < -180 || deg[i] > 180) break;
if (i == 0 && (strncasecmp (t, "lat", 3) == 0 ||
strncasecmp (t, "lon", 3) == 0)) { // lat=-25.7 lon=28.2
- for (t += 3; t != '\0' && !isalnum (*t); t++) {}
+ for (t += 3; *t != '\0' && !isalnum (*t); t++) {}
}
if (i == 1) { // Success !
//printf ("%lf %lf %u\n", deg[lonFirst ? 1 : 0], deg[lonFirst ? 0 : 1],

View file

@ -1,8 +1,11 @@
{ stdenv, fetchFromGitHub, pkgs, python3Packages, glfw, libunistring, harfbuzz, fontconfig, zlib, pkgconfig, ncurses, imagemagick, makeWrapper, xsel, libstartup_notification, libX11, libXrandr, libXinerama, libXcursor, libxkbcommon, libXi, libXext }:
{ stdenv, fetchFromGitHub, pkgs, python3Packages, glfw, libunistring, harfbuzz,
fontconfig, zlib, pkgconfig, ncurses, imagemagick, makeWrapper, xsel,
libstartup_notification, libX11, libXrandr, libXinerama, libXcursor,
libxkbcommon, libXi, libXext }:
with python3Packages;
buildPythonApplication rec {
version = "0.8.0";
version = "0.8.2";
name = "kitty-${version}";
format = "other";
@ -10,10 +13,13 @@ buildPythonApplication rec {
owner = "kovidgoyal";
repo = "kitty";
rev = "v${version}";
sha256 = "12pj4js704r4f6idam3ljg7yllij9v158ayq6ym24zq18bv1nmbz";
sha256 = "08s8l59bib363ykg4djcxrc1968n5j1cjlp6fwwv7xmf18wd1a6c";
};
buildInputs = [ fontconfig glfw ncurses libunistring harfbuzz libX11 libXrandr libXinerama libXcursor libxkbcommon libXi libXext ];
buildInputs = [
fontconfig glfw ncurses libunistring harfbuzz libX11
libXrandr libXinerama libXcursor libxkbcommon libXi libXext
];
nativeBuildInputs = [ pkgconfig ];

View file

@ -0,0 +1,44 @@
{ stdenv, fetchgit, ant, jdk, makeWrapper, jre, coreutils, which }:
stdenv.mkDerivation rec {
name = "projectlibre-${version}";
version = "1.7.0";
src = fetchgit {
url = "https://git.code.sf.net/p/projectlibre/code";
rev = "0c939507cc63e9eaeb855437189cdec79e9386c2"; # version 1.7.0 was not tagged
sha256 = "0vy5vgbp45ai957gaby2dj1hvmbxfdlfnwcanwqm9f8q16qipdbq";
};
buildInputs = [ ant jdk makeWrapper ];
buildPhase = ''
export ANT_OPTS=-Dbuild.sysclasspath=ignore
${ant}/bin/ant -f openproj_build/build.xml
'';
resourcesPath = "openproj_build/resources";
desktopItem = "${resourcesPath}/projectlibre.desktop";
installPhase = ''
mkdir -p $out/share/{applications,projectlibre/samples,pixmaps,doc/projectlibre} $out/bin
substitute $resourcesPath/projectlibre $out/bin/projectlibre \
--replace "\"/usr/share/projectlibre\"" "\"$out/share/projectlibre\""
chmod +x $out/bin/projectlibre
wrapProgram $out/bin/projectlibre \
--prefix PATH : "${jre}/bin:${coreutils}/bin:${which}/bin"
cp -R openproj_build/dist/* $out/share/projectlibre
cp -R openproj_build/license $out/share/doc/projectlibre
cp $desktopItem $out/share/applications
cp $resourcesPath/projectlibre.png $out/share/pixmaps
cp -R $resourcesPath/samples/* $out/share/projectlibre/samples
'';
meta = with stdenv.lib; {
homepage = "http://www.projectlibre.com/";
description = "Project-Management Software similar to MS-Project";
maintainers = [ maintainers.Mogria ];
license = licenses.cpal10;
};
}

View file

@ -2,14 +2,14 @@
with pythonPackages;
buildPythonApplication rec {
version = "1.21.0";
version = "1.22.1";
name = "rtv-${version}";
src = fetchFromGitHub {
owner = "michael-lazar";
repo = "rtv";
rev = "v${version}";
sha256 = "0srm01nrb23hdmj3ripsa9p8nv2cgss3m6and9rdr875qw5ii130";
sha256 = "1jil8cwhnpf2mclgah7s79j4c38hzm0j6di2mffrqhlsnn2vxbf4";
};
# Tests try to access network

View file

@ -33,7 +33,7 @@ let
in
stdenv.mkDerivation rec {
name = "slic3r-prusa-edition-${version}";
version = "1.38.7";
version = "1.39.1";
enableParallelBuilding = true;
@ -70,6 +70,10 @@ stdenv.mkDerivation rec {
XMLSAX
]);
prePatch = ''
sed -i 's|"/usr/include/asm-generic/ioctls.h"|<asm-generic/ioctls.h>|g' xs/src/libslic3r/GCodeSender.cpp
'';
postInstall = ''
echo 'postInstall'
wrapProgram "$out/bin/slic3r-prusa3d" \
@ -84,7 +88,7 @@ stdenv.mkDerivation rec {
src = fetchFromGitHub {
owner = "prusa3d";
repo = "Slic3r";
sha256 = "1nrryd2bxmk4y59bq5fp7n2alyvc5a9xvnbx5j4fg4mqr91ccs5c";
sha256 = "0frkjgzmiy788ijkcqz3baxcrncqmk9s2vcd99hb8p2q13cg51ff";
rev = "version_${version}";
};

View file

@ -4,13 +4,13 @@
stdenv.mkDerivation rec {
name = "spacefm-${version}";
version = "1.0.5";
version = "1.0.6";
src = fetchFromGitHub {
owner = "IgnorantGuru";
repo = "spacefm";
rev = "${version}";
sha256 = "06askkrwls09d1x382zjrmnvcm0ghfgz4cms2qbhdkazfyy0ff65";
sha256 = "089r6i40lxcwzp60553b18f130asspnzqldlpii53smz52kvpirx";
};
configureFlags = [
@ -26,6 +26,10 @@ stdenv.mkDerivation rec {
ln -s /etc/spacefm/spacefm.conf $out/etc/spacefm/spacefm.conf
'';
preFixup = ''
gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share")
'';
nativeBuildInputs = [ pkgconfig ];
buildInputs = [
gtk3 udev desktop-file-utils shared-mime-info intltool

View file

@ -1,39 +1,30 @@
{ stdenv, fetchFromGitHub, fetchpatch
, autoconf, automake, gettext, intltool, libtool, pkgconfig
{ stdenv, fetchFromGitHub, wrapGAppsHook
, autoconf, autoconf-archive, automake, gettext, intltool, libtool, pkgconfig
, libICE, libSM, libXScrnSaver, libXtst, cheetah
, glib, glibmm, gtkmm2, atk, pango, pangomm, cairo, cairomm
, dbus, dbus-glib, GConf, gconfmm, gdome2, gstreamer, libsigcxx }:
, gobjectIntrospection, glib, glibmm, gtkmm3, atk, pango, pangomm, cairo
, cairomm , dbus, dbus-glib, gdome2, gstreamer, gst-plugins-base
, gst-plugins-good, libsigcxx }:
stdenv.mkDerivation rec {
name = "workrave-${version}";
version = "1.10.7";
version = "1.10.20";
src = let
in fetchFromGitHub {
sha256 = "1mxg882rfih7xzadrpj51m9r33f6s3rzwv61nfwi94vzd68qjnxb";
sha256 = "099a87zkrkmsgfz9isrfm89dh545x52891jh6qxmn19h6wwsi941";
rev = with stdenv.lib;
"v" + concatStringsSep "_" (splitString "." version);
repo = "workrave";
owner = "rcaelers";
};
patches = [
# Building with gtk{,mm}3 works just fine, but let's be conservative for once:
(fetchpatch {
name = "workrave-fix-compilation-with-gtk2.patch";
url = "https://github.com/rcaelers/workrave/commit/"
+ "271efdcd795b3592bfede8b1af2162af4b1f0f26.patch";
sha256 = "1a3d4jj8516m3m24bl6y8alanl1qnyzv5dv1hz5v3hjgk89fj6rk";
})
];
nativeBuildInputs = [
autoconf automake gettext intltool libtool pkgconfig
autoconf autoconf-archive automake gettext intltool libtool pkgconfig wrapGAppsHook
];
buildInputs = [
libICE libSM libXScrnSaver libXtst cheetah
glib glibmm gtkmm2 atk pango pangomm cairo cairomm
dbus dbus-glib GConf gconfmm gdome2 gstreamer libsigcxx
gobjectIntrospection glib glibmm gtkmm3 atk pango pangomm cairo cairomm
dbus dbus-glib gdome2 gstreamer gst-plugins-base gst-plugins-good libsigcxx
];
preConfigure = "./autogen.sh";

View file

@ -1,11 +1,11 @@
{ stdenv, fetchurl, fox, pkgconfig, gettext, xlibsWrapper, gcc, intltool, file, libpng }:
stdenv.mkDerivation rec {
name = "xfe-1.37";
name = "xfe-1.42";
src = fetchurl {
url = "mirror://sourceforge/xfe/${name}.tar.gz";
sha256 = "1g9a0bpny2m7ixgxpqjh0wvh2x6d0lpj6682zn5dfqwan4j2xfsd";
sha256 = "1v1v0vcbnm30kpyd3rj8f56yh7lfnwy7nbs9785wi229b29fiqx1";
};
nativeBuildInputs = [ pkgconfig ];

View file

@ -176,7 +176,10 @@ let
(githubPatch "ba4141e451f4e0b1b19410b1b503bd32e150df06" "1cjxw1f9fin6z12b0mcxnxf2mdjb0n3chwz7mgvmp9yij8qhqnxj")
(githubPatch "b34ed1e6524479d61ee944ebf6ca7389ea47e563" "1s13zw93nsyr259dzck6gbhg4x46qg5sg14djf4bvrrc6hlkiczw")
(githubPatch "4f2b52281ce1649ea8347489443965ad33262ecc" "1g59izkicn9cpcphamdgrijs306h5b9i7i4pmy134asn1ifiax5z")
] ++ optional enableWideVine ./patches/widevine.patch;
] ++ optional enableWideVine ./patches/widevine.patch
++ optionals (stdenv.isAarch64 && versionRange "65" "66") [
./patches/skia_buildfix.patch
];
postPatch = ''
# We want to be able to specify where the sandbox is via CHROME_DEVEL_SANDBOX

View file

@ -0,0 +1,22 @@
Index: chromium-browser-65.0.3325.73/third_party/skia/src/jumper/SkJumper_stages.cpp
===================================================================
--- chromium-browser-65.0.3325.73.orig/third_party/skia/src/jumper/SkJumper_stages.cpp
+++ chromium-browser-65.0.3325.73/third_party/skia/src/jumper/SkJumper_stages.cpp
@@ -666,7 +666,7 @@ SI F approx_powf(F x, F y) {
}
SI F from_half(U16 h) {
-#if defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
+#if defined(JUMPER_IS_NEON) && defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
return vcvt_f32_f16(h);
#elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
@@ -686,7 +686,7 @@ SI F from_half(U16 h) {
}
SI U16 to_half(F f) {
-#if defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
+#if defined(JUMPER_IS_NEON) && defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
return vcvt_f16_f32(f);
#elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)

View file

@ -6,13 +6,13 @@
version = "65.0.3325.124";
};
dev = {
sha256 = "196k48qy97b7x25vv5gvqhnbkjb8vql42qi1h0x8y8sp216sdspg";
sha256bin64 = "13jq19jg1hy5w1bdf0wpv5qmr44161clsxjk01m0iysipkbldpn5";
version = "66.0.3355.0";
sha256 = "1qy8gv859qhg5s6gi3mvdgg1s5wi69r6qkhd851nwlmmjhvarfg8";
sha256bin64 = "1z1s6i4yx20ayr6a2ycbgd0ipy1ncw4i19k0g8jbn639kynmfxjw";
version = "66.0.3359.26";
};
stable = {
sha256 = "18w1mfsfd2yy7sf30d5wypv6mrdlsj3807xnab2gfi1kb8zjykyb";
sha256bin64 = "1g2i3cj6hgr4p0mfvv6xd8lvk217li7lrzgk4j6k563zpqhh863p";
version = "65.0.3325.146";
sha256 = "1kkc276jfhw2kp9pfg1drxm1h98d2cwm4c5c7xay2pbrhkypnzk2";
sha256bin64 = "1vv34g05x2jyg8hgk1r760g38rb3r17p5iwf1f1wqkjp3z6c952v";
version = "65.0.3325.162";
};
}

View file

@ -18,10 +18,10 @@ rec {
firefox = common rec {
pname = "firefox";
version = "59.0";
version = "59.0.1";
src = fetchurl {
url = "https://hg.mozilla.org/releases/mozilla-release/archive/c61f5f5ead48c78a80c80db5c489bdc7cfaf8175.tar.bz2";
sha512 = "03yybi1yp9g29jzdfgrq32r7a0gl2jz64w6ai8219cvhx8y95ahxfznj3vm29frrp6c18dk2nlpv2s89iczwm00lnn42r7dn6s6ppl9";
url = "https://hg.mozilla.org/releases/mozilla-release/archive/3db9e3d52b17563efca181ccbb50deb8660c59ae.tar.bz2";
sha512 = "3da3gmfv2aalsbsx15csas4mwnvlliy1q081sd2riz3nvxr7qyrdx1qvxj4gdr97wlmvz7mig9djhh5gwx7ddah5hfhj23cvccmw6jw";
};
patches = nixpkgsPatches ++ [
@ -41,10 +41,10 @@ rec {
firefox-esr = common rec {
pname = "firefox-esr";
version = "52.7.1esr";
version = "52.7.2esr";
src = fetchurl {
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "0275ca9c093fd0dcf09cfd31a4bca8c6ddb87aa74ace6b273a62f61079eeed11c2c0330c52c5f76aa73ed97e9cd18aa63cee69387e1fe346a30e4f9affc91ba7";
sha512 = "e275fd10fd32a0dc237135af3395e3a1ae501844632c973ff3b9bca1456702ee36dbee99fc57300598403c924c0db63bd62a199845c8f4a2e29db5d1e5973395";
};
patches = nixpkgsPatches;

View file

@ -3,7 +3,7 @@
buildGoPackage rec {
name = "machine-${version}";
version = "0.13.0";
version = "0.14.0";
goPackagePath = "github.com/docker/machine";
@ -11,7 +11,7 @@ buildGoPackage rec {
rev = "v${version}";
owner = "docker";
repo = "machine";
sha256 = "1bqblgz2avrvp9xv6rlvgl0xh2ghpml3a00xhq3mmzkznayw6chq";
sha256 = "0hd5sklmvkhhpfn318hq9w0f7x14165h1l2mdn9iv4447z1iibff";
};
postInstall = ''

View file

@ -1,26 +1,35 @@
{ stdenv, buildGoPackage, fetchFromGitHub }:
{ lib, buildGoPackage, fetchFromGitHub }:
buildGoPackage rec {
name = "kontemplate-${version}";
version = "1.3.0";
name = "kontemplate-${version}";
version = "1.4.0";
goPackagePath = "github.com/tazjin/kontemplate";
goDeps = ./deps.nix;
src = fetchFromGitHub {
rev = "v${version}";
owner = "tazjin";
repo = "kontemplate";
sha256 = "0g9hs9gwwkng9vbnv07ibhll0kggdprffpmhlbz9nmv81w2z3myi";
owner = "tazjin";
repo = "kontemplate";
rev = "v${version}";
sha256 = "11aqc9sgyqz3pscx7njnb3xghl7d61vzdgl3bqndady0dxsccrpj";
};
goDeps = ./deps.nix;
meta = with stdenv.lib; {
description = "Extremely simple Kubernetes resource templates";
homepage = http://kontemplate.works;
license = licenses.gpl3;
maintainers = with maintainers; [ mbode ];
platforms = platforms.unix;
meta = with lib; {
description = "Extremely simple Kubernetes resource templates";
homepage = "http://kontemplate.works";
downloadPage = "https://github.com/tazjin/kontemplate/releases";
license = licenses.gpl3;
maintainers = with maintainers; [ mbode tazjin ];
platforms = platforms.unix;
repositories.git = git://github.com/tazjin/kontemplate.git;
longDescription = ''
Kontemplate is a simple CLI tool that can take sets of
Kubernetes resource files with placeholders and insert values
per environment.
It can be used as a simple way of deploying the same set of
resources to different Kubernetes contexts with context-specific
configuration.
'';
};
}

View file

@ -3,118 +3,109 @@
{
goPackagePath = "github.com/Masterminds/semver";
fetch = {
type = "git";
url = "https://github.com/Masterminds/semver";
rev = "15d8430ab86497c5c0da827b748823945e1cf1e1";
sha256 = "0q5w6mjr1zws04z7x1ax1hp1zxdc4mbm9zsikgd6fv0c9ndnjr3q";
type = "git";
url = "https://github.com/Masterminds/semver";
rev = "517734cc7d6470c0d07130e40fd40bdeb9bcd3fd";
sha256 = "1625b5sxpmlz60jw67j1ljfcc09d4lhxg3z6gc4am8s2rrdgwij6";
};
}
{
goPackagePath = "github.com/Masterminds/sprig";
fetch = {
type = "git";
url = "https://github.com/Masterminds/sprig";
rev = "b217b9c388de2cacde4354c536e520c52c055563";
sha256 = "1f41v3c8c7zagc4qjhcb6nwkvi8nzvf70f89a7ss2m6krkxz0m2a";
type = "git";
url = "https://github.com/Masterminds/sprig";
rev = "e039e20e500c2c025d9145be375e27cf42a94174";
sha256 = "1yhpyzq6ghwl0242phjpbc9358fcw63pxrcxsyv9n4dm0w15va3m";
};
}
{
goPackagePath = "github.com/alecthomas/template";
fetch = {
type = "git";
url = "https://github.com/alecthomas/template";
rev = "a0175ee3bccc567396460bf5acd36800cb10c49c";
type = "git";
url = "https://github.com/alecthomas/template";
rev = "a0175ee3bccc567396460bf5acd36800cb10c49c";
sha256 = "0qjgvvh26vk1cyfq9fadyhfgdj36f1iapbmr5xp6zqipldz8ffxj";
};
}
{
goPackagePath = "github.com/alecthomas/units";
fetch = {
type = "git";
url = "https://github.com/alecthomas/units";
rev = "2efee857e7cfd4f3d0138cc3cbb1b4966962b93a";
type = "git";
url = "https://github.com/alecthomas/units";
rev = "2efee857e7cfd4f3d0138cc3cbb1b4966962b93a";
sha256 = "1j65b91qb9sbrml9cpabfrcf07wmgzzghrl7809hjjhrmbzri5bl";
};
}
{
goPackagePath = "github.com/aokoli/goutils";
fetch = {
type = "git";
url = "https://github.com/aokoli/goutils";
rev = "3391d3790d23d03408670993e957e8f408993c34";
type = "git";
url = "https://github.com/aokoli/goutils";
rev = "3391d3790d23d03408670993e957e8f408993c34";
sha256 = "1yj4yjfwylica31sgj69ygb04p9xxi22kgfxd0j5f58zr8vwww2n";
};
}
{
goPackagePath = "github.com/ghodss/yaml";
fetch = {
type = "git";
url = "https://github.com/ghodss/yaml";
rev = "0ca9ea5df5451ffdf184b4428c902747c2c11cd7";
type = "git";
url = "https://github.com/ghodss/yaml";
rev = "0ca9ea5df5451ffdf184b4428c902747c2c11cd7";
sha256 = "0skwmimpy7hlh7pva2slpcplnm912rp3igs98xnqmn859kwa5v8g";
};
}
{
goPackagePath = "github.com/huandu/xstrings";
fetch = {
type = "git";
url = "https://github.com/huandu/xstrings";
rev = "37469d0c81a7910b49d64a0d308ded4823e90937";
sha256 = "18c2b4h7phdm71mn66x8bsmghjr1b2lpg07zcbgmab37y36bjl20";
type = "git";
url = "https://github.com/huandu/xstrings";
rev = "3959339b333561bf62a38b424fd41517c2c90f40";
sha256 = "0f1jyd80grpr88gwhljx2x0xgsyzw07807n4z4axxxlybh5f0nh1";
};
}
{
goPackagePath = "github.com/imdario/mergo";
fetch = {
type = "git";
url = "https://github.com/imdario/mergo";
rev = "7fe0c75c13abdee74b09fcacef5ea1c6bba6a874";
sha256 = "1hclh5kpg25s2llpk7j7sm3vf66xci5jchn8wzdcr5fj372ghsbd";
};
}
{
goPackagePath = "github.com/polydawn/meep";
fetch = {
type = "git";
url = "https://github.com/polydawn/meep";
rev = "eaf1db2168fe380b4da17a35f0adddb5ae15a651";
sha256 = "12n134fb2imnj67xkbznzm0gqkg36hdxwr960y91qb5s2q2krxir";
type = "git";
url = "https://github.com/imdario/mergo";
rev = "d806ba8c21777d504a2090a2ca4913c750dd3a33";
sha256 = "12n3lfbfxvnag916c6dpxl48j29s482zwsqjc6wk4vb68qbz2nl3";
};
}
{
goPackagePath = "github.com/satori/go.uuid";
fetch = {
type = "git";
url = "https://github.com/satori/go.uuid";
rev = "5bf94b69c6b68ee1b541973bb8e1144db23a194b";
type = "git";
url = "https://github.com/satori/go.uuid";
rev = "5bf94b69c6b68ee1b541973bb8e1144db23a194b";
sha256 = "0l782l4srv36pj8pfgn61996d0vjifld4a569rbjwq5h14pd0c07";
};
}
{
goPackagePath = "golang.org/x/crypto";
fetch = {
type = "git";
url = "https://go.googlesource.com/crypto";
rev = "94eea52f7b742c7cbe0b03b22f0c4c8631ece122";
sha256 = "095zyvjb0m2pz382500miqadhk7w3nis8z3j941z8cq4rdafijvi";
type = "git";
url = "https://go.googlesource.com/crypto";
rev = "ab89591268e0c8b748cbe4047b00197516011af5";
sha256 = "1cbg8wlv1hmdps9ksa4kym5zy0mb2yjykw4ns7yqv7nmz4s5xajr";
};
}
{
goPackagePath = "gopkg.in/alecthomas/kingpin.v2";
fetch = {
type = "git";
url = "https://gopkg.in/alecthomas/kingpin.v2";
rev = "1087e65c9441605df944fb12c33f0fe7072d18ca";
type = "git";
url = "https://gopkg.in/alecthomas/kingpin.v2";
rev = "1087e65c9441605df944fb12c33f0fe7072d18ca";
sha256 = "18llqzkdqf62qbqcv2fd3j0igl6cwwn4dissf5skkvxrcxjcmmj0";
};
}
{
goPackagePath = "gopkg.in/yaml.v2";
fetch = {
type = "git";
url = "https://gopkg.in/yaml.v2";
rev = "287cf08546ab5e7e37d55a84f7ed3fd1db036de5";
sha256 = "15502klds9wwv567vclb9kx95gs8lnyzn4ybsk6l9fc7a67lk831";
type = "git";
url = "https://gopkg.in/yaml.v2";
rev = "eb3733d160e74a9c7e442f435eb3bea458e1d19f";
sha256 = "1srhvcaa9db3a6xj29mkjr5kg33y71pclrlx4vcwz5m1lgb5c7q6";
};
}
]

View file

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "pig-0.14.0";
name = "pig-0.16.0";
src = fetchurl {
url = "mirror://apache/pig/${name}/${name}.tar.gz";
sha256 = "183in34cj93ny3lhqyq76g9pjqgw1qlwakk5v6x847vrlkfndska";
sha256 = "0p79grz5islnq195lv7pqdxb5l3v4y0k0w63602827qs70zpr508";
};

View file

@ -100,8 +100,8 @@ in rec {
terraform_0_10-full = terraform_0_10.withPlugins lib.attrValues;
terraform_0_11 = pluggable (generic {
version = "0.11.3";
sha256 = "0637x7jcm62pdnivmh4rggly6dmlvdh3jpsd1z4vba15gbm203nz";
version = "0.11.4";
sha256 = "1r3x7qv0bfsnmj7l3hmsww26rb9hkg361515gpvjjzafz5b7bz0c";
patches = [ ./provider-path.patch ];
passthru = { inherit plugins; };
});

View file

@ -11,8 +11,8 @@
{
owner = "terraform-providers";
repo = "terraform-provider-archive";
version = "1.0.1";
sha256 = "1qxw9c38hsdmxyrrnl7s9iwlzjrwzml2m74bs4iw120gljpqphqz";
version = "1.0.2";
sha256 = "0n8939qai01lrk4kq3w344a73z6bfqbfq9yl28yh93fvmpkv6jz2";
};
arukas =
{
@ -46,8 +46,8 @@
{
owner = "terraform-providers";
repo = "terraform-provider-azurerm";
version = "1.2.0";
sha256 = "10j7lk3rrlix04pcnnz25h0bm336nnmf3c2a1760v272sjdph51z";
version = "1.3.0";
sha256 = "0szw7fmdwy8r99w40z2h7fp5znj8s0ddbcwrgm1g3vdcp757vcg5";
};
bitbucket =
{
@ -431,8 +431,8 @@
{
owner = "terraform-providers";
repo = "terraform-provider-scaleway";
version = "1.1.0";
sha256 = "10ghzwss3n95yln7brzwghkc0gv7bkmyml7zlj7hfbkjr3382m1p";
version = "1.2.0";
sha256 = "123rjvslq7gy2m96rikm0i2298jjpsnyh9civbyvbxj3h47z9h4v";
};
softlayer =
{

View file

@ -2,13 +2,13 @@
python3Packages.buildPythonApplication rec {
name = "gmailieer";
version = "0.5";
version = "0.6";
src = fetchFromGitHub {
owner = "gauteh";
repo = "gmailieer";
rev = "v${version}";
sha256 = "152ky06k1wc3jffb48c6zh7c7pr732m9f4g1i316zaa4nx2ynfsa";
sha256 = "1z7r78ck81l8xdpjynjv8dfm4j0p6a1cbzgdckp41id27sq1vc76";
};
propagatedBuildInputs = with python3Packages; [

View file

@ -1,24 +1,23 @@
{ stdenv, fetchFromGitHub, zlib
, ocaml, ocamlbuild, ocamlfuse, findlib, gapi_ocaml, ocaml_sqlite3, camlidl }:
, ocaml, jbuilder, opam, ocamlfuse, findlib, gapi_ocaml, ocaml_sqlite3, camlidl }:
stdenv.mkDerivation rec {
name = "google-drive-ocamlfuse-${version}";
version = "0.6.21";
version = "0.6.25";
src = fetchFromGitHub {
owner = "astrada";
repo = "google-drive-ocamlfuse";
rev = "v${version}";
sha256 = "14qvhz18pzxdgxk5vcs024ajbkxccfwc9p3z5r6vfkc9mm851v59";
sha256 = "1rjm2jcc93sz7l25zbgqal81534vvvbmwy7847s0k8fkr5nq97gp";
};
nativeBuildInputs = [ ocamlbuild ];
nativeBuildInputs = [ jbuilder opam ];
buildInputs = [ zlib ocaml ocamlfuse findlib gapi_ocaml ocaml_sqlite3 camlidl ];
configurePhase = "ocaml setup.ml -configure --prefix \"$out\"";
buildPhase = "ocaml setup.ml -build";
installPhase = "ocaml setup.ml -install";
buildPhase = "jbuilder build @install";
installPhase = "mkdir $out && jbuilder install --prefix $out";
meta = {
homepage = http://gdfuse.forge.ocamlcore.org/;

View file

@ -1,133 +1,15 @@
{ mkDerivation, lib, fetchgit, fetchpatch
, pkgconfig, gyp, cmake, makeWrapper
, qtbase, qtimageformats, gtk3, libappindicator-gtk3, libnotify
, dee, ffmpeg, openalSoft, minizip, libopus, alsaLib, libpulseaudio, range-v3
}:
{ qt5, stdenv }:
with lib;
mkDerivation rec {
name = "telegram-desktop-${version}";
version = "1.2.6";
# Submodules
src = fetchgit {
url = "git://github.com/telegramdesktop/tdesktop";
rev = "v${version}";
sha256 = "15g0m2wwqfp13wd7j31p8cx1kpylx5m8ljaksnsqdkgyr9l1ar8w";
fetchSubmodules = true;
let mkTelegram = args: qt5.callPackage (import ./generic.nix args) { };
in {
stable = mkTelegram {
stable = true;
version = "1.2.6";
sha256Hash = "15g0m2wwqfp13wd7j31p8cx1kpylx5m8ljaksnsqdkgyr9l1ar8w";
};
# TODO: Not active anymore.
tgaur = fetchgit {
url = "https://aur.archlinux.org/telegram-desktop-systemqt.git";
rev = "1ed27ce40913b9e6e87faf7a2310660c2790b98e";
sha256 = "1i7ipqgisaw54g1nbg2cvpbx89g9gyjjb3sak1486pxsasp1qhyc";
};
patches = [
(fetchpatch {
name = "tdesktop.patch";
url = "https://git.archlinux.org/svntogit/community.git/plain/repos/community-x86_64/tdesktop.patch?h=packages/telegram-desktop&id=f0eefac36f529295f8b065a14b6d5f1a51d7614d";
sha256 = "1a4wap5xnp6zn4913r3zdpy6hvkcfxcy4zzimy7fwzp7iwy20iqa";
})
];
postPatch = ''
substituteInPlace Telegram/SourceFiles/platform/linux/linux_libs.cpp --replace '"appindicator"' '"${libappindicator-gtk3}/lib/libappindicator3.so"'
substituteInPlace Telegram/SourceFiles/platform/linux/linux_libnotify.cpp --replace '"notify"' '"${libnotify}/lib/libnotify.so"'
'';
nativeBuildInputs = [ pkgconfig gyp cmake makeWrapper ];
buildInputs = [
qtbase qtimageformats gtk3 libappindicator-gtk3
dee ffmpeg openalSoft minizip libopus alsaLib libpulseaudio range-v3
];
enableParallelBuilding = true;
GYP_DEFINES = concatStringsSep "," [
"TDESKTOP_DISABLE_CRASH_REPORTS"
"TDESKTOP_DISABLE_AUTOUPDATE"
"TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME"
];
NIX_CFLAGS_COMPILE = [
"-DTDESKTOP_DISABLE_AUTOUPDATE"
"-DTDESKTOP_DISABLE_CRASH_REPORTS"
"-DTDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME"
"-I${minizip}/include/minizip"
# See Telegram/gyp/qt.gypi
"-I${getDev qtbase}/mkspecs/linux-g++"
] ++ concatMap (x: [
"-I${getDev qtbase}/include/${x}"
"-I${getDev qtbase}/include/${x}/${qtbase.version}"
"-I${getDev qtbase}/include/${x}/${qtbase.version}/${x}"
"-I${getDev libopus}/include/opus"
"-I${getDev alsaLib}/include/alsa"
"-I${getDev libpulseaudio}/include/pulse"
]) [ "QtCore" "QtGui" "QtDBus" ];
CPPFLAGS = NIX_CFLAGS_COMPILE;
preConfigure = ''
pushd "Telegram/ThirdParty/libtgvoip"
patch -Np1 -i "${tgaur}/libtgvoip.patch"
popd
sed -i Telegram/gyp/telegram_linux.gypi \
-e 's,/usr,/does-not-exist,g' \
-e 's,appindicator-0.1,appindicator3-0.1,g' \
-e 's,-flto,,g'
sed -i Telegram/gyp/qt.gypi \
-e "s,/usr/include/qt/QtCore/,${qtbase.dev}/include/QtCore/,g" \
-e 's,\d+",\d+" | head -n1,g'
sed -i Telegram/gyp/qt_moc.gypi \
-e "s,/usr/bin/moc,moc,g"
sed -i Telegram/gyp/qt_rcc.gypi \
-e "s,/usr/bin/rcc,rcc,g"
gyp \
-Dbuild_defines=${GYP_DEFINES} \
-Gconfig=Release \
--depth=Telegram/gyp \
--generator-output=../.. \
-Goutput_dir=out \
--format=cmake \
Telegram/gyp/Telegram.gyp
cd out/Release
NUM=$((`wc -l < CMakeLists.txt` - 2))
sed -i "$NUM r $tgaur/CMakeLists.inj" CMakeLists.txt
export ASM=$(type -p gcc)
'';
installPhase = ''
install -Dm755 Telegram $out/bin/telegram-desktop
mkdir -p $out/share/applications $out/share/kde4/services
sed "s,/usr/bin,$out/bin,g" $tgaur/telegram-desktop.desktop > $out/share/applications/telegram-desktop.desktop
sed "s,/usr/bin,$out/bin,g" $tgaur/tg.protocol > $out/share/kde4/services/tg.protocol
for icon_size in 16 32 48 64 128 256 512; do
install -Dm644 "../../../Telegram/Resources/art/icon''${icon_size}.png" "$out/share/icons/hicolor/''${icon_size}x''${icon_size}/apps/telegram-desktop.png"
done
# This is necessary to run Telegram in a pure environment.
wrapProgram $out/bin/telegram-desktop \
--prefix QT_PLUGIN_PATH : "${qtbase}/${qtbase.qtPluginPrefix}" \
--set XDG_RUNTIME_DIR "XDG-RUNTIME-DIR"
sed -i $out/bin/telegram-desktop \
-e "s,'XDG-RUNTIME-DIR',\"\''${XDG_RUNTIME_DIR:-/run/user/\$(id --user)}\","
'';
meta = {
description = "Telegram Desktop messaging app";
license = licenses.gpl3;
platforms = [ "x86_64-linux" "i686-linux" ];
homepage = https://desktop.telegram.org/;
maintainers = with maintainers; [ abbradar garbas primeos ];
preview = mkTelegram {
stable = false;
version = "1.2.12";
sha256Hash = "1b9qc4a14jqjl30z4bjh1zbqsmgl25kdp0hj8p7xbj34zlkzfw5m";
};
}

View file

@ -0,0 +1,140 @@
{ stable, version, sha256Hash }:
{ mkDerivation, lib, fetchgit, fetchpatch
, pkgconfig, pythonPackages, cmake, makeWrapper
, qtbase, qtimageformats, gtk3, libappindicator-gtk3, libnotify
, dee, ffmpeg, openalSoft, minizip, libopus, alsaLib, libpulseaudio, range-v3
}:
with lib;
mkDerivation rec {
name = "telegram-desktop-${version}";
inherit version;
# Submodules
src = fetchgit {
url = "git://github.com/telegramdesktop/tdesktop";
rev = "v${version}";
sha256 = sha256Hash;
fetchSubmodules = true;
};
# TODO: Not active anymore.
tgaur = fetchgit {
url = "https://aur.archlinux.org/telegram-desktop-systemqt.git";
rev = "1ed27ce40913b9e6e87faf7a2310660c2790b98e";
sha256 = "1i7ipqgisaw54g1nbg2cvpbx89g9gyjjb3sak1486pxsasp1qhyc";
};
patches = [ (if stable
then (fetchpatch {
name = "tdesktop.patch";
url = "https://git.archlinux.org/svntogit/community.git/plain/repos/community-x86_64/tdesktop.patch?h=packages/telegram-desktop&id=f0eefac36f529295f8b065a14b6d5f1a51d7614d";
sha256 = "1a4wap5xnp6zn4913r3zdpy6hvkcfxcy4zzimy7fwzp7iwy20iqa";
})
else (fetchpatch {
name = "tdesktop.patch";
url = "https://git.archlinux.org/svntogit/community.git/plain/repos/community-x86_64/tdesktop.patch?h=packages/telegram-desktop&id=59ca8bd4428cf2fb3f02d7f1e1a5558545a4c075";
sha256 = "0jj2kifzx83f9nhk30csy2373avpyx0ci70a8bc7j2dm3wxym50l";
}))
];
postPatch = ''
substituteInPlace Telegram/SourceFiles/platform/linux/linux_libs.cpp --replace '"appindicator"' '"${libappindicator-gtk3}/lib/libappindicator3.so"'
substituteInPlace Telegram/SourceFiles/platform/linux/linux_libnotify.cpp --replace '"notify"' '"${libnotify}/lib/libnotify.so"'
'';
nativeBuildInputs = [ pkgconfig pythonPackages.gyp cmake makeWrapper ];
buildInputs = [
qtbase qtimageformats gtk3 libappindicator-gtk3
dee ffmpeg openalSoft minizip libopus alsaLib libpulseaudio range-v3
];
enableParallelBuilding = true;
GYP_DEFINES = concatStringsSep "," [
"TDESKTOP_DISABLE_CRASH_REPORTS"
"TDESKTOP_DISABLE_AUTOUPDATE"
"TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME"
];
NIX_CFLAGS_COMPILE = [
"-DTDESKTOP_DISABLE_AUTOUPDATE"
"-DTDESKTOP_DISABLE_CRASH_REPORTS"
"-DTDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME"
"-I${minizip}/include/minizip"
# See Telegram/gyp/qt.gypi
"-I${getDev qtbase}/mkspecs/linux-g++"
] ++ concatMap (x: [
"-I${getDev qtbase}/include/${x}"
"-I${getDev qtbase}/include/${x}/${qtbase.version}"
"-I${getDev qtbase}/include/${x}/${qtbase.version}/${x}"
"-I${getDev libopus}/include/opus"
"-I${getDev alsaLib}/include/alsa"
"-I${getDev libpulseaudio}/include/pulse"
]) [ "QtCore" "QtGui" "QtDBus" ];
CPPFLAGS = NIX_CFLAGS_COMPILE;
preConfigure = ''
pushd "Telegram/ThirdParty/libtgvoip"
patch -Np1 -i "${tgaur}/libtgvoip.patch"
popd
sed -i Telegram/gyp/telegram_linux.gypi \
-e 's,/usr,/does-not-exist,g' \
-e 's,appindicator-0.1,appindicator3-0.1,g' \
-e 's,-flto,,g'
sed -i Telegram/gyp/qt.gypi \
-e "s,/usr/include/qt/QtCore/,${qtbase.dev}/include/QtCore/,g" \
-e 's,\d+",\d+" | head -n1,g'
sed -i Telegram/gyp/qt_moc.gypi \
-e "s,/usr/bin/moc,moc,g"
sed -i Telegram/gyp/qt_rcc.gypi \
-e "s,/usr/bin/rcc,rcc,g"
gyp \
-Dbuild_defines=${GYP_DEFINES} \
-Gconfig=Release \
--depth=Telegram/gyp \
--generator-output=../.. \
-Goutput_dir=out \
--format=cmake \
Telegram/gyp/Telegram.gyp
cd out/Release
NUM=$((`wc -l < CMakeLists.txt` - 2))
sed -i "$NUM r $tgaur/CMakeLists.inj" CMakeLists.txt
export ASM=$(type -p gcc)
'';
installPhase = ''
install -Dm755 Telegram $out/bin/telegram-desktop
mkdir -p $out/share/applications $out/share/kde4/services
sed "s,/usr/bin,$out/bin,g" $tgaur/telegram-desktop.desktop > $out/share/applications/telegram-desktop.desktop
sed "s,/usr/bin,$out/bin,g" $tgaur/tg.protocol > $out/share/kde4/services/tg.protocol
for icon_size in 16 32 48 64 128 256 512; do
install -Dm644 "../../../Telegram/Resources/art/icon''${icon_size}.png" "$out/share/icons/hicolor/''${icon_size}x''${icon_size}/apps/telegram-desktop.png"
done
# This is necessary to run Telegram in a pure environment.
wrapProgram $out/bin/telegram-desktop \
--prefix QT_PLUGIN_PATH : "${qtbase}/${qtbase.qtPluginPrefix}" \
--set XDG_RUNTIME_DIR "XDG-RUNTIME-DIR"
sed -i $out/bin/telegram-desktop \
-e "s,'XDG-RUNTIME-DIR',\"\''${XDG_RUNTIME_DIR:-/run/user/\$(id --user)}\","
'';
meta = {
description = "Telegram Desktop messaging app";
license = licenses.gpl3;
platforms = [ "x86_64-linux" "i686-linux" ];
homepage = https://desktop.telegram.org/;
maintainers = with maintainers; [ abbradar garbas primeos ];
};
}

View file

@ -2,7 +2,7 @@
stdenv.mkDerivation rec {
name = "ii-1.8";
src = fetchurl {
url = "http://dl.suckless.org/tools/${name}.tar.gz";
sha256 = "1lk8vjl7i8dcjh4jkg8h8bkapcbs465sy8g9c0chfqsywbmf3ndr";

View file

@ -2,10 +2,10 @@
, hicolor-icon-theme, libsoup, gnome3 }:
stdenv.mkDerivation rec {
name = "homebank-5.1.7";
name = "homebank-5.1.8";
src = fetchurl {
url = "http://homebank.free.fr/public/${name}.tar.gz";
sha256 = "19szz86jxya8v4r3pa5czng9q2kn5hhbk273x1wqvdv40z0577jp";
sha256 = "0fzjmwz2pgi0nw49xljp1za3vp67kjh88gf688d9ig4wc2ygr0qh";
};
nativeBuildInputs = [ pkgconfig wrapGAppsHook ];

View file

@ -9,11 +9,11 @@
python2Packages.buildPythonApplication rec {
name = "zim-${version}";
version = "0.67";
version = "0.68";
src = fetchurl {
url = "http://zim-wiki.org/downloads/${name}.tar.gz";
sha256 = "1gdbzy9qyzj3rn9fsl0ss7lbk9kyka99656bphx2dah694yyyz5k";
sha256 = "05fzb24a2s3pm89zb6gwa48wb925an5i652klx8yk9pn23h1h5fr";
};
propagatedBuildInputs = with python2Packages; [ pyGtkGlade pyxdg pygobject2 ];

View file

@ -1,7 +1,7 @@
{ stdenv, fetchurl, buildFHSUserEnv, makeDesktopItem, runCommand, bash, wrapGAppsHook, gsettings-desktop-schemas, gtk3, gnome3 }:
let
version = "5.0.25";
version = "5.0.35.1";
meta = with stdenv.lib; {
homepage = https://www.zotero.org;
description = "Collect, organize, cite, and share your research sources";
@ -15,7 +15,7 @@ zoteroSrc = stdenv.mkDerivation rec {
src = fetchurl {
url = "https://download.zotero.org/client/release/${version}/Zotero-${version}_linux-x86_64.tar.bz2";
sha256 = "1y3q5582xp4inpz137x0r9iscs1g0cjlqcfjpzl3klsq3yas688k";
sha256 = "0d2imvp84svllrnja1dl4nldp634z632g5xkm2q9v7j3dwbzw1hw";
};
buildInputs= [ wrapGAppsHook gsettings-desktop-schemas gtk3 gnome3.adwaita-icon-theme gnome3.dconf ];

View file

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "picard-tools-${version}";
version = "2.17.10";
version = "2.17.11";
src = fetchurl {
url = "https://github.com/broadinstitute/picard/releases/download/${version}/picard.jar";
sha256 = "0lf9appcs66mxmirzbys09xhq38kpa4ldxwwzrr9y2cklnxjn4hg";
sha256 = "1p50bzkwq5hrwal6i679yrkdqkh5hk4bb9l9gdff2x2i761v9y9b";
};
buildInputs = [ jre makeWrapper ];

View file

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "snpeff-${version}";
version = "4.3t";
version = "4.3q";
src = fetchurl {
url = "mirror://sourceforge/project/snpeff/snpEff_v4_3t_core.zip";
sha256 = "0i12mv93bfv8xjwc3rs2x73d6hkvi7kgbbbx3ry984l3ly4p6nnm";
url = "mirror://sourceforge/project/snpeff/snpEff_v4_3q_core.zip";
sha256 = "0sxz8zy8wrzcy01hyb1cirwbxqyjw30a2x3q6p4l7zmw2szi7mn1";
};
buildInputs = [ unzip jre makeWrapper ];

View file

@ -10,13 +10,13 @@
with lib;
stdenv.mkDerivation rec {
name = "kicad-unstable-${version}";
version = "2017-12-11";
version = "2018-03-10";
src = fetchFromGitHub {
owner = "KICad";
repo = "kicad-source-mirror";
rev = "1955f252265c38a313f6c595d6c4c637f38fd316";
sha256 = "15cc81h7nh5dk6gj6mc4ylcgdznfriilhb43n1g3xwyq3s8iaibz";
rev = "17c0917dac12ea0be50ff95cee374a0cd8b7f862";
sha256 = "1yn5hj5hjnpb5fkzzlyawg62a96fbfvha49395s22dcp95riqvf0";
};
postPatch = ''

View file

@ -2,7 +2,7 @@
let
pname = "ecm";
version = "6.4.4";
version = "7.0.4";
name = "${pname}-${version}";
in
@ -10,8 +10,8 @@ stdenv.mkDerivation {
inherit name;
src = fetchurl {
url = http://gforge.inria.fr/frs/download.php/file/32159/ecm-6.4.4.tar.gz;
sha256 = "0v5h2nicz9yx78c2d72plbhi30iq4nxbvphja1s9501db4aah4y8";
url = "http://gforge.inria.fr/frs/download.php/file/36224/ecm-${version}.tar.gz";
sha256 = "0hxs24c2m3mh0nq1zz63z3sb7dhy1rilg2s1igwwcb26x3pb7xqc";
};
# See https://trac.sagemath.org/ticket/19233

View file

@ -0,0 +1,71 @@
{ stdenv
, bash
, gnused
, fetchFromGitHub
, gettext
, pkgconfig
, gtk3
, granite
, gnome3
, cmake
, ninja
, vala
, libqalculate
, elementary-cmake-modules
, wrapGAppsHook }:
stdenv.mkDerivation rec {
name = "nasc-${version}";
version = "0.4.6";
src = fetchFromGitHub {
owner = "parnold-x";
repo = "nasc";
rev = version;
sha256 = "01n4ldj5phrsv97vb04qvs9c1ip6v8wygx9llj704hly1il9fb54";
};
XDG_DATA_DIRS = stdenv.lib.concatStringsSep ":" [
"${granite}/share"
"${gnome3.libgee}/share"
];
nativeBuildInputs = [
pkgconfig
wrapGAppsHook
vala
cmake
gettext
];
buildInputs = [
libqalculate
gtk3
granite
gnome3.libgee
gnome3.libsoup
gnome3.gtksourceview
];
prePatch = ''
substituteInPlace ./libqalculatenasc/libtool \
--replace "/bin/bash" "${bash}/bin/bash" \
--replace "/bin/sed" "${gnused}/bin/sed"
substituteInPlace ./libqalculatenasc/configure.inc \
--replace 'ac_default_path="/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin"' 'ac_default_path=$PATH'
'';
meta = with stdenv.lib; {
description = "Do maths like a normal person";
longDescription = ''
Its an app where you do maths like a normal person. It lets you
type whatever you want and smartly figures out what is math and
spits out an answer on the right pane. Then you can plug those
answers in to future equations and if that answer changes, so does
the equations its used in.
'';
homepage = https://github.com/parnold-x/nasc;
maintainers = with maintainers; [ samdroid-apps ];
platforms = platforms.linux;
license = licenses.gpl3Plus;
};
}

View file

@ -4,11 +4,11 @@
stdenv.mkDerivation rec {
name = "gp2c-${version}";
version = "0.0.10";
version = "0.0.10pl1";
src = fetchurl {
url = "http://pari.math.u-bordeaux.fr/pub/pari/GP2C/${name}.tar.gz";
sha256 = "1xhpz5p81iw261ay1kip283ggr0ir8ydz8qx3v24z8jfms1r3y70";
sha256 = "16hgmdvzxbmv63x1f72q1xgfyh0qhx7kaf9nbaamy0gdawxjxcav";
};
buildInputs = [ pari perl ];

View file

@ -1,37 +1,64 @@
{stdenv, fetchurl, jdk}:
{ stdenv, fetchFromGitHub, callPackage, jdk, maven, javaPackages }:
with stdenv.lib;
let
version = "0.9.2";
let version = "0.9.2"; in
stdenv.mkDerivation {
name = "gephi-${version}";
src = fetchurl {
url = "https://github.com/gephi/gephi/releases/download/v${version}/gephi-${version}-linux.tar.gz";
sha256 = "1wr3rka8j2y10nnwbg27iaxkbrp4d7d07ccs9n94yqv6wqawj5z8";
src = fetchFromGitHub {
owner = "gephi";
repo = "gephi";
rev = "v${version}";
sha256 = "0kqp2nvnsb55j1axb6hk0mlw5alyaiyb70z0mdybhpqqxyw2da2r";
};
meta = {
inherit version;
# perform fake build to make a fixed-output derivation out of the files downloaded from maven central (120MB)
deps = stdenv.mkDerivation {
name = "gephi-${version}-deps";
inherit src;
buildInputs = [ jdk maven ];
buildPhase = ''
while mvn package -Dmaven.repo.local=$out/.m2 -Dmaven.wagon.rto=5000; [ $? = 1 ]; do
echo "timeout, restart maven to continue downloading"
done
'';
# keep only *.{pom,jar,sha1,nbm} and delete all ephemeral files with lastModified timestamps inside
installPhase = ''find $out/.m2 -type f -regex '.+\(\.lastUpdated\|resolver-status\.properties\|_remote\.repositories\)' -delete'';
outputHashAlgo = "sha256";
outputHashMode = "recursive";
outputHash = "1p7yf97dn0nvr005cbs6vdk3i341s8fya4kfccj8qqad2qgxflif";
};
in
stdenv.mkDerivation rec {
name = "gephi-${version}";
inherit src;
buildInputs = [ jdk maven ];
buildPhase = ''
# 'maven.repo.local' must be writable so copy it out of nix store
mvn package --offline -Dmaven.repo.local=$(cp -dpR ${deps}/.m2 ./ && chmod +w -R .m2 && pwd)/.m2
'';
installPhase = ''
cp -r modules/application/target/gephi $out
# remove garbage
find $out -type f -name .lastModified -delete
find $out -type f -regex '.+\.exe' -delete
# use self-compiled JOGL to avoid patchelf'ing .so inside jars
rm $out/gephi/modules/ext/org.gephi.visualization/org-jogamp-{jogl,gluegen}/*.jar
cp ${javaPackages.jogl_2_3_2}/share/java/jogl*.jar $out/gephi/modules/ext/org.gephi.visualization/org-jogamp-jogl/
cp ${javaPackages.jogl_2_3_2}/share/java/glue*.jar $out/gephi/modules/ext/org.gephi.visualization/org-jogamp-gluegen/
echo "jdkhome=${jdk}" >> $out/etc/gephi.conf
'';
meta = with stdenv.lib; {
description = "A platform for visualizing and manipulating large graphs";
homepage = https://gephi.org;
license = licenses.gpl3;
maintainers = [maintainers.taeer];
platforms = platforms.linux;
maintainers = [ maintainers.taeer ];
platforms = [ "x86_64-linux" ];
};
buildInputs = [jdk];
configurePhase = "
echo \"jdkhome=${jdk}\" >> etc/gephi.conf
";
dontBuild = true;
installPhase = "
mkdir $out
for a in ./*; do
mv $a $out
done
";
}

View file

@ -1,6 +1,7 @@
{ stdenv, fetchurl, openssl, zlib, asciidoc, libxml2, libxslt
, docbook_xml_xslt, pkgconfig, luajit
, gzip, bzip2, xz
, python, wrapPython, pygments, markdown
}:
stdenv.mkDerivation rec {
@ -20,10 +21,11 @@ stdenv.mkDerivation rec {
sha256 = "0wc64dzcxrzgi6kwcljz6y3cwm3ajdgf6aws7g58azbhvl1jk04l";
};
nativeBuildInputs = [ pkgconfig ];
nativeBuildInputs = [ pkgconfig ] ++ [ python wrapPython ];
buildInputs = [
openssl zlib asciidoc libxml2 libxslt docbook_xml_xslt luajit
];
pythonPath = [ pygments markdown ];
postPatch = ''
sed -e 's|"gzip"|"${gzip}/bin/gzip"|' \
@ -50,6 +52,8 @@ stdenv.mkDerivation rec {
a2x --no-xmllint -f manpage cgitrc.5.txt
mkdir -p "$out/share/man/man5"
cp cgitrc.5 "$out/share/man/man5"
wrapPythonProgramsIn "$out/lib/cgit/filters" "$out $pythonPath"
'';
meta = {

View file

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "src-${version}";
version = "1.17";
version = "1.18";
src = fetchurl {
url = "http://www.catb.org/~esr/src/${name}.tar.gz";
sha256 = "17885hpq8nxhqzwl50nrgdk1q9dq4cxjxldgkk8shdf08s5hcqhk";
sha256 = "0n0skhvya8w2az45h2gsafxy8m2mvqas64nrgxifcmrzfv0rf26c";
};
buildInputs = [ python rcs git makeWrapper ];
@ -24,9 +24,17 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; {
description = "Simple single-file revision control";
homepage = http://www.catb.org/~esr/src/;
longDescription = ''
SRC, acronym of Simple Revision Control, is RCS/SCCS reloaded with a
modern UI, designed to manage single-file solo projects kept more than one
to a directory. Use it for FAQs, ~/bin directories, config files, and the
like. Features integer sequential revision numbers, a command set that
will seem familiar to Subversion/Git/hg users, and no binary blobs
anywhere.
'';
homepage = http://www.catb.org/esr/src/;
license = licenses.bsd3;
platforms = platforms.all;
maintainers = with maintainers; [ calvertvl ];
maintainers = with maintainers; [ calvertvl AndersonTorres ];
};
}

View file

@ -42,9 +42,9 @@ python3Packages.buildPythonApplication rec {
meta = with stdenv.lib; {
description = "Cross-platform, Friend-2-Friend and secure decentralised communication platform";
description = "A screencasting program created with design in mind";
homepage = https://code.launchpad.net/kazam;
#license = licenses.bsd2;
license = licenses.lgpl3;
platforms = platforms.linux;
maintainers = [ maintainers.domenkozar ];
};

View file

@ -1,8 +1,8 @@
{ stdenv, fetchFromGitHub, bc, python, fuse, libarchive }:
stdenv.mkDerivation rec {
name = "lkl-2017-11-10";
rev = "52a6a643c7d1dd3031c0cbec75e1ac7a999f3d57";
name = "lkl-2018-03-10";
rev = "8772a4da6064444c5b70766b806fe272b0287c31";
outputs = [ "dev" "lib" "out" ];
@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
inherit rev;
owner = "lkl";
repo = "linux";
sha256 = "1i5ywrfxqpykjjalwh9g4rwd4s186cqk3j806d327a67xb2ivxnp";
sha256 = "1m6gh4zcx1q7rv05d0knjpk3ivk2b3kc0kwjndciadqc45kws4wh";
};
# Fix a /usr/bin/env reference in here that breaks sandboxed builds
@ -27,7 +27,8 @@ stdenv.mkDerivation rec {
sed -i $out/bin/lkl-hijack.sh \
-e "s,LD_LIBRARY_PATH=.*,LD_LIBRARY_PATH=$lib/lib,"
cp tools/lkl/{cptofs,cpfromfs,fs2tar,lklfuse} $out/bin
cp tools/lkl/{cptofs,fs2tar,lklfuse} $out/bin
ln -s cptofs $out/bin/cpfromfs
cp -r tools/lkl/include $dev/
cp tools/lkl/liblkl*.{a,so} $lib/lib
'';

View file

@ -1,14 +1,16 @@
{ stdenv, fetchurl, ocamlPackages }:
{ stdenv, fetchgit, ocamlPackages, autoreconfHook }:
stdenv.mkDerivation rec {
name = "virt-top-${version}";
version = "1.0.8";
version = "2017-11-18-unstable";
src = fetchurl {
url = "https://people.redhat.com/~rjones/virt-top/files/virt-top-${version}.tar.gz";
sha256 = "04i1sf2d3ghilmzvr2vh74qcy009iifyc2ymj9kxnbkp97lrz13w";
src = fetchgit {
url = git://git.annexia.org/git/virt-top.git;
rev = "18a751d8c26548bb090ff05e30ccda3092e3373b";
sha256 = "0c4whjvw7p3yvd476i4ppdhi8j821r5y6caqrj2v9dc181cnp01i";
};
nativeBuildInputs = [ autoreconfHook ];
buildInputs = with ocamlPackages; [ ocaml findlib ocaml_extlib ocaml_libvirt ocaml_gettext curses csv xml-light ];
buildPhase = "make opt";

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
name = "deepin-gtk-theme-${version}";
version = "17.10.5";
version = "17.10.6";
src = fetchFromGitHub {
owner = "linuxdeepin";
repo = "deepin-gtk-theme";
rev = version;
sha256 = "0ff1yg4gz4p7nd0qg3dcbsiw8yqlvqccm55kxi998w8j1wrg6pq3";
sha256 = "01mfn3i234ynjvxl0yddsqqadwh6zmiibzrjm9xd1f78rj4xxkll";
};
propagatedUserEnvPkgs = [ gtk-engine-murrine ];

View file

@ -6,11 +6,11 @@
stdenv.mkDerivation rec {
name = "enlightenment-${version}";
version = "0.22.1";
version = "0.22.2";
src = fetchurl {
url = "http://download.enlightenment.org/rel/apps/enlightenment/${name}.tar.xz";
sha256 = "1q57fz57d0b26z06m1wiq7c1sniwh885b0vs02mk4jgwva46nyr0";
sha256 = "0b33w75s4w7xmz9cv8dyp8vy2gcffnrvjys20fhcpw26abw1wn2d";
};
nativeBuildInputs = [

View file

@ -0,0 +1,26 @@
{ stdenv, fetchFromGitHub }:
stdenv.mkDerivation rec {
name = "gnome-shell-extension-timepp-${version}";
version = "2018.03.17";
src = fetchFromGitHub {
owner = "zagortenay333";
repo = "timepp__gnome";
rev = "440cf85dc68d9e6ba876793f13910ee6239622cf";
sha256 = "0idsqsii5rvynvj78w2j7xiiz9rrl3384m5mj6bf6rg8vprpfi8v";
};
uuid = "timepp@zagortenay333";
installPhase = ''
mkdir -p $out/share/gnome-shell/extensions/${uuid}
cp -r . $out/share/gnome-shell/extensions/${uuid}
'';
meta = with stdenv.lib; {
description = " A todo.txt manager, time tracker, timer, stopwatch, pomodoro, and alarms gnome-shell extension.";
homepage = https://github.com/zagortenay333/timepp__gnome;
license = licenses.gpl3;
maintainers = with maintainers; [ svsdep ];
};
}

View file

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "mate-sensors-applet-${version}";
version = "1.20.0";
version = "1.20.1";
src = fetchurl {
url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz";
sha256 = "1yj8zr9w0a1h4bpd27w7ssg97vnrz7yr10jqhx67yyb900ccr3ik";
sha256 = "0lnr3jjq30zw1i2rv5n69dhsa3x39lc91xcgbj4vyj1rxj9ff05x";
};
nativeBuildInputs = [

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