Skip to content

RFC: Graphical installer for NixOS #21662

@matthewbauer

Description

@matthewbauer

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

  • 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions