There have been multiple accounts created with the sole purpose of posting advertisement posts or replies containing unsolicited advertising.

Accounts which solely post advertisements, or persistently post them may be terminated.

demesisx OP , (edited )
@demesisx@infosec.pub avatar

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 (or at least pulls in some content addressed cache that offers security by being the exact hash for the whole dependency graph). 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:


<span style="color:#323232;">{
</span><span style="color:#323232;">  description = “Weed Scraper”;
</span><span style="color:#323232;">
</span><span style="color:#323232;">  inputs = {
</span><span style="color:#323232;">    nixpkgs.url = “github:NixOS/nixpkgs?ref=nixpkgs-unstable”;
</span><span style="color:#323232;">    utils.url = “github:numtide/flake-utils”;
</span><span style="color:#323232;">  };
</span><span style="color:#323232;">
</span><span style="color:#323232;">  outputs = { self, nixpkgs, utils }: utils.lib.eachSystem [“x86_64-linux”] (system: let
</span><span style="color:#323232;">    pkgs = import nixpkgs { system = system; };
</span><span style="color:#323232;">  in rec {
</span><span style="color:#323232;">    packages = {
</span><span style="color:#323232;">      pythonEnv =
</span><span style="color:#323232;">        pkgs.python3.withPackages (ps: with ps; [ webdriver-manager openpyxl pandas requests beautifulsoup4 websocket-client selenium keyboard ]);
</span><span style="color:#323232;">    };
</span><span style="color:#323232;">
</span><span style="color:#323232;">    devShell = pkgs.mkShell {
</span><span style="color:#323232;">      buildInputs = [
</span><span style="color:#323232;">        pkgs.chromium
</span><span style="color:#323232;">        pkgs.undetected-chromedriver
</span><span style="color:#323232;">        packages.pythonEnv
</span><span style="color:#323232;">      ];
</span><span style="color:#323232;">
</span><span style="color:#323232;">      shellHook = ‘’
</span><span style="color:#323232;">        export PATH=${pkgs.chromium}/bin:${pkgs.undetected-chromedriver}/bin:$PATH
</span><span style="color:#323232;">      ‘’;
</span><span style="color:#323232;">    };
</span><span style="color:#323232;">  });
</span><span style="color:#323232;">} 
</span>
  • All
  • Subscribed
  • Moderated
  • Favorites
  • [email protected]
  • random
  • lifeLocal
  • goranko
  • All magazines