Skip to content
This repository was archived by the owner on Apr 12, 2021. It is now read-only.
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NixOS/nixpkgs-channels
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: b38c28399172
Choose a base ref
...
head repository: NixOS/nixpkgs-channels
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: ec29bb50bf45
Choose a head ref

Commits on Nov 21, 2019

  1. Copy the full SHA
    f4a4557 View commit details
  2. Copy the full SHA
    af02713 View commit details
  3. Copy the full SHA
    2a717b3 View commit details
  4. Copy the full SHA
    d29879d View commit details

Commits on Nov 25, 2019

  1. stdenv: Introduce hasCC attribute

    Before, we'd always use `cc = null`, and check for that. The problem is
    this breaks for cross compilation to platforms that don't support a C
    compiler.
    
    It's a very subtle issue. One might think there is no problem because we
    have `stdenvNoCC`, and presumably one would only build derivations that
    use that. The problem is that one still wants to use tools at build-time
    that are themselves built with a C compiler, and those are gotten via
    "splicing". The runtime version of those deps will explode, but the
    build time / `buildPackages` versions of those deps will be fine, and
    splicing attempts to work this by using `builtins.tryEval` to filter out
    any broken "higher priority" packages (runtime is the default and
    highest priority) so that both `foo` and `foo.nativeDrv` works.
    
    However, `tryEval` only catches certain evaluation failures (e.g.
    exceptions), and not arbitrary failures (such as `cc.attr` when `cc` is
    null). This means `tryEval` fails to let us use our build time deps, and
    everything comes apart.
    
    The right solution is, as usually, to get rid of splicing. Or, baring
    that, to make it so `foo` never works and one has to explicitly do
    `foo.*`. But that is a much larger change, and certaily one unsuitable
    to be backported to stable.
    
    Given that, we instead make an exception-throwing `cc` attribute, and
    create a `hasCC` attribute for those derivations which wish to
    condtionally use a C compiler: instead of doing `stdenv.cc or null ==
    null` or something similar, one does `stdenv.hasCC`. This allows quering
    without "tripping" the exception, while also allowing `tryEval` to work.
    
    No platform without a C compiler is yet wired up by default. That will
    be done in a following commit.
    Ericson2314 committed Nov 25, 2019
    Copy the full SHA
    63bd851 View commit details
  2. Add support for cross compiling to js-ghcjs

    This platform doesn't have a C compiler, and so relies and the changes
    in the previous commit to work.
    Ericson2314 committed Nov 25, 2019
    Copy the full SHA
    c739c42 View commit details
  3. haskell genenric-builder: Make the C compiler optional

    This is GHCJS, and perhaps other obscure targets.
    Ericson2314 committed Nov 25, 2019
    Copy the full SHA
    ea9a2c5 View commit details
  4. Copy the full SHA
    6bc456c View commit details
  5. Fix lib tests

    js-ghcjs didn't fit in an existing categor.
    Ericson2314 committed Nov 25, 2019
    Copy the full SHA
    765d260 View commit details
  6. Copy the full SHA
    80524db View commit details

Commits on Nov 26, 2019

  1. Fix lib tests

    js-ghcjs didn't fit in an existing categor.
    Ericson2314 committed Nov 26, 2019
    Copy the full SHA
    8737963 View commit details
  2. Merge remote-tracking branch 'obsidian/ghcjs-cross-without-cc-19.09' …

    …into ghcjs-cross-without-cc
    Ericson2314 committed Nov 26, 2019
    Copy the full SHA
    c4508df View commit details

Commits on Dec 2, 2019

  1. Copy the full SHA
    305f286 View commit details
  2. Copy the full SHA
    6274424 View commit details
  3. Copy the full SHA
    2a3d2c1 View commit details
  4. Copy the full SHA
    918ed06 View commit details
  5. Copy the full SHA
    9cff83f View commit details
  6. Copy the full SHA
    9a01f62 View commit details
  7. Copy the full SHA
    598e4ec View commit details
  8. Copy the full SHA
    5cda2de View commit details

