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.

  • uthredii@programming.dev
    link
    fedilink
    English
    arrow-up
    1
    ·
    11 months 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).