lix/src
Maximilian Bosch 559fd7ffe7
nix flake check: improve error message if overlay is not a lambda (#8582)
* nix flake check: improve error message if overlay is not a lambda

Suppose you have an overlay like this

    {
      inputs = { /* ... */ };
      outputs = { flake-utils, ... }: flake-utils.lib.eachDefaultSystem
        (system: {
          overlays.default = final: prev: {

          };
        });
    }

then `nix flake check` (correctly) fails because `overlays` are supposed
to have the structure `overlays.<name> = final: prev: exp`. However, the
error-message is a little bit counter-intuitive:

    error: overlay does not take an argument named 'final'

While one might guess where the error actually comes from because the
trace above says `… while checking the overlay 'overlays.x86_64-linux'`
this is still pretty confusing because it complains about an argument
not being named `final` even though that's evidently the case.

With this change, the error-message actually makes it clear what's
wrong:

    [ma27@carsten:~/Projects/nix/tmp]$ nix flake check --extra-experimental-features 'nix-command flakes' path:$(pwd)
    error:
           … while checking flake output 'overlays'

             at /nix/store/clgblnxx003hyrq8qkz5ab6kgqkck6qc-source/flake.nix:4:5:

                3|   outputs = { ... }: {
                4|     overlays.x86_64-linux.snens = final: prev: {
                 |     ^
                5|       kek = throw "snens";

           … while checking the overlay 'overlays.x86_64-linux'

             at /nix/store/clgblnxx003hyrq8qkz5ab6kgqkck6qc-source/flake.nix:4:5:

                3|   outputs = { ... }: {
                4|     overlays.x86_64-linux.snens = final: prev: {
                 |     ^
                5|       kek = throw "snens";

           error: overlay is not a lambda, but a set instead
2023-06-27 14:58:29 +02:00
..
build-remote Put worker protocol items inside a WorkerProto struct 2023-06-19 12:08:23 -04:00
libcmd Clean up a few things related to profiles (#8526) 2023-06-19 04:04:59 +00:00
libexpr Merge pull request #8576 from obsidiansystems/findPath-cleanup 2023-06-26 12:37:06 +02:00
libfetchers Merge pull request #5385 from Enzime/add/dirty-rev 2023-06-24 14:55:31 +02:00
libmain nix: Support the --repair flag 2023-04-28 17:03:04 +02:00
libstore Merge pull request #8519 from fricklerhandwerk/reword-trusted-users 2023-06-23 13:08:46 +02:00
libutil Merge pull request #8374 from obsidiansystems/improve-path-setting 2023-06-21 15:40:43 -04:00
nix nix flake check: improve error message if overlay is not a lambda (#8582) 2023-06-27 14:58:29 +02:00
nix-build nix: Support the --repair flag 2023-04-28 17:03:04 +02:00
nix-channel Add nix-channel --list-generations 2023-06-02 10:12:35 +02:00
nix-collect-garbage Clean up a few things related to profiles (#8526) 2023-06-19 04:04:59 +00:00
nix-copy-closure Remove FormatOrString and remaining uses of format() 2023-03-02 15:57:54 +01:00
nix-env Clean up a few things related to profiles (#8526) 2023-06-19 04:04:59 +00:00
nix-instantiate nix: Support the --repair flag 2023-04-28 17:03:04 +02:00
nix-store Create worker_proto::{Read,Write}Conn 2023-06-19 12:08:23 -04:00
resolve-system-dependencies Remove FormatOrString and remaining uses of format() 2023-03-02 15:57:54 +01:00
toml11 Replace cpptoml with toml11 2021-12-17 22:03:33 +01:00