Age | Commit message (Collapse) | Author | Files | Lines |
|
nixos/stub-ld: init module
|
|
lib.getExe: Make more efficient
|
|
lib/attrsets: Document and link Nix language operators
|
|
|
|
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
|
|
`lib.fileset.gitTracked,gitTrackedWith`: Minor improvements
|
|
|
|
|
|
Introduce an internal function for them to share more behavior.
This makes future changes easier.
|
|
lib.isConvertibleToString: Statically compute types list
|
|
lib.toHexString: Statically compute hexDigits attrset
|
|
lib.cmakeOptionType: Statically compute types list
|
|
lib.pipe: Avoid creating a scope
|
|
lib.attrsets.longestValidPathPrefix: init
|
|
flake: fix `lib.trivial.version` when used from a flake
|
|
|
|
|
|
|
|
|
|
We can create the `parse` function in a scope one level up to avoid recomputing it every time.
|
|
lib/modules: Test optionless module errors from #131205
|
|
* 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>
|
|
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`.
|
|
doc: Rename to Nixpkgs reference manual and restate purpose
|
|
lib.types.anyBool: init
|
|
|
|
|
|
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.
|
|
|
|
Allows finding the most specific path that exists.
This is useful for error messages relating to attribute paths.
|
|
|
|
Probably not significant because of the limits already applied.
This is mostly cleanup.
|
|
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`.
|
|
This type is necessary to have correct merging behavior for
`allowUnfreePredicate` and `allowInsecurePredicate`
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
|
|
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>
|
|
|
|
|
|
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: e3e57b8f1885 ("lib.systems: elaborate Rust metadata")
Fixes: https://github.com/NixOS/nixpkgs/issues/271000
|
|
|
|
|
|
|
|
lib.customisation: Refactor nested set access & avoid some allocations
|
|
lib.attrsets.matchAttrs: Avoid some list allocations when walking structure
|
|
|
|
It makes the code more readable if we have less nested attrsets being accessed.
|
|
Using `tail` in a recursive loop like this needlessly allocates.
This changes the loop to look up by list index instead.
|
|
Using `tail` in a recursive loop like this needlessly allocates.
This changes the loop to look up by list index instead.
|
|
lib.meta: Avoid attrset allocation in platformMatch
|
|
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
}
}
```
|
|
|