diff options
Diffstat (limited to 'content/notes/working-with-nix.md')
-rw-r--r-- | content/notes/working-with-nix.md | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/content/notes/working-with-nix.md b/content/notes/working-with-nix.md new file mode 100644 index 0000000..9e697d5 --- /dev/null +++ b/content/notes/working-with-nix.md @@ -0,0 +1,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 |