mirror of
https://github.com/itme-brain/nixos.git
synced 2026-03-23 16:29:42 -04:00
init
This commit is contained in:
commit
259d9ed5a0
111 changed files with 7219 additions and 0 deletions
122
README.md
Normal file
122
README.md
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
# NixOS Configuration
|
||||
|
||||
Modular NixOS flake configuration with home-manager integration.
|
||||
|
||||
## Requirements
|
||||
|
||||
- [Nix with Flakes](https://nixos.wiki/wiki/Flakes#Enable_flakes_permanently_in_NixOS)
|
||||
- [NixOS](https://www.nixos.org/) for system configurations
|
||||
- [Home-Manager](https://nix-community.github.io/home-manager/) for user configurations
|
||||
|
||||
## Flake Outputs
|
||||
|
||||
| Configuration | Description |
|
||||
|---------------|-------------|
|
||||
| `desktop` | Primary workstation |
|
||||
| `server` | Home server |
|
||||
| `wsl` | Windows Subsystem for Linux |
|
||||
|
||||
## Fresh Install
|
||||
|
||||
From the NixOS live installer:
|
||||
|
||||
```bash
|
||||
# Enable flakes
|
||||
echo "experimental-features = nix-command flakes" | sudo tee -a /etc/nix/nix.conf
|
||||
|
||||
# Clone repo
|
||||
nix run nixpkgs#git -- clone --recurse-submodules https://github.com/itme-brain/nixos.git
|
||||
cd nixos
|
||||
|
||||
# Enter dev shell and install
|
||||
nix develop
|
||||
just install desktop
|
||||
```
|
||||
|
||||
## Getting Started
|
||||
|
||||
```bash
|
||||
git clone --recurse-submodules git@github.com:itme-brain/nixos.git
|
||||
cd nixos
|
||||
nix develop
|
||||
just
|
||||
```
|
||||
|
||||
**Note:** Replace `hardware.nix` in `system/machines/<machine>` with output from `nixos-generate-config` for your hardware.
|
||||
|
||||
## Directory Structure
|
||||
|
||||
```
|
||||
.
|
||||
├── flake.nix
|
||||
├── flake.lock
|
||||
├── justfile
|
||||
│
|
||||
├── system/
|
||||
│ ├── keys/ # Machine SSH keys
|
||||
│ │ └── desktop/
|
||||
│ └── machines/
|
||||
│ ├── desktop/
|
||||
│ │ ├── default.nix # Machine entry point
|
||||
│ │ ├── hardware.nix # Hardware config
|
||||
│ │ ├── system.nix # System settings
|
||||
│ │ └── modules/
|
||||
│ │ ├── disko/ # Disk partitioning
|
||||
│ │ └── home-manager/ # Home-manager integration
|
||||
│ ├── server/ # Server (same structure)
|
||||
│ └── wsl/ # WSL (same structure)
|
||||
│
|
||||
└── user/
|
||||
├── default.nix # User options (name, email, keys)
|
||||
├── home.nix # Shared home-manager defaults
|
||||
├── bookmarks/
|
||||
├── keys/
|
||||
│ ├── age/
|
||||
│ ├── pgp/
|
||||
│ └── ssh/
|
||||
└── modules/
|
||||
├── bash/bash/ # Shell (submodule)
|
||||
├── git/git/ # Git (submodule)
|
||||
├── neovim/nvim/ # Neovim (submodule)
|
||||
├── vim/vim/ # Vim (submodule)
|
||||
├── tmux/
|
||||
├── dev/ # CLI dev tools
|
||||
├── security/
|
||||
│ ├── gpg/
|
||||
│ └── yubikey/
|
||||
├── utils/
|
||||
│ ├── dev/ # Dev tools (claude-code, direnv, etc.)
|
||||
│ ├── email/
|
||||
│ ├── irc/
|
||||
│ └── writing/
|
||||
└── gui/
|
||||
├── default.nix # Browser-focused mimeApps
|
||||
├── wm/
|
||||
│ ├── hyprland/
|
||||
│ └── sway/
|
||||
├── browsers/
|
||||
├── alacritty/
|
||||
├── dev/
|
||||
│ ├── pcb/ # Arduino, KiCad
|
||||
│ └── design/ # Penpot
|
||||
├── corn/
|
||||
├── fun/
|
||||
└── utils/
|
||||
```
|
||||
|
||||
## Architecture
|
||||
|
||||
**flake.nix** defines NixOS configurations that reference machines under `system/machines/`.
|
||||
Each machine imports its hardware, system settings, and home-manager config.
|
||||
|
||||
**user/home.nix** provides shared defaults for all users:
|
||||
- Essential packages
|
||||
- Default modules
|
||||
|
||||
**Machine home.nix** imports user defaults and enables machine-specific modules.
|
||||
|
||||
## Resources
|
||||
|
||||
- [nixpkgs Packages](https://search.nixos.org/packages)
|
||||
- [nixpkgs Options](https://search.nixos.org/options)
|
||||
- [Home-Manager Options](https://home-manager-options.extranix.com)
|
||||
Loading…
Add table
Add a link
Reference in a new issue