I'd been hearing a lot about NixOS so I did a VM install. It wanted me to setup my own partitions manually without even giving preset sane defaults like I was back in 1994 installing Slackware.
Nope. My OS is a tool, not a lifestyle.
I use Arch btw
Sister communities:
Community rules
Please report posts and comments that break these rules!
I'd been hearing a lot about NixOS so I did a VM install. It wanted me to setup my own partitions manually without even giving preset sane defaults like I was back in 1994 installing Slackware.
Nope. My OS is a tool, not a lifestyle.
There is a Gnome/KDE installer too now ;)
This is the opposite of me. I always get nervous when I don't have precise control over how the disk layout looks. I explicitly decided for the non-graphical installer when I first downloaded NixOS
I need to compile my kernel... by hand with tools from beige-age computing.
My OS is also a tool!
Those jerk OSs and their bullying!
Sounds like you haven't done it in a while. It has calamares installer now.
How long ago did you try? You should try again, I did not have this experience setting up with the graphical installer a few weeks ago.
Slackware still does that in 2024.
NixOS is cool, the whole Linux configuration in one file is convenient but I already found my home and comfort place that's Arch btw don't think I switch to other distro anytime soon
Just to clarify, I wouldn't recommend putting everything in a single file, but rather modularize the configuration.
I also came from Arch, but have since abandoned it, and I don't think I want to use distributions for myself that use the the classic imperative concept. One you get a better understanding of it, it makes so much more sense.
As someone who has never tried Linux, this meme has done more to make me want to give it a try than anything else Linux users have thrown at me so far. The fox is very convincing. I might step into the back of an unmarked van if it asked me to.
I'm running openSUSE because I like lizards.
NixOS is probably a bit more confusing than most Linux distros, but it has a huge amount of advantages too. It has very up to date software and probably never has dependency issues.
That's par for the course for me. I'm the type that'll start a video game on the hardest difficulty for a challenge and then my pride won't let me lower the difficulty so I just quit under the guise of disliking it.
Foxes are like that though.
They look cute and cuddly... The trustworthy kind, then they bite your hand off and laugh at you.
I actually got NixOS after the latest time I tried it. But I also got that I don't want it, Arch is much simpler in all the good ways.
And perhaps something like https://github.com/kiviktnm/decman can some day give us part of Nix's power without going all-in with the functional declarative thingamadoodle.
I mean, it's like a fucking drug. The learning curve is steep AF but past some point, when it starts making sense, it's just incredible. I'm currently moving my whole setup to NixOS and I'm in love.
Even when using in a basic way, I think it has one very tangible advantage: the fact that you can "compartmentalize" different aspects of your configuration.
Let's say I set up a specific web service that I want to put behind a reverse proxy, and it uses a specific folder that doesn't exist yet, like Navidrome which is a web-based audio player. It requires a set of adjustments of different system parts. My nix file for it looks like this:
{ config, ... }:
let
domain = "music." + toString config.networking.domain;
in
{
services.navidrome = {
enable = true;
settings = {
Address = "127.0.0.1";
Port = 4533;
MusicFolder = "/srv/music";
BaseUrl = "https://" + domain;
EnableSharing = true;
Prometheus.Enabled = true;
LogLevel = "debug";
ReverseProxyWhitelist = "127.0.0.1/32";
};
};
services.nginx = {
upstreams = {
navidrome = {
servers = {
"127.0.0.1:${toString config.services.navidrome.settings.Port}" = {};
};
};
};
};
services.nginx.virtualHosts."${domain}" = {
onlySSL = true;
useACMEHost = config.networking.domain;
extraConfig = ''
include ${./authelia/server.conf};
'';
locations."/" = {
proxyPass = "http://navidrome";
recommendedProxySettings = false;
extraConfig = ''
include ${./authelia/proxy.conf};
include ${./authelia/location.conf};
'';
};
};
systemd.tmpfiles.settings."navidrome-music-dir"."${toString config.services.navidrome.settings.MusicFolder}" = {
d = {
user = "laser";
mode = "0755";
};
};
systemd.services.navidrome.serviceConfig.BindReadOnlyPaths = ["/run/systemd/resolve/stub-resolv.conf"];
security.acme.certs."${config.networking.domain}".extraDomainNames = [ "${domain}" ];
}
All settings related to the service are contained in a single file. Don't want it anymore? Comment it out from my main configuration (or whereever it's imported from) and most traces of it are gone, the exception being the folder that was created using systemd.tmpfiles
. No manually deleting the link from sites-available or editing the list of domains for my certificate. The next generation will look like the service never existed.
And in my configuration, at least the port could be changed and everything would still work – I guess there is room for improvement, but this does what I want pretty well.
Alternative text: Firefox overcoming Chrome
Yes. And I feel sad because I haven't been excited on any other OS for years after learning NixOS. I used to be excited about playing with things like FreeBSD, but now they all feel like something's missing...
Not for everybody, but as a software engineer nix/nixos is blessing.
Its especially annoying for me because i wanna go back to something that "just works" but i miss the nix features. I like declaring my system but managing packages declaratively is just such a pain. I just wanna do apt-get install package its just easier i dont want to rebuild my whole ass system. Something i found that may work is using nix for the system and then distrobox for packages. Yall think thats something that would work well?
Can't you just do the package install via nix-env rather than the config file
Separate your system and user lists. Use home-manager for example for your user packages. I think separating those configs is the official recommendation.
As for the rest, I'm using nix on MX because of declarative package management. Screw going back to imperative and having to remember what packages to install. If it's something I use often it goes on a list, if I don't nix shell
comes to the rescue.
I'd rather mess around with dev envs for nix than distrobox.
Fuck yes, I would follow that fox wherever needed!
as a fox myself, i would not recommend it.
I tried it, and while I was really excited about its proposition, it felt like at times any prior knowledge of Linux was a bit wasted. I also had some significant problems with needing to pin packages.
I don't doubt that it's a great option for many, if you've got the time to learn it. I'm finding myself in the position where I stick my flag to one distro and keep it there for as long as it doesn't piss me off.
Don't listen to him! Just start using Nix to manage dependencies and dev environments for your projects but keep your OS the same until you are really good at Nix
Yeah, you want to sniff nix first before you mainline nixos.
Nah, best way to learn is to fuck your shit up until you fucked it back into a usable state
Last I heard they were having this huge governance drama. They fix that yet? Or....
Most definietly, I have my entire homelab setup in nix as well as laptop/desktop. Is a hell of a lot easier and more reliable than the Kubernetes setup it replaced....
yes, and its best
Have tried, had bad experience trying to get damn libs to work with clang, gave up and went back to Arch
Good idea, bad DSL and toxic community.
Yes, it's the most stable yet infuriating experience I've ever had with Linux. I'm currently using it, but I don't know for how much longer...
Is this a greek culinary specialty? "You have to try the Nixos, it melts in the mouth!"