Skip to content
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
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 5dfd3c497540
Choose a base ref
...
head repository: NixOS/nixpkgs
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 263bc67bda24
Choose a head ref

Commits on Aug 16, 2019

  1. pry: init at 0.12.2

    tckmn committed Aug 16, 2019
    Copy the full SHA
    e90defb View commit details

Commits on Nov 2, 2019

  1. ihatemoney: init at 4.1 plus module and test

    symphorien authored and symphorien+git@xlumurb.eu committed Nov 2, 2019
    Copy the full SHA
    32d2266 View commit details

Commits on Nov 16, 2019

  1. Copy the full SHA
    88d04db View commit details
  2. home-assistant: run parse-requirements.py

    home-assistant: run parse-requirements.py
    oneingan committed Nov 16, 2019
    Copy the full SHA
    3f860eb View commit details

Commits on Nov 26, 2019

  1. Copy the full SHA
    407a8ec View commit details
  2. Copy the full SHA
    90d336d View commit details

Commits on Dec 5, 2019

  1. vnote: 2.7.2 -> 2.8

    dtzWill committed Dec 5, 2019
    Copy the full SHA
    8d81287 View commit details
  2. azpainter: 2.1.4 -> 2.1.5

    dtzWill committed Dec 5, 2019
    Copy the full SHA
    e90bef2 View commit details

Commits on Dec 6, 2019

  1. meson-tools: init at 0.1

    lopsided98 committed Dec 6, 2019
    Copy the full SHA
    593fbef View commit details
  2. armTrustedFirmwareTools: init

    This package currently contains fiptool, cert_create and sptool.
    lopsided98 committed Dec 6, 2019
    Copy the full SHA
    b5ec2b5 View commit details
  3. armTrustedFirmwareS905: init

    This supports the Amlogic S905, otherwise known as Meson GXBB.
    lopsided98 committed Dec 6, 2019
    Copy the full SHA
    d00a38a View commit details
  4. ubootOdroidC2: init

    lopsided98 committed Dec 6, 2019
    Copy the full SHA
    8845809 View commit details
  5. Copy the full SHA
    7486e0a View commit details
  6. plplot: init at 5.15.0

    bcdarwin committed Dec 6, 2019
    Copy the full SHA
    e85fe01 View commit details

Commits on Dec 12, 2019

  1. Copy the full SHA
    cd51fca View commit details

Commits on Dec 18, 2019

  1. Copy the full SHA
    9888686 View commit details
  2. home-assistant: Add error output for missing deps

    Print missing dependencies to the console when running the parse
    requirements script. This allows to spot missing packages that could be
    added to nixpkgs
    Scriptkiddi committed Dec 18, 2019
    Copy the full SHA
    2293669 View commit details

Commits on Dec 22, 2019

  1. nixos/tests/user-account: add static uid for alice

    A lot of tests assume that the alice user
    will have a uid of 1000. Let's make that
    a guarantee and be able to reference this value.
    worldofpeace committed Dec 22, 2019
    Copy the full SHA
    e2ea815 View commit details
  2. nixosTests.gnome3-xorg: port to python/rewrite

    We've rewritten it use GDM, and we can now autologin
    to the X11 session because of the accountsservice preStart
    script for autologin. It should work similar to how the wayland
    test works, just with a few nuanced differences for xorg.
    worldofpeace committed Dec 22, 2019
    Copy the full SHA
    228818c View commit details

Commits on Dec 23, 2019

  1. Copy the full SHA
    47ddb60 View commit details
  2. fasm: 1.73.18 -> 1.73.21

    r-ryantm committed Dec 23, 2019
    Copy the full SHA
    4021cca View commit details
  3. elisa: 0.4.2 -> 19.12.0

    r-ryantm committed Dec 23, 2019
    Copy the full SHA
    a90f5b5 View commit details
  4. micronaut: 1.2.6 -> 1.2.8

    r-ryantm committed Dec 23, 2019
    Copy the full SHA
    0de96d7 View commit details
  5. mcelog: 166 -> 167

    r-ryantm committed Dec 23, 2019
    Copy the full SHA
    93190f7 View commit details

