Live data from Hacker News

Why I love NixOS

birkey.co

301–310 of 323 posts

Re: Why I love NixOS

#301

Earlier quoted context omitted.

You hate that I couldn't remember whether nix has array delimiters on the spot? Jeez, tough crowd. Though it also kinda represents this pride over triviality that some people latch on to in the AI world which is odd since it's also only a mistake a human would make. Had I run my hand-written comment through a proofreading clanker, I would have spared you the negative emotional reaction. In the pre-AI world, you would…

The other poster is being a jerk, but your point doesn’t really refute theirs: if you can’t even be bothered to check for an array delimiter, instead passing that on to an AI, how will you ever learn? People are being more demanding of humans because humans are taking knowledge and learning for granted. All this abstraction has a cost, and the cost is you.

Things are falling out of your memory all the time as a function of how often or seldom you do something, how trivial or superficial the information is, and how minor the difference between other tools you use regularly.

Despite many years of experience, I still sometimes get this wrong in Python or its equivalent in the other languages I regularly switch between:

    from math import sqrt as s
    import sqrt as s from math
    import sqrt from sqrt as s
The difference here is that, because I admitted to using AI, I don't get the grace of making the most trivial mistake in a forum comment.

And suddenly we pretend that had I just written it by hand a few more times, I would never err again in forum comments, despite making similar errors this week in languages I've used to write millions of lines of code across decades.

Re: Why I love NixOS

#302

Earlier quoted context omitted.

NixOS is high-level declarative, so you're reading high-level config diffs when the AI agent is pitching changes. Unless you're brand new to Linux or computing, it's not a mystery what a given nix config change is ever doing. You can probably guess what this does: networking.firewall.allowedTCPPorts = [ 8080, 9000 ]; The things to know about the OS are high level things. The rest of its idiosyncrasies you learn just…

Coming from Ansible with hand-written config templates this was honestly a friction point for me - I felt like NixOS is trying to actively hide what it's actually going to configure. It's gotten better now that I read some nixpkg service sources but from time to time I still feel the urge to just directly manage my systemd units, sshd configs and whatnot. Like, sure it simplifies the setup but at the same time also p…

You always have the option to do your own custom thing like use nix config to manage /etc/iptables.rules.

NixOS does you one thing better by giving you the option to configure things without caring about the underlying implementation, like whether the firewall uses iptables or nftables or something else.

Re: Why I love NixOS

#303
post #32

I'd love NixOS more if they had any decent documentation. Everything seems scattered around a dozen forums, a hundred old blog posts, and a thousand issues of "this work on my machine (3 releases ago)".

In a world of LLMs and agentic coding, I think documentation is less important.

Re: Why I love NixOS

#304
This comment thread highlights an issue that Nix has...some people love it personally, some love it professionally. Some are software engineers, others are hackers.

Most of the comments here seem to be from people using NixOS on a laptop. NixOS as a production OS in the cloud or on a robot is a game changer.

Re: Why I love NixOS

#305

Earlier quoted context omitted.

> [ 8080, 9000 ] Fails to parse is what it does... Are we really living in times where people can't write a single (syntactically) well-formed line of code in a programming language they use? I understand this doesn't really matter when just using NixOS Slop Edition™ but man I hate it.

You hate that I couldn't remember whether nix has array delimiters on the spot? Jeez, tough crowd. Though it also kinda represents this pride over triviality that some people latch on to in the AI world which is odd since it's also only a mistake a human would make. Had I run my hand-written comment through a proofreading clanker, I would have spared you the negative emotional reaction. In the pre-AI world, you would…

> [..] only a mistake a human would make. Had I run my hand-written comment through a proofreading clanker [..]

That's true, and I should've been less rude in my previous comment. Sorry.