Commits on Dec 5, 2019

  1. heimer: init at 1.11.0

    dtzWill committed Dec 5, 2019
    Copy the full SHA
    c431073 View commit details
  2. heimer: 1.11.0 -> 1.12.0

    dtzWill committed Dec 5, 2019
    Copy the full SHA
    6e7d5a7 View commit details
  3. heimer: meta

    dtzWill committed Dec 5, 2019
    Copy the full SHA
    dd6e506 View commit details
  4. lib/modules: file -> _file for a more idempotent unifyModuleSyntax

    This will be useful for doing more complicated module evaluations
    infinisil committed Dec 5, 2019
    Copy the full SHA
    aa61342 View commit details
  5. lib/modules: Make unifyModuleSyntax fully idempotent

    Because why not
    infinisil committed Dec 5, 2019
    Copy the full SHA
    3cc77ce View commit details

Commits on Dec 8, 2019

  1. netdata: 1.18.1 -> 1.19.0

    Izorkin committed Dec 8, 2019
    Copy the full SHA
    e21ad3a View commit details
  2. Copy the full SHA
    bfb42cd View commit details
  3. Copy the full SHA
    ab1c848 View commit details
  4. Copy the full SHA
    fcba6a0 View commit details
  5. Copy the full SHA
    1c57848 View commit details

Commits on Dec 10, 2019

  1. Copy the full SHA
    08541e2 View commit details

Commits on Dec 11, 2019

  1. buildRustCrate: builtins -> lib where possible

    We can just use `lib` instead of `builtins` in all cases but the
    `hashString` case. Also changed a few lines to make use of some optional
    helpers from lib.
    andir committed Dec 11, 2019
    Copy the full SHA
    0aac0e8 View commit details
  2. buildRustCrate: move the color loggign & remove some runtime checks

    The expression is already long and confusing enough without the color
    stuff sprinkled in. Moving it to a dedicated file makes sense.
    
    I switched a bit of the color support code to pure Nix since there
    wasn't much point in doing that in bash while we can just do it in Nix.
    andir committed Dec 11, 2019
    Copy the full SHA
    50b2ef2 View commit details
  3. buildRustCrate: use tr instead of sed (it reads a bit nicer)

    I already have a few changes in here that will trigger rebuilds so I
    might as well do that substitution now.
    andir committed Dec 11, 2019
    Copy the full SHA
    db55d1f View commit details
  4. buildRustCrate: document and cleanup the symbol seeding

    That code had been in the derivation for a while but no explanation was
    given why that is needed. It might be helpful to our future selfs to
    document why things are done the way they are.
    andir committed Dec 11, 2019
    Copy the full SHA
    f4aeabd View commit details
  5. buildRustCrate: rename makeDeps function to mkRustcDepArgs

    This should carry the function better then `makeDeps` as it isn't
    producing deps but the rustc arguments required to link against those.
    andir committed Dec 11, 2019
    Copy the full SHA
    d37f001 View commit details
  6. buildRustCrate: reflow the way extraRustcOpts is constructed

    This should make it more obvious that we have three parts to it and not
    just one long gibberish string that makes up all of it.
    andir committed Dec 11, 2019
    Copy the full SHA
    5ad8326 View commit details

Commits on Dec 12, 2019

  1. buildRustCrate: use less bash for the build script

    We can get rid of a bunch of workarounds that were in the build script
    before by just passing on the `crateBin` attribute.
    
    Before we converted the list of attributes to a string only to convert
    it back in bash during the build phase. We can do the entire looping
    through builds in Nix and thus need no conversion and parsing of
    attributes over and over again.
    
    The big part that still remains bash is the heuristic that cargo
    introduced and that we can't do at eval time.
    andir committed Dec 12, 2019
    Copy the full SHA
    6ad22f5 View commit details
  2. buildRustCrate: deduplicate dependency override code

    The previous lines were only different in the kind of dependencies but
    otherwise exactly the same. It makes the entire thing a bit more
    readable by moving this into a function that takes care of this.
    andir committed Dec 12, 2019
    Copy the full SHA
    3f49d7a View commit details
  3. buildRustCrate: move common build functions to a dedicated file

    This means we aren't rebuilding hat file for each crate we are building
    and the buildPhase expression is a lot easier to comprehent.
    andir committed Dec 12, 2019
    Copy the full SHA
    2eaaf7a View commit details
  4. pythonPackages.python-lzf: init at 0.2.4

    Jaka Hudoklin authored and offlinehacker committed Dec 12, 2019
    Copy the full SHA
    11b52e4 View commit details