Commits on Dec 24, 2019

  1. osm2pgsql: 1.2.0 -> 1.2.1

    r-ryantm committed Dec 24, 2019
    Copy the full SHA
    1875c65 View commit details
  2. Copy the full SHA
    6bbf81b View commit details
  3. qjackctl: 0.6.0 -> 0.6.1

    r-ryantm committed Dec 24, 2019
    Copy the full SHA
    3c71b70 View commit details
  4. Copy the full SHA
    f85ec2d View commit details
  5. setbfree: 0.8.10 -> 0.8.11

    r-ryantm committed Dec 24, 2019
    Copy the full SHA
    bd48cf5 View commit details
  6. suricata: 5.0.0 -> 5.0.1

    r-ryantm committed Dec 24, 2019
    Copy the full SHA
    9323e55 View commit details

Commits on Dec 28, 2019

  1. iosevka: 2.3.2 -> 2.3.3

    vincentbernat committed Dec 28, 2019
    Copy the full SHA
    83053c8 View commit details

Commits on Dec 30, 2019

  1. flacon: improvements

    1. Use libsForQt5.callPackage instead of raw callPackage` (this adds
    ability to import qtbase and qttools directly instead of importing whole
    qt5)
    2. Include wrapQtAppsHook in nativeBuildInputs
    
    The major point of this changes is to provide support for running
    support flacon under wayland session, but it may help in some other use
    cases
    
    Closes #76588
    snglth committed Dec 30, 2019
    Copy the full SHA
    345b192 View commit details
  2. Copy the full SHA
    07d0acf View commit details
  3. dockerTools.buildLayeredImage: fix building layered images in parallel

    when tar'ing store paths into layered archives when building layered
    images, don't use the absolute nix store path so that tar won't complain
    if something new is added to the nix store
    
    when building the final docker image, ignore any file changes tar
    detects in the layers. they are all immutable and the only thing that
    might change is the number of hard links due to store optimization
    Richard Wallace committed Dec 30, 2019
    Copy the full SHA
    3be7675 View commit details

Commits on Jan 2, 2020

  1. flyway: fix jarDirs option

    this is not a system property, but rather an argument to
    org.flaywaydb.commandline.Main.main().  therefore, it must come after,
    rather than before, the name of the main class.  (otherwise it's
    interpreted as an argument to the VM itself.)
    
    flyway also expects the option and value to be separated by '=', not ' '.
    
    follows on to #76094
    jerith666 committed Jan 2, 2020
    Copy the full SHA
    2867d19 View commit details

Commits on Jan 3, 2020

  1. Copy the full SHA
    9e035c9 View commit details
  2. Copy the full SHA
    d9bbc22 View commit details
  3. Copy the full SHA
    69827da View commit details
  4. Copy the full SHA
    900aaa5 View commit details
  5. pam: remove cups service

    The cups module itself already defines this.
    Mic92 committed Jan 3, 2020
    Copy the full SHA
    2591fc7 View commit details
  6. pam: remove unused ftp service

    vsftpd is the only ftp server module and defines its own pam service.
    Mic92 committed Jan 3, 2020
    Copy the full SHA
    9458ec4 View commit details

Commits on Jan 4, 2020

  1. Copy the full SHA
    888290d View commit details
  2. Copy the full SHA
    ea89d56 View commit details
  3. nixos/gnunet: Add types to the options

    Louis Bettens committed Jan 4, 2020
    Copy the full SHA
    d497378 View commit details
  4. nixos/tsocks: Add types to the options

    Louis Bettens committed Jan 4, 2020
    Copy the full SHA
    caa9ce1 View commit details

Commits on Jan 5, 2020

  1. lib/modules: clarify error message of 'assigning to top-level attribute'

    If I understand correctly, the problem isn't so much that you're assigning to
    that top-level attribute, but that the assignment to the attribute (or any
    child of the attribute) introduces the 'config' object and prevents 'lifting'
    all settings to a generated 'config' object.
    raboof committed Jan 5, 2020
    Copy the full SHA
    43ef3a8 View commit details
  2. Update nixos/tests/ihatemoney.nix

    Co-Authored-By: Léo Gaspard <github@leo.gaspard.ninja>
    symphorien and Ekleog authored Jan 5, 2020
    Copy the full SHA
    54b0ab0 View commit details
  3. Update nixos/tests/ihatemoney.nix

    Co-Authored-By: Léo Gaspard <github@leo.gaspard.ninja>
    symphorien and Ekleog authored Jan 5, 2020
    Copy the full SHA
    b8b9e7b View commit details
  4. nixos/tests/ihatemoney.nix: run nixpkgs-fmt

    now indentation is perfect
    symphorien committed Jan 5, 2020
    Copy the full SHA
    665fee3 View commit details
  5. greybird: 3.22.10 -> 3.22.11

    - update to version 3.22.11
    - build system ported to meson
    romildo committed Jan 5, 2020
    Copy the full SHA
    7d01524 View commit details
Showing 388 changed files with 14,432 additions and 8,542 deletions.
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -82,6 +82,7 @@

# Rust
/pkgs/development/compilers/rust @Mic92 @LnL7
/pkgs/build-support/rust @andir

# Darwin-related
/pkgs/stdenv/darwin @NixOS/darwin-maintainers
4 changes: 0 additions & 4 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -17,7 +17,3 @@
- [ ] Determined the impact on package closure size (by running `nix path-info -S` before and after)
- [ ] Ensured that relevant documentation is up to date
- [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/.github/CONTRIBUTING.md).

###### Notify maintainers

cc @
63 changes: 16 additions & 47 deletions doc/contributing/submitting-changes.xml
Original file line number Diff line number Diff line change
@@ -13,7 +13,7 @@
</listitem>
<listitem>
<para>
Fork the repository on GitHub.
Fork <link xlink:href="https://github.com/nixos/nixpkgs/">the Nixpkgs repository</link> on GitHub.
</para>
</listitem>
<listitem>
@@ -22,15 +22,10 @@
<itemizedlist>
<listitem>
<para>
You can make branch from a commit of your local <command>nixos-version</command>. That will help you to avoid additional local compilations. Because you will receive packages from binary cache.
<itemizedlist>
<listitem>
<para>
For example: <command>nixos-version</command> returns <command>15.05.git.0998212 (Dingo)</command>. So you can do:
</para>
</listitem>
</itemizedlist>
You can make branch from a commit of your local <command>nixos-version</command>. That will help you to avoid additional local compilations. Because you will receive packages from binary cache. For example
<screen>
<prompt>$ </prompt>nixos-version --hash
0998212
<prompt>$ </prompt>git checkout 0998212
<prompt>$ </prompt>git checkout -b 'fix/pkg-name-update'
</screen>
@@ -47,13 +42,11 @@
<listitem>
<para>
Make commits of logical units.
<itemizedlist>
<listitem>
<para>
If you removed pkgs, made some major NixOS changes etc., write about them in <command>nixos/doc/manual/release-notes/rl-unstable.xml</command>.
</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>
If you removed pkgs or made some major NixOS changes, write about it in the release notes for the next stable release. For example <command>nixos/doc/manual/release-notes/rl-2003.xml</command>.
</para>
</listitem>
<listitem>
@@ -178,7 +171,7 @@ Additional information.
</listitem>
<listitem>
<para>
Rebase you branch against current <command>master</command>.
<link xlink:href="https://git-scm.com/book/en/v2/Git-Branching-Rebasing">Rebase</link> your branch against current <command>master</command>.
</para>
</listitem>
</itemizedlist>
@@ -194,36 +187,12 @@ Additional information.
</listitem>
<listitem>
<para>
Create pull request:
<itemizedlist>
<listitem>
<para>
Write the title in format <command>(pkg-name | nixos/&lt;module>): improvement</command>.
<itemizedlist>
<listitem>
<para>
If you update the pkg, write versions <command>from -> to</command>.
</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>
Write in comment if you have tested your patch. Do not rely much on <command>TravisCI</command>.
</para>
</listitem>
<listitem>
<para>
If you make an improvement, write about your motivation.
</para>
</listitem>
<listitem>
<para>
Notify maintainers of the package. For example add to the message: <command>cc @jagajaga @domenkozar</command>.
</para>
</listitem>
</itemizedlist>
Create the pull request
</para>
</listitem>
<listitem>
<para>
Follow <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/.github/CONTRIBUTING.md#submitting-changes">the contribution guidelines</link>.
</para>
</listitem>
</itemizedlist>
29 changes: 14 additions & 15 deletions doc/languages-frameworks/haskell.section.md
Original file line number Diff line number Diff line change
@@ -84,37 +84,36 @@ nix-env -qaP -A nixos.haskellPackages
nix-env -iA nixos.haskellPackages.cabal-install
```

