SnowflakeOS - Creating a GUI focused NixOS-based distro

Why?

In my opinion, NixOS is a great operating system and is very straightforward and stable once you learn how to use it, however for someone without knowledge about Nix or who has never heard of NixOS, it can be very confusing. I stumbled upon Nix and NixOS a bit less than a year ago, and since then have worked to try to create tools that make using NixOS more user/noob friendly, namely: adding the calamares installer to NixOS, creating a graphical configuration editor: nixos-conf-editor, and creating a GNOME software-like software center: nix-software-center.

So why not just work on NixOS itself? I do plan on adding the tools/apps I create to nixpkgs once I feel they are stable enough, but for now, there is still a lot of work to be done. In addition to this SnowflakeOS will allow me to make opinionated decisions I feel wouldn’t fit right in NixOS. My plan is to keep SnowflakeOS as small as possible and upstream as many packages/options/modules as possible.

What will SnowflakeOS have?

  • Graphical user interface focused. The plan is to ship tools like nixos-conf-editor and nix-software-center out of the box.
  • Flakes are enabled by default. No channels, no nix-env.
  • GNOME by default
  • Simple installation

Progress


What do you think about this idea? If you’re interested in helping please reach out! I would also greatly appreciate any feedback or ideas anyone has!

Links

54 Likes

Have you thought about keeping the ability to switch between this build and a stock NixOS build to make dabbling and experimenting easier?

Since the whole “os” is less of a fork and more of an overlay on top of NixOS, switching would essentially just consist of installing the packages and importing/enabling any modules. Currently, modules are being stored here: GitHub - snowflakelinux/snowflake-modules. I’ll work on some instructions on enabling, but for now only consists of naming/branding.

2 Likes

Why is it then named a distro if it really isn’t? I’d imagine more people will jump on and try it if they know they can just include the module and don’t need to reinstall their OS (again).

3 Likes

Good point. The general idea of having a separate brand for an opinionated variant is reasonable, though. Installation instructions could address your concern by just saying that: If you’re already on NixOS, simply add those modules and you’re good.

6 Likes

Ubuntu does that pretty well. They have their main distro, official sub-distros that are maintained in tree, and then community distros that are maintained out of tree. It makes sense to copy that.

Each distro flavour makes it pretty clear that they are “Ubuntu based”, it’s typically one of their first marketing points. See for example https://lubuntu.me/

6 Likes

Ubuntu only really needs that because it is a big pain to cleanly switch the desktop environment without leaving lots of clutter behind. NixOS does handle that pretty well and it is as easy as changing two lines of code.

It is also pretty easy to include in a graphical environment to import another module and activate that.

Splitting this into a new “distro” only causes fragmentation and confusion. I’d rather would call the installer Snowflakes Installer for NixOS or NixOS with Snowflake installer which includes some graphical management software by default which also can be installed into any already installed NixOS with those easy 3 changes.

2 Likes

A flake with nixosModules that brings together the right packages and settings should get you quite far already I’d imagine. Additional packages for a custom themes could also be included in the same flake.

I’m guessing a lot of the work would also benefit NixOS by bringing parts of the modules upstream. Like generalizing lsb-release: https://github.com/NixOS/nixpkgs/blob/661c29c806409f2883f2445e42583206426ffd46/nixos/modules/misc/version.nix

Also, I wasn’t aware there were already so many NixOS gui applications. They looks quite slick :+1:

Anyway I’m keeping an eye on this. Excited to see your post! :smiley:

1 Like

I think this is more like Manjaro/Arch. Sure, it’s incredibly easy to switch between this “new” distro and NixOS for most people here, but having a clear “use this if you want to try NixOS but even installing packages confuses you” is useful.

Most new users won’t understand how to switch. The fact that you can get the full NixOS experience by uninstalling a few packages (and probably removing a few flake inputs) once you’ve figured it out is just the cherry on top.

It could be branded as an installer, but that will sound like the help stops once NixOS is installed. This goes further and already adds a GUI package manager on top, already has gnome preinstalled, and will probably do other nice things in the future. It’s clearly more than an installer, it’d be a shame if users couldn’t see that up front.

I’d love to help, this seems like a very healthy step for the community, but this will be very hard to dogfood for anyone with even a slightly involved config, or a preference for the CLI, so I think I’m not qualified :wink:

11 Likes

The main reason I’m calling it a new “distro” is since more people, especially new users, are more familiar with that term and would know what to expect. For more experienced Nix/NixOS users, yes it is just an overlay that could be enabled on any NixOS system. Once I add installation instructions I’ll definitely add instructions for a way of installing on top of NixOS, but I also think for new users/newbs it would be easier for them if I also shipped an ISO that installs everything by default.

7 Likes

I’m trying to make all of the tools compatible with manual configuration, meaning you can manually edit your configs and for the most part the GUI should work around it as expected. I’m hoping that people interested in learning Nix can use it as a crutch while slowly learning at their own pace!

6 Likes

I’m definitely excited about where you’re going with this vlinkz. I think there is a good chance we can attract a lot of distro creator mindshare with how much easier it should be to maintain an opinionated and batteries-included distro on top of NixOS.

