Some folks on the internet were interested in how I had managed to ditch Docker for local development. This is a slightly overdue write up on how I typically do things now with Nix, Overmind and Just.

  • CodeBlooded
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 year ago

    I’ll certainly give this a read!

    Are you saying that nix will cache all the dependencies within itself/its “container,” or whatever its container replacement would be called?

    • uthredii
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      Are you saying that nix will cache all the dependencies within itself/its “container,” or whatever its container replacement would be called?

      Yep, sort of.

      It saves each version of your dependencies to the /nix/store folder with a checksum prefixing the program name. For example you might have the following Firefox programs

      /nix/store/l7ih0zcw2csi880kfcq37lnl295r44pj-firefox-100.0.2
      /nix/store/cm1bdi4hp8g8ic5jxqjhzmm7gl3a6c46-firefox-108.0.1
      /nix/store/rfr0n62z21ymi0ljj04qw2d7fgy2ckrq-firefox-114.0.1
      

      Because of this you can largely avoid dependency conflicts. For example a program A could depend on /nix/store/cm1bdi4hp8g8ic5jxqjhzmm7gl3a6c46-firefox-108.0.1 and a program B could depend on /nix/store/rfr0n62z21ymi0ljj04qw2d7fgy2ckrq-firefox-114.0.1 and both programs would work as both have dependencies satisfied. AFAIK using other build systems you would have to break program A or program B (or find versions of program A and program B where both dependencies are satisfied).