1
0
Fork 0
mirror of https://github.com/NixOS/nix.dev.git synced 2024-10-18 14:32:43 -04:00
nix.dev/source/reference/pinning-nixpkgs.md

80 lines
2.1 KiB
Markdown
Raw Normal View History

2021-12-10 07:24:12 -05:00
(ref-pinning-nixpkgs)=
# Pinning Nixpkgs
Specifying remote Nix expressions, such as the one provided by Nixpkgs, can be done in several ways:
2021-12-10 07:24:12 -05:00
2023-11-01 22:41:54 -04:00
- [`$NIX_PATH` environment variable](https://nix.dev/manual/nix/2.18/command-ref/env-common.html#env-NIX_PATH)
- [`-I` option](https://nix.dev/manual/nix/2.18/command-ref/opt-common.html#opt-I) to most of commands like `nix-build`, `nix-shell`, etc.
- [`fetchurl`](https://nix.dev/manual/nix/2.18/language/builtins.html#builtins-fetchurl), [`fetchTarball`](https://nix.dev/manual/nix/2.18/language/builtins.html#builtins-fetchTarball), [`fetchGit`](https://nix.dev/manual/nix/2.18/language/builtins.html#builtins-fetchGit) or [Nixpkgs fetchers](https://nixos.org/manual/nixpkgs/stable/#chap-pkgs-fetchers) in Nix expressions
## Possible URL values
2021-12-10 07:24:12 -05:00
- Local file path:
2021-12-10 07:24:12 -05:00
```
./path/to/expression.nix
```
2023-12-05 08:24:11 -05:00
Using `./.` means that the expression is located in a file `default.nix` in the current directory.
- Pinned to a specific commit:
```
https://github.com/NixOS/nixpkgs/archive/eabc38219184cc3e04a974fe31857d8e0eac098d.tar.gz
```
- Using the latest channel version, meaning all tests have passed:
```
http://nixos.org/channels/nixos-22.11/nixexprs.tar.xz
```
2023-07-21 05:36:25 -04:00
- Shorthand syntax for channels:
```
channel:nixos-22.11
```
- Using the latest channel version, hosted by GitHub:
```
https://github.com/NixOS/nixpkgs/archive/nixos-22.11.tar.gz
```
- Using the latest commit on the release branch, but not tested yet:
```
https://github.com/NixOS/nixpkgs/archive/release-21.11.tar.gz
```
2021-12-10 07:24:12 -05:00
## Examples
2023-10-06 04:59:27 -04:00
- ```shell-session
$ nix-build -I ~/dev
```
2021-12-10 07:24:12 -05:00
- ```shell-session
$ nix-build -I nixpkgs=http://nixos.org/channels/nixos-22.11/nixexprs.tar.xz
```
2021-12-10 07:24:12 -05:00
- ```shell-session
$ nix-build -I nixpkgs=channel:nixos-22.11
```
- ```shell-session
2023-07-21 05:36:25 -04:00
$ NIX_PATH=nixpkgs=http://nixos.org/channels/nixos-22.11/nixexprs.tar.xz nix-build
```
2021-12-10 07:24:12 -05:00
- ```shell-session
2023-07-21 05:36:25 -04:00
$ NIX_PATH=nixpkgs=channel:nixos-22.11 nix-build
```
- In the Nix language:
2021-12-10 07:24:12 -05:00
```nix
2021-12-10 07:24:12 -05:00
let
pkgs = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/nixos-22.11.tar.gz") {};
in pkgs.stdenv.mkDerivation { ... }
2021-12-10 07:24:12 -05:00
```