mirror of
https://github.com/ryan4yin/nixos-and-flakes-book
synced 2024-12-02 08:49:20 +00: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.
|