1
0
Fork 1
mirror of https://github.com/NixOS/nixpkgs.git synced 2024-11-17 19:21:04 +00:00
Commit graph

4131 commits

Author SHA1 Message Date
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
Robert Hensing 185acbce7d
Merge pull request #260265 from tweag/fileset.fileFilter
`lib.fileset.fileFilter`: init
2023-10-24 11:29:57 +02:00
Silvan Mosberger f4e0043049 lib.fileset.fileFilter: init 2023-10-24 01:44:04 +02:00
Adam Joseph 20b62456f0 lib/systems/parse.nix: add, use removeAbiSuffix
gnu-config will ignore the portion of a triple matching the regex
`e?abi.*$` when determining the validity of a triple.  In other
words, `i386-linuxabichickenlips` is a valid triple.

This commit updates our parsing routines to match gnu-config.

I was recently surprised to discover that it is in fact possible to
shoehorn ABI flavors into nix doubles in a way which preserves their
property of being a (non-canonical) subset of the valid gnu-config
triples.  This commit is required in order to exploit that discovery
to add automatic detection of ILP32 platforms (64-bit void*, 32-bit
int, like the Apple Watch and MIPS n32) to Nix.
2023-10-22 17:05:05 -07:00
Yueh-Shun Li 0695d3e8fe lib.overrideDerivation: inter-link the documentation
Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io>
2023-10-21 16:39:12 +08:00
Yueh-Shun Li 93b8f14a2d doc: lib.customization: add Type and Example tags
Add the "Type:" blocks.
Move the examples below the descriptions whenever possibles
Add "Example:" tags before the examples moved below the descriptions.
2023-10-21 16:39:12 +08:00
Gerg-L d2161d0632
lib/tests: add tests for getExe' and getExe 2023-10-16 20:29:28 -04:00
Gerg-L d7c49ca715
lib.getExe': check arguments 2023-10-16 18:52:56 -04:00
Silvan Mosberger 302ec1a3cf
Merge pull request #258866 from schuelermine/mkPackageOptionV4
lib/options: mkPackageOption: document better, add pkgsText and usePname options, refactor
2023-10-16 20:40:48 +02:00
Silvan Mosberger 7247ec07ba lib.fileset: Improved error for unsupported coercion values 2023-10-16 15:50:10 +02:00
Robert Hensing bb0b182cce
Merge pull request #260535 from hercules-ci/fix-functionArgs-after-makeOverridable
lib.makeOverridable: fix functionArgs on returned function
2023-10-13 15:54:54 +02:00
Silvan Mosberger b597bff1b6
Merge pull request #242318 from hercules-ci/doc-lib-fix
lib.fix: Improve doc
2023-10-12 19:37:14 +02:00
Silvan Mosberger b82c1c7b5c lib.fix: Improve doc more
Done together in and after the docs team meeting

Co-Authored-By: Robert Hensing <robert@roberthensing.nl>
2023-10-12 17:38:00 +02:00
Robert Hensing 0a10279342 lib.makeOverridable: fix functionArgs on returned function 2023-10-11 22:56:53 +02:00
Silvan Mosberger 006b28f2a8
Merge pull request #257356 from tweag/fileset.intersect
`lib.fileset.intersection`: init
2023-10-11 17:33:32 +02:00
Silvan Mosberger 389be8db81 lib.fileset: Minor contributor doc adjustments
Co-authored-by: Robert Hensing <robert@roberthensing.nl>
2023-10-11 16:18:00 +02:00
Silvan Mosberger 4ecf025814 lib.fileset.intersection: init 2023-10-11 16:17:48 +02:00
Silvan Mosberger 5323fbf703
Merge pull request #254452 from flyingcircusio/lib-attrsToList
lib.attrsets.attrsToList: add function
2023-10-10 19:49:17 +02:00
Oliver Schmidt d70633f91c lib.attrsets.attrsToList: add function
For transforming back between lists and attrsets, it makes sense to have
a quasi-inverse of `builtins.listToAttrs` available as a library
function.

