Files
lix/tests
Maximilian BoschandGitHub 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
..
2023-04-19 18:49:50 -04:00
2023-03-16 18:43:03 -04:00
2020-04-14 18:45:06 +02:00
2023-05-08 08:01:58 -04:00
2021-07-07 10:48:47 +02:00
2019-12-13 19:05:26 +01:00
2023-03-08 10:26:30 -05:00
2023-03-08 10:26:30 -05:00
2023-03-08 10:26:30 -05:00
2022-12-08 16:03:20 -05:00
2023-03-16 18:43:03 -04:00
2014-08-21 21:50:19 +02:00
2023-03-08 10:26:30 -05:00
2023-03-08 10:26:30 -05:00
2022-12-06 16:36:42 +01:00
2023-03-08 10:26:30 -05:00
2023-03-08 10:26:30 -05:00
2023-03-16 18:43:03 -04:00
2023-03-08 10:26:30 -05:00
2021-07-07 11:30:35 +02:00
2023-03-08 10:26:30 -05:00
2023-06-06 11:24:10 +02:00
2023-03-08 10:26:30 -05:00
2018-02-13 14:26:19 +00:00
2023-03-16 18:43:03 -04:00
2023-03-16 18:43:03 -04:00
2023-03-16 18:43:03 -04:00
2023-03-08 10:26:30 -05:00
2023-03-08 10:26:30 -05:00
2020-07-30 16:38:04 -05:00
2023-03-08 10:26:30 -05:00
2022-03-11 10:00:19 -05:00
2023-03-08 10:26:30 -05:00
2023-03-16 18:43:03 -04:00
2006-07-21 13:21:43 +00:00
2023-04-17 09:35:43 -04:00
2023-03-08 10:26:30 -05:00
2023-04-06 19:59:57 -04:00
2023-03-08 10:26:30 -05:00
2023-03-08 10:26:30 -05:00
2023-03-08 10:26:30 -05:00
2020-07-30 16:38:04 -05:00
2023-03-16 18:43:03 -04:00
2018-01-16 19:23:18 +01:00
2023-03-08 10:26:30 -05:00
2021-10-15 16:58:21 +02:00
2023-04-06 19:59:57 -04:00
2018-01-16 19:23:18 +01:00
2023-03-08 10:26:30 -05:00
2018-02-25 16:40:05 -06:00
2023-03-08 10:26:30 -05:00
2016-04-11 16:20:15 +02:00
2023-03-16 18:43:03 -04:00
2021-12-07 21:45:09 +01:00
2007-08-13 13:15:02 +00:00
2023-03-08 10:26:30 -05:00
2023-03-08 10:26:30 -05:00
2023-03-08 10:26:30 -05:00
2023-03-16 18:43:03 -04:00
2012-12-04 14:47:50 +01:00
2023-03-08 10:26:30 -05:00
2023-03-08 10:26:30 -05:00
2021-04-09 23:13:08 +02:00