Nix expressions for managing hosts, dotfiles, packages etc.
home | ||
hosts | ||
lib | ||
modules | ||
package-overrides | ||
secrets | ||
.envrc | ||
.gitignore | ||
.sops.yaml | ||
flake.lock | ||
flake.nix | ||
LICENSE | ||
README.md |
Nix Dotfiles
These are my dotfiles for several nix machines. Here are some of the interesting files and dirs:
Path | Purpose |
---|---|
/home |
home-manager configuration. |
/hosts |
Machine specific NixOS configurations. |
/hosts/common/default.nix |
Configuration that is equal for all hosts. |
/lib |
Custom lib functions that has not been upstreamed (or should not be) to nixpkgs. I'm trying to phase these out as much as possible. |
/modules |
Custom nixos modules that I use in my own configuration. If you see options that does not appear in NixOS Search, they might be defined here. |
/package-overrides |
Updated or pinned versions of packages that have not been upstreamed to nixpkgs (yet). |
/secrets |
Encrypted sops-nix secrets. |
flake.nix |
The root of everyting. Defines the inputs and outputs of the project. Also applies misc overlays and adds config-wide modules. See Nix Flakes for more information. |
Hosts
Host | Machine type | Purpose |
---|---|---|
Tsuki |
Dell Poweredge r710 server | Data storage / Build server / Selfhosted services. This server hosts a wide variety of services, including websites, matrix server, git repos, CI/CD and more. This is probably the most interesting machine to pick config from |
Kasei |
AMD Zen 2 CPU / AMD GPU - desktop computer | Semi-daily driver. This is my main computer at home. |
Dosei |
Dell Optiplex | Work computer, mostly used for development and testing. |
Europa |
Dell Optiplex | Other work computer, used as nix builder for Dosei . |
home-manager configuration
Path | Purpose |
---|---|
/home/config |
Configuration for everything that is not a program, nor a service, and are big enough to warrant their own file or directory. |
/home/modules |
Custom home-manager modules. |
/home/packages.nix |
A list of packages that should be included in the environment. |
/home/programs |
Configuration for programs that have their own home-manager modules. |
/home/services |
Configuration for services/daemons that are user-specific. |
/home/shell.nix |
Shell-agnostic configuration. This includes aliases, envvars, functions, etc. |
Some useful long commands
Build configuration without switching:
nix build .#nixosConfigurations.tsuki.config.system.build.toplevel -L
Check why configuration depends on package:
NIXPKGS_ALLOW_INSECURE=1 nix why-depends .#nixosConfigurations.tsuki.config.system.build.toplevel .#pkgs.suspiciousPackage
Re-encrypt sops secrets with new key:
sops updatekeys secrets/hosts/file.yml