{ inputs, config, pkgs, lib, ... }: let userName = "nate"; fullName = "Nate Anderson"; email = "nate.anderson@vasion.com"; unstable = import inputs.nixpkgs-unstable { system = "x86_64-linux"; config.allowUnfree = true; }; in { imports = [ ../../../shared/modules/apps/firefox/firefox.nix ../../../shared/modules/apps/ghostty.nix ../../../shared/modules/apps/helix.nix ../../../shared/modules/home-manager/programs.nix ../../../shared/modules/home-manager/git-autosync.nix ../../../shared/modules/home-manager/noctalia.nix ../niri/niri_home.nix ../vpn-proxy/vpn-proxy.nix ]; home.username = userName; home.homeDirectory = "/home/${userName}"; programs.home-manager.enable = true; home.stateVersion = "23.11"; # Please read the comment before changing. # Stylix auto-theming - applies to all programs..enable apps stylix.autoEnable = true; # Enable shared modules firefoxApp.enable = true; ghosttyApp.enable = true; helixApp.enable = true; sharedPrograms.enable = true; fonts.fontconfig.enable = true; # Enable VPN proxy script vpnProxy.enable = true; # Git autosync for star-command services.git-autosync = { enable = true; repos.star-command = { path = "/home/${userName}/source/star-command"; gitName = fullName; gitEmail = email; }; }; nirihome = { enable = true; homePackages = []; }; # Enable Noctalia shell (replaces Waybar, SwayNC, SwayOSD, wlsunset) noctaliaShell = { enable = true; barPosition = "top"; darkMode = true; useWallpaperColors = true; # Generate colors from wallpaper locationName = "Denver"; avatarImage = "/home/${userName}/.face"; }; # Additional user packages # Note: Programs with Stylix theming are in shared modules home.packages = with pkgs; [ # # Dev Tools # vscode-fhs unstable.docker_25 docker-compose jq gnumake mariadb cmake gcc oxker # docker desktop tui <3 python3 ## nodejs frontend nodejs_24 husky pnpm yarn ## dev services cli gh awscli2 ## AI unstable.claude-code unstable.opencode ## Go stuff go unstable.delve gotools go-tools govulncheck unstable.golangci-lint go-swag trivy ### LSP's gopls nil typescript-language-server nodePackages_latest.bash-language-server openscad-lsp vscode-langservers-extracted # provides eslint, markdown, json, css, and html lsp yaml-language-server ltex-ls ### Misc usbutils nfs-utils # # Unix tools # duf dust fd lsd lsof ripgrep tre-command gtop htop neofetch unzip nmap # # Photo / Video # imv ffmpeg audacity yt-dlp simple-scan # iphone connections libimobiledevice ifuse # # Communication # mumble # # Other # chromium keepassxc obs-studio gnome-disk-utility hugo # # Style (Qt plugin for Stylix) # libsForQt5.qtstyleplugin-kvantum libsForQt5.qt5ct # Additional fonts (main fonts managed by Stylix) unstable.nerd-fonts.hurmit unstable.nerd-fonts.overpass unstable.nerd-fonts.monaspace monaspace ]; # enable saving ssh secrets (needed for go mod installing private packages) services.gnome-keyring.enable = true; services.gnome-keyring.components = [ "ssh" "secrets" ]; # Enable bluetooth headphone controls services.mpris-proxy.enable = true; 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"; }; merge = { conflictStyle="zdiff3"; }; pull = { ff = "only"; }; push = { autoSetupRemote="true"; }; # Vasion rewrite rule url = { "git@github.com:" = { insteadOf = "https://github.com/"; }; }; }; }; # Better git diffs with delta programs.delta = { enable = true; enableGitIntegration = true; options = { side-by-side = true; hyperlinks = true; }; }; # direnv for auto nix flake shells programs = { direnv = { enable = true; enableZshIntegration = true; nix-direnv.enable = true; }; bash.enable = true; }; # Zsh setup programs.zsh = { enable = true; oh-my-zsh = { enable = true; plugins = [ "git" ]; theme = "half-life"; }; initContent = '' # integrate ssh-agent from gnome keyring export SSH_AUTH_SOCK=/run/user/$UID/gcr/ssh # direnv setup eval "$(direnv hook zsh)" # History HISTSIZE=10000 SAVEHIST=10000 setopt SHARE_HISTORY setopt APPEND_HISTORY # Work envs source ~/.vasion_env # bonus functions source ~/.config/zsh_functions.zsh export GOBIN=~/go/bin export PATH=$PATH:$GOBIN export NIX_SHELL=/usr/bin/env zsh claudew() { export ANTHROPIC_MODEL=us.anthropic.claude-sonnet-4-20250514-v1:0 export CLAUDE_CODE_USE_BEDROCK=1 export AWS_REGION=us-west-2 export CLAUDE_CONFIG_DIR=/home/nate/.claude-work claude } claudep() { unset ANTHROPIC_MODEL unset CLAUDE_CODE_USE_BEDROCK unset AWS_REGION export CLAUDE_CONFIG_DIR=/home/nate/.claude-personal claude } ''; shellAliases = { ls="lsd"; l="lsd --almost-all --long"; llm="lsd --timesort --long"; lS="lsd --oneline --classic"; lt="lsd --tree --depth=2"; cat="bat --paging=never"; ccat="cat"; catp="bat --paging=never -p"; catplain="bat --paging=never -p"; rm="rm -i"; }; syntaxHighlighting = { enable = true; }; }; # Stylix handles Qt and GTK theming home.file = lib.mkMerge [ # Shared dotfiles (let sharedDotfilesPath = ../../../shared/dotfiles; in if builtins.pathExists sharedDotfilesPath then builtins.listToAttrs (map (name: { name = ".config/${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/${name}"; value = { source = localDotfilesPath + "/${name}"; }; }) (builtins.attrNames (builtins.readDir localDotfilesPath))) else {}) ]; xdg.configFile = { # Active linked dotfiles "hypr".source = config.lib.file.mkOutOfStoreSymlink "/home/nate/nixos/nate-work/linked-dotfiles/hypr"; "niri".source = config.lib.file.mkOutOfStoreSymlink "/home/nate/nixos/nate-work/linked-dotfiles/niri"; # waybar is now managed by shared/modules/home-manager/waybar.nix via waybarConfig.enable }; }