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
|
|
@ -93,11 +93,14 @@
|
||||||
dev-vm = mkNixos {
|
dev-vm = mkNixos {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
extraModules = [ ./modules/nixos/hosts/dev-vm.nix ];
|
extraModules = [ ./modules/nixos/hosts/dev-vm.nix ];
|
||||||
|
# Uses default homeFile: ./modules/nixos/home/default.nix
|
||||||
};
|
};
|
||||||
desktop = mkNixos {
|
desktop = mkNixos {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
extraModules = [ ./modules/nixos/hosts/desktop.nix ];
|
extraModules = [ ./modules/nixos/hosts/desktop.nix ];
|
||||||
homeFile = ./modules/nixos/home/desktop.nix;
|
# Home Manager configs are imported directly in desktop modules
|
||||||
|
# No homeFile needed - using inline home-manager.users.${user}
|
||||||
|
homeFile = ./modules/nixos/home/default.nix;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,10 @@
|
||||||
{ config, pkgs, lib, ... }: {
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
# Import shared cross-platform home configuration
|
# Import shared cross-platform home configuration
|
||||||
imports = [
|
imports = [
|
||||||
../../home/rsydn/base.nix
|
../../home/rsydn/base.nix
|
||||||
|
|
@ -6,4 +12,56 @@
|
||||||
./programs/aerospace
|
./programs/aerospace
|
||||||
./programs/ghostty.nix
|
./programs/ghostty.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# Darwin-specific secrets configuration
|
||||||
|
rsydn.secrets = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
defaultSopsFile = ../../../secrets/local-ai-tokens.sops.yaml;
|
||||||
|
secrets = {
|
||||||
|
"openai-api-key" = {
|
||||||
|
format = "yaml";
|
||||||
|
key = "OPENAI_API_KEY";
|
||||||
|
};
|
||||||
|
|
||||||
|
"openrouter-api-key" = {
|
||||||
|
format = "yaml";
|
||||||
|
key = "OPENROUTER_API_KEY";
|
||||||
|
};
|
||||||
|
|
||||||
|
"zai-api-key" = {
|
||||||
|
format = "yaml";
|
||||||
|
key = "ZAI_API_KEY";
|
||||||
|
};
|
||||||
|
|
||||||
|
"moonshot-api-key" = {
|
||||||
|
format = "yaml";
|
||||||
|
key = "MOONSHOT_API_KEY";
|
||||||
|
};
|
||||||
|
|
||||||
|
"anthropic-api-key" = {
|
||||||
|
format = "yaml";
|
||||||
|
key = "ANTHROPIC_API_KEY";
|
||||||
|
};
|
||||||
|
|
||||||
|
"exa-api-key" = {
|
||||||
|
format = "yaml";
|
||||||
|
key = "EXA_API_KEY";
|
||||||
|
};
|
||||||
|
|
||||||
|
"fal-api-key" = {
|
||||||
|
format = "yaml";
|
||||||
|
key = "FAL_API_KEY";
|
||||||
|
};
|
||||||
|
|
||||||
|
"groq-api-key" = {
|
||||||
|
format = "yaml";
|
||||||
|
key = "GROQ_API_KEY";
|
||||||
|
};
|
||||||
|
|
||||||
|
"firecrawl-api-key" = {
|
||||||
|
format = "yaml";
|
||||||
|
key = "FIRECRAWL_API_KEY";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
{ pkgs, lib, ... }: {
|
{ pkgs, lib, ... }:
|
||||||
home.stateVersion = "24.05";
|
{
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
./programs/helix.nix
|
./programs/helix.nix
|
||||||
./programs/neovim.nix
|
./programs/neovim.nix
|
||||||
|
|
@ -11,101 +10,62 @@
|
||||||
./secrets.nix
|
./secrets.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.git.enable = true;
|
config = {
|
||||||
|
home.stateVersion = "24.05";
|
||||||
|
|
||||||
home.packages = with pkgs; [ docker docker-compose ];
|
# XDG Base Directory specification
|
||||||
|
# Ensures ~/.config, ~/.local/share, ~/.cache are properly set up
|
||||||
|
# Note: User directories (Desktop, Downloads, etc.) are configured in desktop modules
|
||||||
|
xdg.enable = true;
|
||||||
|
|
||||||
rsydn.aiTools = {
|
programs.git.enable = true;
|
||||||
enable = lib.mkDefault true;
|
|
||||||
claude.zai.enable = lib.mkDefault true;
|
|
||||||
};
|
|
||||||
|
|
||||||
rsydn.devTools = {
|
home.packages = with pkgs; [
|
||||||
enable = lib.mkDefault true;
|
docker
|
||||||
packages = with pkgs; [
|
docker-compose
|
||||||
ast-grep
|
|
||||||
cloudflared
|
|
||||||
ffmpeg
|
|
||||||
fzf
|
|
||||||
htop
|
|
||||||
jetbrains-mono
|
|
||||||
jq
|
|
||||||
jujutsu
|
|
||||||
lazydocker
|
|
||||||
lazygit
|
|
||||||
lorri
|
|
||||||
nil
|
|
||||||
nixd
|
|
||||||
pandoc
|
|
||||||
ripgrep
|
|
||||||
tmux
|
|
||||||
tree
|
|
||||||
curl
|
|
||||||
vim
|
|
||||||
wget
|
|
||||||
yq
|
|
||||||
];
|
];
|
||||||
};
|
|
||||||
|
|
||||||
rsydn.languages = {
|
rsydn.aiTools = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
# Disable global language tools - use nix develop shells instead
|
claude.zai.enable = lib.mkDefault true;
|
||||||
cargo.enable = false;
|
};
|
||||||
go.enable = false;
|
|
||||||
bun.enable = false;
|
|
||||||
# Keep uv for MCP server and node for npx/tooling
|
|
||||||
uv.enable = true;
|
|
||||||
node.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
rsydn.secrets = lib.mkIf pkgs.stdenv.hostPlatform.isDarwin {
|
rsydn.devTools = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
defaultSopsFile = ../../../secrets/local-ai-tokens.sops.yaml;
|
packages = with pkgs; [
|
||||||
secrets = {
|
ast-grep
|
||||||
"openai-api-key" = {
|
cloudflared
|
||||||
format = "yaml";
|
ffmpeg
|
||||||
key = "OPENAI_API_KEY";
|
fzf
|
||||||
};
|
htop
|
||||||
|
jetbrains-mono
|
||||||
|
jq
|
||||||
|
jujutsu
|
||||||
|
lazydocker
|
||||||
|
lazygit
|
||||||
|
lorri
|
||||||
|
nil
|
||||||
|
nixd
|
||||||
|
pandoc
|
||||||
|
ripgrep
|
||||||
|
tmux
|
||||||
|
tree
|
||||||
|
curl
|
||||||
|
vim
|
||||||
|
wget
|
||||||
|
yq
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
"openrouter-api-key" = {
|
rsydn.languages = {
|
||||||
format = "yaml";
|
enable = lib.mkDefault true;
|
||||||
key = "OPENROUTER_API_KEY";
|
# Disable global language tools - use nix develop shells instead
|
||||||
};
|
cargo.enable = false;
|
||||||
|
go.enable = false;
|
||||||
"zai-api-key" = {
|
bun.enable = false;
|
||||||
format = "yaml";
|
# Keep uv for MCP server and node for npx/tooling
|
||||||
key = "ZAI_API_KEY";
|
uv.enable = true;
|
||||||
};
|
node.enable = true;
|
||||||
|
|
||||||
"moonshot-api-key" = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "MOONSHOT_API_KEY";
|
|
||||||
};
|
|
||||||
|
|
||||||
"anthropic-api-key" = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "ANTHROPIC_API_KEY";
|
|
||||||
};
|
|
||||||
|
|
||||||
"exa-api-key" = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "EXA_API_KEY";
|
|
||||||
};
|
|
||||||
|
|
||||||
"fal-api-key" = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "FAL_API_KEY";
|
|
||||||
};
|
|
||||||
|
|
||||||
"groq-api-key" = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "GROQ_API_KEY";
|
|
||||||
};
|
|
||||||
|
|
||||||
"firecrawl-api-key" = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "FIRECRAWL_API_KEY";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
{ pkgs, ... }: {
|
|
||||||
# Browser configurations
|
|
||||||
home.packages = with pkgs;
|
|
||||||
[
|
|
||||||
firefox
|
|
||||||
# chromium
|
|
||||||
# brave
|
|
||||||
];
|
|
||||||
|
|
||||||
# Firefox config (expand as needed)
|
|
||||||
# programs.firefox = {
|
|
||||||
# enable = true;
|
|
||||||
# profiles.default = {
|
|
||||||
# settings = {
|
|
||||||
# "browser.startup.homepage" = "about:home";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
}
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
{ pkgs, lib, ... }: {
|
|
||||||
# Terminal emulators
|
|
||||||
|
|
||||||
# Kitty - GPU-accelerated terminal
|
|
||||||
programs.kitty = {
|
|
||||||
enable = lib.mkDefault false;
|
|
||||||
# theme = "Dracula";
|
|
||||||
# settings = {
|
|
||||||
# font_family = "JetBrains Mono";
|
|
||||||
# font_size = 12;
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
|
|
||||||
# Alacritty - GPU-accelerated terminal
|
|
||||||
programs.alacritty = {
|
|
||||||
enable = lib.mkDefault false;
|
|
||||||
# settings = {
|
|
||||||
# font.normal.family = "JetBrains Mono";
|
|
||||||
# font.size = 12;
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
|
|
||||||
# WezTerm - GPU-accelerated terminal
|
|
||||||
# programs.wezterm = {
|
|
||||||
# enable = false;
|
|
||||||
# };
|
|
||||||
}
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
{ lib, pkgs, config, ... }: {
|
|
||||||
# Base desktop user configuration
|
|
||||||
|
|
||||||
# GTK theming
|
|
||||||
gtk = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
theme = lib.mkDefault {
|
|
||||||
name = "Adwaita-dark";
|
|
||||||
package = pkgs.gnome-themes-extra;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Qt theming
|
|
||||||
qt = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
platformTheme.name = lib.mkDefault "gtk";
|
|
||||||
style.name = lib.mkDefault "adwaita-dark";
|
|
||||||
};
|
|
||||||
|
|
||||||
# XDG user directories
|
|
||||||
xdg = {
|
|
||||||
enable = true;
|
|
||||||
userDirs = {
|
|
||||||
enable = true;
|
|
||||||
createDirectories = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Basic GUI packages
|
|
||||||
home.packages = with pkgs;
|
|
||||||
[
|
|
||||||
# Add common desktop apps here
|
|
||||||
# firefox
|
|
||||||
# vscodium
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
# Themes
|
|
||||||
|
|
||||||
Add your theme configurations here. Each theme should set:
|
|
||||||
- GTK theme
|
|
||||||
- Qt theme
|
|
||||||
- Terminal colors
|
|
||||||
- Compositor colors (if applicable)
|
|
||||||
- Wallpapers
|
|
||||||
|
|
||||||
Example structure:
|
|
||||||
```nix
|
|
||||||
# catppuccin.nix
|
|
||||||
{ pkgs, ... }: {
|
|
||||||
gtk.theme = {
|
|
||||||
name = "Catppuccin-Mocha";
|
|
||||||
package = pkgs.catppuccin-gtk;
|
|
||||||
};
|
|
||||||
|
|
||||||
# ... more theme settings
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
{ ... }: {
|
|
||||||
# Wayland compositor configurations
|
|
||||||
# Import the compositor you want to use
|
|
||||||
|
|
||||||
imports = [
|
|
||||||
# Uncomment the one you want:
|
|
||||||
# ./hyprland
|
|
||||||
# ./niri
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
||||||
{ lib, pkgs, ... }: {
|
|
||||||
# Hyprland user configuration
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
xwayland.enable = lib.mkDefault true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
# Minimal config - expand as needed
|
|
||||||
"$mod" = "SUPER";
|
|
||||||
|
|
||||||
# Example keybinds
|
|
||||||
bind = [
|
|
||||||
"$mod, Return, exec, kitty" # Terminal
|
|
||||||
"$mod, Q, killactive"
|
|
||||||
"$mod, M, exit"
|
|
||||||
"$mod, F, fullscreen"
|
|
||||||
"$mod, Space, togglefloating"
|
|
||||||
|
|
||||||
# Move focus
|
|
||||||
"$mod, h, movefocus, l"
|
|
||||||
"$mod, l, movefocus, r"
|
|
||||||
"$mod, k, movefocus, u"
|
|
||||||
"$mod, j, movefocus, d"
|
|
||||||
];
|
|
||||||
|
|
||||||
# Example settings
|
|
||||||
general = {
|
|
||||||
gaps_in = 5;
|
|
||||||
gaps_out = 10;
|
|
||||||
border_size = 2;
|
|
||||||
};
|
|
||||||
|
|
||||||
decoration = { rounding = 8; };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Hyprland utilities
|
|
||||||
home.packages = with pkgs;
|
|
||||||
[
|
|
||||||
# wofi # Launcher
|
|
||||||
# waybar # Status bar
|
|
||||||
# dunst # Notifications
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
{ lib, pkgs, ... }: {
|
|
||||||
# Niri user configuration
|
|
||||||
programs.niri = {
|
|
||||||
settings = {
|
|
||||||
# Minimal config - expand as needed
|
|
||||||
input = { keyboard.xkb = { layout = "us"; }; };
|
|
||||||
|
|
||||||
# Example keybinds
|
|
||||||
binds = {
|
|
||||||
"Mod+Return".action.spawn = [ "kitty" ];
|
|
||||||
"Mod+Q".action.close-window = { };
|
|
||||||
"Mod+F".action.fullscreen-window = { };
|
|
||||||
|
|
||||||
# Focus movement
|
|
||||||
"Mod+H".action.focus-column-left = { };
|
|
||||||
"Mod+L".action.focus-column-right = { };
|
|
||||||
"Mod+J".action.focus-window-down = { };
|
|
||||||
"Mod+K".action.focus-window-up = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
layout = {
|
|
||||||
gaps = 8;
|
|
||||||
center-focused-column = "never";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Niri utilities
|
|
||||||
home.packages = with pkgs;
|
|
||||||
[
|
|
||||||
# fuzzel # Launcher (recommended for niri)
|
|
||||||
# waybar # Status bar
|
|
||||||
# dunst # Notifications
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,34 +1,176 @@
|
||||||
# Desktop Environments
|
# 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
|
## Available Desktop Environments
|
||||||
|
|
||||||
- `hyprland.nix` - Dynamic tiling Wayland compositor
|
### KDE Plasma 6 (`plasma.nix`)
|
||||||
- `plasma.nix` - KDE Plasma 6 desktop environment
|
- Full-featured desktop with SDDM display manager
|
||||||
- `niri.nix` - Scrollable-tiling Wayland compositor
|
- Wayland-first with X11 fallback
|
||||||
- `base.nix` - Shared desktop settings (imported by all DEs)
|
- 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
|
## Usage
|
||||||
|
|
||||||
|
### Single Desktop Environment
|
||||||
|
|
||||||
Import one desktop environment in your host configuration:
|
Import one desktop environment in your host configuration:
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
# modules/nixos/hosts/your-host.nix
|
# modules/nixos/hosts/your-host.nix
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../desktops/hyprland.nix
|
../desktops/plasma.nix
|
||||||
# OR
|
# OR
|
||||||
# ../desktops/plasma.nix
|
# ../desktops/hyprland
|
||||||
# OR
|
|
||||||
# ../desktops/niri.nix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 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
|
## Adding a New Desktop Environment
|
||||||
|
|
||||||
1. Create a new file (e.g., `gnome.nix`)
|
1. Create a new file (e.g., `gnome.nix`)
|
||||||
2. Import `./base.nix`
|
2. Import `./base.nix` for shared settings
|
||||||
3. Enable the desktop environment
|
3. Enable the desktop environment and display manager
|
||||||
4. Add essential system packages
|
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
|
||||||
|
```
|
||||||
|
|
|
||||||
9
modules/nixos/desktops/apps/browsers.nix
Normal file
9
modules/nixos/desktops/apps/browsers.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{ pkgs, user, ... }:
|
||||||
|
{
|
||||||
|
# Browser configurations for desktop users
|
||||||
|
|
||||||
|
home-manager.users.${user} = {
|
||||||
|
# User packages: Browsers
|
||||||
|
home.packages = with pkgs; [ brave ];
|
||||||
|
};
|
||||||
|
}
|
||||||
114
modules/nixos/desktops/apps/terminals.nix
Normal file
114
modules/nixos/desktops/apps/terminals.nix
Normal file
|
|
@ -0,0 +1,114 @@
|
||||||
|
{ lib, pkgs, user, ... }: {
|
||||||
|
# Terminal emulator configurations for desktop users
|
||||||
|
|
||||||
|
home-manager.users.${user} = {
|
||||||
|
# Provide JetBrains Mono font locally for Alacritty.
|
||||||
|
home.packages = with pkgs; [ jetbrains-mono ];
|
||||||
|
|
||||||
|
# Ensure Kitty stays disabled when desktop module is imported.
|
||||||
|
programs.kitty.enable = lib.mkForce false;
|
||||||
|
|
||||||
|
# Configure Alacritty as the default terminal with Dracula theme.
|
||||||
|
programs.alacritty = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
window.opacity = 0.85;
|
||||||
|
|
||||||
|
font = {
|
||||||
|
normal = {
|
||||||
|
family = "JetBrains Mono";
|
||||||
|
style = "Regular";
|
||||||
|
};
|
||||||
|
bold = {
|
||||||
|
family = "JetBrains Mono";
|
||||||
|
style = "Bold";
|
||||||
|
};
|
||||||
|
italic = {
|
||||||
|
family = "JetBrains Mono";
|
||||||
|
style = "Italic";
|
||||||
|
};
|
||||||
|
bold_italic = {
|
||||||
|
family = "JetBrains Mono";
|
||||||
|
style = "Bold Italic";
|
||||||
|
};
|
||||||
|
size = 12.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
colors = {
|
||||||
|
primary = {
|
||||||
|
background = "#282a36";
|
||||||
|
foreground = "#f8f8f2";
|
||||||
|
bright_foreground = "#ffffff";
|
||||||
|
};
|
||||||
|
|
||||||
|
cursor = {
|
||||||
|
text = "#282a36";
|
||||||
|
cursor = "#f8f8f2";
|
||||||
|
};
|
||||||
|
|
||||||
|
vi_mode_cursor = {
|
||||||
|
text = "CellBackground";
|
||||||
|
cursor = "CellForeground";
|
||||||
|
};
|
||||||
|
|
||||||
|
selection = {
|
||||||
|
text = "CellForeground";
|
||||||
|
background = "#44475a";
|
||||||
|
};
|
||||||
|
|
||||||
|
normal = {
|
||||||
|
black = "#21222c";
|
||||||
|
red = "#ff5555";
|
||||||
|
green = "#50fa7b";
|
||||||
|
yellow = "#f1fa8c";
|
||||||
|
blue = "#bd93f9";
|
||||||
|
magenta = "#ff79c6";
|
||||||
|
cyan = "#8be9fd";
|
||||||
|
white = "#f8f8f2";
|
||||||
|
};
|
||||||
|
|
||||||
|
bright = {
|
||||||
|
black = "#6272a4";
|
||||||
|
red = "#ff6e6e";
|
||||||
|
green = "#69ff94";
|
||||||
|
yellow = "#ffffa5";
|
||||||
|
blue = "#d6acff";
|
||||||
|
magenta = "#ff92df";
|
||||||
|
cyan = "#a4ffff";
|
||||||
|
white = "#ffffff";
|
||||||
|
};
|
||||||
|
|
||||||
|
search = {
|
||||||
|
matches = {
|
||||||
|
foreground = "#44475a";
|
||||||
|
background = "#50fa7b";
|
||||||
|
};
|
||||||
|
focused_match = {
|
||||||
|
foreground = "#44475a";
|
||||||
|
background = "#ffb86c";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
footer_bar = {
|
||||||
|
background = "#282a36";
|
||||||
|
foreground = "#f8f8f2";
|
||||||
|
};
|
||||||
|
|
||||||
|
hints = {
|
||||||
|
start = {
|
||||||
|
foreground = "#282a36";
|
||||||
|
background = "#f1fa8c";
|
||||||
|
};
|
||||||
|
end = {
|
||||||
|
foreground = "#f1fa8c";
|
||||||
|
background = "#282a36";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Keep WezTerm disabled to avoid conflicting terminal defaults.
|
||||||
|
programs.wezterm.enable = lib.mkForce false;
|
||||||
|
};
|
||||||
|
}
|
||||||
78
modules/nixos/desktops/hardware-configuration.nix
Normal file
78
modules/nixos/desktops/hardware-configuration.nix
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
# Hardware configuration for desktop
|
||||||
|
# Generated by running: nixos-generate-config --show-hardware-config
|
||||||
|
# This file contains hardware-specific settings that should be adjusted for your actual hardware
|
||||||
|
|
||||||
|
{ config, lib, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||||
|
|
||||||
|
# Kernel modules needed during boot
|
||||||
|
# Adjust based on your hardware (NVMe, SATA, USB, etc.)
|
||||||
|
boot.initrd.availableKernelModules =
|
||||||
|
[ "nvme" "xhci_pci" "ahci" "usb_storage" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-amd" ]; # Change to "kvm-intel" for Intel CPUs
|
||||||
|
|
||||||
|
# Filesystem configuration
|
||||||
|
# Run `lsblk -f` or `blkid` to get your actual device UUIDs
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/REPLACE-WITH-YOUR-ROOT-UUID";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/REPLACE-WITH-YOUR-BOOT-UUID";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0022" "dmask=0022" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Swap configuration (optional)
|
||||||
|
# Uncomment and adjust if you have a swap partition
|
||||||
|
# swapDevices = [
|
||||||
|
# { device = "/dev/disk/by-uuid/REPLACE-WITH-YOUR-SWAP-UUID"; }
|
||||||
|
# ];
|
||||||
|
|
||||||
|
# CPU microcode updates
|
||||||
|
hardware.cpu.amd.updateMicrocode =
|
||||||
|
lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
# For Intel CPUs, use this instead:
|
||||||
|
# hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
|
||||||
|
# GPU configuration
|
||||||
|
# Uncomment the section that matches your GPU
|
||||||
|
|
||||||
|
# NVIDIA GPU
|
||||||
|
# services.xserver.videoDrivers = [ "nvidia" ];
|
||||||
|
# hardware.nvidia = {
|
||||||
|
# modesetting.enable = true;
|
||||||
|
# powerManagement.enable = false;
|
||||||
|
# powerManagement.finegrained = false;
|
||||||
|
# open = false; # Use proprietary driver
|
||||||
|
# nvidiaSettings = true;
|
||||||
|
# package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||||
|
# };
|
||||||
|
|
||||||
|
# AMD GPU
|
||||||
|
# services.xserver.videoDrivers = [ "amdgpu" ];
|
||||||
|
# hardware.opengl = {
|
||||||
|
# enable = true;
|
||||||
|
# driSupport = true;
|
||||||
|
# driSupport32Bit = true; # For 32-bit games
|
||||||
|
# };
|
||||||
|
|
||||||
|
# Intel GPU
|
||||||
|
# services.xserver.videoDrivers = [ "modesetting" ];
|
||||||
|
# hardware.opengl = {
|
||||||
|
# enable = true;
|
||||||
|
# extraPackages = with pkgs; [
|
||||||
|
# intel-media-driver
|
||||||
|
# vaapiIntel
|
||||||
|
# vaapiVdpau
|
||||||
|
# libvdpau-va-gl
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
|
||||||
|
# Maximum number of open files
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
}
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
{ pkgs, lib, ... }: {
|
|
||||||
imports = [ ./base.nix ];
|
|
||||||
|
|
||||||
# Hyprland - Dynamic tiling Wayland compositor
|
|
||||||
programs.hyprland = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
xwayland.enable = lib.mkDefault true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Wayland-specific portal
|
|
||||||
xdg.portal.wlr.enable = lib.mkDefault true;
|
|
||||||
|
|
||||||
# Essential Wayland tools (system-level)
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
# Wayland essentials
|
|
||||||
wayland
|
|
||||||
wl-clipboard
|
|
||||||
wlr-randr
|
|
||||||
|
|
||||||
# Screenshot & screen recording
|
|
||||||
grim # Screenshot
|
|
||||||
slurp # Region selector
|
|
||||||
# wf-recorder # Screen recording (optional)
|
|
||||||
|
|
||||||
# Add your preferred apps here
|
|
||||||
# kitty # Terminal
|
|
||||||
# wofi # Launcher
|
|
||||||
# waybar # Bar
|
|
||||||
];
|
|
||||||
}
|
|
||||||
71
modules/nixos/desktops/hyprland/default.nix
Normal file
71
modules/nixos/desktops/hyprland/default.nix
Normal file
|
|
@ -0,0 +1,71 @@
|
||||||
|
{ pkgs, lib, user, ... }: {
|
||||||
|
imports = [ ../base.nix ];
|
||||||
|
|
||||||
|
# System-level: Enable Hyprland
|
||||||
|
programs.hyprland = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
xwayland.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Wayland-specific portal
|
||||||
|
xdg.portal.wlr.enable = lib.mkDefault true;
|
||||||
|
|
||||||
|
# System packages: Wayland essentials
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
# Wayland essentials
|
||||||
|
wayland
|
||||||
|
wl-clipboard
|
||||||
|
wlr-randr
|
||||||
|
|
||||||
|
# Screenshot & screen recording
|
||||||
|
grim # Screenshot
|
||||||
|
slurp # Region selector
|
||||||
|
# wf-recorder # Screen recording (optional)
|
||||||
|
];
|
||||||
|
|
||||||
|
# User-level: Hyprland configuration
|
||||||
|
home-manager.users.${user} = {
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
xwayland.enable = lib.mkDefault true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
# Minimal config - expand as needed
|
||||||
|
"$mod" = "SUPER";
|
||||||
|
|
||||||
|
# Example keybinds
|
||||||
|
bind = [
|
||||||
|
"$mod, Return, exec, kitty" # Terminal
|
||||||
|
"$mod, Q, killactive"
|
||||||
|
"$mod, M, exit"
|
||||||
|
"$mod, F, fullscreen"
|
||||||
|
"$mod, Space, togglefloating"
|
||||||
|
|
||||||
|
# Move focus
|
||||||
|
"$mod, h, movefocus, l"
|
||||||
|
"$mod, l, movefocus, r"
|
||||||
|
"$mod, k, movefocus, u"
|
||||||
|
"$mod, j, movefocus, d"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Visual settings
|
||||||
|
general = {
|
||||||
|
gaps_in = 5;
|
||||||
|
gaps_out = 10;
|
||||||
|
border_size = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
decoration = { rounding = 8; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# User packages: Hyprland utilities
|
||||||
|
home.packages = with pkgs;
|
||||||
|
[
|
||||||
|
# Uncomment as needed:
|
||||||
|
# wofi # Launcher
|
||||||
|
# waybar # Status bar
|
||||||
|
# dunst # Notifications
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
{ pkgs, lib, ... }: {
|
|
||||||
imports = [ ./base.nix ];
|
|
||||||
|
|
||||||
# Niri - Scrollable-tiling Wayland compositor
|
|
||||||
programs.niri = { enable = lib.mkDefault true; };
|
|
||||||
|
|
||||||
# Wayland-specific portal
|
|
||||||
xdg.portal.wlr.enable = lib.mkDefault true;
|
|
||||||
|
|
||||||
# Essential Wayland tools
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
# Wayland essentials
|
|
||||||
wayland
|
|
||||||
wl-clipboard
|
|
||||||
|
|
||||||
# Screenshot tools
|
|
||||||
grim
|
|
||||||
slurp
|
|
||||||
|
|
||||||
# Add your preferred apps here
|
|
||||||
# kitty # Terminal
|
|
||||||
# fuzzel # Launcher (recommended for niri)
|
|
||||||
# waybar # Bar
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{ lib, ... }: {
|
{ lib, pkgs, user, ... }: {
|
||||||
imports = [ ./base.nix ];
|
imports = [ ./base.nix ];
|
||||||
|
|
||||||
# KDE Plasma 6
|
# System-level: KDE Plasma 6
|
||||||
services.desktopManager.plasma6.enable = lib.mkDefault true;
|
services.desktopManager.plasma6.enable = lib.mkDefault true;
|
||||||
|
|
||||||
# SDDM display manager
|
# SDDM display manager
|
||||||
|
|
@ -10,6 +10,33 @@
|
||||||
wayland.enable = lib.mkDefault true;
|
wayland.enable = lib.mkDefault true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# KDE apps are managed by Plasma
|
# System packages: KDE applications
|
||||||
# Add extra packages in your host config if needed
|
environment.systemPackages = with pkgs;
|
||||||
|
[
|
||||||
|
# KDE applications (uncomment as needed)
|
||||||
|
# kdePackages.kate # Text editor
|
||||||
|
# kdePackages.dolphin # File manager
|
||||||
|
# kdePackages.konsole # Terminal
|
||||||
|
# kdePackages.okular # Document viewer
|
||||||
|
# kdePackages.gwenview # Image viewer
|
||||||
|
# kdePackages.spectacle # Screenshot tool
|
||||||
|
];
|
||||||
|
|
||||||
|
# User-level: KDE Plasma settings (optional)
|
||||||
|
home-manager.users.${user} = {
|
||||||
|
# KDE Plasma configuration via Home Manager (optional)
|
||||||
|
# programs.plasma = {
|
||||||
|
# enable = true;
|
||||||
|
# workspace = {
|
||||||
|
# theme = "breeze-dark";
|
||||||
|
# colorScheme = "BreezeDark";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
|
||||||
|
# User packages for KDE environment
|
||||||
|
home.packages = with pkgs;
|
||||||
|
[
|
||||||
|
# Add user-specific apps here
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
64
modules/nixos/desktops/themes/catppuccin.nix
Normal file
64
modules/nixos/desktops/themes/catppuccin.nix
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
{ lib, pkgs, user, ... }: {
|
||||||
|
# Catppuccin theme configuration
|
||||||
|
# Soothing pastel theme for both GTK and Qt applications
|
||||||
|
# Works with KDE Plasma, Hyprland, and other desktop environments
|
||||||
|
|
||||||
|
# System packages: Theme engines and Catppuccin themes
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
libsForQt5.qtstyleplugin-kvantum # Kvantum Qt theme engine
|
||||||
|
qt6Packages.qtstyleplugin-kvantum # Kvantum for Qt6
|
||||||
|
catppuccin-kvantum # Catppuccin theme for Kvantum
|
||||||
|
catppuccin-cursors # Catppuccin cursor theme
|
||||||
|
];
|
||||||
|
|
||||||
|
home-manager.users.${user} = {
|
||||||
|
# GTK theming - Catppuccin Mocha variant
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
theme = {
|
||||||
|
name = "Catppuccin-Mocha-Standard-Blue-Dark";
|
||||||
|
package = pkgs.catppuccin-gtk.override {
|
||||||
|
accents = [
|
||||||
|
"blue"
|
||||||
|
]; # Options: blue, flamingo, green, lavender, maroon, mauve, peach, pink, red, rosewater, sapphire, sky, teal, yellow
|
||||||
|
size = "standard"; # Options: standard, compact
|
||||||
|
variant = "mocha"; # Options: latte, frappe, macchiato, mocha
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# GTK icon theme
|
||||||
|
iconTheme = {
|
||||||
|
name = "Papirus-Dark";
|
||||||
|
package = pkgs.papirus-icon-theme;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Qt theming - Catppuccin via Kvantum
|
||||||
|
qt = {
|
||||||
|
enable = true;
|
||||||
|
platformTheme.name = "kvantum";
|
||||||
|
style.name = "kvantum";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Kvantum configuration
|
||||||
|
xdg.configFile."Kvantum/kvantum.kvconfig".text = ''
|
||||||
|
[General]
|
||||||
|
theme=Catppuccin-Mocha-Blue
|
||||||
|
'';
|
||||||
|
|
||||||
|
# Cursor theme
|
||||||
|
home.pointerCursor = {
|
||||||
|
name = "catppuccin-mocha-blue-cursors";
|
||||||
|
package = pkgs.catppuccin-cursors.mochaBlue;
|
||||||
|
size = 24;
|
||||||
|
gtk.enable = true;
|
||||||
|
x11.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# XDG user directories for desktop environments
|
||||||
|
xdg.userDirs = {
|
||||||
|
enable = true;
|
||||||
|
createDirectories = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
33
modules/nixos/desktops/themes/default.nix
Normal file
33
modules/nixos/desktops/themes/default.nix
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
{ lib, pkgs, user, ... }: {
|
||||||
|
# Default theme configuration for desktop
|
||||||
|
# Simple Adwaita-dark theme that works across all desktop environments
|
||||||
|
# Switch to catppuccin.nix or create your own for custom themes
|
||||||
|
|
||||||
|
home-manager.users.${user} = {
|
||||||
|
# GTK theming - Adwaita Dark
|
||||||
|
gtk = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
theme = lib.mkDefault {
|
||||||
|
name = "Adwaita-dark";
|
||||||
|
package = pkgs.gnome-themes-extra;
|
||||||
|
};
|
||||||
|
iconTheme = lib.mkDefault {
|
||||||
|
name = "Adwaita";
|
||||||
|
package = pkgs.adwaita-icon-theme;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Qt theming - Use GTK theme for consistency
|
||||||
|
qt = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
platformTheme.name = lib.mkDefault "gtk";
|
||||||
|
style.name = lib.mkDefault "adwaita-dark";
|
||||||
|
};
|
||||||
|
|
||||||
|
# XDG user directories for desktop environments
|
||||||
|
xdg.userDirs = {
|
||||||
|
enable = true;
|
||||||
|
createDirectories = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,10 @@
|
||||||
{ config, pkgs, lib, ... }: {
|
{ config, pkgs, lib, ... }: {
|
||||||
imports = [ ../../home/rsydn/base.nix ../../home/rsydn/shell/fish.nix ];
|
# Minimal CLI-only Home Manager configuration
|
||||||
|
# Used for servers, VMs, and headless systems
|
||||||
|
# Desktop configs are handled directly in nixos/desktops/* modules
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
../../home/rsydn/base.nix # Base CLI tools (git, tmux, etc.)
|
||||||
|
../../home/rsydn/shell/fish.nix # Shell configuration
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
{ ... }: {
|
|
||||||
# Desktop user configuration (for Hyprland/Niri setups)
|
|
||||||
|
|
||||||
imports = [
|
|
||||||
# Base CLI tools
|
|
||||||
../../home/rsydn/base.nix
|
|
||||||
|
|
||||||
# Desktop additions
|
|
||||||
../../home/rsydn/desktop/base.nix
|
|
||||||
../../home/rsydn/desktop/apps/browsers.nix
|
|
||||||
../../home/rsydn/desktop/apps/terminals.nix
|
|
||||||
|
|
||||||
# Choose your compositor
|
|
||||||
../../home/rsydn/desktop/wayland
|
|
||||||
# Enable specific compositor in wayland/default.nix
|
|
||||||
|
|
||||||
# Add theme when ready
|
|
||||||
# ../../home/rsydn/desktop/themes/catppuccin.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
# Override options here
|
|
||||||
# programs.kitty.enable = true;
|
|
||||||
}
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
{ pkgs, ... }: {
|
|
||||||
# Gaming user configuration (for KDE Plasma)
|
|
||||||
|
|
||||||
imports = [
|
|
||||||
# Base CLI tools
|
|
||||||
../../home/rsydn/base.nix
|
|
||||||
|
|
||||||
# Desktop base
|
|
||||||
../../home/rsydn/desktop/base.nix
|
|
||||||
../../home/rsydn/desktop/apps/browsers.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
# Gaming-specific user packages
|
|
||||||
home.packages = with pkgs;
|
|
||||||
[
|
|
||||||
# Communication
|
|
||||||
# discord
|
|
||||||
# teamspeak_client
|
|
||||||
|
|
||||||
# Streaming/Recording
|
|
||||||
# obs-studio
|
|
||||||
|
|
||||||
# Media
|
|
||||||
# spotify
|
|
||||||
];
|
|
||||||
|
|
||||||
# KDE-specific settings (optional)
|
|
||||||
# programs.plasma = {
|
|
||||||
# enable = true;
|
|
||||||
# workspace.theme = "breeze-dark";
|
|
||||||
# };
|
|
||||||
}
|
|
||||||
|
|
@ -1,67 +1,44 @@
|
||||||
{ lib, pkgs, ... }: {
|
{ lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
hardwareConfigPath = builtins.toString ./.
|
||||||
|
+ "/../desktops/hardware-configuration.nix";
|
||||||
|
hardwareModule = if builtins.pathExists hardwareConfigPath then
|
||||||
|
import hardwareConfigPath
|
||||||
|
else
|
||||||
|
(_: { });
|
||||||
|
in {
|
||||||
# Unified desktop configuration for gaming and development
|
# Unified desktop configuration for gaming and development
|
||||||
# Includes both KDE Plasma and Hyprland - switch at login screen
|
# Includes both KDE Plasma and Hyprland - switch at login screen
|
||||||
|
|
||||||
|
# Import hardware and desktop configurations
|
||||||
|
imports = [
|
||||||
|
# Hardware
|
||||||
|
hardwareModule
|
||||||
|
|
||||||
|
# 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 # Or use themes/default.nix for Adwaita
|
||||||
|
|
||||||
|
# Gaming & Features
|
||||||
|
../desktops/gaming.nix
|
||||||
|
../bluetooth.nix
|
||||||
|
];
|
||||||
|
|
||||||
# Boot configuration with CachyOS LTS kernel
|
# Boot configuration with CachyOS LTS kernel
|
||||||
boot = {
|
boot = {
|
||||||
loader.systemd-boot.enable = true;
|
loader.systemd-boot.enable = true;
|
||||||
loader.efi.canTouchEfiVariables = true;
|
loader.efi.canTouchEfiVariables = true;
|
||||||
kernelPackages = pkgs.linuxPackages_cachyos-lts;
|
kernelPackages = pkgs.linuxPackages_cachyos-lts;
|
||||||
# Hardware-specific settings (adjust for your hardware)
|
|
||||||
# initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "sd_mod" ];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Hostname
|
# Hostname
|
||||||
networking.hostName = "desktop";
|
networking.hostName = "desktop";
|
||||||
|
|
||||||
# Root filesystem configuration (REQUIRED - adjust for your hardware)
|
|
||||||
# To generate proper config, run: nixos-generate-config --show-hardware-config
|
|
||||||
fileSystems."/" = lib.mkDefault {
|
|
||||||
device = "/dev/disk/by-label/nixos";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" = lib.mkDefault {
|
|
||||||
device = "/dev/disk/by-label/boot";
|
|
||||||
fsType = "vfat";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Swap configuration (optional, adjust as needed)
|
|
||||||
# swapDevices = [ { device = "/dev/disk/by-label/swap"; } ];
|
|
||||||
|
|
||||||
# Desktop environments - both available at login screen
|
|
||||||
imports = [
|
|
||||||
../desktops/plasma.nix # For gaming sessions
|
|
||||||
../desktops/hyprland.nix # For development sessions
|
|
||||||
# ../desktops/niri.nix # Available for future use
|
|
||||||
../bluetooth.nix
|
|
||||||
../desktop/gaming.nix # Gaming configuration (Steam, Proton, Vulkan, etc.)
|
|
||||||
];
|
|
||||||
|
|
||||||
# GPU drivers (uncomment and adjust for your hardware)
|
|
||||||
# For NVIDIA:
|
|
||||||
# services.xserver.videoDrivers = [ "nvidia" ];
|
|
||||||
# hardware.nvidia = {
|
|
||||||
# modesetting.enable = true;
|
|
||||||
# powerManagement.enable = false;
|
|
||||||
# open = false; # Use proprietary driver
|
|
||||||
# package = config.boot.kernelPackages.nvidiaPackages.stable;
|
|
||||||
# };
|
|
||||||
#
|
|
||||||
# For AMD:
|
|
||||||
# services.xserver.videoDrivers = [ "amdgpu" ];
|
|
||||||
#
|
|
||||||
# For Intel:
|
|
||||||
# services.xserver.videoDrivers = [ "modesetting" ];
|
|
||||||
|
|
||||||
# Additional system packages
|
|
||||||
environment.systemPackages = with pkgs;
|
|
||||||
[
|
|
||||||
# Add system-wide tools here if needed
|
|
||||||
# Gaming packages are configured in ../desktop/gaming.nix
|
|
||||||
# Development tools are better sourced via `nix develop` shells
|
|
||||||
];
|
|
||||||
|
|
||||||
# This value determines the NixOS release compatibility
|
# This value determines the NixOS release compatibility
|
||||||
system.stateVersion = "24.05";
|
system.stateVersion = "24.05";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue