A tiny mouse, a hacker.

See here for an introduction, and my link tree for socials.

  • 0 Posts
  • 50 Comments
Joined 1 year ago
cake
Cake day: December 24th, 2023

help-circle
rss

  • I switched to NixOS because I wanted a declarative system that isnt’t yaml soup bolted onto a genetic distro.

    By 2022, my desktop system was an unmanagable mess. It was a direct descendant of the Debian I installed in 1997. Migrated piece by piece, even switched architectures (multiple times! I386->ppc-i386->amd64), but its roots remained firmly in 1997. It was an unsalvagable mess.

    My server, although much younger, also showed signs of accumulating junk, even though it was ansible-managed.

    I tried documenting my systems, but it was a pain to maintain. With NixOS, due to it being declarative, I was able to write my configuration in a literate programming style. That helps immensely in keeping my system sane. It also makes debugging easy.

    On top of that, with stuff like Impermanence, my backups are super simple: btrfs snapshot of /persist, exclude a few things, ship it to backup. Done. And my systems always have a freshly installed feel! Because they are! Every boot, they’re pretty much rebuilt from the booted config + persisted data.

    In short, declarative NixOS + literate style config gave me superpowers.

    Oh, and nixos’s packaging story is much more convenient than Debian’s (and I say that as an ex-DD, who used to be intimately familiar with debian packaging).



  • I do, yes. I’d love to use it, because I like Scheme a whole lot more than Nix (I hate Nix, the language), but Guix suffers from a few shortcomings that make it unsuitable for my needs:

    • There’s no systemd. This is a deal breaker, because I built plenty of stuff on top of systemd, and have no desire to switch to anything else, unless it supports all the things I use systemd for (Shepherd does not).
    • There’s a lot less packages, and what they have, are usually more out of date than on nixpkgs.
    • Being a GNU project, using non-free software is a tad awkward (I can live with this, there isn’t much non-free software I use, and the few I do, I can take care of myself).
    • Last time I checked, they used an e-mail based patch workflow, and that’s not something I’m willing to deal with. Not a big deal, because I don’t need to be able to contribute - but it would be nice if I could, if I wanted to. (I don’t contribute to nixpkgs either, but due to political reasons, not technical ones - Guix would be the opposite). If they move to Codeberg, or their own forge, this will be a solved issue, though.

    Before I switched from Debian to NixOS, I experimented with Guix for a good few months, and ultimately decided to go with NixOS instead, despite not liking Nix. Guix’s shortcomings were just too severe for my use cases.


  • NixOS, because:

    • I can have my entire system be declaratively configured, and not as a yaml soup bolted onto a random distro.
    • I can trivially separate the OS, and the data (thanks, impermanence)
    • it has a buttload of packages and integration modules
    • it is mostly reproducible

    All of these combined means my backups are simple (just snapshot /persist, with a few dirs excluded, and restic them to N places) and reliable. The systems all have that newly installed feel, because there is zero cruft accumulating.

    And with the declarative config being tangled out from a literate Org Roam garden, I have tremendous, and up to date documentation too. Declarative config + literate programmung work really well together, amg give me immense power.






  • I’d say “under no circumstances”. When building for production, you want to build on a stable foundation. LFS isn’t that, it’s an educational tool. It does not result in a maintainable, robust system. It requires tremendous amounts of work to keep it secure and updated: there’s no package manager, no repository you can pull from, no nothing. You have to build an entire distribution on your own. Outside of educational purposes, I’m having trouble to imagine any situation where that might be a good idea.

    No, not even embedded. There were always distros targetting embedded systems, LFS was never a good choice there either. It was much more straightforward to strip down - say - Debian for a limited device, than to build something from scratch for it. (I spent a few years building and operating embedded Linux systems at the early 2000s, we built it on a stripped down Debian.)




  • Both KDE and GNOME are good DEs (and there are many other great ones, and you don’t even need to use a DE; a mismash of applications with your compositor of choice works just aswell - but I digress), you can’t really go wrong with either.

    For someone new to Linux, I would likely recommend GNOME, because it is more opinionated. While KDE is a lot more configurable, that also has a huge downside: configuration fatigue. GNOME is more restrictive, yes, but that has the advantage of not overwhelming you right out of the box.

    If you like and wish to tinker, though, go with KDE. If you want to gently ease into Linux, go with GNOME first, and once you’re comfortable, you can still experiment with KDE. You can install both, and switch between them simply by logging out of one and into the other.


  • To add some nuance to the rest of the comments posted here: GPL’d code can be made proprietary, if the copyright holders all agree. For example, given a project that requires copyright assignment, if the project owner decides to take it proprietary, they can do that, because they’re the copyright owner. GPL alone is not enough to keep a codebase FLOSS. Luckily, both the kernel and git have hundreds of copyright owners (and does not require copyright assignment), so legally changing the license of either of them is practically impossible. So, really, Linus wouldn’t be able to take anything, code wise. He could take his future work, yeah, but he hasn’t been doing much development for the past decade.

    Otherwise… He let go of git pretty early on, and it’s been maintained by Junio ever since. So nothing would happen there whatsoever, Linus’ retirement (friendly or otherwise) would be inconsequential for git.

    The kernel has capable maintainers who have been maintaining stable trees for a long while now (often with companies backing them), and people who have been maintaining large subtrees. There’s a considerable overlap there, too. In short, there are a fair number of people who could fill in for Linus in a pinch. There’d be a small hiccup, and that’s about it. His skills and experience would be missed, but it wouldn’t cause any lasting harm.


  • Again, you’re misunderstanding the problem. Keeping applications up to date is not a problem. Keeping things working the way my family got used to is an entirely different matter, and it’s actually worse on Android & iOS (thus, most phones and tablets).

    The main reason the family even has desktop PCs is because we couldn’t make tablets work for them. Something as simple as reading email was a problem, because the various email apps (gmail, k9, etc) changed their UIs, confusing the heck out of my parents. It would’ve been possible to improve that situation, but the tooling to remotely manage an android phone are far more limited than on a bog standard Linux desktop.

    A lot of people do use phones tablets as their main computer, yes. Ask them how happy they are about it, how much trouble updates and random UI changes cause. Just because they “can live with it” does not mean they enjoy the experience, or want to live with it. Chances are, they don’t have other options. My family does. I think more people should have those options available to them.

    (Also, the blog post is about desktop, specifically, and is a critique of distros trying to aim at non-enthusiasts. When it comes to mobile, those efforts are even more futile, because those specialised distros will have absolutely no chance of working on anything but a very tiny subset of mobile devices.)



  • That does not address the problem at all, though. That solves the upgrade and maintenance problem, but does nothing for users who just want things to work as they always did. It does not address change.

    By maintaining a system for my family, I can address that: either by undoing things, working them around, or preparing them in advance. No amount of automation will solve that. It’s not a technical problem.



  • There seems to be a big gap between what people think others “ought” to understand. Like the expectation that changing tires is something someone needs to be able to do. Or one should be filing their own taxes. I can do both, but I’m never going to do either, because it’s more practical to let someone with way more expertise and knowledge do it for me.

    When it comes to taxes, for example, doing it would take a considerable time for me, to double check and verify everything, and it would be a frustrating experience. By hiring an accountant to do that for me, I save a lot of time and frustration, and can turn that time into work, which ends up netting me more money than my accountant’s pay. So why exactly should I be doing my own taxes?

    And changing tires: since we got our car some 8 years ago, we only ever had to change tires unexpectedly once. We called help, they were there in 10 minutes, meanwhile we nursed our one year olds back to sleep. A lot more convenient - and a lot faster! - than if we had to change tires ourselves.

    To bring this back on topic: I believe that it is perfectly fine to be an end-user who can use their system, their programs, but delegate the administrative tasks to someone else. Installing, upgrading, and in general, maintaining an operating system is not a skill that everyone ought to know. It certainly helps if they do, but it should not be a required skill.


  • I’m going to disagree here, partially. I agree that teaching people how to use a computer, at an early age, is important. It’s also important to teach them about failure, and set realistic expectations.

    That has little to do with constant system updates & maintenance. That is an entirely different skillset. Like, I can use my oven just fine, I know how to get around its kinda awkward menu system, to tell it whether I want to heat up frozen pizza, or if I’m baking bread, and stuff like that. I’m okay with learning a new menu system if I have to replace my oven. I will, however, leave the replacement to a professional. I will let a professional fix it too, should it break.

    Same goes for computers and my family: they are perfectly capable of using computers. They can - reluctantly - adapt to change. They do not want to fix or maintain things, however. And that’s fine! It’s not their area of expertise, nor are they interested in it.

    Most end-users are like that: they can use their systems, but don’t want to keep up with the constant change. That’s tiresome and distracting and annoying and error-prone. I believe these things are best done by someone who can smooth out the experience, someone who can help the end-users adapt, too, perhaps even prepare them in advance. That is what we should focus on, rather than trying to force unwilling people into maintenance. That never ends well.