Commit graph

3572 commits

Author SHA1 Message Date
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
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 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