configuration.nix/home/gui/default.nix

102 lines
3.2 KiB
Nix

{
config,
lib,
pkgs,
osConfig ? null,
...
}:
let
inherit (config) jhome;
flatpakEnabled = if osConfig != null then osConfig.services.flatpak.enable else false;
osSway = osConfig == null && !osConfig.programs.sway.enable;
swayPkg = if osSway then pkgs.sway else null;
cfg = jhome.gui;
cursor.package = pkgs.nordzy-cursor-theme;
cursor.name = "Nordzy-cursors";
iconTheme.name = "Papirus-Dark";
iconTheme.package = pkgs.papirus-icon-theme;
in
{
config = lib.mkIf (jhome.enable && cfg.enable) {
home.packages = [
pkgs.webcord
pkgs.ferdium
pkgs.xournalpp
pkgs.signal-desktop
pkgs.lxqt.pcmanfm-qt
pkgs.wl-clipboard
# Extra fonts
pkgs.noto-fonts-cjk # Chinese, Japanese and Korean characters
] ++ lib.optional flatpakEnabled pkgs.flatpak;
fonts.fontconfig.enable = true;
# Browser
programs.firefox.enable = true;
# Dynamic Menu
programs.fuzzel.enable = true;
programs.fuzzel.settings.main.icon-theme = "Papirus-Dark";
programs.fuzzel.settings.main.terminal = cfg.terminal;
programs.fuzzel.settings.main.layer = "overlay";
# Video player
programs.mpv.enable = true;
programs.mpv.scripts = builtins.attrValues { inherit (pkgs.mpvScripts) uosc thumbfast; };
# Status bar
programs.waybar.enable = true;
programs.waybar.systemd.enable = true;
programs.waybar.settings = import ./waybar-settings.nix { inherit config lib; };
# Terminal
programs.wezterm.enable = cfg.terminal == "wezterm";
programs.wezterm.extraConfig = ''
config = {}
config.hide_tab_bar_if_only_one_tab = true
config.window_padding = { left = 1, right = 1, top = 1, bottom = 1 }
return config
'';
programs.alacritty.enable = cfg.terminal == "alacritty";
programs.zellij.enable = cfg.terminal == "alacritty"; # alacritty has no terminal multiplexerr built in
# PDF reader
programs.zathura.enable = true;
# Auto start sway
programs.zsh.loginExtra = lib.optionalString cfg.sway.autostart ''
# Start Sway on login to TTY 1
if [ "$TTY" = /dev/tty1 ]; then
exec sway
fi
'';
# Volume/Backlight control and notifications
services.avizo.enable = true;
# Auto configure displays
services.kanshi.enable = lib.mkDefault true;
# Notifications
services.mako.enable = true;
services.mako.layer = "overlay";
services.mako.borderRadius = 8;
services.mako.defaultTimeout = 15000;
# Window Manager
wayland.windowManager.sway.enable = true;
wayland.windowManager.sway.package = swayPkg; # no sway package if it comes from the OS
wayland.windowManager.sway.config = import ./sway-config.nix { inherit config pkgs; };
# Set cursor style
stylix.cursor = cursor;
home.pointerCursor.gtk.enable = true;
# Set Gtk theme
gtk.enable = true;
gtk.iconTheme = iconTheme;
gtk.gtk3.extraConfig.gtk-application-prefer-dark-theme = 1;
gtk.gtk4.extraConfig.gtk-application-prefer-dark-theme = 1;
# Set Qt theme
qt.enable = true;
qt.platformTheme = "gtk";
xdg.systemDirs.data = [
"/usr/share"
"/var/lib/flatpak/exports/share"
"${config.xdg.dataHome}/flatpak/exports/share"
];
};
}