# Simplify NixOS-related commands I use Makefile to simplify NixOS-related commands, which is very convenient. You can also use other similar tools to do this job(such as [just](https://github.com/casey/just) and [cargo-make](https://github.com/sagiegurari/cargo-make)), here I will only introduce my usage as a reference. My Makefile looks like this: ```makefile # # NOTE: Makefile's target name should not be the same as one of the file or directory in the current directory, # otherwise the target will not be executed! # ############################################################################ # # Nix commands related to the local machine # ############################################################################ deploy: nixos-rebuild switch --flake . --use-remote-sudo debug: nixos-rebuild switch --flake . --use-remote-sudo --show-trace --verbose update: nix flake update history: nix profile history --profile /nix/var/nix/profiles/system gc: # remove all generations older than 7 days sudo nix profile wipe-history --profile /nix/var/nix/profiles/system --older-than 7d # garbage collect all unused nix store entries sudo nix store gc --debug ############################################################################ # # Idols, Commands related to my remote distributed building cluster # ############################################################################ add-idols-ssh-key: ssh-add ~/.ssh/ai-idols aqua: add-idols-ssh-key nixos-rebuild --flake .#aquamarine --target-host aquamarine --build-host aquamarine switch --use-remote-sudo aqua-debug: add-idols-ssh-key nixos-rebuild --flake .#aquamarine --target-host aquamarine --build-host aquamarine switch --use-remote-sudo --show-trace --verbose ruby: add-idols-ssh-key nixos-rebuild --flake .#ruby --target-host ruby --build-host ruby switch --use-remote-sudo ruby-debug: add-idols-ssh-key nixos-rebuild --flake .#ruby --target-host ruby --build-host ruby switch --use-remote-sudo --show-trace --verbose kana: add-idols-ssh-key nixos-rebuild --flake .#kana --target-host kana --build-host kana switch --use-remote-sudo kana-debug: add-idols-ssh-key nixos-rebuild --flake .#kana --target-host kana --build-host kana switch --use-remote-sudo --show-trace --verbose idols: aqua ruby kana idols-debug: aqua-debug ruby-debug kana-debug ``` Save the above Makefile to the root directory of the flake, and then we can use `make deploy` to deploy the configuration to the local machine, and use `make idols` to deploy the configuration to all my remote servers.