Resolved the following conflicts (by carefully applying patches from the both branches since the fork point): pkgs/development/libraries/epoxy/default.nix pkgs/development/libraries/gtk+/3.x.nix pkgs/development/python-modules/asgiref/default.nix pkgs/development/python-modules/daphne/default.nix pkgs/os-specific/linux/systemd/default.nixwip/yesman
commit
7079e744d4
@ -1,806 +0,0 @@ |
||||
{ ...}: |
||||
/* List of NixOS maintainers. The format is: |
||||
|
||||
handle = "Real Name <address@example.org>"; |
||||
|
||||
where <handle> is preferred to be your GitHub username (so it's easy |
||||
to ping a package @<handle>), and <Real Name> is your real name, not |
||||
a pseudonym. Please keep the list alphabetically sorted. */ |
||||
{ |
||||
a1russell = "Adam Russell <adamlr6+pub@gmail.com>"; |
||||
aaronschif = "Aaron Schif <aaronschif@gmail.com>"; |
||||
abaldeau = "Andreas Baldeau <andreas@baldeau.net>"; |
||||
abbradar = "Nikolay Amiantov <ab@fmap.me>"; |
||||
abigailbuccaneer = "Abigail Bunyan <abigailbuccaneer@gmail.com>"; |
||||
aboseley = "Adam Boseley <adam.boseley@gmail.com>"; |
||||
abuibrahim = "Ruslan Babayev <ruslan@babayev.com>"; |
||||
acowley = "Anthony Cowley <acowley@gmail.com>"; |
||||
adelbertc = "Adelbert Chang <adelbertc@gmail.com>"; |
||||
adev = "Adrien Devresse <adev@adev.name>"; |
||||
adisbladis = "Adam Hose <adis@blad.is>"; |
||||
Adjective-Object = "Maxwell Huang-Hobbs <mhuan13@gmail.com>"; |
||||
adnelson = "Allen Nelson <ithinkican@gmail.com>"; |
||||
adolfogc = "Adolfo E. García Castro <adolfo.garcia.cr@gmail.com>"; |
||||
aespinosa = "Allan Espinosa <allan.espinosa@outlook.com>"; |
||||
aflatter = "Alexander Flatter <flatter@fastmail.fm>"; |
||||
afldcr = "James Alexander Feldman-Crough <alex@fldcr.com>"; |
||||
aforemny = "Alexander Foremny <alexanderforemny@googlemail.com>"; |
||||
afranchuk = "Alex Franchuk <alex.franchuk@gmail.com>"; |
||||
aherrmann = "Andreas Herrmann <andreash87@gmx.ch>"; |
||||
ahmedtd = "Taahir Ahmed <ahmed.taahir@gmail.com>"; |
||||
aij = "Ivan Jager <aij+git@mrph.org>"; |
||||
ajgrf = "Alex Griffin <a@ajgrf.com>"; |
||||
ak = "Alexander Kjeldaas <ak@formalprivacy.com>"; |
||||
akaWolf = "Artjom Vejsel <akawolf0@gmail.com>"; |
||||
akc = "Anders Claesson <akc@akc.is>"; |
||||
alexvorobiev = "Alex Vorobiev <alexander.vorobiev@gmail.com"; |
||||
algorith = "Dries Van Daele <dries_van_daele@telenet.be>"; |
||||
alibabzo = "Alistair Bill <alistair.bill@gmail.com>"; |
||||
all = "Nix Committers <nix-commits@lists.science.uu.nl>"; |
||||
alunduil = "Alex Brandt <alunduil@alunduil.com>"; |
||||
ambrop72 = "Ambroz Bizjak <ambrop7@gmail.com>"; |
||||
amiddelk = "Arie Middelkoop <amiddelk@gmail.com>"; |
||||
amiloradovsky = "Andrew Miloradovsky <miloradovsky@gmail.com>"; |
||||
amorsillo = "Andrew Morsillo <andrew.morsillo@gmail.com>"; |
||||
AndersonTorres = "Anderson Torres <torres.anderson.85@gmail.com>"; |
||||
anderspapitto = "Anders Papitto <anderspapitto@gmail.com>"; |
||||
andir = "Andreas Rammhold <andreas@rammhold.de>"; |
||||
andres = "Andres Loeh <ksnixos@andres-loeh.de>"; |
||||
andrestylianos = "Andre S. Ramos <andre.stylianos@gmail.com>"; |
||||
andrew-d = "Andrew Dunham <andrew@du.nham.ca>"; |
||||
andrewrk = "Andrew Kelley <superjoe30@gmail.com>"; |
||||
andsild = "Anders Sildnes <andsild@gmail.com>"; |
||||
aneeshusa = "Aneesh Agrawal <aneeshusa@gmail.com>"; |
||||
ankhers = "Justin Wood <justin.k.wood@gmail.com>"; |
||||
antono = "Antono Vasiljev <self@antono.info>"; |
||||
antonxy = "Anton Schirg <anton.schirg@posteo.de>"; |
||||
apeschar = "Albert Peschar <albert@peschar.net>"; |
||||
apeyroux = "Alexandre Peyroux <alex@px.io>"; |
||||
arcadio = "Arcadio Rubio García <arc@well.ox.ac.uk>"; |
||||
ardumont = "Antoine R. Dumont <eniotna.t@gmail.com>"; |
||||
aristid = "Aristid Breitkreuz <aristidb@gmail.com>"; |
||||
arobyn = "Alexei Robyn <shados@shados.net>"; |
||||
artuuge = "Artur E. Ruuge <artuuge@gmail.com>"; |
||||
ashalkhakov = "Artyom Shalkhakov <artyom.shalkhakov@gmail.com>"; |
||||
ashgillman = "Ashley Gillman <gillmanash@gmail.com>"; |
||||
aske = "Kirill Boltaev <aske@fmap.me>"; |
||||
asppsa = "Alastair Pharo <asppsa@gmail.com>"; |
||||
astsmtl = "Alexander Tsamutali <astsmtl@yandex.ru>"; |
||||
asymmetric = "Lorenzo Manacorda <lorenzo@mailbox.org>"; |
||||
aszlig = "aszlig <aszlig@nix.build>"; |
||||
auntie = "Jonathan Glines <auntieNeo@gmail.com>"; |
||||
avnik = "Alexander V. Nikolaev <avn@avnik.info>"; |
||||
aycanirican = "Aycan iRiCAN <iricanaycan@gmail.com>"; |
||||
babariviere = "Bastien Riviere <babariviere@protonmail.com>"; |
||||
bachp = "Pascal Bach <pascal.bach@nextrem.ch>"; |
||||
backuitist = "Bruno Bieth"; |
||||
badi = "Badi' Abdul-Wahid <abdulwahidc@gmail.com>"; |
||||
balajisivaraman = "Balaji Sivaraman <sivaraman.balaji@gmail.com>"; |
||||
barrucadu = "Michael Walker <mike@barrucadu.co.uk>"; |
||||
basvandijk = "Bas van Dijk <v.dijk.bas@gmail.com>"; |
||||
Baughn = "Svein Ove Aas <sveina@gmail.com>"; |
||||
bcarrell = "Brandon Carrell <brandoncarrell@gmail.com>"; |
||||
bcdarwin = "Ben Darwin <bcdarwin@gmail.com>"; |
||||
bdimcheff = "Brandon Dimcheff <brandon@dimcheff.com>"; |
||||
bendlas = "Herwig Hochleitner <herwig@bendlas.net>"; |
||||
benley = "Benjamin Staffin <benley@gmail.com>"; |
||||
bennofs = "Benno Fünfstück <benno.fuenfstueck@gmail.com>"; |
||||
benwbooth = "Ben Booth <benwbooth@gmail.com>"; |
||||
berce = "Bert Moens <bert.moens@gmail.com>"; |
||||
berdario = "Dario Bertini <berdario@gmail.com>"; |
||||
bergey = "Daniel Bergey <bergey@teallabs.org>"; |
||||
bhipple = "Benjamin Hipple <bhipple@protonmail.com>"; |
||||
binarin = "Alexey Lebedeff <binarin@binarin.ru>"; |
||||
bjg = "Brian Gough <bjg@gnu.org>"; |
||||
bjornfor = "Bjørn Forsman <bjorn.forsman@gmail.com>"; |
||||
bluescreen303 = "Mathijs Kwik <mathijs@bluescreen303.nl>"; |
||||
bobakker = "Bo Bakker <bobakk3r@gmail.com>"; |
||||
bobvanderlinden = "Bob van der Linden <bobvanderlinden@gmail.com>"; |
||||
bodil = "Bodil Stokke <nix@bodil.org>"; |
||||
boothead = "Ben Ford <ben@perurbis.com>"; |
||||
bosu = "Boris Sukholitko <boriss@gmail.com>"; |
||||
bradediger = "Brad Ediger <brad@bradediger.com>"; |
||||
bramd = "Bram Duvigneau <bram@bramd.nl>"; |
||||
bstrik = "Berno Strik <dutchman55@gmx.com>"; |
||||
bugworm = "Roman Gerasimenko <bugworm@zoho.com>"; |
||||
bzizou = "Bruno Bzeznik <Bruno@bzizou.net>"; |
||||
c0bw3b = "Renaud <c0bw3b@gmail.com>"; |
||||
c0dehero = "CodeHero <codehero@nerdpol.ch>"; |
||||
calbrecht = "Christian Albrecht <christian.albrecht@mayflower.de>"; |
||||
calrama = "Moritz Maxeiner <moritz@ucworks.org>"; |
||||
calvertvl = "Victor Calvert <calvertvl@gmail.com>"; |
||||
campadrenalin = "Philip Horger <campadrenalin@gmail.com>"; |
||||
canndrew = "Andrew Cann <shum@canndrew.org>"; |
||||
carlsverre = "Carl Sverre <accounts@carlsverre.com>"; |
||||
casey = "Casey Rodarmor <casey@rodarmor.net>"; |
||||
catern = "Spencer Baugh <sbaugh@catern.com>"; |
||||
caugner = "Claas Augner <nixos@caugner.de>"; |
||||
cdepillabout = "Dennis Gosnell <cdep.illabout@gmail.com>"; |
||||
cfouche = "Chaddaï Fouché <chaddai.fouche@gmail.com>"; |
||||
changlinli = "Changlin Li <mail@changlinli.com>"; |
||||
chaoflow = "Florian Friesdorf <flo@chaoflow.net>"; |
||||
chattered = "Phil Scott <me@philscotted.com>"; |
||||
ChengCat = "Yucheng Zhang <yu@cheng.cat>"; |
||||
chiiruno = "Okina Matara <okinan@protonmail.com>"; |
||||
choochootrain = "Hurshal Patel <hurshal@imap.cc>"; |
||||
chpatrick = "Patrick Chilton <chpatrick@gmail.com>"; |
||||
chreekat = "Bryan Richter <b@chreekat.net>"; |
||||
chris-martin = "Chris Martin <ch.martin@gmail.com>"; |
||||
chrisjefferson = "Christopher Jefferson <chris@bubblescope.net>"; |
||||
chrisrosset = "Christopher Rosset <chris@rosset.org.uk>"; |
||||
christopherpoole = "Christopher Mark Poole <mail@christopherpoole.net>"; |
||||
ciil = "Simon Lackerbauer <simon@lackerbauer.com>"; |
||||
ck3d = "Christian Kögler <ck3d@gmx.de>"; |
||||
ckampka = "Christian Kampka <christian@kampka.net>"; |
||||
ckauhaus = "Christian Kauhaus <kc@flyingcircus.io>"; |
||||
cko = "Christine Koppelt <christine.koppelt@gmail.com>"; |
||||
cleverca22 = "Michael Bishop <cleverca22@gmail.com>"; |
||||
cmcdragonkai = "Roger Qiu <roger.qiu@matrix.ai>"; |
||||
cmfwyp = "cmfwyp <cmfwyp@riseup.net>"; |
||||
cobbal = "Andrew Cobb <andrew.cobb@gmail.com>"; |
||||
coconnor = "Corey O'Connor <coreyoconnor@gmail.com>"; |
||||
codsl = "codsl <codsl@riseup.net>"; |
||||
codyopel = "Cody Opel <codyopel@gmail.com>"; |
||||
colemickens = "Cole Mickens <cole.mickens@gmail.com>"; |
||||
colescott = "Cole Scott <colescottsf@gmail.com>"; |
||||
copumpkin = "Dan Peebles <pumpkingod@gmail.com>"; |
||||
corngood = "David McFarland <corngood@gmail.com>"; |
||||
coroa = "Jonas Hörsch <jonas@chaoflow.net>"; |
||||
couchemar = "Andrey Pavlov <couchemar@yandex.ru>"; |
||||
cpages = "Carles Pagès <page@ruiec.cat>"; |
||||
cransom = "Casey Ransom <cransom@hubns.net>"; |
||||
cryptix = "Henry Bubert <cryptix@riseup.net>"; |
||||
CrystalGamma = "Jona Stubbe <nixos@crystalgamma.de>"; |
||||
cstrahan = "Charles Strahan <charles@cstrahan.com>"; |
||||
csingley = "Christopher Singley <csingley@gmail.com>"; |
||||
cwoac = "Oliver Matthews <oliver@codersoffortune.net>"; |
||||
DamienCassou = "Damien Cassou <damien@cassou.me>"; |
||||
danbst = "Danylo Hlynskyi <abcz2.uprola@gmail.com>"; |
||||
dancek = "Hannu Hartikainen <hannu.hartikainen@gmail.com>"; |
||||
danharaj = "Dan Haraj <dan@obsidian.systems>"; |
||||
danielfullmer = "Daniel Fullmer <danielrf12@gmail.com>"; |
||||
dasuxullebt = "Christoph-Simon Senjak <christoph.senjak@googlemail.com>"; |
||||
david50407 = "David Kuo <me@davy.tw>"; |
||||
davidak = "David Kleuker <post@davidak.de>"; |
||||
davidrusu = "David Rusu <davidrusu.me@gmail.com>"; |
||||
davorb = "Davor Babic <davor@davor.se>"; |
||||
dbohdan = "Danyil Bohdan <danyil.bohdan@gmail.com>"; |
||||
dbrock = "Daniel Brockman <daniel@brockman.se>"; |
||||
deepfire = "Kosyrev Serge <_deepfire@feelingofgreen.ru>"; |
||||
demin-dmitriy = "Dmitriy Demin <demindf@gmail.com>"; |
||||
derchris = "Christian Gerbrandt <derchris@me.com>"; |
||||
DerGuteMoritz = "Moritz Heidkamp <moritz@twoticketsplease.de>"; |
||||
dermetfan = "Robin Stumm <serverkorken@gmail.com>"; |
||||
DerTim1 = "Tim Digel <tim.digel@active-group.de>"; |
||||
desiderius = "Didier J. Devroye <didier@devroye.name>"; |
||||
devhell = "devhell <\"^\"@regexmail.net>"; |
||||
dezgeg = "Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>"; |
||||
dfordivam = "Divam <dfordivam+nixpkgs@gmail.com>"; |
||||
dfoxfranke = "Daniel Fox Franke <dfoxfranke@gmail.com>"; |
||||
dgonyeo = "Derek Gonyeo <derek@gonyeo.com>"; |
||||
dipinhora = "Dipin Hora <dipinhora+github@gmail.com>"; |
||||
disassembler = "Samuel Leathers <disasm@gmail.com>"; |
||||
dizfer = "David Izquierdo <david@izquierdofernandez.com>"; |
||||
dmalikov = "Dmitry Malikov <malikov.d.y@gmail.com>"; |
||||
DmitryTsygankov = "Dmitry Tsygankov <dmitry.tsygankov@gmail.com>"; |
||||
dmjio = "David Johnson <djohnson.m@gmail.com>"; |
||||
dochang = "Desmond O. Chang <dochang@gmail.com>"; |
||||
domenkozar = "Domen Kozar <domen@dev.si>"; |
||||
dotlambda = "Robert Schütz <rschuetz17@gmail.com>"; |
||||
doublec = "Chris Double <chris.double@double.co.nz>"; |
||||
dpaetzel = "David Pätzel <david.a.paetzel@gmail.com>"; |
||||
dpflug = "David Pflug <david@pflug.email>"; |
||||
drets = "Dmytro Rets <dmitryrets@gmail.com>"; |
||||
drewkett = "Andrew Burkett <burkett.andrew@gmail.com>"; |
||||
dsferruzza = "David Sferruzza <david.sferruzza@gmail.com>"; |
||||
dtzWill = "Will Dietz <nix@wdtz.org>"; |
||||
dupgit = "Olivier Delhomme <olivier.delhomme@free.fr>"; |
||||
dywedir = "Vladyslav M. <dywedir@protonmail.ch>"; |
||||
dzabraev = "Maksim Dzabraev <dzabraew@gmail.com>"; |
||||
e-user = "Alexander Kahl <nixos@sodosopa.io>"; |
||||
earldouglas = "James Earl Douglas <james@earldouglas.com>"; |
||||
earvstedt = "Erik Arvstedt <erik.arvstedt@gmail.com>"; |
||||
ebzzry = "Rommel Martinez <ebzzry@ebzzry.io>"; |
||||
edanaher = "Evan Danaher <nixos@edanaher.net>"; |
||||
edef = "edef <edef@edef.eu>"; |
||||
ederoyd46 = "Matthew Brown <matt@ederoyd.co.uk>"; |
||||
eduarrrd = "Eduard Bachmakov <e.bachmakov@gmail.com>"; |
||||
edwtjo = "Edward Tjörnhammar <ed@cflags.cc>"; |
||||
eelco = "Eelco Dolstra <eelco.dolstra@logicblox.com>"; |
||||
ehegnes = "Eric Hegnes <eric.hegnes@gmail.com>"; |
||||
ehmry = "Emery Hemingway <emery@vfemail.net>"; |
||||
eikek = "Eike Kettner <eike.kettner@posteo.de>"; |
||||
ekleog = "Leo Gaspard <leo@gaspard.io>"; |
||||
elasticdog = "Aaron Bull Schaefer <aaron@elasticdog.com>"; |
||||
eleanor = "Dejan Lukan <dejan@proteansec.com>"; |
||||
elijahcaine = "Elijah Caine <elijahcainemv@gmail.com>"; |
||||
elitak = "Eric Litak <elitak@gmail.com>"; |
||||
ellis = "Ellis Whitehead <nixos@ellisw.net>"; |
||||
enzime = "Michael Hoang <enzime@users.noreply.github.com>"; |
||||
eperuffo = "Emanuele Peruffo <info@emanueleperuffo.com>"; |
||||
epitrochoid = "Mabry Cervin <mpcervin@uncg.edu>"; |
||||
eqyiel = "Ruben Maher <r@rkm.id.au>"; |
||||
ericbmerritt = "Eric Merritt <eric@afiniate.com>"; |
||||
ericsagnes = "Eric Sagnes <eric.sagnes@gmail.com>"; |
||||
ericson2314 = "John Ericson <John.Ericson@Obsidian.Systems>"; |
||||
erictapen = "Justin Humm <justin.humm@posteo.de>"; |
||||
erikryb = "Erik Rybakken <erik.rybakken@math.ntnu.no>"; |
||||
ertes = "Ertugrul Söylemez <esz@posteo.de>"; |
||||
erosennin = "Andrey Golovizin <ag@sologoc.com>"; |
||||
ethercrow = "Dmitry Ivanov <ethercrow@gmail.com>"; |
||||
etu = "Elis Hirwing <elis@hirwing.se>"; |
||||
exfalso = "Andras Slemmer <0slemi0@gmail.com>"; |
||||
exi = "Reno Reckling <nixos@reckling.org>"; |
||||
exlevan = "Alexey Levan <exlevan@gmail.com>"; |
||||
expipiplus1 = "Joe Hermaszewski <nix@monoid.al>"; |
||||
fadenb = "Tristan Helmich <tristan.helmich+nixos@gmail.com>"; |
||||
falsifian = "James Cook <james.cook@utoronto.ca>"; |
||||
fare = "Francois-Rene Rideau <fahree@gmail.com>"; |
||||
f-breidenstein = "Felix Breidenstein <mail@felixbreidenstein.de>"; |
||||
fgaz = "Francesco Gazzetta <francygazz@gmail.com>"; |
||||
FireyFly = "Jonas Höglund <nix@firefly.nu>"; |
||||
flokli = "Florian Klink <flokli@flokli.de>"; |
||||
florianjacob = "Florian Jacob <projects+nixos@florianjacob.de>"; |
||||
flosse = "Markus Kohlhase <mail@markus-kohlhase.de>"; |
||||
fluffynukeit = "Daniel Austin <dan@fluffynukeit.com>"; |
||||
fmthoma = "Franz Thoma <f.m.thoma@googlemail.com>"; |
||||
forkk = "Andrew Okin <forkk@forkk.net>"; |
||||
fornever = "Friedrich von Never <friedrich@fornever.me>"; |
||||
fpletz = "Franz Pletz <fpletz@fnordicwalking.de>"; |
||||
fps = "Florian Paul Schmidt <mista.tapas@gmx.net>"; |
||||
fridh = "Frederik Rietdijk <fridh@fridh.nl>"; |
||||
frlan = "Frank Lanitz <frank@frank.uvena.de>"; |
||||
fro_ozen = "fro_ozen <fro_ozen@gmx.de>"; |
||||
ftrvxmtrx = "Siarhei Zirukin <ftrvxmtrx@gmail.com>"; |
||||
funfunctor = "Edward O'Callaghan <eocallaghan@alterapraxis.com>"; |
||||
fuuzetsu = "Mateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk>"; |
||||
fuzzy-id = "Thomas Bach <hacking+nixos@babibo.de>"; |
||||
fxfactorial = "Edgar Aroutiounian <edgar.factorial@gmail.com>"; |
||||
gabesoft = "Gabriel Adomnicai <gabesoft@gmail.com>"; |
||||
gal_bolle = "Florent Becker <florent.becker@ens-lyon.org>"; |
||||
garbas = "Rok Garbas <rok@garbas.si>"; |
||||
garrison = "Jim Garrison <jim@garrison.cc>"; |
||||
gavin = "Gavin Rogers <gavin@praxeology.co.uk>"; |
||||
gebner = "Gabriel Ebner <gebner@gebner.org>"; |
||||
geistesk = "Alvar Penning <post@0x21.biz>"; |
||||
genesis = "Ronan Bignaux <ronan@aimao.org>"; |
||||
georgewhewell = "George Whewell <georgerw@gmail.com>"; |
||||
gilligan = "Tobias Pflug <tobias.pflug@gmail.com>"; |
||||
giogadi = "Luis G. Torres <lgtorres42@gmail.com>"; |
||||
gleber = "Gleb Peregud <gleber.p@gmail.com>"; |
||||
glenns = "Glenn Searby <glenn.searby@gmail.com>"; |
||||
globin = "Robin Gloster <mail@glob.in>"; |
||||
gnidorah = "Alex Ivanov <yourbestfriend@opmbx.org>"; |
||||
goibhniu = "Cillian de Róiste <cillian.deroiste@gmail.com>"; |
||||
Gonzih = "Max Gonzih <gonzih@gmail.com>"; |
||||
goodrone = "Andrew Trachenko <goodrone@gmail.com>"; |
||||
gpyh = "Yacine Hmito <yacine.hmito@gmail.com>"; |
||||
grahamc = "Graham Christensen <graham@grahamc.com>"; |
||||
grburst = "Julius Elias <grburst@openmailbox.org>"; |
||||
gridaphobe = "Eric Seidel <eric@seidel.io>"; |
||||
guibert = "David Guibert <david.guibert@gmail.com>"; |
||||
guibou = "Guillaume Bouchard <guillaum.bouchard@gmail.com>"; |
||||
guillaumekoenig = "Guillaume Koenig <guillaume.edward.koenig@gmail.com>"; |
||||
guyonvarch = "Joris Guyonvarch <joris@guyonvarch.me>"; |
||||
hakuch = "Jesse Haber-Kucharsky <hakuch@gmail.com>"; |
||||
hamhut1066 = "Hamish Hutchings <github@hamhut1066.com>"; |
||||
havvy = "Ryan Scheel <ryan.havvy@gmail.com>"; |
||||
hbunke = "Hendrik Bunke <bunke.hendrik@gmail.com>"; |
||||
hce = "Hans-Christian Esperer <hc@hcesperer.org>"; |
||||
hectorj = "Hector Jusforgues <hector.jusforgues+nixos@gmail.com>"; |
||||
hedning = "Tor Hedin Brønner <torhedinbronner@gmail.com>"; |
||||
heel = "Sergii Paryzhskyi <parizhskiy@gmail.com>"; |
||||
henrytill = "Henry Till <henrytill@gmail.com>"; |
||||
hhm = "hhm <heehooman+nixpkgs@gmail.com>"; |
||||
hinton = "Tom Hinton <t@larkery.com>"; |
||||
hodapp = "Chris Hodapp <hodapp87@gmail.com>"; |
||||
hrdinka = "Christoph Hrdinka <c.nix@hrdinka.at>"; |
||||
htr = "Hugo Tavares Reis <hugo@linux.com>"; |
||||
hyphon81 = "Masato Yonekawa <zero812n@gmail.com>"; |
||||
iand675 = "Ian Duncan <ian@iankduncan.com>"; |
||||
ianwookim = "Ian-Woo Kim <ianwookim@gmail.com>"; |
||||
iblech = "Ingo Blechschmidt <iblech@speicherleck.de>"; |
||||
igsha = "Igor Sharonov <igor.sharonov@gmail.com>"; |
||||
ikervagyok = "Balázs Lengyel <ikervagyok@gmail.com>"; |
||||
ilya-kolpakov = "Ilya Kolpakov <ilya.kolpakov@gmail.com>"; |
||||
infinisil = "Silvan Mosberger <infinisil@icloud.com>"; |
||||
ironpinguin = "Michele Catalano <michele@catalano.de>"; |
||||
ivan-tkatchev = "Ivan Tkatchev <tkatchev@gmail.com>"; |
||||
ixmatus = "Parnell Springmeyer <parnell@digitalmentat.com>"; |
||||
izorkin = "Yurii Izorkin <Izorkin@gmail.com>"; |
||||
ixxie = "Matan Bendix Shenhav <matan@fluxcraft.net>"; |
||||
j-keck = "Jürgen Keck <jhyphenkeck@gmail.com>"; |
||||
jagajaga = "Arseniy Seroka <ars.seroka@gmail.com>"; |
||||
jammerful = "jammerful <jammerful@gmail.com>"; |
||||
jansol = "Jan Solanti <jan.solanti@paivola.fi>"; |
||||
javaguirre = "Javier Aguirre <contacto@javaguirre.net>"; |
||||
jb55 = "William Casarin <jb55@jb55.com>"; |
||||
jbedo = "Justin Bedő <cu@cua0.org>"; |
||||
jcumming = "Jack Cummings <jack@mudshark.org>"; |
||||
jdagilliland = "Jason Gilliland <jdagilliland@gmail.com>"; |
||||
jefdaj = "Jeffrey David Johnson <jefdaj@gmail.com>"; |
||||
jensbin = "Jens Binkert <jensbin@protonmail.com>"; |
||||
jerith666 = "Matt McHenry <github@matt.mchenryfamily.org>"; |
||||
jfb = "James Felix Black <james@yamtime.com>"; |
||||
jfrankenau = "Johannes Frankenau <johannes@frankenau.net>"; |
||||
jgeerds = "Jascha Geerds <jascha@jgeerds.name>"; |
||||
jgertm = "Tim Jaeger <jger.tm@gmail.com>"; |
||||
jgillich = "Jakob Gillich <jakob@gillich.me>"; |
||||
jhhuh = "Ji-Haeng Huh <jhhuh.note@gmail.com>"; |
||||
jirkamarsik = "Jirka Marsik <jiri.marsik89@gmail.com>"; |
||||
jlesquembre = "José Luis Lafuente <jl@lafuente.me>"; |
||||
jluttine = "Jaakko Luttinen <jaakko.luttinen@iki.fi>"; |
||||
Jo = "Joachim Ernst <0x4A6F@shackspace.de>"; |
||||
joachifm = "Joachim Fasting <joachifm@fastmail.fm>"; |
||||
joamaki = "Jussi Maki <joamaki@gmail.com>"; |
||||
joelmo = "Joel Moberg <joel.moberg@gmail.com>"; |
||||
joelteon = "Joel Taylor <me@joelt.io>"; |
||||
johbo = "Johannes Bornhold <johannes@bornhold.name>"; |
||||
johnazoidberg = "Daniel Schäfer <git@danielschaefer.me>"; |
||||
johnmh = "John M. Harris, Jr. <johnmh@openblox.org>"; |
||||
johnramsden = "John Ramsden <johnramsden@riseup.net>"; |
||||
joko = "Ioannis Koutras <ioannis.koutras@gmail.com>"; |
||||
jonafato = "Jon Banafato <jon@jonafato.com>"; |
||||
joncojonathan = "Jonathan Haddock <joncojonathan@gmail.com>"; |
||||
jpdoyle = "Joe Doyle <joethedoyle@gmail.com>"; |
||||
jpierre03 = "Jean-Pierre PRUNARET <nix@prunetwork.fr>"; |
||||
jpotier = "Martin Potier <jpo.contributes.to.nixos@marvid.fr>"; |
||||
jraygauthier = "Raymond Gauthier <jraygauthier@gmail.com>"; |
||||
jtojnar = "Jan Tojnar <jtojnar@gmail.com>"; |
||||
juliendehos = "Julien Dehos <dehos@lisic.univ-littoral.fr>"; |
||||
jwiegley = "John Wiegley <johnw@newartisans.com>"; |
||||
jwilberding = "Jordan Wilberding <jwilberding@afiniate.com>"; |
||||
jyp = "Jean-Philippe Bernardy <jeanphilippe.bernardy@gmail.com>"; |
||||
jzellner = "Jeff Zellner <jeffz@eml.cc>"; |
||||
kaiha = "Kai Harries <kai.harries@gmail.com>"; |
||||
kamilchm = "Kamil Chmielewski <kamil.chm@gmail.com>"; |
||||
kampfschlaefer = "Arnold Krille <arnold@arnoldarts.de>"; |
||||
karolchmist = "karolchmist <info+nix@chmist.com>"; |
||||
kentjames = "James Kent <jameschristopherkent@gmail.com"; |
||||
kevincox = "Kevin Cox <kevincox@kevincox.ca>"; |
||||
khumba = "Bryan Gardiner <bog@khumba.net>"; |
||||
KibaFox = "Kiba Fox <kiba.fox@foxypossibilities.com>"; |
||||
kierdavis = "Kier Davis <kierdavis@gmail.com>"; |
||||
kiloreux = "Kiloreux Emperex <kiloreux@gmail.com>"; |
||||
kini = "Keshav Kini <keshav.kini@gmail.com>"; |
||||
kkallio = "Karn Kallio <tierpluspluslists@gmail.com>"; |
||||
knedlsepp = "Josef Kemetmüller <josef.kemetmueller@gmail.com>"; |
||||
konimex = "Muhammad Herdiansyah <herdiansyah@netc.eu>"; |
||||
koral = "Koral <koral@mailoo.org>"; |
||||
kovirobi = "Kovacsics Robert <kovirobi@gmail.com>"; |
||||
kquick = "Kevin Quick <quick@sparq.org>"; |
||||
kragniz = "Louis Taylor <louis@kragniz.eu>"; |
||||
kristoff3r = "Kristoffer Søholm <k.soeholm@gmail.com>"; |
||||
ktosiek = "Tomasz Kontusz <tomasz.kontusz@gmail.com>"; |
||||
kuznero = "Roman Kuznetsov <roman@kuznero.com>"; |
||||
lasandell = "Luke Sandell <lasandell@gmail.com>"; |
||||
lassulus = "Lassulus <lassulus@gmail.com>"; |
||||
layus = "Guillaume Maudoux <layus.on@gmail.com>"; |
||||
lblasc = "Luka Blaskovic <lblasc@znode.net>"; |
||||
ldesgoui = "Lucas Desgouilles <ldesgoui@gmail.com>"; |
||||
league = "Christopher League <league@contrapunctus.net>"; |
||||
lebastr = "Alexander Lebedev <lebastr@gmail.com>"; |
||||
ledif = "Adam Fidel <refuse@gmail.com>"; |
||||
leemachin = "Lee Machin <me@mrl.ee>"; |
||||
leenaars = "Michiel Leenaars <ml.software@leenaa.rs>"; |
||||
lejonet = "Daniel Kuehn <daniel@kuehn.se>"; |
||||
leonardoce = "Leonardo Cecchi <leonardo.cecchi@gmail.com>"; |
||||
lethalman = "Luca Bruno <lucabru@src.gnome.org>"; |
||||
lewo = "Antoine Eiche <lewo@abesis.fr>"; |
||||
lheckemann = "Linus Heckemann <git@sphalerite.org>"; |
||||
lhvwb = "Nathaniel Baxter <nathaniel.baxter@gmail.com>"; |
||||
lihop = "Leroy Hopson <nixos@leroy.geek.nz>"; |
||||
limeytexan = "Michael Brantley <limeytexan@gmail.com>"; |
||||
linquize = "Linquize <linquize@yahoo.com.hk>"; |
||||
linus = "Linus Arver <linusarver@gmail.com>"; |
||||
lluchs = "Lukas Werling <lukas.werling@gmail.com>"; |
||||
lnl7 = "Daiderd Jordan <daiderd@gmail.com>"; |
||||
lo1tuma = "Mathias Schreck <schreck.mathias@gmail.com>"; |
||||
loskutov = "Ignat Loskutov <ignat.loskutov@gmail.com>"; |
||||
lovek323 = "Jason O'Conal <jason@oconal.id.au>"; |
||||
lowfatcomputing = "Andreas Wagner <andreas.wagner@lowfatcomputing.org>"; |
||||
lsix = "Lancelot SIX <lsix@lancelotsix.com>"; |
||||
lschuermann = "Leon Schuermann <leon.git@is.currently.online>"; |
||||
ltavard = "Laure Tavard <laure.tavard@univ-grenoble-alpes.fr>"; |
||||
lucas8 = "Luc Chabassier <luc.linux@mailoo.org>"; |
||||
ludo = "Ludovic Courtès <ludo@gnu.org>"; |
||||
lufia = "Kyohei Kadota <lufia@lufia.org>"; |
||||
luispedro = "Luis Pedro Coelho <luis@luispedro.org>"; |
||||
lukego = "Luke Gorrie <luke@snabb.co>"; |
||||
luz = "Luz <luz666@daum.net>"; |
||||
lw = "Sergey Sofeychuk <lw@fmap.me>"; |
||||
lyt = "Tim Liou <wheatdoge@gmail.com>"; |
||||
m3tti = "Mathaeus Sander <mathaeus.peter.sander@gmail.com>"; |
||||
ma27 = "Maximilian Bosch <maximilian@mbosch.me>"; |
||||
madjar = "Georges Dubus <georges.dubus@compiletoi.net>"; |
||||
magnetophon = "Bart Brouns <bart@magnetophon.nl>"; |
||||
mahe = "Matthias Herrmann <matthias.mh.herrmann@gmail.com>"; |
||||
makefu = "Felix Richter <makefu@syntax-fehler.de>"; |
||||
malyn = "Michael Alyn Miller <malyn@strangeGizmo.com>"; |
||||
manveru = "Michael Fellinger <m.fellinger@gmail.com>"; |
||||
marcweber = "Marc Weber <marco-oweber@gmx.de>"; |
||||
markus1189 = "Markus Hauck <markus1189@gmail.com>"; |
||||
markuskowa = "Markus Kowalewski <markus.kowalewski@gmail.com>"; |
||||
markWot = "Markus Wotringer <markus@wotringer.de>"; |
||||
martijnvermaat = "Martijn Vermaat <martijn@vermaat.name>"; |
||||
martingms = "Martin Gammelsæter <martin@mg.am>"; |
||||
matejc = "Matej Cotman <cotman.matej@gmail.com>"; |
||||
mathnerd314 = "Mathnerd314 <mathnerd314.gph+hs@gmail.com>"; |
||||
matthewbauer = "Matthew Bauer <mjbauer95@gmail.com>"; |
||||
matthiasbeyer = "Matthias Beyer <mail@beyermatthias.de>"; |
||||
maurer = "Matthew Maurer <matthew.r.maurer+nix@gmail.com>"; |
||||
mbakke = "Marius Bakke <mbakke@fastmail.com>"; |
||||
mbbx6spp = "Susan Potter <me@susanpotter.net>"; |
||||
mbe = "Brandon Edens <brandonedens@gmail.com>"; |
||||
mbode = "Maximilian Bode <maxbode@gmail.com>"; |
||||
mboes = "Mathieu Boespflug <mboes@tweag.net>"; |
||||
mbrgm = "Marius Bergmann <marius@yeai.de>"; |
||||
mcmtroffaes = "Matthias C. M. Troffaes <matthias.troffaes@gmail.com>"; |
||||
mdaiter = "Matthew S. Daiter <mdaiter8121@gmail.com>"; |
||||
meditans = "Carlo Nucera <meditans@gmail.com>"; |
||||
mehandes = "Matt Deming <niewskici@gmail.com>"; |
||||
meisternu = "Matt Miemiec <meister@krutt.org>"; |
||||
metabar = "Celine Mercier <softs@metabarcoding.org>"; |
||||
mgdelacroix = "Miguel de la Cruz <mgdelacroix@gmail.com>"; |
||||
mgttlinger = "Merlin Göttlinger <megoettlinger@gmail.com"; |
||||
mguentner = "Maximilian Güntner <code@klandest.in>"; |
||||
mic92 = "Jörg Thalheim <joerg@thalheim.io>"; |
||||
michaelpj = "Michael Peyton Jones <michaelpj@gmail.com>"; |
||||
michalrus = "Michal Rus <m@michalrus.com>"; |
||||
michelk = "Michel Kuhlmann <michel@kuhlmanns.info>"; |
||||
mickours = "Michael Mercier <mickours@gmail.com<"; |
||||
midchildan = "midchildan <midchildan+nix@gmail.com>"; |
||||
mikefaille = "Michaël Faille <michael@faille.io>"; |
||||
mikoim = "Eshin Kunishima <ek@esh.ink>"; |
||||
miltador = "Vasiliy Solovey <miltador@yandex.ua>"; |
||||
mimadrid = "Miguel Madrid <mimadrid@ucm.es>"; |
||||
mirdhyn = "Merlin Gaillard <mirdhyn@gmail.com>"; |
||||
mirrexagon = "Andrew Abbott <mirrexagon@mirrexagon.com>"; |
||||
mjanczyk = "Marcin Janczyk <m@dragonvr.pl>"; |
||||
mjp = "Mike Playle <mike@mythik.co.uk>"; # github = "MikePlayle"; |
||||
mkg = "Mark K Gardner <mkg@vt.edu>"; |
||||
mlieberman85 = "Michael Lieberman <mlieberman85@gmail.com>"; |
||||
mmahut = "Marek Mahut <marek.mahut@gmail.com>"; |
||||
moaxcp = "John Mercier <moaxcp@gmail.com>"; |
||||
modulistic = "Pablo Costa <modulistic@gmail.com>"; |
||||
mog = "Matthew O'Gorman <mog-lists@rldn.net>"; |
||||
montag451 = "montag451 <montag451@laposte.net>"; |
||||
moosingin3space = "Nathan Moos <moosingin3space@gmail.com>"; |
||||
moredread = "André-Patrick Bubel <code@apb.name>"; |
||||
moretea = "Maarten Hoogendoorn <maarten@moretea.nl>"; |
||||
mornfall = "Petr Ročkai <me@mornfall.net>"; |
||||
MostAwesomeDude = "Corbin Simpson <cds@corbinsimpson.com>"; |
||||
mounium = "Katona László <muoniurn@gmail.com>"; |
||||
MP2E = "Cray Elliott <MP2E@archlinux.us>"; |
||||
mpcsh = "Mark Cohen <m@mpc.sh>"; |
||||
mpickering = "Matthew Pickering <matthewtpickering@gmail.com>"; |
||||
mpscholten = "Marc Scholten <marc@mpscholten.de>"; |
||||
mpsyco = "Francis St-Amour <fr.st-amour@gmail.com>"; |
||||
mrVanDalo = "Ingolf Wanger <contact@ingolf-wagner.de>"; |
||||
msackman = "Matthew Sackman <matthew@wellquite.org>"; |
||||
mschristiansen = "Mikkel Christiansen <mikkel@rheosystems.com>"; |
||||
mstarzyk = "Maciek Starzyk <mstarzyk@gmail.com>"; |
||||
msteen = "Matthijs Steen <emailmatthijs@gmail.com>"; |
||||
mt-caret = "Masayuki Takeda <mtakeda.enigsol@gmail.com>"; |
||||
mtreskin = "Max Treskin <zerthurd@gmail.com>"; |
||||
mudri = "James Wood <lamudri@gmail.com>"; |
||||
muflax = "Stefan Dorn <mail@muflax.com>"; |
||||
myrl = "Myrl Hex <myrl.0xf@gmail.com>"; |
||||
nadrieril = "Nadrieril Feneanar <nadrieril@gmail.com>"; |
||||
namore = "Roman Naumann <namor@hemio.de>"; |
||||
nand0p = "Fernando Jose Pando <nando@hex7.com>"; |
||||
Nate-Devv = "Nathan Moore <natedevv@gmail.com>"; |
||||
nathan-gs = "Nathan Bijnens <nathan@nathan.gs>"; |
||||
nckx = "Tobias Geerinckx-Rice <github@tobias.gr>"; |
||||
ndowens = "Nathan Owens <ndowens04@gmail.com>"; |
||||
neeasade = "Nathan Isom <nathanisom27@gmail.com>"; |
||||
nequissimus = "Tim Steinbach <tim@nequissimus.com>"; |
||||
nfjinjing = "Jinjing Wang <nfjinjing@gmail.com>"; |
||||
nh2 = "Niklas Hambüchen <mail@nh2.me>"; |
||||
nhooyr = "Anmol Sethi <anmol@aubble.com>"; |
||||
nickhu = "Nick Hu <me@nickhu.co.uk>"; |
||||
nicknovitski = "Nick Novitski <nixpkgs@nicknovitski.com>"; |
||||
nico202 = "Nicolò Balzarotti <anothersms@gmail.com>"; |
||||
NikolaMandic = "Ratko Mladic <nikola@mandic.email>"; |
||||
ninjatrappeur = "Félix Baylac-Jacqué <felix@alternativebit.fr>"; |
||||
nipav = "Niko Pavlinek <niko.pavlinek@gmail.com>"; |
||||
nixy = "Andrew R. M. <nixy@nixy.moe>"; |
||||
nmattia = "Nicolas Mattia <nicolas@nmattia.com>"; |
||||
nocoolnametom = "Tom Doggett <nocoolnametom@gmail.com>"; |
||||
notthemessiah = "Brian Cohen <brian.cohen.88@gmail.com>"; |
||||
np = "Nicolas Pouillard <np.nix@nicolaspouillard.fr>"; |
||||
nslqqq = "Nikita Mikhailov <nslqqq@gmail.com>"; |
||||
nthorne = "Niklas Thörne <notrupertthorne@gmail.com>"; |
||||
nyarly = "Judson Lester <nyarly@gmail.com>"; |
||||
obadz = "obadz <obadz-nixos@obadz.com>"; |
||||
ocharles = "Oliver Charles <ollie@ocharles.org.uk>"; |
||||
odi = "Oliver Dunkl <oliver.dunkl@gmail.com>"; |
||||
offline = "Jaka Hudoklin <jakahudoklin@gmail.com>"; |
||||
oida = "oida <oida@posteo.de>"; |
||||
okasu = "Okasu <oka.sux@gmail.com>"; |
||||
olcai = "Erik Timan <dev@timan.info>"; |
||||
olejorgenb = "Ole Jørgen Brønner <olejorgenb@yahoo.no>"; |
||||
olynch = "Owen Lynch <owen@olynch.me>"; |
||||
orbekk = "KJ Ørbekk <kjetil.orbekk@gmail.com>"; |
||||
orbitz = "Malcolm Matalka <mmatalka@gmail.com>"; |
||||
orivej = "Orivej Desh <orivej@gmx.fr>"; |
||||
osener = "Ozan Sener <ozan@ozansener.com>"; |
||||
otwieracz = "Slawomir Gonet <slawek@otwiera.cz>"; |
||||
oxij = "Jan Malakhovski <oxij@oxij.org>"; |
||||
paholg = "Paho Lurie-Gregg <paho@paholg.com>"; |
||||
pakhfn = "Fedor Pakhomov <pakhfn@gmail.com>"; |
||||
panaeon = "Vitalii Voloshyn <vitalii.voloshyn@gmail.com"; |
||||
paperdigits = "Mica Semrick <mica@silentumbrella.com>"; |
||||
paraseba = "Sebastian Galkin <paraseba@gmail.com>"; |
||||
pashev = "Igor Pashev <pashev.igor@gmail.com>"; |
||||
patternspandemic = "Brad Christensen <patternspandemic@live.com>"; |
||||
pawelpacana = "Paweł Pacana <pawel.pacana@gmail.com>"; |
||||
pbogdan = "Piotr Bogdan <ppbogdan@gmail.com>"; |
||||
pcarrier = "Pierre Carrier <pc@rrier.ca>"; |
||||
periklis = "theopompos@gmail.com"; |
||||
pesterhazy = "Paulus Esterhazy <pesterhazy@gmail.com>"; |
||||
peterhoeg = "Peter Hoeg <peter@hoeg.com>"; |
||||
peterromfeldhk = "Peter Romfeld <peter.romfeld.hk@gmail.com>"; |
||||
peti = "Peter Simons <simons@cryp.to>"; |
||||
philandstuff = "Philip Potter <philip.g.potter@gmail.com>"; |
||||
phile314 = "Philipp Hausmann <nix@314.ch>"; |
||||
Phlogistique = "Noé Rubinstein <noe.rubinstein@gmail.com>"; |
||||
phreedom = "Evgeny Egorochkin <phreedom@yandex.ru>"; |
||||
phunehehe = "Hoang Xuan Phu <phunehehe@gmail.com>"; |
||||
pierrechevalier83 = "Pierre Chevalier <pierrechevalier83@gmail.com>"; |
||||
pierrer = "Pierre Radermecker <pierrer@pi3r.be>"; |
||||
pierron = "Nicolas B. Pierron <nixos@nbp.name>"; |
||||
piotr = "Piotr Pietraszkiewicz <ppietrasa@gmail.com>"; |
||||
pjbarnoy = "Perry Barnoy <pjbarnoy@gmail.com>"; |
||||
pjones = "Peter Jones <pjones@devalot.com>"; |
||||
pkmx = "Chih-Mao Chen <pkmx.tw@gmail.com>"; |
||||
plcplc = "Philip Lykke Carlsen <plcplc@gmail.com>"; |
||||
plumps = "Maksim Bronsky <maks.bronsky@web.de"; |
||||
pmahoney = "Patrick Mahoney <pat@polycrystal.org>"; |
||||
pmeunier = "Pierre-Étienne Meunier <pierre-etienne.meunier@inria.fr>"; |
||||
pmiddend = "Philipp Middendorf <pmidden@secure.mailbox.org>"; |
||||
pneumaticat = "Kevin Liu <kevin@potatofrom.space>"; |
||||
polyrod = "Maurizio Di Pietro <dc1mdp@gmail.com>"; |
||||
pradeepchhetri = "Pradeep Chhetri <pradeep.chhetri89@gmail.com>"; |
||||
prikhi = "Pavan Rikhi <pavan.rikhi@gmail.com>"; |
||||
primeos = "Michael Weiss <dev.primeos@gmail.com>"; |
||||
Profpatsch = "Profpatsch <mail@profpatsch.de>"; |
||||
proglodyte = "Proglodyte <proglodyte23@gmail.com>"; |
||||
pshendry = "Paul Hendry <paul@pshendry.com>"; |
||||
psibi = "Sibi <sibi@psibi.in>"; |
||||
pstn = "Philipp Steinpaß <philipp@xndr.de>"; |
||||
pSub = "Pascal Wittmann <mail@pascal-wittmann.de>"; |
||||
puffnfresh = "Brian McKenna <brian@brianmckenna.org>"; |
||||
pxc = "Patrick Callahan <patrick.callahan@latitudeengineering.com>"; |
||||
qknight = "Joachim Schiele <js@lastlog.de>"; |
||||
ragge = "Ragnar Dahlen <r.dahlen@gmail.com>"; |
||||
ralith = "Benjamin Saunders <ben.e.saunders@gmail.com>"; |
||||
ramkromberg = "Ram Kromberg <ramkromberg@mail.com>"; |
||||
rardiol = "Ricardo Ardissone <ricardo.ardissone@gmail.com>"; |
||||
rasendubi = "Alexey Shmalko <rasen.dubi@gmail.com>"; |
||||
raskin = "Michael Raskin <7c6f434c@mail.ru>"; |
||||
ravloony = "Tom Macdonald <ravloony@gmail.com>"; |
||||
razvan = "Răzvan Flavius Panda <razvan.panda@gmail.com>"; |
||||
rbasso = "Rafael Basso <rbasso@sharpgeeks.net>"; |
||||
redbaron = "Maxim Ivanov <ivanov.maxim@gmail.com>"; |
||||
redvers = "Redvers Davies <red@infect.me>"; |
||||
refnil = "Martin Lavoie <broemartino@gmail.com>"; |
||||
regnat = "Théophane Hufschmitt <regnat@regnat.ovh>"; |
||||
relrod = "Ricky Elrod <ricky@elrod.me>"; |
||||
renzo = "Renzo Carbonara <renzocarbonara@gmail.com>"; |
||||
retrry = "Tadas Barzdžius <retrry@gmail.com>"; |
||||
rht = "rht <rhtbot@protonmail.com>"; |
||||
richardipsum = "Richard Ipsum <richardipsum@fastmail.co.uk>"; |
||||
rick68 = "Wei-Ming Yang <rick68@gmail.com>"; |
||||
rickynils = "Rickard Nilsson <rickynils@gmail.com>"; |
||||
ris = "Robert Scott <code@humanleg.org.uk>"; |
||||
rlupton20 = "Richard Lupton <richard.lupton@gmail.com>"; |
||||
rnhmjoj = "Michele Guerini Rocco <micheleguerinirocco@me.com>"; |
||||
rob = "Rob Vermaas <rob.vermaas@gmail.com>"; |
||||
robberer = "Longrin Wischnewski <robberer@freakmail.de>"; |
||||
robbinch = "Robbin C. <robbinch33@gmail.com>"; |
||||
roberth = "Robert Hensing <nixpkgs@roberthensing.nl>"; |
||||
robertodr = "Roberto Di Remigio <roberto.diremigio@gmail.com>"; |
||||
robgssp = "Rob Glossop <robgssp@gmail.com>"; |
||||
roblabla = "Robin Lambertz <robinlambertz+dev@gmail.com>"; |
||||
roconnor = "Russell O'Connor <roconnor@theorem.ca>"; |
||||
romildo = "José Romildo Malaquias <malaquias@gmail.com>"; |
||||
rongcuid = "Rongcui Dong <rongcuid@outlook.com>"; |
||||
rszibele = "Richard Szibele <richard@szibele.com>"; |
||||
rtreffer = "Rene Treffer <treffer+nixos@measite.de>"; |
||||
rushmorem = "Rushmore Mushambi <rushmore@webenchanter.com>"; |
||||
rvl = "Rodney Lorrimar <dev+nix@rodney.id.au>"; |
||||
rvlander = "Gaëtan André <rvlander@gaetanandre.eu>"; |
||||
rvolosatovs = "Roman Volosatovs <rvolosatovs@riseup.net>"; |
||||
ryanartecona = "Ryan Artecona <ryanartecona@gmail.com>"; |
||||
ryansydnor = "Ryan Sydnor <ryan.t.sydnor@gmail.com>"; |
||||
ryantm = "Ryan Mulligan <ryan@ryantm.com>"; |
||||
ryantrinkle = "Ryan Trinkle <ryan.trinkle@gmail.com>"; |
||||
rybern = "Ryan Bernstein <ryan.bernstein@columbia.edu>"; |
||||
rycee = "Robert Helgesson <robert@rycee.net>"; |
||||
ryneeverett = "Ryne Everett <ryneeverett@gmail.com>"; |
||||
rzetterberg = "Richard Zetterberg <richard.zetterberg@gmail.com>"; |
||||
s1lvester = "Markus Silvester <s1lvester@bockhacker.me>"; |
||||
samdroid-apps = "Sam Parkinson <sam@sam.today>"; |
||||
samueldr = "Samuel Dionne-Riel <samuel@dionne-riel.com>"; |
||||
samuelrivas = "Samuel Rivas <samuelrivas@gmail.com>"; |
||||
sander = "Sander van der Burg <s.vanderburg@tudelft.nl>"; |
||||
sargon = "Daniel Ehlers <danielehlers@mindeye.net>"; |
||||
sauyon = "Sauyon Lee <s@uyon.co>"; |
||||
schmitthenner = "Fabian Schmitthenner <development@schmitthenner.eu>"; |
||||
schneefux = "schneefux <schneefux+nixos_pkg@schneefux.xyz>"; |
||||
schristo = "Scott Christopher <schristopher@konputa.com>"; |
||||
scode = "Peter Schuller <peter.schuller@infidyne.com>"; |
||||
scolobb = "Sergiu Ivanov <sivanov@colimite.fr>"; |
||||
sdll = "Sasha Illarionov <sasha.delly@gmail.com>"; |
||||
SeanZicari = "Sean Zicari <sean.zicari@gmail.com>"; |
||||
sellout = "Greg Pfeil <greg@technomadic.org>"; |
||||
sepi = "Raffael Mancini <raffael@mancini.lu>"; |
||||
seppeljordan = "Sebastian Jordan <sebastian.jordan.mail@googlemail.com>"; |
||||
sfrijters = "Stefan Frijters <sfrijters@gmail.com>"; |
||||
shanemikel = "Shane Pearlman <shanemikel1@gmail.com>"; |
||||
shawndellysse = "Shawn Dellysse <sdellysse@gmail.com>"; |
||||
sheenobu = "Sheena Artrip <sheena.artrip@gmail.com>"; |
||||
sheganinans = "Aistis Raulinaitis <sheganinans@gmail.com>"; |
||||
shell = "Shell Turner <cam.turn@gmail.com>"; |
||||
shlevy = "Shea Levy <shea@shealevy.com>"; |
||||
siddharthist = "Langston Barrett <langston.barrett@gmail.com>"; |
||||
sifmelcara = "Ming Chuan <ming@culpring.com>"; |
||||
sigma = "Yann Hodique <yann.hodique@gmail.com>"; |
||||
simonvandel = "Simon Vandel Sillesen <simon.vandel@gmail.com>"; |
||||
sivteck = "Sivaram Balakrishnan <sivaram1992@gmail.com>"; |
||||
sjagoe = "Simon Jagoe <simon@simonjagoe.com>"; |
||||
sjmackenzie = "Stewart Mackenzie <setori88@gmail.com>"; |
||||
sjourdois = "Stéphane ‘kwisatz’ Jourdois <sjourdois@gmail.com>"; |
||||
skeidel = "Sven Keidel <svenkeidel@gmail.com>"; |
||||
skrzyp = "Jakub Skrzypnik <jot.skrzyp@gmail.com>"; |
||||
sleexyz = "Sean Lee <freshdried@gmail.com>"; |
||||
smironov = "Sergey Mironov <grrwlf@gmail.com>"; |
||||
snyh = "Xia Bin <snyh@snyh.org>"; |
||||
solson = "Scott Olson <scott@solson.me>"; |
||||
sorpaas = "Wei Tang <hi@that.world>"; |
||||
sorki = "Richard Marko <srk@48.io>"; |
||||
spacefrogg = "Michael Raitza <spacefrogg-nixos@meterriblecrew.net>"; |
||||
spencerjanssen = "Spencer Janssen <spencerjanssen@gmail.com>"; |
||||
spinus = "Tomasz Czyż <tomasz.czyz@gmail.com>"; |
||||
sprock = "Roger Mason <rmason@mun.ca>"; |
||||
spwhitt = "Spencer Whitt <sw@swhitt.me>"; |
||||
srhb = "Sarah Brofeldt <sbrofeldt@gmail.com>"; |
||||
SShrike = "Severen Redwood <severen@shrike.me>"; |
||||
stephenmw = "Stephen Weinberg <stephen@q5comm.com>"; |
||||
sternenseemann = "Lukas Epple <post@lukasepple.de>"; |
||||
stesie = "Stefan Siegl <stesie@brokenpipe.de>"; |
||||
steveej = "Stefan Junker <mail@stefanjunker.de>"; |
||||
StijnDW = "Stijn DW <stekke@airmail.cc>"; |
||||
StillerHarpo = "Florian Engel <florianengel39@gmail.com>"; |
||||
stumoss = "Stuart Moss <samoss@gmail.com>"; |
||||
SuprDewd = "Bjarki Ágúst Guðmundsson <suprdewd@gmail.com>"; |
||||
suvash = "Suvash Thapaliya <suvash+nixpkgs@gmail.com>"; |
||||
svsdep = "Vasyl Solovei <svsdep@gmail.com>"; |
||||
swarren83 = "Shawn Warren <shawn.w.warren@gmail.com>"; |
||||
swflint = "Samuel W. Flint <swflint@flintfam.org>"; |
||||
swistak35 = "Rafał Łasocha <me@swistak35.com>"; |
||||
symphorien = "Guillaume Girol <symphorien_nixpkgs@xlumurb.eu>"; |
||||
szczyp = "Szczyp <qb@szczyp.com>"; |
||||
sztupi = "Attila Sztupak <attila.sztupak@gmail.com>"; |
||||
tadfisher = "Tad Fisher <tadfisher@gmail.com>"; |
||||
taeer = "Taeer Bar-Yam <taeer@necsi.edu>"; |
||||
tailhook = "Paul Colomiets <paul@colomiets.name>"; |
||||
taketwo = "Sergey Alexandrov <alexandrov88@gmail.com>"; |
||||
takikawa = "Asumu Takikawa <asumu@igalia.com>"; |
||||
taktoa = "Remy Goldschmidt <taktoa@gmail.com>"; |
||||
taku0 = "Takuo Yonezawa <mxxouy6x3m_github@tatapa.org>"; |
||||
tari = "Peter Marheine <peter@taricorp.net>"; |
||||
tavyc = "Octavian Cerna <octavian.cerna@gmail.com>"; |
||||
TealG = "Teal Gaure <~@Teal.Gr>"; |
||||
teh = "Tom Hunger <tehunger@gmail.com>"; |
||||
telotortium = "Robert Irelan <rirelan@gmail.com>"; |
||||
teozkr = "Teo Klestrup Röijezon <teo@nullable.se>"; |
||||
teto = "Matthieu Coudron <mcoudron@hotmail.com>"; |
||||
tex = "Milan Svoboda <milan.svoboda@centrum.cz>"; |
||||
thall = "Niclas Thall <niclas.thall@gmail.com>"; |
||||
thammers = "Tobias Hammerschmidt <jawr@gmx.de>"; |
||||
thanegill = "Thane Gill <me@thanegill.com>"; |
||||
the-kenny = "Moritz Ulrich <moritz@tarn-vedra.de>"; |
||||
theuni = "Christian Theune <ct@flyingcircus.io>"; |
||||
ThomasMader = "Thomas Mader <thomas.mader@gmail.com>"; |
||||
thoughtpolice = "Austin Seipp <aseipp@pobox.com>"; |
||||
thpham = "Thomas Pham <thomas.pham@ithings.ch>"; |
||||
tilpner = "Till Höppner <till@hoeppner.ws>"; |
||||
timbertson = "Tim Cuthbertson <tim@gfxmonk.net>"; |
||||
timokau = "Timo Kaufmann <timokau@zoho.com>"; |
||||
timor = "timor <timor.dd@googlemail.com>"; |
||||
tiramiseb = "Sébastien Maccagnoni <sebastien@maccagnoni.eu>"; |
||||
titanous = "Jonathan Rudenberg <jonathan@titanous.com>"; |
||||
tnias = "Philipp Bartsch <phil@grmr.de>"; |
||||
tohl = "Tomas Hlavaty <tom@logand.com>"; |
||||
tokudan = "Daniel Frank <git@danielfrank.net>"; |
||||
tomberek = "Thomas Bereknyei <tomberek@gmail.com>"; |
||||
tomsmeets = "Tom Smeets <tom@tsmeets.nl>"; |
||||
travisbhartwell = "Travis B. Hartwell <nafai@travishartwell.net>"; |
||||
treemo = "Matthieu Chevrier <matthieu.chevrier@treemo.fr>"; |
||||
trevorj = "Trevor Joynson <nix@trevor.joynson.io>"; |
||||
trino = "Hubert Mühlhans <muehlhans.hubert@ekodia.de>"; |
||||
troydm = "Dmitry Geurkov <d.geurkov@gmail.com>"; |
||||
tstrobel = "Thomas Strobel <4ZKTUB6TEP74PYJOPWIR013S2AV29YUBW5F9ZH2F4D5UMJUJ6S@hash.domains>"; |
||||
ttuegel = "Thomas Tuegel <ttuegel@mailbox.org>"; |
||||
tv = "Tomislav Viljetić <tv@shackspace.de>"; |
||||
tvestelind = "Tomas Vestelind <tomas.vestelind@fripost.org>"; |
||||
tvorog = "Marsel Zaripov <marszaripov@gmail.com>"; |
||||
tweber = "Thorsten Weber <tw+nixpkgs@360vier.de>"; |
||||
twey = "James ‘Twey’ Kay <twey@twey.co.uk>"; |
||||
unode = "Renato Alves <alves.rjc@gmail.com>"; |
||||
uralbash = "Svintsov Dmitry <root@uralbash.ru>"; |
||||
utdemir = "Utku Demir <me@utdemir.com>"; |
||||
#urkud = "Yury G. Kudryashov <urkud+nix@ya.ru>"; inactive since 2012 |
||||
uwap = "uwap <me@uwap.name>"; |
||||
va1entin = "Valentin Heidelberger <github@valentinsblog.com>"; |
||||
vaibhavsagar = "Vaibhav Sagar <vaibhavsagar@gmail.com>"; |
||||
valeriangalliat = "Valérian Galliat <val@codejam.info>"; |
||||
vandenoever = "Jos van den Oever <jos@vandenoever.info>"; |
||||
vanschelven = "Klaas van Schelven <klaas@vanschelven.com>"; |
||||
vanzef = "Ivan Solyankin <vanzef@gmail.com>"; |
||||
varunpatro = "Varun Patro <varun.kumar.patro@gmail.com>"; |
||||
vbgl = "Vincent Laporte <Vincent.Laporte@gmail.com>"; |
||||
vbmithr = "Vincent Bernardoff <vb@luminar.eu.org>"; |
||||
vcunat = "Vladimír Čunát <vcunat@gmail.com>"; |
||||
vdemeester = "Vincent Demeester <vincent@sbr.pm>"; |
||||
velovix = "Tyler Compton <xaviosx@gmail.com>"; |
||||
veprbl = "Dmitry Kalinkin <veprbl@gmail.com>"; |
||||
vidbina = "David Asabina <vid@bina.me>"; |
||||
vifino = "Adrian Pistol <vifino@tty.sh>"; |
||||
vinymeuh = "VinyMeuh <vinymeuh@gmail.com>"; |
||||
viric = "Lluís Batlle i Rossell <viric@viric.name>"; |
||||
vizanto = "Danny Wilson <danny@prime.vc>"; |
||||
vklquevs = "vklquevs <vklquevs@gmail.com>"; |
||||
vlstill = "Vladimír Štill <xstill@fi.muni.cz>"; |
||||
vmandela = "Venkateswara Rao Mandela <venkat.mandela@gmail.com>"; |
||||
vmchale = "Vanessa McHale <tmchale@wisc.edu>"; |
||||
volhovm = "Mikhail Volkhov <volhovm.cs@gmail.com>"; |
||||
volth = "Jaroslavas Pocepko <jaroslavas@volth.com>"; |
||||
vozz = "Oliver Hunt <oliver.huntuk@gmail.com>"; |
||||
vrthra = "Rahul Gopinath <rahul@gopinath.org>"; |
||||
vyp = "vyp <elisp.vim@gmail.com>"; |
||||
wedens = "wedens <kirill.wedens@gmail.com>"; |
||||
willibutz = "Willi Butz <willibutz@posteo.de>"; |
||||
willtim = "Tim Philip Williams <tim.williams.public@gmail.com>"; |
||||
winden = "Antonio Vargas Gonzalez <windenntw@gmail.com>"; |
||||
wizeman = "Ricardo M. Correia <rcorreia@wizy.org>"; |
||||
wjlroe = "William Roe <willroe@gmail.com>"; |
||||
wkennington = "William A. Kennington III <william@wkennington.com>"; |
||||
wmertens = "Wout Mertens <Wout.Mertens@gmail.com>"; |
||||
woffs = "Frank Doepper <github@woffs.de>"; |
||||
womfoo = "Kranium Gikos Mendoza <kranium@gikos.net>"; |
||||
wscott = "Wayne Scott <wsc9tt@gmail.com>"; |
||||
wyvie = "Elijah Rum <elijahrum@gmail.com>"; |
||||
xaverdh = "Dominik Xaver Hörl <hoe.dom@gmx.de>"; |
||||
xeji = "xeji <xeji@cat3.de>"; |
||||
xnwdd = "Guillermo NWDD <nwdd+nixos@no.team>"; |
||||
xurei = "Olivier Bourdoux <olivier.bourdoux@gmail.com>"; |
||||
xvapx = "Marti Serra <marti.serra.coscollano@gmail.com>"; |
||||
xwvvvvwx = "David Terry <davidterry@posteo.de>"; |
||||
xzfc = "Albert Safin <xzfcpw@gmail.com>"; |
||||
y0no = "Yoann Ono <y0no@y0no.fr>"; |
||||
yarr = "Dmitry V. <savraz@gmail.com>"; |
||||
yegortimoshenko = "Yegor Timoshenko <yegortimoshenko@gmail.com>"; |
||||
yesbox = "Jesper Geertsen Jonsson <jesper.geertsen.jonsson@gmail.com>"; |
||||
ylwghst = "Burim Augustin Berisa <ylwghst@onionmail.info>"; |
||||
yochai = "Yochai <yochai@titat.info>"; |
||||
yorickvp = "Yorick van Pelt <yorickvanpelt@gmail.com>"; |
||||
yrashk = "Yurii Rashkovskii <yrashk@gmail.com>"; |
||||
yuriaisaka = "Yuri Aisaka <yuri.aisaka+nix@gmail.com>"; |
||||
yurrriq = "Eric Bailey <eric@ericb.me>"; |
||||
z77z = "Marco Maggesi <maggesi@math.unifi.it>"; |
||||
zagy = "Christian Zagrodnick <cz@flyingcircus.io>"; |
||||
zalakain = "Unai Zalakain <contact@unaizalakain.info>"; |
||||
zarelit = "David Costa <david@zarel.net>"; |
||||
zauberpony = "Elmar Athmer <elmar@athmer.org>"; |
||||
zef = "Zef Hemel <zef@zef.me>"; |
||||
zimbatm = "zimbatm <zimbatm@zimbatm.com>"; |
||||
Zimmi48 = "Théo Zimmermann <theo.zimmermann@univ-paris-diderot.fr>"; |
||||
zohl = "Al Zohali <zohl@fmap.me>"; |
||||
zoomulator = "Kim Simmons <zoomulator@gmail.com>"; |
||||
zraexy = "David Mell <zraexy@gmail.com>"; |
||||
zx2c4 = "Jason A. Donenfeld <Jason@zx2c4.com>"; |
||||
zzamboni = "Diego Zamboni <diego@zzamboni.org>"; |
||||
} |
@ -0,0 +1,47 @@ |
||||
/* Version string functions. */ |
||||
{ lib }: |
||||
|
||||
let |
||||
|
||||
splitVersion = builtins.splitVersion or (lib.splitString "."); |
||||
|
||||
in |
||||
|
||||
rec { |
||||
|
||||
/* Get the major version string from a string. |
||||
|
||||
Example: |
||||
major "1.2.3" |
||||
=> "1" |
||||
*/ |
||||
major = v: builtins.elemAt (splitVersion v) 0; |
||||
|
||||
/* Get the minor version string from a string. |
||||
|
||||
Example: |
||||
minor "1.2.3" |
||||
=> "2" |
||||
*/ |
||||
minor = v: builtins.elemAt (splitVersion v) 1; |
||||
|
||||
/* Get the patch version string from a string. |
||||
|
||||
Example: |
||||
patch "1.2.3" |
||||
=> "3" |
||||
*/ |
||||
patch = v: builtins.elemAt (splitVersion v) 2; |
||||
|
||||
/* Get string of the first two parts (major and minor) |
||||
of a version string. |
||||
|
||||
Example: |
||||
majorMinor "1.2.3" |
||||
=> "1.2" |
||||
*/ |
||||
majorMinor = v: |
||||
builtins.concatStringsSep "." |
||||
(lib.take 2 (splitVersion v)); |
||||
|
||||
} |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,66 @@ |
||||
#!/usr/bin/env nix-shell |
||||
#!nix-shell -i bash -p jq parallel |
||||
|
||||
# Example how to work with the `lib.maintainers` attrset. |
||||
# Can be used to check whether all user handles are still valid. |
||||
|
||||
set -e |
||||
|
||||
# nixpkgs='<nixpkgs>' |
||||
# if [ -n "$1" ]; then |
||||
|
||||
function checkCommits { |
||||
local user="$1" |
||||
local tmp=$(mktemp) |
||||
curl --silent -w "%{http_code}" \ |
||||
"https://github.com/NixOS/nixpkgs/commits?author=$user" \ |
||||
> "$tmp" |
||||
# the last line of tmp contains the http status |
||||
local status=$(tail -n1 "$tmp") |
||||
local ret= |
||||
case $status in |
||||
200) if <"$tmp" grep -i "no commits found" > /dev/null; then |
||||
ret=1 |
||||
else |
||||
ret=0 |
||||
fi |
||||
;; |
||||
# because of github’s hard request limits, this can take some time |
||||
429) sleep 2 |
||||
printf "." |
||||
checkCommits "$user" |
||||
ret=$? |
||||
;; |
||||
*) printf "BAD STATUS: $(tail -n1 $tmp) for %s\n" "$user"; ret=1 |
||||
ret=1 |
||||
;; |
||||
esac |
||||
rm "$tmp" |
||||
return $ret |
||||
} |
||||
export -f checkCommits |
||||
|
||||
function checkUser { |
||||
local user="$1" |
||||
local status= |
||||
status="$(curl --silent --head "https://github.com/${user}" | grep Status)" |
||||
# checks whether a user handle can be found on github |
||||
if [[ "$status" =~ 404 ]]; then |
||||
printf "%s\t\t\t\t%s\n" "$status" "$user" |
||||
# checks whether the user handle has any nixpkgs commits |
||||
elif checkCommits "$user"; then |
||||
printf "OK!\t\t\t\t%s\n" "$user" |
||||
else |
||||
printf "No Commits!\t\t\t%s\n" "$user" |
||||
fi |
||||
} |
||||
export -f checkUser |
||||
|
||||
# output the maintainers set as json |
||||
# and filter out the github username of each maintainer (if it exists) |
||||
# then check some at the same time |
||||
nix-instantiate -A lib.maintainers --eval --strict --json \ |
||||
| jq -r '.[]|.github|select(.)' \ |
||||
| parallel -j5 checkUser |
||||
|
||||
# parallel -j100 checkUser ::: "eelco" "profpatsch" "Profpatsch" "a" |
@ -0,0 +1,309 @@ |
||||
<!-- vim: set expandtab ts=2 softtabstop=2 shiftwidth=2 smarttab textwidth=80 wrapmargin=2 --> |
||||
<section |
||||
xmlns="http://docbook.org/ns/docbook" |
||||
xmlns:xlink="http://www.w3.org/1999/xlink" |
||||
xmlns:xi="http://www.w3.org/2001/XInclude" |
||||
version="5.0" |
||||
xml:id="sec-installing-from-other-distro"> |
||||
|
||||
<title>Installing from another Linux distribution</title> |
||||
|
||||
<para> |
||||
Because Nix (the package manager) & Nixpkgs (the Nix packages |
||||
collection) can both be installed on any (most?) Linux distributions, |
||||
they can be used to install NixOS in various creative ways. You can, |
||||
for instance: |
||||
</para> |
||||
|
||||
<orderedlist> |
||||
<listitem><para>Install NixOS on another partition, from your existing |
||||
Linux distribution (without the use of a USB or optical |
||||
device!)</para></listitem> |
||||
|
||||
<listitem><para>Install NixOS on the same partition (in place!), from |
||||
your existing non-NixOS Linux distribution using |
||||
<literal>NIXOS_LUSTRATE</literal>.</para></listitem> |
||||
|
||||
<listitem><para>Install NixOS on your hard drive from the Live CD of |
||||
any Linux distribution.</para></listitem> |
||||
</orderedlist> |
||||
|
||||
<para>The first steps to all these are the same:</para> |
||||
|
||||
<orderedlist> |
||||
<listitem> |
||||
<para>Install the Nix package manager:</para> |
||||
|
||||
<para>Short version:</para> |
||||
|
||||
<screen> |
||||
$ bash <(curl https://nixos.org/nix/install) |
||||
$ . $HOME/.nix-profile/etc/profile.d/nix.sh # …or open a fresh shell</screen> |
||||
|
||||
<para>More details in the <link |
||||
xlink:href="https://nixos.org/nix/manual/#chap-quick-start"> |
||||
Nix manual</link></para> |
||||
</listitem> |
||||
|
||||
<listitem> |
||||
<para>Switch to the NixOS channel:</para> |
||||
|
||||
<para>If you've just installed Nix on a non-NixOS distribution, you |
||||
will be on the <literal>nixpkgs</literal> channel by |
||||
default.</para> |
||||
|
||||
<screen> |
||||
$ nix-channel --list |
||||
nixpkgs https://nixos.org/channels/nixpkgs-unstable</screen> |
||||
|
||||
<para>As that channel gets released without running the NixOS |
||||
tests, it will be safer to use the <literal>nixos-*</literal> |
||||
channels instead:</para> |
||||
|
||||
<screen> |
||||
$ nix-channel --add https://nixos.org/channels/nixos-<replaceable>version</replaceable> nixpkgs</screen> |
||||
|
||||
<para>You may want to throw in a <literal>nix-channel |
||||
--update</literal> for good measure.</para> |
||||
</listitem> |
||||
|
||||
<listitem> |
||||
<para>Install the NixOS installation tools:</para> |
||||
|
||||
<para>You'll need <literal>nixos-generate-config</literal> and |
||||
<literal>nixos-install</literal> and we'll throw in some man |
||||
pages and <literal>nixos-enter</literal> just in case you want |
||||
to chroot into your NixOS partition. They are installed by |
||||
default on NixOS, but you don't have NixOS yet..</para> |
||||
|
||||
<screen>$ nix-env -iE "_: with import <nixpkgs/nixos> { configuration = {}; }; with config.system.build; [ nixos-generate-config nixos-install nixos-enter manual.manpages ]"</screen> |
||||
</listitem> |
||||
|
||||
<listitem> |
||||
<note><para>The following 5 steps are only for installing NixOS to |
||||
another partition. For installing NixOS in place using |
||||
<literal>NIXOS_LUSTRATE</literal>, skip ahead.</para></note> |
||||
|
||||
<para>Prepare your target partition:</para> |
||||
|
||||
<para>At this point it is time to prepare your target partition. |
||||
Please refer to the partitioning, file-system creation, and |
||||
mounting steps of <xref linkend="sec-installation" /></para> |
||||
|
||||
<para>If you're about to install NixOS in place using |
||||
<literal>NIXOS_LUSTRATE</literal> there is nothing to do for |
||||
this step.</para> |
||||
</listitem> |
||||
|
||||
<listitem> |
||||
<para>Generate your NixOS configuration:</para> |
||||
|
||||
<screen>$ sudo `which nixos-generate-config` --root /mnt</screen> |
||||
|
||||
<para>You'll probably want to edit the configuration files. Refer |
||||
to the <literal>nixos-generate-config</literal> step in <xref |
||||
linkend="sec-installation" /> for more information.</para> |
||||
|
||||
<para>Consider setting up the NixOS bootloader to give you the |
||||
ability to boot on your existing Linux partition. For instance, |
||||
if you're using GRUB and your existing distribution is running |
||||
Ubuntu, you may want to add something like this to your |
||||
<literal>configuration.nix</literal>:</para> |
||||
|
||||
<programlisting> |
||||
boot.loader.grub.extraEntries = '' |
||||
menuentry "Ubuntu" { |
||||
search --set=ubuntu --fs-uuid 3cc3e652-0c1f-4800-8451-033754f68e6e |
||||
configfile "($ubuntu)/boot/grub/grub.cfg" |
||||
} |
||||
'';</programlisting> |
||||
|
||||
<para>(You can find the appropriate UUID for your partition in |
||||
<literal>/dev/disk/by-uuid</literal>)</para> |
||||
</listitem> |
||||
|
||||
<listitem> |
||||
<para>Create the <literal>nixbld</literal> group and user on your |
||||
original distribution:</para> |
||||
|
||||
<screen> |
||||
$ sudo groupadd -g 30000 nixbld |
||||
$ sudo useradd -u 30000 -g nixbld -G nixbld nixbld</screen> |
||||
</listitem> |
||||
|
||||
<listitem> |
||||
<para>Download/build/install NixOS:</para> |
||||
|
||||
<warning><para>Once you complete this step, you might no longer be |
||||
able to boot on existing systems without the help of a |
||||
rescue USB drive or similar.</para></warning> |
||||
|
||||
<screen>$ sudo PATH="$PATH" NIX_PATH="$NIX_PATH" `which nixos-install` --root /mnt</screen> |
||||
|
||||
<para>Again, please refer to the <literal>nixos-install</literal> |
||||
step in <xref linkend="sec-installation" /> for more |
||||
information.</para> |
||||
|
||||
<para>That should be it for installation to another partition!</para> |
||||
</listitem> |
||||
|
||||
<listitem> |
||||
<para>Optionally, you may want to clean up your non-NixOS distribution:</para> |
||||
|
||||
<screen> |
||||
$ sudo userdel nixbld |
||||
$ sudo groupdel nixbld</screen> |
||||
|
||||
<para>If you do not wish to keep the Nix package mananager |
||||
installed either, run something like <literal>sudo rm -rv |
||||
~/.nix-* /nix</literal> and remove the line that the Nix |
||||
installer added to your <literal>~/.profile</literal>.</para> |
||||
</listitem> |
||||
|
||||
<listitem> |
||||
<note><para>The following steps are only for installing NixOS in |
||||
place using |
||||
<literal>NIXOS_LUSTRATE</literal>:</para></note> |
||||
|
||||
<para>Generate your NixOS configuration:</para> |
||||
|
||||
<screen>$ sudo `which nixos-generate-config` --root /</screen> |
||||
|
||||
<para>Note that this will place the generated configuration files |
||||
in <literal>/etc/nixos</literal>. You'll probably want to edit |
||||
the configuration files. Refer to the |
||||
<literal>nixos-generate-config</literal> step in <xref |
||||
linkend="sec-installation" /> for more information.</para> |
||||
|
||||
<para>You'll likely want to set a root password for your first boot |
||||
using the configuration files because you won't have a chance |
||||
to enter a password until after you reboot. You can initalize |
||||
the root password to an empty one with this line: (and of course |
||||
don't forget to set one once you've rebooted or to lock the |
||||
account with <literal>sudo passwd -l root</literal> if you use |
||||
<literal>sudo</literal>)</para> |
||||
|
||||
<programlisting>users.extraUsers.root.initialHashedPassword = "";</programlisting> |
||||
</listitem> |
||||
|
||||
<listitem> |
||||
<para>Build the NixOS closure and install it in the |
||||
<literal>system</literal> profile:</para> |
||||
|
||||
<screen>$ nix-env -p /nix/var/nix/profiles/system -f '<nixpkgs/nixos>' -I nixos-config=/etc/nixos/configuration.nix -iA system</screen> |
||||
</listitem> |
||||
|
||||
<listitem> |
||||
<para>Change ownership of the <literal>/nix</literal> tree to root |
||||
(since your Nix install was probably single user):</para> |
||||
|
||||
<screen>$ sudo chown -R 0.0 /nix</screen> |
||||
</listitem> |
||||
|
||||
<listitem> |
||||
<para>Set up the <literal>/etc/NIXOS</literal> and |
||||
<literal>/etc/NIXOS_LUSTRATE</literal> files:</para> |
||||
|
||||
<para><literal>/etc/NIXOS</literal> officializes that this is now a |
||||
NixOS partition (the bootup scripts require its presence).</para> |
||||
|
||||
<para><literal>/etc/NIXOS_LUSTRATE</literal> tells the NixOS bootup |
||||
scripts to move <emphasis>everything</emphasis> that's in the |
||||
root partition to <literal>/old-root</literal>. This will move |
||||
your existing distribution out of the way in the very early |
||||
stages of the NixOS bootup. There are exceptions (we do need to |
||||
keep NixOS there after all), so the NixOS lustrate process will |
||||
not touch:</para> |
||||
|
||||
<itemizedlist> |
||||
<listitem><para>The <literal>/nix</literal> |
||||
directory</para></listitem> |
||||
|
||||
<listitem><para>The <literal>/boot</literal> |
||||
directory</para></listitem> |
||||
|
||||
<listitem><para>Any file or directory listed in |
||||
<literal>/etc/NIXOS_LUSTRATE</literal> (one per |
||||
line)</para></listitem> |
||||
</itemizedlist> |
||||
|
||||
<note><para>Support for <literal>NIXOS_LUSTRATE</literal> was added |
||||
in NixOS 16.09. The act of "lustrating" refers to the |
||||
wiping of the existing distribution. Creating |
||||
<literal>/etc/NIXOS_LUSTRATE</literal> can also be used on |
||||
NixOS to remove all mutable files from your root partition |
||||
(anything that's not in <literal>/nix</literal> or |
||||
<literal>/boot</literal> gets "lustrated" on the next |
||||
boot.</para> |
||||
<para>lustrate /ˈlʌstreɪt/ verb.</para> |
||||
<para>purify by expiatory sacrifice, ceremonial washing, or |
||||
some other ritual action.</para></note> |
||||
|
||||
<para>Let's create the files:</para> |
||||
|
||||
<screen> |
||||
$ sudo touch /etc/NIXOS |
||||
$ sudo touch /etc/NIXOS_LUSTRATE</screen> |
||||
|
||||
<para>Let's also make sure the NixOS configuration files are kept |
||||
once we reboot on NixOS:</para> |
||||
|
||||
<screen> |
||||
$ echo etc/nixos | sudo tee -a /etc/NIXOS_LUSTRATE</screen> |
||||
</listitem> |
||||
|
||||
<listitem> |
||||
<para>Finally, move the <literal>/boot</literal> directory of your |
||||
current distribution out of the way (the lustrate process will |
||||
take care of the rest once you reboot, but this one must be |
||||
moved out now because NixOS needs to install its own boot |
||||
files:</para> |
||||
|
||||
<warning><para>Once you complete this step, your current |
||||
distribution will no longer be bootable! If you didn't get |
||||
all the NixOS configuration right, especially those |
||||
settings pertaining to boot loading and root partition, |
||||
NixOS may not be bootable either. Have a USB rescue device |
||||
ready in case this happens. </para></warning> |
||||
|
||||
<screen> |
||||
$ sudo mv -v /boot /boot.bak && |
||||
sudo /nix/var/nix/profiles/system/bin/switch-to-configuration boot</screen> |
||||
|
||||
<para>Cross your fingers, reboot, hopefully you should get a NixOS |
||||
prompt!</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para>If for some reason you want to revert to the old |
||||
distribution, you'll need to boot on a USB rescue disk and do |
||||
something along these lines:</para> |
||||
|
||||
<screen> |
||||
# mkdir root |
||||
# mount /dev/sdaX root |
||||
# mkdir root/nixos-root |
||||
# mv -v root/* root/nixos-root/ |
||||
# mv -v root/nixos-root/old-root/* root/ |
||||
# mv -v root/boot.bak root/boot # We had renamed this by hand earlier |
||||
# umount root |
||||
# reboot</screen> |
||||
|
||||
<para>This may work as is or you might also need to reinstall the |
||||
boot loader</para> |
||||
|
||||
<para>And of course, if you're happy with NixOS and no longer need |
||||
the old distribution:</para> |
||||
|
||||
<screen>sudo rm -rf /old-root</screen> |
||||
</listitem> |
||||
|
||||
<listitem> |
||||
<para>It's also worth noting that this whole process can be |
||||
automated. This is especially useful for Cloud VMs, where |
||||
provider do not provide NixOS. For instance, <link |
||||
xlink:href="https://github.com/elitak/nixos-infect">nixos-infect</link> |
||||
uses the lustrate process to convert Digital Ocean droplets to |
||||
NixOS from other distributions automatically.</para> |
||||
</listitem> |
||||
</orderedlist> |
||||
</section> |
@ -0,0 +1,119 @@ |
||||
<refentry xmlns="http://docbook.org/ns/docbook" |
||||
xmlns:xlink="http://www.w3.org/1999/xlink" |
||||
xmlns:xi="http://www.w3.org/2001/XInclude"> |
||||
|
||||
<refmeta> |
||||
<refentrytitle><command>nixos-enter</command></refentrytitle> |
||||
<manvolnum>8</manvolnum> |
||||
<refmiscinfo class="source">NixOS</refmiscinfo> |
||||
<!-- <refmiscinfo class="version"><xi:include href="version.txt" parse="text"/></refmiscinfo> --> |
||||
</refmeta> |
||||
|
||||
<refnamediv> |
||||
<refname><command>nixos-enter</command></refname> |
||||
<refpurpose>run a command in a NixOS chroot environment</refpurpose> |
||||
</refnamediv> |
||||
|
||||
<refsynopsisdiv> |
||||
<cmdsynopsis> |
||||
<command>nixos-enter</command> |
||||
<arg> |
||||
<arg choice='plain'><option>--root</option></arg> |
||||
<replaceable>root</replaceable> |
||||
</arg> |
||||
<arg> |
||||
<arg choice='plain'><option>--system</option></arg> |
||||
<replaceable>system</replaceable> |
||||
</arg> |
||||
<arg> |
||||
<arg choice='plain'><option>-c</option></arg> |
||||
<replaceable>shell-command</replaceable> |
||||
</arg> |
||||
<arg> |
||||
<arg choice='plain'><option>--help</option></arg> |
||||
</arg> |
||||
<arg> |
||||
<arg choice='plain'><option>--</option></arg> |
||||
<replaceable>arguments</replaceable> |
||||
</arg> |
||||
</cmdsynopsis> |
||||
</refsynopsisdiv> |
||||
|
||||
|
||||
<refsection><title>Description</title> |
||||
|
||||
<para>This command runs a command in a NixOS chroot environment, that |
||||
is, in a filesystem hierarchy previously prepared using |
||||
<command>nixos-install</command>.</para> |
||||
|
||||
</refsection> |
||||
|
||||
<refsection><title>Options</title> |
||||
|
||||
<para>This command accepts the following options:</para> |
||||
|
||||
<variablelist> |
||||
|
||||
<varlistentry> |
||||
<term><option>--root</option></term> |
||||
<listitem> |
||||
<para>The path to the NixOS system you want to enter. It defaults to <filename>/mnt</filename>.</para> |
||||
</listitem> |
||||
</varlistentry> |
||||
|
||||
<varlistentry> |
||||
<term><option>--system</option></term> |
||||
<listitem> |
||||
<para>The NixOS system configuration to use. It defaults to |
||||
<filename>/nix/var/nix/profiles/system</filename>. You can enter |
||||
a previous NixOS configuration by specifying a path such as |
||||
<filename>/nix/var/nix/profiles/system-106-link</filename>.</para> |
||||
</listitem> |
||||
</varlistentry> |
||||
|
||||
<varlistentry> |
||||
<term><option>--command</option></term> |
||||
<term><option>-c</option></term> |
||||
<listitem> |
||||
<para>The bash command to execute.</para> |
||||
</listitem> |
||||
</varlistentry> |
||||
|
||||
<varlistentry> |
||||
<term><option>--</option></term> |
||||
|
||||
<listitem><para>Interpret the remaining arguments as the program |
||||
name and arguments to be invoked. The program is not executed in a |
||||
shell.</para></listitem> |
||||
|
||||
</varlistentry> |
||||
|
||||
</variablelist> |
||||
|
||||
</refsection> |
||||
|
||||
|
||||
<refsection><title>Examples</title> |
||||
|
||||
<para>Start an interactive shell in the NixOS installation in |
||||
<filename>/mnt</filename>:</para> |
||||
|
||||
<screen> |
||||
# nixos-enter /mnt |
||||
</screen> |
||||
|
||||
<para>Run a shell command:</para> |
||||
|
||||
<screen> |
||||
# nixos-enter -c 'ls -l /; cat /proc/mounts' |
||||
</screen> |
||||
|
||||
<para>Run a non-shell command:</para> |
||||
|
||||
<screen> |
||||
# nixos-enter -- cat /proc/mounts |
||||
</screen> |
||||
|
||||
</refsection> |
||||
|
||||
</refentry> |
@ -0,0 +1,82 @@ |
||||
<section xmlns="http://docbook.org/ns/docbook" |
||||
xmlns:xlink="http://www.w3.org/1999/xlink" |
||||
xmlns:xi="http://www.w3.org/2001/XInclude" |
||||
version="5.0" |
||||
xml:id="sec-release-18.09"> |
||||
|
||||
<title>Release 18.09 (“??”, 2018/09/??)</title> |
||||
|
||||
<section xmlns="http://docbook.org/ns/docbook" |
||||
xmlns:xlink="http://www.w3.org/1999/xlink" |
||||
xmlns:xi="http://www.w3.org/2001/XInclude" |
||||
version="5.0" |
||||
xml:id="sec-release-18.09-highlights"> |
||||
|
||||
<title>Highlights</title> |
||||
|
||||
<para>In addition to numerous new and upgraded packages, this release |
||||
has the following highlights: </para> |
||||
|
||||
<itemizedlist> |
||||
<listitem> |
||||
<para> |
||||
TODO |
||||
</para> |
||||
</listitem> |
||||
|
||||
</itemizedlist> |
||||
|
||||
</section> |
||||
<section xmlns="http://docbook.org/ns/docbook" |
||||
xmlns:xlink="http://www.w3.org/1999/xlink" |
||||
xmlns:xi="http://www.w3.org/2001/XInclude" |
||||
version="5.0" |
||||
xml:id="sec-release-18.09-new-services"> |
||||
|
||||
<title>New Services</title> |
||||
|
||||
<para>The following new services were added since the last release:</para> |
||||
|
||||
<itemizedlist> |
||||
<listitem> |
||||
<para></para> |
||||
</listitem> |
||||
</itemizedlist> |
||||
|
||||
</section> |
||||
<section xmlns="http://docbook.org/ns/docbook" |
||||
xmlns:xlink="http://www.w3.org/1999/xlink" |
||||
xmlns:xi="http://www.w3.org/2001/XInclude" |
||||
version="5.0" |
||||
xml:id="sec-release-18.09-incompatibilities"> |
||||
|
||||
<title>Backward Incompatibilities</title> |
||||
|
||||
<para>When upgrading from a previous release, please be aware of the |
||||
following incompatible changes:</para> |
||||
|
||||
<itemizedlist> |
||||
<listitem> |
||||
<para> |
||||
</para> |
||||
</listitem> |
||||
</itemizedlist> |
||||
|
||||
</section> |
||||
<section xmlns="http://docbook.org/ns/docbook" |
||||
xmlns:xlink="http://www.w3.org/1999/xlink" |
||||
xmlns:xi="http://www.w3.org/2001/XInclude" |
||||
version="5.0" |
||||
xml:id="sec-release-18.09-notable-changes"> |
||||
|
||||
<title>Other Notable Changes</title> |
||||
|
||||
<itemizedlist> |
||||
<listitem> |
||||
<para> |
||||
</para> |
||||
</listitem> |
||||
</itemizedlist> |
||||
|
||||
</section> |
||||
</section> |
@ -1,6 +1,6 @@ |
||||
{ |
||||
x86_64-linux = "/nix/store/gy4yv67gv3j6in0lalw37j353zdmfcwm-nix-1.11.16"; |
||||
i686-linux = "/nix/store/ifmyq5ryfxhhrzh62hiq65xyz1fwffga-nix-1.11.16"; |
||||
aarch64-linux = "/nix/store/y9mfv3sx75mbfibf1zna1kq9v98fk2nb-nix-1.11.16"; |
||||
x86_64-darwin = "/nix/store/hwpp7kia2f0in5ns2hiw41q38k30jpj2-nix-1.11.16"; |
||||
x86_64-linux = "/nix/store/6p2gambjac7xdkd2a7w1dsxdk1q5cq4d-nix-2.0"; |
||||
i686-linux = "/nix/store/zznnaijjk3nwx0cmpczxsvngmqzhl7r4-nix-2.0"; |
||||
aarch64-linux = "/nix/store/ci96w9kxfkmlc7x2vwqiz4da0r6abxnq-nix-2.0"; |
||||
x86_64-darwin = "/nix/store/xmi4fylvx4qc79ji9v5q3zfy9vfdy4sv-nix-2.0"; |
||||
} |
||||
|
@ -0,0 +1,60 @@ |
||||
#! @shell@ |
||||
|
||||
set -e |
||||
|
||||
# Re-exec ourselves in a private mount namespace so that our bind |
||||
# mounts get cleaned up automatically. |
||||
if [ -z "$NIXOS_ENTER_REEXEC" ]; then |
||||
export NIXOS_ENTER_REEXEC=1 |
||||
if [ "$(id -u)" != 0 ]; then |
||||
extraFlags="-r" |
||||
fi |
||||
exec unshare --fork --mount --uts --mount-proc --pid $extraFlags -- "$0" "$@" |
||||
else |
||||
mount --make-rprivate / |
||||
fi |
||||
|
||||
mountPoint=/mnt |
||||
system=/nix/var/nix/profiles/system |
||||
command=($system/sw/bin/bash "--login") |
||||
|
||||
while [ "$#" -gt 0 ]; do |
||||
i="$1"; shift 1 |
||||
case "$i" in |
||||
--root) |
||||
mountPoint="$1"; shift 1 |
||||
;; |
||||
--system) |
||||
system="$1"; shift 1 |
||||
;; |
||||
--help) |
||||
exec man nixos-enter |
||||
exit 1 |
||||
;; |
||||
--command|-c) |
||||
command=($system/sw/bin/bash "-c" "$1") |
||||
shift 1 |
||||
;; |
||||
--) |
||||
command=("$@") |
||||
break |
||||
;; |
||||
*) |
||||
echo "$0: unknown option \`$i'" |
||||
exit 1 |
||||
;; |
||||
esac |
||||
done |
||||
|
||||
if [[ ! -e $mountPoint/etc/NIXOS ]]; then |
||||
echo "$0: '$mountPoint' is not a NixOS installation" >&2 |
||||
exit 126 |
||||
fi |
||||
|
||||
mkdir -m 0755 -p "$mountPoint/dev" |
||||
mount --rbind /dev "$mountPoint/dev" |
||||
|
||||
# Run the activation script. Set $LOCALE_ARCHIVE to supress some Perl locale warnings. |
||||
LOCALE_ARCHIVE=$system/sw/lib/locale/locale-archive chroot "$mountPoint" "$system/activate" >&2 || true |
||||
|
||||
exec chroot "$mountPoint" "${command[@]}" |
@ -1,104 +0,0 @@ |
||||
#! @shell@ |
||||
|
||||
# This script's goal is to perform all "static" setup of a filesystem structure from pre-built store paths. Everything |
||||
# in here should run in a non-root context and inside a Nix builder. It's designed primarily to be called from image- |
||||
# building scripts and from nixos-install, but because it makes very few assumptions about the context in which it runs, |
||||
# it could be useful in other contexts as well. |
||||
# |
||||
# Current behavior: |
||||
# - set up basic filesystem structure |
||||
# - make Nix store etc. |
||||
# - copy Nix, system, channel, and misceallaneous closures to target Nix store |
||||
# - register validity of all paths in the target store |
||||
# - set up channel and system profiles |
||||
|
||||
# Ensure a consistent umask. |
||||
umask 0022 |
||||
|
||||
set -e |
||||
|
||||
mountPoint="$1" |
||||
channel="$2" |
||||
system="$3" |
||||
shift 3 |
||||
closures="$@" |
||||
|
||||
PATH="@coreutils@/bin:@nix@/bin:@perl@/bin:@utillinux@/bin:@rsync@/bin" |
||||
|
||||
if ! test -e "$mountPoint"; then |
||||
echo "mount point $mountPoint doesn't exist" |
||||
exit 1 |
||||
fi |
||||
|
||||
# Create a few of the standard directories in the target root directory. |
||||
install -m 0755 -d $mountPoint/dev $mountPoint/proc $mountPoint/sys $mountPoint/etc $mountPoint/run $mountPoint/home |
||||
install -m 01777 -d $mountPoint/tmp |
||||
install -m 0755 -d $mountPoint/tmp/root |
||||
install -m 0755 -d $mountPoint/var |
||||
install -m 0700 -d $mountPoint/root |
||||
|
||||
ln -sf /run $mountPoint/var/run |
||||
|
||||
# Create the necessary Nix directories on the target device |
||||
install -m 0755 -d \ |
||||
$mountPoint/nix/var/nix/gcroots \ |
||||
$mountPoint/nix/var/nix/temproots \ |
||||
$mountPoint/nix/var/nix/userpool \ |
||||
$mountPoint/nix/var/nix/profiles \ |
||||
$mountPoint/nix/var/nix/db \ |
||||
$mountPoint/nix/var/log/nix/drvs |
||||
|
||||
install -m 1775 -d $mountPoint/nix/store |
||||
|
||||
# All Nix operations below should operate on our target store, not /nix/store. |
||||
# N.B: this relies on Nix 1.12 or higher |
||||
export NIX_REMOTE=local?root=$mountPoint |
||||
|
||||
# Copy our closures to the Nix store on the target mount point, unless they're already there. |
||||
for i in $closures; do |
||||
# We support closures both in the format produced by `nix-store --export` and by `exportReferencesGraph`, |
||||
# mostly because there doesn't seem to be a single format that can be produced outside of a nix build and |
||||
# inside one. See https://github.com/NixOS/nix/issues/1242 for more discussion. |
||||
if [[ "$i" =~ \.closure$ ]]; then |
||||
echo "importing serialized closure $i to $mountPoint..." |
||||
nix-store --import < $i |
||||
else |
||||
# There has to be a better way to do this, right? |
||||
echo "copying closure $i to $mountPoint..." |
||||
for j in $(perl @pathsFromGraph@ $i); do |
||||
echo " $j... " |
||||
rsync -a $j $mountPoint/nix/store/ |
||||
done |
||||
|
||||
nix-store --option build-users-group root --register-validity < $i |
||||
fi |
||||
done |
||||
|
||||
# Create the required /bin/sh symlink; otherwise lots of things |
||||
# (notably the system() function) won't work. |
||||
if [ ! -x $mountPoint/@shell@ ]; then |
||||
echo "Error: @shell@ wasn't included in the closure" >&2 |
||||
exit 1 |
||||
fi |
||||
install -m 0755 -d $mountPoint/bin |
||||
ln -sf @shell@ $mountPoint/bin/sh |
||||
|
||||
echo "setting the system closure to '$system'..." |
||||
nix-env "${extraBuildFlags[@]}" -p $mountPoint/nix/var/nix/profiles/system --set "$system" |
||||
|
||||
ln -sfn /nix/var/nix/profiles/system $mountPoint/run/current-system |
||||
|
||||
# Copy the NixOS/Nixpkgs sources to the target as the initial contents of the NixOS channel. |
||||
install -m 0755 -d $mountPoint/nix/var/nix/profiles |
||||
install -m 1777 -d $mountPoint/nix/var/nix/profiles/per-user |
||||
install -m 0755 -d $mountPoint/nix/var/nix/profiles/per-user/root |
||||
|
||||
if [ -z "$noChannelCopy" ] && [ -n "$channel" ]; then |
||||
echo "copying channel..." |
||||
nix-env --option build-use-substitutes false "${extraBuildFlags[@]}" -p $mountPoint/nix/var/nix/profiles/per-user/root/channels --set "$channel" --quiet |
||||
fi |
||||
install -m 0700 -d $mountPoint/root/.nix-defexpr |
||||
ln -sfn /nix/var/nix/profiles/per-user/root/channels $mountPoint/root/.nix-defexpr/channels |
||||
|
||||
# Mark the target as a NixOS installation, otherwise switch-to-configuration will chicken out. |
||||
touch $mountPoint/etc/NIXOS |
@ -1,23 +0,0 @@ |
||||
var fs = require('fs'); |
||||
|
||||
var opts = JSON.parse(fs.readFileSync("/dev/stdin").toString()); |
||||
var config = opts.config; |
||||
|
||||
var readSecret = function(filename) { |
||||
return fs.readFileSync(filename).toString().trim(); |
||||
}; |
||||
|
||||
if (opts.secretFile) { |
||||
config.secret = readSecret(opts.secretFile); |
||||
} |
||||
if (opts.dbPasswordFile) { |
||||
config.params.dbpass = readSecret(opts.dbPasswordFile); |
||||
} |
||||
if (opts.smtpPasswordFile) { |
||||
config.smtppass = readSecret(opts.smtpPasswordFile); |
||||
} |
||||
if (opts.spamClientSecretFile) { |
||||
config.spamclientsecret = readSecret(opts.opts.spamClientSecretFile); |
||||
} |
||||
|
||||
fs.writeFileSync(opts.outputFile, JSON.stringify(config)); |
@ -1,438 +0,0 @@ |
||||
{ config, lib, pkgs, ... }: |
||||
|
||||
with lib; |
||||
|
||||
let |
||||
cfg = config.services.pumpio; |
||||
dataDir = "/var/lib/pump.io"; |
||||
runDir = "/run/pump.io"; |
||||
user = "pumpio"; |
||||
|
||||
optionalSet = condition: value: if condition then value else {}; |
||||
|
||||
configScript = ./pump.io-configure.js; |
||||
configOptions = { |
||||
outputFile = "${runDir}/config.json"; |
||||
config = |
||||
(optionalSet (cfg.driver != "disk") { |
||||
driver = cfg.driver; |
||||
}) // |
||||
{ |
||||
params = (optionalSet (cfg.driver == "disk") { dir = dataDir; }) // |
||||
(optionalSet (cfg.driver == "mongodb" || cfg.driver == "redis") { |
||||
host = cfg.dbHost; |
||||
port = cfg.dbPort; |
||||
dbname = cfg.dbName; |
||||
dbuser = cfg.dbUser; |
||||
dbpass = cfg.dbPassword; |
||||
}) // |
||||
(optionalSet (cfg.driver == "memcached") { |
||||
host = cfg.dbHost; |
||||
port = cfg.dbPort; |
||||
}) // cfg.driverParams; |
||||
secret = cfg.secret; |
||||
|
||||
address = cfg.address; |
||||
port = cfg.port; |
||||
|
||||
noweb = false; |
||||
urlPort = cfg.urlPort; |
||||
hostname = cfg.hostname; |
||||
favicon = cfg.favicon; |
||||
|
||||
site = cfg.site; |
||||
owner = cfg.owner; |
||||
ownerURL = cfg.ownerURL; |
||||
|
||||
key = cfg.sslKey; |
||||
cert = cfg.sslCert; |
||||
bounce = false; |
||||
|
||||
spamhost = cfg.spamHost; |
||||
spamclientid = cfg.spamClientId; |
||||
spamclientsecret = cfg.spamClientSecret; |
||||
|
||||
requireEmail = cfg.requireEmail; |
||||
smtpserver = cfg.smtpHost; |
||||
smtpport = cfg.smtpPort; |
||||
smtpuser = cfg.smtpUser; |
||||
smtppass = cfg.smtpPassword; |
||||
smtpusessl = cfg.smtpUseSSL; |
||||
smtpfrom = cfg.smtpFrom; |
||||
|
||||
nologger = false; |
||||
enableUploads = cfg.enableUploads; |
||||
datadir = dataDir; |
||||
debugClient = false; |
||||
firehose = cfg.firehose; |
||||
disableRegistration = cfg.disableRegistration; |
||||
|
||||
inherit (cfg) secretFile dbPasswordFile smtpPasswordFile spamClientSecretFile; |
||||
} // |
||||
(optionalSet (cfg.port < 1024) { |
||||
serverUser = user; # have pump.io listen then drop privileges |
||||
}) // cfg.extraConfig; |
||||
}; in { |
||||
options = { |
||||
|
||||
services.pumpio = { |
||||
|
||||
enable = mkEnableOption "Pump.io social streams server"; |
||||
|
||||
secret = mkOption { |
||||
type = types.nullOr types.str; |
||||
default = null; |
||||
example = "my dog has fleas"; |
||||
description = '' |
||||
A session-generating secret, server-wide password. Warning: |
||||
this is stored in cleartext in the Nix store! |
||||
''; |
||||
}; |
||||
|
||||
secretFile = mkOption { |
||||
type = types.nullOr types.path; |
||||
default = null; |
||||
example = "/run/keys/pump.io-secret"; |
||||
description = '' |
||||
A file containing the session-generating secret, |
||||
server-wide password. |
||||
''; |
||||
}; |
||||
|
||||
site = mkOption { |
||||
type = types.str; |
||||
example = "Awesome Sauce"; |
||||
description = "Name of the server"; |
||||
}; |
||||
|
||||
owner = mkOption { |
||||
type = types.str; |
||||
default = ""; |
||||
example = "Awesome Inc."; |
||||
description = "Name of owning entity, if you want to link to it."; |
||||
}; |
||||
|
||||
ownerURL = mkOption { |
||||
type = types.str; |
||||
default = ""; |
||||
example = "https://pump.io"; |
||||
description = "URL of owning entity, if you want to link to it."; |
||||
}; |
||||
|
||||
address = mkOption { |
||||
type = types.str; |
||||
default = "localhost"; |
||||
description = '' |
||||
Web server listen address. |
||||
''; |
||||
}; |
||||
|
||||
port = mkOption { |
||||
type = types.int; |
||||
default = 31337; |
||||
description = '' |
||||
Port to listen on. Defaults to 31337, which is suitable for |
||||
running behind a reverse proxy. For a standalone server, |
||||
use 443. |
||||
''; |
||||
}; |
||||
|
||||
hostname = mkOption { |
||||
type = types.nullOr types.str; |
||||
default = "localhost"; |
||||
description = '' |
||||
The hostname of the server, used for generating |
||||
URLs. Defaults to "localhost" which doesn't do much for you. |
||||
''; |
||||
}; |
||||
|
||||
urlPort = mkOption { |
||||
type = types.int; |
||||
default = 443; |
||||
description = '' |
||||
Port to use for generating URLs. This basically has to be |
||||
either 80 or 443 because the host-meta and Webfinger |
||||
protocols don't make any provision for HTTP/HTTPS servers |
||||
running on other ports. |
||||
''; |
||||
}; |
||||
|
||||
favicon = mkOption { |
||||
type = types.nullOr types.path; |
||||
default = null; |
||||
description = '' |
||||
Local filesystem path to the favicon.ico file to use. This |
||||
will be served as "/favicon.ico" by the server. |
||||
''; |
||||
}; |
||||
|
||||
enableUploads = mkOption { |
||||
type = types.bool; |
||||
default = true; |
||||
description = '' |
||||
If you want to disable file uploads, set this to false. Uploaded files will be stored |
||||
in ${dataDir}/uploads. |
||||
''; |
||||
}; |
||||
|
||||
sslKey = mkOption { |
||||
type = types.path; |
||||
example = "${dataDir}/myserver.key"; |
||||
default = ""; |
||||
description = '' |
||||
The path to the server certificate private key. The |
||||
certificate is required, but it can be self-signed. |
||||
''; |
||||
}; |
||||
|
||||
sslCert = mkOption { |
||||
type = types.path; |
||||
example = "${dataDir}/myserver.crt"; |
||||
default = ""; |
||||
description = '' |
||||
The path to the server certificate. The certificate is |
||||
required, but it can be self-signed. |
||||
''; |
||||
}; |
||||
|
||||
firehose = mkOption { |
||||
type = types.str; |
||||
default = "ofirehose.com"; |
||||
description = '' |
||||
Firehose host running the ofirehose software. Defaults to |
||||
"ofirehose.com". Public notices will be ping this firehose |
||||
server and from there go out to search engines and the |
||||
world. If you want to disconnect from the public web, set |
||||
this to something falsy. |
||||
''; |
||||
}; |
||||
|
||||
disableRegistration = mkOption { |
||||
type = types.bool; |
||||
default = false; |
||||
description = '' |
||||
Disables registering new users on the site through the Web |
||||
or the API. |
||||
''; |
||||
}; |
||||
|
||||
requireEmail = mkOption { |
||||
type = types.bool; |
||||
default = false; |
||||
description = "Require an e-mail address to register."; |
||||
}; |
||||
|
||||
extraConfig = mkOption { |
||||
default = { }; |
||||
description = '' |
||||
Extra configuration options which are serialized to json and added |
||||
to the pump.io.json config file. |
||||
''; |
||||
}; |
||||
|
||||
driver = mkOption { |
||||
type = types.enum [ "mongodb" "disk" "lrucache" "memcached" "redis" ]; |
||||
default = "mongodb"; |
||||
description = "Type of database. Corresponds to a nodejs databank driver."; |
||||
}; |
||||
|
||||
driverParams = mkOption { |
||||
default = { }; |
||||
description = "Extra parameters for the driver."; |
||||
}; |
||||
|
||||
dbHost = mkOption { |
||||
type = types.str; |
||||
default = "localhost"; |
||||
description = "The database host to connect to."; |
||||
}; |
||||
|
||||
dbPort = mkOption { |
||||
type = types.int; |
||||
default = 27017; |
||||
description = "The port that the database is listening on."; |
||||
}; |
||||
|
||||
dbName = mkOption { |
||||
type = types.str; |
||||
default = "pumpio"; |
||||
description = "The name of the database to use."; |
||||
}; |
||||
|
||||
dbUser = mkOption { |
||||
type = types.nullOr types.str; |
||||
default = null; |
||||
description = '' |
||||
The username. Defaults to null, meaning no authentication. |
||||
''; |
||||
}; |
||||
|
||||
dbPassword = mkOption { |
||||
type = types.nullOr types.str; |
||||
default = null; |
||||
description = '' |
||||
The password corresponding to dbUser. Warning: this is |
||||
stored in cleartext in the Nix store! |
||||
''; |
||||
}; |
||||
|
||||
dbPasswordFile = mkOption { |
||||
type = types.nullOr types.path; |
||||
default = null; |
||||
example = "/run/keys/pump.io-dbpassword"; |
||||
description = '' |
||||
A file containing the password corresponding to dbUser. |
||||
''; |
||||
}; |
||||
|
||||
smtpHost = mkOption { |
||||
type = types.nullOr types.str; |
||||
default = null; |
||||
example = "localhost"; |
||||
description = '' |
||||
Server to use for sending transactional email. If it's not |
||||
set up, no email is sent and features like password recovery |
||||
and email notification won't work. |
||||
''; |
||||
}; |
||||
|
||||
smtpPort = mkOption { |
||||
type = types.int; |
||||
default = 25; |
||||
description = '' |
||||
Port to connect to on SMTP server. |
||||
''; |
||||
}; |
||||
|
||||
smtpUser = mkOption { |
||||
type = types.nullOr types.str; |
||||
default = null; |
||||
description = '' |
||||
Username to use to connect to SMTP server. Might not be |
||||
necessary for some servers. |
||||
''; |
||||
}; |
||||
|
||||
smtpPassword = mkOption { |
||||
type = types.nullOr types.str; |
||||
default = null; |
||||
description = '' |
||||
Password to use to connect to SMTP server. Might not be |
||||
necessary for some servers. Warning: this is stored in |
||||
cleartext in the Nix store! |
||||
''; |
||||
}; |
||||
|
||||
smtpPasswordFile = mkOption { |
||||
type = types.nullOr types.path; |
||||
default = null; |
||||
example = "/run/keys/pump.io-smtppassword"; |
||||
description = '' |
||||
A file containing the password used to connect to SMTP |
||||
server. Might not be necessary for some servers. |
||||
''; |
||||
}; |
||||
|
||||
|
||||
smtpUseSSL = mkOption { |
||||
type = types.bool; |
||||
default = false; |
||||
description = '' |
||||
Only use SSL with the SMTP server. By default, a SSL |
||||
connection is negotiated using TLS. You may need to change |
||||
the smtpPort value if you set this. |
||||
''; |
||||
}; |
||||
|
||||
smtpFrom = mkOption { |
||||
type = types.nullOr types.str; |
||||
default = null; |
||||
description = '' |
||||
Email address to use in the "From:" header of outgoing |
||||
notifications. Defaults to 'no-reply@' plus the site |
||||
hostname. |
||||
''; |
||||
}; |
||||
|
||||
spamHost = mkOption { |
||||
type = types.nullOr types.str; |
||||
default = null; |
||||
description = '' |
||||
Host running activityspam software to use to test updates |
||||
for spam. |
||||
''; |
||||
}; |
||||
spamClientId = mkOption { |
||||
type = types.nullOr types.str; |
||||
default = null; |
||||
description = "OAuth pair for spam server."; |
||||
}; |
||||
spamClientSecret = mkOption { |
||||
type = types.nullOr types.str; |
||||
default = null; |
||||
description = '' |
||||
OAuth pair for spam server. Warning: this is |
||||
stored in cleartext in the Nix store! |
||||
''; |
||||
}; |
||||
spamClientSecretFile = mkOption { |
||||
type = types.nullOr types.path; |
||||
default = null; |
||||
example = "/run/keys/pump.io-spamclientsecret"; |
||||
description = '' |
||||
A file containing the OAuth key for the spam server. |
||||
''; |
||||
}; |
||||
}; |
||||
|
||||
}; |
||||
|
||||
config = mkIf cfg.enable { |
||||
warnings = let warn = k: optional (cfg.${k} != null) |
||||
"config.services.pumpio.${k} is insecure. Use ${k}File instead."; |
||||
in concatMap warn [ "secret" "dbPassword" "smtpPassword" "spamClientSecret" ]; |
||||
|
||||
assertions = [ |
||||
{ assertion = !(isNull cfg.secret && isNull cfg.secretFile); |
||||
message = "pump.io needs a secretFile configured"; |
||||
} |
||||
]; |
||||
|
||||
systemd.services."pump.io" = |
||||
{ description = "Pump.io - stream server that does most of what people really want from a social network"; |
||||
after = [ "network.target" ]; |
||||
wantedBy = [ "multi-user.target" ]; |
||||
|
||||
preStart = '' |
||||
mkdir -p ${dataDir}/uploads |
||||
mkdir -p ${runDir} |
||||
chown pumpio:pumpio ${dataDir}/uploads ${runDir} |
||||
chmod 770 ${dataDir}/uploads ${runDir} |
||||
|
||||
${pkgs.nodejs}/bin/node ${configScript} <<EOF |
||||
${builtins.toJSON configOptions} |
||||
EOF |
||||
|
||||
chgrp pumpio ${configOptions.outputFile} |
||||
chmod 640 ${configOptions.outputFile} |
||||
''; |
||||
|
||||
serviceConfig = { |
||||
ExecStart = "${pkgs.pumpio}/bin/pump -c ${configOptions.outputFile}"; |
||||
PermissionsStartOnly = true; |
||||
User = if cfg.port < 1024 then "root" else user; |
||||
Group = user; |
||||
}; |
||||
environment = { NODE_ENV = "production"; }; |
||||
}; |
||||
|
||||
users.extraGroups.pumpio.gid = config.ids.gids.pumpio; |
||||
users.extraUsers.pumpio = { |
||||
group = "pumpio"; |
||||
uid = config.ids.uids.pumpio; |
||||
description = "Pump.io user"; |
||||
home = dataDir; |
||||
createHome = true; |
||||
}; |
||||
}; |
||||
} |
@ -0,0 +1,15 @@ |
||||
import ../make-test.nix ({ pkgs, ...} : { |
||||
name = "test-hocker-fetchdocker"; |
||||
meta = with pkgs.stdenv.lib.maintainers; { |
||||
maintainers = [ ixmatus ]; |
||||
}; |
||||
|
||||
machine = import ./machine.nix; |
||||
|
||||
testScript = '' |
||||
startAll; |
||||
|
||||
$machine->waitForUnit("sockets.target"); |
||||
$machine->waitUntilSucceeds("docker run registry-1.docker.io/v2/library/hello-world:latest"); |
||||
''; |
||||
}) |
@ -0,0 +1,19 @@ |
||||
{ fetchDockerConfig, fetchDockerLayer, fetchdocker }: |
||||
fetchdocker rec { |
||||
name = "hello-world"; |
||||
registry = "https://registry-1.docker.io/v2/"; |
||||
repository = "library"; |
||||
imageName = "hello-world"; |
||||
tag = "latest"; |
||||
imageConfig = fetchDockerConfig { |
||||
inherit tag registry repository imageName; |
||||
sha256 = "1ivbd23hyindkahzfw4kahgzi6ibzz2ablmgsz6340vc6qr1gagj"; |
||||
}; |
||||
imageLayers = let |
||||
layer0 = fetchDockerLayer { |
||||
inherit registry repository imageName; |
||||
layerDigest = "ca4f61b1923c10e9eb81228bd46bee1dfba02b9c7dac1844527a734752688ede"; |
||||
sha256 = "1plfd194fwvsa921ib3xkhms1yqxxrmx92r2h7myj41wjaqn2kya"; |
||||
}; |
||||
in [ layer0 ]; |
||||
} |
@ -0,0 +1,26 @@ |
||||
{ config, pkgs, ... }: |
||||
{ nixpkgs.config.packageOverrides = pkgs': { |
||||
hello-world-container = pkgs'.callPackage ./hello-world-container.nix { }; |
||||
}; |
||||
|
||||
virtualisation.docker = { |
||||
enable = true; |
||||
package = pkgs.docker; |
||||
}; |
||||
|
||||
systemd.services.docker-load-fetchdocker-image = { |
||||
description = "Docker load hello-world-container"; |
||||
wantedBy = [ "multi-user.target" ]; |
||||
wants = [ "docker.service" "local-fs.target" ]; |
||||
after = [ "docker.service" "local-fs.target" ]; |
||||
|
||||
script = '' |
||||
${pkgs.hello-world-container}/compositeImage.sh | ${pkgs.docker}/bin/docker load |
||||
''; |
||||
|
||||
serviceConfig = { |
||||
Type = "oneshot"; |
||||
}; |
||||
}; |
||||
} |
||||
|
@ -0,0 +1,35 @@ |
||||
import ./make-test.nix { |
||||
name = "dovecot"; |
||||
|
||||
machine = { pkgs, ... }: { |
||||
services.openldap = { |
||||
enable = true; |
||||
extraConfig = '' |
||||
include ${pkgs.openldap}/etc/schema/core.schema |
||||
include ${pkgs.openldap}/etc/schema/cosine.schema |
||||
include ${pkgs.openldap}/etc/schema/inetorgperson.schema |
||||
include ${pkgs.openldap}/etc/schema/nis.schema |
||||
database bdb |
||||
suffix dc=example |
||||
directory /var/db/openldap |
||||
rootdn cn=root,dc=example |
||||
rootpw notapassword |
||||
''; |
||||
declarativeContents = '' |
||||
dn: dc=example |
||||
objectClass: domain |
||||
dc: example |
||||
|
||||
dn: ou=users,dc=example |
||||
objectClass: organizationalUnit |
||||
ou: users |
||||
''; |
||||
}; |
||||
}; |
||||
|
||||
testScript = '' |
||||
$machine->succeed('systemctl status openldap.service'); |
||||
$machine->waitForUnit('openldap.service'); |
||||
$machine->succeed('ldapsearch -LLL -D "cn=root,dc=example" -w notapassword -b "dc=example"'); |
||||
''; |
||||
} |
@ -1,89 +0,0 @@ |
||||
# This test runs pump.io with mongodb, listing on port 443. |
||||
|
||||
import ./make-test.nix ({ pkgs, ...} : let |
||||
snakeOilKey = '' |
||||
-----BEGIN PRIVATE KEY----- |
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqVemio78R41Tz |
||||
MnR2zFD/wFT0iScOpFkuytNmuPf28FLaa9wSBWmuAGbEi7wBIfw8/bUqFBTQp2G1 |
||||
m1cmcCKxhmvvOkGs89eM131s1lW/bXU3zYso4e7724kHwU65jRlQs6cFWIlmW7V5 |
||||
3HQobP05dy+zPpujPPSlOQ0qYViR1s+RgZI8r0wS2ZDsliNtQwBLJSIvX6XVnXLo |
||||
F/HmF4/ySJ9pL2AxQXCwZE8SfCzHpArs9COIqTaAuwB79kxWSFQJewmab74BXiM6 |
||||
9FMCtHON24Pl7OR9sRJHH8rMEzUumppmUeCNEzABjzQQ7svR18cmbzRWetp0tT9Y |
||||
7rj6URHHAgMBAAECggEAGmbCldDnlrAzxJY3cwpsK5f2EwkHIr/aiuQpLCzTUlUh |
||||
onVBYRGxtaSeSSyXcV2BKTrxz5nZOBYZkPqI4Y5T8kwxgpz2/QW2jUABUtNN6yPe |
||||
HU4gma+bSTJX5PnTZ/M0z0tpQezdLx5b3I2M+48ZGMUegZvcp8qU6N8U6VK5VbFD |
||||
DMTGL4b+Kc9HScRkCJjU3FfQcqf9Ml5w9jzHSeHImYEDrG0nX8N8EImRCBXbgxCl |
||||
5XT1h6LFUGdr+N6n2w56+6l8OZZVmwj1NdF6NJybUQl4Y7b0niA+5czzjRt/YUjZ |
||||
HW0fXmx3XlbYGWYdMdS+VaIW6pkUpm8kZkqjngqLwQKBgQDfhbFQmg9lsJQ8/dQZ |
||||
WzRNsozHKWkQiZbW5sXBWygJbAB3Hc8gvQkuZe9TVyF99cznRj6ro6pGZjP0rTdY |
||||
3ACTL+ygRArcIR6VsJCIr6nPvBLpOoNb8TQeKPmHC2gnSP9zaT/K2lldYISKNaYQ |
||||
0seB2gvZhIgMgWtZtmb3jdgl9wKBgQDDFdknXgvFgB+y96//9wTu2WWuE5yQ5yB7 |
||||
utAcHNO9rx5X1tJqxymYh+iE8HUN25By+96SpNMQFI+0wNGVB00YWNBKtyepimWN |
||||
EUCojTy+MIXIjrLcvviEePsI4TPWYf8XtZeiYtcczYrt/wPQUYaDb8LBRfpIfmhr |
||||
rCGW93s+sQKBgEDOKTeeQyKPjJsWWL01RTfVsZ04s155FcOeyu0heb0plAT1Ho12 |
||||
YUgTg8zc8Tfs4QiYxCjNXdvlW+Dvq6FWv8/s0CUzNRbXf1+U/oKys4AoHi+CqH0q |
||||
tJqd9KKjuwHQ10dl13n/znMVPbg4j7pG8lMCnfblxvAhQbeT+8yAUo/HAoGBAL3t |
||||
/n4KXNGK3NHDvXEp0H6t3wWsiEi3DPQJO+Wy1x8caCFCv5c/kaqz3tfWt0+njSm1 |
||||
N8tzdx13tzVWaHV8Jz3l8dxcFtxEJnxB6L5wy0urOAS7kT3DG3b1xgmuH2a//7fY |
||||
jumE60NahcER/2eIh7pdS7IZbAO6NfVmH0m4Zh/xAoGAbquh60sAfLC/1O2/4Xom |
||||
PHS7z2+TNpwu4ou3nspxfigNQcTWzzzTVFLnaTPg+HKbLRXSWysjssmmj5u3lCyc |
||||
S2M9xuhApa9CrN/udz4gEojRVsTla/gyLifIZ3CtTn2QEQiIJEMxM+59KAlkgUBo |
||||
9BeZ03xTaEZfhVZ9bEN30Ak= |
||||
-----END PRIVATE KEY----- |
||||
''; |
||||
|
||||
snakeOilCert = '' |
||||
-----BEGIN CERTIFICATE----- |
||||
MIICvjCCAaagAwIBAgIJANhA6+PPhomZMA0GCSqGSIb3DQEBCwUAMBcxFTATBgNV |
||||
BAMMDGIwOTM0YWMwYWZkNTAeFw0xNTExMzAxNzQ3MzVaFw0yNTExMjcxNzQ3MzVa |
||||
MBcxFTATBgNVBAMMDGIwOTM0YWMwYWZkNTCCASIwDQYJKoZIhvcNAQEBBQADggEP |
||||
ADCCAQoCggEBAKpV6aKjvxHjVPMydHbMUP/AVPSJJw6kWS7K02a49/bwUtpr3BIF |
||||
aa4AZsSLvAEh/Dz9tSoUFNCnYbWbVyZwIrGGa+86Qazz14zXfWzWVb9tdTfNiyjh |
||||
7vvbiQfBTrmNGVCzpwVYiWZbtXncdChs/Tl3L7M+m6M89KU5DSphWJHWz5GBkjyv |
||||
TBLZkOyWI21DAEslIi9fpdWdcugX8eYXj/JIn2kvYDFBcLBkTxJ8LMekCuz0I4ip |
||||
NoC7AHv2TFZIVAl7CZpvvgFeIzr0UwK0c43bg+Xs5H2xEkcfyswTNS6ammZR4I0T |
||||
MAGPNBDuy9HXxyZvNFZ62nS1P1juuPpREccCAwEAAaMNMAswCQYDVR0TBAIwADAN |
||||
BgkqhkiG9w0BAQsFAAOCAQEAd2w9rxi6qF9WV8L3rHnTE7uu0ldtdgJlCASx6ouj |
||||
TleOnjfEg+kH8r8UbmRV5vsTDn1Qp5JGDYxfytRUQwLb1zTLde0xotx37E3LY8Wr |
||||
sD6Al4t8sHywB/hc5dy29TgG0iyG8LKZrkwytLvDZ814W3OwpN2rpEz6pdizdHNn |
||||
jsoDEngZiDHvLjIyE0cDkFXkeYMGXOnBUeOcu4nfu4C5eKs3nXGGAcNDbDRIuLoE |
||||
BZExUBY+YSs6JBvh5tvRqLVW0Dz0akEcjb/jhwS2LmDip8Pdoxx4Q1jPKEu38zrr |
||||
Vd5WD2HJhLb9u0UxVp9vfWIUDgydopV5ZmWCQ5YvNepb1w== |
||||
-----END CERTIFICATE----- |
||||
''; |
||||
in { |
||||
name = "pumpio"; |
||||
meta = with pkgs.stdenv.lib.maintainers; { |
||||
maintainers = [ rvl ]; |
||||
}; |
||||
|
||||
nodes = { |
||||
one = |
||||
{ config, pkgs, ... }: |
||||
{ |
||||
services = { |
||||
pumpio = { |
||||
port = 443; |
||||
enable = true; |
||||
sslCert = pkgs.writeText "snakeoil.cert" snakeOilCert; |
||||
sslKey = pkgs.writeText "snakeoil.pem" snakeOilKey; |
||||
secretFile = pkgs.writeText "secretFile" "test123"; |
||||
site = "test"; |
||||
}; |
||||
mongodb.enable = true; |
||||
mongodb.extraConfig = '' |
||||
storage.journal.enabled: false |
||||
''; |
||||
}; |
||||
systemd.services.mongodb.unitConfig.Before = "pump.io.service"; |
||||
systemd.services."pump.io".unitConfig.Requires = "mongodb.service"; |
||||
}; |
||||
}; |
||||
|
||||
testScript = '' |
||||
startAll; |
||||
|
||||
$one->waitForUnit("pump.io.service"); |
||||
$one->waitUntilSucceeds("curl -k https://localhost"); |
||||
''; |
||||
}) |
@ -0,0 +1,66 @@ |
||||
import ./make-test.nix { |
||||
name = "systemd"; |
||||
|
||||
machine = { lib, ... }: { |
||||
imports = [ common/user-account.nix common/x11.nix ]; |
||||
|
||||
virtualisation.emptyDiskImages = [ 512 ]; |
||||
|
||||
fileSystems = lib.mkVMOverride { |
||||
"/test-x-initrd-mount" = { |
||||
device = "/dev/vdb"; |
||||
fsType = "ext2"; |
||||
autoFormat = true; |
||||
noCheck = true; |
||||
options = [ "x-initrd.mount" ]; |
||||
}; |
||||
}; |
||||
|
||||
systemd.extraConfig = "DefaultEnvironment=\"XXX_SYSTEM=foo\""; |
||||
systemd.user.extraConfig = "DefaultEnvironment=\"XXX_USER=bar\""; |
||||
services.journald.extraConfig = "Storage=volatile"; |
||||
services.xserver.displayManager.auto.user = "alice"; |
||||
|
||||
systemd.services.testservice1 = { |
||||
description = "Test Service 1"; |
||||
wantedBy = [ "multi-user.target" ]; |
||||
serviceConfig.Type = "oneshot"; |
||||
script = '' |
||||
if [ "$XXX_SYSTEM" = foo ]; then |
||||
touch /system_conf_read |
||||
fi |
||||
''; |
||||
}; |
||||
|
||||
systemd.user.services.testservice2 = { |
||||
description = "Test Service 2"; |
||||
wantedBy = [ "default.target" ]; |
||||
serviceConfig.Type = "oneshot"; |
||||
script = '' |
||||
if [ "$XXX_USER" = bar ]; then |
||||
touch "$HOME/user_conf_read" |
||||
fi |
||||
''; |
||||
}; |
||||
}; |
||||
|
||||
testScript = '' |
||||
$machine->waitForX; |
||||
|
||||
# Regression test for https://github.com/NixOS/nixpkgs/issues/35415 |
||||
subtest "configuration files are recognized by systemd", sub { |
||||
$machine->succeed('test -e /system_conf_read'); |
||||
$machine->succeed('test -e /home/alice/user_conf_read'); |
||||
$machine->succeed('test -z $(ls -1 /var/log/journal)'); |
||||
}; |
||||
|
||||
# Regression test for https://github.com/NixOS/nixpkgs/issues/35268 |
||||
subtest "file system with x-initrd.mount is not unmounted", sub { |
||||
$machine->shutdown; |
||||
$machine->waitForUnit('multi-user.target'); |
||||
# If the file system was unmounted during the shutdown the file system |
||||
# has a last mount time, because the file system wasn't checked. |
||||
$machine->fail('dumpe2fs /dev/vdb | grep -q "^Last mount time: *n/a"'); |
||||
}; |
||||
''; |
||||
} |
@ -0,0 +1,33 @@ |
||||
{ stdenv, lib, go, buildGoPackage, dep, fetchgit, git, cacert }: |
||||
|
||||
buildGoPackage rec { |
||||
name = "dcrd-${version}"; |
||||
version = "1.1.2"; |
||||
rev = "refs/tags/v${version}"; |
||||
goPackagePath = "github.com/decred/dcrd"; |
||||
|
||||
buildInputs = [ go git dep cacert ]; |
||||
|
||||
GIT_SSL_CAINFO = "${cacert}/etc/ssl/certs/ca-bundle.crt"; |
||||
NIX_SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt"; |
||||
|
||||
src = fetchgit { |
||||
inherit rev; |
||||
url = "https://${goPackagePath}"; |
||||
sha256 = "0xcynipdn9zmmralxj0hjrwyanvhkwfj2b1vvjk5zfc95s2xc1q9"; |
||||
}; |
||||
|
||||
preBuild = '' |
||||
export CWD=$(pwd) |
||||
cd go/src/github.com/decred/dcrd |
||||
dep ensure |
||||
go install . ./cmd/... |
||||
cd $CWD |
||||
''; |
||||
|
||||
meta = { |
||||
homepage = "https://decred.org"; |
||||
description = "Decred daemon in Go (golang)"; |
||||
license = with lib.licenses; [ isc ]; |
||||
}; |
||||
} |
@ -0,0 +1,42 @@ |
||||
{ stdenv, lib, go, buildGoPackage, dep, fetchgit, git, cacert }: |
||||
|
||||
buildGoPackage rec { |
||||
name = "dcrwallet-${version}"; |
||||
version = "1.1.2"; |
||||
rev = "refs/tags/v${version}"; |
||||
goPackagePath = "github.com/decred/dcrwallet"; |
||||
|
||||
buildInputs = [ go git dep cacert ]; |
||||
|
||||
GIT_SSL_CAINFO = "${cacert}/etc/ssl/certs/ca-bundle.crt"; |
||||
NIX_SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt"; |
||||
|
||||
src = fetchgit { |
||||
inherit rev; |
||||
url = "https://${goPackagePath}"; |
||||
sha256 = "058im4vmcmxcl5ir14h17wik5lagp2ay0p8qc3r99qmpfwvvz39x"; |
||||
}; |
||||
|
||||
preBuild = '' |
||||
export CWD=$(pwd) |
||||
cd go/src/github.com/decred/dcrwallet |
||||
dep ensure |
||||
''; |
||||
|
||||
buildPhase = '' |
||||
runHook preBuild |
||||
go build |
||||
''; |
||||
|
||||
installPhase = '' |
||||
mkdir -pv $bin/bin |
||||
cp -v dcrwallet $bin/bin |
||||
''; |
||||
|
||||
|
||||
meta = { |
||||
homepage = "https://decred.org"; |
||||
description = "Decred daemon in Go (golang)"; |
||||
license = with lib.licenses; [ isc ]; |
||||
}; |
||||
} |
@ -0,0 +1,7 @@ |
||||
let |
||||
version = "1.9.4"; |
||||
sha256 = "00b6wsyc2chmdkhfhi9h1i06hpcjj2abcx3qdc6k39clgha0081f"; |
||||
cargoSha256 = "0pyb1mpykdp6i7c30lm5fprrxg3zanak44g28cygzli3l9l3xiy3"; |
||||
patches = [ ./patches/vendored-sources-1.9.patch ]; |
||||
in |
||||
import ./parity.nix { inherit version sha256 cargoSha256 patches; } |
@ -0,0 +1,7 @@ |
||||
let |
||||
version = "1.8.11"; |
||||
sha256 = "1vabkglmmbx9jccwsqwvwck1brdjack3sw6iwsxy01wsc2jam56k"; |
||||
cargoSha256 = "1l5hx77glclpwd9i35rr3lxfxshsf1bsxvs2chsp2vwjy06knjmi"; |
||||
patches = [ ./patches/vendored-sources-1.8.patch ]; |
||||
in |
||||
import ./parity.nix { inherit version sha256 cargoSha256 patches; } |
@ -0,0 +1,38 @@ |
||||
{ version |
||||
, sha256 |
||||
, cargoSha256 |
||||
, patches |
||||
}: |
||||
|
||||
{ stdenv |
||||
, fetchFromGitHub |
||||
, rustPlatform |
||||
, pkgconfig |
||||
, openssl |
||||
, systemd |
||||
}: |
||||
|
||||
rustPlatform.buildRustPackage rec { |
||||
name = "parity-${version}"; |
||||
inherit cargoSha256 patches; |
||||
|
||||
src = fetchFromGitHub { |
||||
owner = "paritytech"; |
||||
repo = "parity"; |
||||
rev = "v${version}"; |
||||
inherit sha256; |
||||
}; |
||||
|
||||
buildInputs = [ pkgconfig systemd.lib systemd.dev openssl openssl.dev ]; |
||||
|
||||
# Some checks failed |
||||
doCheck = false; |
||||
|
||||
meta = with stdenv.lib; { |
||||
description = "Fast, light, robust Ethereum implementation"; |
||||
homepage = http://parity.io; |
||||
license = licenses.gpl3; |
||||
maintainers = [ maintainers.akru ]; |
||||
platforms = platforms.linux; |
||||
}; |
||||
} |
@ -0,0 +1,100 @@ |
||||
diff --git a/.cargo/config b/.cargo/config
|
||||
new file mode 100644
|
||||
index 000000000..8dddda426
|
||||
--- /dev/null
|
||||
+++ b/.cargo/config
|
||||
@@ -0,0 +1,94 @@
|
||||
+[source."https://github.com/alexcrichton/mio-named-pipes"]
|
||||
+git = "https://github.com/alexcrichton/mio-named-pipes"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/nikvolf/parity-tokio-ipc"]
|
||||
+git = "https://github.com/nikvolf/parity-tokio-ipc"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/nikvolf/tokio-named-pipes"]
|
||||
+git = "https://github.com/nikvolf/tokio-named-pipes"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/bn"]
|
||||
+git = "https://github.com/paritytech/bn"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/hidapi-rs"]
|
||||
+git = "https://github.com/paritytech/hidapi-rs"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/hyper"]
|
||||
+git = "https://github.com/paritytech/hyper"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/js-precompiled.git"]
|
||||
+git = "https://github.com/paritytech/js-precompiled.git"
|
||||
+branch = "stable"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/jsonrpc.git"]
|
||||
+git = "https://github.com/paritytech/jsonrpc.git"
|
||||
+branch = "parity-1.8"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/libusb-rs"]
|
||||
+git = "https://github.com/paritytech/libusb-rs"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/libusb-sys"]
|
||||
+git = "https://github.com/paritytech/libusb-sys"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/nanomsg.rs.git"]
|
||||
+git = "https://github.com/paritytech/nanomsg.rs.git"
|
||||
+branch = "parity-1.7"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/rust-ctrlc.git"]
|
||||
+git = "https://github.com/paritytech/rust-ctrlc.git"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/rust-rocksdb"]
|
||||
+git = "https://github.com/paritytech/rust-rocksdb"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/rust-secp256k1"]
|
||||
+git = "https://github.com/paritytech/rust-secp256k1"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/rust-snappy"]
|
||||
+git = "https://github.com/paritytech/rust-snappy"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/trezor-sys"]
|
||||
+git = "https://github.com/paritytech/trezor-sys"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/wasm-utils"]
|
||||
+git = "https://github.com/paritytech/wasm-utils"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/tailhook/rotor"]
|
||||
+git = "https://github.com/tailhook/rotor"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/tomusdrw/ws-rs"]
|
||||
+git = "https://github.com/tomusdrw/ws-rs"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
@ -0,0 +1,107 @@ |
||||
diff --git a/.cargo/config b/.cargo/config
|
||||
new file mode 100644
|
||||
index 000000000..0efb69724
|
||||
--- /dev/null
|
||||
+++ b/.cargo/config
|
||||
@@ -0,0 +1,100 @@
|
||||
+
|
||||
+[source."https://github.com/alexcrichton/mio-named-pipes"]
|
||||
+git = "https://github.com/alexcrichton/mio-named-pipes"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/js-dist-paritytech/parity-beta-1-9-shell.git"]
|
||||
+git = "https://github.com/js-dist-paritytech/parity-beta-1-9-shell.git"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/js-dist-paritytech/parity-beta-1-9-v1.git"]
|
||||
+git = "https://github.com/js-dist-paritytech/parity-beta-1-9-v1.git"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/nikvolf/parity-tokio-ipc"]
|
||||
+git = "https://github.com/nikvolf/parity-tokio-ipc"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/nikvolf/tokio-named-pipes"]
|
||||
+git = "https://github.com/nikvolf/tokio-named-pipes"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/bn"]
|
||||
+git = "https://github.com/paritytech/bn"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/hidapi-rs"]
|
||||
+git = "https://github.com/paritytech/hidapi-rs"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/hyper"]
|
||||
+git = "https://github.com/paritytech/hyper"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/jsonrpc.git"]
|
||||
+git = "https://github.com/paritytech/jsonrpc.git"
|
||||
+branch = "parity-1.9"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/libusb-rs"]
|
||||
+git = "https://github.com/paritytech/libusb-rs"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/libusb-sys"]
|
||||
+git = "https://github.com/paritytech/libusb-sys"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/rust-ctrlc.git"]
|
||||
+git = "https://github.com/paritytech/rust-ctrlc.git"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/rust-rocksdb"]
|
||||
+git = "https://github.com/paritytech/rust-rocksdb"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/rust-secp256k1"]
|
||||
+git = "https://github.com/paritytech/rust-secp256k1"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/rust-snappy"]
|
||||
+git = "https://github.com/paritytech/rust-snappy"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/trezor-sys"]
|
||||
+git = "https://github.com/paritytech/trezor-sys"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/paritytech/wasm-utils"]
|
||||
+git = "https://github.com/paritytech/wasm-utils"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/pepyakin/wasmi"]
|
||||
+git = "https://github.com/pepyakin/wasmi"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/tailhook/rotor"]
|
||||
+git = "https://github.com/tailhook/rotor"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
||||
+[source."https://github.com/tomusdrw/ws-rs"]
|
||||
+git = "https://github.com/tomusdrw/ws-rs"
|
||||
+branch = "master"
|
||||
+replace-with = "vendored-sources"
|
||||
+
|
@ -1,58 +0,0 @@ |
||||
{ stdenv, fetchurl, pkgconfig, openssl, db48, boost |
||||
, zlib, qt4, qmake4Hook, utillinux, protobuf, qrencode |
||||
, withGui }: |
||||
|
||||
with stdenv.lib; |
||||
stdenv.mkDerivation rec{ |
||||
|
||||
name = "primecoin" + (toString (optional (!withGui) "d")) + "-" + version; |
||||
version = "0.8.6"; |
||||
|
||||
src = fetchurl { |
||||
url = "https://github.com/primecoin/primecoin/archive/v${version}.tar.gz"; |
||||
sha256 = "0cixnkici74204s9d5iqj5sccib5a8dig2p2fp1axdjifpg787i3"; |
||||
}; |
||||
|
||||
qmakeFlags = ["USE_UPNP=-"]; |
||||
makeFlags = ["USE_UPNP=-"]; |
||||
|
||||
nativeBuildInputs = [ pkgconfig ]; |
||||
buildInputs = [ openssl db48 boost zlib utillinux protobuf ] |
||||
++ optionals withGui [ qt4 qmake4Hook qrencode ]; |
||||
|
||||
configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ] |
||||
++ optionals withGui [ "--with-gui=qt4" ]; |
||||
|
||||
preBuild = "unset AR;" |
||||
+ (toString (optional (!withGui) "cd src; cp makefile.unix Makefile")); |
||||
|
||||
installPhase = |
||||
if withGui |
||||
then "install -D bitcoin-qt $out/bin/primecoin-qt" |
||||
else "install -D bitcoind $out/bin/primecoind"; |
||||
|
||||
# `make build/version.o`: |
||||
# make: *** No rule to make target 'build/build.h', needed by 'build/version.o'. Stop. |
||||
enableParallelBuilding = false; |
||||
|
||||
meta = { |
||||
description = "A new type cryptocurrency which is proof-of-work based on searching for prime numbers"; |
||||
longDescription= '' |
||||
Primecoin is an innovative cryptocurrency, a form of digital |
||||
currency secured by cryptography and issued through a |
||||
decentralized mining market. Derived from Satoshi Nakamoto's |
||||
Bitcoin, Primecoin introduces an unique form of proof-of-work |
||||
based on prime numbers. |
||||
|
||||
The innovative prime proof-of-work in Primecoin not only |
||||
provides security and minting to the network, but also generates |
||||
a special form of prime number chains of interest to mathematical |
||||
research. Thus primecoin network is energy-multiuse, compared to |
||||
bitcoin. |
||||
''; |
||||
homepage = http://primecoin.io/; |
||||
maintainers = with maintainers; [ AndersonTorres ]; |
||||
license = licenses.mit; |
||||
platforms = platforms.unix; |
||||
}; |
||||
} |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue