Nixpkgs: RFC: Graphical installer for NixOS

Created on 5 Jan 2017  路  18Comments  路  Source: NixOS/nixpkgs

Background

This is a project idea for Google Summer of Code 2017. I'm treating this more as a request for comment right now as opposed to a generic issue. Any and all feedback is welcome. Some of this proposal will probably change as I dive more into how Calamares works.

Issue description

Basically, NixOS has a fairly complicated installation process. Some proposals like nixos-assimilate attempt to make this process easier but they are still a fairly low-level operation. The goal is to make the installation process for NixOS as easy as more mainstream distros like Ubuntu and Fedora.

Proposal

This would rely heavily on Calamares, a distro-independent system installation framework. It's the best framework I've been able to find and so doesn't require reimplemented menus and things used by other distros. An important goal is to keep this all in Nix expressions to allow for configuring the Calamares installer just like you would any other service. Calamares will be added as a NixOS service which can be enabled in the NixOS configuration and eventually added as the default for our "demo" profiles.

Tasks

  • [x] Package Calamares
  • [ ] Add NixOS service
  • [ ] Implement Calamares modules as Nix expressions (reuse where possible)

    • [ ] "try NixOS" module (KDE desktop) [5]

    • [ ] networking module (NetworkManager) [6]

    • [ ] partitioning module (nixpart) [7]

    • [ ] NixOS configuration generator module (menus for common profiles) [10]

    • keep versatile enough to be usable as a generic NixOS options GUI

    • [ ] nixos-install module (nixos-assimilate) [11]

  • [ ] Add Calamares config file
  • [ ] Add NixOS branding to Calamares
  • [ ] Enable Calamares as demo profile
GSoC

Most helpful comment

something i was also planning on with my idea was a configuration.nix editor that is aware of the syntax and the available options: https://www.youtube.com/watch?v=rIdPKzYTN-w

and also to be able to run the gui over http, so you could remotely configure a server

All 18 comments

cc @cleverca22 because you were working on a GUI for NixOS options/partition editor.

Note: we used to have calamares: c677c359, in case you'd like a starting point...

cc @cleverca22 because you were working on a GUI for NixOS options/partition editor.

I hadn't seen nixos-installer! I'll have to figure out how it's working and see if this proposal is still needed.

I'd love to see this go somewhere - installing NixOS is currently a bit unfriendly.

@manveru and @seppeljordan are also working on an installer

@matthewbauer i at least managed to package calamares now. Played around a bit with branding and writing some simple python modules to generate a configuration.
My C++ skills are not good enough to write anything major for the GUI like a nixos configuration manager, but it should be good enough for getting an initial setup up and running.
I'm working on a nixos config editor for the browser as well, which might be useful down the line, but right now my priority is to get new users onboard ASAP.

The developers of elementary OS and Pop!_OS (System76) are creating a new Installer. They say all available installers are complicated to modify and don't have good user experience.

https://medium.com/elementaryos/meet-the-upcoming-installer-a499341218f5
https://github.com/elementary/installer/wiki

The Frontend is written in Vala and Gtk+ while the backend is written in Rust.

https://github.com/elementary/installer
https://github.com/pop-os/distinst

They want to have it ready in April 2018 for their distros.

By using it we could have very user friendly design like elementary OS and build on a clean and modern foundation. What do you think?

This is a nice example how a very customizable setup can look:

screenshot_2018-04-07_01-48-41

screenshot_2018-04-07_01-49-06

We can have the most important options there to get a desktop user started.

something i was also planning on with my idea was a configuration.nix editor that is aware of the syntax and the available options: https://www.youtube.com/watch?v=rIdPKzYTN-w

and also to be able to run the gui over http, so you could remotely configure a server

NixOS modules can be introspected (like the options page on nixos.org does), right? Make some icons for top-level configuration options and a heuristic for formatting options, and you're already most of the way there for the data required for a configuration.nix editor.

I see the liveCD is already available, but still no installer. I understand it is no priority, but it would be nice to just hop on, Install nixos with GUI and mess around. GUI package manager would make it even more accessible. That is if nixos is intended for general use.

something i was also planning on with my idea was a configuration.nix editor that is aware of the syntax and the available options: https://www.youtube.com/watch?v=rIdPKzYTN-w

and also to be able to run the gui over http, so you could remotely configure a server

Generating form UIs from a spec has been explored in e.g. react-jsonschema-form, in that case using JSON schema as a specification rather than Nix...

This issue has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/is-anyone-working-on-a-gui-tool-to-manage-packages/5540/4

FYI: @manveru is working on a graphical NixOS installer based on Calamares.

https://discourse.nixos.org/t/what-are-your-goals-for-20-03/4773/7?u=davidak

I'm looking forward to be able to test it :)

Hello, I'm a bot and I thank you in the name of the community for opening this issue.

To help our human contributors focus on the most-relevant reports, I check up on old issues to see if they're still relevant. This issue has had no activity for 180 days, and so I marked it as stale, but you can rest assured it will never be closed by a non-human.

The community would appreciate your effort in checking if the issue is still valid. If it isn't, please close it.

If the issue persists, and you'd like to remove the stale label, you simply need to leave a comment. Your comment can be as simple as "still important to me". If you'd like it to get more attention, you can ask for help by searching for maintainers and people that previously touched related code and @ mention them in a comment. You can use Git blame or GitHub's web interface on the relevant files to find them.

Lastly, you can always ask for help at our Discourse Forum or at #nixos' IRC channel.

still important.

This issue has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/user-friendly-nixos-distro/1348/60

Was this page helpful?
0 / 5 - 0 ratings