Omarchy and NixOS

Omarchy is a preconfigured Arch Linux installation that has been gaining a lot of momentum and drawing new users into the Linux community (specifically into Arch). I was wondering if there’s any interest in working on a similar Nix community project which aims to bring in new users? The idea is to provide a batteries included configuration (eg. a flake) which enables new-to-linux users to quickly onboard to a great linux desktop experience in minutes.

6 Likes

FYI:

39 Likes

I think this would be an awesome idea to drive further adoption to nixOS which is more deserving of the popularity imho.

There is already a „copy“ of omarchy ported to nixOS. At least partially. I Öl try to find it tomorrow. Currently in an opera.

7 Likes

GitHub - henrysipp/omarchy-nix: An opinionated NixOS config based on DHH's Omarchy, “officially mentioned” by omarchy.
GitHub - TheArctesian/omnixy: Opinionated Nix/Hyprland Setup, and a reddit post announcing this has a bit more discussion about both.

3 Likes

I would also mention the upcoming COSMIC as something to try out in this context

1 Like

Opera as in the browser lol

I’d be cautious of such a project because it usually attracts people who aren’t familiar with the environment they’re getting involved in, and it leaves them absolutely confused and frustrated.

Hyprland’s initial surge in popularity had a similar effect, drawing hundreds, if not thousands of users to Arch Linux, causing them to flood all forms of social forums begging for help because they had no idea what they were doing.

NixOS by comparison, is an infinitely more complicated platform to navigate. I think such a project should strive to be simple enough to pick up for an experienced user, but not easy for a newbie to pick up. It would avoid users who just want an easy entry into the ecosystem, since they will be left confused and frustrated.

17 Likes

Agreed, I don’t recall who coined this analogy, but originally it was meant for graphical installers for NixOS, howevee I think it applies equally as well here, paraphrazing a bit:

You’re building a nice, clean, air-conditioned highway into the middle of a inhospitable desert.

In my opinion most efforts of “let’s make NixOS more welcoming” end up suffering from the “highway to the desert” problem. Sure the graphical installer let’s you install NixOS easily, but then the illusion falls apart once you’re in the booted system. Same thing with batteries included flakes which are trying to cater to non-NixOS audiences, it’ll pull a lot of non-Nix people into NixOS under a false pretense of simplicity and then they’ll end up being dazed and confused on Discourse/Matrix/Discord, because suddenly they have to know what a fixpoint is.

If you want to make NixOS simpler and more welcoming, you have to start at the core, not wrap a pretty cover over NixOS and lie to the soon-to-be user in my opinon. One project I do think has a chance of succeeding js https://clan.lol . They’ve been taking the bottom up approach and so far it seems to be working out. At this point they still expect a good understanding of the basic features and parts of NixOS but implement a layer on top which ties up some of the loose ends by making very opinionated and consistent decisions throughout all of clan, vertically and horizontally. Not sure if they ever want to reach a point where no NixOS knowledge would be expected of their users, you’d have to ask them that.

25 Likes

I sympathize with this viewpoint, but as a practical matter I think long-term we’re better served by trying to figure out how to reduce the confusion and frustration.

Any time I’ve had to argue “we should have fewer users because they get frustrated too easily”, it’s usually a sign that something else needs addressing.

2 Likes

in reply to @crertel:

Haskell people had a similar discussion recently. Simplifying Haskell to cater to a wider audience, but not everyone wants that. I personally don’t want to make NixOS simpler, I want it more streamlined but not, to pull an example from the Haskell world, removing type classes because they’re hard to wrap your mind around. Knowing how type classes resolve requires skill and understanding, which is all right.

So I think I’d say that I agree with resolving paper cuts into the Nix world, but not simplifying things for the sake of pulling in a wider audience. What makes us unique, is that NixOS is weird and complicated, same as in the Haskell land.

4 Likes

If I can pull on this thread a bit–what stuff do you think make us weird and complicated? I’ve got a few of my own, but enjoy comparing notes.

This seems to assume that nix (or Haskell) is already on the efficient frontier and that any improvement along the usability axis must come at some cost to expressivity or power to solve hard problems. I think nix is quite far from it (although I still think it’s the best game in town).

4 Likes

To be clear, I’m not saying we should “have fewer users”, I am saying that we should not package a pretty, all-in-one configuration stub that caters to new users, because it brings them into the ecosystem for the wrong reasons, then they start to get frustrated because all they signed up for was “pretty dotfiles”, not declarative configuration and non-fhs behaviour.

