about summary refs log tree commit diff
path: root/lib
AgeCommit message (Collapse)AuthorFilesLines
2022-05-27Merge pull request #174917 from alyssais/scaleway-c1sternenseemann2-9/+0
lib.systems: drop scaleway-c1
2022-05-27lib.systems: drop scaleway-c1Alyssa Ross2-9/+0
These servers apparently no longer exist, since September 2, 2021[1]. If somebody needs this for non-Scaleway machines, they should suggest its reintroduction with a different name. [1]: https://news.ycombinator.com/item?id=27192757
2022-05-25lib/systems/inspect.nix: remove isPowerPCAdam Joseph1-1/+0
Very confusingly, the `isPowerPC` predicate in `lib/systems/inspect.nix` does *not* match `powerpc64le`! This is because `isPowerPC` is defined as isPowerPC = { cpu = cpuTypes.powerpc; }; Where `cpuTypes.powerpc` is: { bits = 32; significantByte = bigEndian; family = "power"; }; This means that the `isPowerPC` predicate actually only matches the subset of machines marketed under this name which happen to be 32-bit and running in big-endian mode which is equivalent to: with stdenv.hostPlatform; isPower && isBigEndian && is32bit This seems like a sharp edge that people could easily cut themselves on. In fact, that has already happened: in `linux/kernel/common-config.nix` there is a test which will always fail: (stdenv.hostPlatform.isPowerPC && stdenv.hostPlatform.is64bit) A more subtle case of the strict isPowerPC being used instead of the moreg general isPower accidentally are the GHC expressions: Update pkgs/development/compilers/ghc/8.10.7.nix Update pkgs/development/compilers/ghc/8.8.4.nix Update pkgs/development/compilers/ghc/9.2.2.nix Update pkgs/development/compilers/ghc/9.0.2.nix Update pkgs/development/compilers/ghc/head.nix Since the remaining legitimate use sites of isPowerPC are so few, remove the isPowerPC predicate completely. The alternative expression above is noted in the release notes as an alternative. Co-authored-by: sternenseemann <sternenseemann@systemli.org>
2022-05-25Merge pull request #171014 from hercules-ci/nixpkgs-warn-undeclared-optionsRobert Hensing1-1/+1
pkgs/top-level/config.nix: Add warnUndeclaredOptions
2022-05-24stdenv: fix evaluation of platform emulatorNick Cao1-1/+1
2022-05-23lib.systems: inform isCompatible users about removalsternenseemann1-0/+1
2022-05-23lib.systems.elaborate: expose canExecute predicate over isCompatiblesternenseemann1-2/+4
canExecute is like isCompatible, but also checks that the Kernels are _equal_, i.e. that both platforms use the same syscall interface. This is crucial in order to actually be able to execute binaries for the other platform. isCompatible is dropped, since it has changed semantically and there's no use case left in nixpkgs.
2022-05-23lib/systems/parse: don't consider mode switching CPUs compatiblesternenseemann1-13/+6
Since we (exclusively) use isCompatible to gauge whether platform a can execute binaries built for platform b, mode switching CPUs are not to be considered compatible for our purposes: Switching the mode of a CPU usually requires a reset. At the very least we can't execute a mix of executables for the two modes which would usually be the case in nixpkgs where we may want to execute buildInputs for the hostPlatform in addition to nativeBuildInputs for the buildPlatform.
2022-05-2322.11 is RaccoonJanne Heß1-1/+1
2022-05-23Merge pull request #168374 from Ma27/special-attrs-in-with-recursionSilvan Mosberger2-1/+26
lib/generators: withRecursion: don't break attr-sets with special attrs
2022-05-23lib.systems: remove supported, replace with flakeExposedsternenseemann3-27/+39
Since the list only gates the platforms the nixpkgs flake exposes packages to build on, the `hydra` label made little sense. It was also only used for this purpose, so the `tier*` attributes were largely unnecessary. To reflect the intention more accurately, we expose `lib.systems.flakeExposed` and use it to gate flake.nix's system list.
2022-05-22systems: support cross-compiling for Renesas RX microcontrollers (#173858)yvt4-1/+9
2022-05-17Merge pull request #172813 from hercules-ci/functionTo-properlyRobert Hensing3-1/+66
`lib.types.functionTo` type merging and docs
2022-05-16Merge pull request #170561 from klemensn/types-descriptionSilvan Mosberger2-4/+4
lib/types: Drop misleading plural from type descriptions
2022-05-15Revert "lib: init flakes.nix"adisbladis5-49/+0
This reverts commit PR #167947. Flakes aren't standardised and the `lib` namespace shouldn't be polluted with utilities that serve only experimental uses.
2022-05-13lib/tests/modules: Test functionTo submodule merging tooRobert Hensing2-8/+11
2022-05-13lib.types.functionTo: Add pseudo-attr to generated docsRobert Hensing1-1/+1
2022-05-13lib.types.functionTo: Support type mergingRobert Hensing3-0/+62
2022-05-12Merge pull request #171946 from ncfavier/toShellVars-derivationsRobert Hensing2-4/+17
lib/strings/toShellVars: handle derivations as strings
2022-05-10lib.licenses: add DRL-1.0Fabian Affolter1-0/+5
https://spdx.org/licenses/DRL-1.0.html https://github.com/SigmaHQ/sigma/blob/master/LICENSE.Detection.Rules.md
2022-05-10lib.foldAttrs: Clarify exampleRobert Hensing1-1/+1
2022-05-07lib/strings/toShellVars: handle derivations as stringsNaïm Favier2-4/+17
2022-05-04Merge pull request #161156 from ↵Rick van Schijndel1-2/+2
a-m-joseph/abort-on-failed-platform-detection-instead-of-silently-assuming-pc platforms.nix: use {} on failed detection instead of silently assuming pc
2022-05-03platforms.nix: use {} on failed detection instead of silently assuming pcAdam Joseph1-2/+2
This patch causes the autodetection code in lib/systems/platforms.nix to return {} if it cannot detect the platform and one of the platform.nix-detection-provided attributes (linux-kernel, gcc, and rustc) are accessed, rather than silently assuming the "pc" platform as was previously done. It is definitely safe to assume that code using these attributes is prepared to deal with `gcc` and `rustc` not being defined, because many of the working entries in this file don't define it. Regarding `linux-kernel` the situation is less certain, but some code (`lib/systems/default.nix` for example) is already designed to deal with that attribute being missing. At worst it would result in an "attribute not found" error. While adding mips64el bootstrap support to nixpkgs, the silent assumption that mips64el routers are actually Intel PCs caused significant frustration. This commit removes that assumption in order to save people who port nixpkgs to new platforms in the future from this frustration.
2022-05-02lib/tests/modules.sh: Fix for singular type descriptionsRobert Hensing1-1/+1
2022-05-02Merge pull request #170090 from danth/has-infix-toStringRobert Hensing2-1/+31
lib/strings: call toString within hasInfix
2022-05-02lib/tests: add tests for hasInfixDaniel Thwaites1-0/+30
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2022-05-01Merge pull request #167947 from MatthewCroughan/mc/callLocklessFlakeArtturi5-0/+48
lib: add callLocklessFlake
2022-05-01lib/strings: convert to string within hasInfixDaniel Thwaites1-1/+1
This should fix the issue mentioned here: https://github.com/NixOS/nixpkgs/pull/168175#issuecomment-1107830574
2022-04-30Merge pull request #167776 from ↵Robert Hensing1-1/+4
hercules-ci/lib-modules-allow-disable-_modules.args-docs-internal lib.modules: Allow making _module.args internal
2022-04-28lib.systems: add riscv{32,64} sets and filtersAlyssa Ross3-0/+6
For other platforms like Intel and ARM, we can do e.g. lib.platforms.aarch64 to get only the 64-bit ARM platorms, but until now there were no equivalents for RISC-V.
2022-04-28lib/tests: add RISC-V testAlyssa Ross1-0/+1
2022-04-27Merge pull request #170583 from ncfavier/mkShellVarsRobert Hensing3-1/+82
lib/strings: add toShellVars
2022-04-27lib/strings: fix quoting of exampleNaïm Camille Favier1-1/+1
Co-authored-by: Silvan Mosberger <github@infinisil.com>
2022-04-27lib/strings: add toShellVarsNaïm Favier3-1/+82
A straightforward piece of plumbing to safely inject Nix variables into shell scripts: '' ${lib.toShellVars { inherit foo bar; }} cmd "$foo" --bar "$bar" ''
2022-04-27 lib/types: Drop misleading plural from type descriptions #170561Klemens Nanni1-3/+3
Probably being the most prominent document demonstrating the problem, configuration.nix(5) describes various types in plural, e.g. - ` Type: list of strings` - ` Type: list of systemd options` However, there are other cases where appending "s" to the inner type effectively changes the type, e.g. - ``` Type: list of string matching the pattern [a-zA-Z0-9@%:_.\-]+[.](service|socket|device|mount|automount|swap|target|path|timer|scope|slice)s ``` This should've read "list of string[s]..." but instead changes the regular expression. Simply drop the best-effort plural in favour of correctness and simplicity rather than adding more grammar related logic/trying to fix this.
2022-04-26Merge pull request #167247 from Artturin/addgetmainprogArtturi2-1/+15
lib/meta: add getExe to get the main program of a drv
2022-04-26Merge pull request #168778 from ↵Robert Hensing4-4/+61
hercules-ci/issue-168767-extendModules-module-dedup-collision `lib.types.submoduleWith`: Avoid `_key` collisions after `extendModules` (issue #168767)
2022-04-25Merge pull request #168111 from a-m-joseph/lib-systems-inspect-powerpcSandro1-0/+1
lib/systems/inspect.nix: add isPower64
2022-04-24lib/meta: add getExe to get the main program of a drvArtturin2-1/+15
2022-04-24lib.types.submoduleWith: Avoid _key collisions after extendModulesRobert Hensing4-4/+61
2022-04-22lib/strings: optimise hasInfix function (#168175)Daniel Thwaites1-4/+1
* lib/strings: optimise hasInfix function * lib/strings: optimise hasInfix further using regex * rstudio: call hasInfix with a string * lib/strings: remove let from hasInfix Co-authored-by: pennae <82953136+pennae@users.noreply.github.com> Co-authored-by: pennae <82953136+pennae@users.noreply.github.com>
2022-04-15lib/systems/platforms: correctly import examples.nixArtturin1-1/+1
before: :p lib.systems failed with error: getting status of '...examples': no such file or directory
2022-04-12lib/tests: evaluate value from subflake with callLocklessFlakematthewcroughan3-8/+8
2022-04-12lib/tests: use subflake to test callLocklessFlakematthewcroughan3-3/+16
2022-04-12lib/tests: add test for callLocklessFlakematthewcroughan1-0/+9
2022-04-12lib: init flakes.nixmatthewcroughan3-17/+27
This commit creates flakes.nix, which is a library containing functions which relate to interacting with flakes. It also moves related functions from trivial.nix into it.
2022-04-12lib: add callLocklessFlakematthewcroughan2-1/+17
This is essentially a copy of the function of the same name, from flake-compat. callLocklessFlake is useful when trying to utilise a flake.nix without a lock file, often for when you want to create a subflake from within a parent flake. Co-authored-by: Tom Bereknyei <tomberek@gmail.com> Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2022-04-12lib/generators: withRecursion: don't break attr-sets with special attrsMaximilian Bosch2-1/+26
Closes #168327 The issue reported there can be demonstrated with the following expression: → nix-instantiate --eval -E "with import ./. {}; pkgs.lib.options.showDefs [ { file = \"foo\"; value = pkgs.rust.packages.stable.buildRustPackages; } ]" error: attempt to call something which is not a function but a string at /home/ma27/Projects/nixpkgs/lib/trivial.nix:442:35: 441| isFunction = f: builtins.isFunction f || 442| (f ? __functor && isFunction (f.__functor f)); | ^ 443| Basically, if a `__functor` is in an attribute-set at depth-limit, `__functor` will be set to `"<unevaluated>"`. This however breaks `lib.isFunction` which checks for a `__functor` by invoking `__functor` with `f` itself. The same issue - "magic" attributes being shadowed by `withRecursion` - also applies to others such as `__pretty`/`__functionArgs`/`__toString`. Since these attributes have a low-risk of causing a stack overflow (because these are flat attr-sets or even functions), ignoring them in `withRecursion` seems like a valid solution.
2022-04-11lib.modules: Allow making _module.args internalRobert Hensing1-1/+4
This allows other module system consumers to disable these docs via option merging. For instance arion uses asciidoc instead of docbook so that would look awful.