Commits on Dec 13, 2019

  1. rdbtools: init at 0.1.14

    Jaka Hudoklin authored and offlinehacker committed Dec 13, 2019
    Copy the full SHA
    df0ff77 View commit details

Commits on Dec 14, 2019

  1. Copy the full SHA
    1094113 View commit details
  2. farstream: remove python2 dependency

    It was never used in the recent history.
    jtojnar committed Dec 14, 2019
    Copy the full SHA
    9c18e1f View commit details
  3. libevdev: switch to python3

    jtojnar committed Dec 14, 2019
    Copy the full SHA
    f78ac78 View commit details
  4. Copy the full SHA
    03423da View commit details
  5. zenity: clean up

    * format with nixpkgs-fmt
    * drop unneeded dependencies
        * gnome-doc-utils → yelp-tools since 3.6.0
        * intltool → gettext since 3.16.2
    * move build-time deps to nativeBuildInputs
    * add metadata
    jtojnar committed Dec 14, 2019
    Copy the full SHA
    54a75e9 View commit details
  6. Copy the full SHA
    d58a42a View commit details

Commits on Dec 15, 2019

  1. Copy the full SHA
    eb1d315 View commit details
  2. cacert: switch to python3

    jtojnar committed Dec 15, 2019
    Copy the full SHA
    3a8d826 View commit details
Showing 431 changed files with 12,119 additions and 4,960 deletions.
10 changes: 5 additions & 5 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@
/.github/CODEOWNERS @edolstra

# Libraries
/lib @edolstra @nbp
/lib @edolstra @nbp @infinisil
/lib/systems @nbp @ericson2314 @matthewbauer
/lib/generators.nix @edolstra @nbp @Profpatsch
/lib/debug.nix @edolstra @nbp @Profpatsch
@@ -30,9 +30,9 @@
/pkgs/build-support/setup-hooks @Ericson2314

# NixOS Internals
/nixos/default.nix @nbp
/nixos/lib/from-env.nix @nbp
/nixos/lib/eval-config.nix @nbp
/nixos/default.nix @nbp @infinisil
/nixos/lib/from-env.nix @nbp @infinisil
/nixos/lib/eval-config.nix @nbp @infinisil
/nixos/doc/manual/configuration/abstractions.xml @nbp
/nixos/doc/manual/configuration/config-file.xml @nbp
/nixos/doc/manual/configuration/config-syntax.xml @nbp
@@ -62,7 +62,7 @@

# Haskell
/pkgs/development/compilers/ghc @basvandijk @cdepillabout
/pkgs/development/haskell-modules @basvandijk @cdepillabout
/pkgs/development/haskell-modules @basvandijk @cdepillabout @infinisil
/pkgs/development/haskell-modules/default.nix @basvandijk @cdepillabout
/pkgs/development/haskell-modules/generic-builder.nix @basvandijk @cdepillabout
/pkgs/development/haskell-modules/hoogle.nix @basvandijk @cdepillabout
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@

