about summary refs log tree commit diff
path: root/lib/meta.nix
AgeCommit message (Collapse)AuthorFilesLines
2024-05-15doc: clarify consequences of `lib.meta.setName`wamirez1-2/+6
And remove unnecessary mention of `nix-env`
2024-02-27Merge pull request #291909 from cdmistman/lib-meta-available-on-doc-exampleRyan Mulligan1-0/+4
lib.meta.availableOn: add example in documentation
2024-02-27lib.meta.platformMatch: expand documentationColton Donnelly1-0/+4
2024-02-27lib.meta.availableOn: add example in documentationColton Donnelly1-0/+4
2023-12-12lib.getExe: Make more efficientadisbladis1-19/+15
2023-11-25lib.meta: Avoid attrset allocation in platformMatchadisbladis1-10/+22
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-10-16lib.getExe': check argumentsGerg-L1-1/+8
2023-08-16Merge pull request #248895 from Scrumplex/getExe2Silvan Mosberger1-5/+20
2023-08-15lib/meta.nix: recommend use of getExe' in getExe warningSefa Eyeoglu1-1/+1
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-13lib/meta.nix: introduce getExe'Sefa Eyeoglu1-5/+20
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-04treewide: update mainProgram docsArtturin1-3/+2
2023-07-31lib.getExe: Do not make assumptions about the main programRobert Hensing1-1/+5
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-01-27Update lib/meta.nixAdam Joseph1-1/+1
Co-authored-by: Naïm Favier <n@monade.li>
2023-01-27Update lib/meta.nixAdam Joseph1-1/+1
Co-authored-by: Naïm Favier <n@monade.li>
2023-01-27lib/meta.nix: allow patterns over entire platform, not just `.parsed`Adam Joseph1-1/+5
2023-01-27Revert "lib/meta.nix: platformMatch: allow predicate functions"Adam Joseph1-6/+1
This reverts commit b7d097438b9b0f782a707f3295d320d824810864.
2023-01-22lib/meta.nix: platformMatch: allow predicate functionsAdam Joseph1-1/+6
2023-01-11check-meta(hasUnsupportedPlatform): use lib.meta.availableOnAdam Joseph1-3/+1
`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>
2023-01-11lib/meta(availableOn): handle missing meta and empty meta.platformAdam Joseph1-2/+5
2023-01-02lib: Fix mismatched quotes in `lib.*` doc commentsYoshiRulz1-1/+1
caused problems for automated rich text generation such as https://teu5us.github.io/nix-lib.html#customisation-functions
2022-04-24lib/meta: add getExe to get the main program of a drvArtturin1-0/+14
2022-01-24lib/meta: fix typo in platformMatch commentThiago Kenji Okada1-1/+1
2021-12-02lib/meta: add getLicenseFromSpdxId functionShamrock Lee1-0/+27
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
2021-04-02lib.meta: introduce `availableOn`oxalica1-0/+12
2018-11-22lib: implement `setPrio`Jan Malakhovski1-5/+6
For when `hiPrio` and `lowPrio` are not enough.
2018-05-09treewide: remove lib.meta.enableIfAvailableMatthew Bauer1-2/+0
2018-03-27kexectools: Disable only on RISC-V if Linux.Shea Levy1-0/+2
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.
2018-03-19lib: Factor in tiny bit of `meta.platform` checkingJohn Ericson1-0/+19
I need it in stdenv and release-lib, so that seems motivation enough.
2017-09-16Convert libs to a fixed-pointGraham Christensen1-2/+1
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 )
2017-06-04aliases: don't distribute on HydraNikolay Amiantov1-0/+5
2017-05-02treewide: Always use integers for meta.priorityAneesh Agrawal1-2/+2
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.
2014-03-10Make appendToName do the right thingEelco Dolstra1-5/+4
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".
2014-01-20openjdk: Ugly hack to fix nix-env installationEelco Dolstra1-3/+3
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.
2013-12-26add lowPrioSet and hiPrioSet functions to enable changing of priorities of ↵Evgeny Egorochkin1-0/+19
attrsets with packages such as kde.
2013-10-10Move pkgs/lib/ to lib/Eelco Dolstra1-0/+48