Merge branch 'master' into parnell/fetchdocker

This commit is contained in:
Parnell Springmeyer 2018-01-24 13:23:01 -06:00 committed by GitHub
commit bd9869d0f2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1020 changed files with 63269 additions and 51400 deletions

10
.github/CODEOWNERS vendored
View File

@ -12,17 +12,17 @@
# Libraries
/lib @edolstra @nbp
/lib/systems @edolstra @nbp @ericson2314
/lib/systems @nbp @ericson2314
# Nixpkgs Internals
/default.nix @nbp
/pkgs/top-level/default.nix @nbp @Ericson2314
/pkgs/top-level/impure.nix @nbp @Ericson2314
/pkgs/top-level/stage.nix @nbp @Ericson2314
/pkgs/stdenv @edolstra
/pkgs/build-support/cc-wrapper @edolstra @Ericson2314
/pkgs/build-support/bintools-wrapper @edolstra @Ericson2314
/pkgs/build-support/setup-hooks @edolstra @Ericson2314
/pkgs/stdenv
/pkgs/build-support/cc-wrapper @Ericson2314 @orivej
/pkgs/build-support/bintools-wrapper @Ericson2314 @orivej
/pkgs/build-support/setup-hooks @Ericson2314
# NixOS Internals
/nixos/default.nix @nbp

View File

@ -61,7 +61,7 @@
<listitem>
<para>
The "target platform" attribute is, unlike the other two attributes, not actually fundamental to the process of building software.
Instead, it is only relevant for compatability with building certain specific compilers and build tools.
Instead, it is only relevant for compatibility with building certain specific compilers and build tools.
It can be safely ignored for all other packages.
</para>
<para>
@ -162,7 +162,7 @@
<para>
A runtime dependency between 2 packages implies that between them both the host and target platforms match.
This is directly implied by the meaning of "host platform" and "runtime dependency":
The package dependency exists while both packages are runnign on a single host platform.
The package dependency exists while both packages are running on a single host platform.
</para>
<para>
A build time dependency, however, implies a shift in platforms between the depending package and the depended-on package.

View File

