Initial commit: Nomarchy NixOS configuration
An opinionated NixOS configuration with Hyprland, featuring: - Modular flake-based architecture - Parameterized user configuration (username, timezone, locale, etc.) - Classical/antiquity theme with Thomas Cole wallpapers - Full Hyprland setup with waybar, rofi, swaync - Custom utility scripts (screenshots, screen recording, WiFi QR) - Neovim with LSP support - Interactive installer for existing NixOS systems - ISO builder for fresh installations Flake outputs: - nixosConfigurations.example - Test configuration - nixosConfigurations.installer - ISO installer - packages.iso - Bootable ISO image - apps.default - Interactive installer - lib.mkHost - Host builder function - templates.default - Starter template Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
7
modules/desktop/default.nix
Normal file
7
modules/desktop/default.nix
Normal file
@@ -0,0 +1,7 @@
|
||||
# Desktop environment modules
|
||||
{...}: {
|
||||
imports = [
|
||||
./hyprland.nix
|
||||
./display-manager.nix
|
||||
];
|
||||
}
|
||||
25
modules/desktop/display-manager.nix
Normal file
25
modules/desktop/display-manager.nix
Normal file
@@ -0,0 +1,25 @@
|
||||
# Display manager configuration
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
# X11 server (for SDDM and fallback)
|
||||
services.xserver.enable = true;
|
||||
|
||||
# SDDM display manager with Wayland support
|
||||
services.displayManager.sddm = {
|
||||
enable = true;
|
||||
wayland.enable = true;
|
||||
};
|
||||
|
||||
# Plasma 6 as fallback desktop (optional)
|
||||
services.desktopManager.plasma6.enable = true;
|
||||
|
||||
# KDE Connect for phone integration
|
||||
programs.kdeconnect.enable = true;
|
||||
|
||||
# X keyboard layout (for SDDM)
|
||||
services.xserver.xkb.layout = "us";
|
||||
}
|
||||
78
modules/desktop/hyprland.nix
Normal file
78
modules/desktop/hyprland.nix
Normal file
@@ -0,0 +1,78 @@
|
||||
# Hyprland window manager configuration
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
nomarchyConfig,
|
||||
...
|
||||
}: {
|
||||
# Enable Hyprland as a session option
|
||||
services.displayManager.sessionPackages = [
|
||||
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland
|
||||
];
|
||||
|
||||
# Enable polkit for privilege escalation
|
||||
security.polkit.enable = true;
|
||||
|
||||
# XDG portal for screen sharing and file dialogs
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
extraPortals = [pkgs.xdg-desktop-portal-hyprland];
|
||||
};
|
||||
|
||||
# Hyprland ecosystem packages
|
||||
environment.systemPackages = with pkgs; [
|
||||
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland
|
||||
|
||||
# Core utilities
|
||||
waybar
|
||||
swaynotificationcenter
|
||||
rofi-wayland
|
||||
hyprpaper
|
||||
hyprlock
|
||||
hypridle
|
||||
hyprpicker
|
||||
|
||||
# Screenshot tools
|
||||
grim
|
||||
slurp
|
||||
swappy
|
||||
satty
|
||||
|
||||
# Screen recording
|
||||
wf-recorder
|
||||
ffmpeg
|
||||
|
||||
# Clipboard
|
||||
wl-clipboard
|
||||
cliphist
|
||||
|
||||
# Brightness and audio control
|
||||
brightnessctl
|
||||
playerctl
|
||||
|
||||
# System utilities
|
||||
pavucontrol
|
||||
wdisplays
|
||||
networkmanagerapplet
|
||||
|
||||
# Night light
|
||||
gammastep
|
||||
|
||||
# QR code generation (for WiFi sharing)
|
||||
qrencode
|
||||
imv
|
||||
|
||||
# Debugging
|
||||
wev
|
||||
];
|
||||
|
||||
# Wayland environment variables
|
||||
environment.sessionVariables = {
|
||||
NIXOS_OZONE_WL = "1";
|
||||
XDG_CURRENT_DESKTOP = "Hyprland";
|
||||
XDG_SESSION_TYPE = "wayland";
|
||||
XDG_SESSION_DESKTOP = "Hyprland";
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user