• Euphoma@lemmy.ml
    link
    fedilink
    arrow-up
    10
    ·
    1 year ago

    I use NixOS. The nice thing about NixOS is that you can set the state of most of your computer in a file or files that can be tracked on git, and any updates can be rolled back.

    • suoko
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      Can you do it with debian / ubuntu?

      • Babalas@lemmy.nz
        link
        fedilink
        arrow-up
        3
        ·
        1 year ago

        Sort of. Nix can be thought of as your package manager + ansible + snapshotting tool + pyenv + docker tool. By this I mean a flake can set up an isolated dev environment that isn’t exposed. You can switch between profiles (and with NixOS you can boot into a previous generations). You can define and spawn a docker or qemu instance; especially useful launching an instance that mirrors your config.

        Cool part though is you can use nix outside of NixOS so easy enough to start moving dotfiles to home-manager, or use it for grabbing packages. For example, on my Ubuntu machine it sets up my git, neovim (it also fetches plugins for nvim), fish config and installs apps like yubioath and qtcreator that I don’t want to manually fetch. Also I use “nix run” almost daily for running apps without “installing” them for those one off cases.

        Probably wouldn’t recommend it for someone who just wants a “fire and forget” installed OS. But, on the other hand, I installed it on my wifes laptop and she can’t tell the difference, and I get an easy job managing it.

        Sorry if that was a bit long. Been using NixOS for about 6 months now and I’m finding it actually exciting. Can recommend watching Matthew Croughan’s SCaLE 2023 video for an interesting demo.

      • lightrush@lemmy.ca
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        1 year ago

        Yes, using any of the available config mgmt systems like Ansible, SaltStack, etc. This is how we create predictable cloud instances among other use cases. You can describe as little or as much of your system’s config in code and version it as you see fit. As for update rollbacks, that’s typically done at the storage level e.g. by using Btrfs or ZFS.