There’s definitely a steep initial learning curve as you observed and dialing in your configuration is time consuming in my experience but once you’ve got things the way you like, it’s pretty smooth sailing from there.
Edit: removed compared to arch references. Not relevant to the comment.
As someone who tried NixOS recently for the first time, it feels like an uphill battle.
Some immediate concerns I have as a newbie are below. Bear in mind that I’m a single user on a single system.
Organisation is daunting as fuck
Even a relatively simple desktop config seems rather large to me. I expect the complexity of my config to balloon if I were to use this as my primary OS. There seems to be no consensus on how things should be separated.
I’ve heard home-manager is good, but I don’t really get the point of it. What does it achieve for me that editing configuration.nix doesn’t? I’ve yet to find a benefit. It’s just another place to dump endless configs and another command to remember to run.
Installing software feels like the roll of a dice
I installed NixOS to try Hyprland, and their docs say to just use programs.hyprland.enable = true, which I’ve come to learn is a module. But that’s not the only way to install things! You also have system packages and user packages! I just want to install some software, I don’t want to have to look up whether it’s a module or a package every time I want something new. I’m never sure what I should add to which section. No other distro that I know of has this problem! Having 3 different places to add software seems excessive. What am I using? Windows? And now there’s Flakes too. I’m sure they’re great, but right now I just see them as yet another way to install software on Nix. Great.
There’s more, but I’ll leave it there for now. I’m sure there are reasonable answers to all that I’ve said, but I’m just frustrated. I really want to like Nix, but it’s not making it easy.
tl;dr: Two things. 1) Lack of consensus on how configs are organised is confusing. 2) Having 3 different ways of installing software (modules/packages/flakes) does not feel better than apt install or pacman -Syu etc.
Nix is a programming language, so you have to organize your configuration yourself like you would for any programming project, usually by splitting it into multiple files. Also you can search system modules on the same page that you search for packages though usually there’s not much of an explanation for what it does outside of reading the source code.
System modules use the package from the repository while enabling some systemd stuff and whatever other options that you will want enabled with it. On a single user system, there is no meaningful difference between system packages and user packages.
Home-manager can be used to manage files in your home directory, like your configs for apps and stuff. It also can have more module options for apps so you can set up their settings declaratively. Its not for everyone but this is what its supposed to do, outside of your normal nix configuration.
Nix flakes aren’t a way to install packages, but a way to manage the nix based projects which include nix packages and your nixos configuration and is supposed to make it more reproducible, so its not directly related to installing packages. However if a package for something isn’t in the repos, someone may make a nix flake for installing and building the package.
Its understandable that you are having trouble though, because the documentation for nix and nixos is terrible, and it only got better for me once I actually spent time learning the nix programming language.
Read up on modules. It’s obvious you haven’t even googled it.
I’ve heard home-manager is good, but I don’t really get the point of it. What does it achieve for me that editing configuration.nix doesn’t?
You’re not supposed to use configuration.nix for userland packages. Separation of concerns, and so you don’t need to rebuild all the time.
Declarative package management and configuration
You only need to remember one command to install and update all your packages
Installing software feels like the roll of a dice
There are many ways to install a package, and that allows you to chose the one you want to use. Nobody’s forcing you to use the module instead of just the package…
And now there’s Flakes too. I’m sure they’re great, but right now I just see them as yet another way to install software on Nix. Great.
You don’t use flakes to install packages. You use them to control the package definitions, pin specific versions, add packages from outside of nixpkgs in a declarative manner, and so on.
I really want to like Nix, but it’s not making it easy.
You really want to like Nix, but don’t want to learn basic concepts and instead expect it to behave like every other distro.
If installing packages is too much for you, give up on nixos and use something else. That’s literally the easiest and most issue free part of using it. You can install hyperland through nix on Debian or whatever distro you want.
does not feel better than apt install or pacman -Syu etc.
Yeah, why would anyone want a list of packages they currently have installed. Can’t think of any benefits, nope…
From: https://knowyourmeme.com/memes/btw-i-use-arch
I think that’s fair to apply to some NixOS users. Source: BTW I use NixOS.
I mean the barrier of entry is kind of high if you’re used to more traditional package managers.
Source: I tried using nix on my Debian machine
Check out my comment about setting up nix on Debian
https://programming.dev/comment/8114883
Thanks, I’ll try that
There’s definitely a steep initial learning curve as you observed and dialing in your configuration is time consuming in my experience but once you’ve got things the way you like, it’s pretty smooth sailing from there.
Edit: removed compared to arch references. Not relevant to the comment.
As someone who tried NixOS recently for the first time, it feels like an uphill battle.
Some immediate concerns I have as a newbie are below. Bear in mind that I’m a single user on a single system.
Organisation is daunting as fuck
Even a relatively simple desktop config seems rather large to me. I expect the complexity of my config to balloon if I were to use this as my primary OS. There seems to be no consensus on how things should be separated.
I’ve heard home-manager is good, but I don’t really get the point of it. What does it achieve for me that editing configuration.nix doesn’t? I’ve yet to find a benefit. It’s just another place to dump endless configs and another command to remember to run.
Installing software feels like the roll of a dice
I installed NixOS to try Hyprland, and their docs say to just use
programs.hyprland.enable = true
, which I’ve come to learn is a module. But that’s not the only way to install things! You also have system packages and user packages! I just want to install some software, I don’t want to have to look up whether it’s a module or a package every time I want something new. I’m never sure what I should add to which section. No other distro that I know of has this problem! Having 3 different places to add software seems excessive. What am I using? Windows? And now there’s Flakes too. I’m sure they’re great, but right now I just see them as yet another way to install software on Nix. Great.There’s more, but I’ll leave it there for now. I’m sure there are reasonable answers to all that I’ve said, but I’m just frustrated. I really want to like Nix, but it’s not making it easy.
tl;dr: Two things. 1) Lack of consensus on how configs are organised is confusing. 2) Having 3 different ways of installing software (modules/packages/flakes) does not feel better than
apt install
orpacman -Syu
etc.Nix is a programming language, so you have to organize your configuration yourself like you would for any programming project, usually by splitting it into multiple files. Also you can search system modules on the same page that you search for packages though usually there’s not much of an explanation for what it does outside of reading the source code.
System modules use the package from the repository while enabling some systemd stuff and whatever other options that you will want enabled with it. On a single user system, there is no meaningful difference between system packages and user packages.
Home-manager can be used to manage files in your home directory, like your configs for apps and stuff. It also can have more module options for apps so you can set up their settings declaratively. Its not for everyone but this is what its supposed to do, outside of your normal nix configuration.
Nix flakes aren’t a way to install packages, but a way to manage the nix based projects which include nix packages and your nixos configuration and is supposed to make it more reproducible, so its not directly related to installing packages. However if a package for something isn’t in the repos, someone may make a nix flake for installing and building the package.
Its understandable that you are having trouble though, because the documentation for nix and nixos is terrible, and it only got better for me once I actually spent time learning the nix programming language.
Read up on modules. It’s obvious you haven’t even googled it.
You’re not supposed to use configuration.nix for userland packages. Separation of concerns, and so you don’t need to rebuild all the time.
Declarative package management and configuration
You only need to remember one command to install and update all your packages
There are many ways to install a package, and that allows you to chose the one you want to use. Nobody’s forcing you to use the module instead of just the package…
You don’t use flakes to install packages. You use them to control the package definitions, pin specific versions, add packages from outside of nixpkgs in a declarative manner, and so on.
You really want to like Nix, but don’t want to learn basic concepts and instead expect it to behave like every other distro.
If installing packages is too much for you, give up on nixos and use something else. That’s literally the easiest and most issue free part of using it. You can install hyperland through nix on Debian or whatever distro you want.
Yeah, why would anyone want a list of packages they currently have installed. Can’t think of any benefits, nope…
I mean at this point, people use that phrase themselves, so I don’t think it really makes fun of them anymore.
I use EndeavorOS, btw
deleted by creator