My configs for both nixos and home manager only machines
Required tree-wide re-wiring of the host option. Now, rather than each host having a monolithic restic.nix file, the hosts restic.nix file just specifies the password and url of the restic repository. Eatch module then definies specific paths to backup and any pre and post commands that need to be performed. Each backed up service gets an independent systemd backup service and timer. |
||
---|---|---|
configs | ||
hosts | ||
lib | ||
modules | ||
packages | ||
roles | ||
templates | ||
.envrc | ||
.gitignore | ||
flake.lock | ||
flake.nix | ||
justfile | ||
LICENSE | ||
README.md |
nix-config
My configs for both nixos and home manager only machines
structure
.
├── flake.nix
├── configs
│ ├── home-manager
│ └── nixos
├── hosts
├── modules
│ ├── home-manager
│ └── hostopts.nix
├── roles
│ ├── home-manager
│ └── nixos
└── templates
- Configs set options and specify programs to be installed. They do not specify their own options, and take effect as soon as they are imported. Generally, a config will be specific to a single program, and possibly optional dependecies of the main program.
- Hosts define specific hosts. They are the entry point into the system.
Each host must import
configs/nixos/common.nix
in the top level andconfigs/home-manager/common.nix
in the home-manager block. Each host must also define the variables declared inmodules/hostopts.nix
. - Modules are always imported by the respective common.nix. They each have an enable option, and only have effects if enabled.
- Roles are larger bundles of software and options. They define packages to be installed and may import configurations or enable modules.
Secrets
This repo uses nix-sops for secrets management, with the encrypted secrets being stored in a private repo imported as an input.
if the nix-secrets
input is commented out, the repo should still build, gracefully degrading to default, non-secret, values.