nixfiles/modules/graphical/default.nix

239 lines
6.2 KiB
Nix

{ config, pkgs, lib, inputs, ... }:
let
cfg = config.kyouma.graphical;
in {
options = {
kyouma.graphical = {
enable = lib.mkEnableOption "graphical profile";
compositor = lib.mkOption {
type = with lib.types; nullOr (enum [ "hyprland" "niri" ]);
default = null;
};
};
};
imports = [
inputs.stylix.nixosModules.stylix
./files.nix
./hyprland.nix
./waybar-hyprland.nix
./hyprlock.nix
./nixvim.nix
];
config = lib.mkIf cfg.enable {
kyouma.machine-type.graphical = true;
boot.plymouth.enable = true;
security.pam.services.hyprlock = {};
services.dbus.packages = [ pkgs.gcr ];
services.geoclue2.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
};
services.udisks2.enable = true;
environment.variables = {
CLUTTER_BACKEND = "wayland";
GDK_BACKEND = "wayland,x11";
MOZ_ENABLE_WAYLAND = "1";
QT_QPA_PLATFORM = "wayland;xcb";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
SDL_VIDEODRIVER = "wayland";
LIBVA_DRIVER_NAME = "radeonsi";
MESA_VK_DEVICE_SELECT = "1002:73df";
WLR_DRM_DEVICES = "$HOME/.config/hypr/external-gpu:$HOME/.config/hypr/internal-gpu";
};
xdg.icons.enable = true;
xdg.portal = {
enable = true;
wlr.enable = true;
configPackages = [ (if cfg.compositor == "hyprland"
then pkgs.xdg-desktop-portal-hyprland
else pkgs.xdg-desktop-portal-wlr
) ];
};
stylix= {
image = pkgs.fetchurl {
url = "https://kyouma.net/wallpaper.png";
sha256 = "1f46b439a864cd28b8ea93563b4762f1efb2648bae0148fd6b45f3033b10b0e8";
};
polarity = "dark";
#base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-macchiato.yaml";
fonts = {
sansSerif = {
package = pkgs.noto-fonts;
name = "Noto Sans";
};
serif = config.stylix.fonts.sansSerif;
monospace = {
package = pkgs.jetbrains-mono;
name = "JetBrains Mono Regular";
};
sizes.terminal = 11;
};
cursor = {
package = pkgs.capitaine-cursors;
name = "capitaine";
size = 24;
};
targets = {
console.enable = false;
gnome.enable = true;
fish.enable = false;
};
};
home-manager.users.emily = {
stylix.targets = {
hyprland.enable = false;
sway.enable = false;
kitty.enable = false;
mako.enable = false;
rofi.enable = false;
swaylock.enable = false;
waybar.enable = false;
nixvim.enable = false;
fish.enable = false;
};
home.keyboard = {
layout = "de";
variant = "neo_qwerty";
};
programs.imv.enable = true;
programs.wpaperd = {
enable = true;
settings.default = {
path = "/home/emily/Pictures/wallpapers/sylviaritter/";
duration = "60m";
sorting = "random";
};
};
programs.kitty = {
enable = true;
font.size = 13;
font.name = "JetBrains Mono";
settings = {
enable_audio_bell = false;
scrollback_lines = 65536;
remember_window_size = false;
initial_window_width = 1200;
initial_window_height = 800;
bold_font = "auto";
italic_font = "auto";
bold_italic_font = "auto";
background = "#090312";
background_opacity = "0.7";
};
keybindings = {
"shift+right" = "next_tab";
"ctrl+l" = "next_tab";
"shift+left" = "previous_tab";
"ctrl+h" = "previous_tab";
};
};
programs.rofi = {
enable = true;
package = pkgs.rofi-wayland;
};
programs.zoxide = {
enable = true;
options = [ "--cmd cd" ];
};
programs.fzf.enable = true;
qt = {
enable = true;
platformTheme.name = "qtct";
style.name = "kvantum-dark";
style.package = with pkgs; [
libsForQt5.qtstyleplugin-kvantum
qt6Packages.qtstyleplugin-kvantum
(catppuccin-kvantum.override { accent = "Mauve"; variant = "Macchiato"; })
];
};
gtk.iconTheme.name = "Adwaita";
gtk.iconTheme.package = pkgs.gnome.adwaita-icon-theme;
services.gammastep = {
enable = true;
provider = "geoclue2";
temperature.day = 6500;
temperature.night = 3700;
settings.general.adjustment-method = "wayland";
};
services.mako = {
enable = true;
anchor = "top-right";
backgroundColor = "#24273a";
borderColor = "#c6a0f6";
borderRadius = 15;
borderSize = 2;
defaultTimeout = 5000;
layer = "overlay";
maxIconSize = 48;
padding = "15";
progressColor = "over #B4A1DB";
sort = "-time";
textColor = "#cad3f5";
extraConfig = ''
max-history=100
on-button-left=dismiss
on-button-right=dismiss-all
on-notify=exec ${pkgs.mpv}/bin/mpv /usr/share/sounds/freedesktop/stereo/message.oga
[urgency=low]
border-color=#B4A1DB
default-timeout=2000
[urgency=normal]
border-color=#B4A1DB
default-timeout=5000
[urgency=high]
border-color=#D04E9D
text-color=#D04E9D
default-timeout=0
[category=mpd]
border-color=#E49186
default-timeout=2000
group-by=category
'';
};
services.gpg-agent = {
enable = true;
enableSshSupport = true;
pinentryPackage = pkgs.pinentry-gnome3;
};
services.syncthing = {
enable = true;
tray.enable = true;
tray.command = "syncthingtray --replace";
};
services.udiskie = {
enable = true;
automount = false;
};
systemd.user.services.syncthingtray.Service = {
ExecStartPre = "${pkgs.coreutils-full}/bin/sleep 2";
Restart = "on-failure";
RestartSec = "1s";
};
};
};
}