- `wireguard` for `hs` - gnome keyring for VSCode to make Copilot work - uninstalled local `Hydra` on `pc` - VSCode -> VSCodeFHS - Emacs - typescript - solidity - envrc mode |
||
---|---|---|
.github/workflows | ||
hosts | ||
lib | ||
modules | ||
overlays | ||
pkgs | ||
profiles | ||
shell | ||
users | ||
.editorconfig | ||
.envrc | ||
.gitignore | ||
bors.toml | ||
default.nix | ||
emacs.d | ||
flake.lock | ||
flake.nix | ||
README.org | ||
shell.nix |
NixFleet
A complete, declarative and reproducible configuration of my entire Nix fleet, this includes the following machines:
- my main home workstation
pc
- homeserver (mainly a nas)
hs
- my arm based PineBook Pro
pbp
, almost completely open hardware
The different confgurations share many profiles, in fact my original goal was to avoid to rewrite the same Nix derivations for my different machines.
Continuous integration
At every commit a GitHub action builds all the machines and publish the artifacts produces to /aciceri/nixfleet/src/commit/0ee819715f7d80b75b23befa1e3d1af6fed6ed9a/aciceri-fleet.cachix.org. Moreover, every night, another GitHub action is triggered and it try to update the flake's lockfile creating a PR, the same GitHub action is before is run against the branch of this PR.
Commands
Here I describe my most used commands. All the commands are executed
inside the Flake's development shell. To enter in this shell is
sufficent to cd
in the folder (if you use direnv
) or run nix
develop
.
Checking
To check that the Nix Flake is well defined:
nix flake check
Building
nix -Lv build
".#nixosConfigurations.<host>.config.system.build.toplevel"
where <host>
is the hostname e.g. pc
.
Testing new config
bud rebuild <host> test
where <host>
is the hostname e.g. pc
.
Switching
bud rebuild <host> switch
where <host>
is the hostname e.g. pc
.
Remote deploy
deploy -d --hostname <hostname> '.#<host>' --skip-checks --ssh-user root
where
<hostname>
is the remote machine hostname or ip<host>
is one betweenpc
,pbp
orhs
Github Actions
Check and build
At every commit pushed on master
a Github actions which nix flake
check
the flake is executed and then every system is build.
Currently this workflow will skip aarch64
hosts since the runner is
x86_64
and I didn't find a way to make it cross compile.
Release
At every tagged commit whose tag name starts with release-
a process
that releases all the bootstrap ISOs for the systems is started. Here
I've the same problem with aarch64
hosts so the runner will skip
them.