I think Nix benefits immensely from new users. However, those new users need to come into the community wanting to make use of Nix for what it is, a declarative model of deployment for simple applications and full systems alike. They should not be entering the system because they could download this cool flake to their system and get a nice desktop.

15 Likes

Im happy to discuss, but not here, find my matrix on my github. Or ping me on matrix nixos-offtopic

1 Like

I’m not saying there is nothing to improve, perhaps by simplifying, there are plenty of things in fact. My point was more than simplifying must not come at the cost of expressivness and power.

5 Likes

I was actually just starting to look for this.

I’m not sure I agree with the idea that new users will end up feeling bitter because they tried some kind of omarchy nix and then got frustrated and walked away from nix-y-ness of it. I dont really see what’s being lost here.

If they try some other nix, those hypothetical users are going to end up walking away, too. But having these niceties (seamless themes between all aspects of the compositor and the web browser just work from a central place, themese are customizble, help menus, key bindings, easy access to config files…) might be just the thing to keep them interested.

I love nix, but I’m deeply frustrated with learning some aspects of it. I’ve only been using it for maybe two years now? I’ve been able to do simple things like make packages, compose packages into containers, play around with home manager, but I haven’t been able to figure out what to do with flakes. Using any given package from someone’s flake from github, sure, but I don’t know what to do with the existing omarchy nix that was linked above. Whenever I get huge blocks of nix stuff that isn’t destined for home.nix or configuration.nix, I generally have a hard time figuring out what to do with it. And it’s usually provided by someone that’s very knowledgable and it doesn’t occur to them to provide pointers that make sense to me so I can figure out how to make use of it.

So I’d love to try an omarchy nix to play with that was structured such that even I could either run a live cd or install from it and get using it. It might even finally make a system configured with flakes make sense to me. And even if it didn’t, I could point friends and co workers at it, and they’d be more likely to try a nix system because it would be in a format that I could support – albeit in a limited fashion. But that would be excellent encouragement for me to grow my skills, too.

3 Likes

This sounds similar to another NixOS config:

This in fact was how I first tried out NixOS. After learning how simple it was to reproduce someone else’s complete/complex setup locally, reviewing the declarative config behind it all, I opted to start my own config from a simpler template, borrowing only what I still wanted from the community example.

While perhaps not all users stick with it, just the aspect of having a complete and opinionated config that demos a holistic example to reference can go a long away to showcase the real world capabilities of Nix, while sidelining much of the decision paralysis that initially overwhelms many newcomers.

But to ensure such examples are seamlessly polished, to avoid negatively impacting first impressions, that merits a community collaboration to realistically sustain over time.

4 Likes

I think the latter (easy onramp to a cool configuration) is a solid use case of the former (declarative deployment model). Technology needs use cases to make it appealing. Most users may not care about a declarative deployment model. But if we help that understand that a declarative deployment model will enable them to do XYZ cool things, many of them will get curious about such a model and what else it may enable.

This was how I got into nixos myself. I started with home manager for managing my dotfiles and packages. Then I started using nix-darwin to manage my macos system. Then I decided to migrate my homelab server to nixos. Judging by @ruffsl 's comment above, this is likely a common story for many.

3 Likes

One of the barriers to beginners adopting NixOS IMO is that it’s an abstraction on top of the FHS environment that other distros operate in. The locations of various configuration files , like /etc/ssh/ssh_config and ~/.ssh/config, for example. For those of us who worked with distros like that for many years, it’s trivial to understand that services.openssh.settings is just what would go in /etc/ssh/ssh_config and that is a system-wide setting. But there is a bunch of non-NixOS background there that we learned a long time ago. That’s one of the simpler examples.

It seems to me that becoming proficient with NixOS still requires an understanding of the legacy Linux filesystem and standard Linux low-level applications. I’d be curious to know if there have been people who jumped straight into NixOS without knowing any of that and still managed to figure things out without having to retroactively learn the things that NixOS abstracts out.

3 Likes

I might qualify to answer your question. I’ve moved to NixOS exactly because I wanted to learn Linux by doing and after a few broken ubuntu/fedora, the promise of being able to rollback and automatic cleanup of my mistakes seduced me.
It’s been a few years and I consider it a success even if I still consider myself a beginner. It raised the floor of what I could do without deeper understanding. Though when I try something complex, like a dev shell to cross compile something with system dependencies, I have to pay both the Linux tax and the NixOS tax.

6 Likes