mirror of
https://github.com/ryan4yin/nixos-and-flakes-book.git
synced 2025-01-04 21:19:17 +01:00
73 lines
2.4 KiB
Markdown
73 lines
2.4 KiB
Markdown
## 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, 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.
|