• metasyntactic@infosec.pub
    link
    fedilink
    arrow-up
    9
    ·
    1 year ago

    The control and deterministic nature of it is amazing. I have a git repo for all of my machines entire config. I have no fear that installing something will break or make things that would require blowing away and reinstalling. Also blowing away and reinstalling is no big deal, as is building new boxes. It has a high bar for learning to use it effectively, but the view is worth climbing the mountain.

    • jecxjo@midwest.social
      link
      fedilink
      English
      arrow-up
      3
      ·
      1 year ago

      How configurable is the build process for individual applications? I run Gentoo, have all my config files stored in a git repo which includes the defaults supplied to any application’d configure/make/make install steps.

      • lily33@lemm.ee
        link
        fedilink
        arrow-up
        2
        ·
        1 year ago

        You could apply patches or change the build process. But there are some limitations to ensure reproducible builds. For example, compiler optimizations that break reproducibility are disabled.

        I think you could disable build reproducibility to get rid of those limitations, but I haven’t tried it.

        • jecxjo@midwest.social
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 year ago

          The way I run Gentoo would be the type of thing to break reproducibility, getting rid of features globally that I never need. I keep getting the itch to run NixOS but then I remember rebuilding my Gentoo build from scratch is a weekend task I don’t have time for as I’m too frugal to actually upgrade my hardware.

          • lily33@lemm.ee
            link
            fedilink
            arrow-up
            1
            ·
            1 year ago

            While technically possible, you wouldn’t want to compile everything locally on NixOS. Only packages that you’ve made changes to (such as applied a patch) will be built locally, and everything else (by default) will be pulled from the precomputed binary cache.

            You can disable the binary cache, or make changes to every package. The thing is, if you update a nix package, you’ll have to rebuild everything that depends on it, and with lower-level components, that can be literally everything. It’s not a sustainable workflow.

            NixOS is not the most efficient distro either. I already mentioned some compiler optimizations are disabled by default, because they break build reproducibility. It also tends to use more disk space than other distros. So actually trying to super-optimize every package on it is somewhat pointless.