Also coming from Arch will induce a bit of a culture shock regarding documentation as the NixOS wiki is just... not very good. It's neither complete nor reliably accurate for the current release. And some wiki pages are actually just snippets with no explanation for either what they do or why they do it.
Oinks
The matter of flakes is complicated. Yes they are experimental, but in reality most Nix users use them despite that. I'm a bit on the fence on whether you should start with flakes because they do add some complexity. You can copy paste a sample flake configuration from the Internet (there are many but they all do exactly the same things) and you'll probably be fine but telling people to just copy paste code they don't understand feels wrong as well.
Regarding documentation... I wouldn't go as far as saying you should avoid it entirely but it is in a very unfortunate state with a lot of wiki pages being outdated or just containing snippets that do things in very weird ways, or are over engineered to the point of being incomprehensible.
And that's if someone bothered to write up anything at all. It's a bit sad but reading from the nixpkgs GitHub (or other people's dotfiles) is sometimes the only way to get certain information, such as valid values for package overrides.
As a Home-Manager user I would argue it's not really worth it. It has it's moments for some applications but most of the time it's the same experience as editing the config files directly. Except instead of INI or TOML it's stringly typed Nix attrsets and you need to rebuild the entire system instead of restarting the app. Not exactly a huge improvement.
And that's when you're lucky enough that what you're configuring can be mapped to attrsets. Styling Waybar via Home-Manager means writing CSS but it's a multi line string in Nix with no appropriate editor support whatsoever, and writing custom actions for Nixvim means writing Neovim-Lua but... that's right, in a multi line string.
On a more positive note, I will second the recommendation for the NixOS & Flakes Book, I found it to be much more useful for getting my head around flakes (and Nix in general since I started using them fairly early on in my Nix journey) than e.g. Vimjoyer's videos, which are good but their repositories were really really cryptic to me at the beginning.
I'm not sure why nix-env
is so slow exactly but it's the wrong tool to use anyways as it just throws away everything NixOS has going for itself in favour of pretending to be a normal package manager. You really just want to use the configuration file.
The "normal" way to install packages in NixOS would be using environment.systemPackages
. The various programs.<name>
options are intended for packages requiring additional setup, like shells or desktop environments (e.g. iirc for sway it creates a systemd target and adds the .desktop files for login managers to see it). Weston has a package but not an option, so you'd have to figure that additional stuff out yourself (but running Weston from a tty should just work).
There are additional ways to install packages for single users or using home-manager but you don't need those.
This does kinda demonstrate why (I personally think) NixOS is so hard to learn: There's a million different ways to do anything and each has it's own weird gotchas. And critically most of them, even when they are honestly just legacy cruft, are not actually deprecated and may even have users advocating their use, or even if they don't nobody bothered to remove that part from the wiki (if it was ever there to begin with).
You can also see this in the flake/channel split: One person in this very thread is telling you to use flakes, while another is telling you to stick with the default (channels).
And in some (fortunately relatively rare) cases even things that everyone agrees are bad ideas still get promoted in official documentation or other prominent places, like using nix-env -i
under any circumstances, ever.
And it is definitely a learning problem you are having. You are facing the same problems as a new Linux user who just installed Manjaro with KDE 6 on Wayland and is wondering why apt-get
and xrandr
are not working even though those are accepted answers on Stackoverflow posts from 2012. Of course as experienced Linux users we know why, but a new one has to learn a lot of stuff before "getting it" and will probably stumble onto poor advice more than once in their journey. (And learning Nix is arguably worse than learning Linux for the first time, but that depends a bit on your exact experience and background.)
If you stick to learning NixOS there will be a point when these things seem trivial, but it will be a lot of effort to get there. Is that effort worth it? Well, if the term "declarative package management" doesn't mean anything to you, maybe not. You do sacrifice a lot of things "just" to declare your entire system state in one configuration file (or more likely, directory). But I do think the things Nix does are really cool, if you can get over the, uh, everything.
『合コンに行ったらイケメン女子がきた』/"I Went to a Mixer and a Handsome Girl Showed Up" by Murakami
Official Pixiv ^JP^ | Official Twitter/X ^JP^ | Mangadex ^EN^ | Dynasty ^EN^
I agree.
You could say that about any kind of autocomplete. Why would people install snippet plugins into their vim/emacs? Sure you can just type everything by hand but it's just more convenient.
Personally I find these kinds of inline AI suggestions make a more convincing use case than trying to prompt engineer a Chat based LLM and diverting your attention to phrasing specifics instead of the actual problem space.
If your build fails because you can't track down the literal ≠
in the code I would recommend just looking at the compiler error. I understand the concerns about ==
vs =
more but the vast majority of LSPs (and some compilers) will catch that too.
I have also yet to see any IDE enable ligatures by default, at least VS Code and the JetBrains suite both require opting into them even though their default fonts support them.
It doesn't help that US diverging diamonds seem to insist on having pedestrians walk through the median.
But honestly all interchanges are varying degrees of horrible and if you want your city to be bearable to navigate as a pedestrian/cyclist you just really don't want to do urban highways, or roads above a certain size in general.
Indeed, that all looks fairly innocuous. Just in case, you are sure that you didn't just accidentially kill
or killall
rclone or bash?
Perhaps wrapping the script in strace
might help debug where the offending signal is coming from.
TimeoutStopSec
applies to the ExecStop
command, TimeoutStartSec
would be the culprit here. I'm not sure why there would be a default timeout of specifically 1:39 minutes though.
I'm running KDE Plasma with the revived Krohnkite for auto tiling. Plasma 6.2 seems to have fixed most of the bugs from 6.0 and 6.1, at least the ones I've noticed.
I was using Sway/SwayFX for a few months but was missing some KDE Gear apps like Dolphin and Okular which I couldn't get to display correctly. KDE is afaik the only desktop with a working Qt theming engine right now, so I can't really see myself switching (unless maybe if they break Krohnkite again).