{ lib, config, pkgs, nixvim, ... }: let dirfilter = import ../../utils/dirfilter.nix { inherit lib; }; scripts = map (n: (pkgs.writeShellScriptBin n (builtins.readFile ./scripts/${n}))) (dirfilter { path = ./scripts; }); programs = dirfilter { path = ./programs; type = "directory"; }; services = dirfilter { path = ./services; type = "directory"; }; packages = [ pkgs.pinentry-qt pkgs.networkmanagerapplet pkgs.pavucontrol pkgs.wl-clipboard pkgs.virt-manager pkgs.wev pkgs.signal-desktop pkgs.unzip pkgs.zip pkgs.sway-contrib.grimshot pkgs.wget pkgs.tor-browser pkgs.imagemagick pkgs.yt-dlp pkgs.brightnessctl pkgs.pciutils pkgs.usbutils pkgs.acpi pkgs.nixfmt-rfc-style pkgs.blueberry pkgs.gimp pkgs.inkscape pkgs.hicolor-icon-theme pkgs.bat pkgs.blender pkgs.pinentry-qt pkgs.ripgrep pkgs.tenacity pkgs.playerctl pkgs.toilet pkgs.xdg-desktop-portal pkgs.lmms pkgs.bc pkgs.imv pkgs.nmap pkgs.castero pkgs.ascii pkgs.qpwgraph pkgs.ffmpeg pkgs.nbsdgames pkgs.webtrayctl ]; in { users.n8 = { programs = builtins.listToAttrs ( map (n: { name = n; value = (import ./programs/${n} { inherit pkgs; home = config.home-manager.users.n8.home; }); }) programs ); services = builtins.listToAttrs ( map (n: { name = n; value = (import ./services/${n} { inherit pkgs; }); }) services ); accounts = import ./accounts { }; wayland.windowManager.hyprland = import ./hyprland { inherit pkgs; }; home.packages = packages ++ scripts; 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 ]; }