Co-authored-by: Silvan Mosberger <github@infinisil.com>
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2023-10-10 16:11:01 +02:00
Anselm Schüler 7e24b3619f
lib/options: refactor mkPackageOption 2023-10-10 13:14:17 +02:00
Anselm Schüler 55ab538abf
lib/tests: add test for pkgsText parameter and package set selection of mkPackageOption 2023-10-10 13:13:38 +02:00
Valentin Gagarin 61fa1255f8 link to documentation on IFD in the Nix manual 2023-10-09 23:57:03 +02:00
Anderson Torres 0de25e25b0 lib: refactor
- rename `(enable|with)Feature(As|)` inputs to more descriptive names
2023-10-09 17:49:02 -03:00
Anselm Schüler f07537da75
lib/options: add pkgsText parameter to mkPackageOption 2023-10-06 14:08:50 +02:00
Anselm Schüler d27d38c13a
lib/tests: add more tests for mkPackageOption 2023-10-06 14:08:46 +02:00
Anselm Schüler 19241f5618
lib/options: correct and improve documentation of mkPackageOption 2023-10-06 14:07:06 +02:00
mirrorwitch 7843484dc1 licenses: add Anti-Capitalist Software License v1.4 2023-10-05 19:33:49 +00:00
Silvan Mosberger 2541635c13 lib.fileset: Refactor for performance and future re-use 2023-10-04 23:21:45 +02:00
Silvan Mosberger 5db719f69c
Merge pull request #256417 from tweag/fileset.trace
`lib.fileset.trace`, `lib.fileset.traceVal`: init
2023-10-04 17:39:20 +02:00
Silvan Mosberger 5b4e53a300 lib.fileset: Don't use ulimit for testing tracing 2023-10-04 16:31:14 +02:00
Silvan Mosberger 692b75257e lib.fileset: Refactor inotify testing to be reusable 2023-10-04 16:31:13 +02:00
Silvan Mosberger 5bbe67bf67 lib.fileset: Mention trace functions in the file set evaluation error 2023-10-04 16:31:13 +02:00
Silvan Mosberger 704452f29c lib.fileset.traceVal: init 2023-10-04 16:31:11 +02:00
Silvan Mosberger 467e428f00 lib.fileset.trace: init 2023-10-04 16:30:10 +02:00
Silvan Mosberger ac2c8d321c lib.fileset: Make expectEqual check more 2023-10-04 16:29:03 +02:00
Silvan Mosberger efbcf5938f lib.fileset: Add internal helpers for pretty-printing 2023-10-04 16:28:55 +02:00
Ulrik Strid 8d301f41a1
Merge pull request #256411 from wegank/zelus-init
ocamlPackages.zelus{,-gtk}: init at 2.2
2023-10-04 10:30:35 +02:00
Weijia Wang 79dc25b48d licenses: add inria-zelus 2023-10-04 08:47:08 +02:00
Silvan Mosberger 81e8f48ebd
Merge pull request #258855 from tweag/fileset.doc-fix
`lib.fileset.unions`: Fix outdated docs
2023-10-04 01:24:04 +02:00
Silvan Mosberger d5743d9268 lib.fileset.unions: Fix outdated docs
Since 4f35f003e6 unions supports empty lists too
2023-10-03 21:56:53 +02:00
Silvan Mosberger 86802e19ce lib.fileset: _simplifyTree -> _normaliseTreeFilter 2023-10-03 21:27:42 +02:00
Silvan Mosberger b3c2281219 lib.fileset: Order noEval last 2023-10-03 21:27:40 +02:00
Silvan Mosberger 43e4d8a6a1 lib.fileset: Link to user documentation from contributor docs 2023-10-03 18:50:18 +02:00
Robert Hensing 812887f16f
Merge pull request #257351 from tweag/fileset.empty
`lib.fileset`: Representation for empty file sets without a base path
2023-10-03 18:26:09 +02:00
Robert Hensing c0838e12af
Merge pull request #258080 from tweag/fileset/no-ulimit
lib.fileset: Don't use non-reproducible ulimit for stack overflow testing
2023-10-03 18:00:36 +02:00
Silvan Mosberger 4f35f003e6 lib.fileset: Internal representation v3, empty value without a base
`unions []` now works!

