nix-config/nixos/common/users/sajenim/jade/default.nix
jasmine 4169045fa4
feat(jade): create modular desktop environment
Rename xmonad/ to jade/ and restructure as a complete desktop environment
with hybrid NixOS and home-manager modules. This establishes jade as a
self-contained, gruvbox-themed DE that can eventually be extracted as a flake.

Changes:
- Create jade/ with NixOS module (WM, system packages, GTK theme)
- Create jade/home.nix for home-manager services (wezterm, picom, dunst)
- Move dmenu with gruvbox patches into jade/dmenu/
- Convert wezterm to pure Lua config with gruvbox-material colors
- Move xinitrc into jade/ directory
- Remove feh/scrot from global env (now in jade)
- Remove dmenu overlay from global overlays
- Simplify home-manager desktop features to just user apps

This follows the pattern of real DEs (GNOME, KDE) where system and user
configs are split across NixOS and home-manager modules.
2025-12-21 12:36:11 +08:00

88 lines
2.1 KiB
Nix

{
pkgs,
inputs,
...
}: {
imports = [
./dmenu
];
# Desktop environment packages and configuration
environment = {
systemPackages = [
# Required for some XFCE/GTK stuff
pkgs.dconf
# Picture viewer
pkgs.xfce.ristretto
# Wallpaper setter
pkgs.feh
# Screenshot tool
pkgs.scrot
# GTK theme
pkgs.unstable.gruvbox-material-gtk-theme
# Install our XMonad and Xmobar configuration
inputs.xmonad-config.packages.${pkgs.stdenv.hostPlatform.system}.default
];
# Set default terminal for the desktop environment
sessionVariables = {
TERMINAL = "wezterm";
};
};
# Programs and tools for the desktop environment
programs = {
# File browser
thunar.enable = true;
# Configuration storage system for xfce
xfconf.enable = true;
# Enable dconf for GTK applications
dconf.enable = true;
};
# System services for the desktop environment
services = {
# Mount, trash, and other functionalities
gvfs.enable = true;
# Thumbnail support for images
tumbler.enable = true;
};
# XDG desktop portal for file pickers, screen sharing, etc.
xdg.portal = {
enable = true;
config.common.default = ["gtk"];
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
xdg-desktop-portal-wlr
];
};
# Install patched fonts for the desktop environment
fonts.packages = [
(pkgs.stdenv.mkDerivation {
name = "jade-fonts";
src = "${inputs.self}/pkgs/patched-fonts";
installPhase = ''
mkdir -p $out/share/fonts
cp -r $src/* $out/share/fonts/
'';
})
];
# Configure GTK theme system-wide
environment.etc = {
"xdg/gtk-3.0/settings.ini".text = /* ini */ ''
[Settings]
gtk-theme-name=Gruvbox-Material-Dark
gtk-icon-theme-name=Gruvbox-Material-Dark
gtk-application-prefer-dark-theme=true
'';
"xdg/gtk-4.0/settings.ini".text = /* ini */ ''
[Settings]
gtk-theme-name=Gruvbox-Material-Dark
gtk-icon-theme-name=Gruvbox-Material-Dark
gtk-application-prefer-dark-theme=true
'';
};
}