* RFC 0125: Use an intermediary representation (bootspec) for bootloader backends
Bootspec is a set of memoized facts about a system's closure.
These facts are used as the primary input for bootloader backends like
systemd-boot and grub, for creating files in `/boot/loader/entries/`
and `grub.cfg`.
In this proposal we create a stable, comprehensive, and machine-parsable
definition of a NixOS Generation as an intermediate representation (IR)
between the NixOS system definition and the bootloader management tools.
* bootspec: relocate to $out/bootspec/boot.v1.json
* Clarify that this document describes bootspec v1
* Note that the filename must match the contained schemaVersion.
* Replace the specialisation's pointer to a bootspec with the full bootspec document
* Clarify the 'to interface with' bit
* Link to the bootspec implementation PR
* Note it is likely for bootloader backends to change their results slightly by integrating bootspec
* Relocate to $out/boot.json, top-level key of specification version
* Fix nits from code review
Co-authored-by: Cole Helbling <cole.e.helbling@outlook.com>
Co-authored-by: Linus Heckemann <git@sphalerite.org>
* 0125-bootspec: add the shepherd team and leader
Co-authored-by: Kevin Cox <kevincox@kevincox.ca>
* 0125-bootspec: initrd is optional, add system, extensions, clarify the meaning of optional
* PR: address comments (1)
Co-authored-by: Cole Helbling <cole.e.helbling@outlook.com>
* PR: address comments (2)
Co-authored-by: Cole Helbling <cole.e.helbling@outlook.com>
* Update RFC text with changes agreed on with RaitoBezarius
---------
Co-authored-by: Cole Helbling <cole.helbling@determinate.systems>
Co-authored-by: Cole Helbling <cole.e.helbling@outlook.com>
Co-authored-by: Linus Heckemann <git@sphalerite.org>
Co-authored-by: Kevin Cox <kevincox@kevincox.ca>
Co-authored-by: Raito Bezarius <masterancpp@gmail.com>
The main sections are largely copy+pasted from the RFC text itself. Minor modifications were made to integrate into the existing document.
- Change to future tense to reflect what actions will be taken in each scenario.
- Fix up some links to be relative to this document.
- Update template message to be a codeblock for easy copy+pasting when used.
* nix-store-layer: Copy template
* nix-store-layer: First draft
* nix-store-layer: pluralism -> marketplace of ideas
Thanks @fricklerhandwerk for the suggestion.
* nix-store-layer: Tweak Tvix and go-nix section
* nix-store-layer: Make Store team future work
* nix-store-layer: Start tidying Guix section
* nix-store-layer: Boild down Guix section further
Implementation discussion is unneeded for now.
* nix-store-layer: Make incrementality of design clear
Do this by putting the steps in order with numbers, and showing how the
hardest part can come last.
Thanks @fricklerhandwerk for the suggestion.
* nix-store-layer: Give RFC number
* nix-store-layer: Fix typo
Meaning was reversed!
* Update rfcs/0134-nix-store-layer.md
Thanks!
Co-authored-by: Tor Bjornrud <bjornrud@users.noreply.github.com>
* nix-store-layer: Fix typo
Thanks!
Co-authored-by: Adam Joseph <54836058+amjoseph-nixpkgs@users.noreply.github.com>
* Apply suggestions from code review
Thanks so much!!!
Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io>
* Apply suggestions from code review
Thanks @fricklerhandwerk, just tweaked a few things from your suggestions to make these.
* nix-store-layer: Cut stabilization in future work down
Can just refer to https://github.com/NixOS/rfcs/pull/136 now.
* Apply suggestions from code review
Co-authored-by: Linus Heckemann <git@sphalerite.org>
Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io>
* 134: We have a shepherd team!
Co-authored-by: Linus Heckemann <git@sphalerite.org>
* 134: Move manual and store-specific tests to future work
As discussed in today's meeting.
* 134: Alt name moved to future work
---------
Co-authored-by: Tor Bjornrud <bjornrud@users.noreply.github.com>
Co-authored-by: Adam Joseph <54836058+amjoseph-nixpkgs@users.noreply.github.com>
Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io>
Co-authored-by: Linus Heckemann <git@sphalerite.org>
* Initial nixos container commit because I want to view diffs between changes
* Updates / Improvements
* Note regarding static networking
* Updates
* update
* Update.
* Update.
* Update
Thanks Linus for the proof-read :)
* Update.
Mention that nixops container backend is also affected as pointed out by
fpletz.
* fixup! wording, spelling
* Move document according to assigned RFC number
* Linkify related issues
As it's done in https://github.com/NixOS/rfcs/blob/master/rfcs/0004-replace-unicode-quotes.md
* Bind-mounting Nix state isn't strictly needed
It's sufficient to have the store-paths available.
* Wording
Co-authored-by: Kevin Cox <kevincox@kevincox.ca>
* Clarify "default mode", remove a few unnecessary implementation details
* rfc108: add shepherds
Co-authored-by: Jörg Thalheim <Mic92@users.noreply.github.com>
* Apply wording suggestions from @lheckemann
Co-authored-by: Linus Heckemann <git@sphalerite.org>
* Usage of `nsenter` to update a container's configuration is not relevant for the RFC
* Rename `config` to `system-config` to avoid ambiguities in the module system
* Explicitly talk about deprecation of current implementation
Co-authored-by: Erik Arvstedt <erik.arvstedt@gmail.com>
Co-authored-by: Kevin Cox <kevincox@kevincox.ca>
Co-authored-by: Jörg Thalheim <Mic92@users.noreply.github.com>
Co-authored-by: Linus Heckemann <git@sphalerite.org>
* Initial draft "ret-cont" recursive Nix
* Fix typos and finish trailing sentance
* Switch to advocating temp store rather than daemon socket
Also:
- Allow fixed output builds (in that temp store)
- Clean up drawbacks and alternatives.
* ret-cont-recursive-nix: Fix typo
Thanks @siddharthist!
Co-Authored-By: Ericson2314 <git@JohnEricson.me>
* ret-cont-recursive-nix: Fix typo
Thanks @Mic92
Co-Authored-By: Ericson2314 <git@JohnEricson.me>
* ret-cont-recursive-nix: Fix typo
Thanks @globin
Co-Authored-By: Ericson2314 <git@JohnEricson.me>
* ret-cont-recursive-nix: Fix typo
Thanks @siddharthist!
Co-Authored-By: Ericson2314 <git@JohnEricson.me>
* ret-cont-recursive-nix: Clean up motivation, adding examples
* ret-cont-recursive-nix: Improve syntax highlighting
* Do a lousy job formalizing the detailed design
Break off some previously inline observations into their own subsection.
* ret-cont-recursive-nix: Mention `builtins.exec` in alternatives
* ret-cont-recursive-nix: Fix typo
Thanks @Mic92!
Co-Authored-By: Ericson2314 <git@JohnEricson.me>
* ret-cont-recursive-nix: Remove dangling "$o"
The later examples with `nix-instantiate` automatically get all the outputs of the final rewritten drv, so there's no output iteration needed. `"$o"` was mistakenly copied over from the earlier examples.
Thanks to @ocharles for asking me the question that led me to this. Hopefully this change answers that?
* Update rfcs/0000-ret-cont-recursive-nix.md
Co-Authored-By: Domen Kožar <domen@enlambda.com>
* ret-cont-recursive: Fix typo
about -> out
* ret-cont: Add examples and expand future work
* ret-cont: Fix syntax error
No `let`, so don't need `in`.
* ret-cont: Mention Ninja's upcomming `dyndep` and C++ oppertunity
* ret-cont: Fix missing explicit `outputs` and `__recursive`
This was in the "wrapper" derivation example.
* ret-cont: "caching builds" -> "caching evaluation"
We already cache builds just fine, thanks!
Thanks @globin for catching
* ret-cont: Improve formalism and reference #62
* drv-build-drv: Start drafting from old ret-cont-recursive-nix RFC
* drv-buiild-drv: WIP rewrite
* plan-dynamism: Rewrite RFC yet again
* plan-dynamism: Rename file accordingly
* plan-dynanism: Fix typo
Thanks @mweinelt.
* plan-dynanism: Fix formalism slightly
* Apply suggestions from code review
Thanks!
Co-authored-by: Rosario Pulella <Rosariopulella@gmail.com>
Co-authored-by: Ninjatrappeur <NinjaTrappeur@users.noreply.github.com>
* plan-dynamism: `Buildables` -> `DerivedPathsWithHints`
Thanks @sternenseemann for catching.
* plan-dynamism: Add semantics and examples for `!` syntax
* plan-dynamism: Too many dashes in `--derivation`
* plan-dynanism: Put pupose of text hashing before name
* Apply suggestions from code review
Co-authored-by: Ollie Charles <ollie@ocharles.org.uk>
* Apply suggestions from code review
Co-authored-by: Ollie Charles <ollie@ocharles.org.uk>
* Apply suggestions from code review
* Update rfcs/0000-plan-dynanism.md
* plan-dynanism: Fix bad sentence
Thanks @roberth!
* plan-dynamism: Number the two parts
* plan-dynamism: Rip out part 2
There is more to do I'm sure, but I wanted to get the ball rolling.
* plan-dynamism: New motivation
* plan-dynamism: Fix typo
Thanks @L-as
* TEMP PLES AMEND
* [RFC 0092] Rename file
* [RFC 0092] Fix YAML header
* [RFC 0092] Rewrite summary
* [RFC 0092] Add link to documentation
* [RFC 0092] Rewrite example section
* [RFC 0092] Small fix
* [RFC 0092] Rewrite drawbacks and alternatives
* [RFC 0092] Improve alternatives section
* [RFC 0092] Fix syntax error
* [RFC 0092] Small change
* [RFC 0092] Remove unnecessary file
* [RFC 0092] Add comment about IFD
* [RFC 0092] Fix typo
* Update rfcs/0092-plan-dynamism.md
Co-authored-by: Jörg Thalheim <Mic92@users.noreply.github.com>
* plan-dynamism-experiment: Make clear is experimental
* plan-dynamism-experiment: Fix typo
Thanks @L-as
Co-authored-by: Langston Barrett <langston.barrett@gmail.com>
Co-authored-by: Jörg Thalheim <Mic92@users.noreply.github.com>
Co-authored-by: Robin Gloster <mail@glob.in>
Co-authored-by: Domen Kožar <domen@enlambda.com>
Co-authored-by: Rosario Pulella <Rosariopulella@gmail.com>
Co-authored-by: Ninjatrappeur <NinjaTrappeur@users.noreply.github.com>
Co-authored-by: Ollie Charles <ollie@ocharles.org.uk>
Co-authored-by: Las Safin <me@las.rs>
Co-authored-by: Eelco Dolstra <edolstra@gmail.com>
* CAP RFC: First draft
* typo
* Apply @grahamc's suggestions
Co-Authored-By: Graham Christensen <graham@grahamc.com>
* nix code -> Nix expression
* Break-up the big introduction paragraph
As suggested in https://github.com/NixOS/rfcs/pull/62/files#r356694585
* Rename to match the PR number
* Rename the drv attribute to __contentAddressed
Makes it more in line with other "magic" attributes like
`__structuredAttributes`
Also fix the orthograph
* Mention the GC issue
* Remove the ambiguity on what an `output` is
* Replace aliases paths by a pathOf mapping
* Move the example after the design description
* Rephrase the design
In particular, replace `static` and `dynamic` by `symbolic` and
`resolved`
* Add shepherd team
* Rewrite the RFC to account for the RFC meeting comments
- Add the notion of `drvOutputId`
- Replace the alias paths by a `PathOf(drvOutputId)` function
- Mention the notion of "truster" in the `PathOf` function
* Add a section about leaking output paths
* Refine the design summary
* Rename dependency-addressed into input-addressed
And define the term at the begining of the RFC
* minor fixup after comments
* Apply suggestions from code review
Co-authored-by: asymmetric <lorenzo@mailbox.org>
Co-authored-by: Profpatsch <philip.patsch@tweag.io>
* Update rfcs/0062-content-addressed-paths.md
* Update the terminology to match the in the implementation
* Reword the detailed design presentation
* Quote some strings in the yaml frontmatter
* Add a design paragraph about the remote caching
And update the “unresolved questions” to take it into account
* Lift the determinism requirement
It's not required anymore by the current remote caching semantics
* Typo
Co-authored-by: davidak <davidak@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: davidak <davidak@users.noreply.github.com>
* Rewrite the RFC
This is mostly a full-rewrite of the RFC to
1. Make it more “incremental”: A first part just describes the minimal
model upon which everything is based, and a second one shows
different extensions of this model to add more features
2. Remove the big ugly examples that don’t add much value because they
aren’t really readable
3. Add a python pseudo-code pseudo-formalisation of the RFC.
This is imho both more readable and precise than nested bullet-points
of handwaved language
* Make the python samples a bit more pythonic
Co-authored-by: zseri <zseri.devel@ytrizja.de>
* Explicit that unresolved dependencies are eval-time
* Prettify
* Make the end-goal an experiment
Simplify the paperwork and just get this to FCP because right now it’s stuck in a hole
Co-authored-by: Théophane Hufschmitt <regnat@users.noreply.github.com>
Co-authored-by: Graham Christensen <graham@grahamc.com>
Co-authored-by: John Ericson <John.Ericson@Obsidian.Systems>
Co-authored-by: asymmetric <lorenzo@mailbox.org>
Co-authored-by: Profpatsch <philip.patsch@tweag.io>
Co-authored-by: Jörg Thalheim <Mic92@users.noreply.github.com>
Co-authored-by: Eelco Dolstra <edolstra@gmail.com>
Co-authored-by: davidak <davidak@users.noreply.github.com>
Co-authored-by: zseri <zseri.devel@ytrizja.de>