-
-
Notifications
You must be signed in to change notification settings - Fork 158
[RFC 0123] Flake names #123
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
base: master
Are you sure you want to change the base?
Changes from 2 commits
9515060
08d1fc5
bae96ea
53b1dc7
a108a3b
9acd46f
23e44a1
bb09d85
b077d31
79d2e61
0cb078f
e3b651f
7811f0e
d8c2e19
c3bdc8d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||
|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,54 @@ | ||||||||
| --- | ||||||||
| feature: flake-names | ||||||||
| start-date: 2022-03-12 | ||||||||
| author: Anselm Schüler | ||||||||
| co-authors: None | ||||||||
| shepherd-team: None | ||||||||
| shepherd-leader: None | ||||||||
| related-issues: None | ||||||||
| --- | ||||||||
|
|
||||||||
| # Summary | ||||||||
| [summary]: #summary | ||||||||
|
|
||||||||
| Flakes can declare the field `name`. | ||||||||
| It represents the name of the flake. | ||||||||
| The derivations for a flake are no longer called `source`, but use the flake name. | ||||||||
|
|
||||||||
| # Motivation | ||||||||
| [motivation]: #motivation | ||||||||
|
|
||||||||
| Flake-centric workflows often end up with a lot of derivations named “source”, and it’s difficult to navigate this. | ||||||||
|
||||||||
| Also, the discoverability and usability of flakes needs to be improved. Current commands mostly show technical information. This would be a step in the right direction. | ||||||||
|
|
||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||
| # Detailed design | ||||||||
| [design]: #detailed-design | ||||||||
|
|
||||||||
| A new supported property for flakes is introduced, `name`. | ||||||||
| Running `nix flake metadata` on a flake that declares this field displays it at the top. | ||||||||
| The derivation that contains the flake’s content is called `flake-source-${name}` or, if a short revision identifier is available, `flake-source-${name}-${shortRev}`. | ||||||||
|
|
||||||||
| # Examples and Interactions | ||||||||
| [examples-and-interactions]: #examples-and-interactions | ||||||||
|
|
||||||||
| A flake that is in the registry should have its name match the registry identifier. | ||||||||
|
||||||||
|
|
||||||||
| # Drawbacks | ||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The big drawback here (where “big” would probably need to be refined, I’ve no idea how much of an issue it is in practice) is that since the name is part of the store path, two flakes with the same content but a different name will end-up in a different place in the store − which itself means that everything that depends on them would have to be rebuild.
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. But flakes with a different name will necessarily have different content? Or are the flake.* files not copied to the store?
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fair point (I had a convoluted scenario in mind, but that’s probably way out of the scope of this RFC now that I think of it). That’s actually highlighting an interesting design challenge: There’s currently a neat separation between the fetching code and the code that knows about what the flake is.
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Wouldn’t it be better to have this conversation outside the review widget? I feel like this aspect of the discussion is somewhat hidden & non-chronological.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
This can be solved by adding |
||||||||
| [drawbacks]: #drawbacks | ||||||||
|
|
||||||||
| This may cause clutter and additional maintenance. | ||||||||
|
|
||||||||
| # Alternatives | ||||||||
| [alternatives]: #alternatives | ||||||||
|
|
||||||||
| Flake names could be handled entirely through outside means, with things like the global registry merely pointing to flakes under names. | ||||||||
|
|
||||||||
| # Unresolved questions | ||||||||
| [unresolved]: #unresolved-questions | ||||||||
|
|
||||||||
| The name scheme could be changed. `flake-source-${name}-${shortRev}` could be too long. | ||||||||
|
|
||||||||
| # Future work | ||||||||
| [future]: #future-work | ||||||||
|
|
||||||||
| Flake discoverability and usability needs to be improved. | ||||||||
Uh oh!
There was an error while loading. Please reload this page.