nix/README.md

102 lines
2.7 KiB
Markdown

# My nix conf
## 🏗️ System Setup
### 👷 "Manual"
1. Boot Installer
2. Clone repo
3. Setup partitions
```bash
sudo nix run --extra-experimental-features flakes --extra-experimental-features nix-command github:nix-community/disko -- --mode disko --flake path:$PWD#nixos-pulse
```
4. Run installer
```bash
sudo nixos-install --flake .#nixos-pulse
```
### 🚀 Fully-Automated
<sub> 🚨 This will WIPE EVERYTHING on the specified system <br> ⚠️ ensure proper sshd & firewall key setup for remote systems </sub>
```bash
nix run github:numtide/nixos-anywhere -- --flake path:$PWD#nixos-pulse root@1.2.3.4
```
## 🔄 Updates
Run this to keep your system up-to-date.
```bash
nix flake update
sudo nixos-rebuild # this assumes your hostname is the same as in the config
```
Run this to keep your home up-to-date. (Assuming you manage home-manager seperately and don't have it integrated into your osConfiguration)
```bash
nix flake update
home-manager switch --flake .
```
## Plasma
Add GUI settings to plasma.nix
```bash
nix run github:pjones/plasma-manager | rg -v khotkeysrc | rg -v "\[ \]" > plasma.new.nix
diff plasma.nix plasma.new.nix
# copy over as needed
```
## 🛠️ Nix Configuration Structure
Here's a brief rundown of the directory structure:
### Top-Level Files
- `flake.nix`: Nix Flake configuration file.
#### `home-mods` Directory
Stores modules related to specific user applications or environments.
#### `os-mods` Directory
Holds system-level modules for network, virtualization, desktop etc.
#### `users` Directory
Holds home-manager configuration for the users listed in `users.nix`
#### `systems` Directory
Holds system specific nixos configuration (e.g. hardware quirks).
## 🙏 Made possible by
- NixOS: https://nixos.org/
- https://github.com/nix-community/nixos-anywhere
- https://github.com/nix-community/disko
- Countless great examples e.g.:
- https://github.com/etu/nixconfig
- https://github.com/hlissner/dotfiles
- Caffeine https://en.wikipedia.org/wiki/Caffeine
## License
My nix conf
Copyright (C) 2024 Tristan Druyen
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.