diff --git a/.dir-locals.el b/.dir-locals.el
new file mode 100644
index 00000000000..a53c8aa6db5
--- /dev/null
+++ b/.dir-locals.el
@@ -0,0 +1,8 @@
+;;; Directory Local Variables
+;;; For more information see (info "(emacs) Directory Variables")
+
+((nil
+ (bug-reference-bug-regexp . "\\(\\(?:[Ii]ssue \\|[Ff]ixe[ds] \\|[Rr]esolve[ds]? \\|[Cc]lose[ds]? \\|[Pp]\\(?:ull [Rr]equest\\|[Rr]\\) \\|(\\)#\\([0-9]+\\))?\\)")
+ (bug-reference-url-format . "https://github.com/NixOS/nixpkgs/issues/%s"))
+ (nix-mode
+ (tab-width . 2)))
diff --git a/doc/cross-compilation.xml b/doc/cross-compilation.xml
index 3b433fdcc1d..a7b43aeec23 100644
--- a/doc/cross-compilation.xml
+++ b/doc/cross-compilation.xml
@@ -305,7 +305,7 @@
- Cross packagaing cookbook
+ Cross packaging cookbook
Some frequently problems when packaging for cross compilation are good to
diff --git a/doc/functions.xml b/doc/functions.xml
index 746ef7131f8..c23f6aa2596 100644
--- a/doc/functions.xml
+++ b/doc/functions.xml
@@ -521,7 +521,7 @@ merge:"diff3"
tag specifies the tag of the resulting image. By
- default it's latest.
+ default it's null, which indicates that the nix output hash will be used as tag.
diff --git a/doc/introduction.chapter.md b/doc/introduction.chapter.md
index 8b03221c64b..6abdc2714e2 100644
--- a/doc/introduction.chapter.md
+++ b/doc/introduction.chapter.md
@@ -30,7 +30,7 @@ Packages, including the Nix packages collection, are distributed through
distributed for users of Nix on non-NixOS distributions through the channel
`nixpkgs`. Users of NixOS generally use one of the `nixos-*` channels, e.g.
`nixos-16.03`, which includes all packages and modules for the stable NixOS
-16.03. The purpose of stable NixOS releases are generally only given
+16.03. Stable NixOS releases are generally only given
security updates. More up to date packages and modules are available via the
`nixos-unstable` channel.
diff --git a/lib/attrsets.nix b/lib/attrsets.nix
index 19218cfe8ec..dca39cf79ff 100644
--- a/lib/attrsets.nix
+++ b/lib/attrsets.nix
@@ -195,8 +195,9 @@ rec {
{ x = "foo"; y = "bar"; }
=> { x = "x-foo"; y = "y-bar"; }
*/
- mapAttrs = f: set:
- listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set));
+ mapAttrs = builtins.mapAttrs or
+ (f: set:
+ listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set)));
/* Like `mapAttrs', but allows the name of each attribute to be
diff --git a/lib/generators.nix b/lib/generators.nix
index 073bb6982e1..aa675908703 100644
--- a/lib/generators.nix
+++ b/lib/generators.nix
@@ -177,13 +177,15 @@ rec {
# PLIST handling
toPlist = {}: v: let
- expr = ind: x: with builtins;
- if isNull x then "" else
- if isBool x then bool ind x else
- if isInt x then int ind x else
+ isFloat = builtins.isFloat or (x: false);
+ expr = ind: x: with builtins;
+ if isNull x then "" else
+ if isBool x then bool ind x else
+ if isInt x then int ind x else
if isString x then str ind x else
- if isList x then list ind x else
- if isAttrs x then attrs ind x else
+ if isList x then list ind x else
+ if isAttrs x then attrs ind x else
+ if isFloat x then float ind x else
abort "generators.toPlist: should never happen (v = ${v})";
literal = ind: x: ind + x;
@@ -192,6 +194,7 @@ rec {
int = ind: x: literal ind "${toString x}";
str = ind: x: literal ind "${x}";
key = ind: x: literal ind "${x}";
+ float = ind: x: literal ind "${toString x}";
indent = ind: expr "\t${ind}";
diff --git a/lib/lists.nix b/lib/lists.nix
index 194e1c200ec..231c2317c0c 100644
--- a/lib/lists.nix
+++ b/lib/lists.nix
@@ -101,7 +101,7 @@ rec {
concatMap (x: [x] ++ ["z"]) ["a" "b"]
=> [ "a" "z" "b" "z" ]
*/
- concatMap = f: list: concatLists (map f list);
+ concatMap = builtins.concatMap or (f: list: concatLists (map f list));
/* Flatten the argument into a single list; that is, nested lists are
spliced into the top-level lists.
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index 16bd5795b24..c710f8dc3ea 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -18,188 +18,6 @@
for an example on how to work with this data.
*/
{
- Adjective-Object = {
- email = "mhuan13@gmail.com";
- github = "Adjective-Object";
- name = "Maxwell Huang-Hobbs";
- };
- AndersonTorres = {
- email = "torres.anderson.85@gmail.com";
- github = "AndersonTorres";
- name = "Anderson Torres";
- };
- Anton-Latukha = {
- email = "anton.latuka+nixpkgs@gmail.com";
- github = "Anton-Latukha";
- name = "Anton Latukha";
- };
- ariutta = {
- email = "anders.riutta@gmail.com";
- github = "ariutta";
- name = "Anders Riutta";
- };
- Baughn = {
- email = "sveina@gmail.com";
- github = "Baughn";
- name = "Svein Ove Aas";
- };
- ChengCat = {
- email = "yu@cheng.cat";
- github = "ChengCat";
- name = "Yucheng Zhang";
- };
- CrazedProgrammer = {
- email = "crazedprogrammer@gmail.com";
- github = "CrazedProgrammer";
- name = "CrazedProgrammer";
- };
- CrystalGamma = {
- email = "nixos@crystalgamma.de";
- github = "CrystalGamma";
- name = "Jona Stubbe";
- };
- DamienCassou = {
- email = "damien@cassou.me";
- github = "DamienCassou";
- name = "Damien Cassou";
- };
- das_j = {
- email = "janne@hess.ooo";
- github = "dasJ";
- name = "Janne Heß";
- };
- DerGuteMoritz = {
- email = "moritz@twoticketsplease.de";
- github = "DerGuteMoritz";
- name = "Moritz Heidkamp";
- };
- DerTim1 = {
- email = "tim.digel@active-group.de";
- github = "DerTim1";
- name = "Tim Digel";
- };
- DmitryTsygankov = {
- email = "dmitry.tsygankov@gmail.com";
- github = "DmitryTsygankov";
- name = "Dmitry Tsygankov";
- };
- Dje4321 = {
- email = "dje4321@gmail.com";
- github = "dje4321";
- name = "Dje4321";
- };
- Esteth = {
- email = "adam.copp@gmail.com";
- name = "Adam Copp";
- };
- FireyFly = {
- email = "nix@firefly.nu";
- github = "FireyFly";
- name = "Jonas Höglund";
- };
- Fresheyeball = {
- email = "fresheyeball@gmail.com";
- github = "fresheyeball";
- name = "Isaac Shapira";
- };
- Gonzih = {
- email = "gonzih@gmail.com";
- github = "Gonzih";
- name = "Max Gonzih";
- };
- Jo = {
- email = "0x4A6F@shackspace.de";
- name = "Joachim Ernst";
- };
- KibaFox = {
- email = "kiba.fox@foxypossibilities.com";
- github = "KibaFox";
- name = "Kiba Fox";
- };
- MP2E = {
- email = "MP2E@archlinux.us";
- github = "MP2E";
- name = "Cray Elliott";
- };
- Mogria = {
- email = "m0gr14@gmail.com";
- github = "mogria";
- name = "Mogria";
- };
- MostAwesomeDude = {
- email = "cds@corbinsimpson.com";
- github = "MostAwesomeDude";
- name = "Corbin Simpson";
- };
- Nate-Devv = {
- email = "natedevv@gmail.com";
- name = "Nathan Moore";
- };
- NikolaMandic = {
- email = "nikola@mandic.email";
- github = "NikolaMandic";
- name = "Ratko Mladic";
- };
- Phlogistique = {
- email = "noe.rubinstein@gmail.com";
- github = "Phlogistique";
- name = "Noé Rubinstein";
- };
- Profpatsch = {
- email = "mail@profpatsch.de";
- github = "Profpatsch";
- name = "Profpatsch";
- };
- roosemberth = {
- email = "roosembert.palacios+nixpkgs@gmail.com";
- github = "roosemberth";
- name = "Roosembert (Roosemberth) Palacios";
- };
- Scriptkiddi = {
- email = "nixos@scriptkiddi.de";
- github = "scriptkiddi";
- name = "Fritz Otlinghaus";
- };
- SShrike = {
- email = "severen@shrike.me";
- github = "severen";
- name = "Severen Redwood";
- };
- SeanZicari = {
- email = "sean.zicari@gmail.com";
- github = "SeanZicari";
- name = "Sean Zicari";
- };
- StijnDW = {
- email = "stekke@airmail.cc";
- github = "StijnDW";
- name = "Stijn DW";
- };
- StillerHarpo = {
- email = "florianengel39@gmail.com";
- github = "StillerHarpo";
- name = "Florian Engel";
- };
- SuprDewd = {
- email = "suprdewd@gmail.com";
- github = "SuprDewd";
- name = "Bjarki Ágúst Guðmundsson";
- };
- TealG = {
- email = "~@Teal.Gr";
- github = "TealG";
- name = "Teal Gaure";
- };
- ThomasMader = {
- email = "thomas.mader@gmail.com";
- github = "ThomasMader";
- name = "Thomas Mader";
- };
- Zimmi48 = {
- email = "theo.zimmermann@univ-paris-diderot.fr";
- github = "Zimmi48";
- name = "Théo Zimmermann";
- };
a1russell = {
email = "adamlr6+pub@gmail.com";
github = "a1russell";
@@ -260,6 +78,11 @@
github = "adisbladis";
name = "Adam Hose";
};
+ Adjective-Object = {
+ email = "mhuan13@gmail.com";
+ github = "Adjective-Object";
+ name = "Maxwell Huang-Hobbs";
+ };
adnelson = {
email = "ithinkican@gmail.com";
github = "adnelson";
@@ -336,9 +159,9 @@
name = "Alexander Krupenkin ";
};
alexchapman = {
- name = "Alex Chapman";
email = "alex@farfromthere.net";
github = "AJChapman";
+ name = "Alex Chapman";
};
alexfmpe = {
email = "alexandre.fmp.esteves@gmail.com";
@@ -393,6 +216,11 @@
github = "AndrewMorsillo";
name = "Andrew Morsillo";
};
+ AndersonTorres = {
+ email = "torres.anderson.85@gmail.com";
+ github = "AndersonTorres";
+ name = "Anderson Torres";
+ };
anderspapitto = {
email = "anderspapitto@gmail.com";
github = "anderspapitto";
@@ -443,6 +271,11 @@
github = "ankhers";
name = "Justin Wood";
};
+ Anton-Latukha = {
+ email = "anton.latuka+nixpkgs@gmail.com";
+ github = "Anton-Latukha";
+ name = "Anton Latukha";
+ };
antono = {
email = "self@antono.info";
github = "antono";
@@ -478,6 +311,11 @@
github = "aristidb";
name = "Aristid Breitkreuz";
};
+ ariutta = {
+ email = "anders.riutta@gmail.com";
+ github = "ariutta";
+ name = "Anders Riutta";
+ };
arobyn = {
email = "shados@shados.net";
github = "shados";
@@ -577,6 +415,11 @@
github = "basvandijk";
name = "Bas van Dijk";
};
+ Baughn = {
+ email = "sveina@gmail.com";
+ github = "Baughn";
+ name = "Svein Ove Aas";
+ };
bbarker = {
email = "brandon.barker@gmail.com";
github = "bbarker";
@@ -716,6 +559,11 @@
github = "brian-dawn";
name = "Brian Dawn";
};
+ bricewge = {
+ email = "bricewge@gmail.com";
+ github = "bricewge";
+ name = "Brice Waegeneire";
+ };
bstrik = {
email = "dutchman55@gmx.com";
github = "bstrik";
@@ -814,6 +662,11 @@
email = "me@philscotted.com";
name = "Phil Scott";
};
+ ChengCat = {
+ email = "yu@cheng.cat";
+ github = "ChengCat";
+ name = "Yucheng Zhang";
+ };
chiiruno = {
email = "okinan@protonmail.com";
github = "chiiruno";
@@ -954,11 +807,21 @@
github = "cransom";
name = "Casey Ransom";
};
+ CrazedProgrammer = {
+ email = "crazedprogrammer@gmail.com";
+ github = "CrazedProgrammer";
+ name = "CrazedProgrammer";
+ };
cryptix = {
email = "cryptix@riseup.net";
github = "cryptix";
name = "Henry Bubert";
};
+ CrystalGamma = {
+ email = "nixos@crystalgamma.de";
+ github = "CrystalGamma";
+ name = "Jona Stubbe";
+ };
csingley = {
email = "csingley@gmail.com";
github = "csingley";
@@ -974,6 +837,11 @@
github = "cwoac";
name = "Oliver Matthews";
};
+ DamienCassou = {
+ email = "damien@cassou.me";
+ github = "DamienCassou";
+ name = "Damien Cassou";
+ };
danbst = {
email = "abcz2.uprola@gmail.com";
github = "danbst";
@@ -994,6 +862,11 @@
github = "danielfullmer";
name = "Daniel Fullmer";
};
+ das_j = {
+ email = "janne@hess.ooo";
+ github = "dasJ";
+ name = "Janne Heß";
+ };
dasuxullebt = {
email = "christoph.senjak@googlemail.com";
name = "Christoph-Simon Senjak";
@@ -1048,11 +921,21 @@
github = "derchrisuk";
name = "Christian Gerbrandt";
};
+ DerGuteMoritz = {
+ email = "moritz@twoticketsplease.de";
+ github = "DerGuteMoritz";
+ name = "Moritz Heidkamp";
+ };
dermetfan = {
email = "serverkorken@gmail.com";
github = "dermetfan";
name = "Robin Stumm";
};
+ DerTim1 = {
+ email = "tim.digel@active-group.de";
+ github = "DerTim1";
+ name = "Tim Digel";
+ };
desiderius = {
email = "didier@devroye.name";
github = "desiderius";
@@ -1098,11 +981,21 @@
github = "dizfer";
name = "David Izquierdo";
};
+ Dje4321 = {
+ email = "dje4321@gmail.com";
+ github = "dje4321";
+ name = "Dje4321";
+ };
dmalikov = {
email = "malikov.d.y@gmail.com";
github = "dmalikov";
name = "Dmitry Malikov";
};
+ DmitryTsygankov = {
+ email = "dmitry.tsygankov@gmail.com";
+ github = "DmitryTsygankov";
+ name = "Dmitry Tsygankov";
+ };
dmjio = {
email = "djohnson.m@gmail.com";
github = "dmjio";
@@ -1172,6 +1065,11 @@
github = "e-user";
name = "Alexander Kahl";
};
+ eadwu = {
+ email = "edmund.wu@protonmail.com";
+ github = "eadwu";
+ name = "Edmund Wu";
+ };
earldouglas = {
email = "james@earldouglas.com";
github = "earldouglas";
@@ -1246,6 +1144,11 @@
github = "proteansec";
name = "Dejan Lukan";
};
+ eliasp = {
+ email = "mail@eliasprobst.eu";
+ github = "eliasp";
+ name = "Elias Probst";
+ };
elijahcaine = {
email = "elijahcainemv@gmail.com";
github = "pop";
@@ -1267,9 +1170,9 @@
name = "Will Fancher";
};
emmanuelrosa = {
- email = "emmanuel_rosa@aol.com";
- github = "emmanuelrosa";
- name = "Emmanuel Rosa";
+ email = "emmanuel_rosa@aol.com";
+ github = "emmanuelrosa";
+ name = "Emmanuel Rosa";
};
endgame = {
email = "jack@jackkelly.name";
@@ -1300,11 +1203,6 @@
github = "ericbmerritt";
name = "Eric Merritt";
};
- erosennin = {
- email = "ag@sologoc.com";
- github = "erosennin";
- name = "Andrey Golovizin";
- };
ericsagnes = {
email = "eric.sagnes@gmail.com";
github = "ericsagnes";
@@ -1325,11 +1223,20 @@
github = "erikryb";
name = "Erik Rybakken";
};
+ erosennin = {
+ email = "ag@sologoc.com";
+ github = "erosennin";
+ name = "Andrey Golovizin";
+ };
ertes = {
email = "esz@posteo.de";
github = "ertes";
name = "Ertugrul Söylemez";
};
+ Esteth = {
+ email = "adam.copp@gmail.com";
+ name = "Adam Copp";
+ };
ethercrow = {
email = "ethercrow@gmail.com";
github = "ethercrow";
@@ -1390,6 +1297,11 @@
github = "fgaz";
name = "Francesco Gazzetta";
};
+ FireyFly = {
+ email = "nix@firefly.nu";
+ github = "FireyFly";
+ name = "Jonas Höglund";
+ };
flokli = {
email = "flokli@flokli.de";
github = "flokli";
@@ -1435,6 +1347,11 @@
github = "fps";
name = "Florian Paul Schmidt";
};
+ Fresheyeball = {
+ email = "fresheyeball@gmail.com";
+ github = "fresheyeball";
+ name = "Isaac Shapira";
+ };
fridh = {
email = "fridh@fridh.nl";
github = "fridh";
@@ -1494,7 +1411,7 @@
name = "Jim Garrison";
};
gavin = {
- email = "gavin@praxeology.co.uk";
+ email = "gavin.rogers@holo.host";
github = "gavinrogers";
name = "Gavin Rogers";
};
@@ -1558,6 +1475,11 @@
github = "cillianderoiste";
name = "Cillian de Róiste";
};
+ Gonzih = {
+ email = "gonzih@gmail.com";
+ github = "Gonzih";
+ name = "Max Gonzih";
+ };
goodrone = {
email = "goodrone@gmail.com";
github = "goodrone";
@@ -1805,16 +1727,16 @@
email = "jack@mudshark.org";
name = "Jack Cummings";
};
- jdagilliland = {
- email = "jdagilliland@gmail.com";
- github = "jdagilliland";
- name = "Jason Gilliland";
- };
jD91mZM2 = {
email = "me@krake.one";
github = "jD91mZM2";
name = "jD91mZM2";
};
+ jdagilliland = {
+ email = "jdagilliland@gmail.com";
+ github = "jdagilliland";
+ name = "Jason Gilliland";
+ };
jefdaj = {
email = "jefdaj@gmail.com";
github = "jefdaj";
@@ -1880,6 +1802,10 @@
github = "jluttine";
name = "Jaakko Luttinen";
};
+ Jo = {
+ email = "0x4A6F@shackspace.de";
+ name = "Joachim Ernst";
+ };
joachifm = {
email = "joachifm@fastmail.fm";
github = "joachifm";
@@ -2003,6 +1929,11 @@
github = "kaiha";
name = "Kai Harries";
};
+ kalbasit = {
+ email = "wael.nasreddine@gmail.com";
+ github = "kalbasit";
+ name = "Wael Nasreddine";
+ };
kamilchm = {
email = "kamil.chm@gmail.com";
github = "kamilchm";
@@ -2037,6 +1968,11 @@
github = "khumba";
name = "Bryan Gardiner";
};
+ KibaFox = {
+ email = "kiba.fox@foxypossibilities.com";
+ github = "KibaFox";
+ name = "Kiba Fox";
+ };
kierdavis = {
email = "kierdavis@gmail.com";
github = "kierdavis";
@@ -2105,7 +2041,7 @@
email = "giulio.eulisse@cern.ch";
github = "ktf";
name = "Giuluo Eulisse";
- };
+ };
ktosiek = {
email = "tomasz.kontusz@gmail.com";
github = "ktosiek";
@@ -2166,6 +2102,11 @@
github = "leenaars";
name = "Michiel Leenaars";
};
+ lejonet = {
+ email = "daniel@kuehn.se";
+ github = "lejonet";
+ name = "Daniel Kuehn";
+ };
leo60228 = {
email = "iakornfeld@gmail.com";
github = "leo60228";
@@ -2176,11 +2117,6 @@
github = "leonardoce";
name = "Leonardo Cecchi";
};
- lejonet = {
- email = "daniel@kuehn.se";
- github = "lejonet";
- name = "Daniel Kuehn";
- };
lethalman = {
email = "lucabru@src.gnome.org";
github = "lethalman";
@@ -2364,10 +2300,6 @@
github = "marcweber";
name = "Marc Weber";
};
- markWot = {
- email = "markus@wotringer.de";
- name = "Markus Wotringer";
- };
markus1189 = {
email = "markus1189@gmail.com";
github = "markus1189";
@@ -2378,6 +2310,10 @@
github = "markuskowa";
name = "Markus Kowalewski";
};
+ markWot = {
+ email = "markus@wotringer.de";
+ name = "Markus Wotringer";
+ };
marsam = {
email = "marsam@users.noreply.github.com";
github = "marsam";
@@ -2463,7 +2399,7 @@
github = "meditans";
name = "Carlo Nucera";
};
- megheaiulian = {
+ megheaiulian = {
email = "iulian.meghea@gmail.com";
github = "megheaiulian";
name = "Meghea Iulian";
@@ -2616,6 +2552,11 @@
github = "mogorman";
name = "Matthew O'Gorman";
};
+ Mogria = {
+ email = "m0gr14@gmail.com";
+ github = "mogria";
+ name = "Mogria";
+ };
montag451 = {
email = "montag451@laposte.net";
github = "montag451";
@@ -2636,11 +2577,21 @@
github = "moretea";
name = "Maarten Hoogendoorn";
};
+ MostAwesomeDude = {
+ email = "cds@corbinsimpson.com";
+ github = "MostAwesomeDude";
+ name = "Corbin Simpson";
+ };
mounium = {
email = "muoniurn@gmail.com";
github = "mounium";
name = "Katona László";
};
+ MP2E = {
+ email = "MP2E@archlinux.us";
+ github = "MP2E";
+ name = "Cray Elliott";
+ };
mpcsh = {
email = "m@mpc.sh";
github = "mpcsh";
@@ -2740,6 +2691,10 @@
github = "nand0p";
name = "Fernando Jose Pando";
};
+ Nate-Devv = {
+ email = "natedevv@gmail.com";
+ name = "Nathan Moore";
+ };
nathan-gs = {
email = "nathan@nathan.gs";
github = "nathan-gs";
@@ -2795,6 +2750,11 @@
github = "nico202";
name = "Nicolò Balzarotti";
};
+ NikolaMandic = {
+ email = "nikola@mandic.email";
+ github = "NikolaMandic";
+ name = "Ratko Mladic";
+ };
ninjatrappeur = {
email = "felix@alternativebit.fr";
github = "ninjatrappeur";
@@ -2833,7 +2793,7 @@
nonfreeblob = {
email = "nonfreeblob@yandex.com";
github = "nonfreeblob";
- name ="nonfreeblob";
+ name = "nonfreeblob";
};
notthemessiah = {
email = "brian.cohen.88@gmail.com";
@@ -2854,6 +2814,11 @@
github = "nthorne";
name = "Niklas Thörne";
};
+ numinit = {
+ email = "me@numin.it";
+ github = "numinit";
+ name = "Morgan Jones";
+ };
nyanloutre = {
email = "paul@nyanlout.re";
github = "nyanloutre";
@@ -2938,10 +2903,10 @@
github = "oxij";
name = "Jan Malakhovski";
};
- pSub = {
- email = "mail@pascal-wittmann.de";
- github = "pSub";
- name = "Pascal Wittmann";
+ oyren = {
+ email = "m.scheuren@oyra.eu";
+ github = "oyren";
+ name = "Moritz Scheuren";
};
paholg = {
email = "paho@paholg.com";
@@ -3033,6 +2998,11 @@
github = "phile314";
name = "Philipp Hausmann";
};
+ Phlogistique = {
+ email = "noe.rubinstein@gmail.com";
+ github = "Phlogistique";
+ name = "Noé Rubinstein";
+ };
phreedom = {
email = "phreedom@yandex.ru";
github = "phreedom";
@@ -3137,6 +3107,11 @@
github = "primeos";
name = "Michael Weiss";
};
+ Profpatsch = {
+ email = "mail@profpatsch.de";
+ github = "Profpatsch";
+ name = "Profpatsch";
+ };
proglodyte = {
email = "proglodyte23@gmail.com";
github = "proglodyte";
@@ -3156,6 +3131,11 @@
email = "philipp@xndr.de";
name = "Philipp Steinpaß";
};
+ pSub = {
+ email = "mail@pascal-wittmann.de";
+ github = "pSub";
+ name = "Pascal Wittmann";
+ };
psyanticy = {
email = "iuns@outlook.fr";
github = "Assassinkin";
@@ -3175,6 +3155,11 @@
github = "qknight";
name = "Joachim Schiele";
};
+ qoelet = {
+ email = "kenny@machinesung.com";
+ github = "qoelet";
+ name = "Kenny Shen";
+ };
ragge = {
email = "r.dahlen@gmail.com";
github = "ragnard";
@@ -3359,6 +3344,11 @@
github = "rongcuid";
name = "Rongcui Dong";
};
+ roosemberth = {
+ email = "roosembert.palacios+nixpkgs@gmail.com";
+ github = "roosemberth";
+ name = "Roosembert (Roosemberth) Palacios";
+ };
rprospero = {
email = "rprospero+nix@gmail.com";
github = "rprospero";
@@ -3498,11 +3488,21 @@
github = "scolobb";
name = "Sergiu Ivanov";
};
+ Scriptkiddi = {
+ email = "nixos@scriptkiddi.de";
+ github = "scriptkiddi";
+ name = "Fritz Otlinghaus";
+ };
sdll = {
email = "sasha.delly@gmail.com";
github = "sdll";
name = "Sasha Illarionov";
};
+ SeanZicari = {
+ email = "sean.zicari@gmail.com";
+ github = "SeanZicari";
+ name = "Sean Zicari";
+ };
sellout = {
email = "greg@technomadic.org";
github = "sellout";
@@ -3686,6 +3686,11 @@
github = "srhb";
name = "Sarah Brofeldt";
};
+ SShrike = {
+ email = "severen@shrike.me";
+ github = "severen";
+ name = "Severen Redwood";
+ };
stephenmw = {
email = "stephen@q5comm.com";
github = "stephenmw";
@@ -3706,11 +3711,26 @@
github = "steveej";
name = "Stefan Junker";
};
+ StijnDW = {
+ email = "stekke@airmail.cc";
+ github = "StijnDW";
+ name = "Stijn DW";
+ };
+ StillerHarpo = {
+ email = "florianengel39@gmail.com";
+ github = "StillerHarpo";
+ name = "Florian Engel";
+ };
stumoss = {
email = "samoss@gmail.com";
github = "stumoss";
name = "Stuart Moss";
};
+ SuprDewd = {
+ email = "suprdewd@gmail.com";
+ github = "SuprDewd";
+ name = "Bjarki Ágúst Guðmundsson";
+ };
suvash = {
email = "suvash+nixpkgs@gmail.com";
github = "suvash";
@@ -3771,6 +3791,11 @@
github = "Radvendii";
name = "Taeer Bar-Yam";
};
+ taha = {
+ email = "xrcrod@gmail.com";
+ github = "tgharib";
+ name = "Taha Gharib";
+ };
tailhook = {
email = "paul@colomiets.name";
github = "tailhook";
@@ -3811,6 +3836,11 @@
github = "tazjin";
name = "Vincent Ambo";
};
+ TealG = {
+ email = "~@Teal.Gr";
+ github = "TealG";
+ name = "Teal Gaure";
+ };
teh = {
email = "tehunger@gmail.com";
github = "teh";
@@ -3861,6 +3891,11 @@
github = "ctheune";
name = "Christian Theune";
};
+ ThomasMader = {
+ email = "thomas.mader@gmail.com";
+ github = "ThomasMader";
+ name = "Thomas Mader";
+ };
thoughtpolice = {
email = "aseipp@pobox.com";
github = "thoughtpolice";
@@ -4179,6 +4214,11 @@
github = "vyp";
name = "vyp";
};
+ waynr = {
+ name = "Wayne Warren";
+ email = "wayne.warren.s@gmail.com";
+ github = "waynr";
+ };
wchresta = {
email = "wchresta.nix@chrummibei.ch";
github = "wchresta";
@@ -4380,6 +4420,11 @@
github = "zimbatm";
name = "zimbatm";
};
+ Zimmi48 = {
+ email = "theo.zimmermann@univ-paris-diderot.fr";
+ github = "Zimmi48";
+ name = "Théo Zimmermann";
+ };
zohl = {
email = "zohl@fmap.me";
github = "zohl";
diff --git a/maintainers/scripts/all-tarballs.nix b/maintainers/scripts/all-tarballs.nix
index d981a1fa7db..6a4de8a4b95 100644
--- a/maintainers/scripts/all-tarballs.nix
+++ b/maintainers/scripts/all-tarballs.nix
@@ -6,13 +6,11 @@
$ copy-tarballs.pl --expr 'import '
*/
-removeAttrs (import ../../pkgs/top-level/release.nix
+import ../../pkgs/top-level/release.nix
{ # Don't apply ‘hydraJob’ to jobs, because then we can't get to the
# dependency graph.
scrubJobs = false;
# No need to evaluate on i686.
supportedSystems = [ "x86_64-linux" ];
- })
- [ # Remove jobs whose evaluation depends on a writable Nix store.
- "tarball" "unstable" "darwin-tested"
- ]
+ limitedSupportedSystems = [];
+ }
diff --git a/maintainers/scripts/update-python-libraries b/maintainers/scripts/update-python-libraries
index 4536662c842..d95ff4f347e 100755
--- a/maintainers/scripts/update-python-libraries
+++ b/maintainers/scripts/update-python-libraries
@@ -262,7 +262,7 @@ def _update_package(path, target):
if new_version == version:
logging.info("Path {}: no update available for {}.".format(path, pname))
return False
- elif new_version <= version:
+ elif Version(new_version) <= Version(version):
raise ValueError("downgrade for {}.".format(pname))
if not new_sha256:
raise ValueError("no file available for {}.".format(pname))
diff --git a/nixos/doc/manual/release-notes/rl-1809.xml b/nixos/doc/manual/release-notes/rl-1809.xml
index 51e77d24a74..13b244e12f8 100644
--- a/nixos/doc/manual/release-notes/rl-1809.xml
+++ b/nixos/doc/manual/release-notes/rl-1809.xml
@@ -127,6 +127,12 @@ $ nix-instantiate -E '(import <nixpkgsunstable> {}).gitFull'
Make sure the key file is accessible to the daemon.
+
+
+ dockerTools.buildImage now uses null as default value for tag,
+ which indicates that the nix output hash will be used as tag.
+
+
diff --git a/nixos/lib/make-ext4-fs.nix b/nixos/lib/make-ext4-fs.nix
index 4095d9c6d00..35a8afae4a7 100644
--- a/nixos/lib/make-ext4-fs.nix
+++ b/nixos/lib/make-ext4-fs.nix
@@ -5,6 +5,7 @@
{ pkgs
, storePaths
, volumeLabel
+, uuid ? "44444444-4444-4444-8888-888888888888"
}:
let
@@ -32,7 +33,7 @@ pkgs.stdenv.mkDerivation {
echo "Creating an EXT4 image of $bytes bytes (numInodes=$numInodes, numDataBlocks=$numDataBlocks)"
truncate -s $bytes $out
- faketime -f "1970-01-01 00:00:01" mkfs.ext4 -L ${volumeLabel} -U 44444444-4444-4444-8888-888888888888 $out
+ faketime -f "1970-01-01 00:00:01" mkfs.ext4 -L ${volumeLabel} -U ${uuid} $out
# Populate the image contents by piping a bunch of commands to the `debugfs` tool from e2fsprogs.
# For example, to copy /nix/store/abcd...efg-coreutils-8.23/bin/sleep:
diff --git a/nixos/modules/config/networking.nix b/nixos/modules/config/networking.nix
index 4101ef82f3e..48c3b41bc09 100644
--- a/nixos/modules/config/networking.nix
+++ b/nixos/modules/config/networking.nix
@@ -231,10 +231,6 @@ in
# a collision with an apparently unrelated environment
# variable with the same name exported by dhcpcd.
interface_order='lo lo[0-9]*'
- '' + optionalString config.services.nscd.enable ''
- # Invalidate the nscd cache whenever resolv.conf is
- # regenerated.
- libc_restart='${pkgs.systemd}/bin/systemctl try-restart --no-block nscd.service 2> /dev/null'
'' + optionalString (length resolvconfOptions > 0) ''
# Options as described in resolv.conf(5)
resolv_conf_options='${concatStringsSep " " resolvconfOptions}'
diff --git a/nixos/modules/hardware/all-firmware.nix b/nixos/modules/hardware/all-firmware.nix
index b61acf1815d..e978ec6b40a 100644
--- a/nixos/modules/hardware/all-firmware.nix
+++ b/nixos/modules/hardware/all-firmware.nix
@@ -38,7 +38,8 @@ in {
firmwareLinuxNonfree
intel2200BGFirmware
rtl8192su-firmware
- ] ++ optionals (versionOlder config.boot.kernelPackages.kernel.version "4.13") [
+ ] ++ optional (pkgs.stdenv.isAarch32 || pkgs.stdenv.isAarch64) raspberrypiWirelessFirmware
+ ++ optionals (versionOlder config.boot.kernelPackages.kernel.version "4.13") [
rtl8723bs-firmware
];
})
diff --git a/nixos/modules/i18n/input-method/default.nix b/nixos/modules/i18n/input-method/default.nix
index 7ed4a584d64..9548a249efa 100644
--- a/nixos/modules/i18n/input-method/default.nix
+++ b/nixos/modules/i18n/input-method/default.nix
@@ -50,7 +50,7 @@ in
package = mkOption {
internal = true;
- type = types.path;
+ type = types.nullOr types.path;
default = null;
description = ''
The input method method package.
diff --git a/nixos/modules/installer/cd-dvd/sd-image.nix b/nixos/modules/installer/cd-dvd/sd-image.nix
index c091923de60..311a5ff6967 100644
--- a/nixos/modules/installer/cd-dvd/sd-image.nix
+++ b/nixos/modules/installer/cd-dvd/sd-image.nix
@@ -16,6 +16,8 @@ let
inherit pkgs;
inherit (config.sdImage) storePaths;
volumeLabel = "NIXOS_SD";
+ } // optionalAttrs (config.sdImage.rootPartitionUUID != null) {
+ uuid = config.sdImage.rootPartitionUUID;
};
in
{
@@ -42,6 +44,24 @@ in
'';
};
+ bootPartitionID = mkOption {
+ type = types.string;
+ default = "0x2178694e";
+ description = ''
+ Volume ID for the /boot partition on the SD card. This value must be a
+ 32-bit hexadecimal number.
+ '';
+ };
+
+ rootPartitionUUID = mkOption {
+ type = types.nullOr types.string;
+ default = null;
+ example = "14e19a7b-0ae0-484d-9d54-43bd6fdc20c7";
+ description = ''
+ UUID for the main NixOS partition on the SD card.
+ '';
+ };
+
bootSize = mkOption {
type = types.int;
default = 120;
@@ -95,7 +115,7 @@ in
# type=b is 'W95 FAT32', type=83 is 'Linux'.
sfdisk $img <networking.networkmanager.dns option to be
+ set to dnsmasq. If enabled, the directories
+ defined by the
+
+ option will be set up when the service starts. The dnsmasq instance
+ managed by NetworkManager will then watch those directories for
+ hosts files (see the --hostsdir option of
+ dnsmasq). This way a non-privileged user can add or override DNS
+ entries on the local system (depending on what hosts directories
+ that are configured)..
+ '';
+ };
+ hostsDirs = mkOption {
+ type = with types; attrsOf (submodule {
+ options = {
+ user = mkOption {
+ type = types.str;
+ default = "root";
+ description = ''
+ The user that will own the hosts directory.
+ '';
+ };
+ group = mkOption {
+ type = types.str;
+ default = "root";
+ description = ''
+ The group that will own the hosts directory.
+ '';
+ };
+ };
+ });
+ default = {};
+ description = ''
+ Defines a set of directories (relative to
+ /run/NetworkManager/hostdirs) that dnsmasq will
+ watch for hosts files.
+ '';
+ };
+ };
};
};
@@ -325,10 +374,17 @@ in {
config = mkIf cfg.enable {
- assertions = [{
- assertion = config.networking.wireless.enable == false;
- message = "You can not use networking.networkmanager with networking.wireless";
- }];
+ assertions = [
+ { assertion = config.networking.wireless.enable == false;
+ message = "You can not use networking.networkmanager with networking.wireless";
+ }
+ { assertion = !dynamicHostsEnabled || (dynamicHostsEnabled && cfg.dns == "dnsmasq");
+ message = ''
+ To use networking.networkmanager.dynamicHosts you also need to set
+ networking.networkmanager.dns = "dnsmasq"
+ '';
+ }
+ ];
environment.etc = with cfg.basePackages; [
{ source = configFile;
@@ -362,7 +418,13 @@ in {
++ lib.imap1 (i: s: {
inherit (s) source;
target = "NetworkManager/dispatcher.d/${dispatcherTypesSubdirMap.${s.type}}03userscript${lib.fixedWidthNumber 4 i}";
- }) cfg.dispatcherScripts;
+ }) cfg.dispatcherScripts
+ ++ optional (dynamicHostsEnabled)
+ { target = "NetworkManager/dnsmasq.d/dyndns.conf";
+ text = concatMapStrings (n: ''
+ hostsdir=/run/NetworkManager/hostsdirs/${n}
+ '') (attrNames cfg.dynamicHosts.hostsDirs);
+ };
environment.systemPackages = cfg.packages;
@@ -398,6 +460,21 @@ in {
'';
};
+ systemd.services.nm-setup-hostsdirs = mkIf dynamicHostsEnabled {
+ wantedBy = [ "network-manager.service" ];
+ before = [ "network-manager.service" ];
+ partOf = [ "network-manager.service" ];
+ script = concatStrings (mapAttrsToList (n: d: ''
+ mkdir -p "/run/NetworkManager/hostsdirs/${n}"
+ chown "${d.user}:${d.group}" "/run/NetworkManager/hostsdirs/${n}"
+ chmod 0775 "/run/NetworkManager/hostsdirs/${n}"
+ '') cfg.dynamicHosts.hostsDirs);
+ serviceConfig = {
+ Type = "oneshot";
+ RemainAfterExist = true;
+ };
+ };
+
# Turn off NixOS' network management
networking = {
useDHCP = false;
diff --git a/nixos/modules/services/networking/quagga.nix b/nixos/modules/services/networking/quagga.nix
index 22204e53203..5acdd5af8f8 100644
--- a/nixos/modules/services/networking/quagga.nix
+++ b/nixos/modules/services/networking/quagga.nix
@@ -95,26 +95,25 @@ in
{
###### interface
-
- options.services.quagga =
+ imports = [
{
+ options.services.quagga = {
+ zebra = (serviceOptions "zebra") // {
+ enable = mkOption {
+ type = types.bool;
+ default = any isEnabled services;
+ description = ''
+ Whether to enable the Zebra routing manager.
- zebra = (serviceOptions "zebra") // {
-
- enable = mkOption {
- type = types.bool;
- default = any isEnabled services;
- description = ''
- Whether to enable the Zebra routing manager.
-
- The Zebra routing manager is automatically enabled
- if any routing protocols are configured.
- '';
+ The Zebra routing manager is automatically enabled
+ if any routing protocols are configured.
+ '';
+ };
};
-
};
-
- } // (genAttrs services serviceOptions);
+ }
+ { options.services.quagga = (genAttrs services serviceOptions); }
+ ];
###### implementation
diff --git a/nixos/modules/services/networking/supplicant.nix b/nixos/modules/services/networking/supplicant.nix
index dc90a4bcc62..3c4321ab9e9 100644
--- a/nixos/modules/services/networking/supplicant.nix
+++ b/nixos/modules/services/networking/supplicant.nix
@@ -183,7 +183,7 @@ in
example = literalExample ''
{ "wlan0 wlan1" = {
- configFile = "/etc/wpa_supplicant";
+ configFile.path = "/etc/wpa_supplicant.conf";
userControlled.group = "network";
extraConf = '''
ap_scan=1
diff --git a/nixos/modules/services/networking/znc.nix b/nixos/modules/services/networking/znc.nix
index 76e4899c85e..6f477e3b146 100644
--- a/nixos/modules/services/networking/znc.nix
+++ b/nixos/modules/services/networking/znc.nix
@@ -36,6 +36,7 @@ let
IPv4 = true
IPv6 = true
SSL = ${boolToString confOpts.useSSL}
+ ${lib.optionalString (confOpts.uriPrefix != null) "URIPrefix = ${confOpts.uriPrefix}"}
@@ -310,6 +311,16 @@ in
'';
};
+ uriPrefix = mkOption {
+ type = types.nullOr types.str;
+ default = null;
+ example = "/znc/";
+ description = ''
+ An optional URI prefix for the ZNC web interface. Can be
+ used to make ZNC available behind a reverse proxy.
+ '';
+ };
+
extraZncConf = mkOption {
default = "";
type = types.lines;
diff --git a/nixos/modules/services/security/oauth2_proxy_nginx.nix b/nixos/modules/services/security/oauth2_proxy_nginx.nix
new file mode 100644
index 00000000000..2aa2c57fd22
--- /dev/null
+++ b/nixos/modules/services/security/oauth2_proxy_nginx.nix
@@ -0,0 +1,64 @@
+{ pkgs, config, lib, ... }:
+with lib;
+let
+ cfg = config.services.oauth2_proxy.nginx;
+in
+{
+ options.services.oauth2_proxy.nginx = {
+ proxy = mkOption {
+ type = types.string;
+ default = config.services.oauth2_proxy.httpAddress;
+ description = ''
+ The address of the reverse proxy endpoint for oauth2_proxy
+ '';
+ };
+ virtualHosts = mkOption {
+ type = types.listOf types.string;
+ default = [];
+ description = ''
+ A list of nginx virtual hosts to put behind the oauth2 proxy
+ '';
+ };
+ };
+ config.services.oauth2_proxy = mkIf (cfg.virtualHosts != [] && (hasPrefix "127.0.0.1:" cfg.proxy)) {
+ enable = true;
+ };
+ config.services.nginx = mkMerge ((optional (cfg.virtualHosts != []) {
+ recommendedProxySettings = true; # needed because duplicate headers
+ }) ++ (map (vhost: {
+ virtualHosts.${vhost} = {
+ locations."/oauth2/" = {
+ proxyPass = cfg.proxy;
+ extraConfig = ''
+ proxy_set_header X-Scheme $scheme;
+ proxy_set_header X-Auth-Request-Redirect $request_uri;
+ '';
+ };
+ locations."/oauth2/auth" = {
+ proxyPass = cfg.proxy;
+ extraConfig = ''
+ proxy_set_header X-Scheme $scheme;
+ # nginx auth_request includes headers but not body
+ proxy_set_header Content-Length "";
+ proxy_pass_request_body off;
+ '';
+ };
+ locations."/".extraConfig = ''
+ auth_request /oauth2/auth;
+ error_page 401 = /oauth2/sign_in;
+
+ # pass information via X-User and X-Email headers to backend,
+ # requires running with --set-xauthrequest flag
+ auth_request_set $user $upstream_http_x_auth_request_user;
+ auth_request_set $email $upstream_http_x_auth_request_email;
+ proxy_set_header X-User $user;
+ proxy_set_header X-Email $email;
+
+ # if you enabled --cookie-refresh, this is needed for it to work with auth_request
+ auth_request_set $auth_cookie $upstream_http_set_cookie;
+ add_header Set-Cookie $auth_cookie;
+ '';
+
+ };
+ }) cfg.virtualHosts));
+}
diff --git a/nixos/modules/services/web-apps/matomo.nix b/nixos/modules/services/web-apps/matomo.nix
index ed38eb9ce1e..42affb06b51 100644
--- a/nixos/modules/services/web-apps/matomo.nix
+++ b/nixos/modules/services/web-apps/matomo.nix
@@ -241,6 +241,6 @@ in {
meta = {
doc = ./matomo-doc.xml;
- maintainers = with stdenv.lib.maintainers; [ florianjacob ];
+ maintainers = with lib.maintainers; [ florianjacob ];
};
}
diff --git a/nixos/modules/services/web-apps/nexus.nix b/nixos/modules/services/web-apps/nexus.nix
index 30876889cf2..050f8757fa5 100644
--- a/nixos/modules/services/web-apps/nexus.nix
+++ b/nixos/modules/services/web-apps/nexus.nix
@@ -130,5 +130,5 @@ in
};
};
- meta.maintainers = with stdenv.lib.maintainers; [ ironpinguin ];
+ meta.maintainers = with lib.maintainers; [ ironpinguin ];
}
diff --git a/nixos/modules/services/web-servers/apache-httpd/default.nix b/nixos/modules/services/web-servers/apache-httpd/default.nix
index b71ff0531cc..eb8ee9b5cf4 100644
--- a/nixos/modules/services/web-servers/apache-httpd/default.nix
+++ b/nixos/modules/services/web-servers/apache-httpd/default.nix
@@ -656,7 +656,7 @@ in
message = "SSL is enabled for httpd, but sslServerCert and/or sslServerKey haven't been specified."; }
];
- warnings = map (cfg: ''apache-httpd's port option is deprecated. Use listen = [{/*ip = "*"; */ port = ${toString cfg.port}";}]; instead'' ) (lib.filter (cfg: cfg.port != 0) allHosts);
+ warnings = map (cfg: ''apache-httpd's port option is deprecated. Use listen = [{/*ip = "*"; */ port = ${toString cfg.port};}]; instead'' ) (lib.filter (cfg: cfg.port != 0) allHosts);
users.users = optionalAttrs (mainCfg.user == "wwwrun") (singleton
{ name = "wwwrun";
diff --git a/nixos/modules/services/x11/desktop-managers/xfce.nix b/nixos/modules/services/x11/desktop-managers/xfce.nix
index 7dcc600d266..ae155470419 100644
--- a/nixos/modules/services/x11/desktop-managers/xfce.nix
+++ b/nixos/modules/services/x11/desktop-managers/xfce.nix
@@ -43,12 +43,6 @@ in
default = true;
description = "Enable the XFWM (default) window manager.";
};
-
- screenLock = mkOption {
- type = types.enum [ "xscreensaver" "xlockmore" "slock" ];
- default = "xlockmore";
- description = "Application used by XFCE to lock the screen.";
- };
};
};
@@ -92,7 +86,7 @@ in
thunar-volman # TODO: drop
] ++ (if config.hardware.pulseaudio.enable
then [ xfce4-mixer-pulse xfce4-volumed-pulse ]
- else [ xfce4-mixer xfce4-volumed ])
+ else [ xfce4-mixer xfce4-volumed ])
# TODO: NetworkManager doesn't belong here
++ optionals config.networking.networkmanager.enable [ networkmanagerapplet ]
++ optionals config.powerManagement.enable [ xfce4-power-manager ]
diff --git a/nixos/modules/services/x11/hardware/libinput.nix b/nixos/modules/services/x11/hardware/libinput.nix
index d0a87f183b6..072004d5dd9 100644
--- a/nixos/modules/services/x11/hardware/libinput.nix
+++ b/nixos/modules/services/x11/hardware/libinput.nix
@@ -116,7 +116,7 @@ in {
};
scrollMethod = mkOption {
- type = types.enum [ "twofinger" "edge" "none" ];
+ type = types.enum [ "twofinger" "edge" "button" "none" ];
default = "twofinger";
example = "edge";
description =
diff --git a/nixos/modules/tasks/network-interfaces.nix b/nixos/modules/tasks/network-interfaces.nix
index a3534e10bb1..7053aa57f80 100644
--- a/nixos/modules/tasks/network-interfaces.nix
+++ b/nixos/modules/tasks/network-interfaces.nix
@@ -1053,7 +1053,7 @@ in
};
} // (listToAttrs (flip map interfaces (i:
let
- deviceDependency = if config.boot.isContainer
+ deviceDependency = if (config.boot.isContainer || i.name == "lo")
then []
else [ (subsystemDevice i.name) ];
in
diff --git a/nixos/modules/virtualisation/virtualbox-image.nix b/nixos/modules/virtualisation/virtualbox-image.nix
index 64f145f77ca..475852d1546 100644
--- a/nixos/modules/virtualisation/virtualbox-image.nix
+++ b/nixos/modules/virtualisation/virtualbox-image.nix
@@ -17,12 +17,40 @@ in {
The size of the VirtualBox base image in MiB.
'';
};
+ memorySize = mkOption {
+ type = types.int;
+ default = 1536;
+ description = ''
+ The amount of RAM the VirtualBox appliance can use in MiB.
+ '';
+ };
+ vmDerivationName = mkOption {
+ type = types.str;
+ default = "nixos-ova-${config.system.nixos.label}-${pkgs.stdenv.system}";
+ description = ''
+ The name of the derivation for the VirtualBox appliance.
+ '';
+ };
+ vmName = mkOption {
+ type = types.str;
+ default = "NixOS ${config.system.nixos.label} (${pkgs.stdenv.system})";
+ description = ''
+ The name of the VirtualBox appliance.
+ '';
+ };
+ vmFileName = mkOption {
+ type = types.str;
+ default = "nixos-${config.system.nixos.label}-${pkgs.stdenv.system}.ova";
+ description = ''
+ The file name of the VirtualBox appliance.
+ '';
+ };
};
};
config = {
system.build.virtualBoxOVA = import ../../lib/make-disk-image.nix {
- name = "nixos-ova-${config.system.nixos.label}-${pkgs.stdenv.system}";
+ name = cfg.vmDerivationName;
inherit pkgs lib config;
partitionTableType = "legacy";
@@ -37,11 +65,11 @@ in {
VBoxManage internalcommands createrawvmdk -filename disk.vmdk -rawdisk $diskImage
echo "creating VirtualBox VM..."
- vmName="NixOS ${config.system.nixos.label} (${pkgs.stdenv.system})"
+ vmName="${cfg.vmName}";
VBoxManage createvm --name "$vmName" --register \
--ostype ${if pkgs.stdenv.system == "x86_64-linux" then "Linux26_64" else "Linux26"}
VBoxManage modifyvm "$vmName" \
- --memory 1536 --acpi on --vram 32 \
+ --memory ${toString cfg.memorySize} --acpi on --vram 32 \
${optionalString (pkgs.stdenv.system == "i686-linux") "--pae on"} \
--nictype1 virtio --nic1 nat \
--audiocontroller ac97 --audio alsa \
@@ -53,7 +81,7 @@ in {
echo "exporting VirtualBox VM..."
mkdir -p $out
- fn="$out/nixos-${config.system.nixos.label}-${pkgs.stdenv.system}.ova"
+ fn="$out/${cfg.vmFileName}"
VBoxManage export "$vmName" --output "$fn"
rm -v $diskImage
diff --git a/nixos/release.nix b/nixos/release.nix
index 67820149437..f11f372335a 100644
--- a/nixos/release.nix
+++ b/nixos/release.nix
@@ -341,6 +341,7 @@ in rec {
tests.mesos = callTest tests/mesos.nix {};
tests.misc = callTest tests/misc.nix {};
tests.mongodb = callTest tests/mongodb.nix {};
+ tests.mpd = callTest tests/mpd.nix {};
tests.mumble = callTest tests/mumble.nix {};
tests.munin = callTest tests/munin.nix {};
tests.mutableUsers = callTest tests/mutable-users.nix {};
diff --git a/nixos/tests/acme.nix b/nixos/tests/acme.nix
index 21b0fedcfef..c5898db6b32 100644
--- a/nixos/tests/acme.nix
+++ b/nixos/tests/acme.nix
@@ -29,7 +29,7 @@ in import ./make-test.nix {
name = "acme";
nodes = {
- letsencrypt = ./common/letsencrypt.nix;
+ letsencrypt = ./common/letsencrypt;
webserver = { config, pkgs, ... }: {
imports = [ commonConfig ];
diff --git a/nixos/tests/common/letsencrypt.nix b/nixos/tests/common/letsencrypt/default.nix
similarity index 89%
rename from nixos/tests/common/letsencrypt.nix
rename to nixos/tests/common/letsencrypt/default.nix
index 2c86fe8d68b..4b841a03cc4 100644
--- a/nixos/tests/common/letsencrypt.nix
+++ b/nixos/tests/common/letsencrypt/default.nix
@@ -17,7 +17,7 @@
# A configuration example of a full node setup using this would be this:
#
# {
-# letsencrypt = import ./common/letsencrypt.nix;
+# letsencrypt = import ./common/letsencrypt;
#
# example = { nodes, ... }: {
# networking.nameservers = [
@@ -30,14 +30,14 @@
# }
#
# By default, this module runs a local resolver, generated using resolver.nix
-# from the same directory to automatically discover all zones in the network.
+# from the parent directory to automatically discover all zones in the network.
#
# If you do not want this and want to use your own resolver, you can just
# override networking.nameservers like this:
#
# {
# letsencrypt = { nodes, ... }: {
-# imports = [ ./common/letsencrypt.nix ];
+# imports = [ ./common/letsencrypt ];
# networking.nameservers = [
# nodes.myresolver.config.networking.primaryIPAddress
# ];
@@ -164,8 +164,8 @@ let
-e 's,exec \./bin/,,' \
test/startservers.py
- cat "${snakeOilCa}/ca.key" > test/test-ca.key
- cat "${snakeOilCa}/ca.pem" > test/test-ca.pem
+ cat ${lib.escapeShellArg snakeOilCerts.ca.key} > test/test-ca.key
+ cat ${lib.escapeShellArg snakeOilCerts.ca.cert} > test/test-ca.pem
'';
# Until vendored pkcs11 is go 1.9 compatible
@@ -173,6 +173,21 @@ let
rm -r go/src/github.com/letsencrypt/boulder/vendor/github.com/miekg/pkcs11
'';
+ # XXX: Temporarily brought back putting the source code in the output,
+ # since e95f17e2720e67e2eabd59d7754c814d3e27a0b2 was removing that from
+ # buildGoPackage.
+ preInstall = ''
+ mkdir -p $out
+ pushd "$NIX_BUILD_TOP/go"
+ while read f; do
+ echo "$f" | grep -q '^./\(src\|pkg/[^/]*\)/${goPackagePath}' \
+ || continue
+ mkdir -p "$(dirname "$out/share/go/$f")"
+ cp "$NIX_BUILD_TOP/go/$f" "$out/share/go/$f"
+ done < <(find . -type f)
+ popd
+ '';
+
extraSrcs = map mkGoDep [
{ goPackagePath = "github.com/miekg/pkcs11";
rev = "6dbd569b952ec150d1425722dbbe80f2c6193f83";
@@ -191,53 +206,15 @@ let
1:/var/lib/softhsm/slot1.db
'';
- snakeOilCa = pkgs.runCommand "snakeoil-ca" {
- buildInputs = [ pkgs.openssl ];
- allowSubstitutes = false;
- } ''
- mkdir "$out"
- openssl req -newkey rsa:4096 -x509 -sha256 -days 36500 \
- -subj '/CN=Snakeoil CA' -nodes \
- -out "$out/ca.pem" -keyout "$out/ca.key"
- '';
+ snakeOilCerts = import ./snakeoil-certs.nix;
- createAndSignCert = fqdn: let
- snakeoilCertConf = pkgs.writeText "snakeoil.cnf" ''
- [req]
- default_bits = 4096
- prompt = no
- default_md = sha256
- req_extensions = req_ext
- distinguished_name = dn
- [dn]
- CN = ${fqdn}
- [req_ext]
- subjectAltName = DNS:${fqdn}
- '';
- in pkgs.runCommand "snakeoil-certs-${fqdn}" {
- buildInputs = [ pkgs.openssl ];
- allowSubstitutes = false;
- } ''
- mkdir "$out"
- openssl genrsa -out "$out/snakeoil.key" 4096
- openssl req -new -key "$out/snakeoil.key" \
- -config ${lib.escapeShellArg snakeoilCertConf} \
- -out snakeoil.csr
- openssl x509 -req -in snakeoil.csr -sha256 -set_serial 666 \
- -CA "${snakeOilCa}/ca.pem" -CAkey "${snakeOilCa}/ca.key" \
- -extfile ${lib.escapeShellArg snakeoilCertConf} \
- -out "$out/snakeoil.pem" -days 36500
- '';
-
- wfeCerts = createAndSignCert wfeDomain;
wfeDomain = "acme-v01.api.letsencrypt.org";
- wfeCertFile = "${wfeCerts}/snakeoil.pem";
- wfeKeyFile = "${wfeCerts}/snakeoil.key";
+ wfeCertFile = snakeOilCerts.${wfeDomain}.cert;
+ wfeKeyFile = snakeOilCerts.${wfeDomain}.key;
- siteCerts = createAndSignCert siteDomain;
siteDomain = "letsencrypt.org";
- siteCertFile = "${siteCerts}/snakeoil.pem";
- siteKeyFile = "${siteCerts}/snakeoil.key";
+ siteCertFile = snakeOilCerts.${siteDomain}.cert;
+ siteKeyFile = snakeOilCerts.${siteDomain}.key;
# Retrieved via:
# curl -s -I https://acme-v01.api.letsencrypt.org/terms \
@@ -350,7 +327,7 @@ let
}) components;
in {
- imports = [ ./resolver.nix ];
+ imports = [ ../resolver.nix ];
options.test-support.letsencrypt.caCert = lib.mkOption {
type = lib.types.path;
@@ -366,7 +343,7 @@ in {
resolver.enable = let
isLocalResolver = config.networking.nameservers == [ "127.0.0.1" ];
in lib.mkOverride 900 isLocalResolver;
- letsencrypt.caCert = "${snakeOilCa}/ca.pem";
+ letsencrypt.caCert = snakeOilCerts.ca.cert;
};
# This has priority 140, because modules/testing/test-instrumentation.nix
diff --git a/nixos/tests/common/letsencrypt/mkcerts.nix b/nixos/tests/common/letsencrypt/mkcerts.nix
new file mode 100644
index 00000000000..3b4a589e414
--- /dev/null
+++ b/nixos/tests/common/letsencrypt/mkcerts.nix
@@ -0,0 +1,69 @@
+{ pkgs ? import {}
+, lib ? pkgs.lib
+
+, domains ? [ "acme-v01.api.letsencrypt.org" "letsencrypt.org" ]
+}:
+
+pkgs.runCommand "letsencrypt-snakeoil-ca" {
+ nativeBuildInputs = [ pkgs.openssl ];
+} ''
+ addpem() {
+ local file="$1"; shift
+ local storeFileName="$(IFS=.; echo "$*")"
+
+ echo -n " " >> "$out"
+
+ # Every following argument is an attribute, so let's recurse and check
+ # every attribute whether it must be quoted and write it into $out.
+ while [ -n "$1" ]; do
+ if expr match "$1" '^[a-zA-Z][a-zA-Z0-9]*$' > /dev/null; then
+ echo -n "$1" >> "$out"
+ else
+ echo -n '"' >> "$out"
+ echo -n "$1" | sed -e 's/["$]/\\&/g' >> "$out"
+ echo -n '"' >> "$out"
+ fi
+ shift
+ [ -z "$1" ] || echo -n . >> "$out"
+ done
+
+ echo " = builtins.toFile \"$storeFileName\" '''" >> "$out"
+ sed -e 's/^/ /' "$file" >> "$out"
+
+ echo " ''';" >> "$out"
+ }
+
+ echo '# Generated via mkcert.sh in the same directory.' > "$out"
+ echo '{' >> "$out"
+
+ openssl req -newkey rsa:4096 -x509 -sha256 -days 36500 \
+ -subj '/CN=Snakeoil CA' -nodes -out ca.pem -keyout ca.key
+
+ addpem ca.key ca key
+ addpem ca.pem ca cert
+
+ ${lib.concatMapStrings (fqdn: let
+ opensslConfig = pkgs.writeText "snakeoil.cnf" ''
+ [req]
+ default_bits = 4096
+ prompt = no
+ default_md = sha256
+ req_extensions = req_ext
+ distinguished_name = dn
+ [dn]
+ CN = ${fqdn}
+ [req_ext]
+ subjectAltName = DNS:${fqdn}
+ '';
+ in ''
+ export OPENSSL_CONF=${lib.escapeShellArg opensslConfig}
+ openssl genrsa -out snakeoil.key 4096
+ openssl req -new -key snakeoil.key -out snakeoil.csr
+ openssl x509 -req -in snakeoil.csr -sha256 -set_serial 666 \
+ -CA ca.pem -CAkey ca.key -out snakeoil.pem -days 36500
+ addpem snakeoil.key ${lib.escapeShellArg fqdn} key
+ addpem snakeoil.pem ${lib.escapeShellArg fqdn} cert
+ '') domains}
+
+ echo '}' >> "$out"
+''
diff --git a/nixos/tests/common/letsencrypt/mkcerts.sh b/nixos/tests/common/letsencrypt/mkcerts.sh
new file mode 100755
index 00000000000..cc7f8ca650d
--- /dev/null
+++ b/nixos/tests/common/letsencrypt/mkcerts.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -p nix bash -i bash
+set -e
+cd "$(dirname "$0")"
+storepath="$(nix-build --no-out-link mkcerts.nix)"
+cat "$storepath" > snakeoil-certs.nix
diff --git a/nixos/tests/common/letsencrypt/snakeoil-certs.nix b/nixos/tests/common/letsencrypt/snakeoil-certs.nix
new file mode 100644
index 00000000000..c3d29ab8f16
--- /dev/null
+++ b/nixos/tests/common/letsencrypt/snakeoil-certs.nix
@@ -0,0 +1,253 @@
+# Generated via mkcert.sh in the same directory.
+{
+ ca.key = builtins.toFile "ca.key" ''
+ -----BEGIN PRIVATE KEY-----
+ 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
+ Gvfq54FbDuB10XP8JdLrsy9Z6GEsmoE=
+ -----END PRIVATE KEY-----
+ '';
+ ca.cert = builtins.toFile "ca.cert" ''
+ -----BEGIN CERTIFICATE-----
+ MIIFATCCAumgAwIBAgIJANydi4uFZr0LMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
+ BAMMC1NuYWtlb2lsIENBMCAXDTE4MDcxMjAwMjIxNloYDzIxMTgwNjE4MDAyMjE2
+ WjAWMRQwEgYDVQQDDAtTbmFrZW9pbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
+ ADCCAgoCggIBAN91XEL/gfCG7MP2iv0IMO7dMFATmWKskjkpiZ8xm1+B3MSOA7OZ
+ H0BVKSfatB4KrMzmb5gLM877bLvQV2Tu8M5GLU52Fh9RAhbr9NnbvESPHi3zaP2L
+ vTnJSpMlkqMxsPzfSB5ciYnpUaM2/9aKxMebAGylYp59hA83rxm9g0KfR3mtgmD2
+ 5E5k8kdIjQxiP2IRFYg837GFmhLE3vggsnSsQ5B/HYYcOFOv329lgAWpsAh+Hfl9
+ i6VFZqtRJ6Qj6sPFrzcUPyr1wyA4/zgqQt6nZ1FddNtRYSsZQ6kc/nkz0zvCzRFU
+ 12X09RJsOAKGXvJiUcJ17fbrWr/Manl0xX+3+Ndc1SBG6u9dziBQoqNLhJ9++DRd
+ Wc+zewyVngk2bJwr2SWAhJWZtMpVyNFEm/wG9rY1BWwn1MivJXRAST3gO5yCwLct
+ uFB9B2adZVwR3PCtkc2mT1rPmafDjZG69lb0vX1PvGkit0tIdo6KzhUSq5mORYiF
+ 8jPQNUx5e1gRCbCoUbbdbDS61ymYJbgU++nJizkYA+YZZ+uUzGwsP/t616i3cCF4
+ L7npkGhUGcjwUW8hfapyL6B9UO4KO8OZvJL/Q2/Esaq9ILUZQ+ZY/dNHkVvUfxGn
+ 7f3MkdGYf6phaWFy/qnsWVjb/p31GTDxYpFNIIHvJ5R000+I+imTo3g3AgMBAAGj
+ UDBOMB0GA1UdDgQWBBQ3vPWzjLmu5krbSpfhBAht9KL3czAfBgNVHSMEGDAWgBQ3
+ vPWzjLmu5krbSpfhBAht9KL3czAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUA
+ A4ICAQDF9HyC1ZFN3Ob+JA9Dj5+Rcobi7JIA5F8uW3Q92LfPoVaUGEkBrwJSiTFX
+ 47zvP/ySBJIpZ9rzHMbJ+1L+eJgczF1uQ91inthCKo1THTPo5TgBrpJj0YAIunsj
+ 9eH1tBnfWFYdVIDZoTSiwPtgIvglpyuK/eJXEe+FRzubhtdc9w1Hlzox1sd0TQuy
+ Pl9KFHg7BlFZfCPig1mkB8pfwjBDgVhv5DKJ9cJXh3R5zSoiyuS2b+qYSvw8YTHq
+ 0WNKWUthb7BVAYE3OmcbOHgUAUjtJ6EIGIB9z/SoLe90CofXLXFR5dppuVLKCMBA
+ kgL4luBIu7t8mcnN2yzobvcGHy8RVY6F5abCCy6gackLzjOzvH1SYOxP8yN74aKB
+ ANgcqdWspb8JYoU8lEbA8dhBVrsgBf7XeJlrZvMdcUENlJ2PI0JWr9WvlRAM9rYY
+ EY1alJqBCp6530Ggd6/f0V64cEqptejUdmN9L0zboxKjQf4LjpUNraGvg8tw/xkY
+ 4dT1U2HlVnhOyBVkx/tE6zIK/RU16oMqwpjCdfbK/TuWCNc/emJz5PMlp81zm83+
+ dExpWwuV4rt6OQbZ/GSatNLJXOw+pkLjaEhnHgrsgI+HqAUXg3ByKol+1e76wN51
+ k1ZKpB6mk4kejySGPYBHiJwED0IyXu9gUfalSczXFO4ySAvhCg==
+ -----END CERTIFICATE-----
+ '';
+ "acme-v01.api.letsencrypt.org".key = builtins.toFile "acme-v01.api.letsencrypt.org.key" ''
+ -----BEGIN RSA PRIVATE KEY-----
+ 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
+ -----END RSA PRIVATE KEY-----
+ '';
+ "acme-v01.api.letsencrypt.org".cert = builtins.toFile "acme-v01.api.letsencrypt.org.cert" ''
+ -----BEGIN CERTIFICATE-----
+ MIIEtDCCApwCAgKaMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNVBAMMC1NuYWtlb2ls
+ IENBMCAXDTE4MDcxMjAwMjIxN1oYDzIxMTgwNjE4MDAyMjE3WjAnMSUwIwYDVQQD
+ DBxhY21lLXYwMS5hcGkubGV0c2VuY3J5cHQub3JnMIICIjANBgkqhkiG9w0BAQEF
+ AAOCAg8AMIICCgKCAgEAvG+sL4q0VkgSClBTn4NkPiUrtXx5oLyZ+CCM1jrQx/xo
+ tUt5X2S4/7vMnAK/yRLsR7R2PhXO8CZPqJ7B6OfAgaDTgvipJkZYPZQSMP3KOinM
+ 3WJLssqKh7/HOxZIf0iyUXewrnX5eTAo/CLsUnhBjBD7E99nmQz/leLWSl82sSYD
+ kO3nUk3/1qJZA8iddb4uH0IEQWcNKev3WoQQzwiVrXBiftlRQOJy5JJXm5m8229M
+ CpMA1AUWmpdu6sl3/gFFdsDhUFq/a7LFrVyaUCMRIHg9szAB7ZFkixr9umQs8jKw
+ uo983JHB11h2SirwgfIzHHmyhaWhCt22ucTwEXGhq63LtrzZvLsfP8Ql5S+AuqGT
+ H0v8meuc784leAjulBZjkpuIFwDnVv9+YeUEbqJeo1hSHrILddora3nkH4E2dJWm
+ LpqpiPr++GRi+BNgYKW/BQLTJ7C6v+vUs+kdPgYJH5z7oP6f0YZkT0Wkubp/UEz7
+ UV2dfjz57d77DYx5rFWGYzJriWR/xltgL1zDpjwjwG1FDpRqwlyYbBFpjQhxI+X0
+ aT98m6fCzBDQHDb/+JgvsjTHh6OZatahFAwzFIEfrceDv1BG8sBWIaZGhLzYiWQx
+ afl8oXbWv1T6I1jpsTlCdCSkWzaJb4ZjxI9Ga1ynVu8F16+GR2a71wKWu7UbZQsC
+ AwEAATANBgkqhkiG9w0BAQsFAAOCAgEAzeGlFMz1Bo+bbpZDQ60HLdw7qDp3SPJi
+ x5LYG860yzbh9ghvyc59MIm5E6vB140LRJAs+Xo6VdVSTC4jUA2kI9k1BQsbZKds
+ XT0RqA7HkqcLS3t3JWFkkKbCshMGZTSZ//hpbaUG1qEAfUfmZw1lAxqSa0kqavbP
+ awf7k8qHbqcj7WORCdH7fjKAjntEQwIpl1GEkAdCSghOJz2/o9aWmiGZt27OM/sG
+ MLSrcmL3QBElCjOxg14P8rnsmZ+VEp6MO93otoJ4dJL7fN7vTIh5ThbS384at/4l
+ 4KK/y7XctUzAtWzhnodjk/NSgrrGX2kseOGOWEM1sZc9xtinHH2tpOMqtLVOkgHD
+ Lul+TArqgqeoOdEM/9OL64kgOrO/JzxBq+egLUi4wgAul2wmtecKZK1dkwYZHeqW
+ 74i55yeBp+TTomnPr0ZBns6xKFYldJVzC34OB+2YVDxe8y9XtWtuQOxFw0LQHhNb
+ zy5aBverWzZFwiIIjJoVHTQq848uKBJec0YILfMinS1Wjif4xqW/IMfi+GFS0oka
+ sKCGNE/8ur9u/Jm6cbto3f2dtV8/vkhiITQgwzM2jalyuVJ9jyPxG7EvbTvZORgw
+ pRvBRTd4/eE7I1L+UDe6x8EjR/MrqfF9FWVGOZo4vPTyNbrSWYBh6s9kYy56ds1l
+ IRxst1BXEfI=
+ -----END CERTIFICATE-----
+ '';
+ "letsencrypt.org".key = builtins.toFile "letsencrypt.org.key" ''
+ -----BEGIN RSA PRIVATE KEY-----
+ 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
+ -----END RSA PRIVATE KEY-----
+ '';
+ "letsencrypt.org".cert = builtins.toFile "letsencrypt.org.cert" ''
+ -----BEGIN CERTIFICATE-----
+ MIIEpzCCAo8CAgKaMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNVBAMMC1NuYWtlb2ls
+ IENBMCAXDTE4MDcxMjAwMjIxOVoYDzIxMTgwNjE4MDAyMjE5WjAaMRgwFgYDVQQD
+ DA9sZXRzZW5jcnlwdC5vcmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
+ AQDA++GXB6aA+Lr3X2xIPs/PqXoJF9TUb98NzQC+ww3+dOaIY0Omqf15/UID5G0u
+ 0649zUsvISi9x+7vn9X7opKA7iTX0TYKsUIXCMQ5YMYXgOByVPfvnVYaYUmDM8R9
+ l+Fs6uZB9Bq7zorEC01lWn0XFwpu4vJD+w03F80wH7sgdtWHC/NVyd0elhkQ/qR2
+ fC80s/bZui5fmrdq/FZK2WfTW5nQF9SbhfDFpQ0hTu3QO/noUr0L2Fb0Blp7R2jQ
+ EkFZEXvFLAt4Mmqf25nP6xfRf+0hppJBIG5nJKPQd7lkrN1Q7S2nHbFNLYGuXdjY
+ E4lo4T3we5ta90qiyUu3hfatWszEZrzpKYXNzIMvVFKjBw/+u7LLnnmXul6kvmzh
+ yYyBEEFePm1eGpRNU6flY74kKUuT6u2+0BPiuiAmYyoQqYzDa3ss3LVb2uL/fvxA
+ b+LcAZosgv/saw9u5E7nVJ22LhAxV7bM0XN7vabM2aPVJeiRbLv5m+NQynnmgSNF
+ GxM9Rl004QclbLo6zbOe6ovtmkgcLEEbwUqeQJWJdEmoADxvNwSFH6ktqYsg4eW/
+ iR3MnqmEeRK8rryq9tFF5SY6MmBK6lUEj2OEr58drL9RZHjN8lB5330fxk6iJeWs
+ sJWz5U8PKdRQqvMXWdjKiU3OL81Lh7gBud9aDILkkpGmNQIDAQABMA0GCSqGSIb3
+ DQEBCwUAA4ICAQAkx3jcryukAuYP7PQxMy3LElOl65ZFVqxDtTDlr7DvAkWJzVCb
+ g08L6Tu+K0rKh2RbG/PqS0+8/jBgc4IwSOPfDDAX+sinfj0kwXG34WMzB0G3fQzU
+ 2BMplJDOaBcNqHG8pLP1BG+9HAtR/RHe9p2Jw8LG2qmZs6uemPT/nCTNoyIL4oxh
+ UncjETV4ayCHDKD1XA7/icgddYsnfLQHWuIMuCrmQCHo0uQAd7qVHfUWZ+gcsZx0
+ jTNCcaI8OTS2S65Bjaq2HaM7GMcUYNUD2vSyNQeQbha4ZeyZ9bPyFzznPMmrPXQe
+ MJdkbJ009RQIG9As79En4m+l+/6zrdx4DNdROqaL6YNiSebWMnuFHpMW/rCnhrT/
+ HYadijHOiJJGj9tWSdC4XJs7fvZW3crMPUYxpOvl01xW2ZlgaekILi1FAjSMQVoV
+ NhWstdGCKJdthJqLL5MtNdfgihKcmgkJqKFXTkPv7sgAQCopu6X+S+srCgn856Lv
+ 21haRWZa8Ml+E0L/ticT8Fd8Luysc6K9TJ4mT8ENC5ywvgDlEkwBD3yvINXm5lg1
+ xOIxv/Ye5gFk1knuM7OzpUFBrXUHdVVxflCUqNAhFPbcXwjgEQ+A+S5B0vI6Ohue
+ ZnR/wuiou6Y+Yzh8XfqL/3H18mGDdjyMXI1B6l4Judk000UVyr46cnI7mw==
+ -----END CERTIFICATE-----
+ '';
+}
diff --git a/nixos/tests/common/resolver.nix b/nixos/tests/common/resolver.nix
index a1901c5c816..6be8d1d18e6 100644
--- a/nixos/tests/common/resolver.nix
+++ b/nixos/tests/common/resolver.nix
@@ -18,7 +18,7 @@
defining this option needs to be explicitly imported.
The reason this option exists is for the
- nixos/tests/common/letsencrypt.nix module, which
+ nixos/tests/common/letsencrypt module, which
needs that option to disable the resolver once the user has set its own
resolver.
'';
diff --git a/nixos/tests/containers-imperative.nix b/nixos/tests/containers-imperative.nix
index b89e08f82ac..42bff6a9a3f 100644
--- a/nixos/tests/containers-imperative.nix
+++ b/nixos/tests/containers-imperative.nix
@@ -10,7 +10,7 @@ import ./make-test.nix ({ pkgs, ...} : {
{ config, pkgs, lib, ... }:
{ imports = [ ../modules/installer/cd-dvd/channel.nix ];
virtualisation.writableStore = true;
- virtualisation.memorySize = 768;
+ virtualisation.memorySize = 1024;
# Make sure we always have all the required dependencies for creating a
# container available within the VM, because we don't have network access.
virtualisation.pathsInNixDB = let
diff --git a/nixos/tests/mpd.nix b/nixos/tests/mpd.nix
new file mode 100644
index 00000000000..2950a8d809d
--- /dev/null
+++ b/nixos/tests/mpd.nix
@@ -0,0 +1,119 @@
+import ./make-test.nix ({ pkgs, ... }:
+ let
+ track = pkgs.fetchurl {
+ # Sourced from http://freemusicarchive.org/music/Blue_Wave_Theory/Surf_Music_Month_Challenge/Skyhawk_Beach_fade_in
+ # License: http://creativecommons.org/licenses/by-sa/4.0/
+
+ name = "Blue_Wave_Theory-Skyhawk_Beach.mp3";
+ url = https://freemusicarchive.org/file/music/ccCommunity/Blue_Wave_Theory/Surf_Music_Month_Challenge/Blue_Wave_Theory_-_04_-_Skyhawk_Beach.mp3;
+ sha256 = "0xw417bxkx4gqqy139bb21yldi37xx8xjfxrwaqa0gyw19dl6mgp";
+ };
+
+ defaultCfg = rec {
+ user = "mpd";
+ group = "mpd";
+ dataDir = "/var/lib/mpd";
+ musicDirectory = "${dataDir}/music";
+ };
+
+ defaultMpdCfg = with defaultCfg; {
+ inherit dataDir musicDirectory user group;
+ enable = true;
+ };
+
+ musicService = { user, group, musicDirectory }: {
+ description = "Sets up the music file(s) for MPD to use.";
+ requires = [ "mpd.service" ];
+ after = [ "mpd.service" ];
+ wantedBy = [ "default.target" ];
+ script = ''
+ mkdir -p ${musicDirectory} && chown -R ${user}:${group} ${musicDirectory}
+ cp ${track} ${musicDirectory}
+ chown ${user}:${group} ${musicDirectory}/$(basename ${track})
+ '';
+ };
+
+ mkServer = { mpd, musicService, }:
+ { boot.kernelModules = [ "snd-dummy" ];
+ sound.enable = true;
+ services.mpd = mpd;
+ systemd.services.musicService = musicService;
+ };
+ in {
+ name = "mpd";
+ meta = with pkgs.stdenv.lib.maintainers; {
+ maintainers = [ emmanuelrosa ];
+ };
+
+ nodes =
+ { client =
+ { config, pkgs, ... }: { };
+
+ serverALSA =
+ { config, pkgs, ... }: (mkServer {
+ mpd = defaultMpdCfg // {
+ network.listenAddress = "any";
+ extraConfig = ''
+ audio_output {
+ type "alsa"
+ name "ALSA"
+ mixer_type "null"
+ }
+ '';
+ };
+
+ musicService = with defaultMpdCfg; musicService { inherit user group musicDirectory; };
+ }) // { networking.firewall.allowedTCPPorts = [ 6600 ]; };
+
+ serverPulseAudio =
+ { config, pkgs, ... }: (mkServer {
+ mpd = defaultMpdCfg // {
+ extraConfig = ''
+ audio_output {
+ type "pulse"
+ name "The Pulse"
+ }
+ '';
+ };
+
+ musicService = with defaultCfg; musicService { inherit user group musicDirectory; };
+ }) // { hardware.pulseaudio.enable = true; };
+ };
+
+ testScript = ''
+ my $mpc = "${pkgs.mpc_cli}/bin/mpc --wait";
+
+ # Connects to the given server and attempts to play a tune.
+ sub play_some_music {
+ my $server = $_[0];
+
+ $server->waitForUnit("mpd.service");
+ $server->succeed("$mpc update");
+ my @tracks = $server->execute("$mpc ls");
+
+ for my $track (split(/\n/, $tracks[1])) {
+ $server->succeed("$mpc add $track");
+ };
+
+ my @added_tracks = $server->execute("$mpc listall");
+ (length $added_tracks[1]) > 0 or die "Failed to add audio tracks to the playlist.";
+
+ $server->succeed("$mpc play");
+
+ my @status = $server->execute("$mpc status");
+ my @output = split(/\n/, $status[1]);
+ $output[1] =~ /.*playing.*/ or die "Audio track is not playing, as expected.";
+
+ $server->succeed("$mpc stop");
+ };
+
+ play_some_music($serverALSA);
+ play_some_music($serverPulseAudio);
+
+ $client->succeed("$mpc -h serverALSA status");
+
+ # The PulseAudio-based server is configured not to accept external client connections
+ # to perform the following test:
+ $client->fail("$mpc -h serverPulseAudio status");
+ '';
+})
diff --git a/nixos/tests/taskserver.nix b/nixos/tests/taskserver.nix
index 75be97a507d..ab9b589f859 100644
--- a/nixos/tests/taskserver.nix
+++ b/nixos/tests/taskserver.nix
@@ -18,7 +18,7 @@ import ./make-test.nix ({ pkgs, ... }: let
crlTemplate = pkgs.writeText "snakeoil-crl.template" ''
expiration_days = -1
'';
- userCertTemplace = pkgs.writeText "snakoil-user-cert.template" ''
+ userCertTemplate = pkgs.writeText "snakeoil-user-cert.template" ''
organization = snakeoil
cn = server
expiration_days = -1
@@ -49,7 +49,7 @@ import ./make-test.nix ({ pkgs, ... }: let
certtool -p --bits 4096 | sed -n \
-e '/^----* *BEGIN/,/^----* *END/p' > "$out/alice.key"
- certtool -c --template "$userCertTemplace" \
+ certtool -c --template "$userCertTemplate" \
--load-privkey "$out/alice.key" \
--load-ca-privkey ca.key \
--load-ca-certificate "$cacert" \
@@ -82,8 +82,9 @@ in {
# This is to avoid assigning a different network address to the new
# generation.
networking = lib.mapAttrs (lib.const lib.mkForce) {
+ interfaces.eth1.ipv4 = nodes.server.config.networking.interfaces.eth1.ipv4;
inherit (nodes.server.config.networking)
- hostName interfaces primaryIPAddress extraHosts;
+ hostName primaryIPAddress extraHosts;
};
};
diff --git a/pkgs/applications/altcoins/go-ethereum.nix b/pkgs/applications/altcoins/go-ethereum.nix
index 74d38b59fc2..79c8e0dfde8 100644
--- a/pkgs/applications/altcoins/go-ethereum.nix
+++ b/pkgs/applications/altcoins/go-ethereum.nix
@@ -12,17 +12,6 @@ buildGoPackage rec {
# Fixes Cgo related build failures (see https://github.com/NixOS/nixpkgs/issues/25959 )
hardeningDisable = [ "fortify" ];
- # Only install binaries in $out, source is not interesting and takes ~50M
- outputs = [ "out" ];
- preFixup = ''
- export bin="''${out}"
- '';
- installPhase = ''
- mkdir -p $out/bin $out
- dir="$NIX_BUILD_TOP/go/bin"
- [ -e "$dir" ] && cp -r $dir $out
- '';
-
src = fetchFromGitHub {
owner = "ethereum";
repo = "go-ethereum";
diff --git a/pkgs/applications/altcoins/parity-ui/default.nix b/pkgs/applications/altcoins/parity-ui/default.nix
index 33e72125c6b..b22302d0d39 100644
--- a/pkgs/applications/altcoins/parity-ui/default.nix
+++ b/pkgs/applications/altcoins/parity-ui/default.nix
@@ -6,11 +6,11 @@ uiEnv = pkgs.callPackage ./env.nix { };
in stdenv.mkDerivation rec {
name = "parity-ui-${version}";
- version = "0.2.5";
+ version = "0.2.8";
src = fetchurl {
url = "https://github.com/parity-js/shell/releases/download/v${version}/parity-ui_${version}_amd64.deb";
- sha256 = "1jk7ac6qqxs47hf16vhr94ix4wf51qzpm55q8h6wsx1lrgy1y3g6";
+ sha256 = "1nyarq73jdknhax68cq2i868sznghzj70kvk4ixypxnjb1q6a53a";
name = "${name}.deb";
};
diff --git a/pkgs/applications/altcoins/parity/default.nix b/pkgs/applications/altcoins/parity/default.nix
index 4ee13665d1b..a41488c48b5 100644
--- a/pkgs/applications/altcoins/parity/default.nix
+++ b/pkgs/applications/altcoins/parity/default.nix
@@ -1,6 +1,6 @@
let
- version = "1.10.8";
- sha256 = "0q6blsbxn48afqf3cmxvmdlyzvf0cpqcymsjbsk8nyx0zxzf1dpk";
+ version = "1.10.9";
+ sha256 = "1irfksx887vvvdf97q26qacn22kmyj8fgb3ghh9wv5qnzrn3564g";
cargoSha256 = "0rzhabyhprmcg0cdmibbb8zgqf6z4izsdq8m060mppkkv675x0lf";
patches = [ ./patches/vendored-sources-1.10.patch ];
in
diff --git a/pkgs/applications/altcoins/particl/particl-core.nix b/pkgs/applications/altcoins/particl/particl-core.nix
index f47b04c1dae..5be2bec6c72 100644
--- a/pkgs/applications/altcoins/particl/particl-core.nix
+++ b/pkgs/applications/altcoins/particl/particl-core.nix
@@ -19,11 +19,11 @@ with stdenv.lib;
stdenv.mkDerivation rec {
name = "particl-core-${version}";
- version = "0.16.0.5";
+ version = "0.16.1.0";
src = fetchurl {
url = "https://github.com/particl/particl-core/archive/v${version}.tar.gz";
- sha256 = "070crn6nnzrbcaj30w0qbybpm9kfd2ghnvmxp29gckgknw6n0vam";
+ sha256 = "0rfqywyrl6cgxn3ba91zsa88ph2yf9d1vn706xpyz19pfb6mjfbg";
};
nativeBuildInputs = [ pkgconfig autoreconfHook ];
diff --git a/pkgs/applications/audio/elisa/default.nix b/pkgs/applications/audio/elisa/default.nix
index bda9d3b54bb..90ea4c58ea4 100644
--- a/pkgs/applications/audio/elisa/default.nix
+++ b/pkgs/applications/audio/elisa/default.nix
@@ -7,13 +7,13 @@
mkDerivation rec {
name = "elisa-${version}";
- version = "0.1.80";
+ version = "0.2.1";
src = fetchFromGitHub {
owner = "KDE";
repo = "elisa";
rev = "v${version}";
- sha256 = "1kyvdxbsfi692zazw8vjy6mwyy0sa4r1cim8gsiv9pphfh5bpxb1";
+ sha256 = "0b3rx3gh6adlrbmgj75dicqv6qzzn4fyfxbf1nwh3zd2hi0ca89w";
};
nativeBuildInputs = [ extra-cmake-modules kdoctools wrapGAppsHook ];
diff --git a/pkgs/applications/audio/lollypop/default.nix b/pkgs/applications/audio/lollypop/default.nix
index 3b967186112..d961393f9ec 100644
--- a/pkgs/applications/audio/lollypop/default.nix
+++ b/pkgs/applications/audio/lollypop/default.nix
@@ -3,14 +3,14 @@
, python36Packages, gnome3, glib, gst_all_1 }:
stdenv.mkDerivation rec {
- version = "0.9.516";
+ version = "0.9.519";
name = "lollypop-${version}";
src = fetchgit {
url = "https://gitlab.gnome.org/World/lollypop";
rev = "refs/tags/${version}";
fetchSubmodules = true;
- sha256 = "0ln77cmcl5wi4xis9kmzg0knbykzwsd1n78rr7ff5y35m9p2zgrf";
+ sha256 = "1v4p59w4yf86djk7xv1xwbximpjm64wn42il090w7q1wy04my6fl";
};
nativeBuildInputs = with python36Packages; [
diff --git a/pkgs/applications/audio/mopidy/soundcloud.nix b/pkgs/applications/audio/mopidy/soundcloud.nix
index 0fda09fd522..8002feb0f90 100644
--- a/pkgs/applications/audio/mopidy/soundcloud.nix
+++ b/pkgs/applications/audio/mopidy/soundcloud.nix
@@ -2,13 +2,13 @@
pythonPackages.buildPythonApplication rec {
pname = "mopidy-soundcloud";
- version = "2.0.2";
+ version = "2.1.0";
src = fetchFromGitHub {
owner = "mopidy";
repo = "mopidy-soundcloud";
rev = "v${version}";
- sha256 = "13n44975n1wwcf7qg1c7drc2bavhjnr9hnq1v0n5hdgyx8ji67gi";
+ sha256 = "131qdm9i0j3ayff0js11qcmbjv50ws5s6iiqr6x5b66ymjl4scfv";
};
propagatedBuildInputs = [ mopidy ];
diff --git a/pkgs/applications/audio/muse/default.nix b/pkgs/applications/audio/muse/default.nix
new file mode 100644
index 00000000000..9687ff3106b
--- /dev/null
+++ b/pkgs/applications/audio/muse/default.nix
@@ -0,0 +1,76 @@
+{ stdenv
+, fetchFromGitHub
+, libjack2
+, qt5
+, cmake
+, libsndfile
+, libsamplerate
+, ladspaH
+, fluidsynth
+, alsaLib
+, rtaudio
+, lash
+, dssi
+, liblo
+, pkgconfig
+, gitAndTools
+}:
+
+stdenv.mkDerivation rec {
+ name = "muse-sequencer-${version}";
+ version = "3.0.2";
+
+ meta = with stdenv.lib; {
+ homepage = http://www.muse-sequencer.org;
+ description = "MIDI/Audio sequencer with recording and editing capabilities";
+ longDescription = ''
+ MusE is a MIDI/Audio sequencer with recording and editing capabilities
+ written originally by Werner Schweer now developed and maintained
+ by the MusE development team.
+
+ MusE aims to be a complete multitrack virtual studio for Linux,
+ it is published under the GNU General Public License.
+ '';
+ license = stdenv.lib.licenses.gpl2;
+ };
+
+ src =
+ fetchFromGitHub {
+ owner = "muse-sequencer";
+ repo = "muse";
+ rev = "02d9dc6abd757c3c1783fdd46dacd3c4ef2c0a6d";
+ sha256 = "0pn0mcg79z3bhjwxbss3ylypdz3gg70q5d1ij3x8yw65ryxbqf51";
+ };
+
+
+ buildInputs = [
+ libjack2
+ qt5.qtsvg
+ qt5.qttools
+ cmake
+ libsndfile
+ libsamplerate
+ ladspaH
+ fluidsynth
+ alsaLib
+ rtaudio
+ lash
+ dssi
+ liblo
+ pkgconfig
+ gitAndTools.gitFull
+ ];
+
+ sourceRoot = "source/muse3";
+
+ buildPhase = ''
+ cd ..
+ bash compile_muse.sh
+ '';
+
+ installPhase = ''
+ mkdir $out
+ cd build
+ make install
+ '';
+}
diff --git a/pkgs/applications/audio/musescore/default.nix b/pkgs/applications/audio/musescore/default.nix
index 7ed9021e3e0..a5c38a47741 100644
--- a/pkgs/applications/audio/musescore/default.nix
+++ b/pkgs/applications/audio/musescore/default.nix
@@ -6,13 +6,13 @@
stdenv.mkDerivation rec {
name = "musescore-${version}";
- version = "2.2.1";
+ version = "2.3.1";
src = fetchFromGitHub {
owner = "musescore";
repo = "MuseScore";
rev = "v${version}";
- sha256 = "00lwcsnpyiq9l9x11nm24mzf67xmhzjhwi4c3iqry6ayi9c4p4qs";
+ sha256 = "00inrw9g8g34g74bhg5gp0rr5nydhjraiyn7vpl7kaqi5yzmhawd";
};
cmakeFlags = [
diff --git a/pkgs/applications/audio/pulseeffects/default.nix b/pkgs/applications/audio/pulseeffects/default.nix
new file mode 100644
index 00000000000..a62612a6e0f
--- /dev/null
+++ b/pkgs/applications/audio/pulseeffects/default.nix
@@ -0,0 +1,90 @@
+{ stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkgconfig
+, libxml2
+, desktop-file-utils
+, wrapGAppsHook
+, gst_all_1
+, pulseaudio
+, gtk3
+, glib
+, glibmm
+, gtkmm3
+, lilv
+, lv2
+, serd
+, sord
+, sratom
+, libbs2b
+, boost
+, calf
+, zam-plugins
+, rubberband
+, mda_lv2
+}:
+
+let
+ lv2Plugins = [
+ calf # limiter, compressor exciter, bass enhancer and others
+ mda_lv2 # loudness
+ ];
+ ladspaPlugins = [
+ rubberband # pitch shifting
+ zam-plugins # maximizer
+ ];
+in stdenv.mkDerivation rec {
+ name = "pulseeffects-${version}";
+ version = "4.1.3";
+
+ src = fetchFromGitHub {
+ owner = "wwmm";
+ repo = "pulseeffects";
+ rev = "v${version}";
+ sha256 = "1f89msg8hzaf1pa9w3gaifb88dm0ca2wd81jlz3vr98hm7kxd85k";
+ };
+
+ nativeBuildInputs = [
+ meson
+ ninja
+ pkgconfig
+ libxml2
+ desktop-file-utils
+ wrapGAppsHook
+ ];
+
+ buildInputs = [
+ pulseaudio
+ glib
+ glibmm
+ gtk3
+ gtkmm3
+ gst_all_1.gstreamer
+ gst_all_1.gst-plugins-good
+ gst_all_1.gst-plugins-bad
+ lilv lv2 serd sord sratom
+ libbs2b
+ boost
+ ];
+
+ postPatch = ''
+ chmod +x meson_post_install.py
+ patchShebangs meson_post_install.py
+ '';
+
+ preFixup = ''
+ gappsWrapperArgs+=(
+ --set LV2_PATH "${stdenv.lib.makeSearchPath "lib/lv2" lv2Plugins}"
+ --set LADSPA_PATH "${stdenv.lib.makeSearchPath "lib/ladspa" ladspaPlugins}"
+ )
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Limiter, compressor, reverberation, equalizer and auto volume effects for Pulseaudio applications";
+ homepage = https://github.com/wwmm/pulseeffects;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [ jtojnar ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/pkgs/applications/audio/snd/default.nix b/pkgs/applications/audio/snd/default.nix
index 9b386ea7ac7..272d4b6592a 100644
--- a/pkgs/applications/audio/snd/default.nix
+++ b/pkgs/applications/audio/snd/default.nix
@@ -4,11 +4,11 @@
}:
stdenv.mkDerivation rec {
- name = "snd-18.4";
+ name = "snd-18.5";
src = fetchurl {
url = "mirror://sourceforge/snd/${name}.tar.gz";
- sha256 = "1asc513d0cmbq0ldzpzmfbydvlj5hwpp480qnicgkn96wplp9c7s";
+ sha256 = "1m2rw1p9xr9428p9drd3w5irsi12lz23m605lzgk9gjamq9paywy";
};
nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/applications/editors/android-studio/default.nix b/pkgs/applications/editors/android-studio/default.nix
index ed18d34e4a9..60566a0fcf8 100644
--- a/pkgs/applications/editors/android-studio/default.nix
+++ b/pkgs/applications/editors/android-studio/default.nix
@@ -13,9 +13,9 @@ let
sha256Hash = "196yaswbxh2nd83gimjxr8ggr5xkdxq7n3xlh6ax73v59pj4hryq";
};
latestVersion = {
- version = "3.3.0.1"; # "Android Studio 3.3 Canary 2"
- build = "181.4869471";
- sha256Hash = "1v2v09gd5vxh4nzbnrjfh0blpzz71i3i7lq5bkjsfl0g82r8j512";
+ version = "3.3.0.2"; # "Android Studio 3.3 Canary 3"
+ build = "181.4884283";
+ sha256Hash = "0r93yzw87cgzz60p60gknij5vaqmv1a1kyd4cr9gx8cbxw46lhwh";
};
in rec {
# Old alias
@@ -43,9 +43,9 @@ in rec {
beta = mkStudio (latestVersion // {
pname = "android-studio-preview";
#pname = "android-studio-beta"; # TODO: Rename and provide symlink
- version = "3.2.0.19"; # "Android Studio 3.2 Beta 2"
- build = "181.4860949";
- sha256Hash = "1v1h42xp2fxj8366q9l9b0shk0y1vz9kny0rf7y48kyr5h9glnwr";
+ version = "3.2.0.20"; # "Android Studio 3.2 Beta 3"
+ build = "181.4868252";
+ sha256Hash = "17r7gvy317vh2r56yvhnn7dym0q6gs8r04fdr7hx53s9rb79sd1j";
meta = stable.meta // {
description = "The Official IDE for Android (beta channel)";
diff --git a/pkgs/applications/editors/atom/default.nix b/pkgs/applications/editors/atom/default.nix
index a7779225472..142e9b78994 100644
--- a/pkgs/applications/editors/atom/default.nix
+++ b/pkgs/applications/editors/atom/default.nix
@@ -21,6 +21,7 @@ let
mv $out/usr/* $out/
rm -r $out/share/lintian
rm -r $out/usr/
+ sed -i "s/${pname})/.${pname}-wrapped)/" $out/bin/${pname}
# sed -i "s/'${pname}'/'.${pname}-wrapped'/" $out/bin/${pname}
wrapProgram $out/bin/${pname} \
--prefix "PATH" : "${gvfs}/bin"
@@ -60,12 +61,12 @@ let
};
in stdenv.lib.mapAttrs common {
atom = {
- version = "1.28.0";
- sha256 = "0k09316897qb9ypkqm6w78nz7sj5385xfdm9bm97m8pka7v61g7h";
+ version = "1.28.1";
+ sha256 = "03phnbsc45i0r799ni9br7s4qjy05fczbca64jd0sr4jhzi7qmlx";
};
atom-beta = {
- version = "1.29.0-beta0";
- sha256 = "05xk63wsjfssf8ckph2bgrxaf99fhz3gs8n8pira8cc9yjk7diz7";
+ version = "1.29.0-beta1";
+ sha256 = "121y716pnq4vpjrymr505prskvi5a2lnn8hw79q8b4hf7yz0j6rb";
};
}
diff --git a/pkgs/applications/editors/atom/env.nix b/pkgs/applications/editors/atom/env.nix
index c7e1dfe2736..f93d4042a62 100644
--- a/pkgs/applications/editors/atom/env.nix
+++ b/pkgs/applications/editors/atom/env.nix
@@ -1,11 +1,11 @@
-{ stdenv, lib, zlib, glib, alsaLib, dbus, gtk2, atk, pango, freetype, fontconfig
+{ stdenv, lib, zlib, glib, alsaLib, dbus, gtk3, atk, pango, freetype, fontconfig
, libgnome-keyring3, gdk_pixbuf, gvfs, cairo, cups, expat, libgpgerror, nspr
, gconf, nss, xorg, libcap, systemd, libnotify, libsecret
}:
let
packages = [
- stdenv.cc.cc zlib glib dbus gtk2 atk pango freetype libgnome-keyring3
+ stdenv.cc.cc zlib glib dbus gtk3 atk pango freetype libgnome-keyring3
fontconfig gdk_pixbuf cairo cups expat libgpgerror alsaLib nspr gconf nss
xorg.libXrender xorg.libX11 xorg.libXext xorg.libXdamage xorg.libXtst
xorg.libXcomposite xorg.libXi xorg.libXfixes xorg.libXrandr
diff --git a/pkgs/applications/editors/edbrowse/default.nix b/pkgs/applications/editors/edbrowse/default.nix
index 862739b4ed0..28775e48e1a 100644
--- a/pkgs/applications/editors/edbrowse/default.nix
+++ b/pkgs/applications/editors/edbrowse/default.nix
@@ -2,7 +2,7 @@
stdenv.mkDerivation rec {
name = "edbrowse-${version}";
- version = "3.7.3";
+ version = "3.7.4";
buildInputs = [ curl pcre readline openssl duktape perl html-tidy ];
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
owner = "CMB";
repo = "edbrowse";
rev = "v${version}";
- sha256 = "19qdxigp0qv5vyy0hpn0czcc8papvivsjrxx7p367ihizm39yzla";
+ sha256 = "0i9ivyfy1dd16c89f392kwx6wxgkkpyq2hl32jhzra0fb0zyl0k6";
};
meta = with stdenv.lib; {
description = "Command Line Editor Browser";
diff --git a/pkgs/applications/editors/emacs-modes/cask/default.nix b/pkgs/applications/editors/emacs-modes/cask/default.nix
index 673b590f56e..aed976051f2 100644
--- a/pkgs/applications/editors/emacs-modes/cask/default.nix
+++ b/pkgs/applications/editors/emacs-modes/cask/default.nix
@@ -1,14 +1,14 @@
{ stdenv, fetchFromGitHub, emacs, python }:
stdenv.mkDerivation rec {
- version = "0.8.1";
+ version = "0.8.4";
name = "cask-${version}";
src = fetchFromGitHub {
owner = "cask";
repo = "cask";
rev = "v${version}";
- sha256 = "1sl094adnchjvf189c3l1njawrj5ww1sv5vvjr9hb1ng2rw20z7b";
+ sha256 = "1p37lq8xpyq0rc7phxgsw3b73h8vf9rkpa5959rb5k46w6ps9686";
};
buildInputs = [ emacs python ];
diff --git a/pkgs/applications/editors/focuswriter/default.nix b/pkgs/applications/editors/focuswriter/default.nix
index 4b14b133320..997a4bd253c 100644
--- a/pkgs/applications/editors/focuswriter/default.nix
+++ b/pkgs/applications/editors/focuswriter/default.nix
@@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "focuswriter-${version}";
- version = "1.6.13";
+ version = "1.6.14";
src = fetchurl {
url = "https://gottcode.org/focuswriter/focuswriter-${version}-src.tar.bz2";
- sha256 = "1qs9v5r88scahpyw8ndr622fdnaib9789jvl2jnkwi62zcivbf6n";
+ sha256 = "1n8ni4bnw5vs7jx28v8r1vk69g2m1q5h9s6xpf8c0bxbcwwg2m5i";
};
nativeBuildInputs = [ pkgconfig qmake qttools ];
diff --git a/pkgs/applications/editors/ghostwriter/default.nix b/pkgs/applications/editors/ghostwriter/default.nix
index 7a0399ea0f8..594f4ca8704 100644
--- a/pkgs/applications/editors/ghostwriter/default.nix
+++ b/pkgs/applications/editors/ghostwriter/default.nix
@@ -2,14 +2,14 @@
stdenv.mkDerivation rec {
pname = "ghostwriter";
- version = "1.6.2";
+ version = "1.7.0";
name = "${pname}-${version}";
src = fetchFromGitHub {
owner = "wereturtle";
repo = pname;
rev = "v${version}";
- sha256 = "0251563zy0q69fzfacvalpx43y15cshb0bhshyd4w37061gh1c12";
+ sha256 = "00nlk5gazlfnndanhhjj5hlvkkp9yfx5mj6jq0jz37mk8mn6rzln";
};
nativeBuildInputs = [ qmake pkgconfig ];
diff --git a/pkgs/applications/editors/rednotebook/default.nix b/pkgs/applications/editors/rednotebook/default.nix
index 34f6e4409a6..9456ea3150a 100644
--- a/pkgs/applications/editors/rednotebook/default.nix
+++ b/pkgs/applications/editors/rednotebook/default.nix
@@ -1,5 +1,5 @@
{ lib, buildPythonApplication, fetchFromGitHub
-, gdk_pixbuf, glib, gtk3, pango, webkitgtk
+, gdk_pixbuf, glib, gobjectIntrospection, gtk3, pango, webkitgtk
, pygobject3, pyyaml
}:
@@ -17,6 +17,8 @@ buildPythonApplication rec {
# We have not packaged tests.
doCheck = false;
+ nativeBuildInputs = [ gobjectIntrospection ];
+
propagatedBuildInputs = [
gdk_pixbuf glib gtk3 pango webkitgtk
pygobject3 pyyaml
diff --git a/pkgs/applications/editors/texstudio/default.nix b/pkgs/applications/editors/texstudio/default.nix
index 938f3817479..790c4ea45c0 100644
--- a/pkgs/applications/editors/texstudio/default.nix
+++ b/pkgs/applications/editors/texstudio/default.nix
@@ -2,14 +2,14 @@
stdenv.mkDerivation rec {
pname = "texstudio";
- version = "2.12.8";
+ version = "2.12.10";
name = "${pname}-${version}";
src = fetchFromGitHub {
owner = "${pname}-org";
repo = pname;
rev = version;
- sha256 = "0f1az7398rnxmm3m9b2jcz7pd9x445fjsv8w85k2j261n5cyfqx2";
+ sha256 = "0mkx7fym41hwd7cdg31ji2hxlv3gxx0sa6bnap51ryxmq8sxdjhq";
};
nativeBuildInputs = [ qt5.qmake pkgconfig ];
diff --git a/pkgs/applications/editors/vim/common.nix b/pkgs/applications/editors/vim/common.nix
index a93054a9aeb..2ce6563be0b 100644
--- a/pkgs/applications/editors/vim/common.nix
+++ b/pkgs/applications/editors/vim/common.nix
@@ -1,12 +1,12 @@
{ lib, fetchFromGitHub }:
rec {
- version = "8.1.0001";
+ version = "8.1.0146";
src = fetchFromGitHub {
owner = "vim";
repo = "vim";
rev = "v${version}";
- sha256 = "056h9cyysyh6hqsr1s9xg94la554f56lwnpk87g013xmqf37bna6";
+ sha256 = "1v33h08j15zii0ipw5py18ghsaxlbar0nyx365z1acjhk4vhn9nb";
};
enableParallelBuilding = true;
diff --git a/pkgs/applications/editors/vscode/default.nix b/pkgs/applications/editors/vscode/default.nix
index 818657f2534..d79a50855f3 100644
--- a/pkgs/applications/editors/vscode/default.nix
+++ b/pkgs/applications/editors/vscode/default.nix
@@ -1,8 +1,8 @@
{ stdenv, lib, callPackage, fetchurl, unzip, atomEnv, makeDesktopItem,
- makeWrapper, libXScrnSaver, libxkbfile, libsecret }:
+ gtk2, makeWrapper, libXScrnSaver, libxkbfile, libsecret }:
let
- version = "1.24.1";
+ version = "1.25.0";
channel = "stable";
plat = {
@@ -12,15 +12,16 @@ let
}.${stdenv.system};
sha256 = {
- "i686-linux" = "189chqdimijjzydb8sp3yyi19fijsivyxrdddy8raaj7qkwq0maa";
- "x86_64-linux" = "1944v54pfpfkq5jjnfrhndcwndsnvavd9qih1i2pq16mgaizmib2";
- "x86_64-darwin" = "09sn22j40hax9v6ai99pfj67ymzkk82yqf8j33bg8byk4fgrz9jg";
+ "i686-linux" = "1dgn9swqax54pn5ykk97zdkkzyj46jambmnkb67cn44p29bw9s9m";
+ "x86_64-linux" = "0w2lzif7iilibvwhvg13gxarwz41qsb72s8hvj87mk5iqfdms1px";
+ "x86_64-darwin" = "08xhwvggflzh9lfc5s3jgrqb49yz4jdfii8sfq6v8w3c6yy8cdly";
}.${stdenv.system};
archive_fmt = if stdenv.system == "x86_64-darwin" then "zip" else "tar.gz";
rpath = lib.concatStringsSep ":" [
atomEnv.libPath
+ "${lib.makeLibraryPath [gtk2]}"
"${lib.makeLibraryPath [libsecret]}/libsecret-1.so.0"
"${lib.makeLibraryPath [libXScrnSaver]}/libXss.so.1"
"${lib.makeLibraryPath [libxkbfile]}/libxkbfile.so.1"
diff --git a/pkgs/applications/gis/whitebox-tools/default.nix b/pkgs/applications/gis/whitebox-tools/default.nix
new file mode 100644
index 00000000000..f6adf7857ed
--- /dev/null
+++ b/pkgs/applications/gis/whitebox-tools/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, rustPlatform , fetchFromGitHub, Security }:
+rustPlatform.buildRustPackage rec {
+ name = "whitebox_tools-${version}";
+ version = "0.9.0";
+
+ src = fetchFromGitHub {
+ owner = "jblindsay";
+ repo = "whitebox-tools";
+ rev = "6221cdf327be70f0ee4f2053b76bfa01c3f37caa";
+ sha256 = "1423ga964mz7qkl88vkcm8qfprsksx04aq4sz9v5ghnmdzzvl89x";
+ };
+
+ buildInputs = stdenv.lib.optional stdenv.isDarwin Security;
+
+ cargoSha256 = "1gbgirng21ak0kl3fiyr6lxwzrjd5v79gcrbzf941nb8y8rlvz7k";
+
+ meta = with stdenv.lib; {
+ description = "An advanced geospatial data analysis platform";
+ homepage = http://www.uoguelph.ca/~hydrogeo/WhiteboxTools/index.html;
+ license = licenses.mit;
+ maintainers = [ maintainers.mpickering ];
+ platforms = platforms.all;
+ };
+}
diff --git a/pkgs/applications/graphics/ImageMagick/7.0.nix b/pkgs/applications/graphics/ImageMagick/7.0.nix
index d8c11f33439..63cf950f02a 100644
--- a/pkgs/applications/graphics/ImageMagick/7.0.nix
+++ b/pkgs/applications/graphics/ImageMagick/7.0.nix
@@ -14,8 +14,8 @@ let
else throw "ImageMagick is not supported on this platform.";
cfg = {
- version = "7.0.8-2";
- sha256 = "06cpvvv8xikw5jm1pa2xxxlnsy743ham67yshpndn2x3fyf48267";
+ version = "7.0.8-6";
+ sha256 = "1v7m1g9a7fqc8nravvv3dy54nzd3ip75hcnkdrpb5wbiz9pqgzi3";
patches = [];
};
in
diff --git a/pkgs/applications/graphics/exrdisplay/default.nix b/pkgs/applications/graphics/exrdisplay/default.nix
index e698fb8f234..34e7b1f2308 100644
--- a/pkgs/applications/graphics/exrdisplay/default.nix
+++ b/pkgs/applications/graphics/exrdisplay/default.nix
@@ -1,7 +1,5 @@
{ stdenv, fetchurl, pkgconfig, fltk, openexr, libGLU_combined, openexr_ctl }:
-assert fltk.glSupport;
-
stdenv.mkDerivation {
name ="openexr_viewers-2.2.1";
@@ -14,14 +12,14 @@ stdenv.mkDerivation {
./configure --prefix=$out --with-fltk-config=${fltk}/bin/fltk-config
'';
- buildPahse = ''
+ buildPhase = ''
make LDFLAGS="`fltk-config --ldflags` -lGL -lfltk_gl"
'';
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ openexr fltk libGLU_combined openexr_ctl ];
- meta = {
+ meta = {
description = "Application for viewing OpenEXR images on a display at various exposure settings";
homepage = http://openexr.com;
platforms = stdenv.lib.platforms.linux;
diff --git a/pkgs/applications/graphics/fbida/default.nix b/pkgs/applications/graphics/fbida/default.nix
index 2e91f787350..33d65a86076 100644
--- a/pkgs/applications/graphics/fbida/default.nix
+++ b/pkgs/applications/graphics/fbida/default.nix
@@ -3,11 +3,11 @@
, epoxy, poppler, mesa_noglu, lirc }:
stdenv.mkDerivation rec {
- name = "fbida-2.13";
+ name = "fbida-2.14";
src = fetchurl {
url = "http://dl.bytesex.org/releases/fbida/${name}.tar.gz";
- sha256 = "01yv4qqqfbz9v281y2jlxhxdym3ricyb0zkqkgp5b40qrmfik1x8";
+ sha256 = "0f242mix20rgsqz1llibhsz4r2pbvx6k32rmky0zjvnbaqaw1dwm";
};
nativeBuildInputs = [ pkgconfig which ];
@@ -17,12 +17,12 @@ stdenv.mkDerivation rec {
mesa_noglu
];
- makeFlags = [ "prefix=$(out)" "verbose=yes" "STRIP=" ];
+ makeFlags = [ "prefix=$(out)" "verbose=yes" "STRIP=" "JPEG_VER=62" ];
- patchPhase =
- ''
+ patchPhase = ''
sed -e 's@ cpp\>@ gcc -E -@' -i GNUmakefile
- '';
+ sed -e 's@$(HAVE_LINUX_FB_H)@yes@' -i GNUmakefile
+ '';
meta = with stdenv.lib; {
description = "Image viewing and manipulation programs";
diff --git a/pkgs/applications/graphics/feh/default.nix b/pkgs/applications/graphics/feh/default.nix
index dad378affbe..4ec4b76ac04 100644
--- a/pkgs/applications/graphics/feh/default.nix
+++ b/pkgs/applications/graphics/feh/default.nix
@@ -6,11 +6,11 @@ with stdenv.lib;
stdenv.mkDerivation rec {
name = "feh-${version}";
- version = "2.26.4";
+ version = "2.27";
src = fetchurl {
url = "https://feh.finalrewind.org/${name}.tar.bz2";
- sha256 = "15a7hjg7xwj1hsw3c5k18psvvmbqgn4g79qq03bsvibzl4kqakq7";
+ sha256 = "0kn6cka9m76697i495npd60ad64jnfnzv5z6znzyr0vlxx2nhcmg";
};
outputs = [ "out" "man" "doc" ];
diff --git a/pkgs/applications/graphics/freecad/default.nix b/pkgs/applications/graphics/freecad/default.nix
index 8001080a170..6362d6c06fe 100644
--- a/pkgs/applications/graphics/freecad/default.nix
+++ b/pkgs/applications/graphics/freecad/default.nix
@@ -1,5 +1,5 @@
{ stdenv, fetchurl, cmake, coin3d, xercesc, ode, eigen, qt4, opencascade, gts
-, hdf5, vtk, medfile, boost, zlib, python27Packages, swig, gfortran, fetchpatch
+, hdf5, vtk, medfile, zlib, python27Packages, swig, gfortran, fetchpatch
, soqt, libf2c, makeWrapper, makeDesktopItem
, mpi ? null }:
@@ -16,7 +16,7 @@ in stdenv.mkDerivation rec {
sha256 = "1yv6abdzlpn4wxy315943xwrnbywxqfgkjib37qwfvbb8y9p60df";
};
- buildInputs = with pythonPackages; [ cmake coin3d xercesc ode eigen qt4 opencascade gts
+ buildInputs = [ cmake coin3d xercesc ode eigen qt4 opencascade gts
zlib swig gfortran soqt libf2c makeWrapper mpi vtk hdf5 medfile
] ++ (with pythonPackages; [
matplotlib pycollada pyside pysideShiboken pysideTools pivy python boost
diff --git a/pkgs/applications/graphics/gimp/default.nix b/pkgs/applications/graphics/gimp/default.nix
index 4acc7cf3758..8e18d531605 100644
--- a/pkgs/applications/graphics/gimp/default.nix
+++ b/pkgs/applications/graphics/gimp/default.nix
@@ -9,11 +9,11 @@ let
inherit (python2Packages) pygtk wrapPython python;
in stdenv.mkDerivation rec {
name = "gimp-${version}";
- version = "2.10.2";
+ version = "2.10.4";
src = fetchurl {
url = "http://download.gimp.org/pub/gimp/v${stdenv.lib.versions.majorMinor version}/${name}.tar.bz2";
- sha256 = "1srkqd9cx1xmny7cyk3b6f14dknb3fd77whm38vlvr7grnpbmc0w";
+ sha256 = "14pi0q3wwkapy0inqxk1hjsa2h8lff1z4wgdsyrk29jaw66pdc7z";
};
nativeBuildInputs = [ autoreconfHook pkgconfig intltool gettext wrapPython ];
diff --git a/pkgs/applications/graphics/graphicsmagick/default.nix b/pkgs/applications/graphics/graphicsmagick/default.nix
index 872afb39ec6..2c322128c38 100644
--- a/pkgs/applications/graphics/graphicsmagick/default.nix
+++ b/pkgs/applications/graphics/graphicsmagick/default.nix
@@ -4,11 +4,11 @@
stdenv.mkDerivation rec {
name = "graphicsmagick-${version}";
- version = "1.3.29";
+ version = "1.3.30";
src = fetchurl {
url = "mirror://sourceforge/graphicsmagick/GraphicsMagick-${version}.tar.xz";
- sha256 = "1m0cc6kpky06lpcipj7rfwc2jbw2igr0jk97zqmw3j1ld5mg93g1";
+ sha256 = "1warar0731xf94r4bn5x1km85rjabl4iq8r0dk3ywmczap3farfr";
};
patches = [
diff --git a/pkgs/applications/graphics/nomacs/default.nix b/pkgs/applications/graphics/nomacs/default.nix
index 675c4e6a49e..1103c9ff40a 100644
--- a/pkgs/applications/graphics/nomacs/default.nix
+++ b/pkgs/applications/graphics/nomacs/default.nix
@@ -18,12 +18,12 @@
}:
stdenv.mkDerivation rec {
- version = "3.8.1";
+ version = "3.10.0";
src = fetchFromGitHub {
owner = "nomacs";
repo = "nomacs";
rev = version;
- sha256 = "1irms980d7acdqrfn8isw55vgc4d9n26ff86887vk7xfvxs0ayla";
+ sha256 = "07k921r4m6p5kicyb55zdfp58m8mlc94g2csq354d7v20m71zwrv";
};
name = "nomacs-${version}";
diff --git a/pkgs/applications/graphics/scantailor/advanced.nix b/pkgs/applications/graphics/scantailor/advanced.nix
index 1fb8d572e95..82a49896872 100644
--- a/pkgs/applications/graphics/scantailor/advanced.nix
+++ b/pkgs/applications/graphics/scantailor/advanced.nix
@@ -4,13 +4,13 @@
stdenv.mkDerivation rec {
name = "scantailor-advanced-${version}";
- version = "1.0.14";
+ version = "1.0.15";
src = fetchFromGitHub {
owner = "4lex4";
repo = "scantailor-advanced";
rev = "v${version}";
- sha256 = "1h7lng0hxkjcvwbdf1yx59a382kiwn9bpll42acqs71nsvw65p28";
+ sha256 = "031jqk64ig6lmscl5yg5lp116zwn0jl7xs9rlniqf6a8g4wfbjk9";
};
nativeBuildInputs = [ cmake qttools ];
diff --git a/pkgs/applications/graphics/write_stylus/default.nix b/pkgs/applications/graphics/write_stylus/default.nix
new file mode 100644
index 00000000000..a1c39fadb59
--- /dev/null
+++ b/pkgs/applications/graphics/write_stylus/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, lib, qtbase, qtsvg, makeWrapper, fetchurl, makeDesktopItem }:
+stdenv.mkDerivation rec {
+ name = "write_stylus-${version}";
+ version = "209";
+
+ desktopItem = makeDesktopItem {
+ name = "Write";
+ exec = "Write";
+ comment = "a word processor for hadwriting";
+ desktopName = "Write";
+ genericName = "Write";
+ categories = "Office;Graphics";
+ };
+
+ src = fetchurl {
+ url = "http://www.styluslabs.com/write/write${version}.tar.gz";
+ sha256 = "1p6glp4vdpwl8hmhypayc4cvs3j9jfmjfhhrgqm2xkgl5bfbv2qd";
+ };
+ sourceRoot = ".";
+
+ dontBuild = true;
+
+ installPhase = ''
+ mkdir -p $out/bin
+ cp -R Write $out/
+ # symlink the binary to bin/
+ ln -s $out/Write/Write $out/bin/Write
+
+ mkdir -p $out/share/applications
+ ln -s ${desktopItem}/share/applications/* $out/share/applications/
+ '';
+ preFixup = let
+ libPath = lib.makeLibraryPath [
+ qtbase # libQt5PrintSupport.so.5
+ qtsvg # libQt5Svg.so.5
+ stdenv.cc.cc.lib # libstdc++.so.6
+ ];
+ in ''
+ patchelf \
+ --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+ --set-rpath "${libPath}" \
+ $out/Write/Write
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = http://www.styluslabs.com/;
+ description = "Write is a word processor for handwriting.";
+ platforms = platforms.linux;
+ license = stdenv.lib.licenses.unfree;
+ maintainers = with maintainers; [ oyren ];
+ };
+}
diff --git a/pkgs/applications/misc/alacritty/default.nix b/pkgs/applications/misc/alacritty/default.nix
index e565b51cf50..698485fb086 100644
--- a/pkgs/applications/misc/alacritty/default.nix
+++ b/pkgs/applications/misc/alacritty/default.nix
@@ -92,6 +92,10 @@ in buildRustPackage rec {
patchelf --set-rpath "${stdenv.lib.makeLibraryPath rpathLibs}" $out/bin/alacritty
'') + ''
+ install -D alacritty-completions.zsh "$out/share/zsh/site-functions/_alacritty"
+ install -D alacritty-completions.bash "$out/etc/bash_completion.d/alacritty-completions.bash"
+ install -D alacritty-completions.fish "$out/share/fish/vendor_completions.d/alacritty.fish"
+
runHook postInstall
'';
diff --git a/pkgs/applications/misc/calibre/default.nix b/pkgs/applications/misc/calibre/default.nix
index cfd869e5592..1aabbb587eb 100644
--- a/pkgs/applications/misc/calibre/default.nix
+++ b/pkgs/applications/misc/calibre/default.nix
@@ -5,12 +5,12 @@
}:
stdenv.mkDerivation rec {
- version = "3.26.1";
+ version = "3.27.1";
name = "calibre-${version}";
src = fetchurl {
url = "https://download.calibre-ebook.com/${version}/${name}.tar.xz";
- sha256 = "0i53095g6wl3ghhpzfrvizj24b8zxbxs1c7bvcj3fpkf43wd45j0";
+ sha256 = "0hmdlnwrfql2b675xmjf50hnnrrkv5jbky0ssdpyfjfa5vxya2bh";
};
patches = [
diff --git a/pkgs/applications/misc/cherrytree/default.nix b/pkgs/applications/misc/cherrytree/default.nix
index 0b2bee9122e..03709c30373 100644
--- a/pkgs/applications/misc/cherrytree/default.nix
+++ b/pkgs/applications/misc/cherrytree/default.nix
@@ -4,11 +4,11 @@ with stdenv.lib;
stdenv.mkDerivation rec {
name = "cherrytree-${version}";
- version = "0.38.4";
+ version = "0.38.5";
src = fetchurl {
url = "https://www.giuspen.com/software/${name}.tar.xz";
- sha256 = "1zazyxkrli77wahn4c1z24qyz5bwlayl335f2kdxb44dicrx58g2";
+ sha256 = "1ja3b14vm3yd26pf82p2qlld0flqkqvgdg2g33r5dav6wfq3pz6y";
};
buildInputs = with pythonPackages;
diff --git a/pkgs/applications/misc/chirp/default.nix b/pkgs/applications/misc/chirp/default.nix
index 16f63cfcd10..6e0152c71ed 100644
--- a/pkgs/applications/misc/chirp/default.nix
+++ b/pkgs/applications/misc/chirp/default.nix
@@ -3,11 +3,11 @@
stdenv.mkDerivation rec {
name = "chirp-daily-${version}";
- version = "20180614";
+ version = "20180707";
src = fetchurl {
url = "https://trac.chirp.danplanet.com/chirp_daily/daily-${version}/${name}.tar.gz";
- sha256 = "011bxd418hrl88rhp6lhja68b2kvnm1b845v41g9qfsagvfmbv3g";
+ sha256 = "09siq74k0ss65ssck7i7h515dxp7fhdz5klc3y0yp9wajn706ic3";
};
nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/applications/misc/coursera-dl/default.nix b/pkgs/applications/misc/coursera-dl/default.nix
index a7a2dac26c6..a6afee13e47 100644
--- a/pkgs/applications/misc/coursera-dl/default.nix
+++ b/pkgs/applications/misc/coursera-dl/default.nix
@@ -4,21 +4,21 @@ let
pythonPackages = python3.pkgs;
in pythonPackages.buildPythonApplication rec {
- name = "coursera-dl-${version}";
- version = "0.10.0";
+ pname = "coursera-dl";
+ version = "0.11.4";
src = fetchFromGitHub {
owner = "coursera-dl";
repo = "coursera-dl";
rev = version;
- sha256 = "0m3f6ly8c3mkb8yy2y398afswqgy17rz159s1054wzxpb4f85zlb";
+ sha256 = "0dn7a6s98dwba62r0dyabq8pryzga4b2wpx88i9bmp7ja1b1f92f";
};
nativeBuildInputs = with pythonPackages; [ pandoc ];
buildInputs = with pythonPackages; [ glibcLocales ];
- propagatedBuildInputs = with pythonPackages; [ beautifulsoup4 ConfigArgParse keyring pyasn1 requests six urllib3 ];
+ propagatedBuildInputs = with pythonPackages; [ attrs beautifulsoup4 ConfigArgParse keyring pyasn1 requests six urllib3 ];
checkInputs = with pythonPackages; [ pytest mock ];
diff --git a/pkgs/applications/misc/dunst/default.nix b/pkgs/applications/misc/dunst/default.nix
index 1a809307cc1..12f1f78acb9 100644
--- a/pkgs/applications/misc/dunst/default.nix
+++ b/pkgs/applications/misc/dunst/default.nix
@@ -1,7 +1,7 @@
{ stdenv, fetchFromGitHub, makeWrapper
, pkgconfig, which, perl, libXrandr
, cairo, dbus, systemd, gdk_pixbuf, glib, libX11, libXScrnSaver
-, libXinerama, libnotify, libxdg_basedir, pango, xproto, librsvg
+, libXinerama, libnotify, libxdg_basedir, pango, xproto, librsvg, dunstify ? false
}:
stdenv.mkDerivation rec {
@@ -31,7 +31,11 @@ stdenv.mkDerivation rec {
"SERVICEDIR_SYSTEMD=$(out)/lib/systemd/user"
];
- postInstall = ''
+ buildFlags = if dunstify then [ "dunstify" ] else [];
+
+ postInstall = stdenv.lib.optionalString dunstify ''
+ install -Dm755 dunstify $out/bin
+ '' + ''
wrapProgram $out/bin/dunst \
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE"
'';
diff --git a/pkgs/applications/misc/ephemeralpg/default.nix b/pkgs/applications/misc/ephemeralpg/default.nix
index 65df422599c..0ade32d9989 100644
--- a/pkgs/applications/misc/ephemeralpg/default.nix
+++ b/pkgs/applications/misc/ephemeralpg/default.nix
@@ -1,10 +1,10 @@
{ stdenv, fetchurl, postgresql, makeWrapper }:
stdenv.mkDerivation rec {
name = "ephemeralpg-${version}";
- version = "2.2";
+ version = "2.5";
src = fetchurl {
url = "http://ephemeralpg.org/code/${name}.tar.gz";
- sha256 = "1v48bcmc23zzqbha80p3spxd5l347qnjzs4z44wl80i2s8fdzlyz";
+ sha256 = "004fcll7248h73adkqawn9bhkqj9wsxyi3w99x64f7s37r2518wk";
};
buildInputs = [ makeWrapper ];
installPhase = ''
diff --git a/pkgs/applications/misc/glava/default.nix b/pkgs/applications/misc/glava/default.nix
new file mode 100644
index 00000000000..d115d1ae1d2
--- /dev/null
+++ b/pkgs/applications/misc/glava/default.nix
@@ -0,0 +1,105 @@
+{ stdenv, fetchurl, writeScript, fetchFromGitHub
+, libGL, libX11, libXext, python3, libXrandr, libXrender, libpulseaudio, libXcomposite
+, enableGlfw ? false, glfw }:
+
+let
+ inherit (stdenv.lib) optional makeLibraryPath;
+
+ version = "1.4.5";
+ gladVersion = "0.1.24";
+ # glad
+ # https://github.com/wacossusca34/glava/issues/46#issuecomment-397816520
+ glad = fetchFromGitHub {
+ owner = "Dav1dde";
+ repo = "glad";
+ rev = "v${gladVersion}";
+ sha256 = "0s2c9w064kqa5i07w8zmvgpg1pa3wj86l1nhgw7w56cjhq7cf8h8";
+ };
+ # gl.xml
+ gl = fetchurl {
+ url = https://raw.githubusercontent.com/KhronosGroup/OpenGL-Registry/a24f3f7a4c924fdbc666024f99c70e5b8e34c819/xml/gl.xml;
+ sha256 = "1mskxjmhb35m8qv255pibf633d8sn1w9rdsf0lj75bhlgy0zi5c7";
+ };
+ # EGL 1.5
+ egl = fetchurl {
+ url = https://www.khronos.org/registry/EGL/api/KHR/khrplatform.h;
+ sha256 = "0p0vs4siiya05cvbqq7cw3ci2zvvlfh8kycgm9k9cwvmrkj08349";
+ };
+
+ wrapperScript = writeScript "glava" ''
+ #!${stdenv.shell}
+ case "$1" in
+ --copy-config)
+ # The binary would symlink it, which won't work in Nix because the
+ # garbage collector will eventually remove the original files after
+ # updates
+ echo "Nix wrapper: Copying glava config to ~/.config/glava"
+ cp -r --no-preserve=all @out@/etc/xdg/glava ~/.config/glava
+ ;;
+ *)
+ exec @out@/bin/.glava-unwrapped "$@"
+ esac
+ '';
+in
+ stdenv.mkDerivation rec {
+ name = "glava-${version}";
+
+ src = fetchFromGitHub {
+ owner = "wacossusca34";
+ repo = "glava";
+ rev = "v${version}";
+ sha256 = "1zfw8samrzxxbny709rcdz1z77cw1cd46wlfnf7my02kipmqn0nr";
+ };
+
+ buildInputs = [
+ libX11
+ libXext
+ libXrandr
+ libXrender
+ libpulseaudio
+ libXcomposite
+ ] ++ optional enableGlfw glfw;
+
+ nativeBuildInputs = [
+ python3
+ ];
+
+ patchPhase = ''
+ cp -r --no-preserve=all ${glad}/* glad
+ mkdir -p glad/include/KHR
+
+ cp ${gl} glad/gl.xml
+ cp ${egl} glad/include/KHR/khrplatform.h
+ patchShebangs .
+ '';
+
+ makeFlags = optional (!enableGlfw) "DISABLE_GLFW=1";
+
+ installFlags = [
+ "DESTDIR=$(out)"
+ ];
+
+ fixupPhase = ''
+ mkdir -p $out/bin
+ mv $out/usr/bin/glava $out/bin/.glava-unwrapped
+ rm -rf $out/usr
+
+ patchelf $out/bin/.glava-unwrapped \
+ --set-rpath "$(patchelf --print-rpath $out/bin/.glava-unwrapped):${makeLibraryPath [ libGL ]}" \
+
+ substitute ${wrapperScript} $out/bin/glava --subst-var out
+ chmod +x $out/bin/glava
+ '';
+
+ meta = with stdenv.lib; {
+ description = ''
+ OpenGL audio spectrum visualizer
+ '';
+ homepage = https://github.com/wacossusca34/glava;
+ platforms = platforms.linux;
+ license = licenses.gpl3;
+ maintainers = with maintainers; [
+ eadwu
+ ];
+ };
+ }
diff --git a/pkgs/applications/misc/ipmiview/default.nix b/pkgs/applications/misc/ipmiview/default.nix
index 638765840cb..58fcd59a2b2 100644
--- a/pkgs/applications/misc/ipmiview/default.nix
+++ b/pkgs/applications/misc/ipmiview/default.nix
@@ -2,12 +2,12 @@
stdenv.mkDerivation rec {
name = "IPMIView-${version}";
- version = "2.13.0";
- buildVersion = "170504";
+ version = "2.14.0";
+ buildVersion = "180213";
src = fetchurl {
url = "ftp://ftp.supermicro.com/utility/IPMIView/Linux/IPMIView_${version}_build.${buildVersion}_bundleJRE_Linux_x64.tar.gz";
- sha256 = "1hfw5g6lxg3vqg0nc3g2sv2h6bn8za35bxxms0ri0sgb9v3xg1y6";
+ sha256 = "1wp22wm7smlsb25x0cck4p660cycfczxj381930crd1qrf68mw4h";
};
buildInputs = [ patchelf makeWrapper ];
diff --git a/pkgs/applications/misc/jgmenu/default.nix b/pkgs/applications/misc/jgmenu/default.nix
index 0bccc8bcc7e..b868808ec3d 100644
--- a/pkgs/applications/misc/jgmenu/default.nix
+++ b/pkgs/applications/misc/jgmenu/default.nix
@@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
name = "jgmenu-${version}";
- version = "1.0";
+ version = "1.1";
src = fetchFromGitHub {
owner = "johanmalm";
repo = "jgmenu";
rev = "v${version}";
- sha256 = "068mm0b2npz6qh9j8m9xd8sbznjp5g195vfav8a6016wgm6fhrx7";
+ sha256 = "0hnxzy5mm5z6r9gaimfsf7kbpr23khck2fhh3j8bk2lkp53420fz";
};
nativeBuildInputs = [
diff --git a/pkgs/applications/misc/josm/default.nix b/pkgs/applications/misc/josm/default.nix
index 44531a672b3..97b60080365 100644
--- a/pkgs/applications/misc/josm/default.nix
+++ b/pkgs/applications/misc/josm/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv, makeDesktopItem, makeWrapper, unzip, bash, jre8 }:
+{ fetchurl, stdenv, makeDesktopItem, makeWrapper, unzip, bash, jre10 }:
stdenv.mkDerivation rec {
name = "josm-${version}";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
sha256 = "1j98wxw84f5rf3finr38bkr1sh9ckah8pmhmxyhmcw2rxf1mv9bf";
};
- buildInputs = [ jre8 makeWrapper ];
+ buildInputs = [ jre10 makeWrapper ];
desktopItem = makeDesktopItem {
name = "josm";
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
mkdir -p $out/bin $out/share/java
cp -v $src $out/share/java/josm.jar
- makeWrapper ${jre8}/bin/java $out/bin/josm \
+ makeWrapper ${jre10}/bin/java $out/bin/josm \
--add-flags "-jar $out/share/java/josm.jar"
mkdir -p $out/share/applications
diff --git a/pkgs/applications/misc/kitty/default.nix b/pkgs/applications/misc/kitty/default.nix
index 99c8b87bf4f..38c2494c9f7 100644
--- a/pkgs/applications/misc/kitty/default.nix
+++ b/pkgs/applications/misc/kitty/default.nix
@@ -1,11 +1,13 @@
{ stdenv, fetchFromGitHub, pkgs, python3Packages, glfw, libunistring, harfbuzz,
fontconfig, zlib, pkgconfig, ncurses, imagemagick, makeWrapper, xsel,
libstartup_notification, libX11, libXrandr, libXinerama, libXcursor,
- libxkbcommon, libXi, libXext }:
+ libxkbcommon, libXi, libXext, wayland-protocols, wayland,
+ which
+}:
with python3Packages;
buildPythonApplication rec {
- version = "0.10.1";
+ version = "0.11.2";
name = "kitty-${version}";
format = "other";
@@ -13,19 +15,24 @@ buildPythonApplication rec {
owner = "kovidgoyal";
repo = "kitty";
rev = "v${version}";
- sha256 = "1xwrrj0g70hh8zsjbd05x0js776xlf7c6mdsmrqlw4y7jfnlgl45";
+ sha256 = "0vmxgyxrgaqijwd51ldd8pkz7jn9hdcfib1dqr0ai614286v69hw";
};
buildInputs = [
fontconfig glfw ncurses libunistring harfbuzz libX11
libXrandr libXinerama libXcursor libxkbcommon libXi libXext
+ wayland-protocols wayland
];
- nativeBuildInputs = [ pkgconfig ];
+ nativeBuildInputs = [ pkgconfig which sphinx ];
postPatch = ''
substituteInPlace kitty/utils.py \
--replace "find_library('startup-notification-1')" "'${libstartup_notification}/lib/libstartup-notification-1.so'"
+
+ substituteInPlace docs/Makefile \
+ --replace 'python3 .. +launch $(shell which sphinx-build)' \
+ 'PYTHONPATH=$PYTHONPATH:.. HOME=$TMPDIR/nowhere $(shell which sphinx-build)'
'';
buildPhase = ''
diff --git a/pkgs/applications/misc/orca/default.nix b/pkgs/applications/misc/orca/default.nix
index e05cb0ad6f9..ca06b5fa6df 100644
--- a/pkgs/applications/misc/orca/default.nix
+++ b/pkgs/applications/misc/orca/default.nix
@@ -10,7 +10,7 @@
with lib;
let
pname = "orca";
- version = "3.28.1";
+ version = "3.28.2";
in buildPythonApplication rec {
name = "${pname}-${version}";
@@ -18,7 +18,7 @@ in buildPythonApplication rec {
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
- sha256 = "04l5ccn7wf175gyq3blfpx0yh70ny06n161297jwc9idf951852g";
+ sha256 = "08rh6ji680g5nrw2n7jrxrw7nwg04sj52jxffcfasgss2f51d38q";
};
patches = [
diff --git a/pkgs/applications/misc/rtv/default.nix b/pkgs/applications/misc/rtv/default.nix
index ed54e523c8f..d2027696824 100644
--- a/pkgs/applications/misc/rtv/default.nix
+++ b/pkgs/applications/misc/rtv/default.nix
@@ -2,14 +2,14 @@
with pythonPackages;
buildPythonApplication rec {
- version = "1.22.1";
+ version = "1.23.0";
name = "rtv-${version}";
src = fetchFromGitHub {
owner = "michael-lazar";
repo = "rtv";
rev = "v${version}";
- sha256 = "1jil8cwhnpf2mclgah7s79j4c38hzm0j6di2mffrqhlsnn2vxbf4";
+ sha256 = "0i6iqj3ly1bgsfa9403m5190mfl9yk1x4ific3v31wqfja985nsr";
};
# Tests try to access network
diff --git a/pkgs/applications/misc/slic3r/prusa3d.nix b/pkgs/applications/misc/slic3r/prusa3d.nix
index f8b5f45d9c5..11a5baa288d 100644
--- a/pkgs/applications/misc/slic3r/prusa3d.nix
+++ b/pkgs/applications/misc/slic3r/prusa3d.nix
@@ -33,7 +33,7 @@ let
in
stdenv.mkDerivation rec {
name = "slic3r-prusa-edition-${version}";
- version = "1.40.0";
+ version = "1.40.1";
enableParallelBuilding = true;
@@ -92,7 +92,7 @@ stdenv.mkDerivation rec {
src = fetchFromGitHub {
owner = "prusa3d";
repo = "Slic3r";
- sha256 = "1cisplrfv6y9ijgl5bs46bxxmid5hl71hjzl73bay2i2bl8hid2f";
+ sha256 = "022mdz8824wg68qwgd49gnplw7wn84hqw113xh8l25v3j1jb9zmc";
rev = "version_${version}";
};
diff --git a/pkgs/applications/misc/termite/add_errno_header.patch b/pkgs/applications/misc/termite/add_errno_header.patch
new file mode 100644
index 00000000000..81283f86a21
--- /dev/null
+++ b/pkgs/applications/misc/termite/add_errno_header.patch
@@ -0,0 +1,24 @@
+From 95c90f302c384f410dc92e64468ac7061b57fe2d Mon Sep 17 00:00:00 2001
+From: Michael Hoang
+Date: Fri, 13 Jul 2018 19:03:09 +1000
+Subject: [PATCH] Add errno.h header which isn't always included automatically.
+
+---
+ termite.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/termite.cc b/termite.cc
+index 160fe82..13e2572 100644
+--- a/termite.cc
++++ b/termite.cc
+@@ -21,6 +21,7 @@
+ #include
+ #include
+ #include
++#include
+ #include
+ #include
+ #include