r/NixOS • • 15h ago

Yet another platform for telling people you use NixOS btw

Post image
5 Upvotes

r/NixOS • • 13h ago

Review of NixOS after trying it in a VM

10 Upvotes

I'm writing this review mainly for:

- People considering switching to NixOS

- NixOS developers interested in an outside perspective

Suggestions on how I could have done things differently are also welcome.

My background is that of an intermediate user. I have an applied physics background, so I can write Python scripts but am not a programmer either. I have been happily daily driving Linux Mint MATE for almost 2 years now. I have customized this to some degree, using Compiz and Emerald (my own custom theme), dconf-edit, putting window controls in the panel, making a shortcut script to set a battery charge limit, and building xwinwrap from source to draw xscreensaver effects on my background as a live wallpaper.

I'm generally happy with the stable setup, but also realize that Mint relies on Ubuntu. In the case of Snaps, Mint was able to keep them out, but the rushed introduction of Uutils also shows that the Mint team doesn't have the resources to do quality control and deviate from Ubuntu on everything less than ideal, and ultimately you are dependent on decisions made by Canonical. This makes trying to port my configuration to another independent distro interesting. My two main candidates being Debian/LMDE and NixOS.

Plain Debian has some drawbacks. The Mint team keeps some significant QOL improvements such as the Mintmenu, Software Manager, Update Manager, within their own ecosystem. LMDE improves this somewhat, but the MATE version of this was dropped, so some parts would have to be reconstructed manually. Debian also has no HWE kernel updates like Ubuntu, and their approach to stability means you sometimes have to wait for years before some cool new things enter their repository. Even updates like MATE 1.28 will enter Debian 3 years late.

This makes NixOS an interesting option, as their approach to system stability or robustness bypasses a large part of the traditional stability vs bleeding edge release cycle tradeoff. I also already care a lot about having a reproducible system, so I can easily migrate my system or rebuild on my current device. I make Timeshift snapshots on a separate drive as well as home directory backups. I make dconf dump files and keep documentation of my setup. In theory, NixOS could simplify this collection of bookkeeping. It would also allow me to experiment with some cool new things such as Niri, Noctalia, and Umbriel, while making switching between configurations easier and rolling back trivial. NixOS is also said to have the largest collection of packages. So I installed virt-manager and gave NixOS 26.05 LTS a try!

At first boot, simple things seem to be a "just works" experience. MATE works well (mostly, you need to add some packages like gdk-pixbuf for media thumbnails yourself), and adding basic packages in configuration.nix is trivial. However, I quickly ran into trouble with old packages that I use. I use a custom panel config: one panel on the top, with window control buttons added so I can get rid of window titlebars in maximized mode. Custom launchers with wmctrl take care of closing and (un)maximizing, but minimizing wasn't working well, so I use window-buttons-applet. Nixpkgs doesn't have it. Mate-tweak and mate-netbook installed fine, but the undecorate maximized windows checkbox stayed greyed out, so I had to do it in the terminal with gsettings. Most importantly, Compiz and Emerald used to be Nix packages but got removed! I will detail this more later, but clearly despite having the largest package base of any distro, the support for old packages is poor.

Another drawback of the NixOS approach of contained packages and generations, is the sacrifice on the transparency, mutability, and human-readability of the root file system. In Linux Mint, it's easy to browse through the root directories and see how your system works. /usr/share and /usr/libexec are accessible and modifiable. On NixOS, these are more hidden as you are expected to interact with the root system the "Nix" way. Ultimately, this comes to the benefit of ensuring the root system reproducability that NixOS holds paramount, but comes at a significant cost.

For example, I use mate-screensaver. This lacks some of the customizability of xscreensaver (but has better integration within MATE). However, in Mint it is possible to go to /usr/share/applications/xscreensaver and manually put in the custom screensaver settings as parameters in the exec line of the screensaver's .desktop file. In NixOS you would be doing considerably more work in the Nix language to achieve the same effect.

Another drawback of the containerization of the applications is that for example, mate-screensaver only comes with a few preinstalled screensavers. In Mint, mate-screensaver simply uses the same /usr/share/applications/xscreensaver and /usr/libexec/xscreensaver directories. On another distro, it's trivial to just install xscreensaver to get more screensavers. But in NixOS, you have to do Nix language scripting because mate-screensaver cannot access xscreensaver directories and copy/pasting them over is no option either.

/usr/share and /usr/libexec do not exist in NixOS. You can find their contents scattered around in /nix/store, but in disordered directories starting with a hash and ending with a package name, "duplicated" for every new generation where it built differently. This will break your traditional bash scripts and some programs pointing to hardcoded libexec paths. Again, NixOS has good reasons to do this and provides its own interfaces with root files and binaries, but the burden to comply is placed on you and the developers.

AFAIK, this is why Compiz and Emerald no longer have Nix packages, as staying compliant with the Nix way requires active maintainers. And this is a shame, because despite being unmaintained for years, they continue to function on Debian-based distros. I also would not be surprised if this is why "undecorate maximized windows" stays greyed out in mate-tweak, despite the mate-netbook dependency being present.

