# Simplifying NixOS-Related Commands To simplify NixOS-related commands, I utilize [just](https://github.com/casey/just), which proves to be very convenient. Alternatively, you can also use similar tools like Makefile or [cargo-make](https://github.com/sagiegurari/cargo-make) for this purpose. Here, I will provide my approach as a reference. Below is an example of how my Justfile looks: > The latest Justfile I'm using: [ryan4yin/nix-config/Justfile](https://github.com/ryan4yin/nix-config/blob/main/Justfile) ```Makefile # just is a command runner, Justfile is very similar to Makefile, but simpler. ############################################################################ # # 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 up: nix flake update # Update specific input # usage: make upp i=home-manager upp: nix flake lock --update-input $(i) history: nix profile history --profile /nix/var/nix/profiles/system repl: nix repl -f flake:nixpkgs clean: # remove all generations older than 7 days sudo nix profile wipe-history --profile /nix/var/nix/profiles/system --older-than 7d gc: # garbage collect all unused nix store entries sudo nix store gc --debug sudo nix-collect-garbage --delete-old ############################################################################ # # 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 ``` By Save this `Justfile` to the root directory of your Nix flake. Then, I can use `just deploy` to deploy the configuration to my local machine, and `just idols` to deploy the configuration to all my remote servers. This approach simplifies the execution of NixOS commands by abstracting them behind target names in the Justfile, providing a more user-friendly and convenient experience.