22 Likes

Now, calamares vs. os-installer? At least from reading your announcement I get the idea they play in the same space, but I can’t follow one choice over the other in each scenario.

Yeah from a technical standpoint they serve the same standpoint. Calamares is older but definitely more stable. Testing OS installer just to try another alternative.

2 Likes

Great idea, I’ve already linked people this to show them that it exists

There are a few things that I thought were a bit more involved in my configuration in NixOS, not sure if they should be really done by the distro for me or not, but definitely I don’t feel like my mom could do these herself.

  1. I created a swap partition and hibernate to it after 20 hours. This requires extra settings, a bit of manual configuration. This is the kind of thing Windows can do without having to read wikis.

  2. I needed to set up GRUB to dual boot Windows, this is also a bit of an involved option, but I’m not sure if you’re targeting people who will do this

  3. I needed to google what was ibus to set up Chinese text. This is mostly a complaint about Gnome that will happily tell you you’re writing Chinese when it is typing Latin characters.

  4. Needed some extra configuration for vaapi on my intel integrated graphics

I mean, ideally you could just do it at install time, these are mostly set and forget, if people want certain options set

3 Likes

I love this effort! :heart:

Since i started using NixOS in 2017, i wanted to make it more user-friendly. I’m very happy with the Pantheon Desktop that is available since 2019, but still have to go in the terminal to change my config. or install packages properly. The planned GUI tools can solve also that. I see forward to have them packaged in NixOS.

I also like the idea of an opinionated NixOS-based distro. That gives NixOS itself a better reputation. Both might get popular like Manjaro and Arch (i never used them). We might get into a time where there are more NixOS-based distros than debian-based ones, because everyone can create one (it’s literally changing one line with the os name, that does not exist yet). But it’s not really needed with NixOS as you can for example choose from many desktops in the installer.

One thing that would be negative about the separation is the reported OS Name. For example one way i promote NixOS is by reminding people to take part in surveys about their used OS, to make NixOS more visible, so people check it out. When previous NixOS users use SnowflakeOS and the software uses the OS name in the survey (like Steam), NixOS get a lower result. But when both get popular, that might not be an issue.

@vlinkz i hope you get many contributors, achieve your goal here and not burn-out! This area has been neglected in the past, because the focus is on servers and developers. So having a dedicated effort that focuses on desktop users is awesome!

4 Likes
    1. I created a swap partition and hibernate to it after 20 hours. This requires extra settings, a bit of manual configuration. This is the kind of thing Windows can do without having to read wikis.

I haven’t looked into hibernation enough yet, but definitely will!

  1. I needed to set up GRUB to dual boot Windows, this is also a bit of an involved option, but I’m not sure if you’re targeting people who will do this

Both grub and systemd boot should work out of the box with dual booting setups, but I could maybe give the option during installation.

  1. I needed to google what was ibus to set up Chinese text. This is mostly a complaint about Gnome that will happily tell you you’re writing Chinese when it is typing Latin characters.

I’m not very familiar with ibus either, but seems important!

  1. Needed some extra configuration for vaapi on my intel integrated graphics

I’m trying to add options that detect hardware/gpu at install time and set up appropriate configurations. But also considering making a separate application geared towards simple hardware/driver configuration.

We might get into a time where there are more NixOS-based distros than debian-based ones, because everyone can create one (it’s literally changing one line with the os name, that does not exist yet). But it’s not really needed with NixOS as you can for example choose from many desktops in the installer.

I think that what will be important in a NixOS based distro is the tooling around it, so if someone just ships an ISO with some DE and programs preinstalled that’s not really useful since it could be chosen in the installer. I’ve been considering writing a new installer with the ability to import configurations, that way if users see a configuration they like, they could just pass it into the installer. I think that could reduce the need for a large amount of “distros” and instead make sharing configurations easier.

When previous NixOS users use SnowflakeOS and the software uses the OS name in the survey (like Steam), NixOS get a lower result. But when both get popular, that might not be an issue.

My goal with SnowflakeOS is not really aimed at converting existing NixOS users, and I don’t really see an advantage of switching to SnowflakeOS if someone is already comfortable with NixOS, since they could just install the individual tools they want. I’m hoping that by making Nix more approachable, SnowflakeOS provides a solid experience while also being a gateway to Nix and NixOS for those interested.

Thanks for the well wishes! So far everything coming along really well!

5 Likes

See, I didn’t even know how to do it with systemd boot

I also mounted my Windows drive, but it’s mounted as root, despite my best efforts to set some options in the hardware configuration file. I shouldn’t have to learn all about mounting options, it could just ask me if I want to mount my Windows drive when I set up dual boot (seems like a common combination)

I feel like the hardest parts about NixOS is not things that are unresolved, but finding the solutions someone already figured out.

1 Like

Just putting it here before I forget. My CPU wouldn’t boost until I installed cpupower-gui which has a service to set the CPU governor at log in. Might be an older Intel mobile CPU bug

Maybe there needs to be a wiki for troubleshooting issues people run into

1 Like