* [NixOS Manual](https://nixos.org/nixos/manual) - how to install, configure, and maintain a purely-functional Linux distribution
* [Nixpkgs Manual](https://nixos.org/nixpkgs/manual/) - contributing to Nixpkgs and using programming-language-specific Nix expressions
* [Nix Package Manager Manual](https://nixos.org/nix/manual) - how to write Nix expresssions (programs), and how to use Nix command line tools
* [Nix Package Manager Manual](https://nixos.org/nix/manual) - how to write Nix expressions (programs), and how to use Nix command line tools

# Community

@@ -27,7 +27,7 @@

# Other Project Repositories

The sources of all offical Nix-related projects are in the [NixOS
The sources of all official Nix-related projects are in the [NixOS
organization on GitHub](https://github.com/NixOS/). Here are some of
the main ones:

9 changes: 9 additions & 0 deletions doc/languages-frameworks/go.xml
Original file line number Diff line number Diff line change
@@ -66,6 +66,15 @@ pet = buildGoModule rec {
</callout>
</calloutlist>
</para>

<para>
<varname>modSha256</varname> can also take <varname>null</varname> as an input.

When `null` is used as a value, the derivation won't be a
fixed-output derivation but disable the build sandbox instead. This can be useful outside
of nixpkgs where re-generating the modSha256 on each mod.sum changes is cumbersome,
but will fail to build by Hydra, as builds with a disabled sandbox are discouraged.
</para>
</section>

<section xml:id="ssec-go-legacy">
2 changes: 1 addition & 1 deletion lib/default.nix
Original file line number Diff line number Diff line change
@@ -102,7 +102,7 @@ let
commitIdFromGitRepo cleanSourceWith pathHasContext
canCleanSource;
inherit (modules) evalModules closeModules unifyModuleSyntax
applyIfFunction unpackSubmodule packSubmodule mergeModules
applyIfFunction mergeModules
mergeModules' mergeOptionDecls evalOptionValue mergeDefinitions
pushDownProperties dischargeProperties filterOverrides
sortProperties fixupOptionType mkIf mkAssert mkMerge mkOverride
56 changes: 25 additions & 31 deletions lib/modules.nix
Original file line number Diff line number Diff line change
@@ -103,42 +103,42 @@ rec {
toClosureList = file: parentKey: imap1 (n: x:
if isAttrs x || isFunction x then
let key = "${parentKey}:anon-${toString n}"; in
unifyModuleSyntax file key (unpackSubmodule (applyIfFunction key) x args)
unifyModuleSyntax file key (applyIfFunction key x args)
else
let file = toString x; key = toString x; in
unifyModuleSyntax file key (applyIfFunction key (import x) args));
in
builtins.genericClosure {
startSet = toClosureList unknownModule "" modules;
operator = m: toClosureList m.file m.key m.imports;
operator = m: toClosureList m._file m.key m.imports;
};

/* Massage a module into canonical form, that is, a set consisting
of ‘options’, ‘config’ and ‘imports’ attributes. */
unifyModuleSyntax = file: key: m:
let metaSet = if m ? meta
then { meta = m.meta; }
else {};
let addMeta = config: if m ? meta
then mkMerge [ config { meta = m.meta; } ]
else config;
in
if m ? config || m ? options then
let badAttrs = removeAttrs m ["_file" "key" "disabledModules" "imports" "options" "config" "meta"]; in
if badAttrs != {} then
throw "Module `${key}' has an unsupported attribute `${head (attrNames badAttrs)}'. This is caused by assignments to the top-level attributes `config' or `options'."
else
{ file = m._file or file;
{ _file = m._file or file;
key = toString m.key or key;
disabledModules = m.disabledModules or [];
imports = m.imports or [];
options = m.options or {};
config = mkMerge [ (m.config or {}) metaSet ];
config = addMeta (m.config or {});
}
else
{ file = m._file or file;
{ _file = m._file or file;
key = toString m.key or key;
disabledModules = m.disabledModules or [];
imports = m.require or [] ++ m.imports or [];
options = {};
config = mkMerge [ (removeAttrs m ["_file" "key" "disabledModules" "require" "imports"]) metaSet ];
config = addMeta (removeAttrs m ["_file" "key" "disabledModules" "require" "imports"]);
};

applyIfFunction = key: f: args@{ config, options, lib, ... }: if isFunction f then
@@ -171,25 +171,14 @@ rec {
else
f;

/* We have to pack and unpack submodules. We cannot wrap the expected
result of the function as we would no longer be able to list the arguments
of the submodule. (see applyIfFunction) */
unpackSubmodule = unpack: m: args:
if isType "submodule" m then
{ _file = m.file; } // (unpack m.submodule args)
else unpack m args;

packSubmodule = file: m:
{ _type = "submodule"; file = file; submodule = m; };

/* Merge a list of modules. This will recurse over the option
declarations in all modules, combining them into a single set.
At the same time, for each option declaration, it will merge the
corresponding option definitions in all machines, returning them
in the ‘value’ attribute of each option. */
mergeModules = prefix: modules:
mergeModules' prefix modules
(concatMap (m: map (config: { inherit (m) file; inherit config; }) (pushDownProperties m.config)) modules);
(concatMap (m: map (config: { file = m._file; inherit config; }) (pushDownProperties m.config)) modules);

mergeModules' = prefix: options: configs:
let
@@ -223,7 +212,7 @@ rec {
) {} modules;
# an attrset 'name' => list of submodules that declare ‘name’.
declsByName = byName "options" (module: option:
[{ inherit (module) file; options = option; }]
[{ inherit (module) _file; options = option; }]
) options;
# an attrset 'name' => list of submodules that define ‘name’.
defnsByName = byName "config" (module: value:
@@ -250,7 +239,7 @@ rec {
firstOption = findFirst (m: isOption m.options) "" decls;
firstNonOption = findFirst (m: !isOption m.options) "" decls;
in
throw "The option `${showOption loc}' in `${firstOption.file}' is a prefix of options in `${firstNonOption.file}'."
throw "The option `${showOption loc}' in `${firstOption._file}' is a prefix of options in `${firstNonOption._file}'."
else
mergeModules' loc decls defns
))
@@ -267,7 +256,14 @@ rec {
'opts' is a list of modules. Each module has an options attribute which
correspond to the definition of 'loc' in 'opt.file'. */
mergeOptionDecls = loc: opts:
mergeOptionDecls =
let
packSubmodule = file: m:
{ _file = file; imports = [ m ]; };
coerceOption = file: opt:
if isFunction opt then packSubmodule file opt
else packSubmodule file { options = opt; };
in loc: opts:
foldl' (res: opt:
let t = res.type;
t' = opt.options.type;
@@ -284,7 +280,7 @@ rec {
bothHave "apply" ||
(bothHave "type" && (! typesMergeable))
then
throw "The option `${showOption loc}' in `${opt.file}' is already declared in ${showFiles res.declarations}."
throw "The option `${showOption loc}' in `${opt._file}' is already declared in ${showFiles res.declarations}."
else
let
/* Add the modules of the current option to the list of modules
@@ -293,16 +289,14 @@ rec {
current option declaration as the file use for the submodule. If the
submodule defines any filename, then we ignore the enclosing option file. */
options' = toList opt.options.options;
coerceOption = file: opt:
if isFunction opt then packSubmodule file opt
else packSubmodule file { options = opt; };

getSubModules = opt.options.type.getSubModules or null;
submodules =
if getSubModules != null then map (packSubmodule opt.file) getSubModules ++ res.options
else if opt.options ? options then map (coerceOption opt.file) options' ++ res.options
if getSubModules != null then map (packSubmodule opt._file) getSubModules ++ res.options
else if opt.options ? options then map (coerceOption opt._file) options' ++ res.options
else res.options;
in opt.options // res //
{ declarations = res.declarations ++ [opt.file];
{ declarations = res.declarations ++ [opt._file];
options = submodules;
} // typeSet
) { inherit loc; declarations = []; options = []; } opts;
3 changes: 3 additions & 0 deletions lib/systems/doubles.nix
Original file line number Diff line number Diff line change
@@ -27,6 +27,8 @@ let
"riscv32-linux" "riscv64-linux"

"aarch64-none" "avr-none" "arm-none" "i686-none" "x86_64-none" "powerpc-none" "msp430-none" "riscv64-none" "riscv32-none" "vc4-none"

"js-ghcjs"
];

allParsed = map parse.mkSystemFromString all;
@@ -46,6 +48,7 @@ in {
mips = filterDoubles predicates.isMips;
riscv = filterDoubles predicates.isRiscV;
vc4 = filterDoubles predicates.isVc4;
js = filterDoubles predicates.isJavaScript;

cygwin = filterDoubles predicates.isCygwin;
darwin = filterDoubles predicates.isDarwin;
18 changes: 18 additions & 0 deletions lib/tests/modules.sh
Original file line number Diff line number Diff line change
@@ -164,6 +164,24 @@ checkConfigOutput "true" config.enableAlias ./alias-with-priority.nix
checkConfigOutput "false" config.enable ./alias-with-priority-can-override.nix
checkConfigOutput "false" config.enableAlias ./alias-with-priority-can-override.nix

# submoduleWith

## specialArgs should work
checkConfigOutput "foo" config.submodule.foo ./declare-submoduleWith-special.nix

## shorthandOnlyDefines config behaves as expected
checkConfigOutput "true" config.submodule.config ./declare-submoduleWith-shorthand.nix ./define-submoduleWith-shorthand.nix
checkConfigError 'is not of type `boolean' config.submodule.config ./declare-submoduleWith-shorthand.nix ./define-submoduleWith-noshorthand.nix
checkConfigError 'value is a boolean while a set was expected' config.submodule.config ./declare-submoduleWith-noshorthand.nix ./define-submoduleWith-shorthand.nix
checkConfigOutput "true" config.submodule.config ./declare-submoduleWith-noshorthand.nix ./define-submoduleWith-noshorthand.nix

## submoduleWith should merge all modules in one swoop
checkConfigOutput "true" config.submodule.inner ./declare-submoduleWith-modules.nix
checkConfigOutput "true" config.submodule.outer ./declare-submoduleWith-modules.nix

## Paths should be allowed as values and work as expected
checkConfigOutput "true" config.submodule.enable ./declare-submoduleWith-path.nix

cat <<EOF
====== module tests ======
$pass Pass
30 changes: 30 additions & 0 deletions lib/tests/modules/declare-submoduleWith-modules.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{ lib, ... }: {
options.submodule = lib.mkOption {
type = lib.types.submoduleWith {
modules = [
{
options.inner = lib.mkOption {
type = lib.types.bool;
default = false;
};
}
{
outer = true;
}
];
};
default = {};
};

config.submodule = lib.mkMerge [
({ lib, ... }: {
options.outer = lib.mkOption {
type = lib.types.bool;
default = false;
};
})
{
inner = true;
}
];
}
13 changes: 13 additions & 0 deletions lib/tests/modules/declare-submoduleWith-noshorthand.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{ lib, ... }: let
sub.options.config = lib.mkOption {
type = lib.types.bool;
default = false;
};
in {
options.submodule = lib.mkOption {
type = lib.types.submoduleWith {
modules = [ sub ];
};
default = {};
};
}
12 changes: 12 additions & 0 deletions lib/tests/modules/declare-submoduleWith-path.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{ lib, ... }: {
options.submodule = lib.mkOption {
type = lib.types.submoduleWith {
modules = [
./declare-enable.nix
];
};
default = {};
};

config.submodule = ./define-enable.nix;
}
14 changes: 14 additions & 0 deletions lib/tests/modules/declare-submoduleWith-shorthand.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{ lib, ... }: let
sub.options.config = lib.mkOption {
type = lib.types.bool;
default = false;
};
in {
options.submodule = lib.mkOption {
type = lib.types.submoduleWith {
modules = [ sub ];
shorthandOnlyDefinesConfig = true;
};
default = {};
};
}
17 changes: 17 additions & 0 deletions lib/tests/modules/declare-submoduleWith-special.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{ lib, ... }: {
options.submodule = lib.mkOption {
type = lib.types.submoduleWith {
modules = [
({ lib, ... }: {
options.foo = lib.mkOption {
default = lib.foo;
};
})
];
specialArgs.lib = lib // {
foo = "foo";
};
};
default = {};
};
}
3 changes: 3 additions & 0 deletions lib/tests/modules/define-submoduleWith-noshorthand.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
submodule.config.config = true;
}
3 changes: 3 additions & 0 deletions lib/tests/modules/define-submoduleWith-shorthand.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
submodule.config = true;
}
2 changes: 1 addition & 1 deletion lib/tests/systems.nix
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@ let
expected = lib.sort lib.lessThan y;
};
in with lib.systems.doubles; lib.runTests {
testall = mseteq all (linux ++ darwin ++ freebsd ++ openbsd ++ netbsd ++ illumos ++ wasi ++ windows ++ embedded);
testall = mseteq all (linux ++ darwin ++ freebsd ++ openbsd ++ netbsd ++ illumos ++ wasi ++ windows ++ embedded ++ js);

testarm = mseteq arm [ "armv5tel-linux" "armv6l-linux" "armv7a-linux" "armv7l-linux" "arm-none" "armv7a-darwin" ];
testi686 = mseteq i686 [ "i686-linux" "i686-freebsd" "i686-netbsd" "i686-openbsd" "i686-cygwin" "i686-windows" "i686-none" "i686-darwin" ];
Loading