Our current default compiler is GHC 7.10.x and the `haskellPackages` set
contains packages built with that particular version. Nixpkgs contains the
latest major release of every GHC since 6.10.4, however, and there is a whole
family of package sets available that defines Hackage packages built with each
of those compilers, too:
Our current default compiler is GHC 8.6.x and the `haskellPackages` set
contains packages built with that particular version. Nixpkgs contains the last
three major releases of GHC and there is a whole family of package sets
available that defines Hackage packages built with each of those compilers,
too:
```shell
nix-env -f "<nixpkgs>" -qaP -A haskell.packages.ghc6123
nix-env -f "<nixpkgs>" -qaP -A haskell.packages.ghc763
nix-env -f "<nixpkgs>" -qaP -A haskell.packages.ghc844
nix-env -f "<nixpkgs>" -qaP -A haskell.packages.ghc882
```

The name `haskellPackages` is really just a synonym for
`haskell.packages.ghc7102`, because we prefer that package set internally and
`haskell.packages.ghc865`, because we prefer that package set internally and
recommend it to our users as their default choice, but ultimately you are free
to compile your Haskell packages with any GHC version you please. The following
command displays the complete list of available compilers:
```
$ nix-env -f "<nixpkgs>" -qaP -A haskell.compiler
haskell.compiler.ghc822 ghc-8.2.2
haskell.compiler.integer-simple.ghc822 ghc-8.2.2
haskell.compiler.ghc8101 ghc-8.10.0.20191210
haskell.compiler.integer-simple.ghc8101 ghc-8.10.0.20191210
haskell.compiler.ghcHEAD ghc-8.10.20191119
haskell.compiler.integer-simple.ghcHEAD ghc-8.10.20191119
haskell.compiler.ghc822Binary ghc-8.2.2-binary
haskell.compiler.ghc844 ghc-8.4.4
haskell.compiler.ghc863Binary ghc-8.6.3-binary
haskell.compiler.ghc864 ghc-8.6.4
haskell.compiler.integer-simple.ghc864 ghc-8.6.4
haskell.compiler.ghc865 ghc-8.6.5
haskell.compiler.integer-simple.ghc865 ghc-8.6.5
haskell.compiler.ghc881 ghc-8.8.1
haskell.compiler.integer-simple.ghc881 ghc-8.8.1
haskell.compiler.ghcHEAD ghc-8.9.20190601
haskell.compiler.integer-simple.ghcHEAD ghc-8.9.20190601
haskell.compiler.ghcjs84 ghcjs-8.4.0.1
haskell.compiler.ghc882 ghc-8.8.1.20191211
haskell.compiler.integer-simple.ghc882 ghc-8.8.1.20191211
haskell.compiler.ghcjs ghcjs-8.6.0.1
```

