summaryrefslogtreecommitdiff
path: root/lib/meta.nix (follow)
Commit message (Expand)AuthorAgeFilesLines
* treewide: Format all Nix files•••Format all Nix files using the officially approved formatter, making the CI check introduced in the previous commit succeed: nix-build ci -A fmt.check This is the next step of the of the [implementation](https://github.com/NixOS/nixfmt/issues/153) of the accepted [RFC 166](https://github.com/NixOS/rfcs/pull/166). This commit will lead to merge conflicts for a number of PRs, up to an estimated ~1100 (~33%) among the PRs with activity in the past 2 months, but that should be lower than what it would be without the previous [partial treewide format](https://github.com/NixOS/nixpkgs/pull/322537). Merge conflicts caused by this commit can now automatically be resolved while rebasing using the [auto-rebase script](https://github.com/NixOS/nixpkgs/tree/8616af08d915377bd930395f3b700a0e93d08728/maintainers/scripts/auto-rebase). If you run into any problems regarding any of this, please reach out to the [formatting team](https://nixos.org/community/teams/formatting/) by pinging @NixOS/nix-formatting. Silvan Mosberger2025-04-011-66/+72
* treewide: Fix incorrect string escapespiegames2025-01-071-1/+1
* treewide: use a consistent meta.priority defaultPhilip Taron2024-08-291-6/+9
* lib.meta: Minor SPDX license function improvements•••- Expose `lib.licensesSpdx` - Create bindings for the needed internal functions - Mention that some SPDX licenses might be missing (in the future I hope we can autogenerate the Nixpkgs license list from some SPDX endpoint Silvan Mosberger2024-08-251-5/+9
* lib.meta.licensesSpdx: mapping from SPDX ID to licensesmib2024-08-151-3/+31
* 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. Yueh-Shun Li2024-06-301-5/+47
* lib.getLicenseFromSpdxId: improve documentationYueh-Shun Li2024-06-301-4/+4
* lib.meta: refactor to use doc-comments (#313589)•••* doc: use doc-comments for lib.meta * adds missing argument to setPrioJohannes Kirschbauer2024-06-261-72/+283
* doc: clarify consequences of `lib.meta.setName`•••And remove unnecessary mention of `nix-env` wamirez2024-05-151-2/+6
* Merge pull request #291909 from cdmistman/lib-meta-available-on-doc-example•••lib.meta.availableOn: add example in documentationRyan Mulligan2024-02-271-0/+4
|\
| * lib.meta.availableOn: add example in documentationColton Donnelly2024-02-271-0/+4
* | lib.meta.platformMatch: expand documentationColton Donnelly2024-02-271-0/+4
|/
* lib.getExe: Make more efficientadisbladis2023-12-121-19/+15
* 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 } } ``` adisbladis2023-11-251-10/+22
* lib.getExe': check argumentsGerg-L2023-10-161-1/+8
* Merge pull request #248895 from Scrumplex/getExe2Silvan Mosberger2023-08-161-5/+20
|\
| * lib/meta.nix: recommend use of getExe' in getExe warning•••Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net> Sefa Eyeoglu2023-08-151-1/+1
| * 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> Sefa Eyeoglu2023-08-131-5/+20
* | treewide: update mainProgram docsArtturin2023-08-041-3/+2
|/
* 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`. Robert Hensing2023-07-311-1/+5
* Update lib/meta.nix•••Co-authored-by: Naïm Favier <n@monade.li>Adam Joseph2023-01-271-1/+1
* Update lib/meta.nix•••Co-authored-by: Naïm Favier <n@monade.li>Adam Joseph2023-01-271-1/+1
* lib/meta.nix: allow patterns over entire platform, not just `.parsed`Adam Joseph2023-01-271-1/+5
* Revert "lib/meta.nix: platformMatch: allow predicate functions"•••This reverts commit b7d097438b9b0f782a707f3295d320d824810864. Adam Joseph2023-01-271-6/+1
* lib/meta.nix: platformMatch: allow predicate functionsAdam Joseph2023-01-221-1/+6
* check-meta(hasUnsupportedPlatform): use lib.meta.availableOn•••`hasUnsupportedPlatform` was not updated with #37395, so it does not understand attrsets in `meta.[bad]platforms`. In particular, attrsets in `meta.badPlatforms` will "fail open" and be ignored. Let's use `lib.meta.availableOn` instead of duplicating its logic. Thanks to @alyssais for [noticing][1]. [1][https://github.com/NixOS/nixpkgs/pull/194148#discussion_r990817610] Co-authored-by: sternenseemann <sternenseemann@systemli.org> Adam Joseph2023-01-111-3/+1
* lib/meta(availableOn): handle missing meta and empty meta.platformAdam Joseph2023-01-111-2/+5
* lib: Fix mismatched quotes in `lib.*` doc comments•••caused problems for automated rich text generation such as https://teu5us.github.io/nix-lib.html#customisation-functions YoshiRulz2023-01-021-1/+1
* lib/meta: add getExe to get the main program of a drvArtturin2022-04-241-0/+14
* lib/meta: fix typo in platformMatch commentThiago Kenji Okada2022-01-241-1/+1
* lib/meta: add getLicenseFromSpdxId function•••Move function spdxLicense, internally used in yarn2nix to lib/meta.nix, and rename to getLicenseFromSpdxId A similar function is implemented in poetry2nix, but the one originally in yarn2nix seems beter. since it falls back to an license-like attrset for mismatched case instead of a plain string Shamrock Lee2021-12-021-0/+27
* lib.meta: introduce `availableOn`oxalica2021-04-021-0/+12
* lib: implement `setPrio`•••For when `hiPrio` and `lowPrio` are not enough. Jan Malakhovski2018-11-221-5/+6
* treewide: remove lib.meta.enableIfAvailableMatthew Bauer2018-05-091-2/+0
* kexectools: Disable only on RISC-V if Linux.•••The isKexecable flag treated Linux without kexec as just a normal variant, when it really should be treated as a special case incurring complexity debt to support. Shea Levy2018-03-271-0/+2
* lib: Factor in tiny bit of `meta.platform` checking•••I need it in stdenv and release-lib, so that seems motivation enough. John Ericson2018-03-191-0/+19
* Convert libs to a fixed-point•••This does break the API of being able to import any lib file and get its libs, however I'm not sure people did this. I made this while exploring being able to swap out docFn with a stub in #2305, to avoid functor performance problems. I don't know if that is going to move forward (or if it is a problem or not,) but after doing all this work figured I'd put it up anyway :) Two notable advantages to this approach: 1. when a lib inherits another lib's functions, it doesn't automatically get put in to the scope of lib 2. when a lib implements a new obscure functions, it doesn't automatically get put in to the scope of lib Using the test script (later in this commit) I got the following diff on the API: + diff master fixed-lib 11764a11765,11766 > .types.defaultFunctor > .types.defaultTypeMerge 11774a11777,11778 > .types.isOptionType > .types.isType 11781a11786 > .types.mkOptionType 11788a11794 > .types.setType 11795a11802 > .types.types This means that this commit _adds_ to the API, however I can't find a way to fix these last remaining discrepancies. At least none are _removed_. Test script (run with nix-repl in the PATH): #!/bin/sh set -eux repl() { suff=${1:-} echo "(import ./lib)$suff" \ | nix-repl 2>&1 } attrs_to_check() { repl "${1:-}" \ | tr ';' $'\n' \ | grep "\.\.\." \ | cut -d' ' -f2 \ | sed -e "s/^/${1:-}./" \ | sort } summ() { repl "${1:-}" \ | tr ' ' $'\n' \ | sort \ | uniq } deep_summ() { suff="${1:-}" depth="${2:-4}" depth=$((depth - 1)) summ "$suff" for attr in $(attrs_to_check "$suff" | grep -v "types.types"); do if [ $depth -eq 0 ]; then summ "$attr" | sed -e "s/^/$attr./" else deep_summ "$attr" "$depth" | sed -e "s/^/$attr./" fi done } ( cd nixpkgs #git add . #git commit -m "Auto-commit, sorry" || true git checkout fixed-lib deep_summ > ../fixed-lib git checkout master deep_summ > ../master ) if diff master fixed-lib; then echo "SHALLOW MATCH!" fi ( cd nixpkgs git checkout fixed-lib repl .types ) Graham Christensen2017-09-161-2/+1
* aliases: don't distribute on HydraNikolay Amiantov2017-06-041-0/+5
* treewide: Always use integers for meta.priority•••Meta attributes types are now enforce as of commit 90b9719f4fc95e54400a66bffcc8044c568cfa4b, so ensure meta.priority is always set to an integer. This fixes evaluation of `linuxPackages_latest.virtualbox` (the impetus for this commit) and other packages that use lowPrio or hiPrio. Aneesh Agrawal2017-05-021-2/+2
* Make appendToName do the right thing•••I.e. append a suffix *before* the version, rather than after. So we get "sqlite-interactive-3.8.0.2" instead of "sqlite-3.8.0.2-interactive". The latter is broken since nix-env just sees it the suffix as part of the version, so "nix-env -u" will happily upgrade "sqlite-3.8.0.2-interactive" to "sqlite-3.9". Eelco Dolstra2014-03-101-5/+4
* openjdk: Ugly hack to fix nix-env installation•••Nix-env always wants to install all outputs of a derivation, but this failed for openjdk/openjre because openjdk has some symlinks (such as bin/java) to openjre. Also, it prevents installing the openjre without the openjdk. So as a workaround, mess with the "outputs" attribute to fool nix-env. Also, give openjre a separate name and description. Fixes #1535. Eelco Dolstra2014-01-201-3/+3
* add lowPrioSet and hiPrioSet functions to enable changing of priorities of at...Evgeny Egorochkin2013-12-261-0/+19
* Move pkgs/lib/ to lib/Eelco Dolstra2013-10-101-0/+48