-
-
Notifications
You must be signed in to change notification settings - Fork 59
Qube per appvm app manager #10883
Copy link
Copy link
Open
Labels
C: Qubes GUI toolsThis issue pertains to Qubes GUI tools such as the Qube Manager and Qubes widgets.This issue pertains to Qubes GUI tools such as the Qube Manager and Qubes widgets.C: otherNo other component ("C:") label applies to this issue, or the appropriate label is not yet known.No other component ("C:") label applies to this issue, or the appropriate label is not yet known.P: defaultPriority: default. Default priority for new issues, to be replaced given sufficient information.Priority: default. Default priority for new issues, to be replaced given sufficient information.help wantedThis issue will probably not get done in a timely fashion without help from community contributors.This issue will probably not get done in a timely fashion without help from community contributors.uxThis issue pertains to the user experience (UX) in Qubes OS.This issue pertains to the user experience (UX) in Qubes OS.
Metadata
Metadata
Assignees
Labels
C: Qubes GUI toolsThis issue pertains to Qubes GUI tools such as the Qube Manager and Qubes widgets.This issue pertains to Qubes GUI tools such as the Qube Manager and Qubes widgets.C: otherNo other component ("C:") label applies to this issue, or the appropriate label is not yet known.No other component ("C:") label applies to this issue, or the appropriate label is not yet known.P: defaultPriority: default. Default priority for new issues, to be replaced given sufficient information.Priority: default. Default priority for new issues, to be replaced given sufficient information.help wantedThis issue will probably not get done in a timely fashion without help from community contributors.This issue will probably not get done in a timely fashion without help from community contributors.uxThis issue pertains to the user experience (UX) in Qubes OS.This issue pertains to the user experience (UX) in Qubes OS.
Type
Fields
Give feedbackNo fields configured for Feature.
The problem you're addressing (if any)
Currently the options are to use snap or flatpak with the --user tag to install apps in appVMs, or to add the app to the overall template, and depending on the app it will not save app states between reboots:
For example if i configure an app that doesn't store settings in the user folder a certain way for one appVM and another way for another appVM, I have to clone the template and make the exact same template again.
Or if i want to have risky disposable qubes that should have barebones installs i'd have to make a disposable template separately from the other templates.
The solution you'd like
RPM ostree works similarly to a git tree:
Package installs should not happen at the OS template level, but instead fork into git style branches depending on the qube, reusing packages if they are already available.
Qubes should give the option to set up these app templates to either:
1-Do an initial setup that gets applied every boot, afterwards persist user changes OS wide between boots, if the user wants to.
2- Do an initial setup that gets applied every boot (but changes between boots are wiped).
3- Or to start fresh every time.
Example: base fedora template -> common packages between qubes 1, 2, 3 ->
1- qube 1 additional packages -> qube 1 user setup -> qube 1 last boot changes -> qube 1-> save changes to an overlay similar to RPM-ostree, apply on next boot.
2- qube 2 additional packages -> qube 2 user setup -> qube 2 -> wipes changes between boots except for user folder unless its set as disposable
3- qube 3 additional packages -> qube 3 -> wipe all changes on reboot except for user folder unless its set as disposable -> start fresh (same as the current behavior for appVMs)
This should be manageable from the qubes manager GUI
Packages should be stored in a sys-tree-vault qube containing different versions of packages used by different qubes:
If edits to files during user-setup are equal they are merged into branches to save disk space.
Branches should can also be used to make tree style app templates (allowing for user initial configs to be shared between qubes, without affecting the base OS template)
If necessary a second reference sys-tree-vault could also be added to mitigate any future exploit risks that might attempt to infect the vault:
This would be similar to A/B android systems (but with vault qubes), which checks for vault integrity and allows users to revert to a previous state.
There should also be the ability for users to make their own app templates.
Example: The OS templates only include the minimal base OS. If the user wants fedora-43-xfce, they will have to install the xfce app template over the fedora-43-minimal base OS template.
The value to a user and who that user might be
Less disk space usage, easier setup of packages, better experience in general.
Every user would benefit from this, especially those that can't spend hours setting up and troubleshooting every time they want to do anything productive.
It would also make qubes way easier to deploy, manage and use.
Additionally this would increase security:
Preinstalled packages in OS templates could be used as parts of exploits/exploit-chains, so being able to granularly control what gets added to what qube would make the entire OS safer.
Completion criteria checklist
No response