Perhaps dumb questions inbound ;)

I use Arch because I’m strapped for time and my system is always moving.

  • 2 minutes to install something? AUR probably has it.

  • Ten minutes of free time to look for a software that fits a new need? Try random AUR things (auditing PKGBUILDs is just twenty seconds or so).

  • If I need a tiny patch, I’ll just add a sed or patch file to the PKGBUILD. (Super easy, you barely learn any syntax cuz it’s intuitive shell.)

  • make && make install/meson blahblah usually just works.

  • Wiki does the thinking for me if I need something special (e.g. hw video acceleration)

Buuuut update surprises can be a pain (e.g. Pipewire explodes Saturday evening) and declarative rollbackable immutability sounds really freakin’ AWESOME, so I’m considering NixOS for my new laptop (old one’s webcam broke). So I ask:

  • How much can I grok in a week?
    • I need to know Nixlang, right? I have a ton of dotfiles and random homemade cpp commands in ~/.local/bin that I use daily
  • How quick is it to make a derivation?
    • I make install a lot, do I need to declare that due to non-FHS? Can I boilerplate the whole thing with someone else’s make install and ctrl+c ctrl+v? How does genAI fare? (Lemmy hates word guess bots, I know)
  • How quick is it to install something new and random?
    • Do I just use nix-shell if I need something asap? Do I need to make a derivation for all my programs? e.g. do I need to declare a Hyprland plugin I’m test-running?
  • How long do you research a new package for?
    • On Gentoo I always looked up USE flags (NOO my time); on Arch I just audit the PKGBUILD and test-run it (20 seconds); on Ubuntu I had to find the relevant PPA (2 minutes). What’s it like for Nix?
  • Can you set up dev environments quickly or do you need to write a ton of configs?
    • I hear python can be annoying. Do C++/Android Studio have header file/etc. issues?
  • What maintenance ouchies do you run into? How long to rectify?
  • Do I need to finagle on my own to have /boot encrypted?
    • I boot via: unencrypted EFI grub asks for LUKS password -> decrypt /boot, which then has a keyfile -> decrypt and mount btrfs root partition. But lots of guides don’t do it this way

Thanks for bearing with me ദ്ദി(。•̀ヮ<)~✩‧₊

  • AItoothbrush@lemmy.zip
    link
    fedilink
    English
    arrow-up
    5
    ·
    2 months ago

    Nixos is amazing especially for use cases like yours. Ive been using it for id say 8 months. Never had anything break on me ever that had to do anything with updates. The most you do is edit your config sometimes because they renamed something.

    As for dotfiles you can keep em how you did it before, your home directory doesnt have to be immutable.

    Nixlang isnt that hard if you dont do anything insane and you can copy most things from other peoples configs. If you have custom executables theres actually a really good way of packaging it for you own setup and you can use them as any other package.

    Nix-shell is really good when you need something instantly. It just drops you into a shell with the packages installed that you asked for. I tested out compositors by just using nix-shell on the tty and running them to see how they work.

    For packages its basically 0 time. Nixos has an insane number of packages for almost everything and even when its not packaged you can get flakes other people made(bit like aur now that i think about it) and it will build the package for you.

    Idk that much about dev envs, for me its just and ubuntu or fedora distrobox because literally everything is made to be compiled on those and its easier than searching for every package you need because of course every distro has completely different names for it. As for setting up your own dev envs i heard its a blessing and really good.

    Idk for encryption is just have LUKS, dont know about the technicalities that much.

    Something i recommend is not falling down the rabbit hole of making everything immutable. Your dot files can be just the way you already have them. Home manager is cool and all but after moving literally all of my configs to it i realized its just an extra useless layer of abstraction. Just upload you config directory to github and everything will be easy to manage. Also sometimes my system doesnt build because of some conflict in my config files. Kinda stupid to have the most stable packaging system ive ever seen in my life and then fail a build because of your neofetch config or something.

    Another amazing thing on nixos is that you can have multiple streams of packagesm. My system is on stable(because its stable lol but still rapid enough for me) but some of my packages are on unstable. Firefox vulnaribility? Just update it to unstable and EVERYRHING WORKS. It NEVER breaks.

    Sorry for the novel length comment but in the end if you have the need for a stable unstable system the nixos is perfect. Tbh i wish there was something simpler that did what nixos does. Someone could make something built on nixos that abstracts away the features that 99% of users dont need.

    • fool@programming.devOP
      link
      fedilink
      arrow-up
      2
      ·
      2 months ago

      The “stable unstable” setup is a beautiful concept. Thanks for the dotfiles mention – I keep hearing “you need to rebuild if you edit a dotfile” but I guess that’s a myth encountered by people trying to nix too nixily, falling into said archetypal rabbit hole

      Questions:

      1. Does mixing streams “infect” other packages? I remember an old Gentoo thing where ~amd64 unstable packages would want to spread on its own. Since it’s nix I assume that an unstable package will require a bunch of unstables but they’d be installed alongside respective stable versions – i.e. taking up disk space but not “spreading” per se

      For packages its basically 0 time.

      Is that really true for you? I assume you refer to the length of time it takes to copy paste a flake from online but how reliable is that really? And the other commenters mention that there’s still wrestling to be had for certain tools

      • AItoothbrush@lemmy.zip
        link
        fedilink
        English
        arrow-up
        4
        ·
        2 months ago

        Mixing release streams dont infect other packages but yes you will have multiples of a lot of dependencies. Thats the one thing nixos eats up pretty well but with modern storage it doesnt really matter. I have a 512gb ssd and only use about 200gb of it with nixos, vms and all my personal data. I havent thought about running out of storage in a lot of time. Tho your own usage may vary, i dont have many heavy packages other than a few design tools.

        The zero time really is true, i just search the nix repo, add it to my config and rebuild. 2 mins. The only things ive struggled with are dependencies for building stuff but ive always been someone to struggle with it so i just started compiling in vms and now i just do it with distrobox. It works for me, i didnt even change my workflow from other distros but it may not work for you. I definitely recommend trying nixos out and if you like it you will love it. Just dont go too deep in the rabbit hole, i know people whos home is a temp directory and its rebuilt on every boot and their root is also rebuilt the same way. Dont even ask why or how 💀

        • fool@programming.devOP
          link
          fedilink
          arrow-up
          2
          ·
          1 month ago

          Too late, I asked algernon. O.O

          but yeah I don’t think I’ll make my OS an absolutely pure mathematical function that I prove the correctness of at every boot cool af tho

          I do rely on correct dev envs so I’ll try my hand at nixos-shell -ing. Thanks for the input

        • algernon@lemmy.ml
          link
          fedilink
          arrow-up
          2
          ·
          1 month ago

          I’m one of those crazy people with / and /home on tmpfs. Setting that up is very easy with Impermanence, but it does require some care and self control. That is precisely the reason I set it up: I have no self control, and need the OS to force my hand. Without impermanence, my root and home fills up with garbage fast. I tend to try and play with a lotof things, and I abandon most of them. With Impermanence, I don’t need to clean up after myself: I delete the git checkout, and all state, cache and whatnit the software littered around my system will be gone on reboot.

          In short, Impermanence makes my system have that freshly installed, clean and snappy feeling.

          The whole thing sounds scarier and more complicated than it really is.