| Title: How to hack on Nix and try your changes | |
| Author: Solène | |
| Date: 19 August 2022 | |
| Tags: nix development nixos | |
| Description: This article explains how to make changes to the nix | |
| program and how to use it locally | |
| # Introduction | |
| Not obvious development process is hard to document. I wanted to make | |
| changes to the nix program, but I didn't know how to try them. | |
| Fortunately, a coworker explained to me the process, and here it is! | |
| The nix project GitHub page | |
| # Get the sources and compile | |
| First, you need to get the sources of the project, and compile it in | |
| some way to run it from the project directory: | |
| ```shell | |
| git clone https://github.com/NixOS/nix/ | |
| cd nix | |
| nix-shell | |
| ./bootstrap.sh | |
| ./configure --prefix=$PWD | |
| make | |
| ``` | |
| # Run the nix daemon | |
| In order to try nix, we need to stop nix-daemon.service, but also stop | |
| nix-daemon.socket to prevent it to restart the nix-daemon. | |
| ```shell | |
| systemctl stop nix-daemon.socket | |
| systemctl stop nix-daemon.service | |
| ``` | |
| Now, when you want your nix-daemon to work, just run this command from | |
| the project directory: | |
| ```shell | |
| sudo bin/nix --extra-experimental-features nix-command daemon | |
| ``` | |
| Note this command doesn't fork on background. | |
| If you need some settings in the nix.conf file, you have to create | |
| etc/nix/nix.conf relative to the project directory. | |
| # Restart the nix-daemon | |
| Once you are done with the development, exit your running daemon and | |
| restart the service and socket. | |
| ```shell | |
| systemctl start nix-daemon.socket | |
| systemctl start nix-daemon.service | |
| ``` |