Notably the new empty value without a base is not exposed in the interface.
I don't know of any use case for it.
2023-10-03 17:05:57 +02:00
Fabian Affolter 4984613adb
Merge pull request #251812 from LeSuisse/licenses-elv2
lib/licenses: add Elastic License 2.0, drop Elastic License
2023-10-02 22:11:16 +02:00
Ryan Lahfa 37747348cd
Merge pull request #257143 from peat-psuwit/netdata-no-v2-dashboard 2023-10-02 21:01:36 +02:00
Vladimír Čunát 58aa673711
Merge #257338: fdk-aac: fix the license 2023-10-01 18:57:58 +02:00
Artturi bf25d8782b
Merge pull request #249069 from amjoseph-nixpkgs/pr/lib/systems/ubootArch
lib.systems: add ubootArch
2023-09-30 10:45:36 +03:00
Silvan Mosberger 3cbbea53a1 lib.fileset: Don't use non-reproducible ulimit for stack overflow testing 2023-09-29 20:30:29 +02:00
Silvan Mosberger 13c278cb1c lib.fixedPoints.extends: Doc improvements
Co-Authored-By: Valentin Gagarin <valentin.gagarin@tweag.io>
2023-09-28 17:21:34 +02:00
linsui a50cea84be lib.gvariant: make the tests really work 2023-09-28 16:30:05 +02:00
Anderson Torres cc3383d12b lib: add cmakeOptionType, cmakeBool and cmakeFeature 2023-09-27 20:49:38 -03:00
Silvan Mosberger dd72ff27f7 lib.attrsets.foldlAttrs: Make stricter
See the parent commit for the same change to lib.lists.foldl'
2023-09-27 02:43:59 +02:00
Silvan Mosberger 3b6169f87b lib.lists.foldl': Make strict in the initial accumulator
To maintain backwards compatibility, this can't be changed in the Nix language.
We can however ensure that the version Nixpkgs has the more intuitive behavior.
2023-09-27 02:43:59 +02:00
Silvan Mosberger 857a844ea8 lib.lists.foldl': Redo documentation
Co-Authored-By: Robert Hensing <robert@roberthensing.nl>
2023-09-27 02:43:36 +02:00
Silvan Mosberger 9893fee947 lib.lists.foldl': Add tests 2023-09-26 18:55:54 +02:00
Silvan Mosberger 7a0b5c36c9 lib.lists.foldl': Remove fallback
Nix 2.3, the minimum Nix version supported by Nixpkgs, has
`builtins.foldl'` already.
2023-09-26 18:55:54 +02:00
FavoritoHJS 5d5c872bdf
licenses: add Fraunhofer FDK AAC Codec Library
This license is used by the Fraunhofer FDK codec, which is currently
mislicensed to Apache 2.0.

Of course, this can't be corrected without having the proper license
available in lib.licenses can't it??

Thanks @trofi for noticing this has an SPDX ID.
2023-09-26 16:00:44 +00:00
Ratchanan Srirattanamet 20b83a46d6 netdata: disable installation of non-free v2 dashboard
The v2 dashboard (included since version 1.41.0) is licensed under
Netdata Cloud UI License v1.0, which is a non-free license.

Patch the source code so that the v2 is not included in the source
and the result derivation. Users that want the v2 dashboard can still
request it by overriding this derivation and pass `withCloudUi = true`.

Co-authored-by: Raito Bezarius <masterancpp@gmail.com>
Fixes: https://github.com/NixOS/nixpkgs/issues/256964
2023-09-24 21:51:09 +00:00
Artturi 6f300706ef
Merge pull request #247077 from jmbaur/aarch64-embedded-rustc 2023-09-23 06:30:47 +03:00
Weijia Wang 9a1a55c2c3 licenses: fix full name of inria-icesl 2023-09-21 16:30:58 +00:00
Robert Hensing 5c97f01a9d
Merge pull request #255025 from tweag/fileset.union
`lib.fileset.union`, `lib.fileset.unions`: init
2023-09-21 11:49:57 +02:00
Niols 702f067ff0 licenses: add OCaml LGPL Linking Exception 2023-09-21 10:57:54 +02:00
Artturi aeaa0a7be9
Merge pull request #247288 from amjoseph-nixpkgs/pr/lib/systems/qemu-mips64n32 2023-09-21 03:06:24 +03:00
Silvan Mosberger 94e103ee3f lib.fileset: Minor changes from feedback
Co-authored-by: Robert Hensing <robert@roberthensing.nl>
Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io>
2023-09-21 00:21:02 +02:00
Silvan Mosberger fe6c1539cc lib.fileset: Internal representation v2, ~12x faster unions!
$ ./benchmark.sh HEAD
    [...]
    Mean CPU time 0.04006 (σ = 0.0040146) for 10 runs is 8.193619775953792% (σ = 0.9584251052704821%) of the old value 0.488917 (σ = 0.0294955)
    [...]