@ -191,7 +191,6 @@ building Python libraries is `buildPythonPackage`. Let's see how we can build th
toolz = buildPythonPackage rec {
pname = "toolz";
version = "0.7.4";
name = "${pname}-${version}";
src = fetchPypi {
inherit pname version;
@ -237,7 +236,6 @@ with import <nixpkgs> {};
my_toolz = python35.pkgs.buildPythonPackage rec {
pname = "toolz";
version = "0.7.4";
name = "${pname}-${version}";
src = python35.pkgs.fetchPypi {
inherit pname version;
@ -283,15 +281,15 @@ order to build [`datashape`](https://github.com/blaze/datashape).
{ # ...
datashape = buildPythonPackage rec {
name = "datashape-${version}";
pname = "datashape";
version = "0.4.7";
src = pkgs.fetchurl {
url = "mirror://pypi/D/DataShape/${name}.tar.gz";
src = fetchPypi {
inherit pname version;
sha256 = "14b2ef766d4c9652ab813182e866f493475e65e558bed0822e38bf07bba1a278";
};
buildInputs = with self; [ pytest ];
checkInputs = with self; [ pytest ];
propagatedBuildInputs = with self; [ numpy multipledispatch dateutil ];
meta = {
@ -318,10 +316,11 @@ when building the bindings and are therefore added as `buildInputs`.
{ # ...
lxml = buildPythonPackage rec {
name = "lxml-3.4.4";
pname = "lxml";
version = "3.4.4";
src = pkgs.fetchurl {
url = "mirror://pypi/l/lxml/${name}.tar.gz";
src = fetchPypi {
inherit pname version;
sha256 = "16a0fa97hym9ysdk3rmqz32xdjqmy4w34ld3rm3jf5viqjx65lxk";
};
@ -351,11 +350,11 @@ and `CFLAGS`.
{ # ...
pyfftw = buildPythonPackage rec {
name = "pyfftw-${version}";
pname = "pyFFTW";
version = "0.9.2";
src = pkgs.fetchurl {
url = "mirror://pypi/p/pyFFTW/pyFFTW-${version}.tar.gz";
src = fetchPypi {
inherit pname version;
sha256 = "f6bbb6afa93085409ab24885a1a3cdb8909f095a142f4d49e346f2bd1b789074";
};
@ -440,11 +439,11 @@ We first create a function that builds `toolz` in `~/path/to/toolz/release.nix`
{ pkgs, buildPythonPackage }:
buildPythonPackage rec {
name = "toolz-${version}";
pname = "toolz";
version = "0.7.4";
src = pkgs.fetchurl {
url = "mirror://pypi/t/toolz/toolz-${version}.tar.gz";
src = fetchPypi {
inherit pname version;
sha256 = "43c2c9e5e7a16b6c88ba3088a9bfc82f7db8e13378be7c78d6c14a5f8ed05afd";
};
@ -549,25 +548,31 @@ The `buildPythonPackage` function is implemented in
The following is an example:
```nix
{ # ...
twisted = buildPythonPackage {
name = "twisted-8.1.0";
buildPythonPackage rec {
version = "3.3.1";
pname = "pytest";
src = pkgs.fetchurl {
url = http://tmrc.mit.edu/mirror/twisted/Twisted/8.1/Twisted-8.1.0.tar.bz2;
sha256 = "0q25zbr4xzknaghha72mq57kh53qw1bf8csgp63pm9sfi72qhirl";
};
preCheck = ''
# don't test bash builtins
rm testing/test_argcomplete.py
'';
propagatedBuildInputs = [ self.ZopeInterface ];
src = fetchPypi {
inherit pname version;
sha256 = "cf8436dc59d8695346fcd3ab296de46425ecab00d64096cebe79fb51ecb2eb93";
};
meta = {
homepage = http://twistedmatrix.com/;
description = "Twisted, an event-driven networking engine written in Python";
license = stdenv.lib.licenses.mit;
};
checkInputs = [ hypothesis ];
buildInputs = [ setuptools_scm ];
propagatedBuildInputs = [ attrs py setuptools six pluggy ];
meta = with stdenv.lib; {
maintainers = with maintainers; [ domenkozar lovek323 madjar lsix ];
description = "Framework for writing tests";
};
}
```
The `buildPythonPackage` mainly does four things:
@ -623,7 +628,6 @@ with import <nixpkgs> {};
packageOverrides = self: super: {
pandas = super.pandas.overridePythonAttrs(old: rec {
version = "0.19.1";
name = "pandas-${version}";
src = super.fetchPypi {
pname = "pandas";
inherit version;

View File

@ -36,7 +36,7 @@ rec {
overrideDerivation = drv: f:
let
newDrv = derivation (drv.drvAttrs // (f drv));
in addPassthru newDrv (
in lib.flip (extendDerivation true) newDrv (
{ meta = drv.meta or {};
passthru = if drv ? passthru then drv.passthru else {};
}
@ -131,8 +131,8 @@ rec {
/* Add attributes to each output of a derivation without changing
the derivation itself. */
addPassthru = drv: passthru:
the derivation itself and check a given condition when evaluating. */
extendDerivation = condition: passthru: drv:
let
outputs = drv.outputs or [ "out" ];
@ -142,13 +142,23 @@ rec {
outputToAttrListElement = outputName:
{ name = outputName;
value = commonAttrs // {
inherit (drv.${outputName}) outPath drvPath type outputName;
inherit (drv.${outputName}) type outputName;
drvPath = assert condition; drv.${outputName}.drvPath;
outPath = assert condition; drv.${outputName}.outPath;
};
};
outputsList = map outputToAttrListElement outputs;
in commonAttrs // { outputUnspecified = true; };
in commonAttrs // {
outputUnspecified = true;
drvPath = assert condition; drv.drvPath;
outPath = assert condition; drv.outPath;
};
/* Add attributes to each output of a derivation without changing
the derivation itself. */
addPassthru = lib.warn "`addPassthru` is deprecated, replace with `extendDerivation true`"
(extendDerivation true);
/* Strip a derivation of all non-essential attributes, returning
only those needed by hydra-eval-jobs. Also strictly evaluate the

View File

@ -87,13 +87,14 @@ let
inherit (stringsWithDeps) textClosureList textClosureMap
noDepEntry fullDepEntry packEntry stringAfter;
inherit (customisation) overrideDerivation makeOverridable
callPackageWith callPackagesWith addPassthru hydraJob makeScope;
callPackageWith callPackagesWith extendDerivation addPassthru
hydraJob makeScope;
inherit (meta) addMetaAttrs dontDistribute setName updateName
appendToName mapDerivationAttrset lowPrio lowPrioSet hiPrio
hiPrioSet;
inherit (sources) pathType pathIsDirectory cleanSourceFilter
cleanSource sourceByRegex sourceFilesBySuffices
commitIdFromGitRepo cleanSourceWith;
commitIdFromGitRepo cleanSourceWith pathHasContext canCleanSource;
inherit (modules) evalModules closeModules unifyModuleSyntax
applyIfFunction unpackSubmodule packSubmodule mergeModules
mergeModules' mergeOptionDecls evalOptionValue mergeDefinitions

View File

@ -60,6 +60,7 @@
arobyn = "Alexei Robyn <shados@shados.net>";
artuuge = "Artur E. Ruuge <artuuge@gmail.com>";
ashalkhakov = "Artyom Shalkhakov <artyom.shalkhakov@gmail.com>";
ashgillman = "Ashley Gillman <gillmanash@gmail.com>";
aske = "Kirill Boltaev <aske@fmap.me>";
asppsa = "Alastair Pharo <asppsa@gmail.com>";
astsmtl = "Alexander Tsamutali <astsmtl@yandex.ru>";
@ -117,6 +118,7 @@
chaoflow = "Florian Friesdorf <flo@chaoflow.net>";
chattered = "Phil Scott <me@philscotted.com>";
ChengCat = "Yucheng Zhang <yu@cheng.cat>";
chiiruno = "Okina Matara <okinan@protonmail.com>";
choochootrain = "Hurshal Patel <hurshal@imap.cc>";
chpatrick = "Patrick Chilton <chpatrick@gmail.com>";
chreekat = "Bryan Richter <b@chreekat.net>";
@ -298,6 +300,7 @@
ivan-tkatchev = "Ivan Tkatchev <tkatchev@gmail.com>";
ixmatus = "Parnell Springmeyer <parnell@digitalmentat.com>";
izorkin = "Yurii Izorkin <Izorkin@gmail.com>";
ixxie = "Matan Bendix Shenhav <matan@fluxcraft.net>";
j-keck = "Jürgen Keck <jhyphenkeck@gmail.com>";
jagajaga = "Arseniy Seroka <ars.seroka@gmail.com>";
jammerful = "jammerful <jammerful@gmail.com>";
@ -383,12 +386,14 @@
lovek323 = "Jason O'Conal <jason@oconal.id.au>";
lowfatcomputing = "Andreas Wagner <andreas.wagner@lowfatcomputing.org>";
lsix = "Lancelot SIX <lsix@lancelotsix.com>";
lschuermann = "Leon Schuermann <leon.git@is.currently.online>";
ltavard = "Laure Tavard <laure.tavard@univ-grenoble-alpes.fr>";
lucas8 = "Luc Chabassier <luc.linux@mailoo.org>";
ludo = "Ludovic Courtès <ludo@gnu.org>";
lufia = "Kyohei Kadota <lufia@lufia.org>";
luispedro = "Luis Pedro Coelho <luis@luispedro.org>";
lukego = "Luke Gorrie <luke@snabb.co>";
luz = "Luz <luz666@daum.net>";
lw = "Sergey Sofeychuk <lw@fmap.me>";
lyt = "Tim Liou <wheatdoge@gmail.com>";
m3tti = "Mathaeus Sander <mathaeus.peter.sander@gmail.com>";
@ -440,6 +445,7 @@
mjanczyk = "Marcin Janczyk <m@dragonvr.pl>";
mjp = "Mike Playle <mike@mythik.co.uk>"; # github = "MikePlayle";
mlieberman85 = "Michael Lieberman <mlieberman85@gmail.com>";
mmahut = "Marek Mahut <marek.mahut@gmail.com>";
moaxcp = "John Mercier <moaxcp@gmail.com>";
modulistic = "Pablo Costa <modulistic@gmail.com>";
mog = "Matthew O'Gorman <mog-lists@rldn.net>";
@ -480,6 +486,7 @@
nico202 = "Nicolò Balzarotti <anothersms@gmail.com>";
NikolaMandic = "Ratko Mladic <nikola@mandic.email>";
nixy = "Andrew R. M. <nixy@nixy.moe>";
nmattia = "Nicolas Mattia <nicolas@nmattia.com>";
nocoolnametom = "Tom Doggett <nocoolnametom@gmail.com>";
notthemessiah = "Brian Cohen <brian.cohen.88@gmail.com>";
np = "Nicolas Pouillard <np.nix@nicolaspouillard.fr>";
@ -505,6 +512,7 @@
pakhfn = "Fedor Pakhomov <pakhfn@gmail.com>";
panaeon = "Vitalii Voloshyn <vitalii.voloshyn@gmail.com";
paperdigits = "Mica Semrick <mica@silentumbrella.com>";
paraseba = "Sebastian Galkin <paraseba@gmail.com>";
pashev = "Igor Pashev <pashev.igor@gmail.com>";
patternspandemic = "Brad Christensen <patternspandemic@live.com>";
pawelpacana = "Paweł Pacana <pawel.pacana@gmail.com>";
@ -593,6 +601,7 @@
rzetterberg = "Richard Zetterberg <richard.zetterberg@gmail.com>";
s1lvester = "Markus Silvester <s1lvester@bockhacker.me>";
samdroid-apps = "Sam Parkinson <sam@sam.today>";
samueldr = "Samuel Dionne-Riel <samuel@dionne-riel.com>";
samuelrivas = "Samuel Rivas <samuelrivas@gmail.com>";
sander = "Sander van der Burg <s.vanderburg@tudelft.nl>";
sargon = "Daniel Ehlers <danielehlers@mindeye.net>";
@ -603,6 +612,7 @@
scolobb = "Sergiu Ivanov <sivanov@colimite.fr>";
sdll = "Sasha Illarionov <sasha.delly@gmail.com>";
SeanZicari = "Sean Zicari <sean.zicari@gmail.com>";
sellout = "Greg Pfeil <greg@technomadic.org>";
sepi = "Raffael Mancini <raffael@mancini.lu>";
seppeljordan = "Sebastian Jordan <sebastian.jordan.mail@googlemail.com>";
shanemikel = "Shane Pearlman <shanemikel1@gmail.com>";
@ -638,6 +648,7 @@
sternenseemann = "Lukas Epple <post@lukasepple.de>";
stesie = "Stefan Siegl <stesie@brokenpipe.de>";
steveej = "Stefan Junker <mail@stefanjunker.de>";
StillerHarpo = "Florian Engel <florianengel39@gmail.com>";
stumoss = "Stuart Moss <samoss@gmail.com>";
SuprDewd = "Bjarki Ágúst Guðmundsson <suprdewd@gmail.com>";
swarren83 = "Shawn Warren <shawn.w.warren@gmail.com>";
@ -729,9 +740,11 @@
wyvie = "Elijah Rum <elijahrum@gmail.com>";
xaverdh = "Dominik Xaver Hörl <hoe.dom@gmx.de>";
xnwdd = "Guillermo NWDD <nwdd+nixos@no.team>";
xurei = "Olivier Bourdoux <olivier.bourdoux@gmail.com>";
xvapx = "Marti Serra <marti.serra.coscollano@gmail.com>";
xwvvvvwx = "David Terry <davidterry@posteo.de>";
xzfc = "Albert Safin <xzfcpw@gmail.com>";
y0no = "Yoann Ono <y0no@y0no.fr>";
yarr = "Dmitry V. <savraz@gmail.com>";
yegortimoshenko = "Yegor Timoshenko <yegortimoshenko@gmail.com>";
ylwghst = "Burim Augustin Berisa <ylwghst@onionmail.info>";

View File

@ -93,4 +93,8 @@ rec {
else lib.head matchRef
else throw ("Not a .git directory: " + path);
in lib.flip readCommitFromFile "HEAD";
pathHasContext = builtins.hasContext or (lib.hasPrefix builtins.storeDir);
canCleanSource = src: src ? _isLibCleanSourceWith || !(pathHasContext (toString src));
}

View File

@ -4,11 +4,13 @@
# Usage $0 debian-patches.txt debian-patches.nix
# An example input and output files can be found in applications/graphics/xara/
DEB_URL=http://patch-tracker.debian.org/patch/series/dl
DEB_URL=https://sources.debian.org/data/main
declare -a deb_patches
mapfile -t deb_patches < $1
prefix="${DEB_URL}/${deb_patches[0]}"
# First letter
deb_prefix="${deb_patches[0]:0:1}"
prefix="${DEB_URL}/${deb_prefix}/${deb_patches[0]}/debian/patches"
if [[ -n "$2" ]]; then
exec 1> $2

View File

@ -21,7 +21,7 @@ find . -type f | while read src; do
# Sanitize file name
filename=$(basename "$src" | tr '@' '_')
nameVersion="${filename%.tar.*}"
name=$(echo "$nameVersion" | sed -e 's,-[[:digit:]].*,,' | sed -e 's,-opensource-src$,,')
name=$(echo "$nameVersion" | sed -e 's,-[[:digit:]].*,,' | sed -e 's,-opensource-src$,,' | sed -e 's,-everywhere-src$,,')
version=$(echo "$nameVersion" | sed -e 's,^\([[:alpha:]][[:alnum:]]*-\)\+,,')
echo "$name,$version,$src,$filename" >>$csv
done

View File

@ -1,9 +1,16 @@
#!/usr/bin/env bash
set -e
# --print: avoid dependency on environment
optPrint=
if [ "$1" == "--print" ]; then
optPrint=true
shift
fi
if [ "$#" != 1 ] && [ "$#" != 2 ]; then
cat <<-EOF
Usage: $0 commit-spec [commit-spec]
Usage: $0 [--print] commit-spec [commit-spec]
You need to be in a git-controlled nixpkgs tree.
The current state of the tree will be used if the second commit is missing.
EOF
@ -113,3 +120,8 @@ newPkgs "${tree[1]}" "${tree[2]}" '--argstr system "x86_64-linux"' > "$newlist"
sed -n 's/\([^. ]*\.\)*\([^. ]*\) .*$/\2/p' < "$newlist" \
| sort | uniq -c
if [ -n "$optPrint" ]; then
echo
cat "$newlist"
fi

View File

@ -4,18 +4,18 @@
version="5.0"
xml:id="sec-instaling-virtualbox-guest">
<title>Installing in a Virtualbox guest</title>
<title>Installing in a VirtualBox guest</title>
<para>
Installing NixOS into a Virtualbox guest is convenient for users who want to
Installing NixOS into a VirtualBox guest is convenient for users who want to
try NixOS without installing it on bare metal. If you want to use a pre-made
Virtualbox appliance, it is available at <link
VirtualBox appliance, it is available at <link
xlink:href="https://nixos.org/nixos/download.html">the downloads page</link>.
If you want to set up a Virtualbox guest manually, follow these instructions:
If you want to set up a VirtualBox guest manually, follow these instructions:
</para>
<orderedlist>
<listitem><para>Add a New Machine in Virtualbox with OS Type "Linux / Other
<listitem><para>Add a New Machine in VirtualBox with OS Type "Linux / Other
Linux"</para></listitem>
<listitem><para>Base Memory Size: 768 MB or higher.</para></listitem>

View File

@ -45,7 +45,10 @@ for a UEFI installation is by and large the same as a BIOS installation. The dif
using <command>ifconfig</command>.</para>
<para>To manually configure the network on the graphical installer,
first disable network-manager with
<command>systemctl stop network-manager</command>.</para></listitem>
<command>systemctl stop network-manager</command>.</para>
<para>To manually configure the wifi on the minimal installer, run
<command>wpa_supplicant -B -i interface -c &lt;(wpa_passphrase 'SSID' 'key')</command>.</para></listitem>
<listitem><para>If you would like to continue the installation from a different
machine you need to activate the SSH daemon via <literal>systemctl start sshd</literal>.

View File

@ -113,7 +113,7 @@ following incompatible changes:</para>
</listitem>
<listitem>
<para>
<literal>cc-wrapper</literal>has been split in two; there is now also a <literal>bintools-wrapper</literal>.
<literal>cc-wrapper</literal> has been split in two; there is now also a <literal>bintools-wrapper</literal>.
The most commonly used files in <filename>nix-support</filename> are now split between the two wrappers.
Some commonly used ones, like <filename>nix-support/dynamic-linker</filename>, are duplicated for backwards compatability, even though they rightly belong only in <literal>bintools-wrapper</literal>.
Other more obscure ones are just moved.
@ -131,6 +131,11 @@ following incompatible changes:</para>
Other types dependencies should be unaffected.
</para>
</listitem>
<listitem>
<para>
<literal>lib.addPassthru</literal> is removed. Use <literal>lib.extendDerivation true</literal> instead. <emphasis role="strong">TODO: actually remove it before branching 18.03 off.</emphasis>
</para>
</listitem>
<listitem>
<para>
The <literal>memcached</literal> service no longer accept dynamic socket
@ -139,6 +144,11 @@ following incompatible changes:</para>
will be accessible at <literal>/run/memcached/memcached.sock</literal>.
</para>
</listitem>
<listitem>
<para>
The <varname>hardware.amdHybridGraphics.disable</varname> option was removed for lack of a maintainer. If you still need this module, you may wish to include a copy of it from an older version of nixos in your imports.
</para>
</listitem>
</itemizedlist>
</section>

View File

@ -13,10 +13,16 @@
# grafted in the file system at path `target'.
, contents ? []
, # Whether the disk should be partitioned (with a single partition
# containing the root filesystem) or contain the root filesystem
# directly.
partitioned ? true
, # Type of partition table to use; either "legacy", "efi", or "none".
# For "efi" images, the GPT partition table is used and a mandatory ESP
# partition of reasonable size is created in addition to the root partition.
# If `installBootLoader` is true, GRUB will be installed in EFI mode.
# For "legacy", the msdos partition table is used and a single large root
# partition is created. If `installBootLoader` is true, GRUB will be
# installed in legacy mode.
# For "none", no partition table is created. Enabling `installBootLoader`
# most likely fails as GRUB will probably refuse to install.
partitionTableType ? "legacy"
# Whether to invoke switch-to-configuration boot during image creation
, installBootLoader ? true
@ -37,6 +43,10 @@
format ? "raw"
}:
assert partitionTableType == "legacy" || partitionTableType == "efi" || partitionTableType == "none";
# We use -E offset=X below, which is only supported by e2fsprogs
assert partitionTableType != "none" -> fsType == "ext4";
with lib;
let format' = format; in let
@ -51,6 +61,27 @@ let format' = format; in let
raw = "img";
}.${format};
rootPartition = { # switch-case
legacy = "1";
efi = "2";
}.${partitionTableType};
partitionDiskScript = { # switch-case
legacy = ''
parted --script $diskImage -- \
mklabel msdos \
mkpart primary ext4 1MiB -1
'';
efi = ''
parted --script $diskImage -- \
mklabel gpt \
mkpart ESP fat32 8MiB 256MiB \
set 1 boot on \
mkpart primary ext4 256MiB -1
'';
none = "";
}.${partitionTableType};
nixpkgs = cleanSource pkgs.path;
channelSources = pkgs.runCommand "nixos-${config.system.nixosVersion}" {} ''
@ -79,20 +110,31 @@ let format' = format; in let
targets = map (x: x.target) contents;
prepareImage = ''
export PATH=${makeSearchPathOutput "bin" "bin" prepareImageInputs}
export PATH=${makeBinPath prepareImageInputs}
# Yes, mkfs.ext4 takes different units in different contexts. Fun.
sectorsToKilobytes() {
echo $(( ( "$1" * 512 ) / 1024 ))
}
sectorsToBytes() {
echo $(( "$1" * 512 ))
}
mkdir $out
diskImage=nixos.raw
truncate -s ${toString diskSize}M $diskImage
${if partitioned then ''
parted --script $diskImage -- mklabel msdos mkpart primary ext4 1M -1s
offset=$((2048*512))
'' else ''
offset=0
''}
${partitionDiskScript}
mkfs.${fsType} -F -L nixos -E offset=$offset $diskImage
${if partitionTableType != "none" then ''
# Get start & length of the root partition in sectors to $START and $SECTORS.
eval $(partx $diskImage -o START,SECTORS --nr ${rootPartition} --pairs)
mkfs.${fsType} -F -L nixos $diskImage -E offset=$(sectorsToBytes $START) $(sectorsToKilobytes $SECTORS)K
'' else ''
mkfs.${fsType} -F -L nixos $diskImage
''}
root="$PWD/root"
mkdir -p $root
@ -133,12 +175,12 @@ let format' = format; in let
find $root/nix/store -mindepth 1 -maxdepth 1 -type f -o -type d | xargs chmod -R a-w
echo "copying staging root to image..."
cptofs ${optionalString partitioned "-P 1"} -t ${fsType} -i $diskImage $root/* /
cptofs -p ${optionalString (partitionTableType != "none") "-P ${rootPartition}"} -t ${fsType} -i $diskImage $root/* /
'';
in pkgs.vmTools.runInLinuxVM (
pkgs.runCommand name
{ preVM = prepareImage;
buildInputs = with pkgs; [ utillinux e2fsprogs ];
buildInputs = with pkgs; [ utillinux e2fsprogs dosfstools ];
exportReferencesGraph = [ "closure" metaClosure ];
postVM = ''
${if format == "raw" then ''
@ -152,11 +194,7 @@ in pkgs.vmTools.runInLinuxVM (
memSize = 1024;
}
''
${if partitioned then ''
rootDisk=/dev/vda1
'' else ''
rootDisk=/dev/vda
''}
rootDisk=${if partitionTableType != "none" then "/dev/vda${rootPartition}" else "/dev/vda"}
# Some tools assume these exist
ln -s vda /dev/xvda
@ -166,6 +204,14 @@ in pkgs.vmTools.runInLinuxVM (
mkdir $mountPoint
mount $rootDisk $mountPoint
# Create the ESP and mount it. Unlike e2fsprogs, mkfs.vfat doesn't support an
# '-E offset=X' option, so we can't do this outside the VM.
${optionalString (partitionTableType == "efi") ''
mkdir -p /mnt/boot
mkfs.vfat -n ESP /dev/vda1
mount /dev/vda1 /mnt/boot
''}
# Install a configuration.nix
mkdir -p /mnt/etc/nixos
${optionalString (configFile != null) ''

View File

@ -46,7 +46,7 @@ in {
inherit lib config;
inherit (cfg) contents format name;
pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
partitioned = config.ec2.hvm;
partitionTableType = if config.ec2.hvm then "legacy" else "none";
diskSize = cfg.sizeMB;
configFile = pkgs.writeText "configuration.nix"
''

View File

@ -36,7 +36,7 @@ in
default = {};
description = ''
A set of environment variables used in the global environment.
These variables will be set on shell initialisation.
These variables will be set on shell initialisation (e.g. in /etc/profile).
The value of each variable can be either a string or a list of
strings. The latter is concatenated, interspersed with colon
characters.

View File

@ -27,6 +27,7 @@ in
boot.loader.grub.enable = false;
boot.loader.generic-extlinux-compatible.enable = true;
boot.consoleLogLevel = lib.mkDefault 7;
boot.kernelPackages = pkgs.linuxPackages_latest;
# The serial ports listed here are:
@ -42,8 +43,17 @@ in
populateBootCommands = let
configTxt = pkgs.writeText "config.txt" ''
kernel=u-boot-rpi3.bin
# Boot in 64-bit mode.
arm_control=0x200
# U-Boot used to need this to work, regardless of whether UART is actually used or not.
# TODO: check when/if this can be removed.
enable_uart=1
# Prevent the firmware from smashing the framebuffer setup done by the mainline kernel
# when attempting to show low-voltage or overtemperature warnings.
avoid_warnings=1
'';
in ''
(cd ${pkgs.raspberrypifw}/share/raspberrypi/boot && cp bootcode.bin fixup*.dat start*.elf $NIX_BUILD_TOP/boot/)

View File

@ -27,6 +27,7 @@ in
boot.loader.grub.enable = false;
boot.loader.generic-extlinux-compatible.enable = true;
boot.consoleLogLevel = lib.mkDefault 7;
boot.kernelPackages = pkgs.linuxPackages_latest;
# The serial ports listed here are:
# - ttyS0: for Tegra (Jetson TK1)

View File

@ -27,6 +27,7 @@ in
boot.loader.grub.enable = false;
boot.loader.generic-extlinux-compatible.enable = true;
boot.consoleLogLevel = lib.mkDefault 7;
boot.kernelPackages = pkgs.linuxPackages_rpi;
# FIXME: this probably should be in installation-device.nix

View File

@ -301,6 +301,7 @@
pykms = 282;
kodi = 283;
restya-board = 284;
mighttpd2 = 285;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
@ -570,6 +571,7 @@
pykms = 282;
kodi = 283;
restya-board = 284;
mighttpd2 = 285;
# When adding a gid, make sure it doesn't match an existing
# uid. Users and groups with the same name should have equal

View File

@ -200,6 +200,7 @@
./services/desktops/dleyna-server.nix
./services/desktops/geoclue2.nix
./services/desktops/gnome3/at-spi2-core.nix
./services/desktops/gnome3/chrome-gnome-shell.nix
./services/desktops/gnome3/evolution-data-server.nix
./services/desktops/gnome3/gnome-disks.nix
./services/desktops/gnome3/gnome-documents.nix
@ -225,7 +226,6 @@
./services/games/terraria.nix
./services/hardware/acpid.nix
./services/hardware/actkbd.nix
./services/hardware/amd-hybrid-graphics.nix
./services/hardware/bluetooth.nix
./services/hardware/brltty.nix
./services/hardware/freefall.nix
@ -540,6 +540,7 @@
./services/networking/ssh/lshd.nix
./services/networking/ssh/sshd.nix
./services/networking/strongswan.nix
./services/networking/stunnel.nix
./services/networking/supplicant.nix
./services/networking/supybot.nix
./services/networking/syncthing.nix
@ -634,6 +635,7 @@
./services/web-servers/lighttpd/default.nix
./services/web-servers/lighttpd/gitweb.nix
./services/web-servers/lighttpd/inginious.nix
./services/web-servers/mighttpd2.nix
./services/web-servers/minio.nix
./services/web-servers/nginx/default.nix
./services/web-servers/phpfpm/default.nix

View File

@ -48,6 +48,15 @@ in
Name of the theme to be used by oh-my-zsh.
'';
};
cacheDir = mkOption {
default = "$HOME/.cache/oh-my-zsh";
type = types.str;
description = ''
Cache directory to be used by `oh-my-zsh`.
Without this option it would default to the read-only nix store.
'';
};
};
};
@ -74,6 +83,13 @@ in
"ZSH_THEME=\"${cfg.theme}\""
}
${optionalString (cfg.cacheDir != null) ''
if [[ ! -d "${cfg.cacheDir}" ]]; then
mkdir -p "${cfg.cacheDir}"
fi
ZSH_CACHE_DIR=${cfg.cacheDir}
''}
source $ZSH/oh-my-zsh.sh
'';
};

View File

@ -36,8 +36,9 @@ in
shellAliases = mkOption {
default = config.environment.shellAliases;
description = ''
Set of aliases for zsh shell. See <option>environment.shellAliases</option>
for an option format description.
Set of aliases for zsh shell. Overrides the default value taken from
<option>environment.shellAliases</option>.
See <option>environment.shellAliases</option> for an option format description.
'';
type = types.attrs; # types.attrsOf types.stringOrPath;
};

View File

@ -139,6 +139,14 @@ in
'';
};
tosHash = mkOption {
type = types.string;
default = "cc88d8d9517f490191401e7b54e9ffd12a2b9082ec7a1d4cec6101f9f1647e7b";
description = ''
SHA256 of the Terms of Services document. This changes once in a while.
'';
};
production = mkOption {
type = types.bool;
default = true;
@ -188,7 +196,7 @@ in
domain = if data.domain != null then data.domain else cert;
cpath = "${cfg.directory}/${cert}";
rights = if data.allowKeysForGroup then "750" else "700";
cmdline = [ "-v" "-d" domain "--default_root" data.webroot "--valid_min" cfg.validMin ]
cmdline = [ "-v" "-d" domain "--default_root" data.webroot "--valid_min" cfg.validMin "--tos_sha256" cfg.tosHash ]
++ optionals (data.email != null) [ "--email" data.email ]
++ concatMap (p: [ "-f" p ]) data.plugins
++ concatLists (mapAttrsToList (name: root: [ "-d" (if root == null then name else "${name}:${root}")]) data.extraDomains)

View File

@ -8,6 +8,22 @@ let
inherit (pkgs) sudo;
toUserString = user: if (isInt user) then "#${toString user}" else "${user}";
toGroupString = group: if (isInt group) then "%#${toString group}" else "%${group}";
toCommandOptionsString = options:
"${concatStringsSep ":" options}${optionalString (length options != 0) ":"} ";
toCommandsString = commands:
concatStringsSep ", " (
map (command:
if (isString command) then
command
else
"${toCommandOptionsString command.options}${command.command}"
) commands
);
in
{
@ -47,6 +63,97 @@ in
'';
};
security.sudo.extraRules = mkOption {
description = ''
Define specific rules to be in the <filename>sudoers</filename> file.
'';
default = [];
example = [
# Allow execution of any command by all users in group sudo,
# requiring a password.
{ groups = [ "sudo" ]; commands = [ "ALL" ]; }
# Allow execution of "/home/root/secret.sh" by user `backup`, `database`
# and the group with GID `1006` without a password.
{ users = [ "backup" ]; groups = [ 1006 ];
commands = [ { command = "/home/root/secret.sh"; options = [ "SETENV" "NOPASSWD" ]; } ]; }
# Allow all users of group `bar` to run two executables as user `foo`
# with arguments being pre-set.
{ groups = [ "bar" ]; runAs = "foo";
commands =
[ "/home/baz/cmd1.sh hello-sudo"
{ command = ''/home/baz/cmd2.sh ""''; options = [ "SETENV" ]; } ]; }
];
type = with types; listOf (submodule {
options = {
users = mkOption {
type = with types; listOf (either string int);
description = ''
The usernames / UIDs this rule should apply for.
'';
default = [];
};
groups = mkOption {
type = with types; listOf (either string int);
description = ''
The groups / GIDs this rule should apply for.
'';
default = [];
};
host = mkOption {
type = types.string;
default = "ALL";
description = ''
For what host this rule should apply.
'';
};
runAs = mkOption {
type = with types; string;
default = "ALL:ALL";
description = ''
Under which user/group the specified command is allowed to run.
A user can be specified using just the username: <code>"foo"</code>.
It is also possible to specify a user/group combination using <code>"foo:bar"</code>
or to only allow running as a specific group with <code>":bar"</code>.
'';
};
commands = mkOption {
description = ''
The commands for which the rule should apply.
'';
type = with types; listOf (either string (submodule {
options = {
command = mkOption {
type = with types; string;
description = ''
A command being either just a path to a binary to allow any arguments,
the full command with arguments pre-set or with <code>""</code> used as the argument,
not allowing arguments to the command at all.
'';
};
options = mkOption {
type = with types; listOf (enum [ "NOPASSWD" "PASSWD" "NOEXEC" "EXEC" "SETENV" "NOSETENV" "LOG_INPUT" "NOLOG_INPUT" "LOG_OUTPUT" "NOLOG_OUTPUT" ]);
description = ''
Options for running the command. Refer to the <a href="https://www.sudo.ws/man/1.7.10/sudoers.man.html">sudo manual</a>.
'';
default = [];
};
};
}));
};
};
});
};
security.sudo.extraConfig = mkOption {
type = types.lines;
default = "";
@ -61,10 +168,16 @@ in
config = mkIf cfg.enable {
security.sudo.extraRules = [
{ groups = [ "wheel" ];
commands = [ { command = "ALL"; options = (if cfg.wheelNeedsPassword then [ "SETENV" ] else [ "NOPASSWD" "SETENV" ]); } ];
}
];
security.sudo.configFile =
''
# Don't edit this file. Set the NixOS options security.sudo.configFile
# or security.sudo.extraConfig instead.
# or security.sudo.extraRules instead.
# Keep SSH_AUTH_SOCK so that pam_ssh_agent_auth.so can do its magic.
Defaults env_keep+=SSH_AUTH_SOCK
@ -72,8 +185,18 @@ in
# "root" is allowed to do anything.
root ALL=(ALL:ALL) SETENV: ALL
# Users in the "wheel" group can do anything.
%wheel ALL=(ALL:ALL) ${if cfg.wheelNeedsPassword then "" else "NOPASSWD: ALL, "}SETENV: ALL
# extraRules
${concatStringsSep "\n" (
lists.flatten (
map (
rule: if (length rule.commands != 0) then [
(map (user: "${toUserString user} ${rule.host}=(${rule.runAs}) ${toCommandsString rule.commands}") rule.users)
(map (group: "${toGroupString group} ${rule.host}=(${rule.runAs}) ${toCommandsString rule.commands}") rule.groups)
] else []
) cfg.extraRules
)
)}
${cfg.extraConfig}
'';

View File

@ -0,0 +1,27 @@
# Chrome GNOME Shell native host connector.
{ config, lib, pkgs, ... }:
with lib;
{
###### interface
options = {
services.gnome3.chrome-gnome-shell.enable = mkEnableOption ''
Chrome GNOME Shell native host connector, a DBus service
allowing to install GNOME Shell extensions from a web browser.
'';
};
###### implementation
config = mkIf config.services.gnome3.chrome-gnome-shell.enable {
environment.etc = {
"chromium/native-messaging-hosts/org.gnome.chrome_gnome_shell.json".source = "${pkgs.chrome-gnome-shell}/etc/chromium/native-messaging-hosts/org.gnome.chrome_gnome_shell.json";
"opt/chrome/native-messaging-hosts/org.gnome.chrome_gnome_shell.json".source = "${pkgs.chrome-gnome-shell}/etc/opt/chrome/native-messaging-hosts/org.gnome.chrome_gnome_shell.json";
};
environment.systemPackages = [ pkgs.chrome-gnome-shell ];
services.dbus.packages = [ pkgs.chrome-gnome-shell ];
};
}

View File

@ -0,0 +1,13 @@
# Copied from systemd 203.
ACTION=="remove", GOTO="net_name_slot_end"
SUBSYSTEM!="net", GOTO="net_name_slot_end"
NAME!="", GOTO="net_name_slot_end"
IMPORT{cmdline}="net.ifnames"
ENV{net.ifnames}=="0", GOTO="net_name_slot_end"
NAME=="", ENV{ID_NET_NAME_ONBOARD}!="", NAME="$env{ID_NET_NAME_ONBOARD}"
NAME=="", ENV{ID_NET_NAME_SLOT}!="", NAME="$env{ID_NET_NAME_SLOT}"
NAME=="", ENV{ID_NET_NAME_PATH}!="", NAME="$env{ID_NET_NAME_PATH}"
LABEL="net_name_slot_end"

View File

@ -1,46 +0,0 @@
{ config, pkgs, lib, ... }:
{
###### interface
options = {
hardware.amdHybridGraphics.disable = lib.mkOption {
default = false;
type = lib.types.bool;
description = ''
Completely disable the AMD graphics card and use the
integrated graphics processor instead.
'';
};
};
###### implementation
config = lib.mkIf config.hardware.amdHybridGraphics.disable {
systemd.services."amd-hybrid-graphics" = {
path = [ pkgs.bash ];
description = "Disable AMD Card";
after = [ "sys-kernel-debug.mount" ];
before = [ "systemd-vconsole-setup.service" "display-manager.service" ];
requires = [ "sys-kernel-debug.mount" "vgaswitcheroo.path" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = "${pkgs.bash}/bin/sh -c 'echo -e \"IGD\\nOFF\" > /sys/kernel/debug/vgaswitcheroo/switch'";
ExecStop = "${pkgs.bash}/bin/sh -c 'echo ON >/sys/kernel/debug/vgaswitcheroo/switch'";
};
};
systemd.paths."vgaswitcheroo" = {
pathConfig = {
PathExists = "/sys/kernel/debug/vgaswitcheroo/switch";
Unit = "amd-hybrid-graphics.service";
};
wantedBy = ["multi-user.target"];
};
};
}

View File

@ -119,7 +119,7 @@ let
fi
${optionalString config.networking.usePredictableInterfaceNames ''
cp ${udev}/lib/udev/rules.d/80-net-setup-link.rules $out/80-net-setup-link.rules
cp ${./80-net-setup-link.rules} $out/80-net-setup-link.rules
''}
# If auto-configuration is disabled, then remove

View File

@ -5,18 +5,25 @@ with lib;
let
cfg = config.services.netdata;
configFile = pkgs.writeText "netdata.conf" cfg.configText;
wrappedPlugins = pkgs.runCommand "wrapped-plugins" {} ''
mkdir -p $out/libexec/netdata/plugins.d
ln -s /run/wrappers/bin/apps.plugin $out/libexec/netdata/plugins.d/apps.plugin
'';
localConfig = {
global = {
"plugins directory" = "${wrappedPlugins}/libexec/netdata/plugins.d ${pkgs.netdata}/libexec/netdata/plugins.d";
};
};
mkConfig = generators.toINI {} (recursiveUpdate localConfig cfg.config);
configFile = pkgs.writeText "netdata.conf" (if cfg.configText != null then cfg.configText else mkConfig);
defaultUser = "netdata";
in {
options = {
services.netdata = {
enable = mkOption {
default = false;
type = types.bool;
description = "Whether to enable netdata monitoring.";
};
enable = mkEnableOption "netdata";
user = mkOption {
type = types.str;
@ -31,9 +38,9 @@ in {
};
configText = mkOption {
type = types.lines;
default = "";
description = "netdata.conf configuration.";
type = types.nullOr types.lines;
description = "Verbatim netdata.conf, cannot be combined with config.";
default = null;
example = ''
[global]
debug log = syslog
@ -42,11 +49,29 @@ in {
'';
};
config = mkOption {
type = types.attrsOf types.attrs;
default = {};
description = "netdata.conf configuration as nix attributes. cannot be combined with configText.";
example = literalExample ''
global = {
"debug log" = "syslog";
"access log" = "syslog";
"error log" = "syslog";
};
'';
};
};
};
};
config = mkIf cfg.enable {
assertions =
[ { assertion = cfg.config != {} -> cfg.configText == null ;
message = "Cannot specify both config and configText";
}
];
systemd.services.netdata = {
path = with pkgs; [ gawk curl ];
description = "Real time performance monitoring";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
@ -66,6 +91,15 @@ in {
};
};
security.wrappers."apps.plugin" = {
source = "${pkgs.netdata}/libexec/netdata/plugins.d/apps.plugin";
capabilities = "cap_dac_read_search,cap_sys_ptrace+ep";
owner = cfg.user;
group = cfg.group;
permissions = "u+rx,g+rx,o-rwx";
};
users.extraUsers = optional (cfg.user == defaultUser) {
name = defaultUser;
};

View File

@ -145,6 +145,16 @@ in {
};
users.groups.dnscrypt-wrapper = { };
security.polkit.extraConfig = ''
// Allow dnscrypt-wrapper user to restart dnscrypt-wrapper.service
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.systemd1.manage-units" &&
action.lookup("unit") == "dnscrypt-wrapper.service" &&
subject.user == "dnscrypt-wrapper") {
return polkit.Result.YES;
}
});
'';
systemd.services.dnscrypt-wrapper = {
description = "dnscrypt-wrapper daemon";

View File

@ -12,6 +12,10 @@ let
keyfile ${cfg.ssl.keyfile}
'';
passwordConf = optionalString cfg.checkPasswords ''
password_file ${cfg.dataDir}/passwd
'';
mosquittoConf = pkgs.writeText "mosquitto.conf" ''
pid_file /run/mosquitto/pid
acl_file ${aclFile}
@ -19,6 +23,7 @@ let
allow_anonymous ${boolToString cfg.allowAnonymous}
bind_address ${cfg.host}
port ${toString cfg.port}
${passwordConf}
${listenerConf}
${cfg.extraConf}
'';
@ -153,6 +158,15 @@ in
'';
};
checkPasswords = mkOption {
default = false;
example = true;
type = types.bool;
description = ''
Refuse connection when clients provide incorrect passwords.
'';
};
extraConf = mkOption {
default = "";
type = types.lines;

View File

@ -50,6 +50,11 @@ let
"up ${pkgs.writeScript "openvpn-${name}-up" upScript}"}
${optionalString (cfg.down != "" || cfg.updateResolvConf)
"down ${pkgs.writeScript "openvpn-${name}-down" downScript}"}
${optionalString (cfg.authUserPass != null)
"auth-user-pass ${pkgs.writeText "openvpn-credentials-${name}" ''
${cfg.authUserPass.username}
${cfg.authUserPass.password}
''}"}
'';
in {
@ -161,6 +166,29 @@ in
'';
};
authUserPass = mkOption {
default = null;
description = ''
This option can be used to store the username / password credentials
with the "auth-user-pass" authentication method.
WARNING: Using this option will put the credentials WORLD-READABLE in the Nix store!
'';
type = types.nullOr (types.submodule {
options = {
username = mkOption {
description = "The username to store inside the credentials file.";
type = types.string;
};
password = mkOption {
description = "The password to store inside the credentials file.";
type = types.string;
};
};
});
};
};
});

View File

@ -17,7 +17,7 @@ let
search_lan = entry.searchLAN;
use_sync_trash = entry.useSyncTrash;
known_hosts = knownHosts;
known_hosts = entry.knownHosts;
}) cfg.sharedFolders;
configFile = pkgs.writeText "config.json" (builtins.toJSON ({

View File

@ -21,7 +21,7 @@ let
daemon reads in addition to the the user's authorized_keys file.
You can combine the <literal>keys</literal> and
<literal>keyFiles</literal> options.
Warning: If you are using <literal>NixOps</literal> then don't use this
Warning: If you are using <literal>NixOps</literal> then don't use this
option since it will replace the key required for deployment via ssh.
'';
};
@ -137,6 +137,14 @@ in
'';
};
openFirewall = mkOption {
type = types.bool;
default = true;
description = ''
Whether to automatically open the specified ports in the firewall.
'';
};
listenAddresses = mkOption {
type = with types; listOf (submodule {
options = {
@ -302,7 +310,7 @@ in
};
networking.firewall.allowedTCPPorts = cfg.ports;
networking.firewall.allowedTCPPorts = if cfg.openFirewall then cfg.ports else [];
security.pam.services.sshd =
{ startSession = true;

View File

@ -0,0 +1,221 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.stunnel;
yesNo = val: if val then "yes" else "no";
verifyChainPathAssert = n: c: {
assertion = c.verifyHostname == null || (c.verifyChain || c.verifyPeer);
message = "stunnel: \"${n}\" client configuration - hostname verification " +
"is not possible without either verifyChain or verifyPeer enabled";
};
serverConfig = {
options = {
accept = mkOption {
type = types.int;
description = "On which port stunnel should listen for incoming TLS connections.";
};
connect = mkOption {
type = types.int;
description = "To which port the decrypted connection should be forwarded.";
};
cert = mkOption {
type = types.path;
description = "File containing both the private and public keys.";
};
};
};
clientConfig = {
options = {
accept = mkOption {
type = types.string;
description = "IP:Port on which connections should be accepted.";
};
connect = mkOption {
type = types.string;
description = "IP:Port destination to connect to.";
};
verifyChain = mkOption {
type = types.bool;
default = true;
description = "Check if the provided certificate has a valid certificate chain (against CAPath).";
};
verifyPeer = mkOption {
type = types.bool;
default = false;
description = "Check if the provided certificate is contained in CAPath.";
};
CAPath = mkOption {
type = types.path;
default = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
description = "Path to a file containing certificates to validate against.";
};
verifyHostname = mkOption {
type = with types; nullOr string;
default = null;
description = "If set, stunnel checks if the provided certificate is valid for the given hostname.";
};
};
};
in
{
###### interface
options = {
services.stunnel = {
enable = mkOption {
type = types.bool;
default = false;
description = "Whether to enable the stunnel TLS tunneling service.";
};
user = mkOption {
type = with types; nullOr string;
default = "nobody";
description = "The user under which stunnel runs.";
};
group = mkOption {
type = with types; nullOr string;
default = "nogroup";
description = "The group under which stunnel runs.";
};
logLevel = mkOption {
type = types.enum [ "emerg" "alert" "crit" "err" "warning" "notice" "info" "debug" ];
default = "info";
description = "Verbosity of stunnel output.";
};
fipsMode = mkOption {
type = types.bool;
default = false;
description = "Enable FIPS 140-2 mode required for compliance.";
};
enableInsecureSSLv3 = mkOption {
type = types.bool;
default = false;
description = "Enable support for the insecure SSLv3 protocol.";
};
servers = mkOption {
description = "Define the server configuations.";
type = with types; attrsOf (submodule serverConfig);
example = {
fancyWebserver = {
enable = true;
accept = 443;
connect = 8080;
cert = "/path/to/pem/file";
};
};
default = { };
};
clients = mkOption {
description = "Define the client configurations.";
type = with types; attrsOf (submodule clientConfig);
example = {
foobar = {
accept = "0.0.0.0:8080";
connect = "nixos.org:443";
verifyChain = false;
};
};
default = { };
};
};
};
###### implementation
config = mkIf cfg.enable {
assertions = concatLists [
(singleton {
assertion = (length (attrValues cfg.servers) != 0) || ((length (attrValues cfg.clients)) != 0);
message = "stunnel: At least one server- or client-configuration has to be present.";
})
(mapAttrsToList verifyChainPathAssert cfg.clients)
];
environment.systemPackages = [ pkgs.stunnel ];
environment.etc."stunnel.cfg".text = ''
${ if cfg.user != null then "setuid = ${cfg.user}" else "" }
${ if cfg.group != null then "setgid = ${cfg.group}" else "" }
debug = ${cfg.logLevel}
${ optionalString cfg.fipsMode "fips = yes" }
${ optionalString cfg.enableInsecureSSLv3 "options = -NO_SSLv3" }
; ----- SERVER CONFIGURATIONS -----
${ lib.concatStringsSep "\n"
(lib.mapAttrsToList
(n: v: ''
[${n}]
accept = ${toString v.accept}
connect = ${toString v.connect}
cert = ${v.cert}
'')
cfg.servers)
}
; ----- CLIENT CONFIGURATIONS -----
${ lib.concatStringsSep "\n"
(lib.mapAttrsToList
(n: v: ''
[${n}]
client = yes
accept = ${v.accept}
connect = ${v.connect}
verifyChain = ${yesNo v.verifyChain}
verifyPeer = ${yesNo v.verifyPeer}
${optionalString (v.CAPath != null) "CApath = ${v.CAPath}"}
${optionalString (v.verifyHostname != null) "checkHost = ${v.verifyHostname}"}
OCSPaia = yes
'')
cfg.clients)
}
'';
systemd.services.stunnel = {
description = "stunnel TLS tunneling service";
after = [ "network.target" ];
wants = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
restartTriggers = [ config.environment.etc."stunnel.cfg".source ];
serviceConfig = {
ExecStart = "${pkgs.stunnel}/bin/stunnel ${config.environment.etc."stunnel.cfg".source}";
Type = "forking";
};
};
};
}

View File

@ -6,6 +6,7 @@ let
cfg = config.services.elasticsearch;
es5 = builtins.compareVersions (builtins.parseDrvName cfg.package.name).version "5" >= 0;
es6 = builtins.compareVersions (builtins.parseDrvName cfg.package.name).version "6" >= 0;
esConfig = ''
network.host: ${cfg.listenAddress}
@ -92,8 +93,6 @@ in {
node.name: "elasticsearch"
node.master: true
node.data: false
index.number_of_shards: 5
index.number_of_replicas: 1
'';
};
@ -165,7 +164,10 @@ in {
path = [ pkgs.inetutils ];
environment = {
ES_HOME = cfg.dataDir;
ES_JAVA_OPTS = toString ([ "-Des.path.conf=${configDir}" ] ++ cfg.extraJavaOptions);
ES_JAVA_OPTS = toString ( optional (!es6) [ "-Des.path.conf=${configDir}" ]
++ cfg.extraJavaOptions);
} // optionalAttrs es6 {
ES_PATH_CONF = configDir;
};
serviceConfig = {
ExecStart = "${cfg.package}/bin/elasticsearch ${toString cfg.extraCmdLineOptions}";

View File

@ -0,0 +1,132 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.mighttpd2;
configFile = pkgs.writeText "mighty-config" cfg.config;
routingFile = pkgs.writeText "mighty-routing" cfg.routing;
in {
options.services.mighttpd2 = {
enable = mkEnableOption "Mighttpd2 web server";
config = mkOption {
default = "";
example = ''
# Example configuration for Mighttpd 2
Port: 80
# IP address or "*"
Host: *
Debug_Mode: Yes # Yes or No
# If available, "nobody" is much more secure for User:.
User: root
# If available, "nobody" is much more secure for Group:.
Group: root
Pid_File: /var/run/mighty.pid
Logging: Yes # Yes or No
Log_File: /var/log/mighty # The directory must be writable by User:
Log_File_Size: 16777216 # bytes
Log_Backup_Number: 10
Index_File: index.html
Index_Cgi: index.cgi
Status_File_Dir: /usr/local/share/mighty/status
Connection_Timeout: 30 # seconds
Fd_Cache_Duration: 10 # seconds
# Server_Name: Mighttpd/3.x.y
Tls_Port: 443
Tls_Cert_File: cert.pem # should change this with an absolute path
# should change this with comma-separated absolute paths
Tls_Chain_Files: chain.pem
# Currently, Tls_Key_File must not be encrypted.
Tls_Key_File: privkey.pem # should change this with an absolute path
Service: 0 # 0 is HTTP only, 1 is HTTPS only, 2 is both
'';
type = types.lines;
description = ''
Verbatim config file to use
(see http://www.mew.org/~kazu/proj/mighttpd/en/config.html)
'';
};
routing = mkOption {
default = "";
example = ''
# Example routing for Mighttpd 2
# Domain lists
[localhost www.example.com]
# Entries are looked up in the specified order
# All paths must end with "/"
# A path to CGI scripts should be specified with "=>"
/~alice/cgi-bin/ => /home/alice/public_html/cgi-bin/
# A path to static files should be specified with "->"
/~alice/ -> /home/alice/public_html/
/cgi-bin/ => /export/cgi-bin/
# Reverse proxy rules should be specified with ">>"
# /path >> host:port/path2
# Either "host" or ":port" can be committed, but not both.
/app/cal/ >> example.net/calendar/
# Yesod app in the same server
/app/wiki/ >> 127.0.0.1:3000/
/ -> /export/www/
'';
type = types.lines;
description = ''
Verbatim routing file to use
(see http://www.mew.org/~kazu/proj/mighttpd/en/config.html)
'';
};
cores = mkOption {
default = null;
type = types.nullOr types.int;
description = ''
How many cores to use.
If null it will be determined automatically
'';
};
};
config = mkIf cfg.enable {
assertions =
[ { assertion = cfg.routing != "";
message = "You need at least one rule in mighttpd2.routing";
}
];
systemd.services.mighttpd2 = {
description = "Mighttpd2 web server";
after = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = ''
${pkgs.haskellPackages.mighttpd2}/bin/mighty \
${configFile} \
${routingFile} \
+RTS -N${optionalString (cfg.cores != null) "${cfg.cores}"}
'';
Type = "simple";
User = "mighttpd2";
Group = "mighttpd2";
Restart = "on-failure";
AmbientCapabilities = "cap_net_bind_service";
CapabilityBoundingSet = "cap_net_bind_service";
};
};
users.extraUsers.mighttpd2 = {
group = "mighttpd2";
uid = config.ids.uids.mighttpd2;
isSystemUser = true;
};
users.extraGroups.mighttpd2.gid = config.ids.gids.mighttpd2;
};
meta.maintainers = with lib.maintainers; [ fgaz ];
}

View File

@ -3,9 +3,7 @@
with lib;
let
xcfg = config.services.xserver;
pcfg = config.hardware.pulseaudio;
cfg = xcfg.desktopManager.xfce;
cfg = config.services.xserver.desktopManager.xfce;
in
{
@ -52,82 +50,93 @@ in
description = "Application used by XFCE to lock the screen.";
};
};
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs.xfce // pkgs; [
# Get GTK+ themes and gtk-update-icon-cache
gtk2.out
config = mkIf (xcfg.enable && cfg.enable) {
# Supplies some abstract icons such as:
# utilities-terminal, accessories-text-editor
gnome3.defaultIconTheme
services.xserver.desktopManager.session = singleton
{ name = "xfce";
bgSupport = true;
start =
''
${cfg.extraSessionCommands}
hicolor_icon_theme
tango-icon-theme
xfce4-icon-theme
# Set GTK_PATH so that GTK+ can find the theme engines.
export GTK_PATH="${config.system.path}/lib/gtk-2.0:${config.system.path}/lib/gtk-3.0"
desktop_file_utils
shared_mime_info
# Set GTK_DATA_PREFIX so that GTK+ can find the Xfce themes.
export GTK_DATA_PREFIX=${config.system.path}
# Needed by Xfce's xinitrc script
# TODO: replace with command -v
which
${pkgs.stdenv.shell} ${pkgs.xfce.xinitrc} &
waitPID=$!
'';
};
exo
garcon
gtk-xfce-engine
gvfs
libxfce4ui
tumbler
xfconf
mousepad
ristretto
xfce4-appfinder
xfce4-screenshooter
xfce4-session
xfce4-settings
xfce4-terminal
(thunar.override { thunarPlugins = cfg.thunarPlugins; })
thunar-volman # TODO: drop
] ++ (if config.hardware.pulseaudio.enable
then [ xfce4-mixer-pulse xfce4-volumed-pulse ]
else [ xfce4-mixer xfce4-volumed ])
# TODO: NetworkManager doesn't belong here
++ optionals config.networking.networkmanager.enable [ networkmanagerapplet ]
++ optionals config.powerManagement.enable [ xfce4-power-manager ]
++ optionals cfg.enableXfwm [ xfwm4 ]
++ optionals (!cfg.noDesktop) [
xfce4-panel
xfce4-notifyd
xfdesktop
];
environment.pathsToLink = [
"/share/xfce4"
"/share/themes"
"/share/mime"
"/share/desktop-directories"
"/share/gtksourceview-2.0"
];
environment.variables = {
GDK_PIXBUF_MODULE_FILE = "${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache";
GIO_EXTRA_MODULES = [ "${pkgs.xfce.gvfs}/lib/gio/modules" ];
};
services.xserver.desktopManager.session = [{
name = "xfce";
bgSupport = true;
start = ''
${cfg.extraSessionCommands}
# Set GTK_PATH so that GTK+ can find the theme engines.
export GTK_PATH="${config.system.path}/lib/gtk-2.0:${config.system.path}/lib/gtk-3.0"
# Set GTK_DATA_PREFIX so that GTK+ can find the Xfce themes.
export GTK_DATA_PREFIX=${config.system.path}
${pkgs.stdenv.shell} ${pkgs.xfce.xinitrc} &
waitPID=$!
'';
}];
services.xserver.updateDbusEnvironment = true;
environment.systemPackages =
[ pkgs.gtk2.out # To get GTK+'s themes and gtk-update-icon-cache
pkgs.hicolor_icon_theme
pkgs.tango-icon-theme
pkgs.shared_mime_info
pkgs.which # Needed by the xfce's xinitrc script.
pkgs."${cfg.screenLock}"
pkgs.xfce.exo
pkgs.xfce.gtk_xfce_engine
pkgs.xfce.mousepad
pkgs.xfce.ristretto
pkgs.xfce.terminal
(pkgs.xfce.thunar.override { thunarPlugins = cfg.thunarPlugins; })
pkgs.xfce.xfce4icontheme
pkgs.xfce.xfce4session
pkgs.xfce.xfce4settings
(if pcfg.enable then pkgs.xfce.xfce4mixer_pulse else pkgs.xfce.xfce4mixer)
(if pcfg.enable then pkgs.xfce.xfce4volumed_pulse else pkgs.xfce.xfce4volumed)
pkgs.xfce.xfce4-screenshooter
pkgs.xfce.xfconf
# This supplies some "abstract" icons such as
# "utilities-terminal" and "accessories-text-editor".
pkgs.gnome3.defaultIconTheme
pkgs.desktop_file_utils
pkgs.xfce.libxfce4ui
pkgs.xfce.garcon
pkgs.xfce.thunar_volman
pkgs.xfce.gvfs
pkgs.xfce.xfce4_appfinder
pkgs.xfce.tumbler # found via dbus
]
++ optional cfg.enableXfwm pkgs.xfce.xfwm4
++ optional config.powerManagement.enable pkgs.xfce.xfce4_power_manager
++ optional config.networking.networkmanager.enable pkgs.networkmanagerapplet
++ optionals (!cfg.noDesktop)
[ pkgs.xfce.xfce4panel
pkgs.xfce.xfdesktop
pkgs.xfce.xfce4notifyd # found via dbus
];
environment.pathsToLink =
[ "/share/xfce4" "/share/themes" "/share/mime" "/share/desktop-directories" "/share/gtksourceview-2.0" ];
environment.variables.GIO_EXTRA_MODULES = [ "${pkgs.xfce.gvfs}/lib/gio/modules" ];
environment.variables.GDK_PIXBUF_MODULE_FILE = "${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache";
# Enable helpful DBus services.
services.udisks2.enable = true;
services.upower.enable = config.powerManagement.enable;
};
}

View File

@ -548,7 +548,7 @@ in
knownVideoDrivers;
in optional (driver != null) ({ inherit name; modules = []; driverName = name; } // driver));
nixpkgs.config.xorg = optionalAttrs (elem "vboxvideo" cfg.videoDrivers) { abiCompat = "1.18"; };
nixpkgs.config = optionalAttrs (elem "vboxvideo" cfg.videoDrivers) { xorg.abiCompat = "1.18"; };
assertions = [
{ assertion = config.security.polkit.enable;

View File

@ -40,6 +40,10 @@ in
kernel documentation</link>. Otherwise, if
<option>networking.useDHCP</option> is enabled, an IP address
is acquired using DHCP.
You should add the module(s) required for your network card to
boot.initrd.availableKernelModules. lspci -v -s &lt;ethernet controller&gt;
will tell you which.
'';
};

View File

@ -208,10 +208,11 @@ in
"usbhid"
"hid_generic" "hid_lenovo" "hid_apple" "hid_roccat" "hid_logitech_hidpp"
# Misc. keyboard stuff.
] ++ optionals (pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64) [
# Misc. x86 keyboard stuff.
"pcips2" "atkbd" "i8042"
# Needed by the stage 2 init script.
# x86 RTC needed by the stage 2 init script.
"rtc_cmos"
];

View File

@ -212,7 +212,7 @@ in
echo "Obtaining SSH keys..."
mkdir -m 0700 -p /root/.ssh
AUTH_KEYS=$(${mktemp})
${wget} -O $AUTH_KEYS http://metadata.google.internal/computeMetadata/v1/project/attributes/sshKeys
${wget} -O $AUTH_KEYS --header="Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/attributes/sshKeys
if [ -s $AUTH_KEYS ]; then
# Read in key one by one, split in case Google decided

View File

@ -128,6 +128,7 @@ in {
dmidecode
dnsmasq
ebtables
cfg.qemuPackage # libvirtd requires qemu-img to manage disk images
]
++ optional vswitch.enable vswitch.package;

View File

@ -25,7 +25,7 @@ in {
name = "nixos-ova-${config.system.nixosLabel}-${pkgs.stdenv.system}";
inherit pkgs lib config;
partitioned = true;
partitionTableType = "legacy";
diskSize = cfg.baseImageSize;
postVM =

View File

@ -57,7 +57,7 @@ in rec {
nixos.ova.x86_64-linux
#(all nixos.tests.containers)
nixos.tests.chromium
nixos.tests.chromium.x86_64-linux
(all nixos.tests.firefox)
(all nixos.tests.firewall)
(all nixos.tests.gnome3)
@ -80,7 +80,7 @@ in rec {
(all nixos.tests.boot.uefiUsb)
(all nixos.tests.boot-stage1)
(all nixos.tests.hibernate)
nixos.tests.docker
nixos.tests.docker.x86_64-linux
(all nixos.tests.ecryptfs)
(all nixos.tests.env)
(all nixos.tests.ipv6)

View File

@ -3,6 +3,7 @@
, supportedSystems ? [ "x86_64-linux" "aarch64-linux" ]
}:
with import ../pkgs/top-level/release-lib.nix { inherit supportedSystems; };
with import ../lib;
let
@ -11,15 +12,15 @@ let
versionSuffix =
(if stableBranch then "." else "pre") + "${toString nixpkgs.revCount}.${nixpkgs.shortRev}";
forAllSystems = genAttrs supportedSystems;
importTest = fn: args: system: import fn ({
inherit system;
} // args);
callTest = fn: args: forAllSystems (system: hydraJob (importTest fn args system));
callTestOnTheseSystems = systems: fn: args: forTheseSystems systems (system: hydraJob (importTest fn args system));
callTest = callTestOnTheseSystems supportedSystems;
callSubTests = fn: args: let
callSubTests = callSubTestsOnTheseSystems supportedSystems;
callSubTestsOnTheseSystems = systems: fn: args: let
discover = attrs: let
subTests = filterAttrs (const (hasAttr "test")) attrs;
in mapAttrs (const (t: hydraJob t.test)) subTests;
@ -28,10 +29,7 @@ let
${system} = test;
}) (discover (importTest fn args system));
# If the test is only for a particular system, use only the specified
# system instead of generating attributes for all available systems.
in if args ? system then discover (import fn args)
else foldAttrs mergeAttrs {} (map discoverForSystem supportedSystems);
in foldAttrs mergeAttrs {} (map discoverForSystem (intersectLists systems supportedSystems));
pkgs = import nixpkgs { system = "x86_64-linux"; };
@ -91,13 +89,13 @@ let
makeNetboot = config:
let
config_evaled = import lib/eval-config.nix config;
build = config_evaled.config.system.build;
kernelTarget = config_evaled.pkgs.stdenv.platform.kernelTarget;
configEvaled = import lib/eval-config.nix config;
build = configEvaled.config.system.build;
kernelTarget = configEvaled.pkgs.stdenv.platform.kernelTarget;
in
pkgs.symlinkJoin {
name="netboot";
paths=[
name = "netboot";
paths = [
build.netbootRamdisk
build.kernel
build.netbootIpxeScript
@ -108,6 +106,7 @@ let
echo "file initrd $out/initrd" >> $out/nix-support/hydra-build-products
echo "file ipxe $out/netboot.ipxe" >> $out/nix-support/hydra-build-products
'';
preferLocalBuild = true;
};
@ -124,22 +123,13 @@ 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 = {
x86_64-linux = makeNetboot {
system = "x86_64-linux";
modules = [
./modules/installer/netboot/netboot-minimal.nix
versionModule
];
};
} // (optionalAttrs (elem "aarch64-linux" supportedSystems) {
aarch64-linux = makeNetboot {
system = "aarch64-linux";
modules = [
./modules/installer/netboot/netboot-minimal.nix
versionModule
];
};});
netboot = forTheseSystems [ "x86_64-linux" "aarch64-linux" ] (system: makeNetboot {
inherit system;
modules = [
./modules/installer/netboot/netboot-minimal.nix
versionModule
];
});
iso_minimal = forAllSystems (system: makeIso {
module = ./modules/installer/cd-dvd/installation-cd-minimal.nix;
@ -147,7 +137,7 @@ in rec {
inherit system;
});
iso_graphical = genAttrs [ "x86_64-linux" ] (system: makeIso {
iso_graphical = forTheseSystems [ "x86_64-linux" ] (system: makeIso {
module = ./modules/installer/cd-dvd/installation-cd-graphical-kde.nix;
type = "graphical";
inherit system;
@ -155,7 +145,7 @@ in rec {
# A variant with a more recent (but possibly less stable) kernel
# that might support more hardware.
iso_minimal_new_kernel = genAttrs [ "x86_64-linux" ] (system: makeIso {
iso_minimal_new_kernel = forTheseSystems [ "x86_64-linux" ] (system: makeIso {
module = ./modules/installer/cd-dvd/installation-cd-minimal-new-kernel.nix;
type = "minimal-new-kernel";
inherit system;
@ -163,7 +153,7 @@ in rec {
# A bootable VirtualBox virtual appliance as an OVA file (i.e. packaged OVF).
ova = genAttrs [ "x86_64-linux" ] (system:
ova = forTheseSystems [ "x86_64-linux" ] (system:
with import nixpkgs { inherit system; };
@ -237,8 +227,8 @@ in rec {
tests.blivet = callTest tests/blivet.nix {};
tests.boot = callSubTests tests/boot.nix {};
tests.boot-stage1 = callTest tests/boot-stage1.nix {};
tests.cadvisor = hydraJob (import tests/cadvisor.nix { system = "x86_64-linux"; });
tests.chromium = (callSubTests tests/chromium.nix { system = "x86_64-linux"; }).stable;
tests.cadvisor = callTestOnTheseSystems ["x86_64-linux"] tests/cadvisor.nix {};
tests.chromium = (callSubTestsOnTheseSystems ["x86_64-linux"] tests/chromium.nix {}).stable;
tests.cjdns = callTest tests/cjdns.nix {};
tests.cloud-init = callTest tests/cloud-init.nix {};
tests.containers-ipv4 = callTest tests/containers-ipv4.nix {};
@ -252,20 +242,20 @@ 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 = hydraJob (import tests/docker.nix { system = "x86_64-linux"; });
tests.docker-edge = hydraJob (import tests/docker-edge.nix { system = "x86_64-linux"; });
tests.docker = callTestOnTheseSystems ["x86_64-linux"] tests/docker.nix {};
tests.docker-edge = callTestOnTheseSystems ["x86_64-linux"] tests/docker-edge.nix {};
tests.dovecot = callTest tests/dovecot.nix {};
tests.dnscrypt-proxy = callTest tests/dnscrypt-proxy.nix { system = "x86_64-linux"; };
tests.dnscrypt-proxy = callTestOnTheseSystems ["x86_64-linux"] tests/dnscrypt-proxy.nix {};
tests.ecryptfs = callTest tests/ecryptfs.nix {};
tests.etcd = hydraJob (import tests/etcd.nix { system = "x86_64-linux"; });
tests.ec2-nixops = hydraJob (import tests/ec2.nix { system = "x86_64-linux"; }).boot-ec2-nixops;
tests.ec2-config = hydraJob (import tests/ec2.nix { system = "x86_64-linux"; }).boot-ec2-config;
tests.elk = hydraJob (import tests/elk.nix { system = "x86_64-linux"; });
tests.etcd = callTestOnTheseSystems ["x86_64-linux"] tests/etcd.nix {};
tests.ec2-nixops = (callSubTestsOnTheseSystems ["x86_64-linux"] tests/ec2.nix {}).boot-ec2-nixops;
tests.ec2-config = (callSubTestsOnTheseSystems ["x86_64-linux"] tests/ec2.nix {}).boot-ec2-config;
tests.elk = callSubTestsOnTheseSystems ["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 = hydraJob (import tests/fleet.nix { system = "x86_64-linux"; });
tests.fleet = callTestOnTheseSystems ["x86_64-linux"] tests/fleet.nix {};
#tests.gitlab = callTest tests/gitlab.nix {};
tests.gitolite = callTest tests/gitolite.nix {};
tests.gocd-agent = callTest tests/gocd-agent.nix {};
@ -313,6 +303,7 @@ in rec {
tests.nat.firewall = callTest tests/nat.nix { withFirewall = true; };
tests.nat.firewall-conntrack = callTest tests/nat.nix { withFirewall = true; withConntrackHelpers = true; };
tests.nat.standalone = callTest tests/nat.nix { withFirewall = false; };
tests.netdata = callTest tests/netdata.nix { };
tests.networking.networkd = callSubTests tests/networking.nix { networkd = true; };
tests.networking.scripted = callSubTests tests/networking.nix { networkd = false; };
# TODO: put in networking.nix after the test becomes more complete
@ -326,7 +317,7 @@ in rec {
tests.openssh = callTest tests/openssh.nix {};
tests.owncloud = callTest tests/owncloud.nix {};
tests.pam-oath-login = callTest tests/pam-oath-login.nix {};
#tests.panamax = hydraJob (import tests/panamax.nix { system = "x86_64-linux"; });
#tests.panamax = callTestOnTheseSystems ["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 {};
@ -348,12 +339,13 @@ in rec {
tests.smokeping = callTest tests/smokeping.nix {};
tests.snapper = callTest tests/snapper.nix {};
tests.statsd = callTest tests/statsd.nix {};
tests.sudo = callTest tests/sudo.nix {};
tests.switchTest = callTest tests/switch-test.nix {};
tests.taskserver = callTest tests/taskserver.nix {};
tests.tomcat = callTest tests/tomcat.nix {};
tests.udisks2 = callTest tests/udisks2.nix {};
tests.vault = callTest tests/vault.nix {};
tests.virtualbox = callSubTests tests/virtualbox.nix { system = "x86_64-linux"; };
tests.virtualbox = callSubTestsOnTheseSystems ["x86_64-linux"] tests/virtualbox.nix {};
tests.wordpress = callTest tests/wordpress.nix {};
tests.xfce = callTest tests/xfce.nix {};
tests.xmonad = callTest tests/xmonad.nix {};

View File

@ -1,95 +1,107 @@
# Test the ELK stack: Elasticsearch, Logstash and Kibana.
import ./make-test.nix ({ pkgs, ...} :
{ system ? builtins.currentSystem }:
with import ../lib/testing.nix { inherit system; };
with pkgs.lib;
let
esUrl = "http://localhost:9200";
in {
name = "ELK";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ eelco chaoflow offline basvandijk ];
};
nodes = {
one =
{ config, pkgs, ... }: {
# Not giving the machine at least 2060MB results in elasticsearch failing with the following error:
#
# OpenJDK 64-Bit Server VM warning:
# INFO: os::commit_memory(0x0000000085330000, 2060255232, 0)
# failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2060255232 bytes for committing reserved memory.
#
# When setting this to 2500 I got "Kernel panic - not syncing: Out of
# memory: compulsory panic_on_oom is enabled" so lets give it even a
# bit more room:
virtualisation.memorySize = 3000;
mkElkTest = name : elk : makeTest {
inherit name;
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ eelco chaoflow offline basvandijk ];
};
nodes = {
one =
{ config, pkgs, ... }: {
# Not giving the machine at least 2060MB results in elasticsearch failing with the following error:
#
# OpenJDK 64-Bit Server VM warning:
# INFO: os::commit_memory(0x0000000085330000, 2060255232, 0)
# failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2060255232 bytes for committing reserved memory.
#
# When setting this to 2500 I got "Kernel panic - not syncing: Out of
# memory: compulsory panic_on_oom is enabled" so lets give it even a
# bit more room:
virtualisation.memorySize = 3000;
# For querying JSON objects returned from elasticsearch and kibana.
environment.systemPackages = [ pkgs.jq ];
# For querying JSON objects returned from elasticsearch and kibana.
environment.systemPackages = [ pkgs.jq ];
services = {
logstash = {
enable = true;
package = pkgs.logstash5;
inputConfig = ''
exec { command => "echo -n flowers" interval => 1 type => "test" }
exec { command => "echo -n dragons" interval => 1 type => "test" }
'';
filterConfig = ''
if [message] =~ /dragons/ {
drop {}
}
'';
outputConfig = ''
file {
path => "/tmp/logstash.out"
codec => line { format => "%{message}" }
}
elasticsearch {
hosts => [ "${esUrl}" ]
}
'';
};
services = {
logstash = {
enable = true;
package = elk.logstash;
inputConfig = ''
exec { command => "echo -n flowers" interval => 1 type => "test" }
exec { command => "echo -n dragons" interval => 1 type => "test" }
'';
filterConfig = ''
if [message] =~ /dragons/ {
drop {}
}
'';
outputConfig = ''
file {
path => "/tmp/logstash.out"
codec => line { format => "%{message}" }
}
elasticsearch {
hosts => [ "${esUrl}" ]
}
'';
};
elasticsearch = {
enable = true;
package = pkgs.elasticsearch5;
};
elasticsearch = {
enable = true;
package = elk.elasticsearch;
};
kibana = {
enable = true;
package = pkgs.kibana5;
elasticsearch.url = esUrl;
kibana = {
enable = true;
package = elk.kibana;
elasticsearch.url = esUrl;
};
};
};
};
};
};
testScript = ''
startAll;
testScript = ''
startAll;
$one->waitForUnit("elasticsearch.service");
$one->waitForUnit("elasticsearch.service");
# Continue as long as the status is not "red". The status is probably
# "yellow" instead of "green" because we are using a single elasticsearch
# node which elasticsearch considers risky.
#
# TODO: extend this test with multiple elasticsearch nodes and see if the status turns "green".
$one->waitUntilSucceeds("curl --silent --show-error '${esUrl}/_cluster/health' | jq .status | grep -v red");
# Continue as long as the status is not "red". The status is probably
# "yellow" instead of "green" because we are using a single elasticsearch
# node which elasticsearch considers risky.
#
# TODO: extend this test with multiple elasticsearch nodes and see if the status turns "green".
$one->waitUntilSucceeds("curl --silent --show-error '${esUrl}/_cluster/health' | jq .status | grep -v red");
# Perform some simple logstash tests.
$one->waitForUnit("logstash.service");
$one->waitUntilSucceeds("cat /tmp/logstash.out | grep flowers");
$one->waitUntilSucceeds("cat /tmp/logstash.out | grep -v dragons");
# Perform some simple logstash tests.
$one->waitForUnit("logstash.service");
$one->waitUntilSucceeds("cat /tmp/logstash.out | grep flowers");
$one->waitUntilSucceeds("cat /tmp/logstash.out | grep -v dragons");
# See if kibana is healthy.
$one->waitForUnit("kibana.service");
$one->waitUntilSucceeds("curl --silent --show-error 'http://localhost:5601/api/status' | jq .status.overall.state | grep green");
# See if kibana is healthy.
$one->waitForUnit("kibana.service");
$one->waitUntilSucceeds("curl --silent --show-error 'http://localhost:5601/api/status' | jq .status.overall.state | grep green");
# See if logstash messages arive in elasticsearch.
$one->waitUntilSucceeds("curl --silent --show-error '${esUrl}/_search' -H 'Content-Type: application/json' -d '{\"query\" : { \"match\" : { \"message\" : \"flowers\"}}}' | jq .hits.total | grep -v 0");
$one->waitUntilSucceeds("curl --silent --show-error '${esUrl}/_search' -H 'Content-Type: application/json' -d '{\"query\" : { \"match\" : { \"message\" : \"dragons\"}}}' | jq .hits.total | grep 0");
'';
})
# See if logstash messages arive in elasticsearch.
$one->waitUntilSucceeds("curl --silent --show-error '${esUrl}/_search' -H 'Content-Type: application/json' -d '{\"query\" : { \"match\" : { \"message\" : \"flowers\"}}}' | jq .hits.total | grep -v 0");
$one->waitUntilSucceeds("curl --silent --show-error '${esUrl}/_search' -H 'Content-Type: application/json' -d '{\"query\" : { \"match\" : { \"message\" : \"dragons\"}}}' | jq .hits.total | grep 0");
'';
};
in mapAttrs mkElkTest {
"ELK-5" = {
elasticsearch = pkgs.elasticsearch5;
logstash = pkgs.logstash5;
kibana = pkgs.kibana5;
};
"ELK-6" = {
elasticsearch = pkgs.elasticsearch6;
logstash = pkgs.logstash6;
kibana = pkgs.kibana6;
};
}

View File

@ -46,6 +46,7 @@ let
in makeTest {
name = "keymap-${layout}";
machine.services.xserver.desktopManager.xterm.enable = false;
machine.i18n.consoleKeyMap = mkOverride 900 layout;
machine.services.xserver.layout = mkOverride 900 layout;
machine.imports = [ ./common/x11.nix extraConfig ];

View File

@ -115,11 +115,6 @@ import ./make-test.nix ({ pkgs, ...} : {
$machine->succeed("nix-store -qR /run/current-system | grep nixos-");
};
# Test sudo
subtest "sudo", sub {
$machine->succeed("su - sybil -c 'sudo true'");
};
# Test sysctl
subtest "sysctl", sub {
$machine->waitForUnit("systemd-sysctl.service");

31
nixos/tests/netdata.nix Normal file
View File

@ -0,0 +1,31 @@
# This test runs netdata and checks for data via apps.plugin
import ./make-test.nix ({ pkgs, ...} : {
name = "netdata";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ cransom ];
};
nodes = {
netdata =
{ config, pkgs, ... }:
{
environment.systemPackages = with pkgs; [ curl jq ];
services.netdata.enable = true;
};
};
testScript = ''
startAll;
$netdata->waitForUnit("netdata.service");
# check if netdata can read disk ops for root owned processes.
# if > 0, successful. verifies both netdata working and
# apps.plugin has elevated capabilities.
my $cmd = <<'CMD';
curl -s http://localhost:19999/api/v1/data\?chart=users.pwrites | \
jq -e '[.data[range(10)][.labels | indices("root")[0]]] | add | . > 0'
CMD
$netdata->waitUntilSucceeds($cmd);
'';
})

93
nixos/tests/sudo.nix Normal file
View File

@ -0,0 +1,93 @@
# Some tests to ensure sudo is working properly.
let
password = "helloworld";
in
import ./make-test.nix ({ pkgs, ...} : {
name = "sudo";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ lschuermann ];
};
machine =
{ config, lib, pkgs, ... }:
with lib;
{
users.extraGroups = { foobar = {}; barfoo = {}; baz = { gid = 1337; }; };
users.users = {
test0 = { isNormalUser = true; extraGroups = [ "wheel" ]; };
test1 = { isNormalUser = true; password = password; };
test2 = { isNormalUser = true; extraGroups = [ "foobar" ]; password = password; };
test3 = { isNormalUser = true; extraGroups = [ "barfoo" ]; };
test4 = { isNormalUser = true; extraGroups = [ "baz" ]; };
test5 = { isNormalUser = true; };
};
security.sudo = {
enable = true;
wheelNeedsPassword = false;
extraRules = [
# SUDOERS SYNTAX CHECK (Test whether the module produces a valid output;
# errors being detected by the visudo checks.
# These should not create any entries
{ users = [ "notest1" ]; commands = [ ]; }
{ commands = [ { command = "ALL"; options = [ ]; } ]; }
# Test defining commands with the options syntax, though not setting any options
{ users = [ "notest2" ]; commands = [ { command = "ALL"; options = [ ]; } ]; }
# CONFIGURATION FOR TEST CASES
{ users = [ "test1" ]; groups = [ "foobar" ]; commands = [ "ALL" ]; }
{ groups = [ "barfoo" 1337 ]; commands = [ { command = "ALL"; options = [ "NOPASSWD" "NOSETENV" ]; } ]; }
{ users = [ "test5" ]; commands = [ { command = "ALL"; options = [ "NOPASSWD" "SETENV" ]; } ]; runAs = "test1:barfoo"; }
];
};
};
testScript =
''
subtest "users in wheel group should have passwordless sudo", sub {
$machine->succeed("su - test0 -c \"sudo -u root true\"");
};
subtest "test1 user should have sudo with password", sub {
$machine->succeed("su - test1 -c \"echo ${password} | sudo -S -u root true\"");
};
subtest "test1 user should not be able to use sudo without password", sub {
$machine->fail("su - test1 -c \"sudo -n -u root true\"");
};
subtest "users in group 'foobar' should be able to use sudo with password", sub {
$machine->succeed("sudo -u test2 echo ${password} | sudo -S -u root true");
};
subtest "users in group 'barfoo' should be able to use sudo without password", sub {
$machine->succeed("sudo -u test3 sudo -n -u root true");
};
subtest "users in group 'baz' (GID 1337) should be able to use sudo without password", sub {
$machine->succeed("sudo -u test4 sudo -n -u root echo true");
};
subtest "test5 user should be able to run commands under test1", sub {
$machine->succeed("sudo -u test5 sudo -n -u test1 true");
};
subtest "test5 user should not be able to run commands under root", sub {
$machine->fail("sudo -u test5 sudo -n -u root true");
};
subtest "test5 user should be able to keep his environment", sub {
$machine->succeed("sudo -u test5 sudo -n -E -u test1 true");
};
subtest "users in group 'barfoo' should not be able to keep their environment", sub {
$machine->fail("sudo -u test3 sudo -n -E -u root true");
};
'';
})

View File

@ -1,11 +1,11 @@
{ callPackage, boost155, boost162, openssl_1_1_0, haskellPackages, darwin, libsForQt5, miniupnpc_2, python3 }:
{ callPackage, boost155, boost164, openssl_1_1_0, haskellPackages, darwin, libsForQt5, miniupnpc_2, python3 }:
rec {
aeon = callPackage ./aeon { };
bitcoin = libsForQt5.callPackage ./bitcoin.nix { miniupnpc = miniupnpc_2; withGui = true; };
bitcoind = callPackage ./bitcoin.nix { miniupnpc = miniupnpc_2; withGui = false; };
bitcoin = libsForQt5.callPackage ./bitcoin.nix { boost = boost164; miniupnpc = miniupnpc_2; withGui = true; };
bitcoind = callPackage ./bitcoin.nix { boost = boost164; miniupnpc = miniupnpc_2; withGui = false; };
bitcoin-abc = libsForQt5.callPackage ./bitcoin-abc.nix { withGui = true; };
bitcoind-abc = callPackage ./bitcoin-abc.nix { withGui = false; };
@ -29,6 +29,8 @@ rec {
dogecoin = callPackage ./dogecoin.nix { withGui = true; };
dogecoind = callPackage ./dogecoin.nix { withGui = false; };
ethsign = callPackage ./ethsign { };
freicoin = callPackage ./freicoin.nix { boost = boost155; };
go-ethereum = callPackage ./go-ethereum.nix {
inherit (darwin) libobjc;

View File

@ -0,0 +1,59 @@
{ stdenv, buildGoPackage, fetchFromGitHub, fetchgit, clang }:
buildGoPackage rec {
name = "ethsign-${version}";
version = "0.8.2";
goPackagePath = "github.com/dapphub/ethsign";
hardeningDisable = ["fortify"];
src = fetchFromGitHub {
owner = "dapphub";
repo = "ethsign";
rev = "v${version}";
sha256 = "1gd0bq5x49sjm83r2wivjf03dxvhdli6cvwb9b853wwcvy4inmmh";
};
extraSrcs = [
{
goPackagePath = "github.com/ethereum/go-ethereum";
src = fetchFromGitHub {
owner = "ethereum";
repo = "go-ethereum";
rev = "v1.7.3";
sha256 = "1w6rbq2qpjyf2v9mr18yiv2af1h2sgyvgrdk4bd8ixgl3qcd5b11";
};
}
{
goPackagePath = "gopkg.in/urfave/cli.v1";
src = fetchFromGitHub {
owner = "urfave";
repo = "cli";
rev = "v1.19.1";
sha256 = "1ny63c7bfwfrsp7vfkvb4i0xhq4v7yxqnwxa52y4xlfxs4r6v6fg";
};
}
{
goPackagePath = "golang.org/x/crypto";
src = fetchgit {
url = "https://go.googlesource.com/crypto";
rev = "94eea52f7b742c7cbe0b03b22f0c4c8631ece122";
sha256 = "095zyvjb0m2pz382500miqadhk7w3nis8z3j941z8cq4rdafijvi";
};
}
{
goPackagePath = "golang.org/x/sys";
src = fetchgit {
url = "https://go.googlesource.com/sys";
rev = "53aa286056ef226755cd898109dbcdaba8ac0b81";
sha256 = "1yd17ccklby099cpdcsgx6lf0lj968hsnppp16mwh9009ldf72r1";
};
}
];
meta = with stdenv.lib; {
homepage = http://github.com/dapphub/ethsign;
description = "Make raw signed Ethereum transactions";
license = [licenses.gpl3];
};
}

View File

@ -1,22 +1,24 @@
{ stdenv, makeWrapper, lib, fetchFromGitHub
, bc, coreutils, curl, ethabi, git, gnused, jshon, perl, solc, which }:
, bc, coreutils, curl, ethabi, git, gnused, jshon, perl, solc, which
, nodejs, ethsign
}:
stdenv.mkDerivation rec {
name = "seth-${version}";
version = "0.5.6";
version = "0.6.2";
src = fetchFromGitHub {
owner = "dapphub";
repo = "seth";
rev = "v${version}";
sha256 = "1zl70xy7njjwy4k4g84v7lpf9a2nnnbxh4mkpw7jzqfs2mr636z6";
sha256 = "1lbr7i3rznfp3h03y7pc094r0m992lbzr926rnr0xxbyp755wvm4";
};
nativeBuildInputs = [makeWrapper];
buildPhase = "true";
makeFlags = ["prefix=$(out)"];
postInstall = let path = lib.makeBinPath [
bc coreutils curl ethabi git gnused jshon perl solc which
bc coreutils curl ethabi git gnused jshon perl solc which nodejs ethsign
]; in ''
wrapProgram "$out/bin/seth" --prefix PATH : "${path}"
'';

View File

@ -1,4 +1,4 @@
{ stdenv, fetchFromGitHub, cmake, pkgconfig, vlc
{ stdenv, fetchFromGitHub, fetchpatch, cmake, pkgconfig, vlc
, qtbase, qtmultimedia, qtsvg, qttools
# Cantata doesn't build with cdparanoia enabled so we disable that
@ -45,6 +45,15 @@ in stdenv.mkDerivation rec {
sha256 = "1b633chgfs8rya78bzzck5zijna15d1y4nmrz4dcjp862ks5y5q6";
};
patches = [
# patch is needed for 2.2.0 with qt 5.10 (doesn't harm earlier versions)
(fetchpatch {
url = "https://github.com/CDrummond/cantata/commit/4da7a9128f2c5eaf23ae2a5006d300dc4f21fc6a.patch";
sha256 = "1z21ax3542z7hm628xv110lmplaspb407jzgfk16xkphww5qyphj";
name = "fix_qt_510.patch";
})
];
buildInputs = [ vlc qtbase qtmultimedia qtsvg ]
++ stdenv.lib.optionals withTaglib [ taglib taglib_extras ]
++ stdenv.lib.optionals withReplaygain [ ffmpeg speex mpg123 ]

View File

@ -3,7 +3,7 @@
stdenv.mkDerivation rec {
name = "cava-${version}";
version = "0.4.2";
version = "0.6.0";
buildInputs = [
alsaLib
@ -16,14 +16,16 @@ stdenv.mkDerivation rec {
owner = "karlstav";
repo = "cava";
rev = version;
sha256 = "1c5gl8ghmd89f6097rjd2dzrgh1z4i4v9m4vn5wkpnnm68b96yyc";
sha256 = "01maaq5pfd4a7zilgarwr1nl7jbqyrvir6w7ikchggsckrlk23wr";
};
nativeBuildInputs = [ autoreconfHook ];
postConfigure = ''
substituteInPlace Makefile \
substituteInPlace Makefile.am \
--replace "-L/usr/local/lib -Wl,-rpath /usr/local/lib" ""
substituteInPlace configure.ac \
--replace "/usr/share/consolefonts" "$out/share/consolefonts"
'';
meta = with stdenv.lib; {

View File

@ -62,6 +62,5 @@ in stdenv.mkDerivation rec {
homepage = http://gillesdegottex.github.io/dfasma/;
license = [ licenses.gpl3Plus reaperFork.meta.license ];
platforms = platforms.linux;
maintainers = with maintainers; [ nckx ];
};
}

View File

@ -16,13 +16,14 @@ with stdenv.lib.strings;
let
version = "2.1.0";
version = "2.5.10";
src = fetchFromGitHub {
owner = "grame-cncm";
repo = "faust";
rev = "v${builtins.replaceStrings ["."] ["-"] version}";
sha256 = "1pmiwy287g79ipz9pppnkfrdgls3l912kpkr7dfymk9wk5y5di9m";
sha256 = "0sjhy7axa2dj1977iz6zmqvz9qzalcfnrx2fqx3xmk9hly847d6z";
fetchSubmodules = true;
};
meta = with stdenv.lib; {

View File

@ -2,6 +2,7 @@
, gtk2
, jack2Full
, opencv
, libsndfile
}:
faust.wrapWithBuildEnv {
@ -18,6 +19,7 @@ faust.wrapWithBuildEnv {
gtk2
jack2Full
opencv
libsndfile
];
}

View File

@ -2,6 +2,7 @@
, jack2Full
, opencv
, qt4
, libsndfile
}:
faust.wrapWithBuildEnv {
@ -17,6 +18,7 @@ faust.wrapWithBuildEnv {
jack2Full
opencv
qt4
libsndfile
];
}

View File

@ -18,6 +18,6 @@ stdenv.mkDerivation rec {
homepage = https://xiph.org/flac/;
description = "Library and tools for encoding and decoding the FLAC lossless audio file format";
platforms = platforms.all;
maintainers = [ maintainers.mornfall ];
maintainers = [ ];
};
}

View File

@ -49,6 +49,5 @@ stdenv.mkDerivation rec {
homepage = http://gillesdegottex.github.io/fmit/;
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ nckx ];
};
}

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, python3, python3Packages, intltool
, glibcLocales, gnome3, gtk3, wrapGAppsHook
, ipodSupport ? false, libgpod
, ipodSupport ? false, libgpod, gobjectIntrospection
}:
python3Packages.buildPythonApplication rec {
@ -22,14 +22,11 @@ python3Packages.buildPythonApplication rec {
nativeBuildInputs = [
intltool
python3Packages.wrapPython
wrapGAppsHook
glibcLocales
];
buildInputs = [
python3
];
buildInputs = [ python3 gobjectIntrospection ];
checkInputs = with python3Packages; [
coverage minimock

View File

@ -23,7 +23,6 @@ stdenv.mkDerivation rec {
description = "A command line editor for id3v2 tags";
homepage = http://id3v2.sourceforge.net/;
license = licenses.gpl2Plus;
maintainers = with maintainers; [ nckx ];
platforms = with platforms; unix;
};
}

View File

@ -27,6 +27,5 @@ stdenv.mkDerivation rec {
'';
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ nckx ];
};
}

View File

@ -37,6 +37,5 @@ stdenv.mkDerivation rec {
homepage = http://www.ibrahimshaath.co.uk/keyfinder/;
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ nckx ];
};
}

View File

@ -14,6 +14,6 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; {
platforms = platforms.linux;
maintainers = [ maintainers.mornfall ];
maintainers = [ ];
};
}

View File

@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
description = "A featureful ncurses based MPD client inspired by ncmpc";
homepage = https://ncmpcpp.rybczak.net/;
license = licenses.gpl2Plus;
maintainers = with maintainers; [ jfrankenau koral lovek323 mornfall ];
maintainers = with maintainers; [ jfrankenau koral lovek323 ];
platforms = platforms.all;
};
}

View File

@ -1,32 +1,26 @@
{ stdenv, fetchurl, puredata }:
{ stdenv, fetchFromGitHub, puredata }:
stdenv.mkDerivation rec {
name = "cyclone-${version}";
version = "0.1-alpha55";
version = "0.3beta-2";
src = fetchurl {
url = "mirror://sourceforge/project/pure-data/libraries/cyclone/${name}.tar.gz";
sha256 = "1yys9xrlz09xgnqk2gqdl8vw6xj6l9d7km2lkihidgjql0jx5b5i";
src = fetchFromGitHub {
owner = "porres";
repo = "pd-cyclone";
rev = "cyclone${version}";
sha256 = "192jrq3bdsv626js1ymq10gwp9wwcszjs63ys6ap9ig8xdkbhr3q";
};
buildInputs = [ puredata ];
hardeningDisable = [ "format" ];
makeFlags = [
"pdincludepath=${puredata}/include/pd"
"prefix=$(out)"
];
patchPhase = ''
for file in `grep -r -l g_canvas.h`
do
sed -i 's|#include "g_canvas.h"|#include "${puredata}/include/pd/g_canvas.h"|g' $file
done
for file in `grep -r -l m_imp.h`
do
sed -i 's|#include "m_imp.h"|#include "${puredata}/include/pd/m_imp.h"|g' $file
done
'';
installPhase = ''
mkdir -p $out/cyclone
cp -r bin/* $out/cyclone
postInstall = ''
mv "$out/lib/pd-externals/cyclone" "$out/"
rm -rf $out/lib
'';
meta = {

View File

@ -1,28 +1,26 @@
{ stdenv, fetchurl, puredata }:
{ stdenv, fetchFromGitHub, puredata }:
stdenv.mkDerivation rec {
name = "maxlib-${version}";
version = "1.5.5";
version = "1.5.7";
src = fetchurl {
url = "mirror://sourceforge/project/pure-data/libraries/maxlib/${name}.tar.gz";
sha256 = "0vxl9s815dnay5r0067rxsfh8f6jbk61f0nxrydzjydfycza7p1w";
src = fetchFromGitHub {
owner = "electrickery";
repo = "pd-maxlib";
rev = "v${version}";
sha256 = "10w9qfgn26lj3zqjksf2r1wsjpf5xy4dx22jay9l6idy9q62mxsn";
};
buildInputs = [ puredata ];
hardeningDisable = [ "format" ];
patchPhase = ''
for i in ${puredata}/include/pd/*; do
ln -s $i .
done
sed -i "s@/usr@$out@g" Makefile
'';
makeFlags = [ "prefix=$(out)" ];
postInstall = ''
mv $out/local/lib/pd-externals/maxlib/ $out
mv $out/lib/pd-externals/maxlib/ $out
rm -rf $out/local/
rm -rf $out/lib/
'';
meta = {

View File

@ -1,30 +1,40 @@
{ stdenv, fetchurl, unzip, puredata }:
{ stdenv, fetchurl, unzip, puredata, fftw }:
stdenv.mkDerivation rec {
version = "0.6.0";
version = "0.7.0";
name = "timbreid-${version}";
src = fetchurl {
url = "http://williambrent.conflations.com/pd/timbreID-${version}-src.zip";
sha256 = "02rnkb0vpjxrr60c3hryv7zhyjpci2mi9dk27kjxpj5zp26gjk0p";
sha256 = "14k2xk5zrzrw1zprdbwx45hrlc7ck8vq4drpd3l455i5r8yk4y6b";
};
buildInputs = [ unzip puredata ];
buildInputs = [ unzip puredata fftw ];
unpackPhase = ''
mkdir source
cd source
unzip $src
mv timbreID-0.6.0-src/tID/* .
rm -rf timbreID-0.6.0-src/tID/
rm -rf timbreID-0.6.0-src/INSTALL.txt
'';
buildPhase = ''
make tIDLib.o all
'';
installPhase = ''
mkdir -p $out/
cp -r *.pd $out/
cp -r *.pd_linux $out/
cp -r *.wav $out/
cp -r audio/ $out/
cp -r data/ $out/
cp -r doc/ $out/
'';
postFixup = ''
mv $out/share/doc/ $out/
rm -rf $out/share/
'';
meta = {
description = "A collection of audio feature analysis externals for puredata";
homepage = http://williambrent.conflations.com/pages/research.html;

View File

@ -19,6 +19,6 @@ stdenv.mkDerivation rec {
homepage = http://www.filter24.org/seq24;
license = licenses.gpl2;
platforms = platforms.linux;
maintainers = with maintainers; [ goibhniu nckx ];
maintainers = with maintainers; [ goibhniu ];
};
}

View File

@ -34,7 +34,7 @@
let
androidStudio = stdenv.mkDerivation {
name = "${pname}";
name = "${pname}-${version}";
src = fetchurl {
url = "https://dl.google.com/dl/android/studio/ide-zips/${version}/android-studio-ide-${build}-linux.zip";
@ -48,6 +48,7 @@ let
installPhase = ''
cp -r . $out
wrapProgram $out/bin/studio.sh \
--set ANDROID_EMULATOR_USE_SYSTEM_LIBS 1 \
--set PATH "${stdenv.lib.makeBinPath [
# Checked in studio.sh
@ -68,7 +69,6 @@ let
# Runtime stuff
git
]}" \
--prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [

View File

@ -27,9 +27,9 @@ in rec {
preview = mkStudio {
pname = "android-studio-preview";
version = "3.1.0.6"; # "Android Studio 3.1 Canary 7"
build = "173.4524538";
sha256Hash = "0rj7swychriznylrr09g0rnj12rymms925xbry85ba72hj1jjf6w";
version = "3.1.0.7"; # "Android Studio 3.1 Canary 8"
build = "173.4529993";
sha256Hash = "0mfkzdxbrdqlfqqx83dr9ibkpjwjf54kka9qra9j31zqcmy8rd53";
meta = stable.meta // {
description = "The Official IDE for Android (preview version)";

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "atom-beta-${version}";
version = "1.24.0-beta2";
version = "1.24.0-beta3";
src = fetchurl {
url = "https://github.com/atom/atom/releases/download/v${version}/atom-amd64.deb";
sha256 = "1s5zfccpiyg3nqq3a93dg5sr6pk8gvwf8assq9g78l7qkryqr4ac";
sha256 = "02nnjjwlkxafi2fbi4gz276nqkmi92kf3q414vw1k3kc8q5zvxrs";
name = "${name}.deb";
};

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "atom-${version}";
version = "1.23.2";
version = "1.23.3";
src = fetchurl {
url = "https://github.com/atom/atom/releases/download/v${version}/atom-amd64.deb";
sha256 = "04shnmy80ixjrc8d57i5w23xfxw1dmxj7kbygsal9l8kxgd76k7h";
sha256 = "0vq0pics8ajjqwqlk396dxl10k80059f9bik0j4wj2cals42bifc";
name = "${name}.deb";
};

View File

@ -1,25 +1,25 @@
{ stdenv, fetchFromGitHub, freetype, libX11, libXt, libXft
, version ? "2016-10-08"
, rev ? "a17c4a9c2a1af2de0a756fe16d482e0db88c0541"
, sha256 ? "03xmfzlijz4gbmr7l0pb1gl9kmlz1ab3hr8d51innvlasy4g6xgj"
}:
{ stdenv, fetchFromGitHub, freetype, libX11, libXi, libXt, libXft }:
stdenv.mkDerivation rec {
inherit version;
version = "2017-10-27";
name = "deadpixi-sam-unstable-${version}";
src = fetchFromGitHub {
inherit sha256 rev;
owner = "deadpixi";
repo = "sam";
};
src = fetchFromGitHub {
owner = "deadpixi";
repo = "sam";
rev = "51693780fb1457913389db6634163998f9b775b8";
sha256 = "0nfkj93j4bgli4ixbk041nwi14rabk04kqg8krq4mj0044m1qywr";
};
postPatch = ''
substituteInPlace config.mk.def \
--replace "/usr/include/freetype2" "${freetype.dev}/include/freetype2"
--replace "/usr/include/freetype2" "${freetype.dev}/include/freetype2" \
--replace "CC=gcc" ""
'';
CFLAGS = "-D_DARWIN_C_SOURCE";
makeFlags = [ "DESTDIR=$(out)" ];
buildInputs = [ libX11 libXt libXft ];
buildInputs = [ libX11 libXi libXt libXft ];
postInstall = ''
mkdir -p $out/share/applications
@ -31,6 +31,6 @@ stdenv.mkDerivation rec {
description = "Updated version of the sam text editor";
license = with licenses; lpl-102;
maintainers = with maintainers; [ ramkromberg ];
platforms = with platforms; linux;
platforms = with platforms; unix;
};
}

View File

@ -20,20 +20,32 @@ rec {
# Helper for the common case where we have separate feature and
# plugin JARs.
buildEclipsePlugin = { name, srcFeature, srcPlugin, ... } @ attrs:
buildEclipsePluginBase (attrs // {
srcs = [ srcFeature srcPlugin ];
buildEclipsePlugin =
{ name, srcFeature, srcPlugin ? null, srcPlugins ? [], ... } @ attrs:
assert srcPlugin == null -> srcPlugins != [];
assert srcPlugin != null -> srcPlugins == [];
buildCommand = ''
dropinDir="$out/eclipse/dropins/${name}"
let
mkdir -p $dropinDir/features
unzip ${srcFeature} -d $dropinDir/features/
pSrcs = if (srcPlugin != null) then [ srcPlugin ] else srcPlugins;
mkdir -p $dropinDir/plugins
cp -v ${srcPlugin} $dropinDir/plugins/${name}.jar
'';
});
in
buildEclipsePluginBase (attrs // {
srcs = [ srcFeature ] ++ pSrcs;
buildCommand = ''
dropinDir="$out/eclipse/dropins/${name}"
mkdir -p $dropinDir/features
unzip ${srcFeature} -d $dropinDir/features/
mkdir -p $dropinDir/plugins
for plugin in ${toString pSrcs}; do
cp -v $plugin $dropinDir/plugins/$(stripHash $plugin)
done
'';
});
# Helper for the case where the build directory has the layout of an
# Eclipse update site, that is, it contains the directories
@ -102,6 +114,52 @@ rec {
};
};
ansi-econsole = buildEclipsePlugin rec {
name = "ansi-econsole-${version}";
version = "1.3.5.201612301822";
srcFeature = fetchurl {
url = "https://mihnita.github.io/ansi-econsole/install/features/net.mihai-nita.ansicon_${version}.jar";
sha256 = "086ylxpsrlpbvwv5mw7v6b44j63cwzgi8apg2mq058ydr5ak6hxs";
};
srcPlugin = fetchurl {
url = "https://mihnita.github.io/ansi-econsole/install/plugins/net.mihai-nita.ansicon.plugin_${version}.jar";
sha256 = "1j42l0xxzs89shqkyn91lb0gia10mifzy0i73c3n7gj7sv2ddbjq";
};
meta = with stdenv.lib; {
homepage = "https://mihai-nita.net/java/#ePluginAEC";
description = "Adds support for ANSI escape sequences in the Eclipse console";
license = licenses.asl20;
platforms = platforms.all;
maintainers = [ maintainers.rycee ];
};
};
antlr-runtime_4_5 = buildEclipsePluginBase rec {
name = "antlr-runtime-4.5.3";
src = fetchurl {
url = "http://www.antlr.org/download/${name}.jar";
sha256 = "0lm78i2annlczlc2cg5xvby0g1dyl0sh1y5xc2pymjlmr67a1g4k";
};
buildCommand = ''
dropinDir="$out/eclipse/dropins/"
mkdir -p $dropinDir
cp -v $src $dropinDir/${name}.jar
'';
meta = with stdenv.lib; {
description = "A powerful parser generator for processing structured text or binary files";
homepage = http://www.antlr.org/;
license = licenses.bsd3;
platforms = platforms.all;
maintainers = [ maintainers.rycee ];
};
};
anyedittools = buildEclipsePlugin rec {
name = "anyedit-${version}";
version = "2.7.1.201709201439";
@ -127,16 +185,16 @@ rec {
autodetect-encoding = buildEclipsePlugin rec {
name = "autodetect-encoding-${version}";
version = "1.8.4.201708052053";
version = "1.8.5.201801191359";
srcFeature = fetchurl {
url = "https://cypher256.github.io/eclipse-encoding-plugin/features/eclipse.encoding.plugin.feature_${version}.jar";
sha256 = "1gbvib5dd75pp5mr17ckj2y66gnxjvpc067im5nsl9fyljdw867c";
url = "https://github.com/cypher256/eclipse-encoding-plugin/raw/master/eclipse.encoding.updatesite.snapshot/features/eclipse.encoding.plugin.feature_${version}.jar";
sha256 = "1m8ypsc1dwz0y6yhjgxsdi9813d38jllv7javgwvcd30g042a3kx";
};
srcPlugin = fetchurl {
url = "https://cypher256.github.io/eclipse-encoding-plugin/plugins/mergedoc.encoding_${version}.jar";
sha256 = "0728zsbfs1mc4qvx2p92hkxpnknckqk0xvqlmzivsnr62b5qd5im";
url = "https://github.com/cypher256/eclipse-encoding-plugin/raw/master/eclipse.encoding.updatesite.snapshot/plugins/mergedoc.encoding_${version}.jar";
sha256 = "1n2rzybfcwp3ss2qi0fhd8vm38vdwav8j837lqiqlfcnvzwsk86m";
};
meta = with stdenv.lib; {
@ -192,12 +250,12 @@ rec {
checkstyle = buildEclipseUpdateSite rec {
name = "checkstyle-${version}";
version = "8.5.1.201712211522";
version = "8.7.0.201801131309";
src = fetchzip {
stripRoot = false;
url = "mirror://sourceforge/project/eclipse-cs/Eclipse%20Checkstyle%20Plug-in/8.5.1/net.sf.eclipsecs-updatesite_${version}.zip";
sha256 = "0nid4a4qib9vx34ddry7sylj20p2d47dd0vn4zqqmj5dgqx1a1ab";
url = "mirror://sourceforge/project/eclipse-cs/Eclipse%20Checkstyle%20Plug-in/8.7.0/net.sf.eclipsecs-updatesite_${version}.zip";
sha256 = "07fymk705x4mwq7vh2i6frsf67jql4bzrkdzhb4n74zb0g1dib60";
};
meta = with stdenv.lib; {
@ -233,7 +291,7 @@ rec {
};
};
cup = buildEclipsePluginBase rec {
cup = buildEclipsePlugin rec {
name = "cup-${version}";
version = "1.1.0.201604221613";
version_ = "1.0.0.201604221613";
@ -243,31 +301,20 @@ rec {
sha256 = "13nnsf0cqg02z3af6xg45rhcgiffsibxbx6h1zahjv7igvqgkyna";
};
srcPlugin1 = fetchurl {
url = "http://www2.in.tum.de/projects/cup/eclipse/plugins/CupReferencedLibraries_${version_}.jar";
sha256 = "0kif8kivrysprva1pxzajm88gi967qf7idhb6ga2xpvsdcris91j";
};
srcPlugins = [
(fetchurl {
url = "http://www2.in.tum.de/projects/cup/eclipse/plugins/CupReferencedLibraries_${version_}.jar";
sha256 = "0kif8kivrysprva1pxzajm88gi967qf7idhb6ga2xpvsdcris91j";
})
srcPlugin2 = fetchurl {
url = "http://www2.in.tum.de/projects/cup/eclipse/plugins/de.tum.in.www2.CupPlugin_${version}.jar";
sha256 = "022phbrsny3gb8npb6sxyqqxacx138q5bd7dq3gqxh3kprx5chbl";
};
srcs = [ srcFeature srcPlugin1 srcPlugin2 ];
(fetchurl {
url = "http://www2.in.tum.de/projects/cup/eclipse/plugins/de.tum.in.www2.CupPlugin_${version}.jar";
sha256 = "022phbrsny3gb8npb6sxyqqxacx138q5bd7dq3gqxh3kprx5chbl";
})
];
propagatedBuildInputs = [ zest ];
phases = [ "installPhase" ];
installPhase = ''
dropinDir="$out/eclipse/dropins/${name}"
mkdir -p $dropinDir/features
unzip ${srcFeature} -d $dropinDir/features/
mkdir -p $dropinDir/plugins
cp -v ${srcPlugin1} $dropinDir/plugins/''${srcPlugin1#*-}
cp -v ${srcPlugin2} $dropinDir/plugins/''${srcPlugin2#*-}
'';
meta = with stdenv.lib; {
homepage = http://www2.cs.tum.edu/projects/cup/eclipse.php;
description = "IDE for developing CUP based parsers";
@ -360,6 +407,44 @@ rec {
};
};
jsonedit = buildEclipsePlugin rec {
name = "jsonedit-${version}";
version = "1.0.1";
srcFeature = fetchurl {
url = "https://boothen.github.io/Json-Eclipse-Plugin/features/jsonedit-feature_${version}.jar";
sha256 = "19221409wzcsrlm2fqf6mrxzb5ip1x6y5ba8anw788p7aaz1w30k";
};
srcPlugins =
let
fetch = { n, h }:
fetchurl {
url = "https://boothen.github.io/Json-Eclipse-Plugin/plugins/jsonedit-${n}_${version}.jar";
sha256 = h;
};
in
map fetch [
{ n = "core"; h = "05ipjbh9yz97zhqaqq6cja3zz44n0dn40ms13qnlgf4bxyaf0f6w"; }
{ n = "editor"; h = "1i71rh2fd5hsx6gygnafz2gjz4hlb0ckazxn0maxmnlx4p5apjql"; }
{ n = "folding"; h = "13p8vqdna23ln82w1jgchm59375f1ky0p2b1v7jih55yfhw1ymam"; }
{ n = "model"; h = "0llswhsd58f0rjb9canjncavq4z7q8zidn26yl5gradbbz580p6w"; }
{ n = "outline"; h = "1rs8g0iv2kklbl7j0p6nr26m6ii89yyr9bpi05mh21xva40pzkl5"; }
{ n = "preferences"; h = "0vs074ahhiba7if43ryf9m8xd81sqj9grppy0pzcnkkdkbk870n0"; }
{ n = "text"; h = "0nqpzjw8hhvh9jlpldpmcmg83a170wjdabgsvjq207j12jkvfiqq"; }
];
propagatedBuildInputs = [ antlr-runtime_4_5 ];
meta = with stdenv.lib; {
description = "Adds support for JSON files to Eclipse";
homepage = https://github.com/boothen/Json-Eclipse-Plugin;
license = licenses.epl10;
platforms = platforms.all;
maintainers = [ maintainers.rycee ];
};
};
jdt = buildEclipseUpdateSite rec {
name = "jdt-${version}";
version = "4.7.2";

View File

@ -135,10 +135,10 @@
arbitools = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
elpaBuild {
pname = "arbitools";
version = "0.93";
version = "0.94";
src = fetchurl {
url = "https://elpa.gnu.org/packages/arbitools-0.93.el";
sha256 = "0z3lqp8dqfkams5h4sw569p48d2rvpd3d8lb4xaw0z8l49y2mvg8";
url = "https://elpa.gnu.org/packages/arbitools-0.94.el";
sha256 = "00iq8rr1275p48ic5mibcx657li723q8r7ax4g21w6bzwsj3gksd";
};
packageRequires = [ cl-lib ];
meta = {
@ -564,10 +564,10 @@
debbugs = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib, soap-client }:
elpaBuild {
pname = "debbugs";
version = "0.14";
version = "0.15";
src = fetchurl {
url = "https://elpa.gnu.org/packages/debbugs-0.14.tar";
sha256 = "07wgcvg038l88gxvjr0gjpjhyk743w22x1rqghz3gkmif0g70say";
url = "https://elpa.gnu.org/packages/debbugs-0.15.tar";
sha256 = "1x7jw2ldgkknyxg7x9fhnqkary691icnysmi3xw0g2fjrvllzhqw";
};
packageRequires = [ cl-lib soap-client ];
meta = {
@ -768,10 +768,10 @@
el-search = callPackage ({ elpaBuild, emacs, fetchurl, lib, stream }:
elpaBuild {
pname = "el-search";
version = "1.4.0.14";
version = "1.5.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/el-search-1.4.0.14.tar";
sha256 = "1qc30dia59i2bklhivfhmsghirnpgz5mvcjdc78n0r8nizb68jfp";
url = "https://elpa.gnu.org/packages/el-search-1.5.1.tar";
sha256 = "0bbq59d8x4ncrmpfq54w6rwpp604f1x834b81l7wflwxv7ni5msx";
};
packageRequires = [ emacs stream ];
meta = {
@ -931,10 +931,10 @@
gited = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "gited";
version = "0.3.3";
version = "0.3.4";
src = fetchurl {
url = "https://elpa.gnu.org/packages/gited-0.3.3.tar";
sha256 = "0h3ps26sy4wp1s9vpsj066fpqjqacjlprz3kb09macgsg88k2c1p";
url = "https://elpa.gnu.org/packages/gited-0.3.4.tar";
sha256 = "0s03p0z5dqhigl01hzin2qy53nm7b4ilvfm83d0ca683i9rb7hx1";
};
packageRequires = [ cl-lib emacs ];
meta = {
@ -1386,10 +1386,10 @@
mines = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "mines";
version = "1.2";
version = "1.5";
src = fetchurl {
url = "https://elpa.gnu.org/packages/mines-1.2.tar";
sha256 = "1xwnw2hyk1qz98mdnckk0i05li0gzygq12kkmrlidxnk7ngbq9vw";
url = "https://elpa.gnu.org/packages/mines-1.5.tar";
sha256 = "1wpkn47iza78hzj396z5c05hsimnhhhmr1cq598azd6h8c1zca7g";
};
packageRequires = [ cl-lib emacs ];
meta = {
@ -2320,10 +2320,10 @@
}) {};
which-key = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild {
pname = "which-key";
version = "3.0.2";
version = "3.1.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/which-key-3.0.2.tar";
sha256 = "1s7bq7vq9xsf2pz1w03l743yzaxm9gk5qgympcwlkiq90ph13vcn";
url = "https://elpa.gnu.org/packages/which-key-3.1.0.tar";
sha256 = "17n09i92m7qdicybxl60j81c8fn7jcx25wds0sb7j8i364psjabq";
};
packageRequires = [ emacs ];
meta = {

View File

@ -56,6 +56,6 @@ stdenv.mkDerivation rec {
homepage = http://emacs-w3m.namazu.org/;
maintainers = [ stdenv.lib.maintainers.mornfall ];
maintainers = [ ];
};
}

File diff suppressed because it is too large Load Diff

View File

@ -1544,12 +1544,12 @@
anti-zenburn-theme = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "anti-zenburn-theme";
version = "2.4";
version = "2.5.1";
src = fetchFromGitHub {
owner = "m00natic";
repo = "anti-zenburn-theme";
rev = "53591a18aee564c6d08a5be69b4060a299903255";
sha256 = "06cn81sksvl88l1g3cfgp1kf8xzfv00b31j2rf58f45zlbl5ckv9";
rev = "c80cc51bb1aaf11dd53b9d08e01d61bc9b32622f";
sha256 = "1c97d2jkh7iawgsbcg19gha9ffnxypbcfz0sgcsgf9vy4bvnc350";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/6f6f803dc99a1b1fdb5b4e79f1c9cf72b702d091/recipes/anti-zenburn-theme";
@ -1753,12 +1753,12 @@
apiwrap = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "apiwrap";
version = "0.3";
version = "0.4";
src = fetchFromGitHub {
owner = "vermiculus";
repo = "apiwrap.el";
rev = "5d25972192cd34553997ba193c09eab093a2b870";
sha256 = "1pp2gzw17k58s9akraf8p4jxbar8viym2a43rkc7agzy47qsybs0";
rev = "7935275ee45f0359d887b8563ffd1d002f0c618e";
sha256 = "1p6sj46135dh7fgpzrfzsp5zkmx5si5lndwc7pnk30fbz5pindsw";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/0197fd3657e65e3826375d9b6f19da3058366c91/recipes/apiwrap";
@ -2047,12 +2047,12 @@
auto-compile = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, packed }:
melpaBuild {
pname = "auto-compile";
version = "1.4.1";
version = "1.4.2";
src = fetchFromGitHub {
owner = "emacscollective";
repo = "auto-compile";
rev = "a31819a1b75a2320edb0f7f25d6c6faf528bf41a";
sha256 = "17hzl03livgj49zb0knlfn6r020nvj41pjjz3acy82zwrjydsvxa";
rev = "8d117868a0a091389d528428136e60f951e9c550";
sha256 = "1qkw8qzhqzk16kvk1200ha10gi6ny0saqvyqm6b1ww0iw3q1ic5c";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/57a2fb9524df3fdfdc54c403112e12bd70888b23/recipes/auto-compile";
@ -3061,12 +3061,12 @@
bog = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "bog";
version = "1.3.0";
version = "1.3.1";
src = fetchFromGitHub {
owner = "kyleam";
repo = "bog";
rev = "cf7817de3f37ce2404ee637a655f1a511b829585";
sha256 = "0h166w8bg864ppwg64m0vhg649mmkclld85zcd0lmbqa9wfml5j5";
rev = "6ed4d3edbe771e586d873b826330f3ef23aa1611";
sha256 = "0s4jwlaq3mqyzkyg3x4nh4nx7vw825jhz7ggakay7a2cfvpa4i2j";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/19fd0bf2f8e52c79120c492a6dcabdd51b465d35/recipes/bog";
@ -3142,6 +3142,27 @@
license = lib.licenses.free;
};
}) {};
borg = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "borg";
version = "2.0.0";
src = fetchFromGitHub {
owner = "emacscollective";
repo = "borg";
rev = "34eac585d6829e17ce59b09fe6ad5d675302c096";
sha256 = "1q7k2c7pxcywg6xjk8awg73skyw59a6w4aa9sxbsz9vdj2zn04k9";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/878ab90d444f3a1fd2c9f9068ca7b477e218f1da/recipes/borg";
sha256 = "0gn4hf7hn190gl0kg59nr6jzjnb39c0hy9b3brrsfld9hyxga9jr";
name = "borg";
};
packageRequires = [];
meta = {
homepage = "https://melpa.org/#/borg";
license = lib.licenses.free;
};
}) {};
boxquote = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "boxquote";
@ -3754,12 +3775,12 @@
caml = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "caml";
version = "4.6.0";
version = "4.6.1pre1";
src = fetchFromGitHub {
owner = "ocaml";
repo = "ocaml";
rev = "0d68080b95016f747b7cb63dd36ccdd42d40016e";
sha256 = "1dxg82xqjx4yh4sg2dy48ybn4czv9yq0q3zpr29sxp1grvwvrg2b";
rev = "b50ba2e822ff3a780f9b5a323d48e40881a88fc7";
sha256 = "10im6z3nrkn0yh8004jwk68gjl0lz7qq3dpj24q50nhhqabw9ah5";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/d5a3263cdcc229b11a3e96edbf632d56f32c47aa/recipes/caml";
@ -4751,12 +4772,12 @@
cmake-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "cmake-mode";
version = "3.10.1";
version = "3.10.2";
src = fetchFromGitHub {
owner = "Kitware";
repo = "CMake";
rev = "166bf4c490b8f46eca057fc23c3f3c2e042e9cb3";
sha256 = "1qgny1px7afgxi7hj12fg0zk55sy9mbk0w5sigamyzxp336nfxmz";
rev = "c1e087a9d3af74299d7681c9f9de59e5977a1539";
sha256 = "08qw6kq3l7dv37s5mppqxb6ys22h733k0qh2llzk2430wv5y9crk";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/598723893ae4bc2e60f527a072efe6ed9d4e2488/recipes/cmake-mode";
@ -6038,12 +6059,12 @@
counsel-etags = callPackage ({ counsel, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "counsel-etags";
version = "1.3.7";
version = "1.3.8";
src = fetchFromGitHub {
owner = "redguardtoo";
repo = "counsel-etags";
rev = "921fa5a062bda9a0f9226fdaa76530ad809ff7b9";
sha256 = "1qvp3ihchfwy57sfnnkk6m591s381w57ppig9c0izlbzw3n7hi7n";
rev = "e05fdb306eee197d63976d24bf0e16db241c6c06";
sha256 = "1m6m2ygafy38483rd8qfq4zwmw1x7m5zpnvqdmsckiqik3s2z98n";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/87528349a3ab305bfe98f30c5404913272817a38/recipes/counsel-etags";
@ -6353,12 +6374,12 @@
csound-mode = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, multi, shut-up }:
melpaBuild {
pname = "csound-mode";
version = "0.1.2";
version = "0.2.0";
src = fetchFromGitHub {
owner = "hlolli";
repo = "csound-mode";
rev = "877c7c9d5bdc6a2acf4ac1a10e9e24ba1bd3cc76";
sha256 = "1vsngs42n8xp72701ppvmwyy6b90vnj39fq12yvp7x9zqf29lmq1";
rev = "5a892e6ad72e7844e8e14c0da04fcb6bc125fe5e";
sha256 = "1gzg2r7agllz2asp7dbxykydpnw3861whs2pfhr3fwwb39xf1pva";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/c940d29de11e43b4abf2901c466c94d426a21818/recipes/csound-mode";
@ -6476,6 +6497,27 @@
license = lib.licenses.free;
};
}) {};
cubicle-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "cubicle-mode";
version = "1.1.2";
src = fetchFromGitHub {
owner = "cubicle-model-checker";
repo = "cubicle";
rev = "b043b0247bf9b144a5c3360e5096a4b141dd1fb6";
sha256 = "0zsfz1h68xpbgdb1ln8l081vwrgd7i01ap4rjlyrsk8j3q3ry5wz";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/81c29c912b83cbb536d30ba04130b39c0e5e5969/recipes/cubicle-mode";
sha256 = "0xcmd0s6dfryl1ihfaqq0pfqc906yzzwk3d3nv8g6b6w78pv1lzv";
name = "cubicle-mode";
};
packageRequires = [];
meta = {
homepage = "https://melpa.org/#/cubicle-mode";
license = lib.licenses.free;
};
}) {};
cuda-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "cuda-mode";
@ -6626,12 +6668,12 @@
dante = callPackage ({ dash, emacs, f, fetchFromGitHub, fetchurl, flycheck, haskell-mode, lib, melpaBuild, s }:
melpaBuild {
pname = "dante";
version = "1.3";
version = "1.4";
src = fetchFromGitHub {
owner = "jyp";
repo = "dante";
rev = "6b260611dc08468fca9b9af132a00783dd2cf8d9";
sha256 = "0s5wi010sn3ng9fr7fqbc11kmjqirr28wya3rnnzzb3m5gyxs8id";
rev = "1a25bf26ee8d9878ce858cfaff84b083339056d6";
sha256 = "0kvsx9n8qm9s2w9bz167jzcb1b3d4fgc807w1miwil9dcyar6rkk";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/5afa8226077cbda4b76f52734cf8e0b745ab88e8/recipes/dante";
@ -6815,12 +6857,12 @@
datetime = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "datetime";
version = "0.3";
version = "0.3.2";
src = fetchFromGitHub {
owner = "doublep";
repo = "datetime";
rev = "082d2c7b0e38c26a8c46af9c9956a2e100d88e71";
sha256 = "0fdswqi53qx924lib7nd9dazn0916xf1ybrh3bcn3f8cn6b8ikg5";
rev = "d99e56785d750d6c7e416955f047fe057fae54a6";
sha256 = "0s2pmj2wpprmdx1mppbch8i1srwhfl2pzyhsmczan75wmiblpqfj";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/fff9f0748b0ef76130b24e85ed109325256f956e/recipes/datetime";
@ -6962,12 +7004,12 @@
deft = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "deft";
version = "0.7";
version = "0.8";
src = fetchFromGitHub {
owner = "jrblevin";
repo = "deft";
rev = "4001a55cf5f79cdbfa00f1405e8a4645af4acd40";
sha256 = "157c6ck6gb59i7dikbdnaq7cwlh3nnk0vqgil4v1294s2xbpp46n";
rev = "c4b30d780bfa732ff52d85f0311e4a045f44a7b4";
sha256 = "0z7cilgiz6krvl5h2z72hkch43qxmypb0k6p5vxn5lx1p6v0mrf2";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/1e2a0e4698d4e71ec28656594f6a83504a823490/recipes/deft";
@ -7235,12 +7277,12 @@
dimmer = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "dimmer";
version = "0.2.1";
version = "0.2.2";
src = fetchFromGitHub {
owner = "gonewest818";
repo = "dimmer.el";
rev = "b0faaa6919e633229ced07ff8bd8b5c68b90243a";
sha256 = "04k7m5kg2a32ldgxfc2jkdwbmxzyc3yv66871ywv9152db2g7iml";
rev = "031be18db14c5c45758d64584b0f94d77e8f32da";
sha256 = "0csj6194cjds4lzyk850jfndg38447w0dk6xza4vafwx2nd9lfvf";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/8ae80e9202d69ed3214325dd15c4b2f114263954/recipes/dimmer";
@ -8690,12 +8732,12 @@
edit-server = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "edit-server";
version = "1.13";
version = "1.15";
src = fetchFromGitHub {
owner = "stsquad";
repo = "emacs_chrome";
rev = "f0db18f0d6e9885e4aef3ace8342fd6f635fadf6";
sha256 = "12dp1xj09jrp0kxp9xb6cak9dn6zkyis1wfn4fnhzmxxnrd8c5rn";
rev = "4e959de2f78268b348d2eaac4e43c846792d345f";
sha256 = "0xxby3ghs38i1l7kag12rnzlzcg9297pm8k6kqq3aqzsg9d2950y";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/d98d69008b5ca8b92fa7a6045b9d1af86f269386/recipes/edit-server";
@ -9115,6 +9157,27 @@
license = lib.licenses.free;
};
}) {};
elcord = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "elcord";
version = "1.0.0";
src = fetchFromGitHub {
owner = "Zulu-Inuoe";
repo = "elcord";
rev = "91c665fd832ef3b79c3eb810b7a6b08979a352cd";
sha256 = "04nxyj94rmi22wfasi4lavn3lzkcpxpr5ksfqc8dfq9bllz4c9pa";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/36b64d0fead049df5ebd6606943a8f769324539e/recipes/elcord";
sha256 = "044mwil9alh2v7bjj8yvx8azym2b7a5xb0c7y0r0k2vj72wiirjb";
name = "elcord";
};
packageRequires = [ emacs ];
meta = {
homepage = "https://melpa.org/#/elcord";
license = lib.licenses.free;
};
}) {};
eldoc-eval = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "eldoc-eval";
@ -9181,12 +9244,12 @@
elfeed = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "elfeed";
version = "2.2.0";
version = "2.3.0";
src = fetchFromGitHub {
owner = "skeeto";
repo = "elfeed";
rev = "79077efc34aad25bb43cf46a28a69a308196c972";
sha256 = "1xsy7qr9k9ad5ig9vvf9bbxc5ik5xi1kpmq87q9iq3g321idcwnl";
rev = "00b25d974abc4f3e61676068397758035bfdfc30";
sha256 = "0qivqhz2mhjyqrqkfjrv8q6387cbzwvmyay2jbws5vibwbxjciwz";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/407ae027fcec444622c2a822074b95996df9e6af/recipes/elfeed";
@ -9223,12 +9286,12 @@
elfeed-web = callPackage ({ elfeed, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, simple-httpd }:
melpaBuild {
pname = "elfeed-web";
version = "2.2.0";
version = "2.3.0";
src = fetchFromGitHub {
owner = "skeeto";
repo = "elfeed";
rev = "79077efc34aad25bb43cf46a28a69a308196c972";
sha256 = "1xsy7qr9k9ad5ig9vvf9bbxc5ik5xi1kpmq87q9iq3g321idcwnl";
rev = "00b25d974abc4f3e61676068397758035bfdfc30";
sha256 = "0qivqhz2mhjyqrqkfjrv8q6387cbzwvmyay2jbws5vibwbxjciwz";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/62459d16ee44d5fcf170c0ebc981ca2c7d4672f2/recipes/elfeed-web";
@ -9433,12 +9496,12 @@
elpa-mirror = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "elpa-mirror";
version = "2.1.0";
version = "2.1.1";
src = fetchFromGitHub {
owner = "redguardtoo";
repo = "elpa-mirror";
rev = "9cf096448b69c795b20aab89557e9add6029b13c";
sha256 = "05la1v1p7wyrjflh8lv3pwr7ywm2rvvzhh8phr24w31jfs2kp4gf";
rev = "83a38b5721c459d311833522903de96f874e1a4e";
sha256 = "0j2nk1nhbihfqajkmzp3501mhv5617qhb7qbj46qz8azs8a1dvri";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/d64ce7042c45f29fb394be25ce415912182bac8b/recipes/elpa-mirror";
@ -9545,12 +9608,12 @@
elx = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "elx";
version = "1.1.1";
version = "1.2.0";
src = fetchFromGitHub {
owner = "emacscollective";
repo = "elx";
rev = "9f5d593b65686e8da29ef79457c8f6fc061af7e5";
sha256 = "1vs7nmsi82gv9mw1mia6ri1vmn26ldwnj8akirqgq31rfgyfj4vh";
rev = "127fd4fca8ac6470cfda62f47bb1c29859862cfc";
sha256 = "0j7j7wh89a34scilw11pbdb86nf515ig38pjkwyarfvj93gigc04";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/57a2fb9524df3fdfdc54c403112e12bd70888b23/recipes/elx";
@ -12435,12 +12498,12 @@
fish-mode = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "fish-mode";
version = "0.1.2";
version = "0.1.3";
src = fetchFromGitHub {
owner = "wwwjfy";
repo = "emacs-fish";
rev = "22aabbccd564883684f6d224b8e0a512f334be41";
sha256 = "17djaz79spms9il71m4xdfjhm58dzswb6fpncngkgx8kxvcy9y24";
rev = "cd0387f7f1d5c50e080091f86ca97d8a67d603a6";
sha256 = "0q4cq1rkiz5mjxhp7p5awmw59q1yjb2sryc9i54cwhr5dwwqf95k";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/efac97c0f54a3300251020c4626056526c18b441/recipes/fish-mode";
@ -13048,6 +13111,27 @@
license = lib.licenses.free;
};
}) {};
flycheck-mmark = callPackage ({ emacs, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild }:
melpaBuild {
pname = "flycheck-mmark";
version = "0.1.0";
src = fetchFromGitHub {
owner = "mmark-md";
repo = "flycheck-mmark";
rev = "b73b40cb9c5cf6bc6fa501aa87a4c30b210c0c5f";
sha256 = "1w75accl67i0qwadwp7dgpxaj0i8zwckvv5isyn93vknzw5dz66x";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/2fd10423ab80e32245bb494005c8f87a8987fffb/recipes/flycheck-mmark";
sha256 = "0lnw7pz40hijcpi9b92vjxvvyh9v50ww2f2r8z9pyhl9mjy2245x";
name = "flycheck-mmark";
};
packageRequires = [ emacs flycheck ];
meta = {
homepage = "https://melpa.org/#/flycheck-mmark";
license = lib.licenses.free;
};
}) {};
flycheck-nimsuggest = callPackage ({ emacs, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild, nim-mode }:
melpaBuild {
pname = "flycheck-nimsuggest";
@ -14760,12 +14844,12 @@
ghub-plus = callPackage ({ apiwrap, emacs, fetchFromGitHub, fetchurl, ghub, lib, melpaBuild }:
melpaBuild {
pname = "ghub-plus";
version = "0.2";
version = "0.2.1";
src = fetchFromGitHub {
owner = "vermiculus";
repo = "ghub-plus";
rev = "e04050f81106029c342deb7adbfc67b2a888ec58";
sha256 = "0ydd6aiy8x878jlzp88gi30yslhkcin0rbdjirj2vjs88cfvcjq6";
rev = "8cfdaf42446a68e6aa4eb0655d43563407cb5636";
sha256 = "0acfqf1219bnzyf64sv68fvpi4a13nc0wv8dz5a8h6r1j0ysx6qj";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/03a412fd25218ff6f302734e078a699ff0234e36/recipes/ghub+";
@ -18065,12 +18149,12 @@
helm-org-rifle = callPackage ({ dash, emacs, f, fetchFromGitHub, fetchurl, helm, lib, melpaBuild, s }:
melpaBuild {
pname = "helm-org-rifle";
version = "1.4.2";
version = "1.5.0";
src = fetchFromGitHub {
owner = "alphapapa";
repo = "helm-org-rifle";
rev = "26749ff9f34b2abddf7c47ff71b1046942e38398";
sha256 = "1q969rlqj706wdzd3s54pqpfpqkg18bzl5srl7xkw43cfzxpcpj2";
rev = "68f01726795ca3054cfc6327dcdb22c9c83dfdfa";
sha256 = "0vak9phqgxz5dk1zj3i4cs94y797h77qadirsf33gl073cg95l8a";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/f39cc94dde5aaf0d6cfea5c98dd52cdb0bcb1615/recipes/helm-org-rifle";
@ -18632,12 +18716,12 @@
helpful = callPackage ({ dash, dash-functional, elisp-refs, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, s, shut-up }:
melpaBuild {
pname = "helpful";
version = "0.5";
version = "0.6";
src = fetchFromGitHub {
owner = "Wilfred";
repo = "helpful";
rev = "9fdbf5b24df28b046731db1c7a1cc90338d55dce";
sha256 = "13kw0i4vhd8fgwgchap5qxckvhs00ifr7z68whnd3xzklx3v47bj";
rev = "e1b660e2a48b39b0a81119c2593362dd60076757";
sha256 = "031hglxwlq8fryi8vs11hyflcrk09qc9qja28nqby0adn20z47mc";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/889d34b654de13bd413d46071a5ff191cbf3d157/recipes/helpful";
@ -19409,12 +19493,12 @@
ialign = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "ialign";
version = "0.2.0";
version = "0.4.0";
src = fetchFromGitHub {
owner = "mkcms";
repo = "interactive-align";
rev = "df591e452f9a56c69fb69de961baa75751bae3d8";
sha256 = "1k3c0wxbn6yrd75275ny66avp70qpd3glnmagsgq3x8mbyxh233d";
rev = "1d00ab870d06b946d94e5e6d340b85a3e51fbfb1";
sha256 = "191w5di4f0in49h60xmc5d6xaisbkv8y9f9bxzc3162c4b982qfr";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/072f1f7ce17e2972863bce10af9c52b3c6502eab/recipes/ialign";
@ -19889,6 +19973,27 @@
license = lib.licenses.free;
};
}) {};
imake = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "imake";
version = "1.0.0";
src = fetchFromGitHub {
owner = "tarsius";
repo = "imake";
rev = "edd2e59f7996c35450987cf8f137ecb54777e9ca";
sha256 = "12mq1ki001jgjdfr3fx43z1xz4jrki18rb0wkb7n956dvl34w0fg";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/28de8f7f5302b27c7c6600ad65a998119518be43/recipes/imake";
sha256 = "0j732fi6999n9990w4l28raw140fvqfbynyh4x65yilhw95r7c34";
name = "imake";
};
packageRequires = [ emacs ];
meta = {
homepage = "https://melpa.org/#/imake";
license = lib.licenses.free;
};
}) {};
imapfilter = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "imapfilter";
@ -20141,6 +20246,27 @@
license = lib.licenses.free;
};
}) {};
inf-crystal = callPackage ({ crystal-mode, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "inf-crystal";
version = "0.1.0";
src = fetchFromGitHub {
owner = "brantou";
repo = "inf-crystal.el";
rev = "71a330f2d29e2fb4f51d223cf6230b88620a80af";
sha256 = "0vija33n2j4j5inzm29qk1bjzaxjm97zn263j15258pqxwkbddv3";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/ff84c742eebb84577f362b2739f4bcf1434d58ac/recipes/inf-crystal";
sha256 = "09ssq7i5c2fxxbrsp3nn1f1ah1yv2nb19n5s1iqyykkk316k2q26";
name = "inf-crystal";
};
packageRequires = [ crystal-mode emacs ];
meta = {
homepage = "https://melpa.org/#/inf-crystal";
license = lib.licenses.free;
};
}) {};
inf-ruby = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "inf-ruby";
@ -21569,12 +21695,12 @@
kaolin-themes = callPackage ({ autothemer, cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "kaolin-themes";
version = "1.1.1";
version = "1.2.0";
src = fetchFromGitHub {
owner = "ogdenwebb";
repo = "emacs-kaolin-themes";
rev = "d4a1cbae1fc77192e5844291821709c82c9dc455";
sha256 = "04k2yz3vrj1h0zf6cz0jd97fg8zah2j980l5ycsgyy0dk9ysink8";
rev = "88a25b89a480f1193cc1c5502f3a5d0b68cb7227";
sha256 = "03bbpaih29yx8s16v59mca8v6sak6294zq7d534613la28n4h6w7";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/043a4e3bd5301ef8f4df2cbda0b3f4111eb399e4/recipes/kaolin-themes";
@ -23115,12 +23241,12 @@
magit-popup = callPackage ({ async, dash, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "magit-popup";
version = "2.12.0";
version = "2.12.2";
src = fetchFromGitHub {
owner = "magit";
repo = "magit-popup";
rev = "05a836caf02eba91fa26bdf5dd6fd183fe23937d";
sha256 = "08p57alfbkcsqkhnfjhfckqhans278ffjyhhhvgy8s7asa6as9kl";
rev = "ab75385a1fb8c0fba0769d448b13ba8324835261";
sha256 = "0ky4l3k3camh1paa5ap9frr9hcadj7nj40l3imiiqfcvgyl8ijp6";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/0263ca6aea7bf6eae26a637454affbda6bd106df/recipes/magit-popup";
@ -23136,12 +23262,12 @@
magit-rockstar = callPackage ({ dash, fetchFromGitHub, fetchurl, lib, magit, melpaBuild }:
melpaBuild {
pname = "magit-rockstar";
version = "1.0.6";
version = "1.1.0";
src = fetchFromGitHub {
owner = "tarsius";
repo = "magit-rockstar";
rev = "a65042e3445008b55190f1258ae54bd78e12174b";
sha256 = "1wbbg9jr9kl69sbq9b9dgwvnplmdzjyanwfcncamw3lfcjfnw1bn";
rev = "c8320472e8a50c8299140ba0943bb1fe485d294a";
sha256 = "1xjym51z0v7ibxw059f6k3zljli6z390rmxvrywbfzkb8hqms0l1";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/7a20b539cbd38ffa546c1b56b9fac78c0b9457f6/recipes/magit-rockstar";
@ -25388,12 +25514,12 @@
no-littering = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "no-littering";
version = "0.5.11";
version = "0.5.12";
src = fetchFromGitHub {
owner = "emacscollective";
repo = "no-littering";
rev = "a4b42b185b65e78bc3bb6523e23aefb1213eb3b2";
sha256 = "1yzcawvz3vbq6pgr0b3sk0qg24jx1fpkinwcmsdl283ib8msbc7g";
rev = "8e321f1036770c20637a0f946b655805cd070e25";
sha256 = "11hxf0fkka4mv1qsw0nx3ymvgcav95r2bvk1gwyj5m5cbwb4a1n9";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/57a2fb9524df3fdfdc54c403112e12bd70888b23/recipes/no-littering";
@ -25490,11 +25616,11 @@
}) {};
notmuch = callPackage ({ fetchgit, fetchurl, lib, melpaBuild }: melpaBuild {
pname = "notmuch";
version = "0.26pre2";
version = "0.26";
src = fetchgit {
url = "git://git.notmuchmail.org/git/notmuch";
rev = "4cb1eeba83416a12c616aca6469c027b8b8a303d";
sha256 = "0brcdwblfj3nb2ca0izvhlm3x1pf0r72wsa9f2hf0ssnh9w2z40s";
rev = "3c4e64d976eb561ac5157df1bbe5882e3e65b583";
sha256 = "00a9ggrc63n88g7vp57c09r859pl2dbxnqgf543ks94lm0jzyz3f";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/b19f21ed7485036e799ccd88edbf7896a379d759/recipes/notmuch";
@ -25531,12 +25657,12 @@
nov = callPackage ({ dash, emacs, esxml, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "nov";
version = "0.2.1";
version = "0.2.2";
src = fetchFromGitHub {
owner = "wasamasa";
repo = "nov.el";
rev = "19ab463864f137b43704b4f34173349c88e84d8e";
sha256 = "00f5hhw157nwdwy26yn6l3z2hgk6xxvx5xl0hasskj1l9rg0zgh2";
rev = "4ef20ebb587ffb0ab73c85ad5748d41af1071596";
sha256 = "03s0qjvwk1f7y3i4wh2p5y3z4hdv00adgz8za3vphzc0q8i1kjzb";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/cf543955ba2d5d0074fa2a5ba176f9415f6e006d/recipes/nov";
@ -26182,12 +26308,12 @@
omnisharp = callPackage ({ auto-complete, cl-lib ? null, csharp-mode, dash, emacs, f, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild, popup, s, shut-up }:
melpaBuild {
pname = "omnisharp";
version = "4.1";
version = "4.2";
src = fetchFromGitHub {
owner = "OmniSharp";
repo = "omnisharp-emacs";
rev = "95f56022edf9fcaba8402db05a6927af050b12a8";
sha256 = "133maq29hfjaq4vilz9wvr9vjkschkpydkw2197sscv7whfzv78j";
rev = "588b8482685adedbc56933cb13c58d9cc6a82456";
sha256 = "1iqwxc19jvcb2gsm2aq59zblg1qjmbxgb2yl3h3aybqp968j3i00";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/e327c483be04de32638b420c5b4e043d12a2cd01/recipes/omnisharp";
@ -27397,6 +27523,27 @@
license = lib.licenses.free;
};
}) {};
org-wild-notifier = callPackage ({ alert, dash, fetchFromGitHub, fetchurl, lib, melpaBuild, org }:
melpaBuild {
pname = "org-wild-notifier";
version = "0.2.1";
src = fetchFromGitHub {
owner = "akhramov";
repo = "org-wild-notifier.el";
rev = "f5bf3b13c630265051904cb4c9a0613ead86847c";
sha256 = "0z2flnqimwndq8w7ahi57n7a87l5iknn3dpwirxynq4brzazzi7j";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/114552a24f73f13b253e3db4885039b680f6ef33/recipes/org-wild-notifier";
sha256 = "1lmpa614jnkpmfg3m1d2wjn9w0zig3gwd02n3dyjn23n71fiyhkp";
name = "org-wild-notifier";
};
packageRequires = [ alert dash org ];
meta = {
homepage = "https://melpa.org/#/org-wild-notifier";
license = lib.licenses.free;
};
}) {};
org2blog = callPackage ({ fetchFromGitHub, fetchurl, htmlize, lib, melpaBuild, metaweblog, org, xml-rpc }:
melpaBuild {
pname = "org2blog";
@ -28310,12 +28457,12 @@
parsebib = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "parsebib";
version = "2.3.1";
version = "2.3.2";
src = fetchFromGitHub {
owner = "joostkremers";
repo = "parsebib";
rev = "bc31b627c666df576aa37e21c27a2223b3cb91a3";
sha256 = "1bnqnxkb9dnl0fjrrjx0xn9jsqki2h8ygw3d5dm4bl79smah3qkh";
rev = "c8d59deb20552f9a1885297b5ae0b8f753d191a5";
sha256 = "1b1iiiy184czp014gg1bb3jks9frmkw8hs5z2l2lnzjmfjr6jm6g";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/c39633957475dcd6a033760ba20a957716cce59c/recipes/parsebib";
@ -29040,6 +29187,27 @@
license = lib.licenses.free;
};
}) {};
php-runtime = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "php-runtime";
version = "0.1.0";
src = fetchFromGitHub {
owner = "emacs-php";
repo = "php-runtime.el";
rev = "fa4312863245511462b75cb31df2f8558288f4df";
sha256 = "1glwy0cgnn0z4rnd45pqy0bmyaddhxfjlj778hz7ghy40h9kqbdn";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/615c9ac208d8c20082a8ac83e49e93d99e2cbc89/recipes/php-runtime";
sha256 = "0dvnwajrjsgyqzglzpkx9vwx3f55mrag6dsbdjqc9vvpvxhmgfwb";
name = "php-runtime";
};
packageRequires = [ cl-lib emacs ];
meta = {
homepage = "https://melpa.org/#/php-runtime";
license = lib.licenses.free;
};
}) {};
phpcbf = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild, s }:
melpaBuild {
pname = "phpcbf";
@ -29292,6 +29460,27 @@
license = lib.licenses.free;
};
}) {};
play-crystal = callPackage ({ dash, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, request }:
melpaBuild {
pname = "play-crystal";
version = "0.1.2";
src = fetchFromGitHub {
owner = "veelenga";
repo = "play-crystal.el";
rev = "86b54346e7c832c14f8e5654a462f6490a6b11d7";
sha256 = "0kvkr24f8r21pahm2lsvbr9bg53770wxwpdfmmjljs2zmgxf2c40";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/92715977136afa731e85e894542dc88b664b3304/recipes/play-crystal";
sha256 = "1jqf36b1mhyf4j7fs386g6isy09q7k8zwdc4rb34mhjg1a56gcnf";
name = "play-crystal";
};
packageRequires = [ dash emacs request ];
meta = {
homepage = "https://melpa.org/#/play-crystal";
license = lib.licenses.free;
};
}) {};
play-routes-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "play-routes-mode";
@ -31491,12 +31680,12 @@
req-package = callPackage ({ dash, fetchFromGitHub, fetchurl, ht, lib, log4e, melpaBuild, use-package }:
melpaBuild {
pname = "req-package";
version = "1.0";
version = "1.2";
src = fetchFromGitHub {
owner = "edvorg";
repo = "req-package";
rev = "30f76a9c52994562191c90c315002410706f6c0b";
sha256 = "0qdr2pshfq6v75s9hx9wgvn56pd7b65vaqaa64dryr7v4yzd4r15";
rev = "0c0ac7451149dac6bfda2adfe959d1df1c273de6";
sha256 = "0sx3kw1gpliifbc0gh2z1lvig68v3gwqjbj0izgn77js8kqxad84";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/f58a801f0791566d0c39493a5f82ff0d15d7ab41/recipes/req-package";
@ -31680,12 +31869,12 @@
rg = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, s }:
melpaBuild {
pname = "rg";
version = "1.4.0";
version = "1.4.1";
src = fetchFromGitHub {
owner = "dajva";
repo = "rg.el";
rev = "5de611eae7787ecbc285fe7e31e412b9281a4e14";
sha256 = "18mhcipj5yywd5648pwm955wx3ipsnp9nwjyyl270qnn56hwkb6g";
rev = "68984092d0e0725057e7b67ba32016903170f189";
sha256 = "0qd3qh640339n1dn1isk23xhnkj0pds08yzfak4ijxyzlgl63bdq";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/9ce1f721867383a841957370946f283f996fa76f/recipes/rg";
@ -36169,12 +36358,12 @@
treemacs = callPackage ({ ace-window, cl-lib ? null, dash, emacs, f, fetchFromGitHub, fetchurl, hydra, lib, melpaBuild, pfuture, s }:
melpaBuild {
pname = "treemacs";
version = "1.15.3";
version = "1.16.1";
src = fetchFromGitHub {
owner = "Alexander-Miller";
repo = "treemacs";
rev = "2dabf88d5948a04d0313b0195be397761fc22b58";
sha256 = "0j1ampw5i3m0q69cp2nf9xr9qqxiyasjk7wmsg9nwnx7sibhfddk";
rev = "ef7597d5e99d50efd014bfa9f01046956d0da95f";
sha256 = "15379w0frxwl9p1xraqapn9r2wra75g8mjybj41jd1y65acjg9wg";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/7a680ee3b4a0ab286ac04d84b3fba7606b40c65b/recipes/treemacs";
@ -36190,12 +36379,12 @@
treemacs-evil = callPackage ({ evil, fetchFromGitHub, fetchurl, lib, melpaBuild, treemacs }:
melpaBuild {
pname = "treemacs-evil";
version = "1.15.3";
version = "1.16.1";
src = fetchFromGitHub {
owner = "Alexander-Miller";
repo = "treemacs";
rev = "2dabf88d5948a04d0313b0195be397761fc22b58";
sha256 = "0j1ampw5i3m0q69cp2nf9xr9qqxiyasjk7wmsg9nwnx7sibhfddk";
rev = "ef7597d5e99d50efd014bfa9f01046956d0da95f";
sha256 = "15379w0frxwl9p1xraqapn9r2wra75g8mjybj41jd1y65acjg9wg";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/7a680ee3b4a0ab286ac04d84b3fba7606b40c65b/recipes/treemacs-evil";
@ -36211,12 +36400,12 @@
treemacs-projectile = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild, projectile, treemacs }:
melpaBuild {
pname = "treemacs-projectile";
version = "1.15.3";
version = "1.16.1";
src = fetchFromGitHub {
owner = "Alexander-Miller";
repo = "treemacs";
rev = "2dabf88d5948a04d0313b0195be397761fc22b58";
sha256 = "0j1ampw5i3m0q69cp2nf9xr9qqxiyasjk7wmsg9nwnx7sibhfddk";
rev = "ef7597d5e99d50efd014bfa9f01046956d0da95f";
sha256 = "15379w0frxwl9p1xraqapn9r2wra75g8mjybj41jd1y65acjg9wg";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/7a680ee3b4a0ab286ac04d84b3fba7606b40c65b/recipes/treemacs-projectile";
@ -37792,12 +37981,12 @@
which-key = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "which-key";
version = "3.0.2";
version = "3.1.0";
src = fetchFromGitHub {
owner = "justbur";
repo = "emacs-which-key";
rev = "6d2e17c949ff7bfebfe0b0878a93d94b31585031";
sha256 = "03szbjp6j6rjj43k3vs2jay4y7bnhhh1ymgqv8vvdnqsf88pdg88";
rev = "7559a79e95aada65601f7413a1c3f08bfa34557b";
sha256 = "1l9m04hypk8j5qkg7rlhsknj9hx5l3zjy97s3kv7wbcwvcx3yxhz";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/315865a3df97c0694f648633d44b8b34df1ac76d/recipes/which-key";
@ -38089,8 +38278,8 @@
version = "0.9.8";
src = fetchhg {
url = "https://bitbucket.com/ArneBab/wisp";
rev = "52fa9101d8c4";
sha256 = "1ijzd3xmygkkkwm0ckkmi576y93drcs63l6bsc8qz2pvjcn5k8sw";
rev = "d04938232934";
sha256 = "1sjadb0kh3hrdsvwywi04agrzrs21sxzh1v1km0z3x6f15nr048c";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/wisp-mode";
@ -38127,12 +38316,12 @@
with-editor = callPackage ({ async, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "with-editor";
version = "2.7.0";
version = "2.7.1";
src = fetchFromGitHub {
owner = "magit";
repo = "with-editor";
rev = "99d3278b1c79718de16dd4f57dcc8c4aa31a4051";
sha256 = "1mcfinr1wv87hqn2787dcyn7lkgfni4xfgsji50pwj3zfgg0yqyr";
rev = "04d59d68dab58a7cf3034c84d8ba0553b78ae30c";
sha256 = "080f39m9nmi163arpmxw45xwadb7q7w7p385yi1jy62bzvqnk0pm";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/8c52c840dc35f3fd17ec660e113ddbb53aa99076/recipes/with-editor";
@ -38754,6 +38943,27 @@
license = lib.licenses.free;
};
}) {};
yapfify = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "yapfify";
version = "0.0.6";
src = fetchFromGitHub {
owner = "JorisE";
repo = "yapfify";
rev = "9e63a9135bd8dbfbee55819837a3aa0d119c5e6f";
sha256 = "1bf09hah2g8x0jbrdh4fm1v01qjymiv38yvv8a5qmfpv5k93lcrc";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/060c32d8e9fdc56fe702d265a935d74d76082f86/recipes/yapfify";
sha256 = "0scl8lk1c5i7jp1qj5gg8zf3zyi8lkb57ijkmvcs4czzlyv3y9bm";
name = "yapfify";
};
packageRequires = [];
meta = {
homepage = "https://melpa.org/#/yapfify";
license = lib.licenses.free;
};
}) {};
yard-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "yard-mode";
@ -38864,8 +39074,8 @@
version = "1.80";
src = fetchhg {
url = "https://www.yatex.org/hgrepos/yatex/";
rev = "668632d9392e";
sha256 = "1d37yr7yqqg1gavi3406rv9rfvcm5ic365jhs6pispfx1kr77k6n";
rev = "5bb46b7ab3de";
sha256 = "1ap043fq9yl2n4slrjkjld9b743ac7ygj52z9af709v6sa660ahg";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/e28710244a1bef8f56156fe1c271520896a9c694/recipes/yatex";

View File

@ -164,9 +164,6 @@ self:
# upstream issue: missing file header
qiita = markBroken super.qiita;
# upstream issue: missing file header
rcirc-menu = markBroken super.rcirc-menu;
# upstream issue: missing file header
speech-tagger = markBroken super.speech-tagger;

View File

@ -1,10 +1,10 @@
{ callPackage }: {
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "org";
version = "20180108";
version = "20180122";
src = fetchurl {
url = "https://orgmode.org/elpa/org-20180108.tar";
sha256 = "02rs7zi3dzps0mlyfbgiywd2smnlw0pk8ps1nqk0d5hx3n6d15yv";
url = "https://orgmode.org/elpa/org-20180122.tar";
sha256 = "0a3a5v5x43xknqc6m5rcgdsqlw047w1djq372akfn5wafsk8a916";
};
packageRequires = [];
meta = {
@ -14,10 +14,10 @@
}) {};
org-plus-contrib = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "org-plus-contrib";
version = "20180108";
version = "20180122";
src = fetchurl {
url = "https://orgmode.org/elpa/org-plus-contrib-20180108.tar";
sha256 = "10mhiqsrxxmhsy8dl88r456shx6ajm4w19pz259b960551r596iz";
url = "https://orgmode.org/elpa/org-plus-contrib-20180122.tar";
sha256 = "1ss6h03xkvgk2qm1dx4dxxxalbswjc1jl9v87q99nls8iavmqa8x";
};
packageRequires = [];
meta = {

View File

@ -234,12 +234,12 @@ in
clion = buildClion rec {
name = "clion-${version}";
version = "2017.3.1"; /* updated by script */
version = "2017.3.2"; /* updated by script */
description = "C/C++ IDE. New. Intelligent. Cross-platform";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz";
sha256 = "19pb78s5pa5ywifi1azs8gpg0a65c9n3yiqng348a7s27azkw01z"; /* updated by script */
sha256 = "0lv0nwfgm6h67mxhh0a2154ym7wcbm1qp3k1k1i00lg0lwig1rcw"; /* updated by script */
};
wmClass = "jetbrains-clion";
update-channel = "CLion_Release"; # channel's id as in http://www.jetbrains.com/updates/updates.xml
@ -260,12 +260,12 @@ in
goland = buildGoland rec {
name = "goland-${version}";
version = "2017.3"; /* updated by script */
version = "2017.3.1"; /* updated by script */
description = "Up and Coming Go IDE";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/go/${name}.tar.gz";
sha256 = "0l4l0lsmq1g4fwfrxhbrnfsp8nk38ml48cryvdr241zsxz43fax0"; /* updated by script */
sha256 = "0cfjfv01ra67sr8n8ijqwd9zm2yzb1nm447kf0mr5cynr124ch0z"; /* updated by script */
};
wmClass = "jetbrains-goland";
update-channel = "goland_release";
@ -273,12 +273,12 @@ in
idea-community = buildIdea rec {
name = "idea-community-${version}";
version = "2017.3.2";
version = "2017.3.3"; /* updated by script */
description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
license = stdenv.lib.licenses.asl20;
src = fetchurl {
url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
sha256 = "70cc4f36a6517c7af980456758214414ea74c5c4f314ecf30dd2640600badd62"; /* updated by script */
sha256 = "1wxaz25609wri2d91s9wy00gngplyjg7gzix3mzdhgysm00qizf1"; /* updated by script */
};
wmClass = "jetbrains-idea-ce";
update-channel = "IDEA_Release";
@ -286,12 +286,12 @@ in
idea-ultimate = buildIdea rec {
name = "idea-ultimate-${version}";
version = "2017.3.2"; /* updated by script */
version = "2017.3.3"; /* updated by script */
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/idea/ideaIU-${version}-no-jdk.tar.gz";
sha256 = "0lygnhn2wbs1678g3jbd3c5yzxnjp106qx7v9kgvb1k6l9mqb3my"; /* updated by script */
sha256 = "01d5a6m927q9bnjlpz8va8bfjnj52k8q6i3im5ygj6lwadbzawyf"; /* updated by script */
};
wmClass = "jetbrains-idea";
update-channel = "IDEA_Release";
@ -299,12 +299,12 @@ in
phpstorm = buildPhpStorm rec {
name = "phpstorm-${version}";
version = "2017.3.2";
version = "2017.3.3"; /* updated by script */
description = "Professional IDE for Web and PHP developers";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz";
sha256 = "1grkqvj4j33d8hmy11ipkcci20sw7jpnc5zl28a9g85f2pzvsvs0";
sha256 = "0mk4d2c41qvfz7sqxqw7adak86pm95wvhzxrfg32y01r5i5q0av7"; /* updated by script */
};
wmClass = "jetbrains-phpstorm";
update-channel = "PS2017.3";
@ -312,12 +312,12 @@ in
pycharm-community = buildPycharm rec {
name = "pycharm-community-${version}";
version = "2017.3.2"; /* updated by script */
version = "2017.3.3"; /* updated by script */
description = "PyCharm Community Edition";
license = stdenv.lib.licenses.asl20;
src = fetchurl {
url = "https://download.jetbrains.com/python/${name}.tar.gz";
sha256 = "1xp4hva2wj2r3haqwmji4vpg6xm9fsx2xihslwmq89vfrbzybyq6"; /* updated by script */
sha256 = "1j9pp8lfy62d9l3953d5mpij60s6sqyv3bcjimgy85hsrw570x3r"; /* updated by script */
};
wmClass = "jetbrains-pycharm-ce";
update-channel = "PyCharm_Release";
@ -325,12 +325,12 @@ in
pycharm-professional = buildPycharm rec {
name = "pycharm-professional-${version}";
version = "2017.3.2"; /* updated by script */
version = "2017.3.3"; /* updated by script */
description = "PyCharm Professional Edition";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/python/${name}.tar.gz";
sha256 = "0bqavq9f9pg82yh04bpzpb3a36980v2bn70j1ch6gsm3hdd75swv"; /* updated by script */
sha256 = "180cwva49air4j7g409algrm4svvmcbapspf9als3djhazqmczgr"; /* updated by script */
};
wmClass = "jetbrains-pycharm";
update-channel = "PyCharm_Release";
@ -351,12 +351,12 @@ in
ruby-mine = buildRubyMine rec {
name = "ruby-mine-${version}";
version = "2017.3.1"; /* updated by script */
version = "2017.3.2"; /* updated by script */
description = "The Most Intelligent Ruby and Rails IDE";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/ruby/RubyMine-${version}.tar.gz";
sha256 = "01y89blg30y41j2h254mhf7b7d7nd3bgscinn03vpkjfg7hzr689"; /* updated by script */
sha256 = "1dc14k7i0nfhkzi0j53hysqzxcls29j487jr9kv1aqp81k544bdy"; /* updated by script */
};
wmClass = "jetbrains-rubymine";
update-channel = "rm2017.3";
@ -364,12 +364,12 @@ in
webstorm = buildWebStorm rec {
name = "webstorm-${version}";
version = "2017.3.2"; /* updated by script */
version = "2017.3.3"; /* updated by script */
description = "Professional IDE for Web and JavaScript development";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
sha256 = "1if99qjpnf9x7d3f1anpiglg9lwc3phamfd4wbyi9yjnk3rf5qcr"; /* updated by script */
sha256 = "1fhs13944928rqcqbv8d29qm1y0zzry4drr9gqqmj814y2vkbpnl"; /* updated by script */
};
wmClass = "jetbrains-webstorm";
update-channel = "WS_Release";

View File

@ -1,16 +1,7 @@
{ stdenv, fetchFromGitHub, cmake, gettext, libmsgpack, libtermkey
, libtool, libuv, luaPackages, ncurses, perl, pkgconfig
, unibilium, makeWrapper, vimUtils, xsel, gperf, callPackage
, withPython ? true, pythonPackages, extraPythonPackages ? []
, withPython3 ? true, python3Packages, extraPython3Packages ? []
, unibilium, vimUtils, xsel, gperf, callPackage
, withJemalloc ? true, jemalloc
, withRuby ? true, bundlerEnv, ruby
, withPyGUI ? false
, vimAlias ? false
, viAlias ? false
, configure ? null
}:
with stdenv.lib;
@ -41,59 +32,20 @@ let
description = "VT220/xterm/ECMA-48 terminal emulator library";
homepage = http://www.leonerd.org.uk/code/libvterm/;
license = licenses.mit;
maintainers = with maintainers; [ nckx garbas ];
maintainers = with maintainers; [ garbas ];
platforms = platforms.unix;
};
};
rubyEnv = bundlerEnv {
name = "neovim-ruby-env";
gemdir = ./ruby_provider;
postBuild = ''
ln -s ${ruby}/bin/* $out/bin
'';
};
rubyWrapper = ''--cmd \"let g:ruby_host_prog='$out/bin/nvim-ruby'\" '';
pluginPythonPackages = if configure == null then [] else builtins.concatLists
(map ({ pythonDependencies ? [], ...}: pythonDependencies)
(vimUtils.requiredPlugins configure));
pythonEnv = pythonPackages.python.buildEnv.override {
extraLibs = (
if withPyGUI
then [ pythonPackages.neovim_gui ]
else [ pythonPackages.neovim ]
) ++ extraPythonPackages ++ pluginPythonPackages;
ignoreCollisions = true;
};
pythonWrapper = ''--cmd \"let g:python_host_prog='$out/bin/nvim-python'\" '';
pluginPython3Packages = if configure == null then [] else builtins.concatLists
(map ({ python3Dependencies ? [], ...}: python3Dependencies)
(vimUtils.requiredPlugins configure));
python3Env = python3Packages.python.buildEnv.override {
extraLibs = [ python3Packages.neovim ] ++ extraPython3Packages ++ pluginPython3Packages;
ignoreCollisions = true;
};
python3Wrapper = ''--cmd \"let g:python3_host_prog='$out/bin/nvim-python3'\" '';
additionalFlags =
optionalString (withPython || withPython3 || withRuby)
''--add-flags "${(optionalString withPython pythonWrapper) +
(optionalString withPython3 python3Wrapper) +
(optionalString withRuby rubyWrapper)}" --unset PYTHONPATH '' +
optionalString (withRuby)
''--suffix PATH : ${rubyEnv}/bin --set GEM_HOME ${rubyEnv}/${rubyEnv.ruby.gemPath} '';
neovim = stdenv.mkDerivation rec {
name = "neovim-${version}";
version = "0.2.1";
name = "neovim-unwrapped-${version}";
version = "0.2.2";
src = fetchFromGitHub {
owner = "neovim";
repo = "neovim";
rev = "v${version}";
sha256 = "19ppj0i59kk70j09gap6azm0jm4y95fr5fx7n9gx377y3xjs8h03";
sha256 = "1dxr29d0hyag7snbww5s40as90412qb61rgj7gd9rps1iccl9gv4";
};
enableParallelBuilding = true;
@ -113,7 +65,6 @@ let
nativeBuildInputs = [
cmake
gettext
makeWrapper
pkgconfig
];
@ -140,17 +91,6 @@ let
install_name_tool -change libjemalloc.1.dylib \
${jemalloc}/lib/libjemalloc.1.dylib \
$out/bin/nvim
'' + optionalString withPython ''
ln -s ${pythonEnv}/bin/python $out/bin/nvim-python
'' + optionalString withPython3 ''
ln -s ${python3Env}/bin/python3 $out/bin/nvim-python3
'' + optionalString withPython3 ''
ln -s ${rubyEnv}/bin/neovim-ruby-host $out/bin/nvim-ruby
'' + optionalString withPyGUI ''
makeWrapper "${pythonEnv}/bin/pynvim" "$out/bin/pynvim" \
--prefix PATH : "$out/bin"
'' + optionalString (withPython || withPython3 || withRuby) ''
wrapProgram $out/bin/nvim ${additionalFlags}
'';
meta = {
@ -175,24 +115,5 @@ let
};
};
in if (vimAlias == false && viAlias == false && configure == null)
then neovim
else stdenv.mkDerivation {
name = "neovim-${neovim.version}-configured";
inherit (neovim) version meta;
nativeBuildInputs = [ makeWrapper ];
buildCommand = ''
mkdir -p $out/bin
for item in ${neovim}/bin/*; do
ln -s $item $out/bin/
done
'' + optionalString vimAlias ''
ln -s $out/bin/nvim $out/bin/vim
'' + optionalString viAlias ''
ln -s $out/bin/nvim $out/bin/vi
'' + optionalString (configure != null) ''
wrapProgram $out/bin/nvim --add-flags "-u ${vimUtils.vimrcFile configure}"
'';
}
in
neovim

View File

@ -1,9 +1,9 @@
GEM
remote: https://rubygems.org/
specs:
msgpack (1.1.0)
multi_json (1.12.2)
neovim (0.6.1)
msgpack (1.2.2)
multi_json (1.13.1)
neovim (0.6.2)
msgpack (~> 1.0)
multi_json (~> 1.0)

View File

@ -2,26 +2,26 @@
msgpack = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "0ck7w17d6b4jbb8inh1q57bghi9cjkiaxql1d3glmj1yavbpmlh7";
sha256 = "1ai0sfdv9jnr333fsvkn7a8vqvn0iwiw83yj603a3i68ds1x6di1";
type = "gem";
};
version = "1.1.0";
version = "1.2.2";
};
multi_json = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "1raim9ddjh672m32psaa9niw67ywzjbxbdb8iijx3wv9k5b0pk2x";
sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
type = "gem";
};
version = "1.12.2";
version = "1.13.1";
};
neovim = {
dependencies = ["msgpack" "multi_json"];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1dnv2pdl8lwwy4av8bqc6kdlgxw88dmajm4fkdk6hc7qdx1sw234";
sha256 = "15r3j9bwlpm1ry7cp6059xb0irvsvvlmw53i28z6sf2khwfj5j53";
type = "gem";
};
version = "0.6.1";
version = "0.6.2";
};
}
}

View File

@ -0,0 +1,111 @@
{ stdenv, lib, makeDesktopItem, makeWrapper, lndir
, vimUtils
, neovim
, bundlerEnv, ruby
, pythonPackages
, python3Packages
}:
with stdenv.lib;
neovim:
let
wrapper = {
name ? "neovim"
, withPython ? true, extraPythonPackages ? []
, withPython3 ? true, extraPython3Packages ? []
, withRuby ? true
, withPyGUI ? false
, vimAlias ? false
, viAlias ? false
, configure ? null
}:
let
rubyEnv = bundlerEnv {
name = "neovim-ruby-env";
gemdir = ./ruby_provider;
postBuild = ''
ln -s ${ruby}/bin/* $out/bin
'';
};
pluginPythonPackages = if configure == null then [] else builtins.concatLists
(map ({ pythonDependencies ? [], ...}: pythonDependencies)
(vimUtils.requiredPlugins configure));
pythonEnv = pythonPackages.python.buildEnv.override {
extraLibs = (
if withPyGUI
then [ pythonPackages.neovim_gui ]
else [ pythonPackages.neovim ]
) ++ extraPythonPackages ++ pluginPythonPackages;
ignoreCollisions = true;
};
pluginPython3Packages = if configure == null then [] else builtins.concatLists
(map ({ python3Dependencies ? [], ...}: python3Dependencies)
(vimUtils.requiredPlugins configure));
python3Env = python3Packages.python.buildEnv.override {
extraLibs = [ python3Packages.neovim ] ++ extraPython3Packages ++ pluginPython3Packages;
ignoreCollisions = true;
};
in
stdenv.mkDerivation {
inherit name;
buildCommand = let bin="${neovim}/bin/nvim"; in ''
if [ ! -x "${bin}" ]
then
echo "cannot find executable file \`${bin}'"
exit 1
fi
makeWrapper "$(readlink -v --canonicalize-existing "${bin}")" \
"$out/bin/nvim" --add-flags " \
--cmd \"${if withPython then "let g:python_host_prog='$out/bin/nvim-python'" else "let g:loaded_python_provider = 1"}\" \
--cmd \"${if withPython3 then "let g:python3_host_prog='$out/bin/nvim-python3'" else "let g:loaded_python3_provider = 1"}\" \
--cmd \"${if withRuby then "let g:ruby_host_prog='$out/bin/nvim-ruby'" else "let g:loaded_ruby_provider=1"}\" " \
--unset PYTHONPATH \
${optionalString withRuby '' --suffix PATH : ${rubyEnv}/bin --set GEM_HOME ${rubyEnv}/${rubyEnv.ruby.gemPath}'' }
''
+ optionalString (!stdenv.isDarwin) ''
# copy and patch the original neovim.desktop file
mkdir -p $out/share/applications
substitute ${neovim}/share/applications/nvim.desktop $out/share/applications/nvim.desktop \
--replace 'TryExec=nvim' "TryExec=$out/bin/nvim" \
--replace 'Name=Neovim' 'Name=WrappedNeovim'
''
+ optionalString withPython ''
ln -s ${pythonEnv}/bin/python $out/bin/nvim-python
'' + optionalString withPython3 ''
ln -s ${python3Env}/bin/python3 $out/bin/nvim-python3
'' + optionalString withRuby ''
ln -s ${rubyEnv}/bin/neovim-ruby-host $out/bin/nvim-ruby
''
+ optionalString withPyGUI ''
makeWrapper "${pythonEnv}/bin/pynvim" "$out/bin/pynvim" \
--prefix PATH : "$out/bin"
'' + optionalString vimAlias ''
ln -s $out/bin/nvim $out/bin/vim
'' + optionalString viAlias ''
ln -s $out/bin/nvim $out/bin/vi
'' + optionalString (configure != null) ''
wrapProgram $out/bin/nvim --add-flags "-u ${vimUtils.vimrcFile configure}"
''
;
preferLocalBuild = true;
buildInputs = [makeWrapper];
passthru = { unwrapped = neovim; };
meta = neovim.meta // {
description = neovim.meta.description;
hydraPlatforms = [];
# prefer wrapper over the package
priority = (neovim.meta.priority or 0) - 1;
};
};
in
lib.makeOverridable wrapper

View File

@ -1,10 +1,10 @@
{ stdenv, fetchurl, fetchpatch, makeDesktopItem, cmake, boost, zlib, openssl
, R, qtbase, qtwebkit, qtwebchannel, libuuid, hunspellDicts, unzip, ant, jdk
, gnumake, makeWrapper, pandoc
{ stdenv, fetchurl, fetchFromGitHub, makeDesktopItem, cmake, boost
, zlib, openssl, R, qtbase, qtwebkit, qtwebchannel, libuuid, hunspellDicts
, unzip, ant, jdk, gnumake, makeWrapper, pandoc
}:
let
version = "1.1.383";
version = "1.1.414";
ginVer = "1.5";
gwtVer = "2.7.0";
in
@ -15,19 +15,15 @@ stdenv.mkDerivation rec {
buildInputs = [ boost zlib openssl R qtbase qtwebkit qtwebchannel libuuid ];
src = fetchurl {
url = "https://github.com/rstudio/rstudio/archive/v${version}.tar.gz";
sha256 = "06680l9amq03b4jarmzfr605bijhb79fip9rk464zab6hgwqbp3f";
src = fetchFromGitHub {
owner = "rstudio";
repo = "rstudio";
rev = "v${version}";
sha256 = "1rr2zkv53r8swhq5d745jpp0ivxpsizzh7srf34isqpkn5pgx3v8";
};
# Hack RStudio to only use the input R.
patches = [
./r-location.patch
(fetchpatch {
url = https://aur.archlinux.org/cgit/aur.git/plain/socketproxy-openssl.patch?h=rstudio-desktop-git;
sha256 = "0ywq9rk14s5961l6hvd3cw70jsm73r16h0bsh4yp52vams7cwy9d";
})
];
patches = [ ./r-location.patch ];
postPatch = "substituteInPlace src/cpp/core/r_util/REnvironmentPosix.cpp --replace '@R@' ${R}";
inherit ginVer;
@ -49,14 +45,18 @@ stdenv.mkDerivation rec {
sha256 = "0wbcqb9rbfqqvvhqr1pbqax75wp8ydqdyhp91fbqfqp26xzjv6lk";
};
rmarkdownSrc = fetchurl {
url = "https://github.com/rstudio/rmarkdown/archive/95b8b1fa64f78ca99f225a67fff9817103be56.zip";
sha256 = "12fa65qr04rwsprkmyl651mkaqcbn1znwsmcjg4qsk9n5nxg0fah";
rmarkdownSrc = fetchFromGitHub {
owner = "rstudio";
repo = "rmarkdown";
rev = "v1.8";
sha256 = "1blqxdr1vp2z5wd52nmf8hq36sdd4s2pyms441dqj50v35f8girb";
};
rsconnectSrc = fetchurl {
url = "https://github.com/rstudio/rsconnect/archive/425f3767b3142bc6b81c9eb62c4722f1eedc9781.zip";
sha256 = "1sgf9dj9wfk4c6n5p1jc45386pf0nj2alg2j9qx09av3can1dy9p";
rsconnectSrc = fetchFromGitHub {
owner = "rstudio";
repo = "rsconnect";
rev = "953c945779dd180c1bfe68f41c173c13ec3e222d";
sha256 = "1yxwd9v4mvddh7m5rbljicmssw7glh1lhin7a9f01vxxa92vpj7z";
};
rstudiolibclang = fetchurl {
@ -88,8 +88,10 @@ stdenv.mkDerivation rec {
done
unzip $mathJaxSrc -d dependencies/common/mathjax-26
unzip $rmarkdownSrc -d dependencies/common/rmarkdown
unzip $rsconnectSrc -d dependencies/common/rsconnect
mkdir -p dependencies/common/rmarkdown
ln -s $rmarkdownSrc dependencies/common/rmarkdown/
mkdir -p dependencies/common/rsconnect
ln -s $rsconnectSrc dependencies/common/rsconnect/
mkdir -p dependencies/common/libclang/3.5
unzip $rstudiolibclang -d dependencies/common/libclang/3.5
mkdir -p dependencies/common/libclang/builtin-headers

View File

@ -6,10 +6,10 @@
stdenv.mkDerivation rec {
name = "sigil-${version}";
version = "0.9.7";
version = "0.9.9";
src = fetchFromGitHub {
sha256 = "17m2f7pj2sx5rxrbry6wk1lvviy8fi2m270h47sisywnrhddarh7";
sha256 = "01pvc7k54mx5c7h1qiw92d4j459psv7n9xg94qbinf8vmpvkrcbw";
rev = version;
repo = "Sigil";
owner = "Sigil-Ebook";

View File

@ -25,6 +25,5 @@ stdenv.mkDerivation rec {
gpl2Plus # all the rest
];
platforms = platforms.linux;
maintainers = [ maintainers.nckx ];
};
}

View File

@ -1,12 +1,12 @@
{ lib, fetchFromGitHub }:
rec {
version = "8.0.1257";
version = "8.0.1428";
src = fetchFromGitHub {
owner = "vim";
repo = "vim";
rev = "v${version}";
sha256 = "1y4c7wn5gr7n4c2ni36kadr26aldydxlf06yj7nsmw22ywwg78ig";
sha256 = "0pqqh7g96w8jfc5kvv2il6fcbhccwhk4k5skk52g1c1ixsblwz3y";
};
enableParallelBuilding = true;

View File

@ -29,6 +29,7 @@ stdenv.mkDerivation rec {
"vim_cv_toupper_broken=no"
"--with-tlib=ncurses"
"vim_cv_terminfo=yes"
"vim_cv_tgetent=zero" # it does on native anyway
"vim_cv_tty_group=tty"
"vim_cv_tty_mode=0660"
"vim_cv_getcwd_broken=no"

View File

@ -2,7 +2,7 @@
makeWrapper, libXScrnSaver, libxkbfile, libsecret }:
let
version = "1.19.1";
version = "1.19.2";
channel = "stable";
plat = {
@ -12,9 +12,9 @@ let
}.${stdenv.system};
sha256 = {
"i686-linux" = "0ypx1jrzg76f8p4yh9hi3bhsrc6w4r7rg6i2aa6q7s8ny0q9hrlx";
"x86_64-linux" = "1934wdiy2d1fzcjxjyf60dw1g1pp3lk2wv41xgrabfy5j2xfz14r";
"x86_64-darwin" = "1zbcddgdwvmnk1gpmgw6rz0rswhkfc72wcjdbvgghm4msfwcgvc8";
"i686-linux" = "05qfcmwl1r43slwkb2rxh99hwpzd8c622la0ffd9p2jg4lbkgs1p";
"x86_64-linux" = "0kjwmw68av9mnqcg1vaazm3k240y9jvbng6n7ycgzxwddzx0qlac";
"x86_64-darwin" = "1mjmi5r9qlc6ggh3w566454ar06by15xsm6dymr8zv4sb352w70h";
}.${stdenv.system};
archive_fmt = if stdenv.system == "x86_64-darwin" then "zip" else "tar.gz";

View File

@ -14,8 +14,8 @@ let
else throw "ImageMagick is not supported on this platform.";
cfg = {
version = "7.0.7-19";
sha256 = "1naib6hspmq7d4gfpsksx78gc1lq3p2v3i9pxkkdvr9p9j15c4az";
version = "7.0.7-21";
sha256 = "0680dbg77gcyb3g4n22z5mp7c8mg0jpkqb0g4nj7d7r78nl869rv";
patches = [];
};
in

View File

@ -14,8 +14,8 @@ let
else throw "ImageMagick is not supported on this platform.";
cfg = {
version = "6.9.9-28";
sha256 = "132kdl7jlkghfg3smdab14c29cpvrx65ibipxkmwg1nc88ycqivh";
version = "6.9.9-33";
sha256 = "05931wfhllrb1c2g2nwnwaf1wazn60y5f70gd11qcqp46rif7z21";
patches = [];
}
# Freeze version on mingw so we don't need to port the patch too often.

View File

@ -22,6 +22,5 @@ stdenv.mkDerivation rec {
description = "Tools to trace OpenGL, OpenGL ES, Direct3D, and DirectDraw APIs";
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ nckx ];
};
}

View File

@ -1,4 +1,4 @@
{ mkDerivation, lib, fetchurl, cmake, doxygen, extra-cmake-modules, wrapGAppsHook, fetchpatch
{ mkDerivation, lib, fetchFromGitHub, cmake, doxygen, extra-cmake-modules, wrapGAppsHook, fetchpatch
# For `digitaglinktree`
, perl, sqlite
@ -50,11 +50,13 @@
mkDerivation rec {
name = "digikam-${version}";
version = "5.7.0";
version = "5.8.0";
src = fetchurl {
url = "mirror://kde/stable/digikam/${name}.tar.xz";
sha256 = "1xah079g47fih8l9qy1ifppfvmq5yms5y1z54nvxdyz8nsszy19n";
src = fetchFromGitHub {
owner = "KDE";
repo = "digikam";
rev = "v${version}";
sha256 = "1bvidg0fn92xvw5brhb34lm7m4iy4jb5xpvnhbgh8vik2m4n41w1";
};
nativeBuildInputs = [ cmake doxygen extra-cmake-modules kdoctools wrapGAppsHook ];
@ -83,8 +85,7 @@ mkDerivation rec {
qtsvg
qtwebkit
# https://bugs.kde.org/show_bug.cgi?id=387960
#kcalcore
kcalcore
kconfigwidgets
kcoreaddons
kfilemetadata
@ -112,20 +113,6 @@ mkDerivation rec {
--replace "/usr/bin/sqlite3" "${sqlite}/bin/sqlite3"
'';
patches = [
# fix Qt-5.9.3 empty album problem
(fetchpatch {
url = "https://cgit.kde.org/digikam.git/patch/?id=855ba5b7d4bc6337234720a72ea824ddd3b32e5b";
sha256 = "0zk8p182piy6xn9v0mhwawya9ciq596vql1qc3lgnx371a97mmni";
})
];
patchFlags = "-d core -p1";
# `en make -f core/utilities/assistants/expoblending/CMakeFiles/expoblending_src.dir/build.make core/utilities/assistants/expoblending/CMakeFiles/expoblending_src.dir/manager/expoblendingthread.cpp.o`:
# digikam_version.h:37:24: fatal error: gitversion.h: No such file or directory
enableParallelBuilding = false;
meta = with lib; {
description = "Photo Management Program";
license = licenses.gpl2;

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