Merge branch 'master' into staging-next

Hydra: ?compare=1468896
This commit is contained in:
Vladimír Čunát 2018-07-14 18:12:49 +02:00
commit 0f01215203
No known key found for this signature in database
GPG Key ID: E747DF1F9575A3AA
721 changed files with 20508 additions and 20874 deletions

8
.dir-locals.el Normal file
View File

@ -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)))

View File

@ -305,7 +305,7 @@
</section>
<section>
<title>Cross packagaing cookbook</title>
<title>Cross packaging cookbook</title>
<para>
Some frequently problems when packaging for cross compilation are good to

View File

@ -521,7 +521,7 @@ merge:"diff3"
<callout arearefs='ex-dockerTools-buildImage-2'>
<para>
<varname>tag</varname> specifies the tag of the resulting image. By
default it's <literal>latest</literal>.
default it's <literal>null</literal>, which indicates that the nix output hash will be used as tag.
</para>
</callout>
<callout arearefs='ex-dockerTools-buildImage-3'>

View File

@ -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.

View File

@ -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

View File

@ -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 "<integer>${toString x}</integer>";
str = ind: x: literal ind "<string>${x}</string>";
key = ind: x: literal ind "<key>${x}</key>";
float = ind: x: literal ind "<real>${toString x}</real>";
indent = ind: expr "\t${ind}";

View File

@ -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.

View File

@ -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";

View File

@ -6,13 +6,11 @@
$ copy-tarballs.pl --expr 'import <nixpkgs/maintainers/scripts/all-tarballs.nix>'
*/
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 = [];
}

View File

@ -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))

View File

@ -127,6 +127,12 @@ $ nix-instantiate -E '(import &lt;nixpkgsunstable&gt; {}).gitFull'
Make sure the key file is accessible to the daemon.
</para>
</listitem>
<listitem>
<para>
<varname>dockerTools.buildImage</varname> now uses <literal>null</literal> as default value for <varname>tag</varname>,
which indicates that the nix output hash will be used as tag.
</para>
</listitem>
</itemizedlist>
</section>

View File

@ -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:

View File

@ -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}'

View File

@ -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
];
})

View File

@ -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.

View File

@ -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 <<EOF
label: dos
label-id: 0x2178694e
label-id: ${config.sdImage.bootPartitionID}
start=8M, size=$bootSizeBlocks, type=b, bootable
start=${toString (8 + config.sdImage.bootSize)}M, type=83
@ -108,7 +128,7 @@ in
# Create a FAT32 /boot partition of suitable size into bootpart.img
eval $(partx $img -o START,SECTORS --nr 1 --pairs)
truncate -s $((SECTORS * 512)) bootpart.img
faketime "1970-01-01 00:00:00" mkfs.vfat -i 0x2178694e -n NIXOS_BOOT bootpart.img
faketime "1970-01-01 00:00:00" mkfs.vfat -i ${config.sdImage.bootPartitionID} -n NIXOS_BOOT bootpart.img
# Populate the files intended for /boot
mkdir boot

View File

@ -220,6 +220,7 @@
./services/databases/stanchion.nix
./services/databases/virtuoso.nix
./services/desktops/accountsservice.nix
./services/desktops/bamf.nix
./services/desktops/dleyna-renderer.nix
./services/desktops/dleyna-server.nix
./services/desktops/flatpak.nix
@ -627,6 +628,7 @@
./services/security/hologram-agent.nix
./services/security/munge.nix
./services/security/oauth2_proxy.nix
./services/security/oauth2_proxy_nginx.nix
./services/security/physlock.nix
./services/security/shibboleth-sp.nix
./services/security/sks.nix

View File

@ -34,6 +34,6 @@ in
meta = {
doc = ./doc.xml;
maintainers = with stdenv.lib.maintainers; [ vidbina ];
maintainers = with lib.maintainers; [ vidbina ];
};
}

View File

@ -242,6 +242,7 @@ with lib;
(mkRemovedOptionModule [ "fonts" "fontconfig" "hinting" "style" ] "")
(mkRemovedOptionModule [ "services" "xserver" "displayManager" "sddm" "themes" ]
"Set the option `services.xserver.displayManager.sddm.package' instead.")
(mkRemovedOptionModule [ "services" "xserver" "desktopManager" "xfce" "screenLock" ] "")
(mkRemovedOptionModule [ "fonts" "fontconfig" "forceAutohint" ] "")
(mkRemovedOptionModule [ "fonts" "fontconfig" "renderMonoTTFAsBitmap" ] "")
(mkRemovedOptionModule [ "virtualisation" "xen" "qemu" ] "You don't need this option anymore, it will work without it.")

