blob: 3d208e40fdfaee4b6b55b97737c72aeb6ca599bf (
plain) (
blame)
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
|
---
title: working with nix
date: 2022-05-10
tags:
- linux
- nix
---
## the `nix develop` command
The `nix develop` command is for working on a repository. If our
repository contains a `Makefile`, it will be used by the various
sub-commands.
`nix develop` supports multiple
[phases](https://nixos.org/manual/nixpkgs/stable/#sec-stdenv-phases) and
they map as follow:
| phase | default to | command | note |
|----------------|----------------|---------------------------|------|
| configurePhase | `./configure` | `nix develop --configure` | |
| buildPhase | `make` | `nix develop --build` | |
| checkPhase | `make check` | `nix develop --check` | |
| installPhase | `make install` | `nix develop --install` | |
In the repository, running `nix develop --build` will build the binary
**using the Makefile**. This is different from running `nix build`.
## the `nix build` and `nix run` commands
### for Go
For Go, there's the `buildGoModule`. Looking at the
[source](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/go-modules/generic/default.nix)
we can see there's a definition of what will be done for each phases. As
a result, we don't have to define them ourselves.
If we run `nix build` in the repository, it will run the default [build
phase](https://github.com/NixOS/nixpkgs/blob/fb7287e6d2d2684520f756639846ee07f6287caa/pkgs/development/go-modules/generic/default.nix#L171).
## `buildInputs` or `nativeBuildInputs`
- `nativeBuildInputs` is intended for architecture-dependent
build-time-only dependencies
- `buildInputs` is intended for architecture-independent
build-time-only dependencies
|