summaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2021-12-02lib/meta: add getLicenseFromSpdxId functionShamrock Lee
Move function spdxLicense, internally used in yarn2nix to lib/meta.nix, and rename to getLicenseFromSpdxId A similar function is implemented in poetry2nix, but the one originally in yarn2nix seems beter. since it falls back to an license-like attrset for mismatched case instead of a plain string
2021-11-15lib.modules: add mkDerivedConfigTaeer Bar-Yam
mkDerivedConfig : Option a -> (a -> Definition b) -> Definition b Create config definitions with the same priority as the definition of another option. This should be used for option definitions where one option sets the value of another as a convenience. For instance a config file could be set with a `text` or `source` option, where text translates to a `source` value using `mkDerivedConfig options.text (pkgs.writeText "filename.conf")`. It takes care of setting the right priority using `mkOverride`.
2021-11-10lib/systems: add x86_64-darwin hostPlatformJonathan Ringer
2021-11-09lib/tests/sources: update to Nix 2.4 cli syntaxBernardo Meurer
2021-11-09lib/tests/modules.sh: update to Nix 2.4 syntaxBernardo Meurer
2021-11-02lib: fix escapeXML example in documentationRobert Helgesson
The previous example output was forgotten copy-paste from some other function.
2021-11-02Merge pull request #144072 from ↵Ben Siraphob
polykernel/lib-lists-mutuallyexclusive-optimization
2021-11-01lib/lists: mutuallyExclusive function optimizationpolykernel
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).
2021-11-01modules: Update evalModules docRobert Hensing
2021-11-01modules: Add visible = "shallow" to hide only sub-optionsRobert Hensing
2021-11-01modules: Add extendModules to module argsRobert Hensing
2021-11-01lib.evalModules: Add extendModules and type to resultRobert Hensing
Allows the simultaneous construction of top-level invocations and submodule types. This helps structure configuration systems integration code.
2021-10-28Merge pull request #139284 from r-burns/powernv-kernel-configRyan Burns
lib/systems: update powernv kernel config
2021-10-21Merge pull request #141789 from pennae/eval-optSilvan Mosberger
lib: make extendDerivation lighter on eval
2021-10-15licenses: add CAPECMarkus S. Wamser
2021-10-15lib: make extendDerivation lighter on evalpennae
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.
2021-10-13Merge pull request #140763 from hercules-ci/abort-on-warnRobert Hensing
lib.warn: Add NIX_ABORT_ON_WARN for call traces
2021-10-13lib.warn: Add NIX_ABORT_ON_WARN for call tracesRobert Hensing
2021-10-06lib.systems.supported.tier3: add aarch64-darwinzimbatm
aarch64-darwin is getting built by hydra
2021-10-05Merge pull request #140284 from Infinisil/types-anything-lambdasSilvan Mosberger
lib/types: Make types.anything merge functions
2021-10-05lib: add list of supported systems (#140428)Jonas Chevalier
Adds the first 3 tiers of RFC0046 that are being used in flake.nix.
2021-10-04Merge pull request #136909 from ncfavier/cleanup-defaults-examplesRobert Hensing
nixos/doc: clean up defaults and examples
2021-10-03Merge pull request #140136 from rnhmjoj/matrix-idsMichele Guerini Rocco
maintainers/maintainers-list: add Matrix IDs
2021-10-03lib/options: add literalExpression and literalDocBook, deprecate literalExampleNaïm Favier
2021-10-03lib: add function escapeXMLRobert Helgesson
Given a string, this function returns a string that can be inserted verbatim in an XML document.
2021-10-02Merge pull request #140051 from pennae/extend-derivationSilvan Mosberger
fix nested calls to extendDerivation
2021-10-02lib/types: Make types.anything merge functionsSilvan Mosberger
Previously it would give an error if there were multiple function definitions.
2021-10-01lib/tests/maintainers: add matrix optionrnhmjoj
2021-09-30ocamlPackages.lustre-v6: init at 6.103.3Delta
2021-09-30fix nested calls to extendDerivationpennae
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.
2021-09-29Merge pull request #131205 from Ma27/showdefs-overflowLinus Heckemann
lib/modules: improve errors for `options`/`config`-mixups
2021-09-28lib/systems: update powernv kernel configRyan Burns
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.
2021-09-28lib/generators: fix error messageMaximilian Bosch
2021-09-17lib.cleanSource: ignore socketsAlyssa Ross
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.
2021-09-12lib.generators.toINI: serialize derivations to stringzimbatm
This is the common case when passing a derivation, we want to access the store path.
2021-09-12lib.generators.toGitINI: don't traverse derivationszimbatm
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
2021-09-09lib/systems: add minimal s390x-linux cross-compile supportSergei Trofimovich
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
2021-08-26lib/strings: fix infinite recursion on concatStringsSep fallbackpolykernel
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.
2021-08-26Merge pull request #135794 from shlevy/composeManyFlakeCompatRobert Hensing
lib.compose{Many,}Extensions: Make compatible with nix flake check
2021-08-26replace dead linksPaul-Nicolas Madelaine
2021-08-26lib.compose{Many,}Extensions: Make compatible with nix flake checkShea Levy
2021-08-26lib/modules: grammar fix in error msgMaximilian Bosch
2021-08-26lib/generators: move limit detection into `withRecursion`Maximilian Bosch
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.
2021-08-25lib/modules: fix error-message when declaring an option inside `config'Maximilian Bosch
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
2021-08-25lib/options: use `depthLimit` for `toPretty` when showing a definitionMaximilian Bosch
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`.
2021-08-25lib/generators/toPretty: add evaluation-limitMaximilian Bosch
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.
2021-08-23lib: optimize setAttrByPath and cleaup importspolykernel
- 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`.
2021-08-22lib: export strings/escapeRegexHarrison Houghton
I see no reason why I should be disallowed from using it.
2021-08-21Merge pull request #134763 from r-burns/fix-scalewayLuke Granger-Brown
lib/systems: fix scaleway-c1 platform
2021-08-19lib.systems.inspect.patterns.isGnu: initAlyssa Ross
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.