View File

@ -0,0 +1,23 @@
# Bamf
{ config, lib, pkgs, ... }:
with lib;
{
###### interface
options = {
services.bamf = {
enable = mkEnableOption "bamf";
};
};
###### implementation
config = mkIf config.services.bamf.enable {
services.dbus.packages = [ pkgs.bamf ];
systemd.packages = [ pkgs.bamf ];
};
}

View File

@ -3,20 +3,34 @@
with lib;
{
let
cfg = config.services.pipewire;
packages = with pkgs; [ pipewire ];
in {
###### interface
options = {
services.pipewire = {
enable = mkEnableOption "pipewire service";
socketActivation = mkOption {
default = true;
type = types.bool;
description = ''
Automatically run pipewire when connections are made to the pipewire socket.
'';
};
};
};
###### implementation
config = mkIf config.services.pipewire.enable {
environment.systemPackages = [ pkgs.pipewire ];
config = mkIf cfg.enable {
environment.systemPackages = packages;
systemd.packages = [ pkgs.pipewire ];
systemd.packages = packages;
systemd.user.sockets.pipewire.wantedBy = lib.mkIf cfg.socketActivation [ "sockets.target" ];
};
meta.maintainers = with lib.maintainers; [ jtojnar ];

View File

@ -40,15 +40,8 @@ with lib;
'';
services.udev.packages = [ pkgs.udisks2 ];
systemd.services.udisks2 = {
description = "Udisks2 service";
serviceConfig = {
Type = "dbus";
BusName = "org.freedesktop.UDisks2";
ExecStart = "${pkgs.udisks2}/libexec/udisks2/udisksd --no-debug";
};
};
systemd.packages = [ pkgs.udisks2 ];
};
}

View File

@ -241,6 +241,6 @@ in {
};
meta = {
maintainers = with stdenv.lib.maintainers; [ florianjacob ];
maintainers = with lib.maintainers; [ florianjacob ];
};
}

View File

@ -12,6 +12,16 @@ in {
services.autorandr = {
enable = mkEnableOption "handling of hotplug and sleep events by autorandr";
defaultTarget = mkOption {
default = "default";
type = types.str;
description = ''
Fallback if no monitor layout can be detected. See the docs
(https://github.com/phillipberndt/autorandr/blob/v1.0/README.md#how-to-use)
for further reference.
'';
};
};
};
@ -22,13 +32,21 @@ in {
environment.systemPackages = [ pkgs.autorandr ];
systemd.packages = [ pkgs.autorandr ];
systemd.services.autorandr = {
wantedBy = [ "sleep.target" ];
description = "Autorandr execution hook";
after = [ "sleep.target" ];
serviceConfig = {
StartLimitInterval = 5;
StartLimitBurst = 1;
ExecStart = "${pkgs.autorandr}/bin/autorandr --batch --change --default ${cfg.defaultTarget}";
Type = "oneshot";
RemainAfterExit = false;
};
};
};
meta.maintainers = with maintainers; [ gnidorah ];
meta.maintainers = with maintainers; [ gnidorah ma27 ];
}

View File

@ -6,6 +6,9 @@ with lib;
let
cfg = config.networking.networkmanager;
dynamicHostsEnabled =
cfg.dynamicHosts.enable && cfg.dynamicHosts.hostsDirs != {};
# /var/lib/misc is for dnsmasq.leases.
stateDirs = "/var/lib/NetworkManager /var/lib/dhclient /var/lib/misc";
@ -317,6 +320,52 @@ in {
so you don't need to to that yourself.
'';
};
dynamicHosts = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Enabling this option requires the
<option>networking.networkmanager.dns</option> option to be
set to <literal>dnsmasq</literal>. If enabled, the directories
defined by the
<option>networking.networkmanager.dynamicHosts.hostsDirs</option>
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 <literal>--hostsdir</literal> 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
<literal>/run/NetworkManager/hostdirs</literal>) 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;

View File

@ -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

View File

@ -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

View File

