diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 07c93f84fe0..4d3c8888f3a 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -25,6 +25,12 @@ If applicable, add screenshots to help explain your problem. **Additional context** Add any other context about the problem here. +**Notify maintainers** + + **Metadata** Please run `nix-shell -p nix-info --run "nix-info -m"` and paste the result. diff --git a/lib/options.nix b/lib/options.nix index 71481c9250a..a53b8c9f264 100644 --- a/lib/options.nix +++ b/lib/options.nix @@ -193,14 +193,7 @@ rec { (showOption ["foo" "bar" "baz"]) == "foo.bar.baz" (showOption ["foo" "bar.baz" "tux"]) == "foo.\"bar.baz\".tux" */ - showOption = parts: let - escapeOptionPart = part: - let - escaped = lib.strings.escapeNixString part; - in if escaped == "\"${part}\"" - then part - else escaped; - in (concatStringsSep ".") (map escapeOptionPart parts); + showOption = parts: concatMapStringsSep "." escapeNixIdentifier parts; showFiles = files: concatStringsSep " and " (map (f: "`${f}'") files); unknownModule = ""; diff --git a/lib/strings.nix b/lib/strings.nix index 7ecd6b143ee..74e3eaa0722 100644 --- a/lib/strings.nix +++ b/lib/strings.nix @@ -315,6 +315,21 @@ rec { */ escapeNixString = s: escape ["$"] (builtins.toJSON s); + /* Quotes a string if it can't be used as an identifier directly. + + Type: string -> string + + Example: + escapeNixIdentifier "hello" + => "hello" + escapeNixIdentifier "0abc" + => "\"0abc\"" + */ + escapeNixIdentifier = s: + # Regex from https://github.com/NixOS/nix/blob/d048577909e383439c2549e849c5c2f2016c997e/src/libexpr/lexer.l#L91 + if builtins.match "[a-zA-Z_][a-zA-Z0-9_'-]*" s != null + then s else escapeNixString s; + # Obsolete - use replaceStrings instead. replaceChars = builtins.replaceStrings or ( del: new: s: diff --git a/lib/tests/maintainers.nix b/lib/tests/maintainers.nix new file mode 100644 index 00000000000..60d296eecae --- /dev/null +++ b/lib/tests/maintainers.nix @@ -0,0 +1,75 @@ +# to run these tests: +# nix-build nixpkgs/lib/tests/maintainers.nix +# If nothing is output, all tests passed +{ pkgs ? import ../.. {} }: + +let + inherit (pkgs) lib; + inherit (lib) types; + + maintainerModule = { config, ... }: { + options = { + name = lib.mkOption { + type = types.str; + }; + email = lib.mkOption { + type = types.str; + }; + github = lib.mkOption { + type = types.nullOr types.str; + default = null; + }; + githubId = lib.mkOption { + type = types.nullOr types.ints.unsigned; + default = null; + }; + keys = lib.mkOption { + type = types.listOf (types.submodule { + options.longkeyid = lib.mkOption { type = types.str; }; + options.fingerprint = lib.mkOption { type = types.str; }; + }); + default = []; + }; + }; + }; + + checkMaintainer = handle: uncheckedAttrs: + let + prefix = [ "lib" "maintainers" handle ]; + checkedAttrs = (lib.modules.evalModules { + inherit prefix; + modules = [ + maintainerModule + { + _file = toString ../../maintainers/maintainer-list.nix; + config = uncheckedAttrs; + } + ]; + }).config; + + checkGithubId = lib.optional (checkedAttrs.github != null && checkedAttrs.githubId == null) '' + echo ${lib.escapeShellArg (lib.showOption prefix)}': If `github` is specified, `githubId` must be too.' + # Calling this too often would hit non-authenticated API limits, but this + # shouldn't happen since such errors will get fixed rather quickly + info=$(curl -sS https://api.github.com/users/${checkedAttrs.github}) + id=$(jq -r '.id' <<< "$info") + echo "The GitHub ID for GitHub user ${checkedAttrs.github} is $id:" + echo -e " githubId = $id;\n" + ''; + in lib.deepSeq checkedAttrs checkGithubId; + + missingGithubIds = lib.concatLists (lib.mapAttrsToList checkMaintainer lib.maintainers); + + success = pkgs.runCommandNoCC "checked-maintainers-success" {} ">$out"; + + failure = pkgs.runCommandNoCC "checked-maintainers-failure" { + nativeBuildInputs = [ pkgs.curl pkgs.jq ]; + outputHash = "sha256:${lib.fakeSha256}"; + outputHAlgo = "sha256"; + outputHashMode = "flat"; + SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"; + } '' + ${lib.concatStringsSep "\n" missingGithubIds} + exit 1 + ''; +in if missingGithubIds == [] then success else failure diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh index e81cf016ee9..6258244457a 100755 --- a/lib/tests/modules.sh +++ b/lib/tests/modules.sh @@ -3,7 +3,10 @@ # This script is used to test that the module system is working as expected. # By default it test the version of nixpkgs which is defined in the NIX_PATH. -cd ./modules +# https://stackoverflow.com/a/246128/6605742 +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + +cd "$DIR"/modules pass=0 fail=0 diff --git a/lib/tests/release.nix b/lib/tests/release.nix index 069c015d783..ec0f9c32d3f 100644 --- a/lib/tests/release.nix +++ b/lib/tests/release.nix @@ -1,7 +1,7 @@ -{ pkgs ? import ((import ../.).cleanSource ../..) {} }: +{ pkgs ? import ../.. {} }: pkgs.runCommandNoCC "nixpkgs-lib-tests" { - buildInputs = [ pkgs.nix (import ./check-eval.nix) ]; + buildInputs = [ pkgs.nix (import ./check-eval.nix) (import ./maintainers.nix { inherit pkgs; }) ]; NIX_PATH = "nixpkgs=${toString pkgs.path}"; } '' datadir="${pkgs.nix}/share" @@ -17,8 +17,8 @@ pkgs.runCommandNoCC "nixpkgs-lib-tests" { cacheDir=$TEST_ROOT/binary-cache nix-store --init - cd ${pkgs.path}/lib/tests - bash ./modules.sh + cp -r ${../.} lib + bash lib/tests/modules.sh touch $out '' diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index f2671657fd6..60d67978eae 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -100,6 +100,7 @@ abbradar = { email = "ab@fmap.me"; github = "abbradar"; + githubId = 1174810; name = "Nikolay Amiantov"; }; abhi18av = { @@ -135,6 +136,7 @@ acairncross = { email = "acairncross@gmail.com"; github = "acairncross"; + githubId = 1517066; name = "Aiken Cairncross"; }; acowley = { @@ -146,6 +148,7 @@ adamt = { email = "mail@adamtulinius.dk"; github = "adamtulinius"; + githubId = 749381; name = "Adam Tulinius"; }; adelbertc = { @@ -229,6 +232,7 @@ aforemny = { email = "alexanderforemny@googlemail.com"; github = "aforemny"; + githubId = 610962; name = "Alexander Foremny"; }; afranchuk = { @@ -276,6 +280,7 @@ ak = { email = "ak@formalprivacy.com"; github = "alexanderkjeldaas"; + githubId = 339369; name = "Alexander Kjeldaas"; }; akavel = { @@ -383,6 +388,7 @@ alunduil = { email = "alunduil@gmail.com"; github = "alunduil"; + githubId = 169249; name = "Alex Brandt"; }; alva = { @@ -404,6 +410,7 @@ ambrop72 = { email = "ambrop7@gmail.com"; github = "ambrop72"; + githubId = 2626481; name = "Ambroz Bizjak"; }; amiddelk = { @@ -473,11 +480,13 @@ andreabedini = { email = "andrea@kzn.io"; github = "andreabedini"; + githubId = 69135; name = "Andrea Bedini"; }; andres = { email = "ksnixos@andres-loeh.de"; github = "kosmikus"; + githubId = 293191; name = "Andres Loeh"; }; andrestylianos = { @@ -507,6 +516,7 @@ andsild = { email = "andsild@gmail.com"; github = "andsild"; + githubId = 3808928; name = "Anders Sildnes"; }; aneeshusa = { @@ -560,6 +570,7 @@ antono = { email = "self@antono.info"; github = "antono"; + githubId = 7622; name = "Antono Vasiljev"; }; antonxy = { @@ -742,7 +753,8 @@ }; auntie = { email = "auntieNeo@gmail.com"; - github = "auntie"; + github = "auntieNeo"; + githubId = 574938; name = "Jonathan Glines"; }; avaq = { @@ -760,6 +772,7 @@ averelld = { email = "averell+nixos@rxd4.com"; github = "averelld"; + githubId = 687218; name = "averelld"; }; avitex = { @@ -815,11 +828,13 @@ backuitist = { email = "biethb@gmail.com"; github = "backuitist"; + githubId = 1017537; name = "Bruno Bieth"; }; badi = { email = "abdulwahidc@gmail.com"; github = "badi"; + githubId = 35324; name = "Badi' Abdul-Wahid"; }; balajisivaraman = { @@ -943,6 +958,7 @@ berdario = { email = "berdario@gmail.com"; github = "berdario"; + githubId = 752835; name = "Dario Bertini"; }; bergey = { @@ -1024,6 +1040,7 @@ bluescreen303 = { email = "mathijs@bluescreen303.nl"; github = "bluescreen303"; + githubId = 16330; name = "Mathijs Kwik"; }; bobakker = { @@ -1053,6 +1070,7 @@ boothead = { email = "ben@perurbis.com"; github = "boothead"; + githubId = 87764; name = "Ben Ford"; }; borisbabic = { @@ -1473,6 +1491,7 @@ coconnor = { email = "coreyoconnor@gmail.com"; github = "coreyoconnor"; + githubId = 34317; name = "Corey O'Connor"; }; codsl = { @@ -1566,6 +1585,7 @@ cransom = { email = "cransom@hubns.net"; github = "cransom"; + githubId = 1957293; name = "Casey Ransom"; }; CrazedProgrammer = { @@ -1725,6 +1745,7 @@ davidrusu = { email = "davidrusu.me@gmail.com"; github = "davidrusu"; + githubId = 1832378; name = "David Rusu"; }; davidtwco = { @@ -1818,6 +1839,7 @@ DerGuteMoritz = { email = "moritz@twoticketsplease.de"; github = "DerGuteMoritz"; + githubId = 19733; name = "Moritz Heidkamp"; }; dermetfan = { @@ -1835,6 +1857,7 @@ desiderius = { email = "didier@devroye.name"; github = "desiderius"; + githubId = 1311761; name = "Didier J. Devroye"; }; devhell = { @@ -1864,6 +1887,7 @@ dgonyeo = { email = "derek@gonyeo.com"; github = "dgonyeo"; + githubId = 2439413; name = "Derek Gonyeo"; }; dhkl = { @@ -1983,6 +2007,7 @@ doublec = { email = "chris.double@double.co.nz"; github = "doublec"; + githubId = 16599; name = "Chris Double"; }; dpaetzel = { @@ -2048,6 +2073,7 @@ dxf = { email = "dingxiangfei2009@gmail.com"; github = "dingxiangfei2009"; + githubId = 6884440; name = "Ding Xiang Fei"; }; dysinger = { @@ -2113,6 +2139,7 @@ edanaher = { email = "nixos@edanaher.net"; github = "edanaher"; + githubId = 984691; name = "Evan Danaher"; }; edef = { @@ -2262,6 +2289,7 @@ emmanuelrosa = { email = "emmanuel_rosa@aol.com"; github = "emmanuelrosa"; + githubId = 13485450; name = "Emmanuel Rosa"; }; endgame = { @@ -2279,7 +2307,7 @@ Enteee = { email = "nix@duckpond.ch"; github = "Enteee"; - githubid = 5493775; + githubId = 5493775; name = "Ente"; }; enzime = { @@ -2337,6 +2365,7 @@ ericsagnes = { email = "eric.sagnes@gmail.com"; github = "ericsagnes"; + githubId = 367880; name = "Eric Sagnes"; }; ericson2314 = { @@ -2376,6 +2405,7 @@ ertes = { email = "esz@posteo.de"; github = "ertes"; + githubId = 1855930; name = "Ertugrul Söylemez"; }; esclear = { @@ -2485,6 +2515,7 @@ fare = { email = "fahree@gmail.com"; github = "fare"; + githubId = 8073; name = "Francois-Rene Rideau"; }; farlion = { @@ -2496,6 +2527,7 @@ fdns = { email = "fdns02@gmail.com"; github = "fdns"; + githubId = 541748; name = "Felipe Espinoza"; }; ffinkdevs = { @@ -2622,6 +2654,7 @@ fragamus = { email = "innovative.engineer@gmail.com"; github = "fragamus"; + githubId = 119691; name = "Michael Gough"; }; @@ -2640,11 +2673,13 @@ freezeboy = { email = "freezeboy@users.noreply.github.com"; github = "freezeboy"; + githubId = 13279982; name = "freezeboy"; }; Fresheyeball = { email = "fresheyeball@gmail.com"; - github = "fresheyeball"; + github = "Fresheyeball"; + githubId = 609279; name = "Isaac Shapira"; }; fridh = { @@ -2748,6 +2783,7 @@ garbas = { email = "rok@garbas.si"; github = "garbas"; + githubId = 20208; name = "Rok Garbas"; }; garrison = { @@ -2759,6 +2795,7 @@ gavin = { email = "gavin.rogers@holo.host"; github = "gavinrogers"; + githubId = 2430469; name = "Gavin Rogers"; }; gazally = { @@ -2906,6 +2943,7 @@ gridaphobe = { email = "eric@seidel.io"; github = "gridaphobe"; + githubId = 201997; name = "Eric Seidel"; }; guibert = { @@ -3035,6 +3073,7 @@ name = "Guanpeng Xu"; }; hexa = { + email = "hexa@darmstadt.ccc.de"; github = "mweinelt"; githubId = 131599; name = "Martin Weinelt"; @@ -3053,6 +3092,7 @@ email = "me@hkjn.me"; name = "Henrik Jonsson"; github = "hkjn"; + githubId = 287215; keys = [{ longkeyid = "rsa4096/0x03EFBF839A5FDC15"; fingerprint = "D618 7A03 A40A 3D56 62F5 4B46 03EF BF83 9A5F DC15"; @@ -3225,6 +3265,7 @@ name = "Michele Catalano"; }; isgy = { + name = "isgy"; email = "isgy@teiyg.com"; github = "isgy"; githubId = 13622947; @@ -3263,7 +3304,7 @@ email = "ivar.scholten@protonmail.com"; github = "IvarWithoutBones"; githubId = 41924494; - Name = "Ivar"; + name = "Ivar"; }; ivegotasthma = { email = "ivegotasthma@protonmail.com"; @@ -3302,6 +3343,7 @@ jasoncarr = { email = "jcarr250@gmail.com"; github = "jasoncarr0"; + githubId = 6874204; name = "Jason Carr"; }; j-keck = { @@ -3313,6 +3355,7 @@ j03 = { email = "github@johannesloetzsch.de"; github = "johannesloetzsch"; + githubId = 175537; name = "Johannes Lötzsch"; }; jagajaga = { @@ -3439,7 +3482,8 @@ }; jeschli = { email = "jeschli@gmail.com"; - github = "jeschli"; + github = "Jeschli"; + githubId = 10786794; name = "Markus Hihn"; }; jethro = { @@ -3451,6 +3495,7 @@ jfb = { email = "james@yamtime.com"; github = "tftio"; + githubId = 143075; name = "James Felix Black"; }; jflanglois = { @@ -3510,6 +3555,7 @@ jitwit = { email = "jrn@bluefarm.ca"; github = "jitwit"; + githubId = 51518420; name = "jitwit"; }; jlesquembre = { @@ -3551,6 +3597,7 @@ joamaki = { email = "joamaki@gmail.com"; github = "joamaki"; + githubId = 1102396; name = "Jussi Maki"; }; joelburget = { @@ -3573,6 +3620,7 @@ email = "admin@cryto.net"; name = "Sven Slootweg"; github = "joepie91"; + githubId = 1663259; }; joesalisbury = { email = "salisbury.joseph@gmail.com"; @@ -3646,6 +3694,7 @@ jonathanmarler = { email = "johnnymarler@gmail.com"; github = "marler8997"; + githubId = 304904; name = "Jonathan Marler"; }; jonathanreeve = { @@ -3751,6 +3800,7 @@ juliendehos = { email = "dehos@lisic.univ-littoral.fr"; github = "juliendehos"; + githubId = 11947756; name = "Julien Dehos"; }; jumper149 = { @@ -3784,6 +3834,7 @@ jyp = { email = "jeanphilippe.bernardy@gmail.com"; github = "jyp"; + githubId = 27747; name = "Jean-Philippe Bernardy"; }; jzellner = { @@ -3797,7 +3848,7 @@ email = "KAction@disroot.org"; github = "kaction"; githubId = 44864956; - key = [{ + keys = [{ longkeyid = "ed25519/0x749FD4DFA2E94236"; fingerprint = "3F87 0A7C A7B4 3731 2F13 6083 749F D4DF A2E9 4236"; }]; @@ -3833,6 +3884,7 @@ kampfschlaefer = { email = "arnold@arnoldarts.de"; github = "kampfschlaefer"; + githubId = 3831860; name = "Arnold Krille"; }; karantan = { @@ -3990,6 +4042,7 @@ email = "adrian@kummerlaender.eu"; name = "Adrian Kummerlaender"; github = "KnairdA"; + githubId = 498373; }; knedlsepp = { email = "josef.kemetmueller@gmail.com"; @@ -4012,6 +4065,7 @@ kolbycrouch = { email = "kjc.devel@gmail.com"; github = "kolbycrouch"; + githubId = 6346418; name = "Kolby Crouch"; }; konimex = { @@ -4023,6 +4077,7 @@ koral = { email = "koral@mailoo.org"; github = "k0ral"; + githubId = 524268; name = "Koral"; }; kovirobi = { @@ -4064,7 +4119,7 @@ kristian-brucaj = { email = "kbrucaj@gmail.com"; github = "kristian-brucaj"; - githubID = "8893110"; + githubId = 8893110; name = "Kristian Brucaj"; }; kristoff3r = { @@ -4124,6 +4179,7 @@ laikq = { email = "gwen@quasebarth.de"; github = "laikq"; + githubId = 55911173; name = "Gwendolyn Quasebarth"; }; lasandell = { @@ -4141,6 +4197,7 @@ lassulus = { email = "lassulus@gmail.com"; github = "Lassulus"; + githubId = 621759; name = "Lassulus"; }; lattfein = { @@ -4195,6 +4252,7 @@ lebastr = { email = "lebastr@gmail.com"; github = "lebastr"; + githubId = 887072; name = "Alexander Lebedev"; }; ledif = { @@ -4230,6 +4288,7 @@ leonardoce = { email = "leonardo.cecchi@gmail.com"; github = "leonardoce"; + githubId = 1572058; name = "Leonardo Cecchi"; }; leshainc = { @@ -4393,6 +4452,7 @@ lovek323 = { email = "jason@oconal.id.au"; github = "lovek323"; + githubId = 265084; name = "Jason O'Conal"; }; lovesegfault = { @@ -4432,6 +4492,7 @@ ltavard = { email = "laure.tavard@univ-grenoble-alpes.fr"; github = "ltavard"; + githubId = 8555953; name = "Laure Tavard"; }; luc65r = { @@ -4495,6 +4556,7 @@ lumi = { email = "lumi@pew.im"; github = "lumi-me-not"; + githubId = 26020062; name = "lumi"; }; luz = { @@ -4678,6 +4740,7 @@ matthewbauer = { email = "mjbauer95@gmail.com"; github = "matthewbauer"; + githubId = 19036; name = "Matthew Bauer"; }; matthiasbeyer = { @@ -4695,6 +4758,7 @@ matti-kariluoma = { email = "matti@kariluo.ma"; github = "matti-kariluoma"; + githubId = 279868; name = "Matti Kariluoma"; }; maurer = { @@ -4820,6 +4884,7 @@ melsigl = { email = "melanie.bianca.sigl@gmail.com"; github = "melsigl"; + githubId = 15093162; name = "Melanie B. Sigl"; }; melkor333 = { @@ -4888,6 +4953,7 @@ michaelpj = { email = "michaelpj@gmail.com"; github = "michaelpj"; + githubId = 1699466; name = "Michael Peyton Jones"; }; michalrus = { @@ -4899,6 +4965,7 @@ michelk = { email = "michel@kuhlmanns.info"; github = "michelk"; + githubId = 1404919; name = "Michel Kuhlmann"; }; michojel = { @@ -4972,6 +5039,7 @@ mirdhyn = { email = "mirdhyn@gmail.com"; github = "mirdhyn"; + githubId = 149558; name = "Merlin Gaillard"; }; mirrexagon = { @@ -5007,6 +5075,7 @@ mkf = { email = "m@mikf.pl"; github = "mkf"; + githubId = 7753506; name = "Michał Krzysztof Feiler"; keys = [{ longkeyid = "rsa4096/0xE35C2D7C2C6AC724"; @@ -5056,6 +5125,7 @@ mmlb = { email = "manny@peekaboo.mmlb.icu"; github = "mmlb"; + githubId = 708570; name = "Manuel Mendez"; }; mnacamura = { @@ -5085,6 +5155,7 @@ Mogria = { email = "m0gr14@gmail.com"; github = "mogria"; + githubId = 754512; name = "Mogria"; }; monsieurp = { @@ -5142,6 +5213,7 @@ MP2E = { email = "MP2E@archlinux.us"; github = "MP2E"; + githubId = 167708; name = "Cray Elliott"; }; mpcsh = { @@ -5165,6 +5237,7 @@ mpscholten = { email = "marc@mpscholten.de"; github = "mpscholten"; + githubId = 2072185; name = "Marc Scholten"; }; mpsyco = { @@ -5182,6 +5255,7 @@ mredaelli = { email = "massimo@typish.io"; github = "mredaelli"; + githubId = 3073833; name = "Massimo Redaelli"; }; mrkkrp = { @@ -5249,6 +5323,7 @@ MtP = { email = "marko.nixos@poikonen.de"; github = "MtP76"; + githubId = 2176611; name = "Marko Poikonen"; }; mtreskin = { @@ -5314,6 +5389,7 @@ nand0p = { email = "nando@hex7.com"; github = "nand0p"; + githubId = 1916245; name = "Fernando Jose Pando"; }; Nate-Devv = { @@ -5587,6 +5663,7 @@ olynch = { email = "owen@olynch.me"; github = "olynch"; + githubId = 4728903; name = "Owen Lynch"; }; omnipotententity = { @@ -5610,6 +5687,7 @@ orbitz = { email = "mmatalka@gmail.com"; github = "orbitz"; + githubId = 75299; name = "Malcolm Matalka"; }; orivej = { @@ -5745,6 +5823,7 @@ pcarrier = { email = "pc@rrier.ca"; github = "pcarrier"; + githubId = 8641; name = "Pierre Carrier"; }; periklis = { @@ -5890,6 +5969,7 @@ plchldr = { email = "mail@oddco.de"; github = "plchldr"; + githubId = 11639001; name = "Jonas Beyer"; }; plcplc = { @@ -5913,6 +5993,7 @@ pmeunier = { email = "pierre-etienne.meunier@inria.fr"; github = "P-E-Meunier"; + githubId = 17021304; name = "Pierre-Étienne Meunier"; }; pmiddend = { @@ -5942,6 +6023,7 @@ polyrod = { email = "dc1mdp@gmail.com"; github = "polyrod"; + githubId = 24878306; name = "Maurizio Di Pietro"; }; pombeirp = { @@ -6121,11 +6203,13 @@ raboof = { email = "arnout@bzzt.net"; github = "raboof"; + githubId = 131856; name = "Arnout Engelen"; }; rafaelgg = { email = "rafael.garcia.gallego@gmail.com"; github = "rafaelgg"; + githubId = 1016742; name = "Rafael García"; }; raquelgb = { @@ -6297,6 +6381,7 @@ rickynils = { email = "rickynils@gmail.com"; github = "rickynils"; + githubId = 16779; name = "Rickard Nilsson"; }; rika = { @@ -6380,11 +6465,13 @@ rob = { email = "rob.vermaas@gmail.com"; github = "rbvermaa"; + githubId = 353885; name = "Rob Vermaas"; }; robberer = { email = "robberer@freakmail.de"; github = "robberer"; + githubId = 6204883; name = "Longrin Wischnewski"; }; robbinch = { @@ -6504,6 +6591,7 @@ rvolosatovs = { email = "rvolosatovs@riseup.net"; github = "rvolosatovs"; + githubId = 12877905; name = "Roman Volosatovs"; }; ryanartecona = { @@ -6515,6 +6603,7 @@ ryansydnor = { email = "ryan.t.sydnor@gmail.com"; github = "ryansydnor"; + githubId = 1832096; name = "Ryan Sydnor"; }; ryantm = { @@ -6606,6 +6695,7 @@ sander = { email = "s.vanderburg@tudelft.nl"; github = "svanderburg"; + githubId = 1153271; name = "Sander van der Burg"; }; sargon = { @@ -6641,6 +6731,7 @@ scalavision = { email = "scalavision@gmail.com"; github = "scalavision"; + githubId = 3958212; name = "Tom Sorlie"; }; schmitthenner = { @@ -6650,8 +6741,10 @@ name = "Fabian Schmitthenner"; }; schmittlauch = { + name = "Trolli Schmittlauch"; email = "t.schmittlauch+nixos@orlives.de"; github = "schmittlauch"; + githubId = 1479555; }; schneefux = { email = "schneefux+nixos_pkg@schneefux.xyz"; @@ -6690,6 +6783,7 @@ scubed2 = { email = "scubed2@gmail.com"; github = "scubed2"; + githubId = 7401858; name = "Sterling Stein"; }; sdier = { @@ -6749,7 +6843,7 @@ servalcatty = { email = "servalcat@pm.me"; github = "servalcatty"; - githubid = 51969817; + githubId = 51969817; name = "Serval"; keys = [{ longkeyid = "rsa4096/0x4A2AAAA382F8294C"; @@ -6795,6 +6889,7 @@ shazow = { email = "andrey.petrov@shazow.net"; github = "shazow"; + githubId = 6292; name = "Andrey Petrov"; }; sheenobu = { @@ -6818,16 +6913,19 @@ shlevy = { email = "shea@shealevy.com"; github = "shlevy"; + githubId = 487050; name = "Shea Levy"; }; shmish111 = { email = "shmish111@gmail.com"; github = "shmish111"; + githubId = 934267; name = "David Smith"; }; shnarazk = { email = "shujinarazaki@protonmail.com"; github = "shnarazk"; + githubId = 997855; name = "Narazaki Shuji"; }; shou = { @@ -6915,6 +7013,7 @@ sjmackenzie = { email = "setori88@gmail.com"; github = "sjmackenzie"; + githubId = 158321; name = "Stewart Mackenzie"; }; sjourdois = { @@ -7048,6 +7147,7 @@ sprock = { email = "rmason@mun.ca"; github = "sprock"; + githubId = 6391601; name = "Roger Mason"; }; spwhitt = { @@ -7059,6 +7159,7 @@ srghma = { email = "srghma@gmail.com"; github = "srghma"; + githubId = 7573215; name = "Sergei Khoma"; }; srgom = { @@ -7276,6 +7377,7 @@ taha = { email = "xrcrod@gmail.com"; github = "tgharib"; + githubId = 6457015; name = "Taha Gharib"; }; tailhook = { @@ -7359,6 +7461,7 @@ tckmn = { email = "andy@tck.mn"; github = "tckmn"; + githubId = 2389333; name = "Andy Tockman"; }; teh = { @@ -7388,11 +7491,13 @@ tesq0 = { email = "mikolaj.galkowski@gmail.com"; github = "tesq0"; + githubId = 26417242; name = "Mikolaj Galkowski"; }; teto = { email = "mcoudron@hotmail.com"; github = "teto"; + githubId = 886074; name = "Matthieu Coudron"; }; tex = { @@ -7434,6 +7539,7 @@ the-kenny = { email = "moritz@tarn-vedra.de"; github = "the-kenny"; + githubId = 31167; name = "Moritz Ulrich"; }; thedavidmeister = { @@ -7521,11 +7627,13 @@ timbertson = { email = "tim@gfxmonk.net"; github = "timbertson"; + githubId = 14172; name = "Tim Cuthbertson"; }; timma = { email = "kunduru.it.iitb@gmail.com"; github = "ktrsoft"; + githubId = 12712927; name = "Timma"; }; timokau = { @@ -7577,6 +7685,7 @@ tnias = { email = "phil@grmr.de"; github = "tnias"; + githubId = 9853194; name = "Philipp Bartsch"; }; tobim = { @@ -7672,6 +7781,7 @@ tscholak = { email = "torsten.scholak@googlemail.com"; github = "tscholak"; + githubId = 1568873; name = "Torsten Scholak"; }; tstrobel = { @@ -7693,6 +7803,7 @@ tvestelind = { email = "tomas.vestelind@fripost.org"; github = "tvestelind"; + githubId = 699403; name = "Tomas Vestelind"; }; tvorog = { @@ -7704,11 +7815,13 @@ tweber = { email = "tw+nixpkgs@360vier.de"; github = "thorstenweber83"; + githubId = 9413924; name = "Thorsten Weber"; }; twey = { email = "twey@twey.co.uk"; - github = "twey"; + github = "Twey"; + githubId = 101639; name = "James ‘Twey’ Kay"; }; twhitehead = { @@ -7772,6 +7885,7 @@ uwap = { email = "me@uwap.name"; github = "uwap"; + githubId = 2212422; name = "uwap"; }; va1entin = { @@ -7789,12 +7903,13 @@ valebes = { email = "valebes@gmail.com"; github = "valebes"; - githubid = 10956211; + githubId = 10956211; name = "Valerio Besozzi"; }; valeriangalliat = { email = "val@codejam.info"; github = "valeriangalliat"; + githubId = 3929133; name = "Valérian Galliat"; }; valodim = { @@ -7842,6 +7957,7 @@ vcanadi = { email = "vito.canadi@gmail.com"; github = "vcanadi"; + githubId = 8889722; name = "Vitomir Čanadi"; }; vcunat = { @@ -7904,6 +8020,7 @@ viric = { email = "viric@viric.name"; github = "viric"; + githubId = 66664; name = "Lluís Batlle i Rossell"; }; virusdave = { @@ -7915,6 +8032,7 @@ vizanto = { email = "danny@prime.vc"; github = "vizanto"; + githubId = 326263; name = "Danny Wilson"; }; vklquevs = { @@ -7944,6 +8062,7 @@ vmchale = { email = "tmchale@wisc.edu"; github = "vmchale"; + githubId = 13259982; name = "Vanessa McHale"; }; volhovm = { @@ -8067,6 +8186,7 @@ wscott = { email = "wsc9tt@gmail.com"; github = "wscott"; + githubId = 31487; name = "Wayne Scott"; }; wucke13 = { @@ -8120,6 +8240,7 @@ xnaveira = { email = "xnaveira@gmail.com"; github = "xnaveira"; + githubId = 2534411; name = "Xavier Naveira"; }; xnwdd = { @@ -8161,6 +8282,7 @@ y0no = { email = "y0no@y0no.fr"; github = "y0no"; + githubId = 2242427; name = "Yoann Ono"; }; yarny = { @@ -8242,6 +8364,7 @@ yvesf = { email = "yvesf+nix@xapek.org"; github = "yvesf"; + githubId = 179548; name = "Yves Fischer"; }; yvt = { @@ -8271,6 +8394,7 @@ zalakain = { email = "ping@umazalakain.info"; github = "umazalakain"; + githubId = 1319905; name = "Uma Zalakain"; }; zaninime = { @@ -8431,6 +8555,7 @@ name = "Nicholas Gerstle"; email = "ngerstle@gmail.com"; github = "ngerstle"; + githubId = 1023752; }; xavierzwirtz = { email = "me@xavierzwirtz.com"; diff --git a/nixos/modules/services/web-servers/traefik.nix b/nixos/modules/services/web-servers/traefik.nix index 5b0fc467ea4..4ab7307c3b6 100644 --- a/nixos/modules/services/web-servers/traefik.nix +++ b/nixos/modules/services/web-servers/traefik.nix @@ -4,56 +4,102 @@ with lib; let cfg = config.services.traefik; - configFile = - if cfg.configFile == null then - pkgs.runCommand "config.toml" { - buildInputs = [ pkgs.remarshal ]; - preferLocalBuild = true; - } '' - remarshal -if json -of toml \ - < ${pkgs.writeText "config.json" (builtins.toJSON cfg.configOptions)} \ - > $out - '' - else cfg.configFile; - + jsonValue = with types; + let + valueType = nullOr (oneOf [ + bool + int + float + str + (lazyAttrsOf valueType) + (listOf valueType) + ]) // { + description = "JSON value"; + emptyValue.value = { }; + }; + in valueType; + dynamicConfigFile = if cfg.dynamicConfigFile == null then + pkgs.runCommand "config.toml" { + buildInputs = [ pkgs.remarshal ]; + preferLocalBuild = true; + } '' + remarshal -if json -of toml \ + < ${ + pkgs.writeText "dynamic_config.json" + (builtins.toJSON cfg.dynamicConfigOptions) + } \ + > $out + '' + else + cfg.dynamicConfigFile; + staticConfigFile = if cfg.staticConfigFile == null then + pkgs.runCommand "config.toml" { + buildInputs = [ pkgs.yj ]; + preferLocalBuild = true; + } '' + yj -jt -i \ + < ${ + pkgs.writeText "static_config.json" (builtins.toJSON + (recursiveUpdate cfg.staticConfigOptions { + providers.file.filename = "${dynamicConfigFile}"; + })) + } \ + > $out + '' + else + cfg.staticConfigFile; in { options.services.traefik = { enable = mkEnableOption "Traefik web server"; - configFile = mkOption { + staticConfigFile = mkOption { default = null; - example = literalExample "/path/to/config.toml"; + example = literalExample "/path/to/static_config.toml"; type = types.nullOr types.path; description = '' - Path to verbatim traefik.toml to use. - (Using that option has precedence over configOptions) + Path to traefik's static configuration to use. + (Using that option has precedence over staticConfigOptions and dynamicConfigOptions) ''; }; - configOptions = mkOption { + staticConfigOptions = mkOption { description = '' - Config for Traefik. + Static configuration for Traefik. ''; - type = types.attrs; - default = { - defaultEntryPoints = ["http"]; - entryPoints.http.address = ":80"; - }; + type = jsonValue; + default = { entryPoints.http.address = ":80"; }; example = { - defaultEntrypoints = [ "http" ]; - web.address = ":8080"; + entryPoints.web.address = ":8080"; entryPoints.http.address = ":80"; - file = {}; - frontends = { - frontend1 = { - backend = "backend1"; - routes.test_1.rule = "Host:localhost"; - }; - }; - backends.backend1 = { - servers.server1.url = "http://localhost:8000"; + api = { }; + }; + }; + + dynamicConfigFile = mkOption { + default = null; + example = literalExample "/path/to/dynamic_config.toml"; + type = types.nullOr types.path; + description = '' + Path to traefik's dynamic configuration to use. + (Using that option has precedence over dynamicConfigOptions) + ''; + }; + + dynamicConfigOptions = mkOption { + description = '' + Dynamic configuration for Traefik. + ''; + type = jsonValue; + default = { }; + example = { + http.routers.router1 = { + rule = "Host(`localhost`)"; + service = "service1"; }; + + http.services.service1.loadBalancer.servers = + [{ url = "http://localhost:8080"; }]; }; }; @@ -61,7 +107,7 @@ in { default = "/var/lib/traefik"; type = types.path; description = '' - Location for any persistent data traefik creates, ie. acme + Location for any persistent data traefik creates, ie. acme ''; }; @@ -84,16 +130,15 @@ in { }; config = mkIf cfg.enable { - systemd.tmpfiles.rules = [ - "d '${cfg.dataDir}' 0700 traefik traefik - -" - ]; + systemd.tmpfiles.rules = [ "d '${cfg.dataDir}' 0700 traefik traefik - -" ]; systemd.services.traefik = { description = "Traefik web server"; after = [ "network-online.target" ]; wantedBy = [ "multi-user.target" ]; serviceConfig = { - ExecStart = ''${cfg.package.bin}/bin/traefik --configfile=${configFile}''; + ExecStart = + "${cfg.package}/bin/traefik --configfile=${staticConfigFile}"; Type = "simple"; User = "traefik"; Group = cfg.group; @@ -120,6 +165,6 @@ in { isSystemUser = true; }; - users.groups.traefik = {}; + users.groups.traefik = { }; }; } diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 5819879b30e..4f60892488a 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -303,6 +303,8 @@ in timezone = handleTest ./timezone.nix {}; tinydns = handleTest ./tinydns.nix {}; tor = handleTest ./tor.nix {}; + # traefik test relies on docker-containers + traefik = handleTestOn ["x86_64-linux"] ./traefik.nix {}; transmission = handleTest ./transmission.nix {}; trac = handleTest ./trac.nix {}; trilium-server = handleTestOn ["x86_64-linux"] ./trilium-server.nix {}; diff --git a/nixos/tests/traefik.nix b/nixos/tests/traefik.nix new file mode 100644 index 00000000000..0e21a7cf843 --- /dev/null +++ b/nixos/tests/traefik.nix @@ -0,0 +1,87 @@ +# Test Traefik as a reverse proxy of a local web service +# and a Docker container. +import ./make-test-python.nix ({ pkgs, ... }: { + name = "traefik"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ joko ]; + }; + + nodes = { + client = { config, pkgs, ... }: { + environment.systemPackages = [ pkgs.curl ]; + }; + traefik = { config, pkgs, ... }: { + docker-containers.nginx = { + extraDockerOptions = [ + "-l" "traefik.enable=true" + "-l" "traefik.http.routers.nginx.entrypoints=web" + "-l" "traefik.http.routers.nginx.rule=Host(`nginx.traefik.test`)" + ]; + image = "nginx-container"; + imageFile = pkgs.dockerTools.examples.nginx; + }; + + networking.firewall.allowedTCPPorts = [ 80 ]; + + services.traefik = { + enable = true; + + dynamicConfigOptions = { + http.routers.simplehttp = { + rule = "Host(`simplehttp.traefik.test`)"; + entryPoints = [ "web" ]; + service = "simplehttp"; + }; + + http.services.simplehttp = { + loadBalancer.servers = [{ + url = "http://127.0.0.1:8000"; + }]; + }; + }; + + staticConfigOptions = { + global = { + checkNewVersion = false; + sendAnonymousUsage = false; + }; + + entryPoints.web.address = ":80"; + + providers.docker.exposedByDefault = false; + }; + }; + + systemd.services.simplehttp = { + script = "${pkgs.python3}/bin/python -m http.server 8000"; + serviceConfig.Type = "simple"; + wantedBy = [ "multi-user.target" ]; + }; + + users.users.traefik.extraGroups = [ "docker" ]; + }; + }; + + testScript = '' + start_all() + + traefik.wait_for_unit("docker-nginx.service") + traefik.wait_until_succeeds("docker ps | grep nginx-container") + traefik.wait_for_unit("simplehttp.service") + traefik.wait_for_unit("traefik.service") + traefik.wait_for_open_port(80) + traefik.wait_for_unit("multi-user.target") + + client.wait_for_unit("multi-user.target") + + with subtest("Check that a container can be reached via Traefik"): + assert "Hello from NGINX" in client.succeed( + "curl -sSf -H Host:nginx.traefik.test http://traefik/" + ) + + with subtest("Check that dynamic configuration works"): + assert "Directory listing for " in client.succeed( + "curl -sSf -H Host:simplehttp.traefik.test http://traefik/" + ) + ''; +}) diff --git a/pkgs/applications/audio/ardour/default.nix b/pkgs/applications/audio/ardour/default.nix index 8c55c29b527..fadfedf5384 100644 --- a/pkgs/applications/audio/ardour/default.nix +++ b/pkgs/applications/audio/ardour/default.nix @@ -1,14 +1,51 @@ -{ stdenv, fetchgit, alsaLib, aubio, boost, cairomm, curl, doxygen -, fftwSinglePrec, flac, glibc, glibmm, graphviz, gtkmm2, libjack2 -, libgnomecanvas, libgnomecanvasmm, liblo, libmad, libogg -, librdf_raptor, librdf_rasqal, libsamplerate, libsigcxx, libsndfile -, libusb, libuuid, libxml2, libxslt, lilv, lrdf, lv2, makeWrapper -, perl, pkgconfig, python2, rubberband, serd, sord, sratom -, taglib, vamp-plugin-sdk, dbus, fftw, pango, suil, libarchive -, wafHook }: - +{ stdenv +, fetchgit +, alsaLib +, aubio +, boost +, cairomm +, curl +, doxygen +, fftwSinglePrec +, flac +, glibc +, glibmm +, graphviz +, gtkmm2 +, libjack2 +, liblo +, libogg +, libsamplerate +, libsigcxx +, libsndfile +, libusb1 +, fluidsynth_1 +, hidapi +, libltc +, qm-dsp +, libxml2 +, lilv +, lrdf +, lv2 +, makeWrapper +, perl +, pkg-config +, itstool +, python2 +, rubberband +, serd +, sord +, sratom +, taglib +, vamp-plugin-sdk +, dbus +, fftw +, pango +, suil +, libarchive +, wafHook +}: let - # Ardour git repo uses a mix of annotated and lightweight tags. Annotated # tags are used for MAJOR.MINOR versioning, and lightweight tags are used # in-between; MAJOR.MINOR.REV where REV is the number of commits since the @@ -18,10 +55,7 @@ let # Version to build. tag = "5.12"; - -in - -stdenv.mkDerivation rec { +in stdenv.mkDerivation rec { name = "ardour-${tag}"; src = fetchgit { @@ -30,46 +64,84 @@ stdenv.mkDerivation rec { sha256 = "0mla5lm51ryikc2rrk53max2m7a5ds6i1ai921l2h95wrha45nkr"; }; - nativeBuildInputs = [ wafHook ]; - buildInputs = - [ alsaLib aubio boost cairomm curl doxygen dbus fftw fftwSinglePrec flac - glibmm graphviz gtkmm2 libjack2 libgnomecanvas libgnomecanvasmm liblo - libmad libogg librdf_raptor librdf_rasqal libsamplerate - libsigcxx libsndfile libusb libuuid libxml2 libxslt lilv lrdf lv2 - makeWrapper pango perl pkgconfig python2 rubberband serd sord - sratom suil taglib vamp-plugin-sdk libarchive - ]; + nativeBuildInputs = [ + wafHook + makeWrapper + pkg-config + itstool + doxygen + graphviz # for dot + perl + python2 + ]; - # ardour's wscript has a "tarball" target but that required the git revision - # be available. Since this is an unzipped tarball fetched from github we - # have to do that ourself. - patchPhase = '' - printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = \"${tag}-${builtins.substring 0 8 src.rev}\"; }\n' > libs/ardour/revision.cc - sed 's|/usr/include/libintl.h|${glibc.dev}/include/libintl.h|' -i wscript - patchShebangs ./tools/ - ''; + buildInputs = [ + alsaLib + aubio + boost + cairomm + curl + dbus + fftw + fftwSinglePrec + flac + glibmm + gtkmm2 + libjack2 + liblo + libogg + libsamplerate + libsigcxx + libsndfile + libusb1 + fluidsynth_1 + hidapi + libltc + qm-dsp + libxml2 + lilv + lrdf + lv2 + pango + rubberband + serd + sord + sratom + suil + taglib + vamp-plugin-sdk + libarchive + ]; wafConfigureFlags = [ "--optimize" "--docs" + "--use-external-libs" + "--freedesktop" "--with-backends=jack,alsa,dummy" ]; + NIX_CFLAGS_COMPILE = "-I${qm-dsp}/include/qm-dsp"; + + # ardour's wscript has a "tarball" target but that required the git revision + # be available. Since this is an unzipped tarball fetched from github we + # have to do that ourself. + postPatch = '' + printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = \"${tag}-${builtins.substring 0 8 src.rev}\"; }\n' > libs/ardour/revision.cc + patchShebangs ./tools/ + ''; + postInstall = '' - # Install desktop file - mkdir -p "$out/share/applications" - cat > "$out/share/applications/ardour.desktop" << EOF - [Desktop Entry] - Name=Ardour 5 - GenericName=Digital Audio Workstation - Comment=Multitrack harddisk recorder - Exec=$out/bin/ardour5 - Icon=$out/share/ardour5/resources/Ardour-icon_256px.png - Terminal=false - Type=Application - X-MultipleArgs=false - Categories=GTK;Audio;AudioVideoEditing;AudioVideo;Video; - EOF + # wscript does not install these for some reason + install -vDm 644 "build/gtk2_ardour/ardour.xml" \ + -t "$out/share/mime/packages" + install -vDm 644 "build/gtk2_ardour/ardour5.desktop" \ + -t "$out/share/applications" + for size in 16 22 32 48 256 512; do + install -vDm 644 "gtk2_ardour/resources/Ardour-icon_''${size}px.png" \ + "$out/share/icons/hicolor/''${size}x''${size}/apps/ardour5.png" + done + install -vDm 644 "ardour.1"* -t "$out/share/man/man1" ''; meta = with stdenv.lib; { diff --git a/pkgs/applications/graphics/kodelife/default.nix b/pkgs/applications/graphics/kodelife/default.nix index 6f935e72fb5..e5aac9b8823 100644 --- a/pkgs/applications/graphics/kodelife/default.nix +++ b/pkgs/applications/graphics/kodelife/default.nix @@ -21,9 +21,9 @@ stdenv.mkDerivation rec { src = fetchzip { url = "https://hexler.net/pub/${pname}/${pname}-${version}-${suffix}.zip"; sha256 = { - aarch64-linux = "1lcpj1mgkvksq1d08ibh59y0dmdh7zm77wi5ziqhg3p5g9nxyasd"; - armv7l-linux = "0sljy06302x567jqw5lagbyhpc3j140jk4wccacxjrbb6hcx3l42"; - x86_64-darwin = "1b058s9kny026q395nj99v8hggxkgv43nnjkmx1a2siajw0db94c"; + aarch64-linux = "0z2fqlf156348ha3zhv16kvqdx68fbwbzch2gzjm9x1na9n5k1ra"; + armv7l-linux = "1ppwgrmgl1j2ws9mhrscvvkamd69a6xw7x35df6d30cyj97r0mzy"; + x86_64-darwin = "0f8vn6m3xzsiyxm2ka5wkbp63wvzrix6g1xrbpvcm3v2llmychkl"; x86_64-linux = "035c1nlw0nim057sz3axpkcgkafqbm6gpr8hwr097vlrqll6w3dv"; }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); }; @@ -32,6 +32,7 @@ stdenv.mkDerivation rec { dontBuild = true; dontStrip = true; dontPatchELF = true; + preferLocalBuild = true; installPhase = '' mkdir -p $out/bin diff --git a/pkgs/applications/graphics/qimgv/default.nix b/pkgs/applications/graphics/qimgv/default.nix index 6402868b922..2756d659edf 100644 --- a/pkgs/applications/graphics/qimgv/default.nix +++ b/pkgs/applications/graphics/qimgv/default.nix @@ -1,6 +1,15 @@ -{ mkDerivation, fetchFromGitHub, lib -, pkgconfig, cmake -, exiv2, qtbase, qtimageformats, qtsvg +{ mkDerivation +, lib +, fetchFromGitHub + +, cmake +, pkgconfig + +, exiv2 +, mpv +, qtbase +, qtimageformats +, qtsvg }: mkDerivation rec { @@ -14,33 +23,32 @@ mkDerivation rec { sha256 = "0cmya06j466v0pirhxbzbj1vbz0346y7rbc1gbv4n9xcp6c6bln6"; }; - cmakeFlags = [ - # Video support appears to be broken; the following gets printed upon - # attempting to view an mp4, webm, or mkv (and probably all video formats): - # - # [VideoPlayerInitProxy] Error - could not load player library - # "qimgv_player_mpv" - # - # GIFs are unaffected. If this ever gets addressed, all that is necessary is - # to add `mpv` to the arguments list and to `buildInputs`, and to remove - # `cmakeFlags`. - "-DVIDEO_SUPPORT=OFF" - ]; - nativeBuildInputs = [ - pkgconfig cmake + pkgconfig ]; buildInputs = [ exiv2 + mpv qtbase qtimageformats qtsvg ]; + postPatch = '' + sed -i "s@/usr/bin/mpv@${mpv}/bin/mpv@" \ + qimgv/settings.cpp + ''; + + # Wrap the library path so it can see `libqimgv_player_mpv.so`, which is used + # to play video files within qimgv itself. + qtWrapperArgs = [ + "--prefix LD_LIBRARY_PATH : ${placeholder "out"}/lib" + ]; + meta = with lib; { - description = "Qt5 image viewer with optional video support"; + description = "A Qt5 image viewer with optional video support"; homepage = "https://github.com/easymodo/qimgv"; license = licenses.gpl3; platforms = platforms.linux; diff --git a/pkgs/applications/misc/ulauncher/default.nix b/pkgs/applications/misc/ulauncher/default.nix index 93ef9f3da4f..34ca82b8d04 100644 --- a/pkgs/applications/misc/ulauncher/default.nix +++ b/pkgs/applications/misc/ulauncher/default.nix @@ -17,18 +17,18 @@ , librsvg }: -python3Packages.buildPythonApplication rec { +python3Packages.buildPythonApplication rec { pname = "ulauncher"; - version = "5.6.1"; + version = "5.7.3"; disabled = python3Packages.isPy27; src = fetchurl { url = "https://github.com/Ulauncher/Ulauncher/releases/download/${version}/ulauncher_${version}.tar.gz"; - sha256 = "14k68lp58wldldhaq4cf0ffkhi81czv4ps9xa86iw1j5b1gd2vbl"; + sha256 = "0wq2zsq3496fjfg89q01dsm7sb7kv92sycvqm6ad8z1z2kpisrbh"; }; - nativeBuildInputs = with python3Packages; [ + nativeBuildInputs = with python3Packages; [ distutils_extra intltool wrapGAppsHook @@ -71,7 +71,6 @@ python3Packages.buildPythonApplication rec { patches = [ ./fix-path.patch - ./fix-permissions.patch # ulauncher PR #523 ./0001-Adjust-get_data_path-for-NixOS.patch ./fix-extensions.patch ]; diff --git a/pkgs/applications/misc/ulauncher/fix-permissions.patch b/pkgs/applications/misc/ulauncher/fix-permissions.patch deleted file mode 100644 index 9d743c950f9..00000000000 --- a/pkgs/applications/misc/ulauncher/fix-permissions.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/ulauncher/utils/Theme.py b/ulauncher/utils/Theme.py -index 9cde624..4e36c4f 100644 ---- a/ulauncher/utils/Theme.py -+++ b/ulauncher/utils/Theme.py -@@ -138,6 +138,9 @@ class Theme: - rmtree(new_theme_dir) - copytree(self.path, new_theme_dir) - -+ # change file permissions (because Nix store is read-only) -+ os.chmod(new_theme_dir, 0o755) -+ - return os.path.join(new_theme_dir, 'generated.css') diff --git a/pkgs/applications/networking/instant-messengers/deltachat-electron/default.nix b/pkgs/applications/networking/instant-messengers/deltachat-electron/default.nix index ed30dca6cce..5418b671633 100644 --- a/pkgs/applications/networking/instant-messengers/deltachat-electron/default.nix +++ b/pkgs/applications/networking/instant-messengers/deltachat-electron/default.nix @@ -2,13 +2,13 @@ let pname = "deltachat-electron"; - version = "1.1.0"; + version = "1.2.0"; name = "${pname}-${version}"; src = fetchurl { url = - "https://download.delta.chat/desktop/r${version}/DeltaChat-${version}.AppImage"; - sha256 = "0pbn45cyv0h3fp7s9v9q93v12ah2gj7daaq0r3z140im6zv0rkrc"; + "https://download.delta.chat/desktop/v${version}/DeltaChat-${version}.AppImage"; + sha256 = "Cyb34bfQEdwOA6XYZO+1Ri/2e/PRat15aUMn7IElmUI="; }; appimageContents = appimageTools.extract { inherit name src; }; diff --git a/pkgs/applications/networking/instant-messengers/riot/riot-desktop.nix b/pkgs/applications/networking/instant-messengers/riot/riot-desktop.nix index 70be3698a78..a30df623050 100644 --- a/pkgs/applications/networking/instant-messengers/riot/riot-desktop.nix +++ b/pkgs/applications/networking/instant-messengers/riot/riot-desktop.nix @@ -1,7 +1,6 @@ { stdenv, fetchFromGitHub , makeWrapper, makeDesktopItem, mkYarnPackage -, electron_7, riot-web, gtk3 -, wrapGAppsHook, glib +, electron_7, riot-web }: # Notes for maintainers: # * versions of `riot-web` and `riot-desktop` should be kept in sync. @@ -27,14 +26,7 @@ in mkYarnPackage rec { packageJSON = ./riot-desktop-package.json; yarnNix = ./riot-desktop-yarndeps.nix; - nativeBuildInputs = [ wrapGAppsHook ]; - - extraBuildInputs = [ - glib - gtk3 - ]; - - dontWrapGApps = true; + nativeBuildInputs = [ makeWrapper ]; installPhase = '' # resources @@ -54,13 +46,10 @@ in mkYarnPackage rec { # desktop item mkdir -p "$out/share" ln -s "${desktopItem}/share/applications" "$out/share/applications" - ''; - postFixup = '' # executable wrapper makeWrapper '${electron}/bin/electron' "$out/bin/${executableName}" \ - --add-flags "$out/share/riot/electron" \ - "''${gappsWrapperArgs[@]}" + --add-flags "$out/share/riot/electron" ''; # Do not attempt generating a tarball for riot-web again. diff --git a/pkgs/applications/office/bookworm/default.nix b/pkgs/applications/office/bookworm/default.nix index f7ec9bf5c60..90b6c2fefc5 100644 --- a/pkgs/applications/office/bookworm/default.nix +++ b/pkgs/applications/office/bookworm/default.nix @@ -1,15 +1,16 @@ { stdenv, fetchFromGitHub, pantheon, vala, python3, python2, pkgconfig, libxml2, meson, ninja, gtk3, gnome3, glib, webkitgtk, libgee -, gobject-introspection, sqlite, poppler, poppler_utils, html2text, curl, gnugrep, coreutils, bash, unzip, unar, wrapGAppsHook }: +, gobject-introspection, sqlite, poppler, poppler_utils, html2text, curl, gnugrep, coreutils, bash, unzip, unar, wrapGAppsHook +, appstream, desktop-file-utils }: stdenv.mkDerivation rec { pname = "bookworm"; - version = "unstable-2018-11-19"; + version = "1.1.2"; src = fetchFromGitHub { owner = "babluboy"; repo = pname; - rev = "4c3061784ff42151cac77d12bf2a28bf831fdfc5"; - sha256 = "0yrqxa60xlvz249kx966z5krx8i7h17ac0hjgq9p8f0irzy5yp0n"; + rev = version; + sha256 = "0w0rlyahpgx0l6inkbj106agbnr2czil0vdcy1zzv70apnjz488j"; }; nativeBuildInputs = [ @@ -35,6 +36,8 @@ stdenv.mkDerivation rec { python2 sqlite webkitgtk + appstream + desktop-file-utils ]; postPatch = '' diff --git a/pkgs/build-support/rust/build-rust-crate/build-crate.nix b/pkgs/build-support/rust/build-rust-crate/build-crate.nix index 9759235e30e..d6d1cebb2e9 100644 --- a/pkgs/build-support/rust/build-rust-crate/build-crate.nix +++ b/pkgs/build-support/rust/build-rust-crate/build-crate.nix @@ -16,6 +16,9 @@ ++ [crateFeatures] ++ extraRustcOpts ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) "--target ${rust.toRustTarget stdenv.hostPlatform} -C linker=${stdenv.hostPlatform.config}-gcc" + # since rustc 1.42 the "proc_macro" crate is part of the default crate prelude + # https://github.com/rust-lang/cargo/commit/4d64eb99a4#diff-7f98585dbf9d30aa100c8318e2c77e79R1021-R1022 + ++ lib.optional (lib.elem "proc-macro" crateType) "--extern proc_macro" ; rustcMeta = "-C metadata=${metadata} -C extra-filename=-${metadata}"; diff --git a/pkgs/build-support/rust/build-rust-crate/test/default.nix b/pkgs/build-support/rust/build-rust-crate/test/default.nix index 4783129bad9..5597e4b0dd6 100644 --- a/pkgs/build-support/rust/build-rust-crate/test/default.nix +++ b/pkgs/build-support/rust/build-rust-crate/test/default.nix @@ -457,6 +457,18 @@ let "test ignore_main ... ok" ]; }; + procMacroInPrelude = { + procMacro = true; + edition = "2018"; + src = symlinkJoin { + name = "proc-macro-in-prelude"; + paths = [ + (mkFile "src/lib.rs" '' + use proc_macro::TokenTree; + '') + ]; + }; + }; }; brotliCrates = (callPackage ./brotli-crates.nix {}); tests = lib.mapAttrs (key: value: mkTest (value // lib.optionalAttrs (!value?crateName) { crateName = key; })) cases; diff --git a/pkgs/development/compilers/coreclr/default.nix b/pkgs/development/compilers/coreclr/default.nix index 3e8390cf9ea..2a44279209c 100644 --- a/pkgs/development/compilers/coreclr/default.nix +++ b/pkgs/development/compilers/coreclr/default.nix @@ -3,7 +3,6 @@ , fetchpatch , which , cmake -, clang , llvmPackages , libunwind , gettext @@ -44,7 +43,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ which cmake - clang + llvmPackages.clang ]; buildInputs = [ diff --git a/pkgs/development/compilers/gcc/libstdc++-hook.sh b/pkgs/development/compilers/gcc/libstdc++-hook.sh index 19db70597ce..60c610a8e7a 100644 --- a/pkgs/development/compilers/gcc/libstdc++-hook.sh +++ b/pkgs/development/compilers/gcc/libstdc++-hook.sh @@ -1,4 +1,4 @@ # See pkgs/build-support/setup-hooks/role.bash getHostRole -export NIX_${role_pre}CXXSTDLIB_COMPILE+=" -isystem $(echo -n @gcc@/include/c++/*) -isystem $(echo -n @gcc@/include/c++/*)/$(@gcc@/bin/gcc -dumpmachine)" +export NIX_${role_pre}CXXSTDLIB_COMPILE+=" -isystem $(echo -n @gcc@/include/c++/*) -isystem $(echo -n @gcc@/include/c++/*)/@targetConfig@" diff --git a/pkgs/development/compilers/llvm/10/compiler-rt.nix b/pkgs/development/compilers/llvm/10/compiler-rt.nix index 02bbc17c967..4d31229d64c 100644 --- a/pkgs/development/compilers/llvm/10/compiler-rt.nix +++ b/pkgs/development/compilers/llvm/10/compiler-rt.nix @@ -1,4 +1,13 @@ { stdenv, version, fetch, cmake, python3, llvm, libcxxabi }: + +let + + useLLVM = stdenv.hostPlatform.useLLVM or false; + bareMetal = stdenv.hostPlatform.parsed.kernel.name == "none"; + inherit (stdenv.hostPlatform) isMusl; + +in + stdenv.mkDerivation rec { pname = "compiler-rt"; inherit version; @@ -11,27 +20,26 @@ stdenv.mkDerivation rec { "-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0" ]; - cmakeFlags = stdenv.lib.optionals (stdenv.hostPlatform.useLLVM or false) [ + cmakeFlags = [ "-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON" "-DCMAKE_C_COMPILER_TARGET=${stdenv.hostPlatform.config}" "-DCMAKE_ASM_COMPILER_TARGET=${stdenv.hostPlatform.config}" - "-DCMAKE_C_FLAGS=-nodefaultlibs" - "-DCMAKE_CXX_COMPILER_WORKS=ON" + ] ++ stdenv.lib.optionals (useLLVM || bareMetal || isMusl) [ "-DCOMPILER_RT_BUILD_SANITIZERS=OFF" "-DCOMPILER_RT_BUILD_XRAY=OFF" "-DCOMPILER_RT_BUILD_LIBFUZZER=OFF" "-DCOMPILER_RT_BUILD_PROFILE=OFF" + ] ++ stdenv.lib.optionals (useLLVM || bareMetal) [ + "-DCMAKE_C_COMPILER_WORKS=ON" + "-DCMAKE_CXX_COMPILER_WORKS=ON" "-DCOMPILER_RT_BAREMETAL_BUILD=ON" + "-DCMAKE_SIZEOF_VOID_P=${toString (stdenv.hostPlatform.parsed.cpu.bits / 8)}" + ] ++ stdenv.lib.optionals (useLLVM) [ + "-DCOMPILER_RT_BUILD_BUILTINS=ON" + "-DCMAKE_C_FLAGS=-nodefaultlibs" #https://stackoverflow.com/questions/53633705/cmake-the-c-compiler-is-not-able-to-compile-a-simple-test-program "-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY" - "-DCMAKE_SIZEOF_VOID_P=${toString (stdenv.hostPlatform.parsed.cpu.bits / 8)}" - ] ++ stdenv.lib.optionals stdenv.hostPlatform.isMusl [ - "-DCOMPILER_RT_BUILD_SANITIZERS=OFF" - "-DCOMPILER_RT_BUILD_XRAY=OFF" - "-DCOMPILER_RT_BUILD_LIBFUZZER=OFF" - "-DCOMPILER_RT_BUILD_PROFILE=OFF" - ] ++ stdenv.lib.optionals (stdenv.hostPlatform.parsed.kernel.name == "none") [ - "-DCOMPILER_RT_BAREMETAL_BUILD=ON" + ] ++ stdenv.lib.optionals (bareMetal) [ "-DCOMPILER_RT_OS_DIR=baremetal" ]; @@ -50,7 +58,7 @@ stdenv.mkDerivation rec { postPatch = stdenv.lib.optionalString stdenv.isDarwin '' substituteInPlace cmake/config-ix.cmake \ --replace 'set(COMPILER_RT_HAS_TSAN TRUE)' 'set(COMPILER_RT_HAS_TSAN FALSE)' - '' + stdenv.lib.optionalString (stdenv.hostPlatform.useLLVM or false) '' + '' + stdenv.lib.optionalString (useLLVM) '' substituteInPlace lib/builtins/int_util.c \ --replace "#include " "" substituteInPlace lib/builtins/clear_cache.c \ @@ -62,7 +70,7 @@ stdenv.mkDerivation rec { # Hack around weird upsream RPATH bug postInstall = stdenv.lib.optionalString (stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isWasm) '' ln -s "$out/lib"/*/* "$out/lib" - '' + stdenv.lib.optionalString (stdenv.hostPlatform.useLLVM or false) '' + '' + stdenv.lib.optionalString (useLLVM) '' ln -s $out/lib/*/clang_rt.crtbegin-*.o $out/lib/crtbegin.o ln -s $out/lib/*/clang_rt.crtend-*.o $out/lib/crtend.o ln -s $out/lib/*/clang_rt.crtbegin_shared-*.o $out/lib/crtbeginS.o diff --git a/pkgs/development/compilers/llvm/10/default.nix b/pkgs/development/compilers/llvm/10/default.nix index 462f246b89d..4181ab29bd7 100644 --- a/pkgs/development/compilers/llvm/10/default.nix +++ b/pkgs/development/compilers/llvm/10/default.nix @@ -1,4 +1,4 @@ -{ lowPrio, newScope, pkgs, stdenv, cmake, libstdcxxHook +{ lowPrio, newScope, pkgs, stdenv, cmake, gcc, libstdcxxHook , libxml2, python3, isl, fetchurl, overrideCC, wrapCCWith, wrapBintoolsWith , buildLlvmTools # tools, but from the previous stage, for cross , targetLlvmLibraries # libraries, but from the next stage, for cross @@ -7,6 +7,7 @@ let release_version = "10.0.0"; version = release_version; # differentiating these (variables) is important for rc's + targetConfig = stdenv.targetPlatform.config; fetch = name: sha256: fetchurl { url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-${release_version}/${name}-${version}.src.tar.xz"; @@ -60,7 +61,12 @@ let libstdcxxHook targetLlvmLibraries.compiler-rt ]; - extraBuildCommands = mkExtraBuildCommands cc; + extraBuildCommands = '' + echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags + echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags + echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags + echo "-L${gcc.cc.lib}/${targetConfig}/lib" >> $out/nix-support/cc-ldflags + '' + mkExtraBuildCommands cc; }; libcxxClang = wrapCCWith rec { diff --git a/pkgs/development/compilers/llvm/5/compiler-rt.nix b/pkgs/development/compilers/llvm/5/compiler-rt.nix index 4740180eb29..55f4eb94e92 100644 --- a/pkgs/development/compilers/llvm/5/compiler-rt.nix +++ b/pkgs/development/compilers/llvm/5/compiler-rt.nix @@ -1,5 +1,13 @@ { stdenv, version, fetch, cmake, python3, llvm, libcxxabi }: -with stdenv.lib; + +let + + useLLVM = stdenv.hostPlatform.useLLVM or false; + bareMetal = stdenv.hostPlatform.parsed.kernel.name == "none"; + inherit (stdenv.hostPlatform) isMusl; + +in + stdenv.mkDerivation { pname = "compiler-rt"; inherit version; @@ -8,16 +16,39 @@ stdenv.mkDerivation { nativeBuildInputs = [ cmake python3 llvm ]; buildInputs = stdenv.lib.optional stdenv.hostPlatform.isDarwin libcxxabi; - configureFlags = [ + NIX_CFLAGS_COMPILE = [ + "-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0" + ]; + + cmakeFlags = [ "-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON" + "-DCMAKE_C_COMPILER_TARGET=${stdenv.hostPlatform.config}" + "-DCMAKE_ASM_COMPILER_TARGET=${stdenv.hostPlatform.config}" + ] ++ stdenv.lib.optionals (useLLVM || bareMetal || isMusl) [ + "-DCOMPILER_RT_BUILD_SANITIZERS=OFF" + "-DCOMPILER_RT_BUILD_XRAY=OFF" + "-DCOMPILER_RT_BUILD_LIBFUZZER=OFF" + "-DCOMPILER_RT_BUILD_PROFILE=OFF" + ] ++ stdenv.lib.optionals (useLLVM || bareMetal) [ + "-DCMAKE_C_COMPILER_WORKS=ON" + "-DCMAKE_CXX_COMPILER_WORKS=ON" + "-DCOMPILER_RT_BAREMETAL_BUILD=ON" + "-DCMAKE_SIZEOF_VOID_P=${toString (stdenv.hostPlatform.parsed.cpu.bits / 8)}" + ] ++ stdenv.lib.optionals (useLLVM) [ + "-DCOMPILER_RT_BUILD_BUILTINS=ON" + "-DCMAKE_C_FLAGS=-nodefaultlibs" + #https://stackoverflow.com/questions/53633705/cmake-the-c-compiler-is-not-able-to-compile-a-simple-test-program + "-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY" + ] ++ stdenv.lib.optionals (bareMetal) [ + "-DCOMPILER_RT_OS_DIR=baremetal" ]; outputs = [ "out" "dev" ]; patches = [ ./compiler-rt-codesign.patch # Revert compiler-rt commit that makes codesign mandatory - ] ++ optional stdenv.hostPlatform.isMusl ./sanitizers-nongnu.patch - ++ optional (stdenv.hostPlatform.libc == "glibc") ./compiler-rt-sys-ustat.patch; + ] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl ./sanitizers-nongnu.patch + ++ stdenv.lib.optional (stdenv.hostPlatform.libc == "glibc") ./compiler-rt-sys-ustat.patch; # TSAN requires XPC on Darwin, which we have no public/free source files for. We can depend on the Apple frameworks # to get it, but they're unfree. Since LLVM is rather central to the stdenv, we patch out TSAN support so that Hydra @@ -27,11 +58,23 @@ stdenv.mkDerivation { postPatch = stdenv.lib.optionalString stdenv.isDarwin '' substituteInPlace cmake/config-ix.cmake \ --replace 'set(COMPILER_RT_HAS_TSAN TRUE)' 'set(COMPILER_RT_HAS_TSAN FALSE)' + '' + stdenv.lib.optionalString (useLLVM) '' + substituteInPlace lib/builtins/int_util.c \ + --replace "#include " "" + substituteInPlace lib/builtins/clear_cache.c \ + --replace "#include " "" + substituteInPlace lib/builtins/cpu_model.c \ + --replace "#include " "" ''; # Hack around weird upsream RPATH bug - postInstall = stdenv.lib.optionalString stdenv.isDarwin '' + postInstall = stdenv.lib.optionalString (stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isWasm) '' ln -s "$out/lib"/*/* "$out/lib" + '' + stdenv.lib.optionalString (useLLVM) '' + ln -s $out/lib/*/clang_rt.crtbegin-*.o $out/lib/linux/crtbegin.o + ln -s $out/lib/*/clang_rt.crtend-*.o $out/lib/linux/crtend.o + ln -s $out/lib/*/clang_rt.crtbegin_shared-*.o $out/lib/linux/crtbeginS.o + ln -s $out/lib/*/clang_rt.crtend_shared-*.o $out/lib/linux/crtendS.o ''; enableParallelBuilding = true; diff --git a/pkgs/development/compilers/llvm/5/default.nix b/pkgs/development/compilers/llvm/5/default.nix index 3c1b07e7ca7..e7083a6ed13 100644 --- a/pkgs/development/compilers/llvm/5/default.nix +++ b/pkgs/development/compilers/llvm/5/default.nix @@ -1,4 +1,4 @@ -{ lowPrio, newScope, pkgs, stdenv, cmake, libstdcxxHook +{ lowPrio, newScope, pkgs, stdenv, cmake, gcc, libstdcxxHook , libxml2, python3, isl, fetchurl, overrideCC, wrapCCWith , buildLlvmTools # tools, but from the previous stage, for cross , targetLlvmLibraries # libraries, but from the next stage, for cross @@ -7,6 +7,7 @@ let release_version = "5.0.2"; version = release_version; # differentiating these is important for rc's + targetConfig = stdenv.targetPlatform.config; fetch = name: sha256: fetchurl { url = "https://releases.llvm.org/${release_version}/${name}-${version}.src.tar.xz"; @@ -56,7 +57,12 @@ let extraPackages = [ targetLlvmLibraries.compiler-rt ]; - extraBuildCommands = mkExtraBuildCommands cc; + extraBuildCommands = '' + echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags + echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags + echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags + echo "-L${gcc.cc.lib}/${targetConfig}/lib" >> $out/nix-support/cc-ldflags + '' + mkExtraBuildCommands cc; }; libcxxClang = wrapCCWith rec { diff --git a/pkgs/development/compilers/llvm/6/compiler-rt.nix b/pkgs/development/compilers/llvm/6/compiler-rt.nix index b3b6e86fc52..1bdba107d7d 100644 --- a/pkgs/development/compilers/llvm/6/compiler-rt.nix +++ b/pkgs/development/compilers/llvm/6/compiler-rt.nix @@ -1,5 +1,13 @@ { stdenv, version, fetch, cmake, python3, llvm, libcxxabi }: -with stdenv.lib; + +let + + useLLVM = stdenv.hostPlatform.useLLVM or false; + bareMetal = stdenv.hostPlatform.parsed.kernel.name == "none"; + inherit (stdenv.hostPlatform) isMusl; + +in + stdenv.mkDerivation { pname = "compiler-rt"; inherit version; @@ -8,15 +16,38 @@ stdenv.mkDerivation { nativeBuildInputs = [ cmake python3 llvm ]; buildInputs = stdenv.lib.optional stdenv.hostPlatform.isDarwin libcxxabi; - configureFlags = [ + NIX_CFLAGS_COMPILE = [ + "-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0" + ]; + + cmakeFlags = [ "-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON" + "-DCMAKE_C_COMPILER_TARGET=${stdenv.hostPlatform.config}" + "-DCMAKE_ASM_COMPILER_TARGET=${stdenv.hostPlatform.config}" + ] ++ stdenv.lib.optionals (useLLVM || bareMetal || isMusl) [ + "-DCOMPILER_RT_BUILD_SANITIZERS=OFF" + "-DCOMPILER_RT_BUILD_XRAY=OFF" + "-DCOMPILER_RT_BUILD_LIBFUZZER=OFF" + "-DCOMPILER_RT_BUILD_PROFILE=OFF" + ] ++ stdenv.lib.optionals (useLLVM || bareMetal) [ + "-DCMAKE_C_COMPILER_WORKS=ON" + "-DCMAKE_CXX_COMPILER_WORKS=ON" + "-DCOMPILER_RT_BAREMETAL_BUILD=ON" + "-DCMAKE_SIZEOF_VOID_P=${toString (stdenv.hostPlatform.parsed.cpu.bits / 8)}" + ] ++ stdenv.lib.optionals (useLLVM) [ + "-DCOMPILER_RT_BUILD_BUILTINS=ON" + "-DCMAKE_C_FLAGS=-nodefaultlibs" + #https://stackoverflow.com/questions/53633705/cmake-the-c-compiler-is-not-able-to-compile-a-simple-test-program + "-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY" + ] ++ stdenv.lib.optionals (bareMetal) [ + "-DCOMPILER_RT_OS_DIR=baremetal" ]; outputs = [ "out" "dev" ]; patches = [ ./compiler-rt-codesign.patch # Revert compiler-rt commit that makes codesign mandatory - ] ++ optional stdenv.hostPlatform.isMusl ./sanitizers-nongnu.patch; + ] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl ./sanitizers-nongnu.patch; # TSAN requires XPC on Darwin, which we have no public/free source files for. We can depend on the Apple frameworks # to get it, but they're unfree. Since LLVM is rather central to the stdenv, we patch out TSAN support so that Hydra @@ -26,11 +57,23 @@ stdenv.mkDerivation { postPatch = stdenv.lib.optionalString stdenv.isDarwin '' substituteInPlace cmake/config-ix.cmake \ --replace 'set(COMPILER_RT_HAS_TSAN TRUE)' 'set(COMPILER_RT_HAS_TSAN FALSE)' + '' + stdenv.lib.optionalString (useLLVM) '' + substituteInPlace lib/builtins/int_util.c \ + --replace "#include " "" + substituteInPlace lib/builtins/clear_cache.c \ + --replace "#include " "" + substituteInPlace lib/builtins/cpu_model.c \ + --replace "#include " "" ''; # Hack around weird upsream RPATH bug - postInstall = stdenv.lib.optionalString stdenv.isDarwin '' + postInstall = stdenv.lib.optionalString (stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isWasm) '' ln -s "$out/lib"/*/* "$out/lib" + '' + stdenv.lib.optionalString (useLLVM) '' + ln -s $out/lib/*/clang_rt.crtbegin-*.o $out/lib/linux/crtbegin.o + ln -s $out/lib/*/clang_rt.crtend-*.o $out/lib/linux/crtend.o + ln -s $out/lib/*/clang_rt.crtbegin_shared-*.o $out/lib/linux/crtbeginS.o + ln -s $out/lib/*/clang_rt.crtend_shared-*.o $out/lib/linux/crtendS.o ''; enableParallelBuilding = true; diff --git a/pkgs/development/compilers/llvm/6/default.nix b/pkgs/development/compilers/llvm/6/default.nix index ba704f972c3..b544a4f6ba6 100644 --- a/pkgs/development/compilers/llvm/6/default.nix +++ b/pkgs/development/compilers/llvm/6/default.nix @@ -1,4 +1,4 @@ -{ lowPrio, newScope, pkgs, stdenv, cmake, libstdcxxHook +{ lowPrio, newScope, pkgs, stdenv, cmake, gcc, libstdcxxHook , libxml2, python3, isl, fetchurl, overrideCC, wrapCCWith , buildLlvmTools # tools, but from the previous stage, for cross , targetLlvmLibraries # libraries, but from the next stage, for cross @@ -7,6 +7,7 @@ let release_version = "6.0.1"; version = release_version; # differentiating these is important for rc's + targetConfig = stdenv.targetPlatform.config; fetch = name: sha256: fetchurl { url = "https://releases.llvm.org/${release_version}/${name}-${version}.src.tar.xz"; @@ -56,7 +57,12 @@ let extraPackages = [ targetLlvmLibraries.compiler-rt ]; - extraBuildCommands = mkExtraBuildCommands cc; + extraBuildCommands = '' + echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags + echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags + echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags + echo "-L${gcc.cc.lib}/${targetConfig}/lib" >> $out/nix-support/cc-ldflags + '' + mkExtraBuildCommands cc; }; libcxxClang = wrapCCWith rec { diff --git a/pkgs/development/compilers/llvm/7/compiler-rt.nix b/pkgs/development/compilers/llvm/7/compiler-rt.nix index 7a5e3d4c8fc..055fb01215f 100644 --- a/pkgs/development/compilers/llvm/7/compiler-rt.nix +++ b/pkgs/development/compilers/llvm/7/compiler-rt.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation { "-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0" ]; - cmakeFlags = stdenv.lib.optionals (useLLVM || stdenv.isDarwin) [ + cmakeFlags = [ "-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON" "-DCMAKE_C_COMPILER_TARGET=${stdenv.hostPlatform.config}" "-DCMAKE_ASM_COMPILER_TARGET=${stdenv.hostPlatform.config}" @@ -68,7 +68,7 @@ stdenv.mkDerivation { ''; # Hack around weird upsream RPATH bug - postInstall = stdenv.lib.optionalString stdenv.isDarwin '' + postInstall = stdenv.lib.optionalString (stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isWasm) '' ln -s "$out/lib"/*/* "$out/lib" '' + stdenv.lib.optionalString (useLLVM) '' ln -s $out/lib/*/clang_rt.crtbegin-*.o $out/lib/linux/crtbegin.o diff --git a/pkgs/development/compilers/llvm/7/default.nix b/pkgs/development/compilers/llvm/7/default.nix index 5124a5df00b..0b71c3a28d2 100644 --- a/pkgs/development/compilers/llvm/7/default.nix +++ b/pkgs/development/compilers/llvm/7/default.nix @@ -1,4 +1,4 @@ -{ lowPrio, newScope, pkgs, stdenv, cmake, libstdcxxHook +{ lowPrio, newScope, pkgs, stdenv, cmake, gcc, libstdcxxHook , libxml2, python3, isl, fetchurl, overrideCC, wrapCCWith, wrapBintoolsWith , buildLlvmTools # tools, but from the previous stage, for cross , targetLlvmLibraries # libraries, but from the next stage, for cross @@ -7,6 +7,7 @@ let release_version = "7.1.0"; version = release_version; # differentiating these is important for rc's + targetConfig = stdenv.targetPlatform.config; fetch = name: sha256: fetchurl { url = "https://releases.llvm.org/${release_version}/${name}-${version}.src.tar.xz"; @@ -63,7 +64,12 @@ let extraPackages = [ targetLlvmLibraries.compiler-rt ]; - extraBuildCommands = mkExtraBuildCommands cc; + extraBuildCommands = '' + echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags + echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags + echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags + echo "-L${gcc.cc.lib}/${targetConfig}/lib" >> $out/nix-support/cc-ldflags + '' + mkExtraBuildCommands cc; }; libcxxClang = wrapCCWith rec { diff --git a/pkgs/development/compilers/llvm/8/compiler-rt.nix b/pkgs/development/compilers/llvm/8/compiler-rt.nix index 795c81f4219..573c198d6da 100644 --- a/pkgs/development/compilers/llvm/8/compiler-rt.nix +++ b/pkgs/development/compilers/llvm/8/compiler-rt.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation { "-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0" ]; - cmakeFlags = stdenv.lib.optionals (useLLVM || stdenv.isDarwin) [ + cmakeFlags = [ "-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON" "-DCMAKE_C_COMPILER_TARGET=${stdenv.hostPlatform.config}" "-DCMAKE_ASM_COMPILER_TARGET=${stdenv.hostPlatform.config}" diff --git a/pkgs/development/compilers/llvm/8/default.nix b/pkgs/development/compilers/llvm/8/default.nix index 105011595c8..d9383d042bb 100644 --- a/pkgs/development/compilers/llvm/8/default.nix +++ b/pkgs/development/compilers/llvm/8/default.nix @@ -1,4 +1,4 @@ -{ lowPrio, newScope, pkgs, stdenv, cmake, libstdcxxHook +{ lowPrio, newScope, pkgs, stdenv, cmake, gcc, libstdcxxHook , libxml2, python3, isl, fetchurl, overrideCC, wrapCCWith, wrapBintoolsWith , buildLlvmTools # tools, but from the previous stage, for cross , targetLlvmLibraries # libraries, but from the next stage, for cross @@ -7,6 +7,7 @@ let release_version = "8.0.1"; version = release_version; # differentiating these is important for rc's + targetConfig = stdenv.targetPlatform.config; fetch = name: sha256: fetchurl { url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-${release_version}/${name}-${version}.src.tar.xz"; @@ -63,7 +64,12 @@ let extraPackages = [ targetLlvmLibraries.compiler-rt ]; - extraBuildCommands = mkExtraBuildCommands cc; + extraBuildCommands = '' + echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags + echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags + echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags + echo "-L${gcc.cc.lib}/${targetConfig}/lib" >> $out/nix-support/cc-ldflags + '' + mkExtraBuildCommands cc; }; libcxxClang = wrapCCWith rec { diff --git a/pkgs/development/compilers/llvm/9/compiler-rt.nix b/pkgs/development/compilers/llvm/9/compiler-rt.nix index 0cfd8d7c9e7..c7723a98291 100644 --- a/pkgs/development/compilers/llvm/9/compiler-rt.nix +++ b/pkgs/development/compilers/llvm/9/compiler-rt.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { "-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0" ]; - cmakeFlags = stdenv.lib.optionals (useLLVM || stdenv.isDarwin) [ + cmakeFlags = [ "-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON" "-DCMAKE_C_COMPILER_TARGET=${stdenv.hostPlatform.config}" "-DCMAKE_ASM_COMPILER_TARGET=${stdenv.hostPlatform.config}" diff --git a/pkgs/development/compilers/llvm/9/default.nix b/pkgs/development/compilers/llvm/9/default.nix index d42e5187c3c..3b6db967b6a 100644 --- a/pkgs/development/compilers/llvm/9/default.nix +++ b/pkgs/development/compilers/llvm/9/default.nix @@ -1,4 +1,4 @@ -{ lowPrio, newScope, pkgs, stdenv, cmake, libstdcxxHook +{ lowPrio, newScope, pkgs, stdenv, cmake, gcc, libstdcxxHook , libxml2, python3, isl, fetchurl, overrideCC, wrapCCWith, wrapBintoolsWith , buildLlvmTools # tools, but from the previous stage, for cross , targetLlvmLibraries # libraries, but from the next stage, for cross @@ -7,6 +7,7 @@ let release_version = "9.0.1"; version = release_version; # differentiating these is important for rc's + targetConfig = stdenv.targetPlatform.config; fetch = name: sha256: fetchurl { url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-${release_version}/${name}-${version}.src.tar.xz"; @@ -63,7 +64,12 @@ let extraPackages = [ targetLlvmLibraries.compiler-rt ]; - extraBuildCommands = mkExtraBuildCommands cc; + extraBuildCommands = '' + echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags + echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags + echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags + echo "-L${gcc.cc.lib}/${targetConfig}/lib" >> $out/nix-support/cc-ldflags + '' + mkExtraBuildCommands cc; }; libcxxClang = wrapCCWith rec { diff --git a/pkgs/development/libraries/audio/qm-dsp/default.nix b/pkgs/development/libraries/audio/qm-dsp/default.nix new file mode 100644 index 00000000000..d363a559042 --- /dev/null +++ b/pkgs/development/libraries/audio/qm-dsp/default.nix @@ -0,0 +1,53 @@ +{ stdenv +, fetchFromGitHub +, fetchpatch +, kissfft +}: + +stdenv.mkDerivation rec { + pname = "qm-dsp"; + version = "1.7.1"; + + src = fetchFromGitHub { + owner = "c4dm"; + repo = pname; + rev = "v${version}"; + sha256 = "e1PtCIzp7zIz+KKRxEGlAXTNqZ35vPgQ4opJKHIPa+4="; + }; + + patches = [ + # Make installable + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/qm-dsp/raw/6eb385e2f970c4150f9c8eba73b558318475ed15/f/qm-dsp-install.patch"; + sha256 = "7JDg9yOECWG7Ql5lIoC4L++R1gUlKfztvED5Ey4YLxw="; + }) + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/qm-dsp/raw/6eb385e2f970c4150f9c8eba73b558318475ed15/f/qm-dsp-flags.patch"; + sha256 = "2HRSbSFxC8DPXOgcflyBYeJI3NwO/1CFmyRdvYo09og="; + postFetch = '' + sed -i 's~/Makefile~/build/linux/Makefile.linux32~g' "$out" + ''; + }) + ]; + + buildInputs = [ + kissfft + ]; + + makefile = "build/linux/Makefile.linux32"; + + makeFlags = [ + "PREFIX=${placeholder "out"}" + "LIBDIR=${placeholder "out"}/lib" + ]; + + NIX_CFLAGS_COMPILE = "-I${kissfft}/include/kissfft"; + + meta = with stdenv.lib; { + description = "A C++ library of functions for DSP and Music Informatics purposes"; + homepage = "https://code.soundsoftware.ac.uk/projects/qm-dsp"; + license = licenses.gpl2Plus; + maintainers = [ maintainers.goibhniu ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/development/libraries/boost/generic.nix b/pkgs/development/libraries/boost/generic.nix index 828635e10c6..7fe3c185c04 100644 --- a/pkgs/development/libraries/boost/generic.nix +++ b/pkgs/development/libraries/boost/generic.nix @@ -28,6 +28,9 @@ assert enableShared || enableStatic; assert enablePython -> stdenv.hostPlatform == stdenv.buildPlatform; assert enableNumpy -> enablePython; +# Boost <1.69 can't be build with clang >8, because pth was removed +assert with stdenv.lib; ((toolset == "clang" && !(versionOlder stdenv.cc.version "8.0.0")) -> !(versionOlder version "1.69")); + with stdenv.lib; let diff --git a/pkgs/development/libraries/highfive/default.nix b/pkgs/development/libraries/highfive/default.nix new file mode 100644 index 00000000000..c514a44f851 --- /dev/null +++ b/pkgs/development/libraries/highfive/default.nix @@ -0,0 +1,49 @@ +{ stdenv +, fetchFromGitHub +, cmake +, boost +, eigen +, hdf5 +, mpiSupport ? hdf5.mpiSupport +, mpi ? hdf5.mpi +}: + +assert mpiSupport -> mpi != null; + +stdenv.mkDerivation rec { + pname = "highfive"; + version = "2.2"; + + src = fetchFromGitHub { + owner = "BlueBrain"; + repo = "HighFive"; + rev = "4c70d818ed18231563fe49ff197d1c41054be592"; + sha256 = "02xy3c2ix3nw8109aw75ixj651knzc5rjqwqrxximm4hzwx09frk"; + }; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ boost eigen hdf5 ]; + + passthru = { + inherit mpiSupport mpi; + }; + + cmakeFlags = [ + "-DHIGHFIVE_USE_BOOST=ON" + "-DHIGHFIVE_USE_EIGEN=ON" + "-DHIGHFIVE_EXAMPLES=OFF" + "-DHIGHFIVE_UNIT_TESTS=OFF" + "-DHIGHFIVE_USE_INSTALL_DEPS=ON" + ] + ++ (stdenv.lib.optionals mpiSupport [ "-DHIGHFIVE_PARALLEL_HDF5=ON" ]); + + meta = with stdenv.lib; { + inherit version; + description = "Header-only C++ HDF5 interface"; + license = licenses.boost; + homepage = "https://bluebrain.github.io/HighFive/"; + platforms = platforms.unix; + maintainers = with maintainers; [ robertodr ]; + }; +} diff --git a/pkgs/development/libraries/kissfft/default.nix b/pkgs/development/libraries/kissfft/default.nix new file mode 100644 index 00000000000..614a5237005 --- /dev/null +++ b/pkgs/development/libraries/kissfft/default.nix @@ -0,0 +1,45 @@ +{ stdenv +, fetchFromGitHub +, fetchpatch +}: + +stdenv.mkDerivation rec { + pname = "kissfft"; + version = "131"; + + src = fetchFromGitHub { + owner = "mborgerding"; + repo = pname; + rev = "v${version}"; + sha256 = "4lmRyBzW4H5wXb0EpgAp/hbaE2SslB6rAJyyLLbCtSs="; + }; + + patches = [ + # Allow installation into our prefix + # Fix installation on Darwin + # Create necessary directories + # Make datatype configurable + (fetchpatch { + url = "https://github.com/mborgerding/kissfft/pull/38.patch"; + sha256 = "Rsrob1M+lxwEag6SV5FqaTeyiJaOpspZxVtkeihX4TI="; + }) + # Install headers as well + (fetchpatch { + url = "https://github.com/mborgerding/kissfft/commit/71df949992d2dbbe15ce707cf56c3fa1e43b1080.patch"; + sha256 = "9ap6ZWyioBiut9UQM3v6W1Uv+iP3Kmt27xWhIfWfBI4="; + }) + ]; + + makeFlags = [ + "PREFIX=${placeholder "out"}" + "DATATYPE=double" + ]; + + meta = with stdenv.lib; { + description = "A mixed-radix Fast Fourier Transform based up on the KISS principle"; + homepage = "https://github.com/mborgerding/kissfft"; + license = licenses.bsd3; + maintainers = [ maintainers.goibhniu ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/development/libraries/liburing/default.nix b/pkgs/development/libraries/liburing/default.nix index 1b1aa8a4e04..519023bb27e 100644 --- a/pkgs/development/libraries/liburing/default.nix +++ b/pkgs/development/libraries/liburing/default.nix @@ -4,12 +4,12 @@ stdenv.mkDerivation rec { pname = "liburing"; - version = "0.4pre514_${builtins.substring 0 8 src.rev}"; + version = "0.6pre600_${builtins.substring 0 8 src.rev}"; src = fetchgit { url = "http://git.kernel.dk/${pname}"; - rev = "2454d6301d83a714d0775662b512fd46dbf82a0d"; - sha256 = "0qdycr0w0rymnizc4p5rh2qcnzr05afris4ggaawdg4zr07jms7k"; + rev = "f2e1f3590f7bed3040bd1691676b50839f7d5c39"; + sha256 = "0wg0pgcbilbb2wg08hsvd18q1m8vdk46b3piz7qb1pvgyq01idj2"; }; separateDebugInfo = true; diff --git a/pkgs/development/python-modules/gensim/default.nix b/pkgs/development/python-modules/gensim/default.nix index 4f13ea0b498..d335020a1a8 100644 --- a/pkgs/development/python-modules/gensim/default.nix +++ b/pkgs/development/python-modules/gensim/default.nix @@ -11,12 +11,12 @@ buildPythonPackage rec { pname = "gensim"; - version = "3.8.1"; + version = "3.8.2"; disabled = !isPy3k; src = fetchPypi { inherit pname version; - sha256 = "33277fc0a8d7b0c7ce70fcc74bb82ad39f944c009b334856c6e86bf552b1dfdc"; + sha256 = "1x9gvz954h10wgq02wybi21llwwjj9r1gal2qr82q7g1h9g0dqs6"; }; propagatedBuildInputs = [ smart_open numpy six scipy ]; diff --git a/pkgs/development/python-modules/gphoto2/default.nix b/pkgs/development/python-modules/gphoto2/default.nix index 1040a4be3f1..c1008a4c8af 100644 --- a/pkgs/development/python-modules/gphoto2/default.nix +++ b/pkgs/development/python-modules/gphoto2/default.nix @@ -4,11 +4,11 @@ buildPythonPackage rec { pname = "gphoto2"; - version = "2.2.1"; + version = "2.2.2"; src = fetchPypi { inherit pname version; - sha256 = "118zm25c8mlajfl0pzssnwz4b8lamj9dgymla9rn4nla7l244a0r"; + sha256 = "0sd3w0gpnb58hg8mv20nfqf4g1plr9rkn51h088xdsd6i97r9x99"; }; nativeBuildInputs = [ pkgconfig ]; diff --git a/pkgs/development/python-modules/gspread/default.nix b/pkgs/development/python-modules/gspread/default.nix index cebb48f4394..5a25d81d017 100644 --- a/pkgs/development/python-modules/gspread/default.nix +++ b/pkgs/development/python-modules/gspread/default.nix @@ -5,12 +5,12 @@ }: buildPythonPackage rec { - version = "3.3.0"; + version = "3.3.1"; pname = "gspread"; src = fetchPypi { inherit pname version; - sha256 = "1nlmg7lnj162nql1acw9z7n1043sk49j11arlfn766i9ykvq6hng"; + sha256 = "0mpvhndr38hb5x95xk2mqqasvcy6pa7ck8801bvpg5y3lwn5nka0"; }; propagatedBuildInputs = [ requests ]; diff --git a/pkgs/development/python-modules/hydra-check/default.nix b/pkgs/development/python-modules/hydra-check/default.nix new file mode 100644 index 00000000000..7316a6fc971 --- /dev/null +++ b/pkgs/development/python-modules/hydra-check/default.nix @@ -0,0 +1,45 @@ +{ lib +, buildPythonPackage +, pythonOlder +, fetchFromGitHub +, docopt +, requests +, beautifulsoup4 +, black +, mypy +, flake8 +}: + +buildPythonPackage rec { + pname = "hydra-check"; + version = "1.1.1"; + disabled = pythonOlder "3.5"; + + src = fetchFromGitHub { + owner = "nix-community"; + repo = "hydra-check"; + rev = version; + sha256 = "1dmsscsib8ckp496gsfqxmq8d35zs71n99xmziq9iprvy7n5clq2"; + }; + + propagatedBuildInputs = [ + docopt + requests + beautifulsoup4 + ]; + + checkInputs = [ mypy ]; + + checkPhase = '' + echo -e "\x1b[32m## run mypy\x1b[0m" + mypy hydracheck + ''; + + meta = with lib;{ + description = "check hydra for the build status of a package"; + homepage = "https://github.com/nix-community/hydra-check"; + license = licenses.mit; + maintainers = with maintainers; [ makefu ]; + }; +} + diff --git a/pkgs/development/python-modules/pikepdf/default.nix b/pkgs/development/python-modules/pikepdf/default.nix index 7b9393754a4..2fb95cde9e9 100644 --- a/pkgs/development/python-modules/pikepdf/default.nix +++ b/pkgs/development/python-modules/pikepdf/default.nix @@ -22,12 +22,12 @@ buildPythonPackage rec { pname = "pikepdf"; - version = "1.10.2"; + version = "1.11.0"; disabled = ! isPy3k; src = fetchPypi { inherit pname version; - sha256 = "1y94ay2jz4m55nlyrg283xsjqsxigmj7vzrzf1mskbpjb20335fb"; + sha256 = "0v9sraihad0vz8dv3zc5xm5f2ixwbpr2kfpya5s0mgnrn6l19nds"; }; buildInputs = [ diff --git a/pkgs/development/python-modules/py-multihash/default.nix b/pkgs/development/python-modules/py-multihash/default.nix new file mode 100644 index 00000000000..f81b7fb7644 --- /dev/null +++ b/pkgs/development/python-modules/py-multihash/default.nix @@ -0,0 +1,49 @@ +{ base58 +, buildPythonPackage +, fetchPypi +, isPy27 +, lib +, morphys +, pytest +, pytestcov +, pytestrunner +, six +, variants +, varint +}: + +buildPythonPackage rec { + pname = "py-multihash"; + version = "0.2.3"; + + src = fetchPypi { + inherit pname version ; + sha256 = "f0ade4de820afdc4b4aaa40464ec86c9da5cae3a4578cda2daab4b0eb7e5b18d"; + }; + + nativeBuildInputs = [ + pytestrunner + ]; + + propagatedBuildInputs = [ + base58 + morphys + six + variants + varint + ]; + + checkInputs = [ + pytest + pytestcov + ]; + + disabled = isPy27; + + meta = with lib; { + description = "Self describing hashes - for future proofing"; + homepage = "https://github.com/multiformats/py-multihash"; + license = licenses.mit; + maintainers = with maintainers; [ rakesh4g ]; + }; +} \ No newline at end of file diff --git a/pkgs/development/python-modules/pychromecast/default.nix b/pkgs/development/python-modules/pychromecast/default.nix index 44cecb5e463..cc69bbc9ee7 100644 --- a/pkgs/development/python-modules/pychromecast/default.nix +++ b/pkgs/development/python-modules/pychromecast/default.nix @@ -2,11 +2,11 @@ buildPythonPackage rec { pname = "PyChromecast"; - version = "4.2.0"; + version = "4.2.3"; src = fetchPypi { inherit pname version; - sha256 = "05h7ncymyh1715v2jkj312qza5qlqrz6yfpgyv4kdf1m07zh7pxh"; + sha256 = "1nqy9zvzxzncfmmbsj4ccb36gymh4pp1n1l9fdhv8fi0ai9b7dyp"; }; disabled = !isPy3k; diff --git a/pkgs/development/python-modules/pypandoc/default.nix b/pkgs/development/python-modules/pypandoc/default.nix index 6ec2c4a47ae..b4788999a35 100644 --- a/pkgs/development/python-modules/pypandoc/default.nix +++ b/pkgs/development/python-modules/pypandoc/default.nix @@ -3,21 +3,21 @@ buildPythonPackage rec { pname = "pypandoc"; - version = "unstable-2018-06-18"; + version = "1.5"; src = fetchFromGitHub { owner = "bebraw"; repo = pname; - rev = "87912f0f17e0a71c1160008df708c876d32e5819"; - sha256 = "0l6knkxxhmni4lx8hyvbb71svnhza08ivyklqlk5fw637gznc0hx"; + rev = version; + sha256 = "1lpslfns6zxx7b0xr13bzg921lwrj5am8za0b2dviywk6iiib0ld"; }; postPatch = '' # set pandoc path statically sed -i '/^__pandoc_path = None$/c__pandoc_path = "${pandoc}/bin/pandoc"' pypandoc/__init__.py - # Fix tests: requires network access - substituteInPlace tests.py --replace "pypandoc.convert(url, 'html')" "'GPL2 license'" + # Skip test that requires network access + sed -i '/test_basic_conversion_from_http_url/i\\ @unittest.skip\("no network access during checkPhase"\)' tests.py ''; preCheck = '' diff --git a/pkgs/development/python-modules/python-nomad/default.nix b/pkgs/development/python-modules/python-nomad/default.nix index c4ec84512a6..f03b3b10e48 100644 --- a/pkgs/development/python-modules/python-nomad/default.nix +++ b/pkgs/development/python-modules/python-nomad/default.nix @@ -2,11 +2,11 @@ buildPythonPackage rec { pname = "python-nomad"; - version = "1.1.0"; + version = "1.2.1"; src = fetchPypi { inherit pname version; - sha256 = "1rf6ad35vg3yi1p4l383xwx0ammdvr1k71bxg93bgcvljypx4cyn"; + sha256 = "0ivkfdrmb4wpyawvwrgm3jvx6hn49vqjpwbkmkmamigghqqwacx3"; }; propagatedBuildInputs = [ requests ]; diff --git a/pkgs/development/tools/electron/default.nix b/pkgs/development/tools/electron/default.nix index d23c5a663e6..9897405d06f 100644 --- a/pkgs/development/tools/electron/default.nix +++ b/pkgs/development/tools/electron/default.nix @@ -1,4 +1,4 @@ -{ stdenv, libXScrnSaver, makeWrapper, fetchurl, wrapGAppsHook, gtk3, unzip, atomEnv, libuuid, at-spi2-atk, at-spi2-core }@args: +{ stdenv, libXScrnSaver, makeWrapper, fetchurl, wrapGAppsHook, glib, gtk3, unzip, atomEnv, libuuid, at-spi2-atk, at-spi2-core }@args: let mkElectron = import ./generic.nix args; diff --git a/pkgs/development/tools/electron/generic.nix b/pkgs/development/tools/electron/generic.nix index 9bcc4dd6ff3..018625da456 100644 --- a/pkgs/development/tools/electron/generic.nix +++ b/pkgs/development/tools/electron/generic.nix @@ -1,4 +1,4 @@ -{ stdenv, libXScrnSaver, makeWrapper, fetchurl, wrapGAppsHook, gtk3, unzip, atomEnv, libuuid, at-spi2-atk, at-spi2-core}: +{ stdenv, libXScrnSaver, makeWrapper, fetchurl, wrapGAppsHook, glib, gtk3, unzip, atomEnv, libuuid, at-spi2-atk, at-spi2-core}: version: hashes: let @@ -34,7 +34,7 @@ let }; linux = { - buildInputs = [ gtk3 ]; + buildInputs = [ glib gtk3 ]; nativeBuildInputs = [ unzip @@ -44,13 +44,16 @@ let dontWrapGApps = true; # electron is in lib, we need to wrap it manually - buildCommand = '' + dontUnpack = true; + dontBuild = true; + + installPhase = '' mkdir -p $out/lib/electron $out/bin unzip -d $out/lib/electron $src ln -s $out/lib/electron/electron $out/bin + ''; - fixupPhase - + postFixup = '' patchelf \ --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ --set-rpath "${atomEnv.libPath}:${stdenv.lib.makeLibraryPath [ libuuid at-spi2-atk at-spi2-core ]}:$out/lib/electron" \ diff --git a/pkgs/development/web/cypress/default.nix b/pkgs/development/web/cypress/default.nix index 2b6449d9dd4..b70fa053a1d 100644 --- a/pkgs/development/web/cypress/default.nix +++ b/pkgs/development/web/cypress/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec{ pname = "cypress"; - version = "4.2.0"; + version = "4.3.0"; src = fetchzip { url = "https://cdn.cypress.io/desktop/${version}/linux-x64/cypress.zip"; - sha256 = "0ksa7c0bpq13xxgk0qizg3kfyjihcqan5wm6f45v7kgz3wwxc4nz"; + sha256 = "0lrjha3zrsclpk8bhmv14vy1y5liahjkvcd87zm6cik1rnscaspw"; }; # don't remove runtime deps diff --git a/pkgs/games/spring/default.nix b/pkgs/games/spring/default.nix index 11d815bfbd4..b130a7b5f77 100644 --- a/pkgs/games/spring/default.nix +++ b/pkgs/games/spring/default.nix @@ -9,16 +9,16 @@ stdenv.mkDerivation rec { pname = "spring"; version = "104.0.1-${buildId}-g${shortRev}"; # usually the latest in https://github.com/spring/spring/commits/maintenance - rev = "176577006b3367a6ca3cafb8e7779af76429d655"; + rev = "f266c8107b3e5dda5a78061ef00ca0ed8736d6f2"; shortRev = builtins.substring 0 7 rev; - buildId = "1485"; + buildId = "1486"; # taken from https://github.com/spring/spring/commits/maintenance src = fetchFromGitHub { owner = "spring"; repo = "spring"; inherit rev; - sha256 = "0p2bwbvy0chcd2mmhqwx04szkyjvz1p3aink5g63s3r4ghcqlrbr"; + sha256 = "1nx68d894yfmqc6df72hmk75ph26fqdvlmmq58cca0vbwpz9hf5v"; fetchSubmodules = true; }; diff --git a/pkgs/misc/emulators/mame/default.nix b/pkgs/misc/emulators/mame/default.nix index 9b2204869b2..69593760612 100644 --- a/pkgs/misc/emulators/mame/default.nix +++ b/pkgs/misc/emulators/mame/default.nix @@ -7,7 +7,7 @@ with stdenv; let majorVersion = "0"; - minorVersion = "219"; + minorVersion = "220"; desktopItem = makeDesktopItem { name = "MAME"; @@ -26,7 +26,7 @@ in mkDerivation { owner = "mamedev"; repo = "mame"; rev = "mame${majorVersion}${minorVersion}"; - sha256 = "048ar1j2vsrvqqc3spy9qcch2lbxn0ycd9lv4ig5wfnvjkdjdvgr"; + sha256 = "0ddmq3lagk7f1wkgybckcci4sigcqn1gzafggnnqjzq2q8viww0c"; }; hardeningDisable = [ "fortify" ]; diff --git a/pkgs/servers/traefik/default.nix b/pkgs/servers/traefik/default.nix index d2a784cdf13..0487ed177d0 100644 --- a/pkgs/servers/traefik/default.nix +++ b/pkgs/servers/traefik/default.nix @@ -1,39 +1,37 @@ -{ stdenv, buildGoPackage, fetchFromGitHub, bash, go-bindata}: +{ stdenv, buildGoModule, fetchFromGitHub, go-bindata, nixosTests }: -buildGoPackage rec { +buildGoModule rec { pname = "traefik"; - version = "1.7.14"; - - goPackagePath = "github.com/containous/traefik"; + version = "2.2.0"; src = fetchFromGitHub { owner = "containous"; repo = "traefik"; rev = "v${version}"; - sha256 = "1j3p09j8rpdkp8v4d4mz224ddakkvhzchvccm9qryrqc2fq4022v"; + sha256 = "1dcazssabqxr9wv3dds3z7ks3y628qa07vgnn3hpdwxzm2b2ma92"; }; - nativeBuildInputs = [ go-bindata bash ]; + modSha256 = "0w3ssxvsmq8i6hbfmn4ig2x13i2nlqy5q1khcblf9pq5vhk202qx"; + subPackages = [ "cmd/traefik" ]; - buildPhase = '' - runHook preBuild - ( - cd go/src/github.com/containous/traefik - bash ./script/make.sh generate + nativeBuildInputs = [ go-bindata ]; - CODENAME=$(awk -F "=" '/CODENAME=/ { print $2}' script/binary) - go build -ldflags "\ - -X github.com/containous/traefik/version.Version=${version} \ - -X github.com/containous/traefik/version.Codename=$CODENAME \ - " -a -o $bin/bin/traefik ./cmd/traefik - ) - runHook postBuild + passthru.tests = { inherit (nixosTests) traefik; }; + + preBuild = '' + go generate + + CODENAME=$(awk -F "=" '/CODENAME=/ { print $2}' script/binary) + + makeFlagsArray+=("-ldflags=\ + -X github.com/containous/traefik/version.Version=${version} \ + -X github.com/containous/traefik/version.Codename=$CODENAME") ''; meta = with stdenv.lib; { homepage = "https://traefik.io"; description = "A modern reverse proxy"; license = licenses.mit; - maintainers = with maintainers; [ hamhut1066 vdemeester ]; + maintainers = with maintainers; [ vdemeester ]; }; } diff --git a/pkgs/tools/misc/lf/default.nix b/pkgs/tools/misc/lf/default.nix index 450b512bdf0..16d2594ddb0 100644 --- a/pkgs/tools/misc/lf/default.nix +++ b/pkgs/tools/misc/lf/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "lf"; - version = "13"; + version = "14"; src = fetchFromGitHub { owner = "gokcehan"; repo = "lf"; rev = "r${version}"; - sha256 = "1ld3q75v8rvp169w5p85z1vznqs9bhck6bm2f6fykxx16hmpb6ga"; + sha256 = "0kl9yrgph1i0jbxhlg3k0411436w80xw1s8dzd7v7h2raygkb4is"; }; - modSha256 = "14fvn8yjm9cnpsmzgxw2dypr3h8h36mxrbk7zma42w8rsp46jpz7"; + modSha256 = "1c6c6qg8yrhdhqsnqj3jw3x2hi8vrhfm47cp9xlkfnjfrz3nk6jp"; # TODO: Setting buildFlags probably isn't working properly. I've tried a few # variants, e.g.: @@ -27,6 +27,7 @@ buildGoModule rec { postInstall = '' install -D --mode=444 lf.1 $out/share/man/man1/lf.1 + install -D --mode=444 lf.desktop $out/share/applications/lf.desktop ''; meta = with lib; { @@ -38,6 +39,7 @@ buildGoModule rec { are handled by external tools. ''; homepage = "https://godoc.org/github.com/gokcehan/lf"; + changelog = "https://github.com/gokcehan/lf/releases/tag/r${version}"; license = licenses.mit; platforms = platforms.unix; maintainers = with maintainers; [ primeos ]; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index b56f921d0c2..5ba9b723edd 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -681,6 +681,11 @@ mapAliases ({ clang_35 = llvm_4; clang_4 = llvm_4; + # added 2019-04-13 + # *-polly pointed to llvmPackages_latest + llvm-polly = throw "clang is now built with polly-plugin by default"; + clang-polly = throw "clang is now built with polly-plugin by default"; + /* Cleanup before 20.09 */ oraclejdk8psu = throw '' The *psu versions of oraclejdk aren't provided by upstream anymore and were therefore removed! diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0847b077469..b0f3eeafbfd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8003,8 +8003,6 @@ in useMacosReexportHack = true; }; }; - llvm-polly = llvmPackages_latest.llvm-polly; - clang-polly = llvmPackages_latest.clang.override { cc = llvmPackages_latest.clang-polly-unwrapped; }; clang_10 = llvmPackages_10.clang; clang_9 = llvmPackages_9.clang; @@ -8184,7 +8182,11 @@ in })); libstdcxxHook = makeSetupHook - { substitutions = { gcc = gcc-unwrapped; }; } + { substitutions = { + gcc = gcc-unwrapped; + targetConfig = stdenv.targetPlatform.config; + }; + } ../development/compilers/gcc/libstdc++-hook.sh; crossLibcStdenv = overrideCC stdenv @@ -8801,7 +8803,7 @@ in stdenv = gcc7Stdenv; }); - llvmPackages_latest = llvmPackages_9; # llvmPackages_10: when out of RC + llvmPackages_latest = llvmPackages_10; lorri = callPackage ../tools/misc/lorri { inherit (darwin.apple_sdk.frameworks) CoreServices Security; @@ -12077,6 +12079,12 @@ in libusb = libusb1; }; + highfive = callPackage ../development/libraries/highfive { }; + + highfive-mpi = appendToName "mpi" (highfive.override { + hdf5 = hdf5-mpi; + }); + hiredis = callPackage ../development/libraries/hiredis { }; hiredis-vip = callPackage ../development/libraries/hiredis-vip { }; @@ -12119,6 +12127,8 @@ in hydraAntLogger = callPackage ../development/libraries/java/hydra-ant-logger { }; + hydra-check = with python3.pkgs; toPythonApplication hydra-check; + hyena = callPackage ../development/libraries/hyena { }; hyperscan = callPackage ../development/libraries/hyperscan { }; @@ -14199,6 +14209,8 @@ in readosm = callPackage ../development/libraries/readosm { }; + kissfft = callPackage ../development/libraries/kissfft { }; + lambdabot = callPackage ../development/tools/haskell/lambdabot { haskellLib = haskell.lib; }; @@ -14227,6 +14239,8 @@ in lvtk = callPackage ../development/libraries/audio/lvtk { }; + qm-dsp = callPackage ../development/libraries/audio/qm-dsp { }; + qradiolink = callPackage ../applications/radio/qradiolink { }; qrupdate = callPackage ../development/libraries/qrupdate { }; @@ -18420,9 +18434,7 @@ in aqemu = libsForQt5.callPackage ../applications/virtualization/aqemu { }; - ardour = callPackage ../applications/audio/ardour { - inherit (gnome2) libgnomecanvas libgnomecanvasmm; - }; + ardour = callPackage ../applications/audio/ardour { }; arelle = with python3Packages; toPythonApplication arelle; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 0f16f8c3afd..a706d420e7b 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1129,6 +1129,8 @@ in { py-lru-cache = callPackage ../development/python-modules/py-lru-cache { }; + py-multihash = callPackage ../development/python-modules/py-multihash { }; + py-radix = callPackage ../development/python-modules/py-radix { }; pydbus = callPackage ../development/python-modules/pydbus { }; @@ -4008,6 +4010,8 @@ in { hypothesis = callPackage ../development/python-modules/hypothesis { }; + hydra-check = callPackage ../development/python-modules/hydra-check { }; + colored = callPackage ../development/python-modules/colored { }; xdg = callPackage ../development/python-modules/xdg { };