Currently the size of the Gnome ISO is halting the progress of nixos-unstable
for more than a week now, and there are currently different approaches to mitigate the problem short to midterm.
This ranges from reducing the size of the ISO (short term) to temporarily increase the allowed size of store pathes (mid term).
In my opinion, the only viable long term solution is to remove the Gnome ISO all together, among all the installers it has the worst UX (yes, even worse than the minimal, as the minimal at least shows a greeting).
My suggestion to new users is always the Plasma ISO, as the most needed things for the installation are right there as desktop shortcuts. GParted, a Terminal and a link to the docsâŚ
Usually the only reason for using Gnome at all, is because the generator uses a template that enables Gnome as default DE instead of Plasma.
On the other hand side, there have been experiments with Calamares to create a fully fledged installation wizard. I still consider this approach a viable solution, but due to the fact that it is an ongoing project that started before I began to use Nix, it will probably never really finished.
Therefore we discussed a new idea in the Discord yesterday, which I want to present and further discuss here, before it might get solidified into a RFC.
The main idea is to not have different templates for the generator based on the installer used, but instead make the generator aware of âflavorsâ which can be chosen using a command line argument.
Such that one can use nixos-generate-config --root /mnt --flavor plasma
to generate a plasma based configuration, or --flavor gnome3
for Gnome. Another built-in flavor could be minimal
or non-gui
or something like that.
In general the discussion in the Discord quickly evolved in a lot of suggestions for different flags that controll different aspects. This got quite complex quickly such that the next idea was born.
A generator that asks questions interactively for the various aspects.
- Desktop flavor:
plasma
,gnome
,xfce
,none
and whatnot. - Network: pure declarative network management, mixed mode or network manager
- hostname
- depending on the choice ask more questions to make sure there will be network after boot, including offering of the unfree wireless drivers to increase probability that network will work after boot
- Initial user creation
- Ask for an inital password and set
initialHashedPassword
. - User groups
- user shell (and enable that shell through
programs.$shell.enable
as well)
- Ask for an inital password and set
Other suggestions that have been made, included interactive setting up of services, though for a CLI generator that task has been considered as too complex, as one had to skip all the not needed services manually, or there had to be an overwhelming list of services which one had to choose from. After some discussion we considered both variants as not necessary for the first iteration or as a valuable enhemcement for a GUI based generator.
But it has also been asked, whether or not we can get a --flake
option which would not only create the config but a flake skelleton as well.
Ultimately this approach would allow us to have just a single ISO with a minimal GUI environment. Someone in the chat suggested LXQt as beeing simple, small and functional. As an alternative using a WM has been discussed that gets configured in a way that everything necessary is accessible from the âdesktopâ, including NetworkManager and a reboot button.