Then there are two last things, being the LTS update cycle and security. While NixOS largely negates the drawbacks of rolling releases, I do still prefer something that will build straight away. The fact that there is LTS is great. Less great is the 1-month update window to every new LTS version before support is dropped for the previous one. This means that if your update doesn't build, you have less than one month to figure it out or be left without security updates. No need to explain that access to security patches matters these days, so this could be forcing you to do maintenance at inconvenient times. NixOS also doesn't ship with security features like AppArmor by default. Configuring it manually is possible, but it's a step back from Mint where it's already set up for you.

So ultimately, while I am interested in NixOS for reproducability, there is a price in having the declarative approach enforced (already anticipated). This can give significant friction if you want to just quickly get something done imperatively. More importantly, and unexpectedly, while NixOS offers a great package base and a refreshing approach to stability and reproducability, it does not give solid guarantees that your setup will still work in a few years, as unmaintained projects get dropped.

I will continue to try things and tinker! At the very least to check Niri, Umbriel, and Noctalia inside my VM. To learn more about Nix and gain valuable skills. But for daily driver desktop use, MATE-Compiz feels like home, and I value that my home will still be there in a few years. Thanks for coming to my TED Talk.


r/NixOS • • 12h ago

From Arch to NixOS

Post image
40 Upvotes

I think I love it here!


r/NixOS • • 2h ago

nix os is peak

Post image
25 Upvotes

r/NixOS • • 23h ago

Is this person information true ?

Post image
162 Upvotes

r/NixOS • • 8h ago

nix❄️🐧🩵

Thumbnail gallery
11 Upvotes

r/NixOS • • 14h ago

Hello everybody out there using computers - I'm doing a (free) operating system (just a hobby, won't be big and professional like macos)

Thumbnail
0 Upvotes

r/NixOS • • 21h ago

New at NixOS. So, rate my first hyprland rice

Thumbnail gallery
66 Upvotes

dotfiles maybe


r/NixOS • • 14h ago

Nix: NeovimNVF: Switching HM Module -> Standalone Flake (Added to HM Module)

4 Upvotes

Hi!

Sry I'm new-ish to nixos. I've been using Nix as a package manager for a while now but only switched to NixOS fully this year and made a full config.

Also upfront apology if this is a silly/noobish question and/or the formatting is miserable (I am open to advice on that too, but I do have some necessary quirks due to diagnosed OCD).

I want to keep my config well organized, documented and flexible. I also prefer keeping as much of it purely in Nix as I can (Hence even using settings in Wezterm over extraConfig, etc).

Since neovim is my main IDE (or PDE in honor of TJ DeVries <3) and also a comfort editor for notes (also would like to shoutout neorg as I like it).

The config is pretty complete and works other than me struggling to get nvim-dap set up nicely with different sources.

I have an issue tho:

- Mainly how do I make my __NVF config__ into a __standalone flake__
- I want to use **flake-parts**
- I've set up a flake file using flake-parts
- **Flake Parts Documentation:** https://flake.parts/
- I was reading the documentation for nvf standalone config and it uses a completely different syntax it seems???
- **e.g.** instead of something like `config.programs.nvf.settings.vim.languages.markdown` it wants `config.vim.languages.markdown`?
- **Documentation**: https://nvf.notashelf.dev/index.html#ch-standalone-installation

- Does this mean my module config needs all references of `config.programs.nvf.settings.vim` replaced with `config.vim`?
- So my module config and standalone config can't be the same?

**What I think I need to do:**

- Make a new git repo

- Copy neovimNVF config with flake file

- User argslist to change ALL files

- argdo: Replace: `programs.nvf.settings.vim` -> `vim`

Would this work?

(**Note:** current flake segment at the end)

I appreciate any guidance and wish you all a great spooky season!

Best wishes,

E.E.

**Current NVF flake file (__ONLY__ perSystem section):**

```nix
perSystem = {

self',

config,

inputs',

pkgs,

system,

...

}:

let

[myNvimConfigName] = nvf.lib.neovimConfiguration {

inherit pkgs;

modules = [

./default.nix # Leads to NVF Module Config: Nix/Config/NeovimNVF/default.nix

];

};

in

{

packages.[myNvimConfigPackageName] = [myNvimConfigName].neovim;

};

```.


r/NixOS • • 23h ago

NixOs Was Change My life environment

25 Upvotes

NixOs Change My life.

I was always show off Gentoo and Arch but after im discovered NixOS and i use it, i feel like this time not for show off. Also, i feel so chill. Im usually have headache in Gentoo but in NixOS, it doesnt happen. Because Y'all are Caring Newbie that aint know much NixOS. I love y'all!

When i was use Arch, environment was so toxic

When i was use Gentoo, environment was so pain

But when i use NixOS, enviromental was so Chill and i love that!!

I love yall!

I lobe NixOS

Tqvm Dev and Contributors!

Tqvm NixOS!


r/NixOS • • 10h ago

Who wrote this byte?

Thumbnail fzakaria.com
46 Upvotes