Commit graph

4488 commits

Author SHA1 Message Date
Ivan Trubach 4c6e132c7e lib/systems: use execline’s exec instead of runtimeShell 2024-07-30 12:23:31 +03:00
Johannes Kirschbauer aba0f17b5a
Doc: migrate lib.strings to commonmark 2024-07-27 14:39:31 +02:00
Sigmanificient 6dd44107ac treewide: remove unused lib (and other) arguments 2024-07-26 11:18:09 +02:00
Silvan Mosberger 60027e7836 lib.trimWith: Minor doc improvements 2024-07-26 01:16:49 +02:00
Silvan Mosberger 91a3ba9064
Merge pull request #315411 from MattSturgeon/trim
lib.strings: add `trim` and `trimWith`
2024-07-26 01:13:31 +02:00
Peder Bergebakken Sundt 99dec1f6b0 treewide: fix doc typos
Done with `fd \\\.md$ . --type f -x typos --write-changes`
2024-07-26 00:55:13 +02:00
Matt Sturgeon aad87c2aa8
lib.strings: add trim and trimWith
`strings.trim` returns a copy of the string with all leading and trailing
whitespace removed.

`strings.trimWith` does the same thing, but calling code can decide
whether to trim the start and/or end of the string.
2024-07-25 23:43:33 +01:00
Artturin 35e5943d69 lib.systems: throw if sdkVer or ndkVer are used for android.
Those attrs have been renamed and throwing is the best way to show it,
if we only warned then the user would only get an error like this `error: Unsupported sdk: 33`
from `pkgs/top-level/darwin-packages.nix`.

If someone wants to support multiple NixOS versions then they can simply
set both attrs. (`!args ? androidSdkVersion` is for that)
2024-07-25 23:49:18 +03:00
Silvan Mosberger 7c6692836e
Merge pull request #149990 from ShamrockLee/lib-spdx-license 2024-07-25 22:27:10 +02:00
Artturin 1144d46f95 treewide: Rename android sdkVer and ndkVer
`sdkVer` conflicts with the old `sdkVer`(now `darwinSdkVersion` but that still uses `sdkVer` if set) used by darwin

This shouldn't be an issue but due to `pkgs/development/interpreters/python/cpython/default.nix`
running `lib.filterAttrs (n: v: ! lib.isDerivation v && n != "passthruFun")` on it's inputs (2 of them are darwin only)
the `throw "Unsupported sdk...` in `pkgs/top-level/darwin-packages.nix` will be triggered.

After this change `pkgsCross.armv7a-android-prebuilt.python3.pythonOnBuildForHost` won't fail with
`error: Unsupported sdk: 33`

Issue was bisected to 3cb23cec23
2024-07-25 22:08:49 +03:00
Silvan Mosberger 473e469d5a
Merge pull request #328381 from tie/map-attrs-flatten 2024-07-24 13:32:34 +02:00
Ivan Trubach b9c51260d0 lib/deprecated: print deprecation warning for mapAttrsFlatten 2024-07-24 13:23:16 +03:00
Jörg Thalheim afe8fbf038
Merge pull request #328582 from rhelmot/freebsd-stdenv
FreeBSD stdenv: re-init
2024-07-24 06:43:35 +02:00
Someone 03b1a46b7d
Merge pull request #325384 from adisbladis/lib-licenses-factory-func
lib.licenses: refactor internal mkLicense to avoid future typo bugs
2024-07-24 04:26:37 +03:00
Robert Hensing db77328e33
Merge pull request #306481 from hercules-ci/lib-builtins-warn
lib.warn: Use or behave like builtins.warn
2024-07-23 13:41:03 +02:00
Robert Hensing bc556c5686 lib.warn: Update docs
- Bring up to date
- Give meaning to the metavariables
- Use italics for metavariables (just like the Nix manual)
- Don't abbreviate
  - No hard feelings, Val.
2024-07-23 12:48:01 +02:00
Someone Serge 98384afab5 lib: add getStatic 2024-07-21 11:38:04 +00:00
Someone Serge 76db6ba81a lib: reflect effective signatures of getOutput functions 2024-07-21 11:37:38 +00:00
Someone Serge 744305bce4 lib: add getOutput', a nix-lang counterpart of _overrideFirst 2024-07-21 11:29:23 +00:00
Audrey Dutcher 1e2071847d stdenv/freebsd: reinit
The old stdenv didn't work, and was also impure. The new one works, and
is pure. Presently, the bootstrap tools are cross compiled into one small
nar and one large tar, which is then unpacked, patched, and split into
smaller derivations. Efforts were made to make the boot process as short
as possible - there are only two clangs built, and as many packages are
propagated between stages as possible while leaving the bootstrap tools
out of the final stdenv's closure.
2024-07-19 21:32:05 -07:00
Ivan Trubach a13e0a12b7 lib/deprecated: alias mapAttrsFlatten to mapAttrsToList
These functions have identical implementation except for argument names.
2024-07-19 11:39:27 +03:00
Nikolay Korotkiy c35032a3c9
Merge pull request #323143 from tsandrini/init-mqtt-explorer
mqtt-explorer: init at 0.4.0-beta.6
2024-07-18 22:32:02 +04:00
tsandrini dd09495f64
lib/licenses: add cc-by-nd-40 2024-07-18 09:34:48 +02:00
Robert Hensing 7d4a9a5772 lib.warn: Remove color from the message itself
This aligns with Nix and makes it more readable.
The prefix still stands out.
2024-07-16 15:56:01 +02:00
Robert Hensing f621ab9204 lib.warn: Fix color
Co-authored-by: Aleksana <alexander.huang.y@gmail.com>
2024-07-16 15:54:12 +02:00
Janik c20399ea2e
Merge pull request #318712 from woojiq/lib-network-ipv6-parser
lib.network: add ipv6 parser
2024-07-11 20:57:53 +02:00
aviac e9bbad7386
lib/licenses: add radiance 2024-07-08 16:13:03 +02:00
Florian Klink 5d7f58fdd6
Merge pull request #324861 from Kranzes/crate2nix
lib.systems: Fix setting rust.platform.os for wasm32-unknown-unknown
2024-07-08 15:27:29 +03:00
adisbladis b85639c589 lib.licenses: refactor internal mkLicense to avoid future typo bugs
This is a follow-up to https://github.com/NixOS/nixpkgs/pull/325380 where @emilazy discovered that we have some typos in field names.

This refactoring wraps the implicit lib.licenses schema up in a factory function to ensure consistency.

