- cross-posted to:
- linuxmemes@lemmy.world
- cross-posted to:
- linuxmemes@lemmy.world
Am I out of touch?
No, it’s the forward-thinking generation of software engineers that want elegant, reliable, declarative systems that are wrong.
Am I out of touch?
No, it’s the forward-thinking generation of software engineers that want elegant, reliable, declarative systems that are wrong.
In the case of docker I’m already at the point where I no longer think it’s necessary. At my current job our stack is JS, PHP and Python. 3 interpreted languages, we then build on Ubuntu and deploy on Ubuntu. I don’t think our project really needs docker, even though it does use it. We also have wasm/wasi prepping to eat Docker’s lunch.
I’d look into building all of that in a flake just so you can encapsulate (and have a central version control of) all of your dependencies in case something does change.
I’m a bit of a Nix dork but I tend to try and declare my entire dev stack in a flake so it can follow me to every machine. It offers some of the “it works on every machine” guarantees that Docker offers while also forcing the compilation of the stack to happen natively. I like that
Here’s how I used the Nix way to declare an interactive Python scraper the other day. With this method, I can lock dependencies between machines as a matter of course without having to use Docker:
{ description = “Weed Scraper”; inputs = { nixpkgs.url = “github:NixOS/nixpkgs?ref=nixpkgs-unstable”; utils.url = “github:numtide/flake-utils”; }; outputs = { self, nixpkgs, utils }: utils.lib.eachSystem [“x86_64-linux”] (system: let pkgs = import nixpkgs { system = system; }; in rec { packages = { pythonEnv = pkgs.python3.withPackages (ps: with ps; [ webdriver-manager openpyxl pandas requests beautifulsoup4 websocket-client selenium keyboard ]); }; devShell = pkgs.mkShell { buildInputs = [ pkgs.chromium pkgs.undetected-chromedriver packages.pythonEnv ]; shellHook = ‘’ export PATH=${pkgs.chromium}/bin:${pkgs.undetected-chromedriver}/bin:$PATH ‘’; }; }); }