Have you tried NixOS?
Have you tried NixOS?
Have you tried NixOS?
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
The obvious sane default is 1 partition covering the whole disk, + EFI system partition. What's there to offer...
Encryption? Also you're assuming there's only one block device...
assuming the person before did not just mean partitioning, but also all other storage-related tasks
I mean, if we're talking sane you shouldn't need more than one partition.
My OS is also a tool!
Those jerk OSs and their bullying!
I need to compile my kernel... by hand with tools from beige-age computing.
So? If that’s too much for you, use Chrome OS
Sounds like you haven't done it in a while. It has calamares installer now.
Slackware still does that in 2024.
You can even still launch Slackware from DOS!
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.
it wanted me to setup my own partitions manually
You've obviously never used nix, it's GUI installer can auto configure just fine.
When your OS AND apps are declared and stateful a lot of risk and complexity is removed. Configuring is just a bad experience with poor usability and worse documentation.
Where do you draw the line though between tool and lifestyle? At setting up partitions (which is a trivial thing I would not mind at all)?
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.
Just install it to your profile
Same, I could not go back now.
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.
Some of them are on fire too!
(That's why I browse with Emacs; much safer, and RMS-approved)
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
Yeah, you want to sniff nix
How does that work? Let's say I'm on pop os developing a thing, how would I manage deps and dev envs with nix then? In a VM or what?
I'm a Linux nerd, but I totally don't get nix. Tried to install some nix package manager on my Debian based distro and it was completely broken (the nix thing, not my os)
I um.. didn't get started yet. But a colleague demoed it to my and it's kind of between virtual environments and containers, if you're familiar with Python.
You write a Nix config and specify exactly which versions of which package you want to have. Reproducibility is the main selling point of Nix. Things don't just break overnight because a dependency of a dependency of a dependency got upgraded. You can always go back to exactly what it was like before. Guaranteed. That's pretty cool.
Ok so you got that config, then you build and activate it, and it replaces your shell. You enter the Nix shell. You still have access to all your files and directories, but your Nix config controls exactly which versions of your tools you have. gcc, npm, python, maven, whatever you use.
You can see why this makes people want to build an immutable OS.
The main drawback of Nix is that it has a bit of a learning curve. Hence why I haven't started yet. Maybe it's time though.
Fuck yes, I would follow that fox wherever needed!
as a fox myself, i would not recommend it.
Hmmm, how can you type then?
Suspicious!
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.
Wow thanks I was wondering for a while if something like this existed! I'm very happy with regular Arch, but I am very curious to try both an immutable/atomic and a declarative distro. At least the second I guess I can kina replicate now with this. Another rabbit hole to go down I think. :D
I'd recommend trying out a Fedora Atomic distro. Similar idea but without the extremely niche DSL.
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:
undefined
{ 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.
Love the example here!
I'm still learning about available references (ex config.services.navidrome.settings.Port
). What resources did you find to be the best for learning that kind of thing?
I'll accept RTFM if that's applicable :)
Hey this is a great web server example! Instead of commenting it out to enable or disable you can actually turn it into a full module. Check out this example of a nix module. Basically, you can take your code you pasted and put it under the config set. Then create an option to enable that set of code. Now you can always have this nix file imported, but enable the option only when you need it with another declaration. Really, that's how all the declarations work you're just getting the nix files from github and nixpkgs.
They’re not in a single file though, you got includes
I prefer Debian, my favourite distro by far
cool
Based
Alternative text: Firefox overcoming Chrome
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....
Damn you broke my brain for a second there. I thought you meant that nixos replaced k8s, and was wondering what the hell are you talking about.
Haha yeah could have worded better. I was running a 3 node k8s cluster on Talos Linux as my homelab. Downsized/simplified to a single NAS (aka NixNAS) + NUC on nixos and split the services between them. Apps that heavily use the NAS live on it for direct file access, the rest hum along on the nuc. I sleep easier with this, rather than fighting nose breakage during upgrades or wondering when my next ceph failure will occur.
So, I'm an arch-btwistan, what does nixos do for a gamer/youtuber/low-tier-wannabe-musician? Legit asking, because I really don't know what makes nixos tick, and the (very little) I've read doesn't really explain the benefits of it
Very well built patches and ways to share them. This is a good thing for gaming as we can try bleeding edge like Arch. But without having to rely on AUR or scripts to copy locally. Thanks to Nix Flakes you simply reference the flake someone shared (after double checking what is in it) and rebuild a NixOS derivation and voila, patch installed. I installed a complete SteamOS in 1 minute with this, reboot and everything works. Even with your locally signed in Steam account 👌
nothing imo, it's main benefit is making reproducible environments, imagine you need 10 machines to have the exact same things running on it, setting up each one would be a PITA and keeping them the same is near impossible, nixos solves that problem.
it's not gonna do anything for you, most people just want a working OS system on your PC so that you can do the things you need to do, if you have that, there is no reason to be fucking around with nixos.
safely upgradable rolling released software
Everything about your OS is defined in a config files and can be rebuilt. You break something you don't need to do a complete reinstall if you can't figure it out. Just rebuild the last working configuration. Sharing builds with your friends is easier.
For gaming getting your graphics card going is much simpler. I never had steam and proton games run as well as they do with they nixos defaults
It sounds like a Dockerfile for your system OS?
For gaming getting your graphics card going is much simpler. I never had steam and proton games run as well as they do with they nixos defaults
you clearly haven't used EndeavorOS then, since there everything just works.
Imo the worst part of nix is how it turns into this chicken or the egg scenario. Let me explain, nix is very good at reproducing things. It ensures that all things are the same when installing a piece of software. Once someone writes a nix module, generally speaking, it "just works". You can always take that nix file and get it to run the same way on another machine. But since most gamers/musicians don't give two shits about reproducible software, it doesn't get packaged. And with no packages they will never be interested to get into nix.
As I write this though I realize, many open source projects have struggled with getting contributions from the community. Personally, I just think nix solves the issue of "idk, it works on my machine" better than anything I've seen. Being able to reproduce software and stop dependency issues is a very valuble thing, just not for everyone.
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.
Yeah. I had a similar experience. My first successful install, following the docs, didn't have a network stack. It turns out that the docs are not representative of what's considered best practices at this point. I also don't care for needing a new DSL for a single use case.
So, for me, it's a non-starter. Fedora Atomic is meeting my needs nicely at this point. NixOS has brought some excellent ideas to the forefront and is a great match for some people. I'll pass until I can use my JSON/YAML/TOML and the docs are useable.
Guix is amazing.
i nuked my nixos install twice to install guix and twice I went back to my nix setup. GuixSD is missing a certain polish to it. It feels like it's on the way there but probably not yet...
the second time was just last week, after setup on sway, I installed flatpak apps and tried setting up nix-env for packages, some XDG_DATA_DIR fucked up and I couldn't even see the installed packages or start them from a terminal
servers are also slow and rebuilding is a fucking pain
Last I heard they were having this huge governance drama. They fix that yet? Or....
Not really, other than banning those who disagreed publicly
Have tried, had bad experience trying to get damn libs to work with clang, gave up and went back to Arch
yes, and its best
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...
How unstable is the unstable branch exactly?
Definitely more stable than Arch. Plus, you can easily roll back if something breaks, and you can choose which packages should use the unstable branch while keeping the overall system stable, which I find amazing. I don't think I've ever had a breaking update, which I can't say about Arch.
The problem I have with Nix is that you can effectively forget about running random programs or GitHub projects. You either package everything the Nix way or nothing works. As a developer and someone who often likes to try stuff out, that's really annoying. And Nix, the language, is ass, so is the whole build system. Nobody can convince me otherwise.
You should say "unstable channel". It's literally just a rolling release that pulls from the nixpkgs
master branch. So it's only as stable as it needs to be to pass the Hydra CI tests.
And if you get to a working version, you can pin that as a Nix flake to avoid anything breaking until the next time you nix flake update
.
Not anymore then arch imo unstable is just rolling release compared to the specific versions which are more like fedora or similar
I've been tempted by Guix
Good idea, bad DSL and toxic community.
Am currently on NixOS
Looking to move to RedoxOS as soon as viable
I've looked into the same, sad it's not viable yet...
Well it'd need declarative configuration IMO, so maybe something like tvix would need to be integrated first. That could also get us to being DSL agnostic.
Bur damn, RedoxOS (impl) is sexy.
Yep, running on 2010 laptop. works great.
Tis fairly good, don't like how badly it works with grub tho (which I refuse to change)
This makes arch/nixos a difficult combo to set up
Does it? I have two VMs on remote VPS servers that use GRUB because of no UEFI and I had no issues
Might be cause the PC in question I'm testing on does have uefi,(which nixos recommends system senior loader for)
My argument for using it is: it works very well for every other Linux distro, so it should work well with nixos too, uefi or not
No arch, only NixOS! RAAHHH!!!
Heck yeah brother, AROOO
I want to but COSMIC DE.
You can absolutely install Cosmic with Nix
How do you do that?
I love the nix package manager on fedora atomic
I'm more interested in Mint 22
LMNE: Linux Mint Nix Edition
...hmm
nah i am happy with my kde neon
On Kubuntu right now, but planning to switch to NixOS when I get a new laptop
I use the Nix packmani in debian like yay on arch.
One thing that no-one tested is the overhead of all the sandbox, like, each module, lybrary of program run in a sandbox(some times they tweak the source code not need the sandbox) so I wanted to see the overhead of all of that
It build in a sandbox, but it's not run in a sandbox.
I don't understand, if you run a program inside the sandbox and the program ask for a library, the kernel need to map the library from inside the sandbox to the program, that overhead that I'm talking about
No, because it miss an ui for the config changes.
I think NixOS is also doing some layering that could cost performance. I am unsure about the storage size, if it is much more like flatpak and snaps that I also dislike.
i used it when i was a newbie
Too gimmicky
I tried it once and gave up after realizing the necessary mental gymnastics to do simple things like installing something.