2023-09-21 00:21:02 +02:00
Silvan Mosberger 45bf2c7617 lib.fileset: Ignore irrelevant shellcheck warnings 2023-09-21 00:21:01 +02:00
Silvan Mosberger e05cf47184 lib.fileset: Use a nix-shell shebang for benchmark.sh 2023-09-21 00:21:01 +02:00
Silvan Mosberger c9c9c093cf lib.fileset: Have benchmark.sh measure the time 2023-09-21 00:21:01 +02:00
Silvan Mosberger c8bac6ea0f lib.fileset: Add benchmark for unions 2023-09-21 00:21:01 +02:00
Silvan Mosberger 631ad21692 lib.fileset: More reusable benchmark code 2023-09-21 00:21:01 +02:00
Silvan Mosberger 7ab764e575 lib.fileset.unions: Don't stack overflow for many files 2023-09-21 00:21:01 +02:00
Silvan Mosberger e04e40d05e lib.fileset: Optimise tests
Previously a lot of processes were used, slowing it down considerably
the more files were tested
2023-09-21 00:21:01 +02:00
Silvan Mosberger c5ae093f13 lib.fileset: Various updates relating to union/unions
Also some minor formatting improvements
2023-09-21 00:21:01 +02:00
Silvan Mosberger f78d65067f lib.fileset: Create tests for union and unions 2023-09-21 00:21:01 +02:00
Silvan Mosberger bd52895222 lib.fileset.unions: init 2023-09-21 00:20:58 +02:00
Silvan Mosberger d866a0bda1 lib.fileset.union: init 2023-09-21 00:19:48 +02:00
Robert Hensing 00e5487906
Merge pull request #249243 from lf-/jade/declarationsWithLocations
nixos/modules: Add declarationPositions
2023-09-17 19:43:07 +02:00
Silvan Mosberger 7c6b0b107a lib.fileset: Minor internal type doc fix 2023-09-13 23:32:29 +02:00
Silvan Mosberger 7d4eb3f1b7 lib.fileset.toSource: Evaluate fileset even for empty directories 2023-09-13 23:32:14 +02:00
nicoo fe138d36c9 doc: Replace sha256 with hash where appropriate 2023-09-13 17:24:49 +00:00
Silvan Mosberger 19b39dcc93 lib.fileset: Internal representation v1 2023-09-13 18:53:53 +02:00
Silvan Mosberger 48abfde844 lib/fileset: Test function improvement
We can now test returned paths being equal, no need to work around it
anymore by making sure paths aren't returned (which would import them
with the previous --json)
2023-09-13 18:43:36 +02:00
Robert Helgesson 54bc9b45a3
Merge pull request #250220
lib.generators.toGitINI: escape string values in configuration
2023-09-11 23:44:42 +02:00
Moritz Angermann 1e0561d78a nixpkgs/systems: Add ucrt64 as MinGW libc
The Minimalist Gnu for Windows distribution comes with support for
the traditional msvcrt libc, as well as ucrt64 libc. The latter
being the newer universal compiler runtime. We follow the msys2
environment naming convention[1]:

| name       | toolchain | arch    | libc   | libc++    |
|------------|-----------|---------|--------|-----------|
| mingw32    | gcc       | i686    | msvcrt | libstdc++ |
| mingw64    | gcc       | x86_64  | msvcrt | libstdc++ |
| ucrt64     | gcc       | x86_64  | ucrt   | libstdc++ |
| clang32    | llvm      | i686    | ucrt   | libc++    |
| clang64    | llvm      | x86_64  | ucrt   | libc++    |
| clangarm64 | llvm      | aarch64 | ucrt   | libc++    |

For now nixpkgs only supports the first three with this commit.

--
[1]: https://www.msys2.org/docs/environments/
2023-09-08 10:56:08 +00:00
Jade Lovelace a1d3882307 nixos/modules: Add declarationPositions
What it does: line and column level *declaration* position information:

$ nix repl .
nix-repl> :p nixosConfigurations.micro.options.environment.systemPackages.declarationPositions
[ { column = 7; file = "/nix/store/24aj3k7fgqv3ly7qkbf98qvphasrw9nb-source/nixos/modules/config/system-path.nix"; line = 63; } ]

