about summary refs log tree commit diff
path: root/users/fcuny/notes
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--users/fcuny/notes/content/notes/working-with-nix.org21
1 files changed, 21 insertions, 0 deletions
diff --git a/users/fcuny/notes/content/notes/working-with-nix.org b/users/fcuny/notes/content/notes/working-with-nix.org
new file mode 100644
index 0000000..05e6720
--- /dev/null
+++ b/users/fcuny/notes/content/notes/working-with-nix.org
@@ -0,0 +1,21 @@
+#+TITLE: Working with 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 [[https://nixos.org/manual/nixpkgs/stable/#sec-stdenv-phases][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 [[https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/go-modules/generic/default.nix][source]] 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 [[https://github.com/NixOS/nixpkgs/blob/fb7287e6d2d2684520f756639846ee07f6287caa/pkgs/development/go-modules/generic/default.nix#L171][build phase]].