summary refs log tree commit diff
path: root/lib
Commit message (Collapse)AuthorAge
* lib/systems: add x86_64-darwin hostPlatformJonathan Ringer2021-11-10
|
* lib/tests/sources: update to Nix 2.4 cli syntaxBernardo Meurer2021-11-09
|
* lib/tests/modules.sh: update to Nix 2.4 syntaxBernardo Meurer2021-11-09
|
* lib: fix escapeXML example in documentationRobert Helgesson2021-11-02
| | | | | The previous example output was forgotten copy-paste from some other function.
* Merge pull request #144072 from ↵Ben Siraphob2021-11-02
|\ | | | | | | polykernel/lib-lists-mutuallyexclusive-optimization
| * lib/lists: mutuallyExclusive function optimizationpolykernel2021-11-01
| | | | | | | | | | | | | | | | | | | | | | The current implementation of `mutuallyExclusive` builds a new list with length subtracted by one on every recursive call which is expensive. When b is empty, the function still traverses a in its entirety before returning a result. The new implementation uses `any` to check if each element of list b is in list a using `elem`. This maintains short circuiting when list a or b is empty and has a worst case time complexity of O(nm).
* | modules: Update evalModules docRobert Hensing2021-11-01
| |
* | modules: Add visible = "shallow" to hide only sub-optionsRobert Hensing2021-11-01
| |
* | modules: Add extendModules to module argsRobert Hensing2021-11-01
| |
* | lib.evalModules: Add extendModules and type to resultRobert Hensing2021-11-01
|/ | | | | | | Allows the simultaneous construction of top-level invocations and submodule types. This helps structure configuration systems integration code.
* Merge pull request #139284 from r-burns/powernv-kernel-configRyan Burns2021-10-28
|\ | | | | lib/systems: update powernv kernel config
| * lib/systems: update powernv kernel configRyan Burns2021-09-28
| | | | | | | | | | | | | | | | PowerNV was looking for a nonexisting zImage file. Remove unnecessary .file / .installTarget. Also add config options needed for default minimal NixOS config and QEMU VirtIO/VirtFS devices.
* | Merge pull request #141789 from pennae/eval-optSilvan Mosberger2021-10-21
|\ \ | | | | | | lib: make extendDerivation lighter on eval
| * | lib: make extendDerivation lighter on evalpennae2021-10-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | the fix to extendDerivation in #140051 unwittingly worsened eval performance by quite a bit. set elements alone needed over 1GB extra after the change, which seems disproportionate to how small it was. if we flip the logic used to determine which outputs to install around and keep a "this one exactly" flag in the specific outputs instead of a "all of them" in the root we can avoid most of that cost.
* | | licenses: add CAPECMarkus S. Wamser2021-10-15
|/ /
* | Merge pull request #140763 from hercules-ci/abort-on-warnRobert Hensing2021-10-13
|\ \ | | | | | | lib.warn: Add NIX_ABORT_ON_WARN for call traces
| * | lib.warn: Add NIX_ABORT_ON_WARN for call tracesRobert Hensing2021-10-13
| | |
* | | lib.systems.supported.tier3: add aarch64-darwinzimbatm2021-10-06
|/ / | | | | | | aarch64-darwin is getting built by hydra
* | Merge pull request #140284 from Infinisil/types-anything-lambdasSilvan Mosberger2021-10-05
|\ \ | | | | | | lib/types: Make types.anything merge functions
| * | lib/types: Make types.anything merge functionsSilvan Mosberger2021-10-02
| |/ | | | | | | | | Previously it would give an error if there were multiple function definitions.
* | lib: add list of supported systems (#140428)Jonas Chevalier2021-10-05
| | | | | | Adds the first 3 tiers of RFC0046 that are being used in flake.nix.
* | Merge pull request #136909 from ncfavier/cleanup-defaults-examplesRobert Hensing2021-10-04
|\ \ | | | | | | nixos/doc: clean up defaults and examples
| * | lib/options: add literalExpression and literalDocBook, deprecate literalExampleNaïm Favier2021-10-03
| | |
* | | Merge pull request #140136 from rnhmjoj/matrix-idsMichele Guerini Rocco2021-10-03
|\ \ \ | | | | | | | | maintainers/maintainers-list: add Matrix IDs
| * | | lib/tests/maintainers: add matrix optionrnhmjoj2021-10-01
| | | |
* | | | lib: add function escapeXMLRobert Helgesson2021-10-03
| |/ / |/| | | | | | | | | | | Given a string, this function returns a string that can be inserted verbatim in an XML document.
* | | Merge pull request #140051 from pennae/extend-derivationSilvan Mosberger2021-10-02
|\ \ \ | |/ / |/| | fix nested calls to extendDerivation
| * | fix nested calls to extendDerivationpennae2021-09-30
| |/ | | | | | | | | | | | | | | | | | | | | if extendDerivation is called on something that already had extendDerivation called on it (eg a mkDerivation result) the second call will set outputUnspecified=true on every output by way of propagating attributes of the full derivation to the individual outputs. this in turn causes buildEnv--and thus nix-shell and environment.systemPackages--to install every output of such a derivation even when only a specific output was requested, which renders the point of multiple outputs moot. this happens in python modules (see #139756), though it seems that tcl and possibly others should also be affected.
* | ocamlPackages.lustre-v6: init at 6.103.3Delta2021-09-30
| |
* | Merge pull request #131205 from Ma27/showdefs-overflowLinus Heckemann2021-09-29
|\ \ | |/ |/| lib/modules: improve errors for `options`/`config`-mixups
| * lib/generators: fix error messageMaximilian Bosch2021-09-28
| |
| * lib/modules: grammar fix in error msgMaximilian Bosch2021-08-26
| |
| * lib/generators: move limit detection into `withRecursion`Maximilian Bosch2021-08-26
| | | | | | | | | | | | | | | | | | | | | | | | | | As suggested in #131205. Now it's possible to pretty-print a value with `lib.generators` like this: with lib.generators; toPretty { } (withRecursion { depthLimit = 10; } /* arbitrarily complex value */) Also, this can be used for any other pretty-printer now if needed.
| * lib/modules: fix error-message when declaring an option inside `config'Maximilian Bosch2021-08-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The message I originally implemented here was to catch a mixup of `config' and `options' in a `types.submodule'[1]. However it looks rather weird for a wrongly declared top-level option. So I decided to throw error: The option `foo' does not exist. Definition values: - In `<unknown-file>': { bar = { _type = "option"; type = { _type = "option-type"; ... It seems as you're trying to declare an option by placing it into `config' rather than `options'! for an expression like with import ./lib; evalModules { modules = [ { foo.bar = mkOption { type = types.str; }; } ]; } [1] fa30c9abed61f30218a211842204705986d486f9
| * lib/options: use `depthLimit` for `toPretty` when showing a definitionMaximilian Bosch2021-08-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When having a bogus declaration such as { lib, ... }: { foo.bar = mkOption { type = types.str; }; } the evaluation will terminate with a not-so helpful error: stack overflow (possible infinite recursion) To make sure a useful error is still provided, I added a `depthLimit` of `10` which should be perfectly sufficient to `toPretty` when it's used in an error-case for `showDefs`.
| * lib/generators/toPretty: add evaluation-limitMaximilian Bosch2021-08-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When having e.g. recursive attr-set, it cannot be printed which is solved by Nix itself like this: $ nix-instantiate --eval -E 'let a.b = 1; a.c = a; in builtins.trace a 1' trace: { b = 1; c = <CYCLE>; } 1 However, `generators.toPretty` tries to evaluate something until it's done which can result in a spurious `stack-overflow`-error: $ nix-instantiate --eval -E 'with import <nixpkgs/lib>; generators.toPretty { } (mkOption { type = types.str; })' error: stack overflow (possible infinite recursion) Those attr-sets are in fact rather common, one example is shown above, a `types.<type>`-declaration is such an example. By adding an optional `depthLimit`-argument, `toPretty` will stop evaluating as soon as the limit is reached: $ nix-instantiate --eval -E 'with import ./Projects/nixpkgs-update-int/lib; generators.toPretty { depthLimit = 2; } (mkOption { type = types.str; })' |xargs -0 echo -e "{ _type = \"option\"; type = { _type = \"option-type\"; check = <function>; deprecationMessage = null; description = \"string\"; emptyValue = { }; functor = { binOp = <unevaluated>; name = <unevaluated>; payload = <unevaluated>; type = <unevaluated>; wrapped = <unevaluated>; }; getSubModules = null; getSubOptions = <function>; merge = <function>; name = \"str\"; nestedTypes = { }; substSubModules = <function>; typeMerge = <function>; }; }" Optionally, it's also possible to let `toPretty` throw an error if the limit is exceeded.
* | lib.cleanSource: ignore socketsAlyssa Ross2021-09-17
| | | | | | | | | | | | | | | | I'm working on a project that involves running a virtual machine monitor program, which creates a control socket in the project directory (because it doesn't make sense to put it anywhere else). This obviously isn't part of the source of my program, so I think cleanSource should filter it out.
* | lib.generators.toINI: serialize derivations to stringzimbatm2021-09-12
| | | | | | | | | | This is the common case when passing a derivation, we want to access the store path.
* | lib.generators.toGitINI: don't traverse derivationszimbatm2021-09-12
| | | | | | | | | | | | | | | | | | Consider a derivation a value to be serialized. nix-repl> lib.generators.toGitINI { hello = { drv = pkgs.hello; }; } error: evaluation aborted with the following error message: 'generators.mkValueStringDefault: attrsets not supported: <derivation /nix/store/533q15q67sl6dl0272dyi7m7w5pwkkjh-hello-2.10.drv>' Fixes #137390
* | lib/systems: add minimal s390x-linux cross-compile supportSergei Trofimovich2021-09-09
| | | | | | | | | | | | | | | | | | | | | | Tested basic functionality as: $ nix-build --arg crossSystem '{ config = "s390x-unknown-linux-gnu"; }' -A re2c $ file ./result/bin/re2c $ ./result/bin/re2c: ELF 64-bit MSB executable, IBM S/390, version 1 (SYSV), dynamically linked, interpreter ...-gnu-2.33-50/lib/ld64.so.1, for GNU/Linux 2.6.32, not stripped $ qemu-s390x ./result/bin/re2c --version re2c 2.2
* | lib/strings: fix infinite recursion on concatStringsSep fallbackpolykernel2021-08-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current implementation of the concatStringsSep fallback references concatStrings whcih is just a partial application of concatStringsSep, forming a circular dependency. Although this will almost never be encountered as (assuming the user does not explicitly trigger it): 1. the or operator will short circuit both in lazy and strict evaluation 2. this can only occur in Nix versions prior to 1.10 which is not compatible with various nix operations as of 2.3.15 However it is still important if scopedImport is used or the builtins have been overwritten. lib.foldl' is used instead of builtins.foldl' as the foldl' primops was introduced in the same release as concatStringsSep.
* | Merge pull request #135794 from shlevy/composeManyFlakeCompatRobert Hensing2021-08-26
|\ \ | | | | | | lib.compose{Many,}Extensions: Make compatible with nix flake check
| * | lib.compose{Many,}Extensions: Make compatible with nix flake checkShea Levy2021-08-26
| |/
* / replace dead linksPaul-Nicolas Madelaine2021-08-26
|/
* lib: optimize setAttrByPath and cleaup importspolykernel2021-08-23
| | | | | | | - Remove inheritance of `lists.fold` as it isn't used anywhere. - Inherit `foldl'` for consistency as only `cartesianProductOfSets` explicitly reference lib. - Inline `foldr` to generate nested attrs instead of using `listToAttrs` and `tail`.
* lib: export strings/escapeRegexHarrison Houghton2021-08-22
| | | | I see no reason why I should be disallowed from using it.
* Merge pull request #134763 from r-burns/fix-scalewayLuke Granger-Brown2021-08-21
|\ | | | | lib/systems: fix scaleway-c1 platform
| * lib/systems: fix scaleway-c1 platformRyan Burns2021-08-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This regressed in 9c213398b312e0f0bb9cdf05090fd20223a82ad0 The recursiveUpdate gave the platform both gcc.cpu and gcc.arch attrs instead of only gcc.cpu. This is invalid; gcc configuration fails with: ``` Switch "--with-arch" may not be used with switch "--with-cpu" ``` So we revert to using `//` to retain only gcc.cpu (which is more specific than the processor arch).
* | lib.systems.inspect.patterns.isGnu: initAlyssa Ross2021-08-19
|/ | | | | | | | | This allows checking e.g. stdenv.hostPlatform.isGnu, just like isMusl or isUClibc. It was already possible to check for glibc with stdenv.hostPlatform.libc == "glibc", but when that doesn't line up with how every other platform check works, this is apparently sufficiently non-obvious that we've ended up with stuff like adding glibc.static if !isMusl, which is obviously wrong.
* lib: inherit mkImageMediaOverridelassulus2021-08-18
|