Files
nixos/modules/desktop/default.nix
2026-09-30 00:31:08 +02:00

148 lines
3.4 KiB
Nix

{ pkgs, inputs, ... }:
{
services.greetd = {
enable = true;
settings = rec {
initial_session = {
command="${pkgs.uwsm}/bin/uwsm start hyprland.desktop"; # TODO: might be borked
user = "djai";
};
default_session = initial_session;
};
};
programs.regreet.enable = true;
services.displayManager = {
ly = {
enable = true;
x11Support = false;
};
autoLogin = {
enable = true;
user = "djai";
};
defaultSession = "hyprland-uwsm"; # TODO: might be wrong
};
# note that we set the videodrivers on a per-host basis, so not here.
services.xserver = {
enable = true;
xkb = {
layout = "us";
variant = "euro";
options = "caps:escape";
};
};
programs.hyprland = {
enable = true;
withUWSM = true;
};
programs.hyprlock.enable = true;
programs.uwsm = {
enable = true;
waylandCompositors = {
hyprland = {
prettyName = "Hyprland";
comment = "Hyprland compositor managed by UWSM";
binPath = "/run/current-system/sw/bin/Hyprland";
};
};
};
hardware.graphics = {
enable = true;
enable32Bit = true;
};
hardware.bluetooth.enable = true;
services.blueman.enable = true;
fonts.packages = with pkgs; [
nerd-fonts.caskaydia-cove
nerd-fonts.fira-code
nerd-fonts.iosevka
nerd-fonts.shure-tech-mono
nerd-fonts.symbols-only
];
# services.gvfs.enable = true;
services.udisks2.enable = true;
services.printing.enable = true;
users.users.djai.packages = with pkgs; [
hyprpicker
hyprsunset
wf-recorder
wmctrl
hyprprop
hyprlandPlugins.hypr-darkwindow
kanshi
rofi
waybar
wl-clipboard
wl-clipboard-x11
swaybg
];
qt = {
enable = true;
platformTheme = "qt5ct"; # might have to go back to gnome if this makes kdenlive crash
style = "adwaita-dark";
};
# i have no clue what this does.
# GLib aborts any program that loads a GSettings schema it can't find, and Qt's GTK file dialog needs gtk3's. Nothing else puts these on the path.
environment.sessionVariables.GSETTINGS_SCHEMA_DIR = builtins.concatStringsSep ":" [
"${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}/glib-2.0/schemas"
"${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}/glib-2.0/schemas"
];
# TODO: other mimetypes?
xdg.mime.defaultApplications = {
"inode/directory" = [ "kitty" ];
"text/html" = [ "librewolf.desktop" ];
"x-scheme-handler/http" = [ "liberwolf.desktop" ];
"x-scheme-handler/https" = [ "librewolf.desktop" ];
};
# TODO: check we like these defaults
xdg.portal = {
enable = true;
config = {
common.default = [ "gtk" ];
hyprland = {
default = [
"gtk"
"hyprland"
];
"org.freedesktop.impl.portal.FileChooser" = [ "gtk" ];
"org.freedesktop.impl.portal.OpenURI" = [ "gtk" ];
};
};
# programs.hyprland adds the Hyprland portal.
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
};
# TODO: switch to using home manager
# home-manager.users.djai = {
# imports = [ ./hyprland.nix ]; # loogat husseins dots for inspo
#
# home.packages = with pkgs; [ ];
#
# # TODO: cursor + icon theming
# gtk = {
# enable = true;
# iconTheme = {
# name = "Papirus-Dark";
# package = pkgs.papirus-icon-theme;
# };
# };
# };
}