Why I switched to Manjaro Linux

It is listed in /etc/shells, so that isn’t the problem. I should probably dive a bit deeper. But as I said, it’s not a hassle for me, but I can imagine it being annoying to newcomers.

Preface

The critiques to the GNOME experience seem very particular to switch to an entirely Linux distribution.

My following comments aren’t to to make you back out on your decision, but as I’ve actually tailored the default Gnome experience in NixOS, I believe I should commentate on them.

Not wanting to edit configuration files?

I didn’t need to edit any configuration files

If you dislike even using the Nix language I don’t think NixOS is for you.
I feel in the future, if we had a graphical interface for these things, NixOS would be much more practical for the average user.

The GNOME experience

Vanilla?

Manjaro ships with a nicer Gnome experience out of the box.

We decided on having the defaults to be vary “Vanilla” in NixOS because NixOS is a very general purpose distribution.
We actually align almost completely with what upstream recommends:

Which I believe is the SDK used in GNOME OS.

I’m confused about the critique about things being vanilla in general.
Another distro that has lots of points for users ease of use is Fedora, and it’s about just as vanilla as ours.

Doesn’t ship GNOME Tweaks?

Manjaro’s Gnome flavor ships with Gnome Tweaks

Umm, you can install gnome-tweaks? :shrug

environment.systemPackages = [
  pkgs.gnome3.gnome-tweaks
];

And let’s investigate how this is completely different than installing any package with pacman is like.
With the above configuration, your system will always have gnome-tweaks. It will have gnome-tweaks wherever this configuration is realized. If you change your nixpkgs revision (update nixos) and this package is broken you wouldn’t be able to realize your configuration. You could install NixOS and twenty different machines with this configuration, and it will have the same result everywhere.

That’s the paradigm shift in NixOS, and that’s in managing your setup declaratively. You don’t just have to rely on things being there because the developers decided that what was going to be included by default. You can then instead, formulate your own exact profile for the experience you want on your machine, and can replicate that on any machine with Nix. I don’t think many, if any, distro’s offer this kind of functionality in the bones of the system.

Doesn’t have enough extensions/themes out of the box?

and a bigger variety of popular Gnome Extensions and Themes available out of the box.

This is rather disappointing to think that my competition in other distros is that they have more themes packaged for you to use right away. You can also do packaging requests on GitHub, and while there’s no guarantee it will be packaged, it could happen.

Another thing that NixOS actually makes pretty easy is extending nixpkgs with more packages.
This is a feature in NixOS Nixpkgs 23.11 manual | Nix & NixOS.

Apps that want it (like Slack, Chromium, and others) get their task icon placed in the top right of the task bar thanks to the knotifier extension, and clicking the icons reveals options for controlling the application. It’s a “system tray” so to speak.

Yeah, Gnome killed that functionality a while ago. So IMHO, GNOME distributors shouldn’t even tailor to accommodate for this. All things mentioned above ^ apply, it’s just an extension to install.

Nice Shell and GTK themes out of the box in Manjaro, while NixOS only has the default theme (with modified logo and background).

Is GNOME Adwaita not nice? I guess Manjaro has a custom theme.

GDM Issues?

Normally the GDM login screen should show a button for my user profile that I can click on (or hit enter) then type my password (this is the default Gnome GDM experience), but in NixOS I have to manually enter my username in a text field for some reason. GDM works fine in Manjaro.

Never encountered this bug, but I suspect it has something to do with an issue with AccountsService and Logind maybe in 19.09. Would love to see a bug report from anyone here who’s experienced it.

Hard to setup a desktop environment?

it takes more work to properly set up a desktop environment in NixOS.
Plus it is easy to install the desktop environment the wrong way, as there are multiple good and bad ways to install things in NixOS.

This is easily the most confusing comment for me.
To install a desktop environment in NixOS, is probably as simple as it could get anywhere.

services.xserver.desktopManager.gnome3.enable = true;
services.xserver.desktopManager.xfce.enable = true;

