Initial NixOS config
This commit is contained in:
244
README.md
Normal file
244
README.md
Normal file
@@ -0,0 +1,244 @@
|
||||
# NixOS Configuration with Hyprland
|
||||
|
||||
A fully declarative NixOS configuration featuring Hyprland as the Wayland compositor with extensive ricing capabilities.
|
||||
|
||||
## Features
|
||||
|
||||
- **Hyprland**: Modern Wayland compositor with beautiful animations
|
||||
- **Home Manager**: User-level package and dotfile management
|
||||
- **Flakes**: Reproducible, declarative configuration
|
||||
- **Full Wayland Support**: Native Wayland applications and XWayland compatibility
|
||||
- **Ricing Tools**: Waybar, Hyprpaper, Dunst, and more for customization
|
||||
- **Development Ready**: Includes essential development tools
|
||||
|
||||
## Quick Start (Fresh Install)
|
||||
|
||||
On a fresh NixOS installation, run:
|
||||
|
||||
```bash
|
||||
nix-shell -p git --run "bash <(curl -s https://git.cribdev.com/raw/your-username/nixos-config/main/bootstrap.sh)"
|
||||
```
|
||||
|
||||
Or manually:
|
||||
|
||||
```bash
|
||||
# Install git
|
||||
nix-shell -p git
|
||||
|
||||
# Clone this repository
|
||||
git clone https://git.cribdev.com/your-username/nixos-config ~/.config/nixos
|
||||
|
||||
# Copy hardware configuration
|
||||
sudo cp /etc/nixos/hardware-configuration.nix ~/.config/nixos/
|
||||
|
||||
# Edit configuration files (see below)
|
||||
cd ~/.config/nixos
|
||||
|
||||
# Build and apply
|
||||
sudo nixos-rebuild switch --flake .#myhost
|
||||
```
|
||||
|
||||
## Configuration Structure
|
||||
|
||||
```
|
||||
nixos-config/
|
||||
├── flake.nix # Main flake configuration
|
||||
├── configuration.nix # System-level configuration
|
||||
├── hardware-configuration.nix # Auto-generated hardware config
|
||||
├── bootstrap.sh # Bootstrap script for fresh installs
|
||||
├── modules/
|
||||
│ ├── system.nix # System packages and services
|
||||
│ └── hyprland.nix # Hyprland-specific configuration
|
||||
└── home/
|
||||
├── home.nix # Home Manager user configuration
|
||||
├── hyprland.nix # Hyprland user settings and keybindings
|
||||
└── waybar.nix # Waybar status bar configuration
|
||||
```
|
||||
|
||||
## Before First Build
|
||||
|
||||
Edit these files with your information:
|
||||
|
||||
### 1. `flake.nix`
|
||||
- Replace `myhost` with your hostname
|
||||
- Replace `yourusername` with your username
|
||||
|
||||
### 2. `configuration.nix`
|
||||
- Set your `networking.hostName`
|
||||
- Set your `time.timeZone`
|
||||
- Adjust locale settings if needed
|
||||
- Update username in `users.users.yourusername`
|
||||
|
||||
### 3. `home/home.nix`
|
||||
- Update `home.username` and `home.homeDirectory`
|
||||
- Configure Git with your name and email
|
||||
- Adjust package list to your needs
|
||||
|
||||
### 4. `home/hyprland.nix`
|
||||
- Configure monitor settings
|
||||
- Customize keybindings
|
||||
- Adjust animations and appearance
|
||||
|
||||
## Included Software
|
||||
|
||||
### System Tools
|
||||
- NetworkManager for networking
|
||||
- PipeWire for audio
|
||||
- Bluetooth support
|
||||
- SSH server
|
||||
- CUPS for printing
|
||||
|
||||
### Desktop Environment
|
||||
- Hyprland (Wayland compositor)
|
||||
- Waybar (status bar)
|
||||
- Wofi (application launcher)
|
||||
- Dunst (notifications)
|
||||
- Hyprpaper/SWWW (wallpapers)
|
||||
|
||||
### Terminal & Shell
|
||||
- Kitty & Alacritty terminals
|
||||
- Zsh with Oh-My-Zsh
|
||||
- Modern CLI tools (eza, bat, ripgrep, fd, fzf)
|
||||
|
||||
### Applications
|
||||
- Firefox browser
|
||||
- VSCode editor
|
||||
- Thunar file manager
|
||||
- MPV media player
|
||||
- And more...
|
||||
|
||||
## Hyprland Keybindings
|
||||
|
||||
Default modifier key: `SUPER` (Windows key)
|
||||
|
||||
### Basic
|
||||
- `SUPER + Return` - Launch terminal (Kitty)
|
||||
- `SUPER + D` - Launch application launcher (Wofi)
|
||||
- `SUPER + Q` - Close active window
|
||||
- `SUPER + M` - Exit Hyprland
|
||||
- `SUPER + E` - Open file manager (Thunar)
|
||||
- `SUPER + V` - Toggle floating mode
|
||||
- `SUPER + F` - Toggle fullscreen
|
||||
|
||||
### Window Management
|
||||
- `SUPER + Arrow Keys` - Move focus
|
||||
- `SUPER + 1-9` - Switch to workspace
|
||||
- `SUPER + SHIFT + 1-9` - Move window to workspace
|
||||
- `SUPER + Mouse Left` - Move window
|
||||
- `SUPER + Mouse Right` - Resize window
|
||||
|
||||
### Screenshots
|
||||
- `SUPER + SHIFT + S` - Screenshot selection to clipboard
|
||||
- `Print` - Screenshot selection to ~/Pictures
|
||||
|
||||
### Media Keys
|
||||
- Volume up/down/mute
|
||||
- Brightness up/down
|
||||
- All media keys supported
|
||||
|
||||
## Customization
|
||||
|
||||
### Themes and Appearance
|
||||
|
||||
The configuration uses the Catppuccin color scheme by default. To customize:
|
||||
|
||||
1. **Waybar**: Edit `home/waybar.nix` - Change colors in the `style` section
|
||||
2. **Hyprland**: Edit `home/hyprland.nix` - Modify colors in `general` and `decoration` sections
|
||||
3. **Terminal**: Edit `home/home.nix` - Change Kitty theme and appearance
|
||||
|
||||
### Wallpapers
|
||||
|
||||
Place your wallpapers in `~/wallpapers/`. The default wallpaper should be `~/wallpapers/default.jpg`.
|
||||
|
||||
To change wallpapers on the fly:
|
||||
```bash
|
||||
hyprctl hyprpaper wallpaper "monitor,~/wallpapers/your-wallpaper.jpg"
|
||||
```
|
||||
|
||||
### Additional Packages
|
||||
|
||||
To add more packages:
|
||||
|
||||
**System-wide**: Edit `modules/system.nix` and add to `environment.systemPackages`
|
||||
**User-level**: Edit `home/home.nix` and add to `home.packages`
|
||||
|
||||
## Updating the System
|
||||
|
||||
```bash
|
||||
# Update flake inputs
|
||||
nix flake update
|
||||
|
||||
# Rebuild with new configuration
|
||||
sudo nixos-rebuild switch --flake ~/.config/nixos#myhost
|
||||
|
||||
# Or use the alias (after first build)
|
||||
update
|
||||
```
|
||||
|
||||
## Maintenance
|
||||
|
||||
### Garbage Collection
|
||||
```bash
|
||||
# Remove old generations older than 7 days
|
||||
sudo nix-collect-garbage --delete-older-than 7d
|
||||
|
||||
# Clean home-manager generations
|
||||
home-manager expire-generations -7d
|
||||
```
|
||||
|
||||
### Rollback
|
||||
```bash
|
||||
# List generations
|
||||
sudo nix-env --list-generations --profile /nix/var/nix/profiles/system
|
||||
|
||||
# Rollback to previous generation
|
||||
sudo nixos-rebuild switch --rollback
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Black screen after login
|
||||
- Check if Hyprland is starting: `journalctl -xe`
|
||||
- Verify graphics drivers are installed
|
||||
- Check `hardware-configuration.nix` for GPU settings
|
||||
|
||||
### Waybar not appearing
|
||||
- Restart Waybar: `killall waybar && waybar &`
|
||||
- Check logs: `journalctl --user -u waybar`
|
||||
|
||||
### No audio
|
||||
- Check PipeWire status: `systemctl --user status pipewire`
|
||||
- Verify audio device: `wpctl status`
|
||||
|
||||
### Monitor configuration
|
||||
Edit `home/hyprland.nix` and adjust the `monitor` setting:
|
||||
```nix
|
||||
monitor = "DP-1,1920x1080@144,0x0,1";
|
||||
```
|
||||
|
||||
## Useful Commands
|
||||
|
||||
```bash
|
||||
# Check Hyprland version
|
||||
hyprctl version
|
||||
|
||||
# List all windows
|
||||
hyprctl clients
|
||||
|
||||
# Reload Hyprland config
|
||||
hyprctl reload
|
||||
|
||||
# View Hyprland logs
|
||||
cat /tmp/hypr/$(ls -t /tmp/hypr/ | head -n 1)/hyprland.log
|
||||
```
|
||||
|
||||
## Resources
|
||||
|
||||
- [NixOS Manual](https://nixos.org/manual/nixos/stable/)
|
||||
- [Home Manager Manual](https://nix-community.github.io/home-manager/)
|
||||
- [Hyprland Wiki](https://wiki.hyprland.org/)
|
||||
- [NixOS Wiki](https://nixos.wiki/)
|
||||
|
||||
## License
|
||||
|
||||
Feel free to use and modify this configuration for your own needs.
|
||||
Reference in New Issue
Block a user