chore: fix unnecessary and not available pkgs, cleaning
This commit is contained in:
parent
c6594bcbff
commit
2585a86dc9
25 changed files with 703 additions and 462 deletions
|
|
@ -1,34 +1,176 @@
|
|||
# Desktop Environments
|
||||
|
||||
This directory contains system-level desktop environment configurations.
|
||||
This directory contains system-level desktop environment configurations for NixOS desktop hosts.
|
||||
|
||||
## Structure
|
||||
|
||||
```
|
||||
desktops/
|
||||
├── base.nix # Shared desktop settings (XDG portals, polkit, gvfs)
|
||||
├── plasma.nix # KDE Plasma 6 + SDDM
|
||||
├── hyprland/ # Hyprland tiling compositor
|
||||
│ └── default.nix
|
||||
├── gaming.nix # Steam, Proton, GameMode, gaming tools
|
||||
├── apps/ # Desktop applications
|
||||
│ ├── browsers.nix # Brave, Zen Browser
|
||||
│ └── terminals.nix # Alacritty (Dracula theme)
|
||||
├── themes/ # Theme configurations
|
||||
│ ├── catppuccin.nix # Catppuccin GTK/Qt theme
|
||||
│ └── default.nix # Adwaita default theme
|
||||
└── hardware-configuration.nix # Hardware-specific settings (generated)
|
||||
```
|
||||
|
||||
## Available Desktop Environments
|
||||
|
||||
- `hyprland.nix` - Dynamic tiling Wayland compositor
|
||||
- `plasma.nix` - KDE Plasma 6 desktop environment
|
||||
- `niri.nix` - Scrollable-tiling Wayland compositor
|
||||
- `base.nix` - Shared desktop settings (imported by all DEs)
|
||||
### KDE Plasma 6 (`plasma.nix`)
|
||||
- Full-featured desktop with SDDM display manager
|
||||
- Wayland-first with X11 fallback
|
||||
- Includes essential KDE applications (commented out by default)
|
||||
- User-level Plasma configuration via Home Manager (optional)
|
||||
|
||||
### Hyprland (`hyprland/default.nix`)
|
||||
- Dynamic tiling Wayland compositor
|
||||
- Minimal default keybinds (SUPER key)
|
||||
- Includes Wayland utilities: wl-clipboard, grim, slurp
|
||||
- User-level configuration for keybinds, visual settings
|
||||
|
||||
## Additional Modules
|
||||
|
||||
### Gaming (`gaming.nix`)
|
||||
**Features:**
|
||||
- Steam with Proton GE compatibility
|
||||
- GameMode for performance optimization
|
||||
- 32-bit graphics support for games
|
||||
- Wine, Winetricks, Lutris, Heroic launcher
|
||||
- MangoHud for FPS overlay
|
||||
- Discord for communication
|
||||
- Increased inotify watchers for modding tools
|
||||
|
||||
### Apps (`apps/`)
|
||||
**Browsers** (`browsers.nix`):
|
||||
- Brave, Zen Browser (enabled by default)
|
||||
|
||||
**Terminals** (`terminals.nix`):
|
||||
- Alacritty enabled with JetBrains Mono + Dracula theme
|
||||
- Kitty and WezTerm explicitly disabled to keep a single default
|
||||
|
||||
### Themes (`themes/`)
|
||||
**Catppuccin** (`catppuccin.nix`):
|
||||
- Soothing pastel theme for GTK and Qt
|
||||
- Mocha variant with blue accents
|
||||
- Kvantum Qt theme engine
|
||||
- Papirus icon theme
|
||||
- Catppuccin cursor theme
|
||||
|
||||
**Default** (`default.nix`):
|
||||
- Adwaita theme (GNOME default)
|
||||
- Minimal theming setup
|
||||
|
||||
## Usage
|
||||
|
||||
### Single Desktop Environment
|
||||
|
||||
Import one desktop environment in your host configuration:
|
||||
|
||||
```nix
|
||||
# modules/nixos/hosts/your-host.nix
|
||||
{
|
||||
imports = [
|
||||
../desktops/hyprland.nix
|
||||
../desktops/plasma.nix
|
||||
# OR
|
||||
# ../desktops/plasma.nix
|
||||
# OR
|
||||
# ../desktops/niri.nix
|
||||
# ../desktops/hyprland
|
||||
];
|
||||
}
|
||||
```
|
||||
|
||||
### Multi-Desktop Setup (Switch at Login)
|
||||
|
||||
The current desktop host uses both KDE Plasma (for gaming) and Hyprland (for development):
|
||||
|
||||
```nix
|
||||
# modules/nixos/hosts/desktop.nix
|
||||
{
|
||||
imports = [
|
||||
# Hardware
|
||||
../desktops/hardware-configuration.nix
|
||||
|
||||
# Desktop Environments
|
||||
../desktops/plasma.nix # KDE Plasma (for gaming)
|
||||
../desktops/hyprland # Hyprland (for development)
|
||||
|
||||
# Desktop Apps & Theme
|
||||
../desktops/apps/browsers.nix
|
||||
../desktops/apps/terminals.nix
|
||||
../desktops/themes/catppuccin.nix
|
||||
|
||||
# Gaming & Features
|
||||
../desktops/gaming.nix
|
||||
../bluetooth.nix
|
||||
];
|
||||
|
||||
boot = {
|
||||
loader.systemd-boot.enable = true;
|
||||
loader.efi.canTouchEfiVariables = true;
|
||||
kernelPackages = pkgs.linuxPackages_cachyos-lts;
|
||||
};
|
||||
|
||||
networking.hostName = "desktop";
|
||||
system.stateVersion = "24.05";
|
||||
}
|
||||
```
|
||||
|
||||
**Boot Configuration:**
|
||||
- CachyOS LTS kernel for gaming performance
|
||||
- Systemd-boot for EFI boot management
|
||||
|
||||
**Switch Desktop at Login:**
|
||||
- SDDM login screen shows both Plasma and Hyprland sessions
|
||||
- Select desired environment before logging in
|
||||
|
||||
## Base Desktop Settings (`base.nix`)
|
||||
|
||||
Shared settings imported by all desktop environments:
|
||||
|
||||
- **XDG Portals**: Desktop integration, file picker, screen sharing
|
||||
- **PolicyKit**: Privilege escalation for GUI apps
|
||||
- **GVFS**: Trash, mounting, network drives
|
||||
- **Common Packages**: pavucontrol, networkmanagerapplet
|
||||
|
||||
## Adding a New Desktop Environment
|
||||
|
||||
1. Create a new file (e.g., `gnome.nix`)
|
||||
2. Import `./base.nix`
|
||||
3. Enable the desktop environment
|
||||
2. Import `./base.nix` for shared settings
|
||||
3. Enable the desktop environment and display manager
|
||||
4. Add essential system packages
|
||||
5. Configure user-level settings via Home Manager
|
||||
|
||||
Example:
|
||||
|
||||
```nix
|
||||
{ lib, pkgs, user, ... }: {
|
||||
imports = [ ./base.nix ];
|
||||
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
desktopManager.gnome.enable = true;
|
||||
displayManager.gdm.enable = true;
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
gnome-tweaks
|
||||
];
|
||||
}
|
||||
```
|
||||
|
||||
## Testing Desktop Changes
|
||||
|
||||
```bash
|
||||
# Dry-run to check closure
|
||||
nix build .#nixosConfigurations.desktop.config.system.build.toplevel --dry-run
|
||||
|
||||
# Build and switch
|
||||
sudo nixos-rebuild switch --flake .#desktop
|
||||
|
||||
# Format before committing
|
||||
nix fmt
|
||||
```
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue