I just switched one of my systems over to NixOS from Arch and so far it seems interesting. One question I had is regarding the nix-shell. So I get the basic concept of it and that it allows creating a shell that has packages installed with that shell making ideal for dev environments. I’ve even seen talks where the suggest nix-shells over docker/podman, my question is how is persistent data (like databases) handled?

  • kevincox
    link
    fedilink
    English
    arrow-up
    4
    ·
    9 months ago

    In general Nix doesn’t manage persistent data. It will be stored in whatever location the tool writes it to.

    nix-shell is a very simple program. Basically it downloads/builds the package you have configured, then sets up environment variables like PATH to include that package. It would be similar to downloading a pre-built tarball run running ./foo inside of that.

    For most built-in modules this will be /var/lib/foo for a service foo. If you run nix-shell the service will write data wherever it would normally write data on any other distribution.

    • vendionOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      9 months ago

      Okay, that’s good to know. I just wanted to make sure that if I had something like MariaDB or Postgres get installed with nix-shell that I wouldn’t lose everything thus having to set everything back up next time I start the shell again.

      • kevincox
        link
        fedilink
        English
        arrow-up
        2
        ·
        9 months ago

        No, you won’t lose anything. However do be aware that unless you specifically configure different data directories using the same DBMS in multiple projects will use the same underlying data files.

        Typically this won’t be a problem, and you can just create different logical databases if necessary.