WIP: Separate installer and sub-components as skeleton from updatable system#329
WIP: Separate installer and sub-components as skeleton from updatable system#329yfyf wants to merge 12 commits intodividat:mainfrom
Conversation
Also semi-convert configuration into a module.
Forcing divergence between system and installer / skeleton to check whether e2e tests pass and etc.
A bit silly, since it is only needed for computing the size for /boot. Could (Should?) be hard-coded instead?
|
E2E tests seem to pass 🥳 |
|
|
||
| rauc = (import ./rauc) super; | ||
| # use RAUC from installer/skeleton | ||
| rauc = (import ../installer/pkgs).rauc; |
There was a problem hiding this comment.
This might be an overkill, because it pulls in all the dependencies from installer's nixpkgs.
If we want to avoid this, we could do:
| rauc = (import ../installer/pkgs).rauc; | |
| rauc = (import ../installer/pkgs/rauc) super; |
The resulting RAUC bundle size difference is quite minimal, around 50MB:
- with RAUC deps from runtime nixpkgs: 1323M
- with RAUC deps from installer nixpkgs: 1371M
|
Further thoughts regarding skeleton versioning and update testing in the context of this PR. With a bit effort, we could put the installer/skeleton into a separate git repo, even convert it into a flake with just two inputs ( However, versioning the installer/skeleton is not strictly necessary for automated testing, because I think the current release validation testing already covers all the relevant scenarios:
It might be useful to have the skeletons versioned anyway for nomenclature / process reasons, so that we can easily refer to them when documenting things and etc. Footnotes
|
knuton
left a comment
There was a problem hiding this comment.
Very good thinking, this seems like a great approach and conceptual cleanup!
| @@ -0,0 +1,17 @@ | |||
| let | |||
| nixpkgs = builtins.fetchTarball { | |||
| # nixos-24.05 2024-10-07 | |||
There was a problem hiding this comment.
Since we don't plan to bump this on the regular, maybe there's some kind of context to capture about the specific version picked
(Comment probably premature)
There was a problem hiding this comment.
Yeah, this is just temporarily set to one of the earlier releases (dc92081). It's an important question to decide on what this should be set to as it would become the "golden standard" for a long time.
| with systemMetadata; | ||
| let | ||
| # TODO: WIP ^_^ | ||
| greeting = label: '' |
There was a problem hiding this comment.
I support a new greeting art, and inlining it
There was a problem hiding this comment.
The current greeting is broken also, because the label text overflows the next line gets indented.
Reviewing the general situation, I believe it makes little sense that we mash together the packages and configuration needed for the runtime system and the installer into one big mess.
The installer really only needs the system image (a tar blob) + system metadata (a bunch of strings) as inputs. It does not care about what packages are in the system or how it is configured.
In fact, it should be the opposite, the runtime system should depend on the specific skeleton/layout produced by the installer, which involves:
This PR attempts to break apart the two systems, paving the path for a clear delineation between "skeleton" and the updatable system.
In particular:
configurationis no longer sharedTODOs:
/bootso thatplayos-diagnosticscan read it easilyinstaller/to be renamed toskeleton/officiallysystem.nixos.labelandenvironment.etc.os-releaseusing the systemMetadata