Infrastructure:
- Add deadnix, nixfmt, and statix to flake inputs
- Add formatter output to flake for nix fmt support
- Add deadnix, nixfmt, statix to Home Manager packages
- Add GitHub Actions workflow for CI validation
- Add .pre-commit-config.yaml with hooks for nixfmt, deadnix, and statix
- Support x86_64-darwin in formatter
Statix fixes (W10/W20 warnings):
- Remove unused lambda argument from nixpkgs-settings.nix
- Merge repeated keys in hardware-configuration.nix files (boot.initrd, boot, fileSystems)
- Merge repeated keys in nixnuc/default.nix (services, virtualisation)
- Merge repeated keys in rainbow-planet/default.nix (desktopManager)
- Merge repeated keys in home/general/default.nix (home)
Deadnix fixes (unused declarations):
- Remove unused pkgs/lib/username/http_port arguments from various files
- Fix unused final parameter in overlay functions (final -> _final)
CI/pre-commit fixes:
- Fix pre-commit statix config: add pass_filenames: false
- Fix CI workflow: use nix run nixpkgs# prefix and --ci flag for nixfmt
- Rename modules/hosts/common to modules/shared
- Split shared into home/general, home/linux, and nixos subdirectories
- Update all import paths in lib/ and modules/hosts/
- Fix hardcoded /Users/ path to use config.home.homeDirectory
- Update .sops.yaml path for secrets
SSH key imports removed as they're now handled by private-flake
Email config for hetznix01 moved to private-flake
Network config for hetznix01/02 moved to private-flake
In the UI, I setup the "OAuth" method of logging in, logged in, used my
local account to up my permissions to administrator, then added these
settings so that only my Pocket ID-based login was an option.
The primary motivator here was that the NFO files from Pinchflat had the
path to everything starting at `/downloads` and that didn't work well
with Jellyfin who saw the real path to the files
Prior to this, I had tried to run as my user but that doesn't work here.
It seems you have to use the version of running containers built into
home-manager if you want rootless podman.
This is being done as a step before moving to the nix version of ABS.
That change would be included here too, but I ran into a bug:
```
[2024-12-02 19:53:46.433] FATAL: [Server] Unhandled rejection: [Error: EACCES: permission denied, mkdir '/metadata'] {
errno: -13,
code: 'EACCES',
syscall: 'mkdir',
path: '/metadata'
}
promise: Promise {
<rejected> [Error: EACCES: permission denied, mkdir '/metadata'] {
errno: -13,
code: 'EACCES',
syscall: 'mkdir',
path: '/metadata'
}
}
```
No idea why yet so the container lives on.
To setup the mountpoint, I ran `zfs set mountpoint=legacy
orico/audiobookshelf` and created the directory used as the mount in the
`fileSystems` section.