@ -36,6 +36,7 @@ let
IPv4 = true
IPv6 = true
SSL = ${boolToString confOpts.useSSL}
${lib.optionalString (confOpts.uriPrefix != null) "URIPrefix = ${confOpts.uriPrefix}"}
</Listener>
<User ${confOpts.userName}>
@ -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;

View File

@ -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));
}

View File

@ -241,6 +241,6 @@ in {
meta = {
doc = ./matomo-doc.xml;
maintainers = with stdenv.lib.maintainers; [ florianjacob ];
maintainers = with lib.maintainers; [ florianjacob ];
};
}

View File

@ -130,5 +130,5 @@ in
};
};
meta.maintainers = with stdenv.lib.maintainers; [ ironpinguin ];
meta.maintainers = with lib.maintainers; [ ironpinguin ];
}

View File

@ -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";

View File

@ -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 ]

View File

@ -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 =

View File

@ -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

View File

@ -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

View File

@ -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 {};

View File

@ -29,7 +29,7 @@ in import ./make-test.nix {
name = "acme";
nodes = {
letsencrypt = ./common/letsencrypt.nix;
letsencrypt = ./common/letsencrypt;
webserver = { config, pkgs, ... }: {
imports = [ commonConfig ];

View File

@ -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

View File

@ -0,0 +1,69 @@
{ pkgs ? import <nixpkgs> {}
, 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"
''

View File

@ -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

View File

@ -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-----
'';
}

View File

@ -18,7 +18,7 @@
defining this option needs to be explicitly imported.
The reason this option exists is for the
<filename>nixos/tests/common/letsencrypt.nix</filename> module, which
<filename>nixos/tests/common/letsencrypt</filename> module, which
needs that option to disable the resolver once the user has set its own
resolver.
'';

View File

@ -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

119
nixos/tests/mpd.nix Normal file
View File

@ -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");
'';
})

View File

@ -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;
};
};

View File

@ -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";

View File

@ -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";
};

View File

@ -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

View File

@ -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 ];

View File

@ -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 ];

View File

@ -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; [

View File

@ -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 ];

View File

@ -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
'';
}

View File

@ -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 = [

View File

@ -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;
};
}

View File

@ -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 ];

View File

@ -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)";

View File

@ -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";
};
}

View File

@ -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

View File

@ -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";

View File

@ -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 ];

View File

@ -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 ];

View File

@ -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 ];

View File

@ -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

View File

@ -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 ];

View File

@ -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;

View File

@ -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"

View File

@ -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;
};
}

View File

@ -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

View File

@ -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;

View File

@ -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";

View File

@ -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" ];

View File

@ -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

View File

@ -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 ];

View File

@ -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 = [

View File

@ -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}";

View File

@ -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 ];

View File

@ -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 ];
};
}

View File

@ -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
'';

View File

@ -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 = [

View File

@ -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;

View File

@ -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 ];

View File

@ -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 ];

View File

@ -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"
'';

View File

@ -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 = ''

View File

@ -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
];
};
}

View File

@ -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 ];

View File

@ -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 = [

View File

@ -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

View File

@ -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 = ''

View File

@ -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 = [

View File

@ -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

View File

@ -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}";
};

View File

@ -0,0 +1,24 @@
From 95c90f302c384f410dc92e64468ac7061b57fe2d Mon Sep 17 00:00:00 2001
From: Michael Hoang <enzime@users.noreply.github.com>
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 <cstdlib>
#include <cstring>
#include <cmath>
+#include <errno.h>
#include <functional>
#include <limits>
#include <map>
--
2.17.1

View File

