Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add inputs.self.submodules flake attribute #12421

Merged
merged 11 commits into from
Feb 10, 2025

Conversation

edolstra
Copy link
Member

@edolstra edolstra commented Feb 4, 2025

Motivation

This allows a flake to specify that it needs Git submodules to be enabled (or disabled, if we ever change the default) on the top-level flake. This requires the input to be refetched, but since the first fetch is lazy, this shouldn't be expensive.

Currently the only attribute allowed by inputs.self is submodules, but more can be added in the future (e.g. a lazy attribute to opt in to lazy tree behaviour).

Fixes #5312, #9842.

TODO: add docs, release note.

Context


Add 👍 to pull requests you find important.

The Nix maintainer team uses a GitHub project board to schedule and track reviews.

Future-proofing for when 'nix flake metadata' won't return a store
path anymore.
This prepares lazy access to flake.nix etc.
This allows a flake to specify that it needs Git submodules to be
enabled (or disabled, if we ever change the default) on the top-level
flake. This requires the input to be refetched, but since the first
fetch is lazy, this shouldn't be expensive.

Currently the only attribute allowed by `inputs.self` is `submodules`,
but more can be added in the future (e.g. a `lazy` attribute to opt in
to lazy tree behaviour).

Fixes NixOS#5312, NixOS#9842.
@github-actions github-actions bot added new-cli Relating to the "nix" command with-tests Issues related to testing. PRs with tests have some priority fetching Networking with the outside (non-Nix) world, input locking labels Feb 4, 2025
Luflosi added a commit to Luflosi/Bachelor-Thesis that referenced this pull request Feb 7, 2025
Nix (with flakes) has an annoying behaviour where a Git subproject won't automatically be available, so a workaround is required.
See NixOS/nix#5284 and NixOS/nix#12421.
Copy link
Member

@roberth roberth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just the one question. Rest lgtm.

src/libflake/flake/flake.cc Outdated Show resolved Hide resolved
@edolstra edolstra enabled auto-merge February 10, 2025 16:22
@edolstra edolstra merged commit 92bf150 into NixOS:master Feb 10, 2025
10 checks passed
@edolstra edolstra deleted the self-input-attrs branch February 10, 2025 16:35
@tomberek
Copy link
Contributor

Fixes: #7862

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation fetching Networking with the outside (non-Nix) world, input locking new-cli Relating to the "nix" command with-tests Issues related to testing. PRs with tests have some priority
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support self-fetching parameters in flake.nix
3 participants