Use cases:
- ctags over NixOS options, as will be presented at NixCon 2023 ;)
- improving the documentation pages to go to the exact line of the
  declarations.

Related work:
- https://github.com/NixOS/nixpkgs/pull/65024

  This one does it for all *definitions* rather than declarations, and
  it was not followed through with due to performance worries.
- https://github.com/NixOS/nixpkgs/pull/208173

  The basis for this change. This change is just a rebase of that one.
  I split it out to add the capability before adding users of it, in
  order to simplify review. However, the ctags script in there is a
  sample user of this feature.

Benchmarks: conducted by evaluating my own reasonably complex NixOS
configuration with the command:
`hyperfine -S none -w 1 -- "nix eval .#nixosConfigurations.snowflake.config.system.build.toplevel.outPath"`

```
Benchmark 1: nix eval .#nixosConfigurations.snowflake.config.system.build.toplevel.outPath
  Time (mean ± σ):      8.971 s ±  0.254 s    [User: 5.872 s, System: 1.388 s]
  Range (min … max):    8.574 s …  9.327 s    10 runs

Benchmark 1: nix eval .#nixosConfigurations.snowflake.config.system.build.toplevel.outPath
  Time (mean ± σ):      8.766 s ±  0.160 s    [User: 5.873 s, System: 1.346 s]
  Range (min … max):    8.496 s …  9.033 s    10 runs
```

Summary of results: it seems to be in the noise, this does not cause any
visible regression in times.
2023-09-08 11:48:40 +02:00
Artturin 5472b08075 lib/systems: disable pipewireSupport in qemu-user
Option added in 5b0ed68c10

it causes infinite recursion in cross builds

There's a another inf rec that needs 6946977de0 which is in staging
2023-09-08 00:23:19 +03:00
Silvan Mosberger d66929b7b1
Merge pull request #245623 from tweag/fileset.toSource
File set combinators base: `lib.fileset.toSource`
2023-09-02 04:07:02 +02:00
Silvan Mosberger 465e05c0c5 lib.fileset.toSource: init 2023-09-01 15:46:04 +02:00
Jan Tojnar 434d160d7c
Merge pull request #234615 from linsui/dconf
nixos/dconf: support generating from attrs
2023-08-28 18:31:52 +02:00
Thomas Gerbet e39d579918 lib/licenses: add Elastic License 2.0, drop Elastic License
This license was introduced in the Elastic search repository by this
commit: a92a647b9f