5 changes: 4 additions & 1 deletion doc/languages-frameworks/python.section.md
Original file line number Diff line number Diff line change
@@ -499,7 +499,7 @@ and in this case the `python35` interpreter is automatically used.
Versions 2.7, 3.5, 3.6, 3.7 and 3.8 of the CPython interpreter are available as
respectively `python27`, `python35`, `python36`, `python37` and `python38`. The aliases
`python2` and `python3` correspond to respectively `python27` and
`python38`. The default interpreter, `python`, maps to `python2`. The PyPy
`python37`. The default interpreter, `python`, maps to `python2`. The PyPy
interpreters compatible with Python 2.7 and 3 are available as `pypy27` and
`pypy3`, with aliases `pypy2` mapping to `pypy27` and `pypy` mapping to
`pypy2`. The Nix expressions for the interpreters can be
@@ -821,6 +821,9 @@ should be used with `ignoreCollisions = true`.
The following are setup hooks specifically for Python packages. Most of these are
used in `buildPythonPackage`.

- `eggUnpackhook` to move an egg to the correct folder so it can be installed with the `eggInstallHook`
- `eggBuildHook` to skip building for eggs.
- `eggInstallHook` to install eggs.
- `flitBuildHook` to build a wheel using `flit`.
- `pipBuildHook` to build a wheel using `pip` and PEP 517. Note a build system (e.g. `setuptools` or `flit`) should still be added as `nativeBuildInput`.
- `pipInstallHook` to install wheels.
4 changes: 2 additions & 2 deletions lib/default.nix
Original file line number Diff line number Diff line change
@@ -101,7 +101,7 @@ let
cleanSource sourceByRegex sourceFilesBySuffices
commitIdFromGitRepo cleanSourceWith pathHasContext
canCleanSource;
inherit (modules) evalModules closeModules unifyModuleSyntax
inherit (modules) evalModules unifyModuleSyntax
applyIfFunction mergeModules
mergeModules' mergeOptionDecls evalOptionValue mergeDefinitions
pushDownProperties dischargeProperties filterOverrides
@@ -110,7 +110,7 @@ let
mkFixStrictness mkOrder mkBefore mkAfter mkAliasDefinitions
mkAliasAndWrapDefinitions fixMergeModules mkRemovedOptionModule
mkRenamedOptionModule mkMergedOptionModule mkChangedOptionModule
mkAliasOptionModule doRename filterModules;
mkAliasOptionModule doRename;
inherit (options) isOption mkEnableOption mkSinkUndeclaredOptions
mergeDefaultOption mergeOneOption mergeEqualOption getValues
getFiles optionAttrSetToDocList optionAttrSetToDocList'
133 changes: 93 additions & 40 deletions lib/modules.nix
Original file line number Diff line number Diff line change
@@ -41,7 +41,13 @@ rec {

options = {
_module.args = mkOption {
type = types.attrsOf types.unspecified;
# Because things like `mkIf` are entirely useless for
# `_module.args` (because there's no way modules can check which
# arguments were passed), we'll use `lazyAttrsOf` which drops
# support for that, in turn it's lazy in its values. This means e.g.
# a `_module.args.pkgs = import (fetchTarball { ... }) {}` won't
# start a download when `pkgs` wasn't evaluated.
type = types.lazyAttrsOf types.unspecified;
internal = true;
description = "Arguments passed to each module.";
};
@@ -59,9 +65,12 @@ rec {
};
};

closed = closeModules (modules ++ [ internalModule ]) ({ inherit config options lib; } // specialArgs);
collected = collectModules
(specialArgs.modulesPath or "")
(modules ++ [ internalModule ])
({ inherit config options lib; } // specialArgs);

options = mergeModules prefix (reverseList (filterModules (specialArgs.modulesPath or "") closed));
options = mergeModules prefix (reverseList collected);

# Traverse options and extract the option values into the final
# config set. At the same time, check whether all option
@@ -87,31 +96,76 @@ rec {
result = { inherit options config; };
in result;

# collectModules :: (modulesPath: String) -> (modules: [ Module ]) -> (args: Attrs) -> [ Module ]
#
# Collects all modules recursively through `import` statements, filtering out
# all modules in disabledModules.
collectModules = let

# Filter disabled modules. Modules can be disabled allowing
# their implementation to be replaced.
filterModules = modulesPath: modules:
let
moduleKey = m: if isString m then toString modulesPath + "/" + m else toString m;
disabledKeys = map moduleKey (concatMap (m: m.disabledModules) modules);
in
filter (m: !(elem m.key disabledKeys)) modules;
# Like unifyModuleSyntax, but also imports paths and calls functions if necessary
loadModule = args: fallbackFile: fallbackKey: m:
if isFunction m || isAttrs m then
unifyModuleSyntax fallbackFile fallbackKey (applyIfFunction fallbackKey m args)
else unifyModuleSyntax (toString m) (toString m) (applyIfFunction (toString m) (import m) args);

/* Close a set of modules under the ‘imports’ relation. */
closeModules = modules: args:
let
toClosureList = file: parentKey: imap1 (n: x:
if isAttrs x || isFunction x then
let key = "${parentKey}:anon-${toString n}"; in
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;
};
/*
Collects all modules recursively into the form
{
disabled = [ <list of disabled modules> ];
# All modules of the main module list
modules = [
{
key = <key1>;
module = <module for key1>;
# All modules imported by the module for key1
modules = [
{
key = <key1-1>;
module = <module for key1-1>;
# All modules imported by the module for key1-1
modules = [ ... ];
}
...
];
}
...
];
}
*/
collectStructuredModules =
let
collectResults = modules: {
disabled = concatLists (catAttrs "disabled" modules);
inherit modules;
};
in parentFile: parentKey: initialModules: args: collectResults (imap1 (n: x:
let
module = loadModule args parentFile "${parentKey}:anon-${toString n}" x;
collectedImports = collectStructuredModules module._file module.key module.imports args;
in {
key = module.key;
module = module;
modules = collectedImports.modules;
disabled = module.disabledModules ++ collectedImports.disabled;
}) initialModules);

# filterModules :: String -> { disabled, modules } -> [ Module ]
#
# Filters a structure as emitted by collectStructuredModules by removing all disabled
# modules recursively. It returns the final list of unique-by-key modules
filterModules = modulesPath: { disabled, modules }:
let
moduleKey = m: if isString m then toString modulesPath + "/" + m else toString m;
disabledKeys = map moduleKey disabled;
keyFilter = filter (attrs: ! elem attrs.key disabledKeys);
in map (attrs: attrs.module) (builtins.genericClosure {
startSet = keyFilter modules;
operator = attrs: keyFilter attrs.modules;
});

in modulesPath: initialModules: args:
filterModules modulesPath (collectStructuredModules unknownModule "" initialModules args);

/* Massage a module into canonical form, that is, a set consisting
of ‘options’, ‘config’ and ‘imports’ attributes. */
@@ -123,7 +177,7 @@ rec {
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'."
throw "Module `${key}' has an unsupported attribute `${head (attrNames badAttrs)}'. This is caused by introducing a top-level `config' or `options' attribute. Add configuration attributes immediately on the top level instead, or move all of them (namely: ${toString (attrNames badAttrs)}) into the explicit `config' attribute."
else
{ _file = m._file or file;
key = toString m.key or key;
@@ -317,16 +371,9 @@ rec {
else
mergeDefinitions loc opt.type defs';


# The value with a check that it is defined
valueDefined = if res.isDefined then res.mergedValue else
# (nixos-option detects this specific error message and gives it special
# handling. If changed here, please change it there too.)
throw "The option `${showOption loc}' is used but not defined.";

# Apply the 'apply' function to the merged value. This allows options to
# yield a value computed from the definitions
value = if opt ? apply then opt.apply valueDefined else valueDefined;
value = if opt ? apply then opt.apply res.mergedValue else res.mergedValue;

in opt //
{ value = builtins.addErrorContext "while evaluating the option `${showOption loc}':" value;
@@ -360,11 +407,17 @@ rec {
};
defsFinal = defsFinal'.values;

# Type-check the remaining definitions, and merge them.
mergedValue = foldl' (res: def:
if type.check def.value then res
else throw "The option value `${showOption loc}' in `${def.file}' is not of type `${type.description}'.")
(type.merge loc defsFinal) defsFinal;
# Type-check the remaining definitions, and merge them. Or throw if no definitions.
mergedValue =
if isDefined then
foldl' (res: def:
if type.check def.value then res
else throw "The option value `${showOption loc}' in `${def.file}' is not of type `${type.description}'."
) (type.merge loc defsFinal) defsFinal
else
# (nixos-option detects this specific error message and gives it special
# handling. If changed here, please change it there too.)
throw "The option `${showOption loc}' is used but not defined.";

isDefined = defsFinal != [];

Loading