{ inputs, config, pkgs, lib, unstablePkgs, ... }: let userName = "jaci"; fullName = "Jaci Anderson"; email = "jaci.s.anderson@gmail.com"; in { imports = [ ../../../shared/modules/apps/firefox/firefox.nix ../../../shared/modules/apps/helix.nix ../../../shared/modules/home-manager/git-autosync.nix ../../../shared/modules/home-manager/noctalia.nix ../niri/niri_home.nix ./programs.nix ]; home.username = userName; home.homeDirectory = "/home/${userName}"; programs.home-manager.enable = true; home.stateVersion = "23.11"; # Please read the comment before changing. firefoxApp.enable = true; helixApp.enable = true; fonts.fontconfig.enable = true; # Stylix auto-theming - applies to all programs..enable apps stylix.autoEnable = true; # Enable niri home configuration nirihome = { enable = true; homePackages = [ ]; }; # Enable Noctalia shell (replaces Waybar, SwayNC, SwayOSD, wlsunset) noctaliaShell = { enable = true; barPosition = "top"; darkMode = false; # Jaci uses light mode useWallpaperColors = true; # Generate colors from wallpaper locationName = "Salt Lake"; avatarImage = "/home/${userName}/.face"; }; # Additional user packages # Note: Programs with Stylix theming are in programs.nix home.packages = with pkgs; [ # # Gaming # mangohud wine-wayland # # Unix tools # lsd htop unzip # # Style # libsForQt5.qtstyleplugin-kvantum libsForQt5.qt5ct # Additional fonts (main fonts managed by Stylix) unstablePkgs.nerd-fonts.hurmit unstablePkgs.nerd-fonts.overpass recursive ]; # # Dotfiles # # Static symlinks home.file = lib.mkMerge [ # Shared dotfiles (let sharedDotfilesPath = ../../../shared/dotfiles; in if builtins.pathExists sharedDotfilesPath then builtins.listToAttrs (map (name: { name = "${config.xdg.configHome}/${name}"; value = { source = lib.mkDefault (sharedDotfilesPath + "/${name}"); }; }) (builtins.attrNames (builtins.readDir sharedDotfilesPath))) else {}) # Add local dotfiles, overriding from local over shared (let localDotfilesPath = ../../dotfiles; in if builtins.pathExists localDotfilesPath && builtins.readDir localDotfilesPath != {} then builtins.listToAttrs (map (name: { name = "${config.xdg.configHome}/${name}"; value = { source = localDotfilesPath + "/${name}"; }; }) (builtins.attrNames (builtins.readDir localDotfilesPath))) else {}) ]; # Active symlinks for live-edited config xdg.configFile = { "niri".source = config.lib.file.mkOutOfStoreSymlink "/home/${userName}/nixos/jaci/linked-dotfiles/niri"; }; # Override Flatpak Steam to disable GPU acceleration (fixes black window on Niri) xdg.desktopEntries."com.valvesoftware.Steam" = { name = "Steam"; exec = "flatpak run com.valvesoftware.Steam -cef-disable-gpu %U"; icon = "steam"; terminal = false; categories = [ "Game" ]; mimeType = [ "x-scheme-handler/steam" "x-scheme-handler/steamlink" ]; }; home.sessionVariables = { EDITOR = "hx"; # For electron apps NIXOS_OZONE_WL = "1"; }; # Git setup programs.git = { enable = true; settings = { user.name = fullName; user.email = email; init = { defaultBranch = "main"; }; pull = { ff = "only"; }; merge = { conflictStyle = "zdiff3"; }; push = { autoSetupRemote = "true"; }; }; }; programs = { bash.enable = true; }; # enable saving ssh secrets (needed for private repos) services.gnome-keyring.enable = true; services.gnome-keyring.components = [ "ssh" "secrets" ]; # Zsh setup programs.zsh = { enable = true; oh-my-zsh = { enable = true; plugins = [ "git" ]; theme = "half-life"; }; initContent = '' # History HISTSIZE=10000 SAVEHIST=10000 setopt SHARE_HISTORY setopt APPEND_HISTORY # integrate ssh-agent from gnome keyring export SSH_AUTH_SOCK=/run/user/$UID/gcr/ssh # Better Unix Aliases alias ls="lsd" alias l="lsd --almost-all --long" alias llm="lsd --timesort --long" alias lS="lsd --oneline --classic" alias lt="lsd --tree --depth=2" alias cat="bat --paging=never" alias rm="rm -i" ''; profileExtra = '' export XDG_DATA_DIRS=$XDG_DATA_DIRS:/usr/share:/var/lib/flatpak/exports/share:$HOME/.local/share/flatpak/exports/share ''; syntaxHighlighting = { enable = true; }; }; # Stylix handles Qt and GTK theming # Enable bluetooth headphone controls services.mpris-proxy.enable = true; # Git autosync for Documents services.git-autosync = { enable = false; repos.documents = { path = "/home/${userName}/Documents"; gitName = fullName; gitEmail = email; }; }; }