While a more proper type checker like the one we use for meta checks would be better I didn't want to depend on that in more places.
In fact, we might want to make meta type checks more strict on the license field.
2024-07-08 17:37:52 +12:00
Emily 3cd5ecc1a9 lib/licenses: fix field names 2024-07-08 00:46:05 +01:00
Ilan Joselevich bf61b8c8fb
lib.systems: Fix setting rust.platform.os for wasm32-unknown-unknown
Previously we would fallback to using `kernel` as the `os` which would
result in using the wrong `os` value (`none`) when actually we want
`unknown`. This seems to be a special case for wasm32-unknown-unknown
and wasm64-unknown-unknown so I extended the if statement to support it.
2024-07-05 19:43:10 +03:00
Robert Hensing 4eb6883b86 lib/modules: Memoize remaining lookups into builtins
Similar to the previous commit about lookups into lib
Main benefits
- consistent
- faster
- shorter
2024-07-03 11:16:31 +02:00
Robert Hensing fed26baf1e lib: Expose typeOf, unsafeGetAttrPos
All builtins should be in mirrored in lib, for consistency, as well
as control to let the Nixpkgs pin effect *subtle* improvements in
behavior (such as the foldl' accumulator strictness).
2024-07-03 11:16:31 +02:00
Robert Hensing d0438fb00f lib/modules: Memoize remaining lookups into lib
Benefits:
 - some lookups happened in the hot path, and will now be slightly faster,
   with only a variable lookup and no attribute selection
 - it's now harder to accidentally use args.lib aka specialArgs.lib, which
   has happened
 - shorter
2024-07-03 11:16:31 +02:00
Robert Hensing 88a9a933c4 lib/modules: Memoize functionArgs lookup
This would also make specialArgs-lib.nix pass.
2024-07-03 11:16:31 +02:00
Robert Hensing 0a0e37c217 lib/modules: Memoize addErrorContext lookup 2024-07-03 11:16:31 +02:00
Robert Hensing 4a014ed92e lib/modules: Use fixed lib instead of args.lib
The practical use for this should be very limited because I don't
think anyone should change `lib`, let alone change `lib.functionArgs`,
but, but it would be even stranger to rely on `args.lib` (or really
`specialArgs.lib` for what's clearly a behavior of the current
`evalModules`, which uses its own ambient lib for basically everything.

The shadowing of `lib` by `args.lib` here seems to be a small mistake,
which is easy to make.
2024-07-03 11:16:31 +02:00
Philip Taron 6cf8ae9090
lib.types: remove __attrsFailEvaluation
The test (`nix-build pkgs/test/release/default.nix`) continues to pass without this preventative measure.
2024-07-01 10:37:58 -07:00
Jörg Thalheim 521dab2594
Merge pull request #323657 from wegank/23.11-unmaintained
23.11 is unmaintained
2024-07-01 12:55:28 +02:00
Weijia Wang f136ad9609 lib/trivial: update oldestSupportedRelease 2024-07-01 08:49:45 +02:00
Florian Klink 641b2f29b6
Merge pull request #319153 from Kranzes/buildRustCrate-wasm
buildRustCrate: add support for compiling to wasm32-unknown-unknown
2024-06-30 14:05:33 +03:00
Yueh-Shun Li 10d2e6c906 lib.getLicenseFromSpdxIdOr: init
Add lib.meta.getLicenseFromSpdxIdOr as a variant of
lib.meta.getLicenseFromSpdxId that explicitly state the default
(fallback) value if there's no license matching the given SPDX ID.
2024-06-30 02:59:58 +08:00
Yueh-Shun Li 319736f69f lib.getLicenseFromSpdxId: improve documentation 2024-06-30 02:41:54 +08:00
woojiq d559eed93a lib.network: ipv6 parser from string
Add a library function to parse and validate an IPv6 address from a
string. It can parse the first two versions of an IPv6 address according
to https://datatracker.ietf.org/doc/html/rfc4291#section-2.2. The third
form "xxx:x.d.d.d.d" is not yet implemented. Optionally parser can accept prefix length (128 is default).

Add shell script network.sh to test IPv6 parser functionality.
2024-06-29 10:02:00 +03:00
lucasew 52cc703bba lib: add fromHexString
Co-authored-by: lucasew <lucas59356@gmail.com>
2024-06-28 20:53:53 +03:00
Silvan Mosberger 9695ac6e2d
lib/cli: improve documentation, including arguments (#315820)
cli.nix: improve documentation, including arguments
2024-06-28 18:40:36 +02:00
éclairevoyant 77f6192786
lib: deprecate mkPackageOptionMD 2024-06-26 23:14:45 -04:00
Johannes Kirschbauer b4cffe178c
lib.meta: refactor to use doc-comments (#313589)
* doc: use doc-comments for lib.meta

* adds missing argument to setPrio
2024-06-26 22:12:18 +02:00
Silvan Mosberger dcb1f21389
Merge pull request #312412 from hsjobeki/doc/lib-gvariant
doc: migrate lib.gvariant to doc-comment format
2024-06-26 22:10:26 +02:00
Silvan Mosberger 54a93d0525
Merge pull request #312407 from hsjobeki/doc/lib-generators
doc: init lib.generators reference documentation
2024-06-26 22:09:05 +02:00
Johannes Kirschbauer b5af504a3d
doc: migrate lib.filesystem to doc-comment format (#312222)
* doc: migrate lib.filesystem to doc-comment format

* defintion list fixes lib/filesystem.nix

Co-authored-by: Daniel Sidhion <DanielSidhion@users.noreply.github.com>

---------

Co-authored-by: Daniel Sidhion <DanielSidhion@users.noreply.github.com>
2024-06-26 22:01:28 +02:00
Silvan Mosberger 298465b71c
Merge pull request #312217 from hsjobeki/doc/lib-derivations
doc: migrate lib.derivations to doc-comment format
2024-06-26 21:59:34 +02:00
Ilan Joselevich 957116419d
lib.systems.examples: add wasm32-unknown-none
This system was added to use the nixpkgs cross compilation logic when
compiling to wasm32-unknown-unknown in rust.
2024-06-24 19:27:13 +03:00
Artturin 2cfac74be5
Merge pull request #319139 from NyCodeGHG/android-ndks
android-ndks: add 25, 26 ndks, update default ndk and sdk
2024-06-23 20:39:28 +03:00
Aleksana d95005ae01
Merge pull request #318101 from getchoo/pkgs/gitbutler/init
gitbutler: init at 0.12.2
2024-06-22 18:37:58 +08:00
Silvan Mosberger 5d892a8ea5 lib: Add a TODO for builtins not available in sub-libraries 2024-06-20 22:48:55 +02:00
Silvan Mosberger 1e4f04d4d6 lib.replaceStrings: inherit from lib.strings 2024-06-20 22:48:54 +02:00
Silvan Mosberger d3c09b9327 lib.readFile: inherit from lib.trivial 2024-06-20 22:48:54 +02:00
Silvan Mosberger e3b0f46af9 lib.genericClosure: inherit from lib.trivial 2024-06-20 22:48:54 +02:00
Silvan Mosberger e3faf23ba6 lib.pathExists: inherit from lib.trivial 2024-06-20 22:48:54 +02:00
Silvan Mosberger 574611fe0b lib.getAttr: inherit from lib.attrsets 2024-06-20 22:48:53 +02:00
Silvan Mosberger 94a863973a lib.isString: inherit from lib.strings 2024-06-20 22:48:04 +02:00
Silvan Mosberger 6f7324c1f0 lib.isList: inherit from lib.lists 2024-06-20 22:48:04 +02:00
Silvan Mosberger fa82e813f1 lib.isInt: inherit from lib.trivial 2024-06-20 22:48:04 +02:00
Silvan Mosberger 5313a054d3 lib.isBool: inherit from lib.trivial 2024-06-20 22:48:04 +02:00
Silvan Mosberger 53744d55cd lib.isAttrs: inherit from lib.attrsets 2024-06-20 22:48:02 +02:00
Silvan Mosberger c3b87461e7 lib.hasAttr: inherit from lib.attrsets 2024-06-20 22:47:33 +02:00
Silvan Mosberger 4bcc1d3450 lib.elemAt: inherit from lib.lists 2024-06-20 22:47:01 +02:00
Silvan Mosberger 46b7bbb660 lib.elem: inherit from lib.lists 2024-06-20 22:47:01 +02:00
Silvan Mosberger f341dca2a2 lib.deepSeq: inherit from lib.trivial 2024-06-20 22:47:01 +02:00
Silvan Mosberger 8a6941dbef lib.sub: inherit from lib.trivial 2024-06-20 22:47:01 +02:00
Silvan Mosberger a32d38d380 lib.add: inherit from lib.trivial 2024-06-20 22:47:01 +02:00
Silvan Mosberger 74c87fd888 lib.lessThan: inherit from lib.trivial 2024-06-20 22:47:00 +02:00
Silvan Mosberger 64e8494f8a lib.seq: inherit from lib.trivial 2024-06-20 22:47:00 +02:00
Silvan Mosberger 597f62d782 lib.listToAttrs: inherit from lib.attrsets 2024-06-20 22:46:59 +02:00
Silvan Mosberger 00972297be lib.substring: inherit from lib.strings 2024-06-20 22:45:50 +02:00
Silvan Mosberger f6cbaeca60 lib.head: inherit from lib.lists 2024-06-20 22:45:50 +02:00
Silvan Mosberger 0a162f4dcd lib.tail: inherit from lib.lists 2024-06-20 22:45:50 +02:00
Silvan Mosberger 6e98b0c0c6 lib.stringLength: inherit from lib.strings 2024-06-20 22:45:50 +02:00
Silvan Mosberger 357e954198 lib.length: inherit from lib.lists 2024-06-20 22:45:50 +02:00
Silvan Mosberger d81f4e5eba lib.genList: inherit from lib.lists 2024-06-20 22:45:50 +02:00
Silvan Mosberger 30def45e47 lib.filter: inherit from lib.lists 2024-06-20 22:45:48 +02:00
Silvan Mosberger c60c3baf23 lib.attrNames: inherit from lib.attrsets 2024-06-20 21:06:21 +02:00
Silvan Mosberger 69f84db442 lib: inherit concatLists via lib.lists 2024-06-20 21:06:21 +02:00
Robert Hensing bdc03c2dd8
Merge pull request #321283 from tweag/lib-builtins
`lib`: Re-export expected builtins
2024-06-20 19:56:58 +02:00
Masum Reza 1bb6b44718
Merge pull request #313769 from yVieta/zsh-completion
zsh-completions: add licenses
2024-06-20 23:21:56 +05:30
Silvan Mosberger 89f6418908 lib.split: Export from lib.strings.split 2024-06-20 17:59:37 +02:00
Silvan Mosberger 6c6244c37f lib.match: Export from lib.strings.match 2024-06-20 17:59:37 +02:00
Silvan Mosberger 18382c2ec8 lib.removeAttrs: Export from lib.attrsets.removeAttrs 2024-06-20 17:59:36 +02:00
Silvan Mosberger 56535c832f lib.intersectAttrs: Export from builtins 2024-06-20 17:59:36 +02:00
Silvan Mosberger 4413a877bb lib.map: Export from lib.lists.map 2024-06-20 17:59:21 +02:00
Johannes Jöns 706ee44d61
Merge pull request #319302 from quantenzitrone/licenses
aspellDicts.*: add licensing information ; aspellDicts.en-science: point sources and homepage to archive.org
2024-06-19 21:16:23 +02:00
Nick Cao febff2fc72
Merge pull request #316724 from NickCao/riscv-builtin
lib.systems.riscv-multiplatform: linux-kernel config improvements
2024-06-18 17:05:13 -04:00
John Ericson bab20def47 lib.systems: Default useLLVM to true with OpenBSD too
Not just FreeBSD.
2024-06-18 13:23:58 -04:00
Tristan Ross ecf6827049
lib.systems.flakeExposed: exclude systems which are not bootstrapped 2024-06-17 16:34:55 -07:00
Marie Ramlow 56d1e7a41b lib.systems.examples: update default android sdk to 33, ndk to 26 2024-06-17 09:53:31 +02:00
Zitrone 78149c7739
aspellDicts.*: add licensing information 2024-06-16 07:02:07 +02:00
Ilan Joselevich 85d871cf14
Merge pull request #319624 from flokli/rust-config
config.rust: update references from rustc
2024-06-14 00:47:45 +03:00
Florian Klink 50261c0602 config.rust: update references from rustc
`rustc.config` is called `rust.rustcTarget` now, and
`{rustc -> rust}.platform`.

This is the new way (tm), and is preferred since
https://github.com/NixOS/nixpkgs/pull/271707 -
though the documentation still is outdated, and some expressions in
nixpkgs were using the old interface.

This updates both.
2024-06-13 21:08:48 +03:00
Jörg Thalheim b17538d34d
Merge pull request #318511 from sg-qwt/master
24.11 rename codeName to Vicuna
2024-06-13 13:04:22 +02:00
Silvan Mosberger a1bae893c4
Merge pull request #318102 from TheCodedProf/private/thecodedprof/documentation-examples
lib.trivial: add examples for importJSON and importTOML
2024-06-13 03:13:11 +02:00
Samuel Shuert cfc6c9b6e4 lib.trivial.importJSON: add example
Add parity with importTOML.
2024-06-13 03:12:03 +02:00
Samuel Shuert 64f0f7a448 lib.trivial.importTOML: add example
Friend came to me with misunderstanding of how this function works.
After discussion we came to the conclusion having an example would have
prevented this.
2024-06-13 03:11:56 +02:00
Tristan Ross 8bb66a4929
lib/tests/release.nix: fix pkgs.lib error by passing lib 2024-06-09 18:12:39 -07:00
無名氏 0ea93461ed 24.11 rename codeName to Vicuna 2024-06-09 19:31:01 +08:00
seth 8e981f2094
licenses: add FSL-1.1-MIT 2024-06-07 17:09:51 -04:00
Tristan Ross 013e398b0f
lib/tests/release.nix: make pure 2024-06-06 21:17:05 -07:00
Lorenz Leutgeb 4584ea0767 lib.warn: Say _evaluation_ warning, like builtins.warn 2024-06-06 01:15:38 +02:00
Nick Cao 50a6be5f8b
lib.systems.riscv-multiplatform: drop linux-kernel.extraConfig
SERIAL_OF_PLATFORM has been y in riscv defconfig since 2018

Reference: 33c57c0d3c
2024-06-02 15:33:13 -04:00
Nick Cao a9116cef2b
lib.systems.riscv-multiplatform: set linux-kernel.preferBuiltin
Like aarch64, riscv platforms require many drivers to be builtin to boot.
2024-06-02 15:31:18 -04:00
Rob Pilling 19a3000c32 cli.nix: improve documentation, including arguments 2024-05-30 08:15:32 +01:00
John Ericson 61c678f71e
Merge pull request #311836 from obsidiansystems/aa-openbsd-1
openbsd: init at 7.5
2024-05-29 13:42:32 -04:00
tomberek 757873b346
Merge pull request #311696 from Pandapip1/fix-statoolkit-license
licenses: Add NCBI-PD
2024-05-27 00:35:44 -04:00
Ali Abrar 888dee445d openbsd: init at 7.5 2024-05-26 10:55:56 -04:00
Silvan Mosberger 6c42e8745a
Merge pull request #309517 from bobrippling/fix/ebusd-args
Fix ebusd service argument passing
2024-05-24 23:25:28 +02:00
vieta 15718cc856 lib/license: add zsh license 2024-05-24 18:41:15 +02:00
vieta 29f4417730 lib/licenses: sort xskat 2024-05-24 18:39:51 +02:00
Daniel Sidhion 43e364791b
Merge pull request #312393 from hsjobeki/doc/lib-fixedpoints
doc: migrate lib.fixedPoints to doc-comment format
2024-05-23 00:03:19 -07:00
Weijia Wang 1c91e55a2d
Merge pull request #311902 from wamirez/nix-env-rm
doc: clarify consequences of `lib.meta.setName`
2024-05-22 19:15:22 +02:00
Weijia Wang 4a817d2083 24.05 is Vicuña 2024-05-22 18:15:34 +02:00
Rob Pilling 9c9c3848d4 cli.nix: permit separators between args -> -a=b, --xyz=abc, etc 2024-05-22 07:58:26 +01:00
Johannes Kirschbauer 793ed729f2
doc: add arguments for toKeyValue 2024-05-21 22:05:18 +02:00
Johannes Kirschbauer 8ee634f5a6
doc: init lib.generators reference documentation 2024-05-21 21:54:47 +02:00
Johannes Kirschbauer 7f38a9ce11
Apply suggestions from code review
Co-authored-by: Daniel Sidhion <DanielSidhion@users.noreply.github.com>
2024-05-21 09:54:54 +02:00
Daniel Sidhion f452bb946c
Merge pull request #312215 from hsjobeki/doc/lib-debug
doc: migrate lib.debug to doc-comment format
2024-05-20 23:20:36 -07:00
Johannes Kirschbauer 38cd8da809
doc: migrate filesets to doc-comment format (#303811)
* doc: migrate filesets to doc-comment format

* fix definition list indentation
2024-05-20 23:12:31 -07:00
Johannes Kirschbauer 450931d093
doc: migrate lib.gvariant to doc-comment format 2024-05-17 11:51:33 +02:00
Johannes Kirschbauer 064f4c55c0
doc: migrate lib.fixedPoints to doc-comment format 2024-05-17 10:13:13 +02:00
Johannes Kirschbauer 1a3afdf852
doc: migrate lib.derivations to doc-comment format 2024-05-16 16:08:57 +02:00
Johannes Kirschbauer dfffdf1426
doc: migrate lib.debug to doc-comment format 2024-05-16 15:52:50 +02:00
wamirez 7acc08c983 doc: clarify consequences of lib.meta.setName
And remove unnecessary mention of `nix-env`
2024-05-15 06:32:23 -04:00
Gavin John 361874c944
licenses: Add NCBI-PD 2024-05-14 11:38:21 -05:00
Pol Dellaiera e6952e37ef
Merge pull request #306928 from ramboman/fix-fetchers-proxy-vars
lib.fetchers: Add uppercase proxy environment variables
2024-05-14 10:27:11 +02:00
Artemis Tosini 06b05d2289 freebsd: Cleanup, get ready to support version 14
* Extend libc

  Include non-libc core libraries in the libc package. Many of these
  mirror libraries present in glibc on linux, such as libgcc, libraries
  used for iconv, and libraries used for reading kernel info (libkvm,
  libprocstat, libmemstat).

  Without this many packages outside the freebsd tree would need to be
  modified to include standard dependencies which would already be on
  the system for other packages.

* Mark FreeBSD as using LLVM

* Update default LLVM version FreeBSD

* Use patch monolith

  The patchesRoot system combined with the fact that each derivation
  will Request specific names of patches makes it very annoying to use
  other FreeBSD source trees with nixpkgs. This new system allows
  providing one Or more entire trees of patches whose contents will be
  dynamically Parsed and only the relevant patches will be applied for
  any one Derivation.

  With this commit, the following knobs are available for specifying the
  FreeBSD source:

  - overriding `freebsd.versionInfo`, for picking another official
    supported FreeBSD release.

  - overriding `freebsd.source` for specifying a specific unpatched
    FreeBSD source tree.

  - overriding `freebsd.patches`, for specifying the patches to apply.

Co-Authored-by: Audrey Dutcher <audrey@rhelmot.io>
Co-Authored-by: John Ericson <John.Ericson@Obsidian.Systems>
2024-05-11 21:52:07 -04:00
Jan Tojnar 29521b42cf lib/gvariant: Use more specific instructions for int and attrset 2024-05-02 23:19:08 +02:00
Jan Tojnar 96e6f1a418 lib/gvariant: Fix error message for unsupported primitives
Without this, passing an integer to a setting will fail with a confusing error:

    error: cannot coerce an integer to a string
2024-05-02 23:19:08 +02:00
matthewcroughan e841544d6c licenses: add ICU license 2024-05-02 15:34:02 +00:00
John Ericson c38dd73dec
Merge pull request #308032 from obsidiansystems/freebsd-no-suffix-version
treewide: freebsd13 -> freebsd
2024-05-01 10:03:12 -04:00
John Ericson 266cdd7d37 treewide: freebsd13 -> freebsd
Co-authored-by: Alyssa Ross <hi@alyssa.is>
2024-04-30 18:20:23 -04:00
Maximilian Bosch 2b4e18f3d4
nixVersions.unstable: build from master, re-init at 2.22.0.pre20240321_6fd2f42c
The idea behind that is to enable users and developers of
downstream tools such as home-manager to test Nix master for several
reasons:

* Nix is currently trying to have a `master` branch that's always
  releasable[1]. We're still on Nix 2.18 in nixpkgs due to too many
  notable regressions. Enabling people to test latest master may help on
  that end.

* This uses the most bleeding-edge Nix, but our packaging, so we can
  identify issues with our packaging early.

* From what I've seen, most people are using the packages from nixpkgs
  anyways instead of the upstream flake, this is far more convenient
  anyways.

My plan is to update this once a week. Right now we rely on the
`installCheckPhase` here, but as soon as we have proper regression
testing[2], we may want to add `nixUnstable` there as well (however with
failures being allowed probably).

[1] https://discourse.nixos.org/t/nix-release-schedule-and-roadmap/14204
[2] https://github.com/NixOS/nixpkgs/pull/304332
2024-04-28 21:59:04 +02:00
Dee Anzorge 54f771421f lib/licenses: add unicode-30 2024-04-28 11:31:24 +02:00
ramboman 3ce1079753 lib.fetchers: Add uppercase proxy environment variables
The [Nix installer](84e0c464f1/scripts/install-systemd-multi-user.sh (L38)) and the [documentation](84e0c464f1/doc/manual/src/installation/env-variables.md (L54-L56)) state that they support uppercase proxy environment variables. [lib/fetchers.nix](165090ed66/lib/fetchers.nix (L10)) only supports lowercase proxy environment variables.

Fix: [nix#10491](https://github.com/NixOS/nix/issues/10491)
2024-04-26 14:30:55 -04:00
Jared Baur 6421226aa5 lib/systems: add microblaze-embedded
Adds a new target for `pkgsCross` that can be used for building
freestanding code for microblaze targets (e.g. Xilinx PMU firmware).
2024-04-24 19:45:58 -07:00
Robert Hensing f7250f372a lib.warn: Use or behave like builtins.warn 2024-04-24 11:14:47 +02:00
Silvan Mosberger 24af4c04ee
Merge pull request #214021 from tweag/ifilter0
lib.lists.ifilter0: init
2024-04-22 22:18:34 +02:00
Silvan Mosberger 6861ef7707 lib.lists.ifilter0: init 2024-04-22 18:33:14 +02:00
Robert Hensing 33e02424d2 lib: Document status of deprecated.nix and move it
This is all I could find after co-maintaining lib for a long time.
I've had the fortune of basically not really noticing this file,
because it has had very few interactions until the confusion in
https://github.com/NixOS/nixpkgs/pull/304277

It seems to be a state of limbo, which would be nice to resolve
(with great care), but this is not urgent, and first we should
document its status.
2024-04-21 16:04:35 +02:00
github-actions[bot] 11b87cbe59
Merge master into staging-next 2024-04-19 12:01:13 +00:00
Rick van Schijndel e00a40a257
Merge pull request #298680 from gvolpe/lib/transposeMap
lib/attrsets: add mapCartesianProduct function
2024-04-19 08:26:09 +02:00
github-actions[bot] feedc73bee
Merge master into staging-next 2024-04-16 18:00:57 +00:00
éclairevoyant a2a0316319
lib: clarify warning about mdDoc 2024-04-15 14:16:33 -04:00
éclairevoyant bb4e822d1f
lib: add mdDoc back in to provide proper warning 2024-04-15 14:16:31 -04:00
Gabriel Volpe 7b687a59cd
lib/tests: apply lints 2024-04-15 19:18:41 +02:00
Gabriel Volpe d864c36d57
tree-wide: use mapCartesianProduct 2024-04-15 19:17:53 +02:00
Gabriel Volpe fe2bead78b
lib/attrsets: introduce mapCartesianProduct 2024-04-15 19:16:15 +02:00
Gabriel Volpe 10517cf9ab
tree-wide: use cartesianProduct 2024-04-15 19:13:22 +02:00
Gabriel Volpe 228621e42d
lib/attrsets: rename cartesianProductOfSets to cartesianProduct 2024-04-15 19:03:54 +02:00
Weijia Wang f3a1652b09 Merge branch 'master' into staging-next 2024-04-13 19:10:53 +02:00
stuebinm c0c2f2903f lib.mdDoc: remove and replace with warning 2024-04-13 10:07:35 -07:00
stuebinm 46456a929b lib: remove all uses of lib.mdDoc
this change is otherwise a no-op, as lib.mdDoc is already defined to be
the identity function.
2024-04-13 10:07:35 -07:00
Vladimír Čunát 24d4f2cd52
Merge branch 'staging' into staging-next
Conflicts (tried to quickly resolve somehow, checked eval):
	pkgs/development/python-modules/apsw/default.nix
	pkgs/development/python-modules/mido/default.nix
	pkgs/development/python-modules/pytest-bdd/default.nix
	pkgs/development/python-modules/sparse/default.nix
2024-04-12 07:06:54 +02:00
Silvan Mosberger 4f1d724b82
Merge pull request #284551 from hercules-ci/types-attrTag
Add `types.attrTag`
2024-04-09 20:48:44 +02:00
Weijia Wang 3f59355d84 Merge branch 'staging-next' into staging 2024-04-09 08:26:23 +02:00
iliana etaoin e42705c982 licenses: rename apsl{10,20} -> apple-psl{10,20}
Part 1 of #301908.

This renames the two versions of the Apple Public Source License seen in
nixpkgs; `apsl20` was often confused as being for the widely-used Apache
License 2.0.
2024-04-08 20:39:37 +02:00
Tharun Thennarasu 5bcb08ea03
lib.hasAttrByPath: fix typo (#302042) 2024-04-06 11:24:44 +02:00
annalee 6df4f7b89b
Merge remote-tracking branch 'upstream/staging-next' into staging
Conflicts:
	pkgs/development/python-modules/pynetdicom/default.nix
2024-04-05 00:09:07 +00:00
Silvan Mosberger a448a21521
Merge pull request #301556 from edef1c/lib-xor
lib: add xor
2024-04-04 22:03:53 +02:00
edef 725bb4e48c lib: add xor
This gets clumsily reimplemented in various places, to no useful end.
2024-04-04 19:46:58 +00:00
github-actions[bot] f6827a0d19
Merge staging-next into staging 2024-04-04 18:01:53 +00:00
Johannes Kirschbauer c0f5f271d1
doc: migrate trivial files to doc-comment format (#299986)
* doc: migrate trivial files to doc-comment format

* fix: revert some comments

* Apply suggestions from code review

Thanks @danielSidhion

Co-authored-by: Daniel Sidhion <DanielSidhion@users.noreply.github.com>

* Update lib/types.nix

---------

Co-authored-by: Daniel Sidhion <DanielSidhion@users.noreply.github.com>
Co-authored-by: Silvan Mosberger <github@infinisil.com>
2024-04-04 16:36:07 +02:00
Robert Hensing 35fe538330
types.attrTag: Remove unnecessary definitions override
Committing because tests pass.

Co-authored-by: Silvan Mosberger <github@infinisil.com>
2024-04-04 13:00:19 +02:00
Robert Hensing 22d7f146a4 lib.types.attrTag: Fix declarationPositions after merge 2024-04-04 12:56:56 +02:00
Robert Hensing cf4968a904 lib/tests/modules/types-attrTag.nix: Test other option doc attrs 2024-04-04 12:22:08 +02:00
Robert Hensing 74831d8b38 lib/tests/modules/types-attrTag.nix: Clean up unneeded comment 2024-04-04 12:00:55 +02:00
Robert Hensing 2d791b5f7b types.attrTag: Remove substSubmodules
I haven't managed to trigger the error, and it turns out that this
method is optional.
Specifically, getSubmodules is unimplemented (and unimplementable),
the tests pass, and we seem to have good location info.
2024-04-04 12:00:54 +02:00
Robert Hensing 47e4a18d01 types.attrTagWith: remove
Keep it simple for now.
2024-04-04 12:00:54 +02:00
Robert Hensing 1465777b63 lib.types.attrTag: Custom error when passing bare type 2024-04-04 11:54:46 +02:00
Robert Hensing bcd774606a lib/tests/modules/types-attrTag: Test against unexpected attrs
Thank you lheckemann for pointing this out!
2024-04-04 11:54:46 +02:00
Robert Hensing 475a55b2f0 lib.types.attrTag: Remove tags from description
You can find them in the sub-options now.
2024-04-04 11:54:46 +02:00
Robert Hensing 2e1d470569 lib.modules.evalOptionValue: Undeprecate for lib.types
lib.types.attrTag needs it.
2024-04-04 11:54:46 +02:00
Robert Hensing 4c7d990bad lib.types.attrTag: Provide declarations, definitions 2024-04-04 11:54:45 +02:00
Robert Hensing e090bb55f0 lib/types.nix: Fix getSubOptions doc
This comment was added in 73f32d0375, when it was already
supposed to be an attrset.
2024-04-04 11:54:45 +02:00
Robert Hensing 0bc9783221 lib.types.attrTag: Support type merging 2024-04-04 11:54:45 +02:00
Robert Hensing 42d3b54f0d lib.types.attrTag: Take options instead of types 2024-04-04 11:54:45 +02:00
Robert Hensing 5b49672af4 lib.types.attrTag: Support module docs 2024-04-04 11:54:41 +02:00
Philip Taron 4b2e46dd39
lib.fileset: fix typo: compatibity to compatibility 2024-04-02 14:46:59 -07:00
Florian Richer 3b883d3cdf
lib/strings: Add makeIncludePath (#296237)
* Update strings.nix

* Fix typo in docs

* Update lib/strings.nix

Co-authored-by: lolbinarycat <dogedoge61+github@gmail.com>

* Update lib/strings.nix

Co-authored-by: lolbinarycat <dogedoge61+github@gmail.com>

* Add unit test with strings

* Move test to strings

* Add unit test with package structure

* testMakeIncludePathWithPkgs: use real pkgs

* Revert "testMakeIncludePathWithPkgs: use real pkgs"

This reverts commit fb1850c069.

* Update lib/tests/misc.nix

Co-authored-by: lolbinarycat <dogedoge61+github@gmail.com>

* Update lib/tests/misc.nix

Co-authored-by: Silvan Mosberger <github@infinisil.com>

---------

Co-authored-by: lolbinarycat <dogedoge61+github@gmail.com>
Co-authored-by: Silvan Mosberger <github@infinisil.com>
2024-04-02 19:01:05 +02:00
Sandro c2328cf5d0
Merge pull request #297266 from ByteSudoer/init-vidmerger
vidmerger: init at 0.3.2
2024-03-25 20:58:14 +01:00
Silvan Mosberger b803ba5a48
Merge pull request #295374 from philiptaron/issue-208242/lib.systems
lib: use explicit name imports in `lib/systems`
2024-03-25 18:41:46 +01:00
Daniel Sidhion 85a4ee7da6
Merge pull request #297993 from hsjobeki/doc/customisation
doc: migrate lib.customisation to use doc-comments
2024-03-24 15:04:13 -07:00
Daniel Sidhion 2a3616e0e0
Merge pull request #297990 from hsjobeki/doc/cli
doc: migrate lib.cli to use doc-comments
2024-03-23 21:57:21 -07:00
Artturi 2590d7a1b3
Merge pull request #295196 from tpwrules/qemu-less-libs
lib/systems: remove more features from qemu-user
2024-03-23 21:45:44 +02:00
Johannes Kirschbauer 3dfd61965e
doc: migrate lib.customisation to use doc-comments 2024-03-22 10:02:09 +01:00
Johannes Kirschbauer 6bcb2b90ed
doc: migrate lib.cli to use doc-comments 2024-03-22 09:54:17 +01:00
Jussi Kuokkanen 82b45bf454 treewide: remove licenses.agpl3 2024-03-21 18:09:24 +02:00
Soussi Mohamed Nour 89ea04dc70
Update licenses.nix 2024-03-21 14:54:21 +01:00
ByteSudoer eedaca8ef1 update license: added the common clause license 2024-03-21 14:49:16 +01:00
ByteSudoer ebdf6a1d1e lib.licenses: added The commons clause license 2024-03-21 02:41:09 +01:00
jopejoe1 58e1eb3b78 lib/license: add hpndUc 2024-03-20 20:49:33 +01:00
jopejoe1 3f16499c48 lib/license: add giftware 2024-03-20 20:48:45 +01:00
jopejoe1 2bd2347470 lib/license: add NIST-Software 2024-03-20 20:48:44 +01:00
Johannes Kirschbauer 956fff0825
doc: migrate lib.trivial to use doc-comments (#297270)
* doc: migrate lib.trivial to use doc-comments

* Apply suggestions from code review

---------

Co-authored-by: Daniel Sidhion <DanielSidhion@users.noreply.github.com>
2024-03-19 19:04:14 -07:00
Daniel Sidhion a737a78167
Merge pull request #296186 from hsjobeki/doc/attrsets
doc: migrate lib.attrsets to use doc-comments
2024-03-19 19:03:57 -07:00
Daniel Sidhion d784fc138d Apply suggestions from code review 2024-03-19 18:03:31 -07:00
Philip Taron 79ce46fe49
Avoid top-level with ...; in lib/systems/parse.nix 2024-03-19 16:16:44 -07:00
Philip Taron c02fcc946a
Avoid top-level with ...; in lib/systems/inspect.nix 2024-03-19 16:16:44 -07:00
Philip Taron 07d3270dbc
lib/systems: inherit from lib.systems.inspect.predicates in lib/systems/parse.nix 2024-03-19 16:09:37 -07:00
Philip Taron af634f14ba
lib/systems: inherit from lib.systems.parse in lib/systems/inspect.nix 2024-03-19 16:09:37 -07:00
Philip Taron 123a2f0fcc
lib/systems: use lib.systems.parse and lib.systems.inspect.predicates instead of re-importing 2024-03-19 16:09:37 -07:00
Philip Taron 5988f8f841
lib.systems: use explicit attrset instead of rec
This allows refactoring in the file without accidentally modifying the
public interface of the file.

Also, pull in symbols consistently from `lib` instead of `builtins`.
2024-03-19 16:09:37 -07:00
Johannes Kirschbauer 56b5634a90
doc: manual fixup after migration 2024-03-19 22:01:38 +01:00
Silvan Mosberger c9772eaba0
Merge pull request #293901 from philiptaron/refactor-lib/generators.nix
lib: use explicit name imports in `lib/generators.nix`
2024-03-18 19:41:47 +01:00
Silvan Mosberger 3b988c076b
Merge pull request #295158 from philiptaron/remove-top-level-with-in-lib-part5
Avoid top-level `with` in `lib/tests/misc.nix`
2024-03-18 19:38:19 +01:00
Johannes Kirschbauer c8885b86b2
lib.foldl': document eta expansion 2024-03-16 22:58:14 +01:00
Philip Taron a7b4ee2dbe
lib: use names from lib in lib/generators.nix, rather than builtins or submodules of lib
There's not a lot of rhyme to which names are exported from which module,
as I see it, but everything is found somewhere.
2024-03-16 11:19:38 -07:00
Johannes Kirschbauer 9beef9f1ba
lib.foldl': avoid unnecessary function call 2024-03-15 23:42:48 +01:00
Johannes Kirschbauer f917ed536b
doc: migrate lib.attrsets to use doc-comments 2024-03-15 17:18:35 +01:00
Philip Taron 8422fe83b9
lib/generators: use the explicit public interface pattern
This enables further refactoring without accidentally changing the public interface.
2024-03-14 13:15:45 -07:00
Philip Taron 3a01525ae7
lib/generators: explicitly import names from lib.trivial
Everything else was already imported.
2024-03-14 13:15:44 -07:00
Philip Taron b83b8a3548
lib/generators: explicitly import names from lib.attrsets
Everything used was already imported.
2024-03-14 13:15:44 -07:00
Philip Taron 9513152413
lib/generators: explicitly import names from lib.string
A couple of these were imports from `builtins`.
2024-03-14 13:15:44 -07:00
Philip Taron a89d2ed83d
lib/generators: explicitly import names from lib
I followed the `inherit` chains in `lib/default.nix` to arrive at these imports.
2024-03-14 13:15:44 -07:00
Philip Taron 8041b9b2b3
lib/generators: builtins.isFloat is in Nix 2.3
There's a couple of aliases in play:

1. `lib.isList` is an alias for `builtins.isList`.
2. `lib.strings.concatStringsSep` is an alias for `builtins.concatStringsSep`
2024-03-14 13:15:44 -07:00
Silvan Mosberger 30f30db08d
Merge pull request #294906 from philiptaron/remove-top-level-with-in-lib-part2
lib: use explicit name imports in `lib/deprecated.nix`
2024-03-14 20:54:07 +01:00
Silvan Mosberger a32800fdf3
Merge pull request #295007 from philiptaron/remove-top-level-with-in-lib-part3
lib: avoid top-level `with ...;` in lib/kernel.nix
2024-03-14 20:32:33 +01:00
Johannes Kirschbauer fe9e7d313a
doc: lib.lists migrate to doc-comments (#294257)
* doc: lib.lists migrate to doc-comments

* Fix extra indentation of docs lines, remove redundant comments, add inputs docs

* fix: indentation & argument references

---------

Co-authored-by: DS <commits@sidhion.com>
2024-03-13 05:53:42 -07:00
Thomas Watson 91ad438400 lib/systems: remove more features from qemu-user
alsaSupport/jackSupport: unnecessary multimedia systems

tpmSupport/capstoneSupport: unlikely to come up as an exe emulator
2024-03-11 20:16:04 -05:00
Philip Taron c8a8550c28
Avoid top-level with in lib/tests/misc.nix 2024-03-11 16:30:31 -07:00
Philip Taron 1f120c454a
Avoid top-level with ...; in lib/kernel.nix 2024-03-11 11:24:17 -07:00
Philip Taron 20abffc0dd
Avoid top-level with ...; in lib/tests/modules/extendModules-168767-imports.nix 2024-03-11 08:38:37 -07:00
Philip Taron 0426125c53
Avoid top-level with ...; in lib/tests/modules/alias-with-priority.nix 2024-03-11 08:38:14 -07:00
Philip Taron dd46445adc
Avoid top-level with ...; in lib/tests/modules/alias-with-priority-can-override.nix 2024-03-11 08:37:31 -07:00
Philip Taron 6e2205c3eb
lib: use explicit name imports in lib/deprecated.nix 2024-03-10 20:54:56 -07:00
Valentin Gagarin 41298a0dff
doc: actually document lib.customisation.makeScope (#294194)
* doc: actually document `lib.customisation.makeScope`
2024-03-09 19:29:13 +01:00
Johannes Kirschbauer 00f00e0663
doc: lib.asserts migrate to doc-comments (#292310) 2024-03-07 14:04:50 +01:00
Jörg Thalheim 39ac57b7c5
Merge branch 'master' into license-updates 2024-03-06 20:26:06 +01:00
Silvan Mosberger 727958ee36
Merge pull request #292945 from adisbladis/lib-toint
lib.toInt/toIntBase10: Make more efficient by hoisting up internal strings into higher scope
2024-03-06 19:42:52 +01:00
Silvan Mosberger 012faf046f
Merge pull request #292941 from adisbladis/lib-getattrfrompath-env
lib.getAttrFromPath: Don't use errorMessage variable
2024-03-06 19:41:34 +01:00
Silvan Mosberger 2dc95cded0
Merge pull request #292938 from adisbladis/mapattrsrecursivecond-env
lib.mapAttrsRecursiveCond: Eliminate intermediate one intermediate variable environment
2024-03-06 19:40:52 +01:00
Silvan Mosberger b180a6af30
Merge pull request #292937 from adisbladis/zipattrs-env
lib.zipAttrs: Remove needless function wrapping
2024-03-06 19:39:48 +01:00
Silvan Mosberger 0d49917ded
Merge pull request #292934 from adisbladis/lib-choosedevoutput
lib.chooseDevOutputs: Remove needless function wrapping
2024-03-06 19:39:30 +01:00
Silvan Mosberger fc3cc21d2a
Merge pull request #292209 from hercules-ci/lazyDerivation-multi-output
lib.lazyDerivation: Support multi-output derivations
2024-03-06 17:14:33 +01:00
Valentin Gagarin 73c0b48dd6
doc: add details on mapAttrsRecursive[Cond] (#293509)
* doc: add details on `mapAttrsRecursive[Cond]`

from first reading it wasn't clear that `f` also takes the current
attribute path. also the value f receives is tricky due to how the
condition is evaluated.

Co-authored-by: Daniel Sidhion <DanielSidhion@users.noreply.github.com>
2024-03-06 10:21:23 +01:00
Artturi 961ddd92a1
Merge pull request #177977 from thefloweringash/call-packages-with-function-args
lib/customization: propagate function arguments in callPackagesWith
2024-03-03 21:07:56 +02:00
Robert Hensing 39327e4cf2
Merge pull request #288812 from hercules-ci/lib-flake-version
`lib/` flake: fix `lib.version`
2024-03-03 18:19:00 +01:00
adisbladis b3cc51a20f lib.toInt/toIntBase10: Make more efficient by hoisting up internal strings into higher scope 2024-03-03 16:52:31 +13:00
adisbladis 948e5b841d lib.getAttrFromPath: Don't use errorMessage variable
We can just pass the error message on without creating an environment.
2024-03-03 16:30:00 +13:00
adisbladis 34fefe4e16 lib.mapAttrsRecursiveCond: Eliminate intermediate one intermediate variable environment 2024-03-03 16:18:38 +13:00
adisbladis 4338bfde09 lib.zipAttrs: Remove needless function wrapping
Returning the partially applied `zipAttrsWith fn` is the same as `sets: zipAttrsWith fn sets`.
2024-03-03 16:17:49 +13:00
adisbladis 3ee9d185f3 lib.chooseDevOutputs: Remove needless function wrapping
Returning the partially applied `map getDev` is the same as `drvs: map getDev drvs`.
2024-03-03 16:03:01 +13:00
Silvan Mosberger 28256b81a1
Merge pull request #292340 from DanielSidhion/fix-fixed-points-doc
lib.fixedPoints: fix rendering of docs for `extends`
2024-02-29 16:07:03 +01:00
DS baae71c821 lib.fixedPoints: fix rendering of docs for extends 2024-02-29 06:22:00 -08:00
Robert Hensing 612dcbe11e lib.lazyDerivation: Support multi-output derivations 2024-02-29 12:37:52 +01:00
Silvan Mosberger d0f7816d14
Merge pull request #287369 from tweag/lib-remove-polyfills
`lib`: Remove unneeded polyfills
2024-02-28 22:56:19 +01:00
Andrew Childs 741377b300 lib/customization: propagate function arguments in callPackagesWith
makeOverridable is very careful to ensure the arguments to the
overridden function are the same as the input function. As a result,
the arguments of hello.override are exactly the same as the original
arguments of the hello function that produced the derivation.

However, callPackagesWith calls makeOverridable with a lambda that
does not propagate the arguments. The override function for a package
instantiated with callPackagesWith will not have the original
arguments.

For example:

    nix-repl> lib.functionArgs hello.override
    { callPackage = false; fetchurl = false; hello = false; lib = false; nixos = false; stdenv = false; testers = false; }

    nix-repl> lib.functionArgs openssl.override
    { }

By copying the arguments onto the inner lambda before passing it to
makeOverridable, we can make callPackage and callPackages behave the
same.

    nix-repl> lib.functionArgs openssl.override
    { buildPackages = false; coreutils = false; cryptodev = false; enableSSL2 = true; enableSSL3 = true; fetchurl = false; lib = false; perl = false; removeReferencesTo = false; static = true; stdenv = false; withCryptodev = true; withPerl = true; }
2024-02-28 15:29:08 +02:00
Robert Hensing 01973b05aa
Merge pull request #291933 from tweag/fileset-tests-posix
lib.fileset: Fix tests on Darwin, more POSIX
2024-02-28 01:57:33 +01:00
Silvan Mosberger 3429594114 lib.fileset: Fix tests on Darwin, more POSIX
This was found when trying to run the fileset tests on Darwin
(https://github.com/NixOS/nix/pull/9546#issuecomment-1967409445), which mysteriously fail on Darwin:

  test case at lib/fileset/tests.sh:342 failed: toSource { root = "/nix/store/foobar"; fileset = ./.; } should have errored with this regex pattern:

  lib.fileset.toSource: `root` \(/nix/store/foobar\) is a string-like value, but it should be a path instead.
  \s*Paths in strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.

  but this was the actual error:

  error: lib.fileset.toSource: `root` (/nix/store/foobar) is a string-like value, but it should be a path instead.
      Paths in strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.

After dissecting this, I find out that apparently \s works on Linux, but not on Darwin for some reason!

From the bash source code, it looks like <regex.h> with `REG_EXTENDED` is used for all platforms the same,
so there's nothing odd there.

It's almost impossible to know where <regex.h> comes from,
but it looks to be a POSIX thing.

So after digging through the almost impossible to find POSIX specifications
(https://pubs.opengroup.org/onlinepubs/007908799/xbd/re.html#tag_007_003_005),
I can indeed confirm that there's no mention of \s or the like!

_However_, there is a mention of `[[:blank:]]`, so we'll use that instead.
2024-02-27 23:26:40 +01:00
Ryan Mulligan 78d6e84385
Merge pull request #291909 from cdmistman/lib-meta-available-on-doc-example
lib.meta.availableOn: add example in documentation
2024-02-27 12:44:37 -08:00
Colton Donnelly e1e3ca54eb lib.meta.platformMatch: expand documentation 2024-02-27 14:51:33 -05:00
Colton Donnelly 3698be4ee6 lib.meta.availableOn: add example in documentation 2024-02-27 14:44:38 -05:00
Robert Hensing bb036f2486 lib/tests/release: Test lib.version in isolation 2024-02-26 22:35:14 +01:00
Robert Hensing f45844cb55 .version: Make lib/.version source of truth
This way we don't have to make sure they're in sync, and we remove
a small step from the release process.
2024-02-26 22:34:10 +01:00
Robert Hensing 17117cf565 lib flake: Fix version
Manually tested with

nix-repl> :lf path:lib
nix-repl> lib.version
2024-02-26 22:32:58 +01:00
Silvan Mosberger 4d11de3e80
Merge pull request #288677 from tweag/fileset.toList
lib.fileset.toList: init
2024-02-26 21:28:26 +01:00
Silvan Mosberger c1cebaeb16
Merge pull request #291583 from SuperSandro2000/mergeAttrsList
lib: export attrsets.mergeAttrsList
2024-02-26 21:00:25 +01:00
Silvan Mosberger e3a6e38033 lib.fileset.toList: init 2024-02-26 20:21:50 +01:00
Sandro e426a8f097
lib: export attrsets.mergeAttrsList 2024-02-26 15:49:25 +01:00
Robert Hensing 475ee3a18e lib/tests/test-with-nix.nix: init
See https://github.com/NixOS/nix/pull/9900
2024-02-23 11:07:08 +01:00
Valentin Gagarin b4cdc15163
Merge pull request #286544 from hercules-ci/doRename-doc
lib.modules.doRename: Add doc comments
2024-02-22 16:05:10 +01:00
Benoit de Chezelles eba79c6df4
lib.evalModules: Fix deprecation doc for args parameter 2024-02-18 21:33:31 +01:00
Robert Hensing fe36252019 lib.modules.doRename: Add doc comments
I don't think these are rendered yet, but this at least provides
the content.

Follow-up to https://github.com/NixOS/nixpkgs/pull/285612
2024-02-14 17:30:51 +01:00
Robert Hensing ca81a89839 lib.types.attrTag: init 2024-02-11 18:44:52 +01:00
h7x4 8d165ba903
licenses: add mplus 2024-02-10 16:05:30 +01:00
Silvan Mosberger f37ba19765
Merge pull request #284512 from hercules-ci/lib-types-unique-merge
lib.types.unique: Check inner type deeply
2024-02-10 02:52:45 +01:00
Ryan Lahfa dbd22195df
Merge pull request #287124 from RaitoBezarius/is-sparc-64
lib/systems/inspect: add `isSparc64`
2024-02-09 15:07:01 +01:00
Silvan Mosberger 886e85f4f4 lib.versions: Remove unneeded polyfill
Nix 2.3 (the minimum version needed to evaluate Nixpkgs) supports these, so no need to keep them around.
2024-02-09 05:46:05 +01:00
Silvan Mosberger f2c837700d lib.strings: Remove unneeded polyfill
Nix 2.3 (the minimum version needed to evaluate Nixpkgs) supports these, so no need to keep them around.
2024-02-09 05:46:05 +01:00
Silvan Mosberger 46fd25dda9 lib.lists: Remove unneeded polyfills
Nix 2.3 (the minimum version needed to evaluate Nixpkgs) supports these, so no need to keep them around.
2024-02-09 05:46:05 +01:00
Silvan Mosberger 31d23ba418 lib.attrsets: Remove unneeded polyfills
Nix 2.3 (the minimum version needed to evaluate Nixpkgs) supports these, so no need to keep them around.
2024-02-09 05:46:03 +01:00
Silvan Mosberger 27488b861c lib.trivial: Remove unneeded polyfills
Nix 2.3 (the minimum version needed to evaluate Nixpkgs) supports these, so no need to keep them around.
2024-02-09 05:45:31 +01:00
Silvan Mosberger 63373eba60
Merge pull request #286117 from alois31/lib-deprecations
lib: make deprecation warnings consistent
2024-02-09 05:03:43 +01:00
Raito Bezarius b62bc38ac9 lib/systems/inspect: add isSparc64
This is useful to distinguish between SPARC64 and SPARC whatever,
because SPARC64 do support compressed kernels.
2024-02-08 05:07:39 +01:00
Robert Hensing 5d7125e01e
Merge pull request #285612 from hercules-ci/doRename-condition
lib.modules.doRename: Add condition parameter
2024-02-05 19:24:36 +01:00
Silvan Mosberger 27dbf77d62
Merge pull request #285353 from sternenseemann/nix-2.3-syntax
treewide: fix parse errors with Nix 2.3 and related problems
2024-02-05 17:44:28 +01:00
Robert Hensing 542f5d4f4d lib.option.mergeUniqueOption: Simplify and add warning about merge function
The previous code was optimized for the old uniq behavior, which did not
call merge. That's changed, so the legacy path is not a hot path anymore,
and is not worth any tech debt.
2024-02-04 16:02:13 +01:00
Robert Hensing bd285d2c11 lib.types.uniq: Check inner type
We now reuse the `unique` type, which implements this.
Keeping the duplication around would be bad at this point.
2024-02-04 15:49:55 +01:00
Alois Wohlschlager d33127863e
lib: make deprecation warnings consistent
The deprecation warnings in lib were wildly inconsistent. Different
formulations were used in different places for the same meaning. Some warnings
used builtins.trace instead of lib.warn, which prevents silencing; one even
only had a comment instead. Make everything more uniform.
2024-02-03 19:01:39 +01:00
Shea Levy 43ec00acab
Merge branch 'optionalDrvAttr' 2024-02-02 16:30:17 -05:00
Shea Levy ca1262a483
lib: Add optionalDrvAttr to conditionally set drv attributes.
This allows for adding new, conditionally set, derivation attributes
to an existing derivation without changing any output paths in the
case where the condition is not met.
2024-02-02 16:27:30 -05:00
Robert Hensing 29c7665003 lib.modules.doRename: Add condition parameter
This is to support single-to-multi service migrations, so that the
`to` (e.g. `foos.""`) isn't defined unconditionally. See test cases.
2024-02-02 07:31:16 +01:00
Silvan Mosberger 55ae7c58f3
Merge pull request #285301 from ibbem/gitTracked-shallow
lib.fileset.gitTracked: Allow clones of shallow repositories
2024-02-02 03:30:20 +01:00
ibbem 6558e89177 lib.fileset.gitTracked: Allow clones of shallow repositories
The only reason shallow clones are not the default in
`builtins.fetchGit` is that `revCount` can't be provided when cloning a
shallow repository. However, `revCount` isn't used or exposed by
`lib.fileset`. Hence, allowing cloning shallow repositories makes
`gitTracked` more general without any drawbacks.

Co-authored-by: Silvan Mosberger <github@infinisil.com>
2024-02-01 00:01:26 +01:00
sternenseemann 84a4712bcb lib/tests/packages-from-directory: make sure all .nix files parse
It is useful that all (or almost all) .nix files in nixpkgs at least
parse since it allows for checking syntax in the repository
programmatically without evaluating anything.
2024-01-31 20:30:17 +01:00
Robert Hensing 33e2ec81c7
Merge pull request #284829 from deemp/master
types.nix: fix nonEmptyListOf
2024-01-30 20:55:24 +01:00
Danila Danko 7dea495d34 feat: add test for nonEmptyListOf submodule 2024-01-30 21:32:34 +03:00
Danila Danko ad853c1368 types.nix: fix nonEmptyListOf 2024-01-29 22:29:44 +03:00
figsoda e08ce8d1d1 lib/trivial: bump oldestSupportedRelease to 23.11 2024-01-29 12:08:59 -05:00
Robert Hensing b78ba9bc68 lib.types.unique: Check inner type deeply
This doesn't change uniq. Why not?

- In NixOS it seems that uniq is only used with
  simple types that are fully checked by t.check.

- It exists for much longer and is used more widely.

- I believe we should deprecate it, because unique was
  already better.

- unique can be a proving ground.
2024-01-28 14:09:27 +01:00
Vincenzo Mantova 4c6e59f0f8 licenses: add Creative Commons Attribution 2.0 2024-01-27 09:32:21 +00:00
Adam Joseph 9b4c306d98 lib.system.inspect: add wasm32 to isILP32
According to the WebAssembly design doc, wasm32 is an ILP32 ABI like
x32, mips64n32, and aarch64_ilp32 (Apple Watch).  This commits adds
it to the predicate.

  1319968ca5/CAndC%2B%2B.md?plain=1#L16
2024-01-18 09:09:29 +00:00
Silvan Mosberger 501963a6df
Merge pull request #248220 from infinisil/document-extends
Improve the documentation of `lib.extends` and how it relates to overlays
2024-01-12 02:25:42 +01:00
Silvan Mosberger 0ed96eed10
Merge pull request #278777 from tweag/fix-evals
`lib.callPackageWith`: Use abort again instead of throw and fix evaluation errors caused by it
2024-01-08 03:50:58 +01:00
Silvan Mosberger 56df668386 lib.callPackageWith: Use abort, not throw
This reverts f8ea911f7c, see also https://github.com/NixOS/nixpkgs/pull/271123#discussion_r1442134594
2024-01-07 23:31:11 +01:00
Ryan Burns 5cbd74e49a lib/systems: add exec format inspection attrs
Most of the time when we do a patchelf conditional on
hostPlatform.isLinux, what we really mean is hostPlatform.isElf.
Now that we are starting to support BSDs, this is becoming more important.
2024-01-02 14:07:20 -08:00
Robert Hensing 9f98c59547
Merge pull request #276271 from hercules-ci/modules-types-description-nonRestrictiveClause
lib.types: Improve descriptions of composed types that have commas
2023-12-30 17:29:16 +01:00
jopejoe1 95f9761fd9 lib/license: add dtoa 2023-12-30 00:40:41 +01:00
jopejoe1 7b7b4967d4 lib/licenses: add missing spdxids 2023-12-26 17:38:49 +01:00
jopejoe1 a302ae8adc lib/licenses: add smlnj 2023-12-23 12:11:14 +01:00
Robert Hensing 6f4d0b5261 lib.types: Improve descriptions of composed types that have commas
Type:   either ints.positive (enum ["auto"])
Before: positive integer, meaning >0 or value "auto" (singular enum)
After:  positive integer, meaning >0, or value "auto" (singular enum)
2023-12-23 11:40:27 +01:00
jopejoe1 d4a1307524 lib/licenses: add xinetd 2023-12-23 10:40:02 +01:00
jopejoe1 3e53f2b569 lib/licenses: add xskat 2023-12-23 10:31:58 +01:00
Silvan Mosberger 0f8d175ebd
Merge pull request #272083 from tweag/lib-contrib
lib: Add contribution guidelines
2023-12-19 22:29:51 +01:00
Silvan Mosberger 1816242f9c
Merge pull request #273893 from tweag/fileset.gitTracked-storeDir
`lib.fileset.gitTracked`: Support out-of-tree builds
2023-12-19 22:14:19 +01:00
Silvan Mosberger 38cf6ff099 Remove --simulate-pure-eval 2023-12-19 22:09:01 +01:00
Silvan Mosberger 4a70c1e4da lib.fileset.gitTracked: Support out-of-tree builds 2023-12-19 22:08:59 +01:00
Silvan Mosberger cf47b9a5c0
Merge pull request #270537 from 9999years/packagesFromDirectory
lib.packagesFromDirectoryRecursive: init
2023-12-19 22:03:01 +01:00
Rebecca Turner 090b929b8a
lib.packagesFromDirectoryRecursive: init
Co-authored-by: Gabriella Gonzalez <GenuineGabriella@gmail.com>
2023-12-19 09:48:17 -08:00
Rebecca Turner fa9727cf1e
lib: modules.sh should check JSON output for predictability
Currently, the `lib/tests/modules.sh` test checks the output of
`nix-instantiate --eval` without `--json`, which outputs an unspecified
human-readable format.

This patch modifies `modules.sh` to use the `--json` output instead, to
be robust against future changes to `nix-instantiate` output.
2023-12-19 09:23:09 -08:00
Silvan Mosberger 74f2e49543 lib.fileset.fetchGit: Refactoring 2023-12-19 01:46:15 +01:00
Matthieu Coudron 4ea6c0c58b lib.generators: made toLua accept derivations too
While trying to extend generateLuarocksConfig, I had infinite loops caused by toLua considering derivations as attrSets
2023-12-15 15:05:46 +01:00
Adam Joseph 8f34a10d6a lib/tests/release.nix: temporary reference to pkgs/test/release
This commit temporarily adds pkgs/test/release to the
lib/tests/release.nix test suite, because ofborg already knows about
that entry point.

We should move the list of test entry points out of ofborg and into
a central place in nixpkgs:

  https://github.com/NixOS/nixpkgs/issues/272591

Once we do that we won't need to have this ugly kludge in an
inappropriate place.
2023-12-15 05:13:50 -08:00
Adam Joseph 80472e3754 treewide: add __attrsFailEvaluation and __recurseIntoDerivationForReleaseJobs 2023-12-15 05:13:46 -08:00
Robert Hensing bef10a5ace
Merge pull request #269551 from tejing1/nixos-stub-ld
nixos/stub-ld: init module
2023-12-13 22:36:30 +01:00
Silvan Mosberger 39948a158c
Merge pull request #273704 from adisbladis/lib-getexe-efficiency
lib.getExe: Make more efficient
2023-12-13 21:30:13 +01:00
Silvan Mosberger 5027eafc33
Merge pull request #274022 from hercules-ci/doc-attrsets-operators
lib/attrsets: Document and link Nix language operators
2023-12-13 21:14:08 +01:00
Robert Hensing a7aa95db53 lib/attrsets: Document and link Nix language operators 2023-12-13 18:38:41 +01:00
Silvan Mosberger d4b7b15407 lib.path.hasStorePathPrefix: init
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2023-12-13 17:12:52 +01:00
Silvan Mosberger c4e2e52a21
Merge pull request #273664 from tweag/fileset.gitTracked-improvements
`lib.fileset.gitTracked,gitTrackedWith`: Minor improvements
2023-12-13 05:14:20 +01:00
adisbladis 0286e3119e lib.getExe: Make more efficient 2023-12-12 16:44:07 +13:00
Silvan Mosberger 6e3be6ddb0 lib.fileset.gitTracked: Improve error when passing files 2023-12-11 23:05:51 +01:00
Silvan Mosberger eec765f9e6 lib.fileset: Refactor gitTracked and gitTrackedWith
Introduce an internal function for them to share more behavior.
This makes future changes easier.
2023-12-11 22:57:12 +01:00
Silvan Mosberger 04efefaa4c
Merge pull request #273473 from adisbladis/lib-isConvertibleToString-static-list
lib.isConvertibleToString: Statically compute types list
2023-12-11 17:46:48 +01:00
Silvan Mosberger 6d8c22272a
Merge pull request #273470 from adisbladis/lib-tohexstring-static-values
lib.toHexString: Statically compute hexDigits attrset
2023-12-11 17:46:23 +01:00
Silvan Mosberger 5812c533ed
Merge pull request #273474 from adisbladis/lib-cmakeOptionType-static-list
lib.cmakeOptionType: Statically compute types list
2023-12-11 17:45:22 +01:00
Silvan Mosberger 581adae822
Merge pull request #273467 from adisbladis/lib-pipe-no-let
lib.pipe: Avoid creating a scope
2023-12-11 17:16:05 +01:00
Robert Hensing 6c8fb49bfc
Merge pull request #273004 from hercules-ci/attrset-path-longest-prefix
lib.attrsets.longestValidPathPrefix: init
2023-12-11 13:25:45 +01:00
Robert Hensing 067ac02817
Merge pull request #257100 from Ma27/version-info-lib
flake: fix `lib.trivial.version` when used from a flake
2023-12-11 10:30:12 +01:00
adisbladis 2d47874820 lib.cmakeOptionType: Statically compute types list 2023-12-11 16:47:22 +13:00
adisbladis a128a3f234 lib.isConvertibleToString: Statically compute types list 2023-12-11 16:42:13 +13:00
adisbladis ad647985cf lib.toHexString: Statically compute hexDigits attrset 2023-12-11 16:36:29 +13:00
adisbladis c8c2ae638a lib.pipe: Avoid creating scopes 2023-12-11 16:25:21 +13:00
adisbladis bd817120c4 lib.strings: Dont create scopes for getName/getVersion
We can create the `parse` function in a scope one level up to avoid recomputing it every time.
2023-12-11 14:49:11 +13:00
Maximilian Bosch d56f942e43
Merge pull request #272709 from hercules-ci/module-system-test-pr-131205
lib/modules: Test optionless module errors from #131205
2023-12-10 13:49:02 +01:00
Maximilian Bosch ede5720a0d
flake/version overlay: review fixes
* Improves the comments of `lib/flake-version-info.nix` and drops the
  `__`-prefix from the filename.
* `lib'` -> `lib0` in `nixpkgs/lib`.
* Drop the declaration of `trivial.version` in the overlay because this
  declaration already uses the final expressions of `versionSuffix` and
  `release` now.
* No need to fall back to `self.lastModified` anymore, this was a
  workaround for pre2.4 Nix.

Co-authored-by: Robert Hensing <robert@roberthensing.nl>
Co-authored-by: Silvan Mosberger <contact@infinisil.com>
2023-12-10 13:25:24 +01:00
Maximilian Bosch 78f5ed053a
lib/trivial: drop rec in favor of lib fixpoint
That way each expression uses the final version of other lib.trivial
declarations.

For instance, when replacing `versionSuffix` with the string `"fnord"`
in a lib overlay, `trivial.version` uses `"fnord"` as suffix now rather
than `pre-git`.
2023-12-10 13:25:24 +01:00
Robert Hensing 8d20c2011e
Merge pull request #272183 from infinisil/nixpkgs-reference
doc: Rename to Nixpkgs reference manual and restate purpose
2023-12-10 07:07:20 +01:00
Robert Hensing 584463c744
Merge pull request #272764 from tweag/anyBool
lib.types.anyBool: init
2023-12-10 06:03:50 +01:00
Robert Hensing 83712164e6 lib/modules: Clarify test assertions 2023-12-09 20:38:29 +01:00
Robert Hensing afb1a2e376 lib/modules: Test optionless module errors from #131205 2023-12-09 14:15:49 +01:00
Maximilian Bosch bb7921d1d6
flake: also provide proper version info for lib's flake
This effectively means that

    nixpkgs$ nix eval ./lib#lib.trivial.version
    "23.11.20231020.ee0d6b5"

now gives meaningful results as well.

See https://github.com/NixOS/nixpkgs/pull/257100#discussion_r1352075369
for the discussion around this.
2023-12-09 11:45:45 +01:00
Robert Hensing 7d993b9521 lib.attrsets.hasAttrByPath: Document law and laziness, and test it 2023-12-08 23:19:09 +01:00
Robert Hensing 72bd4bbb58 lib.attrsets.longestValidPathPrefix: init
Allows finding the most specific path that exists.
This is useful for error messages relating to attribute paths.
2023-12-08 23:15:13 +01:00
Robert Hensing 50793752a7 lib.sort: Make doc consistent with sortOn 2023-12-08 22:15:30 +01:00
Robert Hensing 016993237f lib.callPackageWith: Optimize levenshtein sort
Probably not significant because of the limits already applied.
This is mostly cleanup.
2023-12-08 22:15:29 +01:00
Robert Hensing 67cc78643d lib.sortOn: init
A more efficient sort in some cases, and often convenient.

This exposes `lib.lists.sortOn` immediately on `lib`, because it is
a sibling of `sort`, which is already present there.
Omitting it would lead to more confusion, and worse outcomes.
There's no confusion about the types `sort` or `sortOn` operate on.

Haskell agrees about the type for `sortOn`, and it is in its `base`.
2023-12-08 22:15:29 +01:00
Silvan Mosberger 8d3978c149 lib.types.boolByOr: init
This type is necessary to have correct merging behavior for
`allowUnfreePredicate` and `allowInsecurePredicate`

Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2023-12-08 21:50:29 +01:00
Silvan Mosberger f5dafbfa83 doc: Rename to Nixpkgs reference manual and state purpose
For the time being, we're moving towards https://nix.dev/ containing
all tutorials and guides. The Nixpkgs manual is reinforced to be a
_reference_ manual. While it's not just reference for now, that's what
the docs team is working towards.

This commits rewrites the Nixpkgs manual introduction to reflect that
and point to some more useful links. The contribution docs are updated
similarly so it's not missed.

Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io>
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2023-12-08 01:26:31 +01:00
Silvan Mosberger 395fc06431 lib: Add contribution guidelines
Co-Authored-By: Robert Hensing <robert@roberthensing.nl>
2023-12-05 20:38:28 +01:00
Jeff Huffman 94a3c17582
lib.systems.elaborate: add libDir attribute 2023-12-03 16:23:44 -05:00
Someone Serge a3006991c3
lib/customisation: fix eval error (attribute "levenshtein" missing) 2023-12-03 03:49:22 +00:00
Alyssa Ross 973120823b
lib.systems.elaborate: fix passing rust (more) (#271707)
An important idea around the rust stuff in lib.systems is that it's
elaborated — this means that it should idempotently add to the values
passed in, if any.  But we missed that the names used for the
parameter and the elaborated value for "rustcTarget"/"config" didn't
line up.  The intention was to use "rustcTarget" everywhere in the new
interface, as a more descriptive name than "config".

This fixes setting the system in NixOS configuration, which results in
an already elaborated system being elaborated again.  Before, this
wouldn't produce the correct result:

% nix-instantiate --eval -A stdenv.hostPlatform.rust.rustcTarget --system armv7l-linux
"armv7-unknown-linux-gnueabihf"
% NIX_PATH= nix-instantiate --eval -E '(import nixos/lib/eval-config.nix { system = "armv7l-linux"; modules = []; }).pkgs.stdenv.hostPlatform.rust.rustcTarget'
"arm-unknown-linux-gnueabihf"

Fixes: e3e57b8f18 ("lib.systems: elaborate Rust metadata")
Fixes: https://github.com/NixOS/nixpkgs/issues/271000
2023-12-03 01:32:01 +01:00
K900 37445f3c5c lib/customisation: fix callPackage error messages 2023-12-03 01:28:17 +03:00
Pierre Bourdon 5b7ae3565d
sudo: fix meta license information (#269788) 2023-12-02 09:45:08 +01:00
Adam Joseph f8ea911f7c lib.customisation.callPackageWith: use throw, not abort 2023-11-30 07:43:16 +01:00
Silvan Mosberger fc2b2af15e
Merge pull request #270299 from adisbladis/lib-customisation-allocs
lib.customisation: Refactor nested set access & avoid some allocations
2023-11-27 16:01:05 +01:00
Robert Hensing 51357572f2
Merge pull request #269552 from adisbladis/lib-matchattrs-list-allocs
lib.attrsets.matchAttrs: Avoid some list allocations when walking structure
2023-11-27 14:44:37 +01:00
adisbladis 8d162ec7b8 lib.customisation: Don't allocate intermediate list for missing args 2023-11-27 21:06:42 +13:00
adisbladis 7903613b0b lib.customisation: Inherit lib/builtins into scope
It makes the code more readable if we have less nested attrsets being accessed.
2023-11-27 21:06:41 +13:00
adisbladis 544a1d375b lib.attrsets.attrByPath: Don't allocate one extra list per lookup recursion
Using `tail` in a recursive loop like this needlessly allocates.
This changes the loop to look up by list index instead.
2023-11-27 11:37:57 +13:00
adisbladis 7e07b3ecd5 lib.attrsets.hasAttrByPath: Don't allocate one extra list per lookup recursion
Using `tail` in a recursive loop like this needlessly allocates.
This changes the loop to look up by list index instead.
2023-11-27 11:37:56 +13:00
Silvan Mosberger 627af21e87
Merge pull request #269637 from adisbladis/lib-meta-avoid-alloc-platformmatch
lib.meta: Avoid attrset allocation in platformMatch
2023-11-26 23:28:39 +01:00
adisbladis 013a0a1357 lib.attrsets.matchAttrs: Avoid some list allocations when walking structure
Benchmarks (`nix-instantiate ./. -A python3`):

- Before:
``` json
{
  "cpuTime": 0.29049500823020935,
  "envs": {
    "bytes": 4484216,
    "elements": 221443,
    "number": 169542
  },
  "gc": {
    "heapSize": 402915328,
    "totalBytes": 53086800
  },
  "list": {
    "bytes": 749424,
    "concats": 4242,
    "elements": 93678
  },
  "nrAvoided": 253991,
  "nrFunctionCalls": 149848,
  "nrLookups": 49612,
  "nrOpUpdateValuesCopied": 1587837,
  "nrOpUpdates": 10104,
  "nrPrimOpCalls": 130356,
  "nrThunks": 358981,
  "sets": {
    "bytes": 30423600,
    "elements": 1859999,
    "number": 41476
  },
  "sizes": {
    "Attr": 16,
    "Bindings": 16,
    "Env": 16,
    "Value": 24
  },
  "symbols": {
    "bytes": 236145,
    "number": 24453
  },
  "values": {
    "bytes": 10502520,
    "number": 437605
  }
}
```

- After:
``` json
{
  "cpuTime": 0.2946169972419739,
  "envs": {
    "bytes": 3315224,
    "elements": 172735,
    "number": 120834
  },
  "gc": {
    "heapSize": 402915328,
    "totalBytes": 48718432
  },
  "list": {
    "bytes": 347568,
    "concats": 4242,
    "elements": 43446
  },
  "nrAvoided": 173252,
  "nrFunctionCalls": 101140,
  "nrLookups": 73595,
  "nrOpUpdateValuesCopied": 1587837,
  "nrOpUpdates": 10104,
  "nrPrimOpCalls": 83067,
  "nrThunks": 304216,
  "sets": {
    "bytes": 29704096,
    "elements": 1831673,
    "number": 24833
  },
  "sizes": {
    "Attr": 16,
    "Bindings": 16,
    "Env": 16,
    "Value": 24
  },
  "symbols": {
    "bytes": 236145,
    "number": 24453
  },
  "values": {
    "bytes": 8961552,
    "number": 373398
  }
}
```
2023-11-27 11:20:50 +13:00
Emily Trau 1b38685b49 acc: init at 1.60 2023-11-26 16:56:53 +02:00
adisbladis 4b4d413817 lib.meta: Avoid attrset allocation in platformMatch
Benchmarks (`nix-instantiate ./. -A python3`)

- Before
``` json
{
  "cpuTime": 0.30625399947166443,
  "envs": {
    "bytes": 4484216,
    "elements": 221443,
    "number": 169542
  },
  "gc": {
    "heapSize": 402915328,
    "totalBytes": 53091024
  },
  "list": {
    "bytes": 749424,
    "concats": 4242,
    "elements": 93678
  },
  "nrAvoided": 253991,
  "nrFunctionCalls": 149848,
  "nrLookups": 49614,
  "nrOpUpdateValuesCopied": 1588326,
  "nrOpUpdates": 10106,
  "nrPrimOpCalls": 130356,
  "nrThunks": 359013,
  "sets": {
    "bytes": 30432320,
    "elements": 1860540,
    "number": 41480
  },
  "sizes": {
    "Attr": 16,
    "Bindings": 16,
    "Env": 16,
    "Value": 24
  },
  "symbols": {
    "bytes": 236218,
    "number": 24459
  },
  "values": {
    "bytes": 10504632,
    "number": 437693
  }
}
```

- After
```
{
  "cpuTime": 0.29695799946784973,
  "envs": {
    "bytes": 3296712,
    "elements": 169055,
    "number": 121517
  },
  "gc": {
    "heapSize": 402915328,
    "totalBytes": 49044992
  },
  "list": {
    "bytes": 504928,
    "concats": 4242,
    "elements": 63116
  },
  "nrAvoided": 175403,
  "nrFunctionCalls": 110554,
  "nrLookups": 44907,
  "nrOpUpdateValuesCopied": 1588326,
  "nrOpUpdates": 10106,
  "nrPrimOpCalls": 82330,
  "nrThunks": 306625,
  "sets": {
    "bytes": 29943328,
    "elements": 1843076,
    "number": 28382
  },
  "sizes": {
    "Attr": 16,
    "Bindings": 16,
    "Env": 16,
    "Value": 24
  },
  "symbols": {
    "bytes": 236218,
    "number": 24459
  },
  "values": {
    "bytes": 9037752,
    "number": 376573
  }
}
```
2023-11-25 11:05:23 +13:00
Alyssa Ross 62f7a6dcc1 lib.systems.elaborate: fix passing rust
Usually, attributes passed explicitly to elaborate take precedence
over the elaborated ones, but since we also elaborate the nested
"rust" attrset, we need to push that one level down, so the rest of
"rust" is still filled in if you just pass
{ rust = { config = ... } }.

I've had to drop the assertion that checked that at most one of "rust"
and "rustc" was part of the un-elaborated system, because doing this
broke passing an elaborated system in, which should be idempotent.

For the same reason, I've also had to make it possible for
rust.rustcTargetSpec to be passed in.  Otherwise, on the second call,
since platform was filled in by the first, the custom target file
would be constructed.  The only other way to avoid this would be to
compare the platform attrs to all built in Rust targets to check it
wasn't one of those, and that isn't feasible.

Fixes: e3e57b8f18 ("lib.systems: elaborate Rust metadata")
2023-11-24 12:21:30 +01:00
Silvan Mosberger 7486aee82e
Merge pull request #266362 from tweag/fileset.fileFilter-ext
`lib.fileset.fileFilter`: Predicate attribute for file extension
2023-11-24 00:15:43 +01:00
Silvan Mosberger 6816f28c96 lib.fileset.fileFilter: Predicate attribute for file extension 2023-11-23 21:05:23 +01:00
Silvan Mosberger f37dd68fe0
Merge pull request #265964 from tweag/fileset.optional
`lib.fileset.maybeMissing`: init
2023-11-22 19:46:26 +01:00
Silvan Mosberger 827232d6dd lib.fileset: Document decision for strict existence checks
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2023-11-22 18:51:00 +01:00
figsoda 87cc06983c
24.05 is Uakari 2023-11-21 14:34:30 -05:00
Silvan Mosberger 1cc2c2f13d lib.fileset.maybeMissing: init 2023-11-20 19:56:45 +01:00
Silvan Mosberger ed5e926ec4
Merge pull request #268619 from tweag/lib-descriptions
lib: Take advantage of section descriptions
2023-11-20 17:25:59 +01:00
Silvan Mosberger 055ba65fed lib: Take advantage of section descriptions
See https://github.com/nix-community/nixdoc/releases/tag/v2.6.0
2023-11-20 03:02:11 +01:00
Silvan Mosberger 4164b1c47e lib.fileset: Re-order to match reference overview 2023-11-19 23:52:13 +01:00
Silvan Mosberger 13f0af428e lib.fileset: Add overview section to reference docs 2023-11-19 23:46:23 +01:00
Silvan Mosberger 5a7118da75
Merge pull request #268520 from tweag/fileset-minor-changes
`lib.fileset`: Minor changes
2023-11-19 19:12:29 +01:00
Silvan Mosberger b514f0433c lib.fileset: Minor changes
- Make fromSource's missing file error message more consistent with others,
  and add a test for it
- Indent some function arguments
- Fix an internal type
2023-11-19 16:06:14 +01:00
Silvan Mosberger 228df50ff9 lib.fileset: Move introduction section above the functions
Previously the introductory section and the function listings were in
different places. But now nixdoc supports having them together
with https://github.com/nix-community/nixdoc/pull/70!
2023-11-19 15:00:57 +01:00
Silvan Mosberger ff562fa5fc
Merge pull request #266443 from amjoseph-nixpkgs/pr/lib-tests-no-aws-sdk 2023-11-19 06:17:18 +01:00
Adam Joseph 54c9a08aaf lib.tests: build nix without flaky aws-sdk-cpp
The aws-sdk-cpp tests are flaky.

Since pull requests to staging cause nix to be rebuilt, this means
that staging PRs end up getting false CI failures due to whatever is
flaky in the AWS SDK tests.  Since none of our CI needs to (or
should be able to) contact AWS S3, let's just omit it all.  Bonus:
the tests build way faster.
2023-11-18 20:19:10 -08:00
github-actions[bot] dba5c9ef4e
Merge master into staging-next 2023-11-16 18:01:17 +00:00
Silvan Mosberger ada680bcfa lib.fileset.gitTracked: Better error in pure eval 2023-11-16 14:42:26 +01:00
Vladimír Čunát 0fe5300699
Merge branch 'master' into staging-next 2023-11-16 09:49:24 +01:00
Silvan Mosberger d33f1a62f5 lib.fileset.gitTrackedWith: Introduce recurseSubmodules parameter 2023-11-16 01:12:18 +01:00
Silvan Mosberger 2dfb1d36cf lib.fileset.gitTracked/gitTrackedWith: init
A configuration parameter for gitTrackedWith will be introduced in the
next commit
2023-11-16 01:12:15 +01:00
Robert Hensing 060c4ad377
Merge pull request #267384 from tweag/fileset.fileFilter-path2
`fileset.fileFilter`: Restrict second argument to paths
2023-11-16 00:34:04 +01:00
Vladimír Čunát c46eae0f35
Merge branch 'master' into staging-next 2023-11-15 07:33:10 +01:00
Silvan Mosberger b04b7d64f7
Merge pull request #239722 from Stunkymonkey/lib-allUnique
lib.lists.allUnique: init
2023-11-15 04:37:39 +01:00
Silvan Mosberger 1c3eb9eff1 lib.fileset.fileFilter: Restrict second argument to paths
While this change is backwards-incompatible, I think it's okay because:
- The `fileFilter` function is not yet in a stable NixOS release, it was only merged about [a month ago](https://github.com/NixOS/nixpkgs/pull/257356).
  - All public uses of the function on GitHub only pass a path
- Any `fileFilter pred fileset` can also be expressed as `intersection fileset (fileFilter pred path)` without loss of functionality.
  - This is furthermore pointed out in the new error message when a file set is passed
2023-11-15 01:20:36 +01:00
Silvan Mosberger 7e533bab6d
Merge pull request #267381 from tweag/fileset.fileFilter-path
`fileset.fileFilter`: Don't run predicate unnecessarily
2023-11-15 01:19:36 +01:00
Felix Buehler 66261e9961 lib.lists.allUnique: init 2023-11-14 19:52:32 +01:00
Martin Weinelt 3c336a1647
Merge remote-tracking branch 'origin/master' into staging-next
Conflicts:
- pkgs/development/libraries/gdcm/default.nix
2023-11-14 13:16:34 +01:00
Silvan Mosberger e89ad83555
Merge pull request #263059 from DanielSidhion/add-doc-convention
doc: commit header convention for documentation changes
2023-11-14 08:11:41 +01:00
Silvan Mosberger 2035f8a324 lib.fileset.fileFilter: Don't run predicate unnecessarily
Before:

    nix-repl> fileset.trace (fileset.fileFilter (file: builtins.trace file.name false) ./default.nix)
    trace: README.md
    trace: benchmark.sh
    trace: default.nix
    trace: internal.nix
    trace: mock-splitRoot.nix
    trace: tests.sh

After:

    nix-repl> fileset.trace (fileset.fileFilter (file: builtins.trace file.name false) ./default.nix)
    trace: default.nix
2023-11-14 07:30:16 +01:00
Silvan Mosberger e1d8331738 lib.fileset.fileFilter: Minor cleanups and more tests 2023-11-14 07:29:57 +01:00
github-actions[bot] 6a7c026ba7
Merge master into staging-next 2023-11-14 06:01:03 +00:00
DS e93a3d7b58 doc: separate commit header conventions for each area, info on docs changes. 2023-11-13 20:41:08 -08:00
Silvan Mosberger 7eddbf5690
Merge pull request #265710 from ShamrockLee/lib-copy-function-args
lib.mirrorFunctionArgs: init
2023-11-14 05:33:40 +01:00
Silvan Mosberger 9ec104bb2d lib.fileset: Very minor changes 2023-11-13 23:57:52 +01:00
github-actions[bot] 9776723357
Merge master into staging-next 2023-11-11 18:00:58 +00:00
Anthony Roussel e30f48be94
treewide: fix redirected and broken URLs
Using the script in maintainers/scripts/update-redirected-urls.sh
2023-11-11 10:49:01 +01:00
github-actions[bot] 5f5513224f
Merge staging-next into staging 2023-11-11 00:02:47 +00:00
Robert Hensing cfd83c931f
Merge pull request #261732 from tweag/fileset.fromSource
`lib.fileset.fromSource`: init
2023-11-10 20:32:51 +01:00
github-actions[bot] ff59322b65
Merge staging-next into staging 2023-11-10 00:02:49 +00:00
Silvan Mosberger 187c04f19c
Merge pull request #266349 from tweag/fileset/cleanups
Minor `lib.fileset` cleanups
2023-11-09 19:58:16 +01:00
Profpatsch 2099ebdf59 lib: add asserts.assertEachOneOf
Along the lines of `assertOneOf`, but expects a list of values to be
compared. This gives a good error message and is useful for lists of
values, like `supportedGhcVersions` in the arguments of
`haskell-language-server`.
2023-11-09 17:27:20 +01:00
Alyssa Ross e3e57b8f18 lib.systems: elaborate Rust metadata
We need this stuff to be available in lib so make-derivation.nix can
access it to construct the Meson cross file.

This has a couple of other advantages:

 - It makes Rust less special.  Now figuring out what Rust calls a
   platform is the same as figuring out what Linux or QEMU call it.

 - We can unify the schema used to define Rust targets, and the schema
   used to access those values later.  Just like you can set "config"
   or "system" in a platform definition, and then access those same
   keys on the elaborated platform, you can now set "rustcTarget" in
   your crossSystem, and then access "stdenv.hostPlatform.rustcTarget"
   in your code.

"rustcTarget", "rustcTargetSpec", "cargoShortTarget", and
"cargoEnvVarTarget" have the "rustc" and "cargo" prefixes because
these are not exposed to code by the compiler, and are not
standardized.  The arch/os/etc. variables are all named to match the
forms in the Rust target spec JSON.

The new rust.target-family only takes a list, since we don't need to
worry about backwards compatibility when that name is used.

The old APIs are all still functional with no warning for now, so that
it's possible for external code to use a single API on both 23.05 and
23.11.  We can introduce the warnings once 23.05 is EOL, and make them
hard errors when 23.11 is EOL.
2023-11-09 10:02:24 +01:00
Silvan Mosberger 9cbd394aa0 lib.fileset: Remove unused bindings
Thanks nixd!
2023-11-09 00:02:43 +01:00
Silvan Mosberger 0ace383438 lib.fileset: Make error messages more uniform
Just minor changes like:
- Always using "X is a Y, but it should be Z"
- "X is a path that does not exist" rather than "X does not exist"
- Always using multi-line strings for errors
- Always quoting string-like values and not quoting path-like values
  - But do quote filesystem roots. Even though they're paths, they might
    be very small, good to have quotes to know the start/end
- Capitalise the first word
- Distinguish root vs filesystem root more
2023-11-08 23:59:04 +01:00
Silvan Mosberger 2d28e0cd10 lib.fileset: Remove nixdoc workaround
This problem was fixed in https://github.com/nix-community/nixdoc/pull/81 which is included in version 2.5.1, which is now used in Nixpkgs
2023-11-08 23:28:25 +01:00
Someone Serge dd8e4b0a02 lib.licenses: nvidia*: add shortName-s 2023-11-08 19:06:44 -03:00
Someone Serge 6cd3e9ce1a cudaPackages: redist components: per-package license url 2023-11-08 19:06:44 -03:00
Someone Serge 6c9c9ef2eb lib.licenses: nvidia*: use same fullNames as conda does 2023-11-08 19:06:44 -03:00
Tyler Benster 75254979ac cudnn_cudatoolkit: add NVIDIA license 2023-11-08 19:06:44 -03:00
Tyler Benster 3d1d5533f8 lib.licenses: add NVIDIA licenses 2023-11-08 19:06:44 -03:00
Silvan Mosberger e07e80e841 lib.fileset.toSource: Mention fromSource in errors 2023-11-08 21:44:44 +01:00
Silvan Mosberger 73493584a7 lib.fileset.fromSource: init 2023-11-08 21:21:30 +01:00
Silvan Mosberger f82a1686e6 lib.fileset: Split out internal test helper 2023-11-08 05:18:10 +01:00
Silvan Mosberger 17012aa0d2
Merge pull request #261676 from h7x4/lib-add-replicatestring
lib.strings: add `replicate`
2023-11-07 18:29:31 +01:00
Yueh-Shun Li 6a8b6b8f72 lib.makeOverridable: simplify function arguments preservation
Rename temporary variable copyArgs -> mirrorArgs.
Use lib.mirrorFunctionArgs to define `mirrorArgs`.
Apply mirrorArgs also to the returned function.
2023-11-07 01:58:48 +00:00
Yueh-Shun Li a16319908e lib.mirrorFunctionArgs: init
Co-authored-by: Silvan Mosberger <github@infinisil.com>
2023-11-07 01:58:04 +00:00
Adam Joseph 8c0416ef36 lib.systems.inspect: add patternLogicalAnd 2023-11-05 00:55:16 +00:00
Artturi feaa219f39
Merge pull request #265045 from Artturin/addcomment1 2023-11-04 23:00:22 +02:00
Adam Joseph 72c279f477 lib.systems, test.cross.sanity: add test case for #264989
We have several cross-compilation bugs that show up if
hostPlatform!=buildPlatform yet
hostPlatform.config==buildPlatform.config.

These bugs have appeared and disappeared as we've fiddled with the
definition of equality for platform objects.  This commit adds a
clear-cut case where they are *not* equal and never will be, so we
can test it.
2023-11-04 05:57:34 +00:00
Silvan Mosberger a10c122546
Merge pull request #264892 from tweag/fileset-store-path-rationale
lib.fileset: Add an additional argument in the design docs
2023-11-02 17:51:52 +01:00
Artturin dd48cb0b34 lib.makeScopeWithSplicing': add comments
I didn't add these arguments, so these comments are from my understading of the arguments.
2023-11-02 17:47:02 +02:00
Silvan Mosberger 2312523ab3 lib.fileset: Add an additional argument in the design docs 2023-11-01 22:38:48 +01:00
Eelco Dolstra 9ec80ed610
Merge pull request #264860 from tweag/filesystem-error-test
lib.filesystem: Don't test Nix-specific error messages
2023-11-01 20:21:44 +01:00
Silvan Mosberger fc28c5e5b7
Merge pull request #259065 from tweag/fileset.difference
`lib.fileset.difference`: init
2023-11-01 19:40:45 +01:00
Silvan Mosberger add254658a lib.filesystem: Don't test Nix-specific error messages
In https://github.com/NixOS/nix/pull/9269 the error messages change
which would've broken this test.
2023-11-01 18:56:03 +01:00
h7x4 206d20426c
lib.strings: add replicate
`strings.replicate` returns n copies of a string, concatenated into a new
string

Co-authored-by: Silvan Mosberger <github@infinisil.com>
2023-10-31 20:25:41 +01:00
Alexander Groleau b7e69faf1d
lib/fixed-points.nix: correct typo
Corrects a minor typo in the description of `fix`; namely that `fix` allows factoring out syntactic recursion from another function.
2023-10-31 11:45:51 -07:00
Silvan Mosberger e55ee23bf6
Merge pull request #260971 from Gerg-L/getExe
lib.getExe': check arguments
2023-10-31 17:29:15 +01:00
Robert Hensing 1c92b1f03b
Merge pull request #263478 from tweag/fileset/unknown-type-error
`lib.fileset.toSource`: Improve error for unknown file types
2023-10-30 13:14:22 +01:00
Silvan Mosberger 50df7f9775 lib.fileset.difference: init 2023-10-30 12:51:55 +01:00
Silvan Mosberger 47c81d3286 lib.fileset.toSource: Optimise unknown file type error
Compared to the parent commit, this removes any detectable performance
cost :)
2023-10-30 12:48:13 +01:00
Silvan Mosberger 0f6cc8018c lib.fileset.toSource: Improve error for unknown file types
This does decrease performance unfortunately

Benchmarking expression toSource { root = ./.; fileset = ./.; }
Mean CPU time 0.103747 (σ = 0.012415) for 10 runs is 97.32181384964636% (σ = 16.34179537413021%) of the old value 0.106602 (σ = 0.0125571)
Statistic .envs.elements (205920) is 105.5842% (+10891) of the old value 195029
Statistic .gc.totalBytes (20247696) is 101.7495% (+348160) of the old value 19899536
Statistic .nrThunks (134824) is 108.7878% (+10891) of the old value 123933
Statistic .symbols.number (996) is 100.1005% (+1) of the old value 995
Statistic .values.number (275238) is 104.1199% (+10891) of the old value 264347
2023-10-30 12:48:11 +01:00
Silvan Mosberger 88f736f871 lib.fileset.toSource: Test with unknown file type
Currently just throws the Nix error because unknown file types are not
supported by the Nix store, but nothing catches this error earlier (yet,
see next commit)
2023-10-26 01:57:22 +02:00
Silvan Mosberger 7227cb1d73 lib.fileset: Fix shellcheck warnings in tests 2023-10-26 01:51:15 +02:00
John Ericson 791c147cc2
Merge pull request #262838 from amjoseph-nixpkgs/pr/lib/systems/abi-suffix
lib/systems/parse.nix: add removeAbiSuffix, use it
2023-10-25 16:47:31 -04:00