Merge branch 'master' into staging
This commit is contained in:
commit
4250dd5de4
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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";
|
||||
|
|
19
lib/meta.nix
19
lib/meta.nix
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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; };
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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()}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>.
|
||||
'';
|
||||
};
|
||||
|
||||
|
|
|
@ -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 ];
|
||||
});
|
||||
}
|
|
@ -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}
|
||||
'';
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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)";
|
||||
})
|
||||
];
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ in
|
|||
./afterstep.nix
|
||||
./bspwm.nix
|
||||
./dwm.nix
|
||||
./evilwm.nix
|
||||
./exwm.nix
|
||||
./fluxbox.nix
|
||||
./fvwm.nix
|
||||
|
|
|
@ -489,7 +489,7 @@ in
|
|||
networking.interfaces = mkOption {
|
||||
default = {};
|
||||
example =
|
||||
{ eth0.ipv4 = [ {
|
||||
{ eth0.ipv4.addresses = [ {
|
||||
address = "131.211.84.78";
|
||||
prefixLength = 25;
|
||||
} ];
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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 {};
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -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');
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -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);
|
|
@ -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++)
|
|
@ -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";
|
||||
|
|
|
@ -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 $@ $<
|
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -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\"')))
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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
|
@ -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=''
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -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" }
|
||||
]
|
|
@ -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
|
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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="/<[\w\d\/.+=?~-]+>/" region0="Path"/>
|
||||
+ <regexp match="/(ftp|mirror|http|https|git):\/\/[\w\d\/:?=&.~-]+/" region0="URL"/>
|
||||
+ <regexp match="/[\w\d.+=?~-]*(\/[\w\d.+?~-]+)+/" region0="Path"/>
|
||||
+ <regexp match="/<[\w\d\/.+?~-]+>/" region0="Path"/>
|
||||
+ <regexp match="/(ftp|mirror|http|https|git):\/\/[\w\d\/:?=&.~+-]+/" region0="URL"/>
|
||||
+ <block start="/(")/" end="/(")/" scheme="String" region="String" region00="def:StringEdge" region01="def:PairStart" region10="def:StringEdge" region11="def:PairEnd"/>
|
||||
+ <block start="/('')/" end="/('')/" scheme="BlockString" region="String" region00="def:StringEdge" region01="def:PairStart" region10="def:StringEdge" region11="def:PairEnd"/>
|
||||
+
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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],
|
|
@ -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 ];
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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}";
|
||||
};
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
|
@ -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";
|
||||
};
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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;
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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.
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
}
|
||||
]
|
||||
|
|
|
@ -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";
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -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; };
|
||||
});
|
||||
|
|
|
@ -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 =
|
||||
{
|
||||
|
|
|
@ -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; [
|
||||
|
|
|
@ -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/;
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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 ];
|
||||
};
|
||||
}
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "ii-1.8";
|
||||
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://dl.suckless.org/tools/${name}.tar.gz";
|
||||
sha256 = "1lk8vjl7i8dcjh4jkg8h8bkapcbs465sy8g9c0chfqsywbmf3ndr";
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 = ''
|
||||
It’s 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 it’s used in.
|
||||
'';
|
||||
homepage = https://github.com/parnold-x/nasc;
|
||||
maintainers = with maintainers; [ samdroid-apps ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl3Plus;
|
||||
};
|
||||
}
|
|
@ -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 ];
|
||||
|
|
|
@ -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
|
||||
";
|
||||
}
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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 ];
|
||||
};
|
||||
|
|
|
@ -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
|
||||
'';
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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 ];
|
||||
};
|
||||
}
|
|
@ -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
Loading…
Reference in New Issue