[HN Gopher] Show HN: Nixhub.io - Find Specific Versions of Nix P...
       ___________________________________________________________________
        
       Show HN: Nixhub.io - Find Specific Versions of Nix Packages
        
       Author : jljljl
       Score  : 10 points
       Date   : 2023-07-17 19:10 UTC (3 hours ago)
        
 (HTM) web link (www.nixhub.io)
 (TXT) w3m dump (www.nixhub.io)
        
       | Alifatisk wrote:
       | I am currently using asdf, is there anything Nix does better than
       | asdf?
        
         | jljljl wrote:
         | Two benefits to Nix that I can think of:
         | 
         | 1. It has a wider range of packages available vs asdf. Asdf can
         | support runtimes that have an asdf plugin, whereas Nix has over
         | 80,000 packages available in it's registry
         | 
         | 2. Nix also handles the dependencies for the packages you want
         | to install. If you runtime requires a compiler, specific
         | libraries, etc, Nix will ensure those are installed.
         | 
         | Of course, Nix can be challenging to get started with. If you
         | want to try Nix but find the language intimidating, you can try
         | something like Devbox first.
        
       | drunner wrote:
       | Ok, as a nix noob. I find a given package, say
       | `nixpkgs/3276b62e6639096014652132f4824ac2b4f2a2c4#nodejs`
       | 
       | Then what? How do I throw that in a configuration.nix or
       | flake.nix file?
        
         | lucilleh wrote:
         | If you are unfamiliar with Nix, just install with devbox. That
         | said, you can also do `nix profile install` but then you kinda
         | lose that nice declarative layer that devbox has. Now for some
         | reason if you really want to do advanced customization of
         | nodejs, then make a flake. Overkill for nodejs tho. Rust maybe.
        
         | breakds wrote:
         | For flake.nix, you add that to the inputs, for example, call it
         | `nixpkgs-old`, and then reference the package of interest with:
         | 
         | `nixpkgs-old.legacyPacakges.linux-x86_64.node`, or something
         | like below                 let pkgs = import nixpkgs-old {
         | system = "linux-x86_64";       } in pkgs.mkShell {
         | packages = [ pkgs.node ];       }
        
           | jljljl wrote:
           | You can use 2 spaces after a newline to format it:
           | let           pkgs = import nixpkgs-old { system =
           | "linux-x86_64"; }        in           pkgs.mkShell { packages
           | = [ pkgs.node ]; }
           | 
           | Combine this with the input statement in the comment below to
           | get a decent flake. You can mix and match multiple inputs if
           | you want to install different versions of packages
        
         | jljljl wrote:
         | A few ways to use it are:
         | 
         | 1. Install in your global profile with the CLI:
         | nix profile install
         | nixpkgs/3276b62e6639096014652132f4824ac2b4f2a2c4#nodejs
         | 
         | 2. In a flake.nix, you can set an input with the nixpkgs commit
         | hash, like:                 inputs = {         node-nixpkgs.url
         | = "nixpkgs/3276b62e6639096014652132f4824ac2b4f2a2c4";       };
         | 
         | ...and then use nodejs from that `node-nixpkgs` input to get
         | the exact version you wanted
        
       ___________________________________________________________________
       (page generated 2023-07-17 23:02 UTC)