nixspace icon indicating copy to clipboard operation
nixspace copied to clipboard

editable projects fail to build if a local flake.nix adds an input that isn't available upstream

Open chadac opened this issue 1 year ago • 0 comments

chadac@nixos: ~/code/github.com/chadac/nixspace-dev/root/service/gql-api main ⚡
$ ns build .#package                                                                                                                                                                                                                                 [9:28:55]
error:
       … while calling the 'derivationStrict' builtin

         at /builtin/derivation.nix:9:12: (source not available)

       … while evaluating derivation 'gql-api-1.0.0'
         whose name attribute is located at /nix/store/7b7m3p9gc9da6cd7wgyabs3wg1832j0v-source/pkgs/stdenv/generic/make-derivation.nix:348:7

       … while evaluating attribute 'buildInputs' of derivation 'gql-api-1.0.0'

         at /nix/store/7b7m3p9gc9da6cd7wgyabs3wg1832j0v-source/pkgs/stdenv/generic/make-derivation.nix:395:7:

          394|       depsHostHost                = elemAt (elemAt dependencies 1) 0;
          395|       buildInputs                 = elemAt (elemAt dependencies 1) 1;
             |       ^
          396|       depsTargetTarget            = elemAt (elemAt dependencies 2) 0;

       error: function 'outputs' called without required argument 'systems'

       at /nix/store/aj601p0hrd5sms9yvv3ifmr38mvdjm60-source/flake.nix:10:13:

            9|
           10|   outputs = { self, flake-parts, systems, ... }@inputs:
             |             ^
           11|     flake-parts.lib.mkFlake { inherit inputs; } {

This is due to the nixspace lockfile not tracking the new input locally in a way that can be easily overridden. We likely need to have some impure resolution logic which uses a project flake.lock for editable packages first.

chadac avatar Jan 05 '24 14:01 chadac