(Though note `nix eval` would've sufficed, no need for the probabilistic kind of clanker)

> Yet in the AI world, you demand more from humans.

But this isn't true. In my opinion `learning >> depending on an LLM` and my gripe is that it seems like the former is being displaced by the latter. In the pre-AI world I would've known that the person making the mistake wasn't making it because they outsourced their skill.

So I'm not, in fact, demanding anything more than in the pre-AI world.

Re: Why I love NixOS

#306
post #243

Earlier quoted context omitted.

While nix might be free of side effects, activating a nixos configuration isn't as free as you imply. As an example, nixos keeps state around regarding user id/username mappings, to avoid giving the same user id to different users across time. So a fresh install of nixos might leave services unable to read their data files, because the file might be owned by a different user id. And if you activate and enable incus,…

> As an example, nixos keeps state around regarding user id/username mappings, to avoid giving the same user id to different users across time. So a fresh install of nixos might leave services unable to read their data files, because the file might be owned by a different user id. One reason to set `mutableUsers = false`: https://mynixos.com/nixpkgs/option/users.mutableUsers . > And if you activate and enable incus,…

`One reason to set `mutableUsers = false`: https://mynixos.com/nixpkgs/option/users.mutableUsers.`

That doesn't help. Mutable users is about the lifecycle of the /etc/passwd file. What's I'm referring to is /var/lib/nixos/uid-map.

Re: Why I love NixOS

#307
post #255

Earlier quoted context omitted.

I don't agree at all. Just look at these derivations: https://codeberg.org/guix/guix/src/branch/master/gnu/package... I counted and you regularly see this: "))))))))))" at the end. This is not a language that is optimizing for being written by humans.

Which is the most tired critique of lisp ever. Even the text editor on my phone can keep parens balanced for me. S-expressions were supposed to be replaced by a more user friendly syntax. The trade offs were not worth it and every try to replace sexprs failed. If it is such a problem you can use wisp to write your packages. https://www.gnu.org/software/guile/manual/html_node/SRFI_002...

Most code is read much more than it is written, at least I read much more code than I write. So for me code should be optimized to be read as plain text as that is basically what every tool uses. Requiring a separate tool to get basic readability is not really acceptable. I can't do that on github, I can't do that with the various diff tools, I can't just quickly cat a file or use the countless other tools that are designed to present plain text.

If I then can choose between guix and a language that doesn't require these hoops and extreme quality trade off the choice is not hard.

Anyway if you think guix is better than nix, than nothing stops you from using it.

Re: Why I love NixOS

#308
post #216

Earlier quoted context omitted.

But that doesn’t pin to a specific version?

It does, but its implicit (and so may not be the exact patch version you have in mind). See my other comment for how to handle if you _do actually care_ about pinning to a specific version explicitly.

Doesn't that pin me to a particular versions of nixpkgs? That's fine if I only care about nodejs, but if I want to maintain particular versions of different tools, it won't work.

Re: Why I love NixOS

#309
post #265

Earlier quoted context omitted.

It happens 1/2290 (0.04%) of the time. You are significantly more likely to guess a stranger's birthday totally at random (0.27%) twice in a row (0.07%). If you don't consider that exceedingly rare, then you and I need to hit up Vegas immediately. You are projecting a programming style onto Lisps that's quite alien to them. Lisps tend towards small, discrete functions that are composed together. It is the ordinary la…

There are 101 `(package` definitions and 58 out of them have more than 6 nest level, which I would consider more than excessive. That's an incidence of over 50%. Beside I don't think I'm alien to the functional way of writing things. I write mostly Haskell professionally. But Haskell doesn't casually suffer from making insane expression nesting the default.

You may not be a stranger to the functional style, but you do seem a stranger to the Lisp style, which is closely allied. A lot of FP originated in Schemes and Lisps - Haskell is greatly influenced by the ML family, which is itself greatly influenced by Lisp. Modern FP is a style that would be recognisable to a Lisp programmer fifty years ago, when everyone else was writing imperative soup.

I don't think there's much anyone can say that's going to change your mind. You're strongly coming off as though you've formed a view, based on little experience, and will now Ctrl-F cherry-picked examples to sustain it rather than listen to any contrary information. I respectfully suggest greater open-mindedness and a willingness to reserve conclusions in the absence of data.

I personally don't use Lisp too much, so I'm not particularly invested in this exchange, but I know from experience it's not even remotely what you're describing it as. Everything about Lisps tends towards minimal nesting, from the use of paredit to edit expressions through REPL-based workflows.

The only thing this exchange has done, as someone who programs in FP exclusively, is make me reminisce about and yearn for Lisp. It's a wonderful language for FP.

Re: Why I love NixOS

#310
post #308

Earlier quoted context omitted.

It does, but its implicit (and so may not be the exact patch version you have in mind). See my other comment for how to handle if you _do actually care_ about pinning to a specific version explicitly.

Doesn't that pin me to a particular versions of nixpkgs? That's fine if I only care about nodejs, but if I want to maintain particular versions of different tools, it won't work.

Again, generally in other systems the full semver pinning is more of a crutch to get some 'reproducibility' that nix gives you out of the box at a much higher level. So, in general, people just pin to the major version in nix. But if you _really_ want the full semver pinning there are multiple options that I lay out in the other post. You can even patch the _actual nodejs source itself_ in reproducible/version-pinned ways.
Post reply on HN