nix/README.md
2023-09-29 10:12:19 +09:00

143 lines
5.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# NixOS Configuration Repository
## NOTE: These configs expect this repo to be cloned to `/etc/nixos/git/`
* Installing a system from the ISO:
```
nixos-install <Hostname> [<Username>]
```
* Post install:
```
nix develop -c /etc/nixos/git/docs/setup.sh
```
![Gruv'd Hyprland](./docs/screenshot.png "Hyprland with a Gruvboxy theme")
---
# To Do List
* [ ] Split configs into a common and host-specific config (see hyprland on nixos-vm-02 in home-manager for instance)
* Reduces duplicate configs
* [ ] Look into hosting a binary cache locally - [Link](https://nixos.wiki/wiki/Binary_Cache)
* [ ] vscode / emacs
* Add the nix lsp - [Link](https://github.com/nix-community/rnix-lsp)
* [x] Fix Grafana
* [x] Build a better dashboard to monitor all my nixified devices
* [x] Look into Remote Builds - [Link](https://nixos.org/manual/nix/stable/advanced-topics/distributed-builds.html)
* [ ] Find a way to remove all default search engines in Firefox (Google, Amazon, etc)
* [ ] Figure out what the home-manager `account` options are for.
* [ ] Security hardening
* [ ] Edit the hosts file
* [ ] cronjob
* [ ] Change wallpaper at a certain time of day
* [ ] emacs
* [ ] Add bracket auto-completion
* [ ] Find a way to have magit save login credentials
* [ ] btrfs snapshots?
* [ ] vscodium and user-config.js file?
* [ ] rofi - bitwarden-cli / bitwarden-menu ([Link](https://search.nixos.org/packages?channel=23.05&show=bitwarden-menu&from=0&size=50&sort=relevance&type=packages&query=bitwarden))
Completed ToDo List [here](docs/complete.md)
---
# Information
### Home Manager
* Home Manager Documentation - [Link](https://nix-community.github.io/home-manager/index.html)
* Home Manager Options Search - [Link](https://mipmip.github.io/home-manager-option-search/)
### NixOS
* NixOS Documentation - Stable - [Link](https://nixos.org/manual/nixos/stable/)
* NixOS Packages / Options Search - [Link](https://search.nixos.org/)
* Nix User Repository (NUR) Search - [Link](https://nur.nix-community.org/)
* ARM NixOS Building - [Link](https://nixos.wiki/wiki/NixOS_on_ARM#NixOS_installation_.26_configuration)
### Useful Links
* FlakeHub - [Link](https://flakehub.com)
* Track a Nixpkgs PR - [Link](https://nixpk.gs/pr-tracker.html)
* Awesome-Hyprland - [Link](https://github.com/hyprland-community/awesome-hyprland)
### Examples
* Tons of good examples here - [Link](https://github.com/Mic92/dotfiles/blob/main/nixos/modules/)
* NixOS Flakes Intro Guide - [Link](https://nixos-and-flakes.thiscute.world/)
### Theming
* Neofetch Themes - [Link](https://github.com/Chick2D/neofetch-themes/)
* gruvbox-factory - [Link](https://github.com/paulopacitti/gruvbox-factory)
* Hyprland Gruvboxy - [Link](https://github.com/0bCdian/Hyprland_dotfiles/tree/gruvboxy)
---
# Theming
* To change system-wide themes, see [theming.md](docs/theming.md)
---
# Lanzaboote / SecureBoot
* Instructions here - [Link](https://git.sysctl.io/Mirrors/lanzaboote/src/branch/master/docs/QUICK_START.md)
1. Create your keys: `sbctl create-keys`
2. Verify your machine is ready for SecureBoot: `sbctl verify` - Everything except `*-bzImage.efi` are signed
3. Enter Secureboot Setup mode in your EFI Settings on the motherboard (F10)
* Security -> SecureBoot -> Set to Enabled and "Reset to Setup Mode" and exit
4. Enroll the keys: `sbctl enroll-keys --microsoft`
* If you wish, you can select `--tpm-eventlog`, but checksums will change later (ie, at a kernel rebuild)
5. Reboot and verify you are activated: `bootctl status`
# Manual: GPG Keys
1. Import the user private key: `gpg --import gpg/users/albert/privkey.asc`
2. Mark it as trusted: `gpg --edit-key albert@sysctl.io`, then type `trust`, then `5`
3. On each new machine, run `sudo nix-shell -p ssh-to-pgp --run "ssh-to-pgp -i /etc/ssh/ssh_host_rsa_key -o /etc/nixos/git/keys/hosts/$(hostname).asc"`
* This will output the identifier you add to `.sops.yaml`
* Move `HOSTNAME.asc` to `keys/hosts/` and upload to git and rename accordingly.
# Secrets
1. Run `nix-develop` in `/etc/nixos/git` to import new keys
2. To edit a file: `sops secrets/file.yml"`
3. When you add a new machine, you must update the secrets files encryption.
* Run `sops updatekeys secrets/file.yaml` and commit the change.
# Directory Structure
```
.
├── home-manager
│   ├── common
│   │   ├── desktops
│   │   │   └── hyprland
│   │   │   ├── default
│   │   │   └── gruvbox
│   │   └── software
│   │   ├── cli
│   │   │   └── themes
│   │   │   ├── default
│   │   │   └── gruvbox
│   │   └── gui
│   │   └── themes
│   │      ├── default
│   │   └── gruvbox
│   ├── hosts
│   └── users
├── keys
│   ├── hosts
│   ├── ssh
│   └── users
├── lib
├── nixos
│   ├── common
│   │   ├── desktops
│   │   │   ├── gnome
│   │   │   │   └── themes
│   │   │   └── hyprland
│   │   ├── modules
│   │   ├── services
│   │   └── software
│   │   ├── cli
│   │   └── gui
│   ├── hosts
│   └── users
├── secrets
└── wallpapers
├── colorful
└── gruvbox
```
# Other
* Waybar inspirations
* https://github.com/Pipshag/dotfiles_nord
* https://github.com/hajosattila/dotfiles/
* https://gist.github.com/toger5/3a509d9a9d7ebba1e02205b00449ccff