@ -1,4 +1,4 @@
{ stdenv, fetchgit, pkgconfig, vte, gtk3, ncurses, makeWrapper, wrapGAppsHook, symlinkJoin
{ stdenv, fetchFromGitHub, lib, pkgconfig, vte, gtk3, ncurses, makeWrapper, wrapGAppsHook, symlinkJoin
, configFile ? null
}:
@ -7,16 +7,17 @@ let
termite = stdenv.mkDerivation {
name = "termite-${version}";
src = fetchgit {
url = "https://github.com/thestinger/termite";
rev = "refs/tags/v${version}";
src = fetchFromGitHub {
owner = "thestinger";
repo = "termite";
rev = "v${version}";
sha256 = "02cn70ygl93ghhkhs3xdxn5b1yadc255v3yp8cmhhyzsv5027hvj";
fetchSubmodules = true;
};
# https://github.com/thestinger/termite/pull/516
patches = [ ./url_regexp_trailing.patch ];
postPatch = "sed '1i#include <math.h>' -i termite.cc";
patches = [ ./url_regexp_trailing.patch ./add_errno_header.patch
] ++ lib.optional stdenv.isDarwin ./remove_ldflags_macos.patch;
makeFlags = [ "VERSION=v${version}" "PREFIX=" "DESTDIR=$(out)" ];

View File

@ -0,0 +1,25 @@
From 1b5a6934635c55472eb7949bd87ab3f45fa1b2f3 Mon Sep 17 00:00:00 2001
From: Michael Hoang <enzime@users.noreply.github.com>
Date: Fri, 13 Jul 2018 19:01:51 +1000
Subject: [PATCH] Remove --as-needed flag from ld to fix compilation on macOS.
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index b115f42..ab301ba 100644
--- a/Makefile
+++ b/Makefile
@@ -29,7 +29,7 @@ ifeq (${CXX}, clang++)
CXXFLAGS += -Wimplicit-fallthrough
endif
-LDFLAGS := -s -Wl,--as-needed ${LDFLAGS}
+LDFLAGS := -s -Wl ${LDFLAGS}
LDLIBS := ${shell pkg-config --libs ${GTK} ${VTE}}
termite: termite.cc url_regex.hh util/clamp.hh util/maybe.hh util/memory.hh
--
2.17.1

View File

@ -2,13 +2,13 @@
python3Packages.buildPythonApplication rec {
name = "urh-${version}";
version = "2.1.1";
version = "2.2.2";
src = fetchFromGitHub {
owner = "jopohl";
repo = "urh";
rev = "v${version}";
sha256 = "1n8nkrydic2zkglz9hyrf28np3v42b4xwia068b29szivr9fmnrn";
sha256 = "0ncvfl5iyngw3lr2g7awpskrrld6y0x7w0xyp827lcr7x73fvqgp";
};
buildInputs = [ hackrf rtl-sdr ];

View File

@ -1,24 +1,16 @@
{ stdenv, fetchurl, pythonPackages }:
{ stdenv, fetchFromGitHub, pythonPackages }:
pythonPackages.buildPythonApplication rec {
version = "1.3";
version = "1.4";
name = "wikicurses-${version}";
src = fetchurl {
url = "http://github.com/ids1024/wikicurses/archive/v${version}.tar.gz";
sha256 = "1yxgafk1sczg1xi2p6nhrvr3hchp7ydw98n48lp3qzwnryn1kxv8";
src = fetchFromGitHub {
owner = "ids1024";
repo = "wikicurses";
rev = "v${version}";
sha256 = "0f14s4qx3q5pr5vn460c34b5mbz2xs62d8ljs3kic8gmdn8x2knm";
};
patches = [
# This is necessary to build without a config file.
# It can be safely removed after updating to wikicurses to 1.4
# or when commit 4b944ac339312b642c6dc5d6b5a2f7be7503218f is included
(fetchurl {
url = "https://github.com/ids1024/wikicurses/commit/4b944ac339312b642c6dc5d6b5a2f7be7503218f.patch";
sha256 = "0ii4b0c4hb1zdhcpp4ij908mfy5b8khpm1l7xr7lp314lfhsg9as";
})
];
propagatedBuildInputs = with pythonPackages; [ urwid beautifulsoup4 lxml ];
meta = {
@ -26,6 +18,7 @@ pythonPackages.buildPythonApplication rec {
homepage = https://github.com/ids1024/wikicurses/;
license = stdenv.lib.licenses.mit;
platforms = stdenv.lib.platforms.unix;
maintainers = with stdenv.lib.maintainers; [ pSub ];
};
}

View File

@ -4,12 +4,12 @@
stdenv.mkDerivation rec {
name = "wsjtx-${version}";
version = "1.9.0";
version = "1.9.1";
# This is a composite source tarball containing both wsjtx and a hamlib fork
src = fetchurl {
url = "http://physics.princeton.edu/pulsar/K1JT/wsjtx-${version}.tgz";
sha256 = "1qxwiylnykh37kw780hh9xfphzbj8ndpfqz4xazld16v3qx2g0jc";
sha256 = "143r17fri08mwz28g17wcfxy60h3xgfk46mln5lmdr9k6355aqqc";
};
# Hamlib builds with autotools, wsjtx builds with cmake

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