summaryrefslogtreecommitdiffstats
path: root/doc/getting-started/dev-environments.md
blob: 4b85ed40733ac070527e0d85c90ff3fcb557583a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# Dev environments {#dev-environments}

Create a `shell.nix` with the following:

```nix
# shell.nix
let
  nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz";
  pkgs = import nixpkgs { };
in
pkgs.mkShell {
  packages = [ pkgs.python3 ];
  shellHook = ''
    echo "Welcome in my nix shell"
  '';
}
```

run

```sh
nix-shell
```

This activates your `shell.nix` and you should see:

```sh
unpacking 'https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz' into the Git cache...
Welcome in your nix shell
```

python3 is available

```sh
$ python3 --version
```

To leave the shell

```bash
ctrl+D
```

:::{.note}
You should use [pinned nixpkgs](https://nix.dev/guides/recipes/dependency-management.html).
The example used `unstable` here for demonstration purposes only
:::

For further information check out [nix-shell](https://nix.dev/manual/nix/stable/command-ref/nix-shell)