about summary refs log tree commit diff
path: root/lib
AgeCommit message (Collapse)AuthorFilesLines
2022-05-10lib.foldAttrs: Clarify exampleRobert Hensing1-1/+1
2022-05-07lib/strings/toShellVars: handle derivations as stringsNaïm Favier2-4/+17
2022-05-06lib: add inPureEvalModematthewcroughan2-1/+8
This makes a value that is true if builtins does not contain the currentSystem function, but false if it does.
2022-05-04Merge pull request #161156 from ↵Rick van Schijndel1-2/+2
a-m-joseph/abort-on-failed-platform-detection-instead-of-silently-assuming-pc platforms.nix: use {} on failed detection instead of silently assuming pc
2022-05-03platforms.nix: use {} on failed detection instead of silently assuming pcAdam Joseph1-2/+2
This patch causes the autodetection code in lib/systems/platforms.nix to return {} if it cannot detect the platform and one of the platform.nix-detection-provided attributes (linux-kernel, gcc, and rustc) are accessed, rather than silently assuming the "pc" platform as was previously done. It is definitely safe to assume that code using these attributes is prepared to deal with `gcc` and `rustc` not being defined, because many of the working entries in this file don't define it. Regarding `linux-kernel` the situation is less certain, but some code (`lib/systems/default.nix` for example) is already designed to deal with that attribute being missing. At worst it would result in an "attribute not found" error. While adding mips64el bootstrap support to nixpkgs, the silent assumption that mips64el routers are actually Intel PCs caused significant frustration. This commit removes that assumption in order to save people who port nixpkgs to new platforms in the future from this frustration.
2022-05-02lib/tests/modules.sh: Fix for singular type descriptionsRobert Hensing1-1/+1
2022-05-02Merge pull request #170090 from danth/has-infix-toStringRobert Hensing2-1/+31
lib/strings: call toString within hasInfix
2022-05-02lib/tests: add tests for hasInfixDaniel Thwaites1-0/+30
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2022-05-01Merge pull request #167947 from MatthewCroughan/mc/callLocklessFlakeArtturi5-0/+48
lib: add callLocklessFlake
2022-05-01lib/strings: convert to string within hasInfixDaniel Thwaites1-1/+1
This should fix the issue mentioned here: https://github.com/NixOS/nixpkgs/pull/168175#issuecomment-1107830574
2022-04-30Merge pull request #167776 from ↵Robert Hensing1-1/+4
hercules-ci/lib-modules-allow-disable-_modules.args-docs-internal lib.modules: Allow making _module.args internal
2022-04-28lib.systems: add riscv{32,64} sets and filtersAlyssa Ross3-0/+6
For other platforms like Intel and ARM, we can do e.g. lib.platforms.aarch64 to get only the 64-bit ARM platorms, but until now there were no equivalents for RISC-V.
2022-04-28lib/tests: add RISC-V testAlyssa Ross1-0/+1
2022-04-27Merge pull request #170583 from ncfavier/mkShellVarsRobert Hensing3-1/+82
lib/strings: add toShellVars
2022-04-27lib/strings: fix quoting of exampleNaïm Camille Favier1-1/+1
Co-authored-by: Silvan Mosberger <github@infinisil.com>
2022-04-27lib/strings: add toShellVarsNaïm Favier3-1/+82
A straightforward piece of plumbing to safely inject Nix variables into shell scripts: '' ${lib.toShellVars { inherit foo bar; }} cmd "$foo" --bar "$bar" ''
2022-04-27 lib/types: Drop misleading plural from type descriptions #170561Klemens Nanni1-3/+3
Probably being the most prominent document demonstrating the problem, configuration.nix(5) describes various types in plural, e.g. - ` Type: list of strings` - ` Type: list of systemd options` However, there are other cases where appending "s" to the inner type effectively changes the type, e.g. - ``` Type: list of string matching the pattern [a-zA-Z0-9@%:_.\-]+[.](service|socket|device|mount|automount|swap|target|path|timer|scope|slice)s ``` This should've read "list of string[s]..." but instead changes the regular expression. Simply drop the best-effort plural in favour of correctness and simplicity rather than adding more grammar related logic/trying to fix this.
2022-04-26Merge pull request #167247 from Artturin/addgetmainprogArtturi2-1/+15
lib/meta: add getExe to get the main program of a drv
2022-04-26Merge pull request #168778 from ↵Robert Hensing4-4/+61
hercules-ci/issue-168767-extendModules-module-dedup-collision `lib.types.submoduleWith`: Avoid `_key` collisions after `extendModules` (issue #168767)
2022-04-25Merge pull request #168111 from a-m-joseph/lib-systems-inspect-powerpcSandro1-0/+1
lib/systems/inspect.nix: add isPower64
2022-04-24lib/meta: add getExe to get the main program of a drvArtturin2-1/+15
2022-04-24lib.types.submoduleWith: Avoid _key collisions after extendModulesRobert Hensing4-4/+61
2022-04-22lib/strings: optimise hasInfix function (#168175)Daniel Thwaites1-4/+1
* lib/strings: optimise hasInfix function * lib/strings: optimise hasInfix further using regex * rstudio: call hasInfix with a string * lib/strings: remove let from hasInfix Co-authored-by: pennae <82953136+pennae@users.noreply.github.com> Co-authored-by: pennae <82953136+pennae@users.noreply.github.com>
2022-04-15lib/systems/platforms: correctly import examples.nixArtturin1-1/+1
before: :p lib.systems failed with error: getting status of '...examples': no such file or directory
2022-04-12lib/tests: evaluate value from subflake with callLocklessFlakematthewcroughan3-8/+8
2022-04-12lib/tests: use subflake to test callLocklessFlakematthewcroughan3-3/+16
2022-04-12lib/tests: add test for callLocklessFlakematthewcroughan1-0/+9
2022-04-12lib: init flakes.nixmatthewcroughan3-17/+27
This commit creates flakes.nix, which is a library containing functions which relate to interacting with flakes. It also moves related functions from trivial.nix into it.
2022-04-12lib: add callLocklessFlakematthewcroughan2-1/+17
This is essentially a copy of the function of the same name, from flake-compat. callLocklessFlake is useful when trying to utilise a flake.nix without a lock file, often for when you want to create a subflake from within a parent flake. Co-authored-by: Tom Bereknyei <tomberek@gmail.com> Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2022-04-12lib/generators: withRecursion: don't break attr-sets with special attrsMaximilian Bosch2-1/+26
Closes #168327 The issue reported there can be demonstrated with the following expression: → nix-instantiate --eval -E "with import ./. {}; pkgs.lib.options.showDefs [ { file = \"foo\"; value = pkgs.rust.packages.stable.buildRustPackages; } ]" error: attempt to call something which is not a function but a string at /home/ma27/Projects/nixpkgs/lib/trivial.nix:442:35: 441| isFunction = f: builtins.isFunction f || 442| (f ? __functor && isFunction (f.__functor f)); | ^ 443| Basically, if a `__functor` is in an attribute-set at depth-limit, `__functor` will be set to `"<unevaluated>"`. This however breaks `lib.isFunction` which checks for a `__functor` by invoking `__functor` with `f` itself. The same issue - "magic" attributes being shadowed by `withRecursion` - also applies to others such as `__pretty`/`__functionArgs`/`__toString`. Since these attributes have a low-risk of causing a stack overflow (because these are flat attr-sets or even functions), ignoring them in `withRecursion` seems like a valid solution.
2022-04-11lib.modules: Allow making _module.args internalRobert Hensing1-1/+4
This allows other module system consumers to disable these docs via option merging. For instance arion uses asciidoc instead of docbook so that would look awful.
2022-04-10lib/systems/inspect.nix: add isPower64Adam Joseph1-0/+1
This commit adds an `isPower64` predicate to the two existing predicates for this architecture (`isPower` and `isPowerPC`). Note that `isPowerPC` matches only 32-bit machines, whereas `isPower` matches both 64-bit and 32-bit machines. Prior to this commit there was no single `isXXX` predicate for `powerpc64le`.
2022-04-06Merge pull request #164088 from ↵Silvan Mosberger2-2/+107
Profpatsch/lib.generators-add-toINIWithGlobalSection lib.generators: add toINIWithGlobalSection
2022-04-05Merge pull request #165540 from Infinisil/module-args-docsRobert Hensing2-4/+88
lib/modules: Document `_module.args`
2022-04-05Merge pull request #166383 from hercules-ci/always-sanitize-derivation-nameRobert Hensing2-1/+13
Always sanitize derivation name
2022-04-05lib.sanitizeDerivationName: Simplify regexRobert Hensing1-1/+1
`^` and `$` are implicit in `match`.
2022-04-05lib/modules: Document _module.argsSilvan Mosberger2-4/+88
Documents the _module.args option, motivated by many usages in Flakes, especially with the deprecation of extraArgs (https://github.com/NixOS/nixpkgs/commit/78ada833615d241ed76463aa5a024b614150eb4d) The documentation rendering for this option had to be handled a bit specially, since it's not declared in nixos/modules like all the other NixOS options. Co-Authored-By: pennae <github@quasiparticle.net> Co-Authored-By: Robert Hensing <robert@roberthensing.nl>
2022-04-01lib/customization: Improve callPackage error message for missing argsSilvan Mosberger1-2/+49
This uses the levenshtein distance to look through all possible arguments to find ones that are close to what was requested: error: Function in /home/infinisil/src/nixpkgs/pkgs/tools/text/ripgrep/default.nix called without required argument "fetchFromGithub", did you mean "fetchFromGitHub" or "fetchFromGitLab"? With https://github.com/NixOS/nix/pull/3468 (in current nixUnstable) the error message becomes even better, adding line location info
2022-04-01lib/tests: Add tests for levenshtein functionsSilvan Mosberger1-0/+152
2022-04-01lib/strings: Add levenshtein distance functionsSilvan Mosberger1-0/+127
Adds some functions related to string similarity: - lib.strings.commonPrefixLength - lib.strings.commonSuffixLength - lib.strings.levenshtein - lib.strings.levenshteinAtMost
2022-03-31lib.sanitizeDerivationName: Test with unicodeRobert Hensing1-0/+5
2022-03-31lib.sanitizeDerivationName: Optimize the common caseRobert Hensing1-1/+8
2022-03-29Merge master into haskell-updatesgithub-actions[bot]1-1/+1
2022-03-28Merge pull request #165956 from ncfavier/lib-warn-throwRobert Hensing1-1/+1
lib/trivial: actually expose warnIfNot and throwIf
2022-03-28Merge master into haskell-updatesgithub-actions[bot]1-0/+10
2022-03-27lib/trivial: actually expose warnIfNot and throwIfNaïm Favier1-1/+1
2022-03-27Merge pull request #165672 from yoctocell/patatt-initSandro1-0/+5
2022-03-27Merge pull request #165597 from ckiee/generaluser-initSandro1-0/+5
2022-03-26Merge remote-tracking branch 'origin/master' into haskell-updatessternenseemann3-38/+6
2022-03-25Merge pull request #164651 from Infinisil/remove-optionSetSilvan Mosberger3-38/+6
lib/modules: Finally remove deprecated types.optionSet