• danhab99@programming.dev
    link
    fedilink
    arrow-up
    1
    ·
    2 hours ago

    I really feel compelled to share that I actually really fucking love nix. I’ve never felt so confident that my computer would turn on no problem. It was hard and it was rewarding.

    Idk I guess I haven’t had it for long but once I got my dotfiles the way I like I just stopped messing with it.

    Also nix devshells are pretty dope (⁠◕⁠ᴗ⁠◕⁠✿⁠)

  • Sibbo@sopuli.xyz
    link
    fedilink
    arrow-up
    1
    ·
    4 hours ago

    It’s missing the fact that the nix store can be huge, even if garbage collected regularly. This prevents me from using nix on my Ubuntu laptop with limited HDD space.

  • steeznson@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    7 hours ago

    NixOS sounds like ansible in OS form and that has never seemed appealing. Happy to hear why my impression is wrong though!

  • phantomwise@lemmy.ml
    link
    fedilink
    English
    arrow-up
    21
    arrow-down
    2
    ·
    edit-2
    16 hours ago

    I’ve been stuck on Nix for two weeks because I thought it would be a good idea to put a distro I had never used but that wouldn’t break on my backup laptop in case my main one ever broke. I just couldn’t force myself to install debian, not that I have anything against debian, it’s just… kinda boring, while Nix seemed very interesting. IT SEEMED LIKE A GOOD IDEA AT THE TIME I SWEAR.

    Guess what happened… I broke Arch. Then I reinstalled and the next day the laptop broke. Then the next day I tried to get my data back and the hard drive broke. So, backup laptop with Nix for two weeks…

    • I really really really like the declarative stuff. Installing packages through config files is so nice I’ll never lose track of what I’ve installed ever again 🥰 🥰 🥰 I was already using a git repo for all my config files + GNU Stow to symlink everything to its proper place, so adding the .nix configs to that setup was very easy.
    • Having a clean system on rebuild is great. No more clutter left everywhere that I don’t know about, no more half broken stuff left lying around.

    But…

    • It’s not Arch. Not Nix’s fault, but I kept hearing that it would be “like Arch but declarative”… and it’s really not 😑 Everything seems over-complicated vs as simple as possible.
    • I absolutely hate the language.
    • What’s with those error messages from hell???
    • And speaking of hell, every language that can’t just use indentations like YAML instead of cluttering the code with {} and [] and () should have been relegated to the darkest pit of hell 20 years ago. But points to Nix for being less awful than JSON (the comma on every line but not the last thingy make me want to build a time machine to go murder the grandparents of whoever thought it was a good idea)
    • Packages are out of date even in the unstable branch (I know it’s unfair since it’s not trying to be a rolling release… but… but…)
    • Where are the source packages? Is that an Arch only thing? I liked having packages that automatically use the latest git commit without needing to manually install from source and manually reinstall each time I want an update like a medieval peasant… 😭
    • Nix packages are weird. Even someone who’s terrible at coding like me can read Arch PKGBUILDS… I miss you Arch 😢
    • Apps not working because of paths that don’t exist on Nix… what do you mean I need to patch the package myself? 😭 But at least there’s steam-run, great preserver of what’s left of my sanity.
    • Can’t wrap my head around installing some stuff like VSCode extensions (the advice I got was "don’t bother just do it imperatively 😑 )
    • Wiki is often sparse on info and not very helpful if you don’t already know what you are doing (and I clearly don’t 😅)
    • Hidden configs. Some stuff works on its own like pipewire even though I haven’t installed or configured it (I went with a minimal install that just gave me a tty then build from there, no DE), and how it’s already configured is not in the default config files. It’s very confusing not knowing why some stuff works and how it’s configured by default.

    But it’s kinda growing on me. Like mold. Or cancer. Brain cancer.

    • HayadSont@discuss.online
      link
      fedilink
      arrow-up
      2
      ·
      2 hours ago

      Packages are out of date even in the unstable branch (I know it’s unfair since it’s not trying to be a rolling release… but… but…)

      Sure, some packages are outdated. But in terms of percentage of up-to-date packages, it’s (AFAIK) the best out of any distro repo. And that’s perhaps even more impressive of a feat when realizing it also sports the biggest repo. For actual stats: https://repology.org/repositories/statistics/pnewest

      • phantomwise@lemmy.ml
        link
        fedilink
        English
        arrow-up
        1
        ·
        2 hours ago

        Wait how does Nix Unstable have a better score than the AUR? With four times less maintainers? That’s really impressive, especially considering how much more simple Arch packages are to make.

    • eecobb@lemmy.sdf.org
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      9 hours ago

      I wonder what your thoughts on guix would be, especially considering your thoughts on the language

      • phantomwise@lemmy.ml
        link
        fedilink
        arrow-up
        1
        ·
        2 hours ago

        Succinctly : “OH GOD MY EEEEEYES”

        I’m not a fan of nested parenthesis… but aside from that I don’t know much about the language, is it more convenient? Does it also suffer from the error messages from hell problem?

      • a Kendrick fan@lemmy.ml
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        7 hours ago

        I’m just seeing your comment after I recommended Guix, that I could read and understand Guile Scheme is what made me hop away from NixOS, the nixlang is an ungrokable mess

    • phantomwise@lemmy.ml
      link
      fedilink
      arrow-up
      8
      ·
      16 hours ago

      I’m sure it’ll get better once I’m more used to it, just venting a bit. Sorry for the rant

      • Bluefruit@lemmy.world
        link
        fedilink
        arrow-up
        4
        arrow-down
        1
        ·
        9 hours ago

        I found this very entertaining lol. And it also confirms I made the right choice not using Nix as my daily driver. This sounds like a headache.

        • phantomwise@lemmy.ml
          link
          fedilink
          English
          arrow-up
          1
          ·
          2 hours ago

          Yes it’s a headache if you don’t have a clue what you’re doing and suck at coding like me, but the good parts might make the headache worth it depending on what you want of your distro. A week ago I couldn’t wait to get a new laptop to reinstall Arch, but now I’m actually wondering if I should keep trying Nix… OH GOD HAVE I CAUGHT THE NIX BRAIN CANCER? 😭

  • SavvyWolf@pawb.social
    link
    fedilink
    English
    arrow-up
    13
    ·
    20 hours ago

    Skipped to the “ugly” part of the article and I kind of agree with the language being hard?

    I think a bigger problem is that it’s hard to find “best practices” because information is just scattered everywhere and search engines are terrible.

    Like, the language itself is fairly simple and the tutorial is good. But it’s a struggle when it comes to doing things like “how do I change the source of a package”, “how do I compose two modules together” and “how do I add a repo to a flake so it’s visible in my config”. Most of this information comes from random discourse threads where the responder assumes you have a working knowledge of the part of the codebase they’re taking about.

    • OhVenus_Baby@lemmy.ml
      link
      fedilink
      arrow-up
      2
      ·
      17 hours ago

      I always aim at packages and issued inside my nix config cuts all this hassle out atleast for me… Ive got everything pretty meticulously commented and in order of boot process and in general running step by step order. I’m pretty sure I dumb monkey could figure out how it runs. I came from windows then mint then nix. To give you an idea of my PC knowledge. I think the whole point if nix is to keep the system contained and not scattered. I see many posters mentioning system scatter on nix as an issue and I have no idea how theu managed to complicate one if the simplest systems I’ve ever used as far as clean, tidy, goes.

  • utopiah@lemmy.ml
    link
    fedilink
    arrow-up
    21
    ·
    edit-2
    23 hours ago

    Meanwhile me as a barbarian installing Debian and copying my ~/.bashrc file (and a few others) if not just remounting /home/ in the new installation every few years.

    • 9488fcea02a9@sh.itjust.works
      link
      fedilink
      arrow-up
      5
      ·
      17 hours ago

      One of my machines i’ve been just upgrading in place since debian 8. No need for new installation

      Debian isn’t barbaric at all.

  • traches@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    32
    arrow-down
    2
    ·
    1 day ago

    I like the idea of nixos, but I feel like it makes a bunch of daily sacrifices in order to optimize a task I do once every few years? I hardly ever get a new computer, but I install/uninstall/update/tweak packages on my system all the time. With a dotfile manager and snapshots, I get most of the benefit without any of the drawbacks.

    • dinckel@lemmy.world
      link
      fedilink
      arrow-up
      5
      ·
      17 hours ago

      This is a good example of what people consistently overlook/misunderstand, when it comes to Nix.

      Obviously you can remount a /home, or just pull the dotfiles from a personal repo, but the strength of Nix is also in that I can re-create my entire config exactly how it is defined. If i were to setup a machine completely from scratch, with a mature enough config, it will get me from 0 to my exact desktop completely unattended.

      But there are also many more advantages to it, at least in my eyes. Let’s take trying/tweaking new packages as an example. Yesterday I pulled an old repo for an Outer Wilds mod. The thing needs a dev environment, and a mod manager for the actual game. A nix shell got me both, I finished my work, and when I exit out of fish, both are gone, just as I wanted them to be.

      Another good example would be partial os updates. I’ve used Arch for almost 9 years before switching to Nix, and pretty much a top3 Arch rule is not doing partial updates, or partial rollbacks. In case of a breakage, I would have to manually redownload an older version of a tarball, pacman -U the package, and then hope i’m not cooked. In the case of gcc incompatibilities, it can quickly become a massive pain in the ass. My nix flake would never experience this problem, because I already have two different scenarios available - either i build based on an older lockfile from my git repo, or I create an overlay for a specific input I need, so that it still pulls what it needs, and doesn’t interfere with the rest of my system

    • OhVenus_Baby@lemmy.ml
      link
      fedilink
      arrow-up
      4
      ·
      17 hours ago

      I’ve used nixos exclusively lately. It’s been awesome. No system scatter, clutter. It’d immutable. There’s very slight driver hassle (you don’t have GUI for drivers so a simple terminal command fetches everything you need.) in cinnamon. I came from mint. I have all basic commands in executable files on desktop for ease of hassle. It’s not about rebuilding the system. Its about being hands off. Next to zero maintenance because not much in your system gets altered. I went for a full custom install from terminal. The only thing I personally miss being GUI is a firewall like UFW or GUFW.

      Overall its more rock solid and workable than likely every distro I have ever tried. The feature set is nice, easy rollbacks, fucking cake backups. All you have to know is your entire system lives on one small editable file called nix. Configuration. Keep it in a micro SD or USB or any backup and it’s as if you never left. Any changes you want you simply tweak in the config then reboot. If it breaks then select your previous gen number on boot and your exactly where you was before.

      I diff my edits and keep copies, run auto backups, and more. It’s so hands off that I haven’t found a better replacement yet. My single biggest concern is long-term viability in the project.

    • Phoenix3875@lemmy.world
      link
      fedilink
      arrow-up
      13
      ·
      23 hours ago

      For DevOps, it provides consistency for every CI run and production deployment, especially when a whole system needs to be shipped.

      • OhVenus_Baby@lemmy.ml
        link
        fedilink
        arrow-up
        2
        ·
        16 hours ago

        I’m always on the go, swapping PCs, travelling for medical reasons. Buy, sell, trade hardware. Nix allows me to boot into my system as if I never left with a simple hardware config update script. Rock solid consistency.

        • Cyberwolf@feddit.org
          link
          fedilink
          arrow-up
          1
          arrow-down
          2
          ·
          16 hours ago

          Is your hardware always the exact same? Because if it isn’t, then I’m sure you have to do modifications to your config file. And at that point you night as well just use a regular distro instead.

          • OhVenus_Baby@lemmy.ml
            link
            fedilink
            arrow-up
            3
            ·
            edit-2
            16 hours ago

            So what the main hassle of switching is that you have to run your hardware file to update for your new hardware, then inside your Nix config rarely will I ever have to edit things (maybe UUIDS if totally new machine fresh nix install/but I usually ssd swap for ease of transition and speed, or even clonezilla multiple drives and use as needed) even drivers for example. I’ve got auto scripts setup to run that will automatically pull any drivers or updates from the base system nix update to any drivers.

            There’s really only two files you ever have to touch that I’ve used. Nix hardware, nix config. Once hardware is updated for which system you on you’ll never touch that until you boot a new machine with different hardware. If you setup nix how it’s supposed to be. Nix config is your master file. A single backup of that and when setup correctly. I can boot like I never left my machine. I’m talking librewolf still has my accounts open and logged in. VPN works. It’s all seamless damn near.

            You have to learn to play within nixos sandbox meaning understand what your capable of doing and do it all inside config. With a few auto scripts, and 3 or 4 common commands on desktop page for whatever you wanna do and its terminal and memory hands off. I’ve what I call dumb Monkey commented my entire config and its in order if boot process from power on machine to boot, etc to shutdown.

            A regular distro still poses many many more challenges when hardware swapping. You have different files to remember fstab, etc etc which can lead to mental memory load and system clutter if you didn’t build and maintain a perfect system from the beginning with stuff like files, sym links, all sorts if tweaks you’ve made over time.

            So I switched to nix to mitigate those things. Now I’ve made a master config file copy, auto updates, backups, etc is all automated in the background now. All contained in my nix config. It’s supremely stable. Mental load is zero. Fills my use case. Immutable.

            You have nothing to lose and only to gain. Pick any desktop environment and setup to your liking. I came from windows, to mint, to full custom nix all my apps, browsers, luks, apparmour, firejail, the whole stack.

            I’ve tried live boots of many other distributions but this is the cleanest, leanest, most manageable of them all. My only true concern is project lasting long-term. For now. Aside from not having GUFW. I’m happy. I think there’s just a lot if misinfo and lack of hands on use from most people or incorrectly setup systems to utilize how nix should be ran. I think that should iron out over time.

    • Ephera@lemmy.ml
      link
      fedilink
      English
      arrow-up
      6
      ·
      21 hours ago

      I feel like setting up a new machine is just the easiest to explain.

      Personally, I find dotfiles messy, as you often just want to change one or two settings, but you always carry along the whole file with all kinds of irrelevant other settings. This also makes it impractical to diff two versions of those dotfiles, especially when programs write semi-permanent settings into there.

      I guess, your mileage will vary depending on what programs or desktop environment you use.
      For example, I love KDE, but they really don’t do a good job keeping the config files clean. Nix Plasma-Manager generally fixes that, and for example allows defining the contents of the panel in a readable form.

      • OhVenus_Baby@lemmy.ml
        link
        fedilink
        arrow-up
        1
        arrow-down
        1
        ·
        17 hours ago

        I think you over complicating your view here. I daily nix. Your not carrying a bunch if dot files. You have one. A single nix. Config. That’s it. It’s not big, long, messy, what so ever. I have mine commented by section from boot order to auto updates and backups. Your talking about 150 lines of extremely short and almost self explanatory code. I came from mint having never used nix. I figured it out doing a custom luks install and the whole custom build from scratch in no time.

        Your diff issue is overblown. The edits you make are small and you cannot get lost in multiple configs unless your doing entire system writes which you would never do. I use a dead light weight diff GUI or terminal. This has to be one if the cleanest, maintenance free distros I have ever used.

        It doesn’t seem you have truly driven Nix with this take. No program writes directly to your config, even if there was say your temp scenario you reboot and temps would wipe away like you never did them unless you rebuild nix config. Most of your concerns would fall away once you really drove nix to see how it functions.

            • trevor (he/they)@lemmy.blahaj.zone
              link
              fedilink
              English
              arrow-up
              9
              arrow-down
              1
              ·
              23 hours ago

              The biggest downside to containers vs. Nix for me is that Nix can produce binaries for Linux and macOS, whereas docker only helps with Linux unless you can perform literal magic to cross-compile your project on Linux for macOS.

              Containers also don’t give you reproducible environments, and Nix does.

              That said, Nix documentation is ass, so I usually end up going with containers because they require far less suffering to get working because writing a containerfile is much easier than guessing how to hobble together a Nix flake with a mostly undocumented language.

              • utopiah@lemmy.ml
                link
                fedilink
                arrow-up
                1
                ·
                10 hours ago

                Feels very arbitrary. Why would I care about say MacOS versus FreeBSD or say NeXTSTEP (just to be provocative)?

                Anyway I’m being pulled away from the actual argument, the “bare metal” argument is about performances, isn’t it?

              • atzanteol@sh.itjust.works
                link
                fedilink
                English
                arrow-up
                3
                arrow-down
                1
                ·
                17 hours ago

                Containers also don’t give you reproducible environments, and Nix does.

                Of course it does. 🙄

            • Mihies@programming.dev
              link
              fedilink
              arrow-up
              1
              ·
              23 hours ago

              It could if there are issues accessing hardware directly. Overhead is, as you said, not that important.

    • feddup@feddit.uk
      link
      fedilink
      English
      arrow-up
      4
      ·
      23 hours ago

      Loved nixOS but couldn’t install PIA VPN gui and disliked the workarounds. Also doing .net dev was more awkward than I liked so went back to Arch and wrote some scripts to install all the packages I want instead. Love the idea of nixOS though.

  • ThisDayForwardBetty@piefed.social
    link
    fedilink
    English
    arrow-up
    16
    arrow-down
    1
    ·
    edit-2
    1 day ago

    Agreed with the article. There’s lots to dislike about Nix, but even with those downsides, NixOS is still better than any OS I’ve tried. Install an update and it’s borked? No worries. New PC and you want everything set up just like your old one? Copy one file over and it’s set up for you.

    • OhVenus_Baby@lemmy.ml
      link
      fedilink
      arrow-up
      2
      ·
      17 hours ago

      Unsure about dislikes. You have any desktop spin as you want, complete freedom, immutable, a single small file governs your entire system. I daily Nix currently and I haven’t found an easier distro. I’m not super advanced and I did a full custom build, luks, tweaks, full app installs from scratch. Booted up as if I never left my old PC. Nix is the shit. Most everyone’s concerns are overblown. Most haven’t used it beyond a simple test run or few. The slight learning curve of your config syntax and that’s it. I came from mint then from windows. Newcomers you can do it too!!

    • Cyberwolf@feddit.org
      link
      fedilink
      arrow-up
      1
      ·
      16 hours ago

      Install an update and it’s borked? No worries

      OpenSUSE also does this.

      New PC and you want everything set up just like your old one?

      Install scripts? Of course the individual apps definitions still need to be set up again, but I’d imagine it’s the same for Nix?

    • Vincent@feddit.nl
      link
      fedilink
      arrow-up
      2
      ·
      21 hours ago

      Copy one file over and it’s set up for you.

      So, I’ve only played around with NixOS on a Raspberry Pi, but… Don’t people usually split their config up in multiple files, and then store than in a Git repository?

      The process then still is: check out that Git repository, except there’s another step: copy over your private key so that you can decrypt your secrets.

      Is that correct? Or did I make things needlessly complex for myself?

      • OhVenus_Baby@lemmy.ml
        link
        fedilink
        arrow-up
        1
        ·
        17 hours ago

        Way over complex lol. I don’t copy anything to online source for better or worse. I auto script backups. The only backups you’ll ever need are nix config. Nothing else aside from your home folder obviously. With those two you can boot on any machine, anytime, as if you never left. I am not shilling. It’s been dead stable so far, aside from tweaks I done to break my own builds testing.

      • balsoft@lemmy.ml
        link
        fedilink
        arrow-up
        1
        ·
        18 hours ago

        The process then still is: check out that Git repository, except there’s another step: copy over your private key so that you can decrypt your secrets.

        I store my secrets in a separate private git repo and automatically decrypt them with my hardware key (https://github.com/balsoft/nixos-config/blob/master/modules/secrets.nix) so for me it’s literally just plug in my yubikey and nixos-install github:balsoft/nixos-config#hostname

        • Vincent@feddit.nl
          link
          fedilink
          arrow-up
          1
          ·
          17 hours ago

          How do you access the private Git repo then? Don’t you need a secret to access it?

          • balsoft@lemmy.ml
            link
            fedilink
            arrow-up
            1
            ·
            13 hours ago

            The ssh key to access the private git repo is on the same yubikey as the decryption key (they are technically different GPG slots but I don’t need to care about that, just plug the key in, type in the pin, and it all works automagically)

      • dblsaiko@discuss.tchncs.de
        link
        fedilink
        arrow-up
        1
        ·
        19 hours ago

        I don’t have any secrets in my config or a private key or anything and I’m currently running 4 servers from the same config (it used to be 8 or even more machines at some point even, including desktops).

        But yes, it’s a multi-file config, it would be absolutely crazy to not split it up with how large it is.

        • Vincent@feddit.nl
          link
          fedilink
          arrow-up
          1
          ·
          edit-2
          17 hours ago

          Is that just because your four servers aren’t used for anything that need a secret? e.g. I wanted to put my wifi password in there, and the password for my user account.

  • Ephera@lemmy.ml
    link
    fedilink
    English
    arrow-up
    5
    ·
    24 hours ago

    Personally, the stepping stone I needed to know about is Nix Home-Manager, which basically allows you to manage your dotfiles independent of the distro. From what I understand, if I do switch to NixOS, I’ll continue using this code with just some minor tweaks.

    But yeah, I agree with the verdict in the post. I like it a lot, but I would not have made it past the initial learning curve, if I didn’t happen to be a software engineer. Sysadmins will probably be able to figure out how to put it to use, too. But it’s just not for non-technical Linux users.

    • OhVenus_Baby@lemmy.ml
      link
      fedilink
      arrow-up
      1
      ·
      17 hours ago

      Untrue. I came from windows, to Linux mint, then now I daily nix. I’m an average person who prefers to be terminal hands off. I did a full custom install from my mint setup to nix, apps, luks, the entire swap and booted as if I never left basically. I faltered a few times and had to select previous generations in my boot menu but honestly it’d because somehow I fucked up my UUIDs. The learning curve is there but let me assure you it’s minimal in terms of linux, and it’s dead stable because nothing changes without you doing it. In 1000 years it should still be running Unadultered.

  • Irdial@lemmy.sdf.org
    link
    fedilink
    arrow-up
    6
    ·
    1 day ago

    This is a well-written post. I agree that “friction” involved with small changes and incompatibility with some Linux binaries are significant downsides. I think NixOS makes a lot of sense for development environments, but it’s not my preference for a personal device