Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,11 @@ let
name: sourceInfo: flake:
let
specs = flake.inputs or { };
names = builtins.attrNames specs;
inputs = builtins.mapAttrs (sub: spec: resolveSubInput name sub spec) specs;
outputs = flake.outputs (inputs // { inherit self; });
indirect = builtins.mapAttrs (sub: _: resolveSubInput name sub { }) (
builtins.functionArgs flake.outputs
);
outputs = flake.outputs (indirect // inputs // { inherit self; });
self =
sourceInfo
// outputs
Expand Down
8 changes: 8 additions & 0 deletions fixtures/indirect-flake/flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
# Note: no inputs.nixpkgs declared — outputs takes `nixpkgs` indirectly.
outputs =
{ nixpkgs, ... }:
{
usedNixpkgs = nixpkgs;
};
}
16 changes: 16 additions & 0 deletions tests.nix
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,22 @@ in
expected = "/nested-nixpkgs";
};

# ── Indirect inputs (outputs function args not declared in inputs) ────────

indirect.test-outputs-accepts-indirect-input-override = {
# The flake at ./fixtures/indirect-flake has no inputs.nixpkgs declared,
# but its `outputs` takes a `nixpkgs` argument.
expr =
let
result = with-inputs {
nixpkgs = mkSrc "/our-nixpkgs";
mylib = mkSrc ./fixtures/indirect-flake;
} { };
in
result.mylib.usedNixpkgs.outPath;
expected = "/our-nixpkgs";
};

# ── Functor / self ─────────────────────────────────────────────────────────

functor-self.test-outputs-function-receives-with-inputsd-inputs = {
Expand Down
Loading