4 ms·
Show HN: Nixhub.io – Find Specific Versions of Nix Packages
- Alifatisk 3y agoI am currently using asdf, is there anything Nix does better than asdf?
- jljljl 3y agoTwo 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.
- rgoulter 3y agoNix is a much more general purpose tool than asdf. Nix can also be used to build Docker images, VM images, or configure a NixOS system. Nix's packages can also be run without being installed. Specifically for setting up a development environment? As sibling pointed out, nix shells can provide native libraries. With nix shell, it's also possible to have the shell be strictly 'pure', in that the shell's environment will only be what's declared in the Nix shell. Having that ensures that you're not relying on environment variables you set elsewhere, or stuff you installed elsewhere.
- drunner 3y agoOk, 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?
- breakds 3y agoFor 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 3y agoYou 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 3y agoA 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
- lucilleh 3y agoIf 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.
- jljljl 3y agoCool bonus feature of Nixhub.io I wanted to share -- Package pages are linkable/bookmarkable! So if you want to view all the versions available for NodeJS, you can visit https://nixhub.io/packages/nodejs https://nixhub.io/packages/nodejs You can even link to a specific version with an anchor link. For example, you can see NodeJS 19.8.0 at https://nixhub.io/packages/nodejs#19.8.0 https://nixhub.io/packages/nodejs#19.8.0
- I_am_tiberius 3y agoI've never used nixos so excuse this question: What is the difference between nixhub and the package search on https://search.nixos.org/packages https://search.nixos.org/packages ?
- zuzuleinen 3y agoFrom a short look I see it uses devbox in the install instructions as opposed to nix-shell Probably a polished design to promote devbox
- lucilleh 3y agonixhub has the historical versions of a package, which you cannot get via nixos.org.
- deleted 3y ago[deleted]
- jljljl 3y agohttps://search.nixos.org/packages https://search.nixos.org/packages only shows packages that are available on the latest stable and unstable releases of Nixpkgs. The means they only have a limited number of versions for a given package available. For example, Python on unstable only has 5 versions to choose from: - 2.7.18 - 3.9.17 - 3.8.17 - 3.11.4 - 3.12.0b3 If you need something different, you need to find a specific commit of the NixOS/nixpkgs repo that has that version. This information is not indexed or searchable on the official package search. Nixhub.io provides an index of these older released commits, so you can find and install versions that aren't available in the latest Nix releases. If you visit https://www.nixhub.io/packages/python https://www.nixhub.io/packages/python, you can see we have a lot more versions available. Developers can use the Nix or Devbox references on that page to install the version they need.
- I_am_tiberius 3y agoWhy is it necessary to have two platforms then? https://search.nixos.org/packages https://search.nixos.org/packages could just add older packages as well, right?
- mock-possum 3y agoSome fuzzy search as you type magic on the package search box would be a nice feature. Are you making money off of this?
- jljljl 3y agoFuzzy search is definitely on our todo list!
- misterio7 3y agoThat's pretty sweet! Is the code open source? I'd love to see how it works.
- jljljl 3y agoWe haven't open sourced it, but we are planning to write a deep dive on how we built the index and how the search service works.