And nixos-rebuild and you’re done.
In other distro’s, all you’re dealing with is packages. Using Xfce, for example, in Manjaro is just a matter of installing a metapackage. It’s true there’s multiple ways to install things in NixOS, but Xfce isn’t a package in NixOS to install.

Closing

I see so many Linux users find issue in their distro of choice’s user experience and make no effort to send feedback. I’ve fixed bugs like

almost exactly after I saw the post, and ported the fix to the stable release.

Full disclosure, I actually used Manjaro before I was using NixOS.
And while I noticed similar paper cuts upon switching, I understood I switched for something greater than reducing paper cuts.

warmth - avatar worldofpeace

15 Likes

@trusktr Thank you for taking the time to write up and send us your feedback. I appreciate it.

2 Likes

Just a note on the NodeJS development: I don’t use nvm, instead I simply pick the version of node I need with nix-shell -p nodejs-12_x, and I actually use v12 as a default install for my user.

I don’t manage NPM dependencies via Nix during development, it’s just too much of a hassle at the moment. I don’t even package the end result as a Nix package even though I should. Recently there seems to have been good progress on packaging NPM for Nix, but I didn’t have time to look at it yet.

Furthermore, I’m actually using Nix via Nixpkgs on macOS, which is great. You can keep using nixpkgs on Manjaro Linux if you like.

