68 lines
2.9 KiB
Markdown
68 lines
2.9 KiB
Markdown
[![built with nix](https://builtwithnix.org/badge.svg)](https://builtwithnix.org)
|
|
|
|
|
|
# Nix Dotfiles
|
|
|
|
These are my dotfiles for several nix machines.
|
|
Here are some of the interesting files and dirs:
|
|
|
|
| Path | Purpose |
|
|
|------|---------|
|
|
| `/home` | [home-manager][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][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][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][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
|
|
```
|
|
|
|
|
|
[home-manager]: https://github.com/nix-community/home-manager
|
|
[nixos-search]: https://search.nixos.org/options
|
|
[sops-nix]: https://github.com/Mic92/sops-nix
|
|
[nix-flakes]: https://nixos.wiki/wiki/Flakes
|