{ config, pkgs, nixvim, ... }: let programs = [ "git" "alacritty" "firefox" "nixvim" "hyprlock" "waybar" "zsh" "bash" "btop" "wofi" "password-store" "gpg" "ssh" "neomutt" "mbsync" "msmtp" "direnv" "mpv" ]; services = [ "syncthing" "hyprpaper" "network-manager-applet" "gpg-agent" "mbsync" ]; packages = [ pkgs.networkmanagerapplet pkgs.pavucontrol pkgs.wl-clipboard pkgs.virt-manager pkgs.wev pkgs.signal-desktop pkgs.unzip ]; in { users.n8 = { programs = builtins.listToAttrs ( map (n: { name = n; value = if builtins.pathExists ./programs/${n}/default.nix then (import ./programs/${n} { inherit pkgs; home = config.home-manager.users.n8.home; }) else { enable = true; }; }) programs ); services = builtins.listToAttrs ( map (n: { name = n; value = if builtins.pathExists ./services/${n}/default.nix then (import ./services/${n} { inherit pkgs; }) else { enable = true; }; }) services ); accounts = import ./accounts { }; wayland.windowManager.hyprland = import ./hyprland; home.packages = packages; home.pointerCursor = { gtk.enable = true; package = pkgs.bibata-cursors; name = "Bibata-Modern-Classic"; size = 24; }; gtk = { enable = true; theme = { package = pkgs.gruvbox-dark-gtk; name = "gruvbox-dark"; }; iconTheme = { package = pkgs.flat-remix-icon-theme; name = "Flat-Remix-Blue-Light"; }; font = { name = "SauceCodePro NF"; size = 11; }; }; qt = { enable = true; style = { package = [ pkgs.qt6Packages.qt6gtk2 pkgs.libsForQt5.qtstyleplugins ]; name = "gtk2"; }; }; xdg = { portal = { enable = true; xdgOpenUsePortal = true; config = { common = { default = [ "hyprland" ]; }; }; configPackages = [ pkgs.xdg-desktop-portal-hyprland ]; extraPortals = [ pkgs.xdg-desktop-portal-hyprland ]; }; userDirs = { enable = true; download = "${config.home-manager.users.n8.home.homeDirectory}"; desktop = null; documents = "${config.home-manager.users.n8.home.homeDirectory}/global/docs"; music = "${config.home-manager.users.n8.home.homeDirectory}/global/media/audio"; pictures = "${config.home-manager.users.n8.home.homeDirectory}/global/media/photos"; publicShare = null; templates = null; videos = "${config.home-manager.users.n8.home.homeDirectory}/global/media/videos"; }; }; home.stateVersion = "24.05"; }; useGlobalPkgs = true; useUserPackages = true; backupFileExtension = "backup"; sharedModules = [ nixvim.homeManagerModules.nixvim ]; }