The product of a chat with @QuazarOmega@lemy.lol

  • sushibowl@feddit.nl
    link
    fedilink
    arrow-up
    0
    ·
    2 months ago

    Nix has the same mix of conceptual simplicity and atrocious user interface as git, but somehow magnified three times over. I’ve tried it multiple times, but could never get over the unintuitive gaggle of commands.

    • Shareni@programming.devOP
      link
      fedilink
      arrow-up
      0
      ·
      edit-2
      2 months ago

      It’s much simpler because you’re using text files to define the expected state, the cli is there only to tell nix to figure out what it needs to do and to get on with it. Meanwhile with git you’re manually doing each of the steps until you reach the desired state.

      I only need cd ~/dotfiles/nix/ && nix-channel --update && nix flake update && home-manager switch for everyday package management. It’s the nix version of apt update upgrade and install.

      nix shell and nix run are pretty useful as well, and you’d want home-manager generations to rollback.

      The confusion arises because there are 5 different ways to do the same thing, the non-experimental methods shouldn’t be used even though they’re recommended in the official docs, and you need to get lucky to get the info that you can use home-manager and that one liner.

      • sushibowl@feddit.nl
        link
        fedilink
        arrow-up
        0
        ·
        2 months ago

        The confusion arises because there are 5 different ways to do the same thing, the non-experimental methods shouldn’t be used even though they’re recommended in the official docs

        I appreciate what you’re trying to say, but you’re kind of illustrating exactly the point I was making about conceptual simplicity and atrocious UX.

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

          You’re ignoring the difference between using something declaratory and imperatively. Just because it’s difficult to get to that one liner, it doesn’t change the fact you’ll still only use that one command. Git by it’s nature requires you to use different commands to achieve different results. Home-manager allows you to both update your packages and delete all of them with the same command, because that command is “sync the state with the source of truth”.

          • sushibowl@feddit.nl
            link
            fedilink
            arrow-up
            0
            ·
            2 months ago

            I don’t really care about the declarative/imperative thing, to me how many commands you “really need” is beside the point. This is essentially the same argument as the people who say “git is not complex because you only really need checkout/commit/push, just ignore all the other commands.” This doesn’t matter when the official documentation and web resources keep talking about the other billion commands. Even home-manager has this warning at the very top of the page that basically tells you “you need to understand all the other commands first before you use this,” and “if your directory gets messed up you have to fix it yourself.”

            These are exactly the same kinds of problems people have with git.