Why I moved from NixOS to Manjaro Linux
Tags: linux, manjaro, nixos, archlinux
Published: 2020-02-16 01:17:04

You may have heard of [NixOS](http://nixos.org/). The package manager is indeed very nice when you're using it withing its normal constraints.

However I ran into issues, and it was a relief to switch from NixOS to Manjaro Linux to be more productive. Here's why:

- Most notably, learning the Nix language took time, and after knowing enough of it, I was not able to be as productive as in a more traditional linux distro like Manjaro because it was more difficult to manage project dependencies with Nix than (for example) using `nvm` to manage Node.js versions for each project. Tools like `nvm` (or any tools that install Linux binaries expecting to operate in a traditional Linux [FHS environment](https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard)) don't work out of the box in NixOS, and it takes extra effort to get things working.
  - As another example, if a Node project depended on `electron`, a simple `npm install` would not work. The Nix package manager had to be used to install `electron` correctly via a tool called `nix-shell` to expose the ELF-patched `electron` binary in the shell.
- In Manjaro I can get to work easily, using `pacman` or `pamac` to install system packages, and then using regular tools like `npm`, `pip`, `nvm`, etc, to install project-specific dependencies with no issues.
- The Manjaro installation was easier, no manual partitioning or terminal commands were required, I didn't need to edit any configuration files, and everything was configured perfectly for a default Gnome Desktop experience including hardware drivers out of the box.
  - NixOS also does detect and configure hardware drivers (though mine had problems, see below), but 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.
- Battery life seems to be better in Manjaro. The battery seemed to die faster in NixOS.
- In Manjaro Slack works fine. In NixOS [Slack opens as a Chromium window](https://discourse.nixos.org/t/chromium-runs-as-slack-windows-grouped-together-as-slack-application/5477) and the Gnome application dock shows as if Chromium is running instead of Slack (and vice-versa Chromium opens as Slack window depending on order of opening applications, and for example clicking a link in Slack to automatically open it in a browser). I had to uninstall Slack in NixOS and just use a Chromium tab instead.
  - A similar issue happened with VSCodium in NixOS, where clicking links in VSCodium would open Chromium as a VSCodium window.
  - There are no issues with this in Manjaro, and each app opens in windows of their own type as expected.
- Manjaro ships with a nicer Gnome experience out of the box.
  - Manjaro's Gnome flavor ships with Gnome Tweaks and a bigger variety of popular Gnome Extensions and Themes available out of the box.
    - 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.
    - Nice Shell and GTK themes out of the box in Manjaro, while NixOS only has the default theme (with modified logo and background).
- NixOS's manually-configured Gnome experience is very vanilla, and with 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.
  - NixOS has graphical rendering glitches in Chromium and other apps. In Manjaro I have no graphical glitches out of the box (you'd think the same drivers would be in use, but there's some difference).


Overall I feel good to be back to my normal productivity in a more traditional distro like Manjaro (and Manjaro's rolling-release model will prevent some upgrade problems compared to Arch Linux because Manjaro waits for those to be resolved in Arch first).

Yeah, I *might* have to do surgery on my Manjaro install one day when an upgrade bricks the system, whereas NixOS handles rollbacks very gracefully, but overall I think the productivity gain in Manjaro will outweigh NixOS's rollback abilities.