It appears that all the the packages in nixpkgs using the Elastic License are using the v2.0.
2023-08-27 18:29:26 +02:00
Artturin 724cc0cba3 makeScopeWithSplicing: fix makeScopeWithSplicing' call
makeScopeWithSplicing: fix comment
2023-08-21 19:57:34 +03:00
VwCSXg 147560180c lib.generators.toGitINI: added test
Added basic generators.toGitINI test.
Mostly taken from 958c06303f/tests/modules/programs/git/git.nix.
The ${"\t} escape is used so that the lines aren't recognized as "Wrong
indent style".
2023-08-21 13:12:40 +02:00
Artturi bde196dde9
Merge pull request #245957 from amjoseph-nixpkgs/pr/lib/customization/makeScopeWithSplicing2 2023-08-20 18:57:05 +03:00
Robert Helgesson a88b90c9db lib.generators.toGitINI: escape string values in configuration
This should handle the special characters that typically occur.
Upstreaming of 642d9ffe24
2023-08-19 19:22:41 +02:00
Robert Hensing 5ad01f1b6f lib/modules: Report a better error when option tree has bare type
Improves on 0d472a6201
- https://github.com/NixOS/nixpkgs/pull/242339

We actually do have the file name.

Thanks Shawn8901 for the [feedback]!

feedback: https://github.com/NixOS/nixpkgs/pull/242339#issuecomment-1683107055
2023-08-18 11:36:51 +02:00
John Ericson c6590b61e1
Merge pull request #238509 from amjoseph-nixpkgs/pr/knuth/respect
lib/systems/parse.nix: show respect where deserved
2023-08-16 11:14:12 -04:00
Silvan Mosberger 6adb20e965
Merge pull request #248895 from Scrumplex/getExe2 2023-08-16 02:19:22 +02:00
linsui fb52d5df86 nixos/dconf: add settings support 2023-08-15 19:20:39 +08:00
linsui da614d98e9 lib/gvariant: init 2023-08-15 19:20:39 +08:00
Sefa Eyeoglu a9a29b7059
lib/meta.nix: recommend use of getExe' in getExe warning
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 08:57:31 +02:00
Silvan Mosberger 150217c1ac lib.removePrefix: Optimise 2023-08-14 23:32:42 +02:00
Silvan Mosberger 8fab18d4c1 lib.removePrefix: Add tests 2023-08-14 23:29:00 +02:00
Silvan Mosberger 87c5a6a84f
Merge pull request #243511 from tweag/lib.lists.hasPrefix
`lib.lists.{hasPrefix,removePrefix}`: init
2023-08-14 21:15:54 +02:00
Silvan Mosberger f10a24eddd
Merge pull request #242339 from hercules-ci/modules-catch-bare-type
lib/modules: Report a good error when option tree has bare type
2023-08-14 20:30:41 +02:00
Artturin 3c1f82f99e lib.customisation.makeScope: Make overrideScope consistent with makeScopeWithSplicing
Right now converting `makeScope` to `makeScopeWithSplicing` is not
transparent to users and requires adding a warning for `overrideScope'`
in the set itself.

Warning and `overrideScope'` were added in 2018 b9dce11712 and there should be no users left after 5 years.
2023-08-14 18:46:47 +03:00
Robert Hensing 0d472a6201 lib/modules: Report a good error when option tree has bare type
Note that this removes the possibility of declaring an option
named `_type`.
2023-08-14 10:44:56 +02:00
Adam Joseph a0c77aecaa lib.systems: add ubootArch
u-boot has its own rosetta stone, almost but not exactly the same as
the Linux kernel's.  This commit adds it and the two cases where it
diverges.
2023-08-14 01:34:07 -07:00
Adam Joseph a1fdbae706 lib.customisation: add uncurried form of makeScopeWithSplicing
Deeply-curried functions are pretty error-prone in untyped languages
like Nix.  This is a particularly bad case because
`top-level/splice.nix` *also* declares a makeScopeWithSplicing, but
it takes *two fewer arguments*.

Let's add a version that uses attrset-passing form, to provide some
minimal level of sanity-checking.

This also provides defaults for keep and extra (these are often
unneeded by the user).
2023-08-14 02:50:32 +03:00
Sefa Eyeoglu 3036465760
lib/meta.nix: introduce getExe'
getExe' can be used to get a binary other than the mainProgram from a
derivation.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-13 15:45:37 +02:00
Silvan Mosberger c096e03491
Merge pull request #247825 from tweag/lib.path-md
Minor `lib.path` documentation consistency improvements
2023-08-12 08:10:15 +02:00
Robert Hensing b8435108e1 lib/path/tests: Fix test setup on darwin
These statements are taken from the `lib/test/release.nix` tests,
which previously also worked on darwin.

Unblocks https://github.com/NixOS/nix/pull/8569 when backported
2023-08-11 17:08:16 +02:00
Silvan Mosberger 6cd54de985
Merge pull request #248278 from infinisil/revert-strings-error
Change `types.string` error to a warning instead
2023-08-10 19:35:53 +02:00
Silvan Mosberger 59b08b7ee8
Merge pull request #235625 from ShamrockLee/lib-doc-tidy 2023-08-10 12:00:36 +02:00
Silvan Mosberger 5075a51403 lib.types.string: Use lib.warn instead of deprecationMessage
This will cause a poorer error message without option location
information, but it will catch all uses of its use.
2023-08-10 06:31:36 +02:00
Silvan Mosberger 040b0ad3ed Revert "lib.types.string: Deprecation error instead of warning"
This reverts commit c59c6b1c57.

This was a bit too ambitious, because no warnings were previously
triggered when `string` was nested e.g. `attrsOf string`, `nullOr
string`, etc.

Support for nested type deprecation warnings was introduced in
4b54aedee5, but had to be reverted in
a36e6760e9 because it caused infinite
recursion for some users, and I couldn't remember that it was reverted.
2023-08-10 06:25:29 +02:00
Silvan Mosberger 149a793c07 lib.fixedPoints.extends: Refactor implementation and document arguments
- Better names:
  - self -> final
  - super -> prev
  - rattrs -> f
  - f -> overlay
- Add documentation to the function arguments
- Add some spacing
2023-08-10 00:26:06 +02:00
Silvan Mosberger 327f1c2d09 lib.fixedPoints.extends: Add type and examples 2023-08-10 00:26:06 +02:00
Silvan Mosberger 8585568d7d lib.fixedPoints.extends: Improve documentation
The previous one was unnecessarily confusing.
2023-08-10 00:26:03 +02:00
Silvan Mosberger c59c6b1c57 lib.types.string: Deprecation error instead of warning
The type has given a warning on use since [4 years ago](03392cd336b128a1639c648baf0f6c1a1271e0d2), I think it's safe to move the deprecation to the next stage: An error instead of a warning.
2023-08-08 04:13:22 +02:00
Silvan Mosberger e3ff8dbeda lib.path: Add argument docs when missing 2023-08-08 00:10:32 +02:00
Silvan Mosberger dee307ff30 lib.path: Indent comments the same 2023-08-08 00:09:08 +02:00
Silvan Mosberger b5c492b4ba lib.path: Make documentation more uniform
- Always have a trailing dot after sentences
- Link more things
- Fix some formatting
- Use `append` instead of `+ ("/"`
2023-08-08 00:06:27 +02:00
Adam Joseph 8a543acc2b lib.systems: add qemu's funky custom name for mips n32
Qemu's name for mips64[el] using the n32 ABI is "mipsn32[el]".
That's the first time I've seen that name for it.  Oh well.
2023-08-05 00:24:17 -07:00
Artturin 61c0ecea5b treewide: update mainProgram docs 2023-08-04 20:31:16 +03:00
Robert Hensing 8fa169707f
Merge pull request #242695 from tweag/lib.path.subpath.components
`lib.path.subpath.components`: init
2023-08-04 17:00:46 +02:00
Jared Baur aca7042069
lib/systems: Add rustc config for aarch64-embedded
The target aarch64-none-elf is not a valid rustc target, use
aarch64-unknown-none instead.
2023-08-03 23:35:38 -07:00
Robert Hensing 53b289836b
Merge pull request #243139 from hercules-ci/modules-test-default-argument
lib/tests/modules: Test that _module.args works when a default argume…
2023-08-02 20:12:37 +02:00
Robert Hensing e6e16bc118 lib.getExe: Do not make assumptions about the main program
Before this commit, getExe assumes that if `meta.mainProgram` is unset,
it has a main program that's named after the package name.

While this is probable, it leads to a bad error when the assumption does
not hold. If the user called `getExe` themselves, they might narrow down
the location of the assumption quite easily, but if that's not the case,
they'll have to go down the rabbit hole to figure out what went wrong.

For example, a NixOS module may use `lib.getExe` on a package-typed option
which is then used in the system configuration. This then typically leads
to a failure *after* deployment, which is bad, and it's quite likely that
the user will debug the package output contents before digging through the
NixOS module, which is bad.
Furthermore the `getExe` call is rather inconspicuous as it does not
contain something like "/bin/foo", which is bad.
Also modules can be hard to read for a newbie, which is bad.

All of this can be avoided by requiring `meta.mainProgram`.
Many packages already have the attribute, and I would expect 80% of
`getExe` usages to be covered by 20% of packages, because plenty of
packages aren't used with `getExe` anyway.

Finally we could make an effort to set `mainProgram` semi-automatically
using `nix-index`.
2023-07-31 18:56:19 +02:00
Silvan Mosberger a0b8caf3bc
Revert "lib.customisation: uncurry makeScopeWithSplicing" 2023-07-28 23:04:09 +02:00
Artturin 3716ef19d8 lib.makeScopeWithSplicing: provide default for keep,extra
These are often unneeded by the user.
2023-07-28 17:41:01 +03:00
Adam Joseph cb13669b00 lib.customisation: uncurry makeScopeWithSplicing
Deeply-curried functions are pretty error-prone in untyped languages
like Nix.  This is a particularly bad case because
`top-level/splice.nix` *also* declares a makeScopeWithSplicing, but
it takes *two fewer arguments*.

Let's switch to attrset-passing form, to provide some minimal level
of sanity-checking.
2023-07-27 21:31:59 -07:00
Robert Hensing 399ac29381
Merge pull request #244358 from tweag/lib.path.parts
`lib.path.splitRoot`: init
2023-07-27 11:05:48 +02:00
Robert Hensing 19f1d7da06
Merge pull request #245271 from sternenseemann/module-system-merge-no-type
lib/modules: handle typeless options in mergeModules
2023-07-27 10:55:08 +02:00
sternenseemann 9c35f44999 lib/modules: handle typeless options in mergeModules
mkOption does not require a `type` argument and does not set the
resulting attribute if it is not given. Consequently, we need to be
prepared to merge options that have no type information.
2023-07-26 23:58:04 +02:00
Silvan Mosberger 407db583c5 lib/path/README.md: Justify returning subpaths
Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io>
2023-07-26 23:29:54 +02:00
Silvan Mosberger 4e14f5fee6 lib.path.subpath.components: init
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2023-07-26 23:29:44 +02:00
Silvan Mosberger d7bf0d777a lib.path.subpath.isValid: Add definition of a subpath
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2023-07-26 23:20:19 +02:00
Silvan Mosberger b42e178ed4 lib.path.splitRoot: init
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2023-07-26 23:20:12 +02:00
Silvan Mosberger bd74cdfb2e
Merge pull request #243520 from tweag/lib.lists.commonPrefix
`lib.lists.{findFirstIndex,commonPrefix}`: init
2023-07-26 23:14:58 +02:00
Naïm Favier b97ac82725
Merge pull request #244819 from ncfavier/toKeyValue-indent
lib/generators/toKeyValue: add `indent` parameter
2023-07-25 18:57:04 +02:00
Adam Joseph 057d63a797
Merge pull request #244330 from thillux/bluefield2-remove-cpu
lib.systems.bluefield2: remove cpu profile
2023-07-24 05:50:46 +00:00
Sandro 51727ac1df
Merge pull request #242035 from Icy-Thought/zsh-abbr
zsh-abbr: init at 5.1.0
2023-07-23 23:28:33 +02:00
Naïm Favier 383fa81e6f
lib/generators/toKeyValue: add indent parameter
toKeyValue is generic enough that it is sometimes used as part of other
format generators, where it might be useful to specify the indentation
level.
2023-07-22 13:49:30 +02:00
Silvan Mosberger 7f61b01600 lib.lists.commonPrefix: init 2023-07-20 22:42:01 +02:00
Adam Joseph 7363eedd89
Merge pull request #244118 from amjoseph-nixpkgs/pr/fix/244045
lib.systems.extensions.sharedLibrary: do not `throw`
2023-07-20 07:43:12 +00:00
Silvan Mosberger 53dcfd24ad lib.lists.findFirstIndex: init
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2023-07-19 17:35:28 +02:00
Robert Hensing 814f067760
Merge pull request #238013 from tweag/lib.path.removePrefix
`lib.path.removePrefix`: init
2023-07-19 17:28:05 +02:00
Robert Hensing 0665253b86
Merge pull request #244044 from tweag/lib-readme
Create a Readme in `lib`
2023-07-19 16:34:36 +02:00
Markus Theil e43792e88d lib.systems.bluefield2: remove cpu profile
Some software, e.g. systemd, failed to build with set cpu
profile.

Signed-off-by: Markus Theil <theil.markus@gmail.com>
2023-07-19 13:38:43 +02:00
Silvan Mosberger fa503f4b92 lib.attrsets.mergeAttrsList: init
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2023-07-18 20:27:15 +02:00
Silvan Mosberger 581d7c88be lib/tests: Unify documentation of individual testable files 2023-07-18 17:22:45 +02:00
Silvan Mosberger 03431f1244 lib: Add README
Co-authored-by: Alexander Groleau <alex@proof.construction>
Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io>
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2023-07-18 17:22:42 +02:00
Silvan Mosberger 9fdc0bb2bf lib.lists.removePrefix: init 2023-07-14 19:36:46 +02:00
Silvan Mosberger bc8fbc2572 lib.lists.hasPrefix: init 2023-07-14 19:36:45 +02:00
Markus Theil f6f0ccd6c9 lib.systems.bluefield2: init
Add support for Nvidia's Bluefield 2 plattform as a compilation
target. There exists a version with and without crypto support,
while the crypto supported version is the most common one.

Support for the non-crypto version can be easily added in the future,
if needed.

For a datasheet of the hardware, see:

https://www.nvidia.com/content/dam/en-zz/Solutions/Data-Center/documents/datasheet-nvidia-bluefield-2-dpu.pdf

Signed-off-by: Markus Theil <theil.markus@gmail.com>
2023-07-14 11:19:11 +02:00