3 ms·
I updated my reply. Can you confirm that inheriting from a forked nixpkgs with a patched default.nix in ruby directory is the solution for cases that a particul
by ducktective 5y ago
I updated my reply. Can you confirm that inheriting from a forked nixpkgs with a patched default.nix in ruby directory is the solution for cases that a particular version was not ever present in history?
- Arkh4m 5y agoThere is no need to literally fork the nixpkgs repo. Most language derivations were written with the idea of supporting multiple versions at the same time. In this guide (https://www.breakds.org/post/nix-shell-for-nodejs https://www.breakds.org/post/nix-shell-for-nodejs), the key example is this one: let pkgs = import <nixpkgs> {}; buildNodejs = pkgs.callPackage <nixpkgs/pkgs/development/web/nodejs/nodejs.nix> {}; nodejs-8 = buildNodejs { enableNpm = true; # We need npm, do we? version = "8.17.0"; sha256 = "1zzn7s9wpz1cr4vzrr8n6l1mvg6gdvcfm6f24h1ky9rb93drc3av"; }; in pkgs.mkShell rec { name = "webdev"; buildInputs = with pkgs; [ nodejs-8 (yarn.override { nodejs = nodejs-8; }) ]; } where we import the normal nixpkgs, then we use `callPackage` to re-use the code that was written by the Nix mantainers, and we specify our own version and SHA. If the derivation hadn't been written to be reusable what you can do is to copy this whole directory https://github.com/NixOS/nixpkgs/tree/nixos-21.05/pkgs/development/web/nodejs https://github.com/NixOS/nixpkgs/tree/nixos-21.05/pkgs/devel... to your local project and import the nix files locally. In this case, some of the artifact might be missing from the nix cache and you might need to compile some from source. We do this in some cases and upload the artifacts to our private store on https://www.cachix.org https://www.cachix.org so that no engineer has to recompile them again on their own computer.