87 lines
2 KiB
Nix
87 lines
2 KiB
Nix
{config, pkgs, lib, ...}:
|
|
|
|
{
|
|
# === Wayland + Hyprland ===
|
|
programs.hyprland = {
|
|
enable = true;
|
|
xwayland.enable = true;
|
|
};
|
|
|
|
# Session variables
|
|
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
|
|
|
# Security — required for hyprlock
|
|
security.pam.services.hyprlock = {};
|
|
|
|
# Polkit for GUI auth prompts
|
|
security.polkit.enable = true;
|
|
systemd.user.services.polkit-gnome-authentication-agent-1 = {
|
|
description = "polkit-gnome-authentication-agent-1";
|
|
wantedBy = [ "graphical-session.target" ];
|
|
wants = [ "graphical-session.target" ];
|
|
after = [ "graphical-session.target" ];
|
|
serviceConfig = {
|
|
Type = "simple";
|
|
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
|
|
Restart = "on-failure";
|
|
RestartSec = 1;
|
|
};
|
|
};
|
|
|
|
# Display manager — greetd (minimal, Wayland-native)
|
|
services.greetd = {
|
|
enable = true;
|
|
settings = {
|
|
default_session = {
|
|
command = "${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd Hyprland";
|
|
user = "greeter";
|
|
};
|
|
};
|
|
};
|
|
|
|
# Clear TTY before greetd starts to avoid boot message overlap
|
|
systemd.services.greetd.serviceConfig = {
|
|
TTYVTDisallocate = true;
|
|
Type = "idle";
|
|
};
|
|
|
|
# Create greeter user for greetd
|
|
users.users.greeter = {
|
|
description = "Greeter";
|
|
group = "greeter";
|
|
isSystemUser = true;
|
|
};
|
|
users.groups.greeter = {};
|
|
|
|
# Suppress kernel boot messages on console
|
|
boot.consoleLogLevel = 0;
|
|
|
|
# XDG portal for Wayland
|
|
xdg.portal = {
|
|
enable = true;
|
|
extraPortals = [ pkgs.xdg-desktop-portal-hyprland ];
|
|
config.common.default = "*";
|
|
};
|
|
|
|
# Fonts
|
|
fonts.packages = with pkgs; [
|
|
font-awesome
|
|
nerd-fonts.jetbrains-mono
|
|
nerd-fonts.fira-code
|
|
];
|
|
|
|
# Audio (pipewire)
|
|
services.pipewire = {
|
|
enable = true;
|
|
alsa.enable = true;
|
|
alsa.support32Bit = true;
|
|
pulse.enable = true;
|
|
};
|
|
|
|
# Bluetooth
|
|
hardware.bluetooth.enable = true;
|
|
hardware.bluetooth.powerOnBoot = true;
|
|
|
|
# NetworkManager applet
|
|
programs.nm-applet.enable = true;
|
|
}
|