(macOS itself is not so great any more, it’s more and more locked up in annoying ways. I’m really considering switching to Windows, I’ll see what Apple brings out this spring for the 13" line)

5 Likes

For battery life, I wonder if either powertop from Intel, or tlp, would help, i.e.

  # One or the other, probably not both but not sure
  powerManagement.powertop.enable = true;
  services.tlp.enable = true;
1 Like

I believe manjaro actually uses one of these default, and perhaps maybe thermald for intel chips?

Ah, I haven’t heard of thermald, thanks! Perhaps that will allow me to not boil water with my laptop :slight_smile:

Ironically, one(?) of my NixOS desktops does have this, though I haven’t had the time to determine why or how :smiley:

I wouldn’t use any rolling release for productions servers. For personal computing, I think it is fine. I am honestly saving time compared to having to tweak and configure my OS. I have other more important things (for me) that I want to work on. I want more configuration that macOS or Windows, but not as much as needed for bare Arch Linux or NixOS.

It fit my needs well, because I just wanted to wipe a computer clean, and boot into a linux distro as a daily driver without fuss. Maybe that isn’t your case. I personally am not going to dual boot anything, I’m not going to make partitions, I just need one, etc. I just want to get to work on my other projects. Your situation may be different, maybe you want to have multple OSes on one machine, or you want to manage server configurations and happen to be able to do that without much fuss within NixOS constraints, or whatever it may be. In that case I understand you need the configurability, but for me it isn’t much of a benefit right now.

As for your other bullet points, that’s just opinion. I like or need those pieces of software.

Declarative config is not a bad idea. However with NixOS there’s in fact multiple ways to achieve the same thing for NixOS configuration, and that can be confusing and some ways lead to worse results than other ways.

I think that still requires potential ELF patching or FHS mocking. It’s not ideal. I think borrowing ideas from Conan, NPM, and ied (which is inspired by NixOS in its hashing technique) may lead to better results. Those three package managers don’t care about your OS environment, and any filesystem dependence is only local to each project. I wrote more here why it may be a better path to come up with something along those lines for a new OS in this comment. I think an approach that leaves user’s OS untouched from the beginning is going to be much easier to adopt by many, as well as make a good foundation for a new OS.

A vanilla experience isn’t bad per se, but there’s issues like GDM not behaving like it should be default (sometimes switching back and forth for no apparent reason) or application opening as other applications which is confusing. I tried to configure Gnome from scratch with Arch Linux, and I know these issues can be tricky to achieve. Some default configuration is totally needed, and Arch doesn’t give you that, and NixOS is missing something. Manjaro has the Gnome configuration mastered, and it has no issues at all. As an example, I know that Gnome needs particular PAM settings (at least the last time I tried a few years ago) to play well with multiple user accounts. Those aren’t things that you just get out of the box installing upstream libs, so there’s room for mistakes when making a full configuration for an out-of-the box experience.

Based on this experience, I know that Manjaro went through pains with perfectly configuring things such as the auth system (PAM, or whatever it may be now), authentication popups, .desktop applications not crossing into each other, GDM Xorg integration, etc, and the system just works in every way that I expect.

Maybe I misconfigured something. There’s multiple ways to configure NixOS to get (almost) the same results, but inevitably it leads to slightly different results. With pacman, there’s only one way to install something. With nix, there’s multiple ways to install something with differing results, and it isn’t always obvious which way is the best.

I believe in the idea that Nix has on a general level, but I have a feeling there’s a better way to do it that doesn’t rely on hacking FHS/ELF/etc.

Maybe, but with Manjaro at least I get something without thinking about it. It may be nice if NixOS gets “flavors” like Gnome flavor, KDE flavor, in the form of configurations (minus the hardware parts which still need to be generated), and these flavors would come with everything that people expect from a full desktop so they don’t have to configure a single thing. People who like to configure everything don’t have to use the config flavors.


I forgot to mention, in Manjaro, there are zero messages during boot (which is what I want). All I see is the built-in Dell logo, and for a moment I can even move my mouse on top of the Dell logo (somehow Manjaro retains the OEM boot logo in memory), then finally GDM appears right after that (with my mouse still moving). Manjaro boot is quite polished out of the box!

I couldn’t disable all boot messages in NixOS, even with plymouth enabled.

Hi,

I wouldn’t use any rolling release for productions servers. For
personal computing, I think it is fine. I am honestly saving time
compared to having to tweak and configure my OS. I have other more
important things (for me) that I want to work on. I want more
configuration that macOS or Windows, but not as much as needed for
bare Arch Linux or NixOS.

Being an admin I can’t agree: you save time as long as nothing brake
a thing that happen, and happen not so rarely, more important it can
happen at any update, while on classic release model you know that
something might and probably brake but at a specific time, and you do
the upgrade when you have spare time for that.

In an idea world thing might be different but in the real world a
system that can be kept up to date indefinitely without breakage
is not there. No OS is the world, proprietary or FOSS, altogether.

The main advantage of NixOS for me is simple: when something breaks
I can recover quickly with an almost fully automated deploy. I can’t
forget a package, a parameter in some config in /etc, it’s all in few
text files in a single place, easy versioned. Essentially the very
same thing we do for years from personal scripts to modern
orchestration tools like SaltStack or Ansible.

When you deploy a system by hand you can’t remember always and it’s
really unlikely that default distro perfectly match your needs and
desire. If you update once an year, I mean a fresh-install per year,
at least you “install skill” remain current, you know your desktop
enough, doing it less frequently means have you desktop in a semi
unknown (forgotten) state. And when a disk breaks you have to start
over again, loosing far more time than the little NixOS keep up and
loosing it on-the-spot, not when you are ready and free.

Windows is a big pain in that sense because it normally breaks at any
point in time and it’s automation, while PowerShell now can be viewed
like a kind of NixOS-config, it’s extremely hard, with absurd design
choices and long works needed for any stupid thing. I do not know
the state of OSX automation but since I do not see it in an enterprise
context I suspect is even worse.

Counting on a system that “can last longer” and push it until it crash
is a recipe for disaster, not time saved.

It fit my needs well, because I just wanted to wipe a computer clean,
and boot into a linux distro as a daily driver without fuss. Maybe
that isn’t your case. I personally am not going to dual boot anything,
I’m not going to make partitions, I just need one, etc. I just want to
get to work on my other projects.

I do not have dual boot of any kind, but I need partition for backup and
sharing purpose: for that I use zfs, because it offer a damn good
“rampant layer violation” that makes anyone life easy, with a common
storage pool, with effective snapshots, compression, checksumming,
live-resilvering etc. With it I can keep my data, not only my system in
a good shape. I can backup and share portion of my home easily, I can
view in different ways etc. Classic POSIX filesystems are a thing of the
past, too limited for today’s need. And in the past we also have going a
bit further, for instance with Plan 9’s file system in userspace
concept, that’s now the ubiquitous FUSE.

Partitioning is not much a system thing, it’s a “data” thing. Relaying
on “the cloud” (someone else computer) to backup and data availability
is like putting money in someone else pocket to avoid being robbed. It
might work for a certain period of time, when the service works well,
after one’s pay it so much that there is no recovery. Also relaying on
very few disks counting they do not breaks it’s another recipe to a
disaster.

Most GUI installer default partitioning relaying on a single home
volume, generally in ext4 these days or even worse in btrfs. Both have
a long trail of failure, especially btrfs. Big volumes with frequent
write like a browser profile dir easily breaks and having all your data
means a full restore is needed. Also proper backup is hard. For ext* fs
one’s need lvm to have snapshots and they are painfully slow, for btrfs
we have snapshots but they are really uncomfortable to use, if you use
stratis you relay on an experimental spaghetti-code crap built to
satisfy programmer’s desire while trying to have something that scale.
It does not work properly as many things simply because devs, especially
these days, tend to ignore the rest of the world scale, only focusing on
their personal desktop and not the unknown developer who read “how to be
a genius in 24h, a God in a week” but top-profiles devs like Linus
Torvalds who in the past say to be a terrible admin barely capable of
maintain his desktop and recently criticize zfs “because it does not
perform so well in some benchmarks”, or Andrew Morton years ago when he
say that’s a rampant layer violation. Sorry to all devs here, but
systems need to scale and sometimes interaction with admins is needed
and operation is needed, DevOps, CI/CD pipelines etc are not an answer
but only Babel’s tower trying to push a failed idea/dream.

Declarative config is not a bad idea. However with NixOS there’s in
fact multiple ways to achieve the same thing for NixOS configuration,
and that can be confusing and some ways lead to worse results than
other ways.

That’s a good point, IMVHO the ability to install package via CLI should
not be there, it might be useful sometime when one’s do not want to do a
full rebuild just to add a package but perhaps a temporary nix-shell for
that is a better way.

I think that still requires potential ELF patching or FHS mocking.
It’s not ideal.

That’s due to the limit of present time storage, a relic from the past
no one seems to be able to update properly, the last one who try was
SUN with zfs, SGI (far) before with XFS. BCacheFS is still more an idea
than something usable, Hammer is only a DragonflyBSD thing, nifls2 is
essentially a dead project and they are only a small step ahead in
storage tech. Storage-package management-installers are intimately
coupled and trying to separate them have a price. Nix{,OS} use the
/nix/store concept to circumvent storage limitations and ELF patching
and symlinking exercises are the price to pay. At OpenSolaris time IPS
start timidly to describe a package manager integrated with zfs but it
was in a very early stage, only BE (boot environment) concept mostly,
so instead of create a network os symlink you simply have a zfs clone of
the root volume with the relevant changes, storage is deduplicated, no
need of a store and symlinks but also no declarative config at that
point, it can be added and some devs plan to add them with the new
OpenSolaris installer that never really happen (they give birth to
Caiman instead, SUN was already finished and so OSol project, IllumOS
devs do not have the manpower to go further). But that is the sole
clean and proper way: having “classic POSIX file access” decoupled from
real storage, only as a view, different views, of the actual datas.

Unfortunately I think Nix devs can’t really go in that direction it’s to
much work for the size of Nix{,OS} project, a far bigger community and
far bigger resources are needed to make it is a time short enough to
avoid being pushed into oblivion like GNU Hurd and other projects.

Also certain “hw” and “Gnome” issues I also see myself and do not see
by defaults on Ubuntu and others are IMO due to the same reason: the
size of the community. Not “big enough” to have enough “users
bugreports” to tweaks all those small annoyances… It’s legit to be
annoyed but it’s not a Nix* fault, merely community size, manpower can
be compensated a bit with technology, but only a bit…

BTW sorry for the long post and poor English.

– Ingmar

4 Likes

This is something I want to have in NixOS that we could incubate. It’s actually much easier to achieve this in NixOS because of our module system. From just looking at my configuration on my machine, I have a lot of tweaks that I guess distros like manjaro have as defaults.

4 Likes

There is some miscommunication here, I didn’t talk about NixOS, but about Nix package manager. I think Nix packages are often as hermetic in dependencies as Docker containers are. Definitely no need for ELF patching for Nix packages on any Linux distro.

4 Likes

Indeed, I hope I didn’t sound too forceful, I think your decision to go to something you find easier to use is sensible, I just wanted to point this out should you, or someone else wishing to use Nix and having battery problems, find it useful. That being said, even with the Intel powertop, my laptop battery performance is only 5-7 hours on NixOS compared to 6-8 on Windows. I think the adaptive screen brightness might play some role.

That sounds very cool, in a similar vein I have previously wondered how difficult would it be to make a minimal NixOS install akin to TinyCore – not mutli-gigabyte pendrives are expensive these days. I would hope/expect the NixOS approact to producing a distro might be more maintainable. Or we could perhaps capture some of the benefits of Intel Clear. That would be nice :slight_smile:

we already kind of do this for laptops: GitHub - NixOS/nixos-hardware: A collection of NixOS modules covering hardware quirks. , I wonder if we could make “sensible” defaults into some profiles. An example configuration.nix:

  imports = [
    <nixos/profiles/manjaro>
    ./hardware-configuration.nix
  ];

I think for people that, “don’t really want to think about each individual part that goes into my system”. They will gladly defer this work to someone else.

NixOS really only has power users, because they (myself included) either want explicit control, or don’t mind dealing with explicit control of everything.

9 Likes

I think this would be nice, also as an on-boarding experience. When I first installed NixOS and put services.xserver.desktopManager.plasma5.enable = true in my fresh configuration.nix, I was a bit disappointed getting a very bare-bones desktop that didn’t even have a PDF reader or image viewer installed (if I remember correctly, I don’t use KDE currently, but I think I had to add okular, gwenview, etc. myself).

In the end it’s fine to cherry-pick packages, but when you are just starting, there is already a lot to wrap your head around and then it’s nice if you at least have a functional desktop :wink: .

5 Likes

Well put, being that NixOS literally puts every little switch in your control, power users are pleased with it. We talked about the profile thing in Cleanup GNOME3 default applications · Issue #67310 · NixOS/nixpkgs · GitHub, but we steered away from it. Configurations, at least how we define them here, aren’t really in nixpkgs.

There’s the “profiles” used in our images here

But I don’t think people should be using these, at least how they are now.

What we could have is a “NixOS Profiles” repository.
Tailored configurations for users who don’t care about the details, ready to import.

6 Likes

Wow I should have used this much much earlier with my laptop in NixOS. Added at least 50% more time to my laptop battery life. Thank you very much!

2 Likes

This excellent, but not very well advertised, it’s the first time I have heard of it and I think it should be in the NixOS manual, and perhaps as a comment in the output of the generated hardware-configuration.nix

3 Likes

I only know of it because I was added to the github nixpkgs group, which I think auto-subscribed me to the related repo’s… xD

I think it’s considered “community-ran”, and not an official NixOS platform. Which is probably why there’s little to no advertising on it.

2 Likes

This is exactly why we need a community-curated set of profiles - yes I’m a power user, but I’m not interested in exactly which settings deliver the best battery life, I’m interested in other things.

Nix gives the power to take a complete profile, and let you make a change to any thing you like thanks to the lazy evaluation. Nothing else can deliver that.

If the default laptop profile has a sleep setting that I find annoying, I can override just that one thing and let the rest be. In Linux Mint, I’d have to install an entire different distro.

6 Likes