Skip to content

Conversation

@sellout
Copy link
Owner

@sellout sellout commented Jan 13, 2026

The outputs are the only part of the flake that are actually a Nix expression1. This makes it easier to deal with that by pulling outputs into an actual Nix file.

This also helps with reducing templating – because flake.nix isn’t a Nix expression and since Project Manager runs from the flake, flake.nix must be part of the template. Extracting outputs makes it easier to see what can actually be removed, and reduces conflicts in flake.nix when the template is updated.

Footnotes

  1. Even that isn’t quite true – outputs isn’t an arbitrary function, but must syntactically have a single argument. That is, we can’t η-reduce outputs to get rid of the inputs argument.

The outputs are the only part of the flake that are actually a Nix
expression[^1]. This makes it easier to deal with that by pulling `outputs` into
an actual Nix file.

[^1]: Even that isn’t quite true – `outputs` isn’t an arbitrary function, but
must syntactically have a single argument. That is, we can’t η-reduce `outputs`
to get rid of the `inputs` argument.

This also helps with reducing templating – because flake.nix isn’t a Nix
expression and since Project Manager runs from the flake, flake.nix _must_ be
part of the template. Extracting outputs makes it easier to see what can
actually be removed, and reduces conflicts in flake.nix when the template is
updated.
@sellout sellout merged commit dd68647 into main Jan 13, 2026
67 checks passed
@sellout sellout deleted the extract-flake-outputs branch January 13, 2026 19:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants