Updated some deprecation warnings, moved all firefox instances to shared module, added claude.md file for agent work, fixed zfs kernel version, pinned to 6.10
This commit is contained in:
		
							parent
							
								
									c7439fa85d
								
							
						
					
					
						commit
						662cfa3fbe
					
				
							
								
								
									
										163
									
								
								CLAUDE.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										163
									
								
								CLAUDE.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,163 @@
 | 
			
		||||
# CLAUDE.md
 | 
			
		||||
 | 
			
		||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
 | 
			
		||||
 | 
			
		||||
## Common Commands
 | 
			
		||||
 | 
			
		||||
### Building and Rebuilding Systems
 | 
			
		||||
```bash
 | 
			
		||||
# Rebuild NixOS configuration for current system
 | 
			
		||||
sudo nixos-rebuild switch --flake .
 | 
			
		||||
 | 
			
		||||
# Build for specific system
 | 
			
		||||
sudo nixos-rebuild switch --flake .#nate-work
 | 
			
		||||
sudo nixos-rebuild switch --flake .#nate
 | 
			
		||||
sudo nixos-rebuild switch --flake .#luci
 | 
			
		||||
sudo nixos-rebuild switch --flake .#jaci
 | 
			
		||||
sudo nixos-rebuild switch --flake .#scrappy
 | 
			
		||||
 | 
			
		||||
# Test configuration without switching
 | 
			
		||||
sudo nixos-rebuild test --flake .
 | 
			
		||||
 | 
			
		||||
# Check configuration without building
 | 
			
		||||
nix flake check
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Package Management
 | 
			
		||||
```bash
 | 
			
		||||
# Update flake inputs
 | 
			
		||||
nix flake update
 | 
			
		||||
 | 
			
		||||
# Run garbage collection
 | 
			
		||||
nix-collect-garbage -d
 | 
			
		||||
 | 
			
		||||
# Check system generations
 | 
			
		||||
nixos-rebuild list-generations
 | 
			
		||||
 | 
			
		||||
# Rollback to previous generation
 | 
			
		||||
sudo nixos-rebuild switch --rollback
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Home Manager
 | 
			
		||||
```bash
 | 
			
		||||
# Apply home manager configuration
 | 
			
		||||
home-manager switch --flake .
 | 
			
		||||
 | 
			
		||||
# For specific user configurations
 | 
			
		||||
home-manager switch --flake .#nate-work
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Architecture Overview
 | 
			
		||||
 | 
			
		||||
This is a multi-user NixOS configuration repository using Nix flakes. The repository manages configurations for multiple machines and users across different environments.
 | 
			
		||||
 | 
			
		||||
### Repository Structure
 | 
			
		||||
 | 
			
		||||
- **flake.nix**: Main flake configuration defining all system configurations
 | 
			
		||||
- **{user}/**: Individual user configuration directories (nate, nate-work, luci, jaci, scrappy)
 | 
			
		||||
- **shared/**: Shared modules and configurations across systems
 | 
			
		||||
- **{user}/default.nix**: System-level configuration for each user/machine
 | 
			
		||||
- **{user}/desktop-configuration.nix**: Desktop environment configuration
 | 
			
		||||
- **{user}/modules/**: User-specific modules and configurations
 | 
			
		||||
- **{user}/dotfiles/**: User dotfiles and application configurations
 | 
			
		||||
 | 
			
		||||
### Key Components
 | 
			
		||||
 | 
			
		||||
#### System Configurations
 | 
			
		||||
Each system configuration follows this pattern:
 | 
			
		||||
- `default.nix`: Main system configuration with user settings, hostname, desktop environment
 | 
			
		||||
- `desktop-configuration.nix`: Desktop environment setup (Sway/Hyprland)
 | 
			
		||||
- `modules/home-manager/home.nix`: Home Manager configuration
 | 
			
		||||
- `nixos/hardware-configuration.nix`: Hardware-specific settings
 | 
			
		||||
 | 
			
		||||
#### Supported Desktop Environments
 | 
			
		||||
- **Sway**: Wayland compositor (default)
 | 
			
		||||
- **Hyprland**: Modern Wayland compositor
 | 
			
		||||
- Desktop choice configured via `deskCfg.de` option
 | 
			
		||||
 | 
			
		||||
#### User Management
 | 
			
		||||
- Custom `main_user` module handles user creation
 | 
			
		||||
- Desktop users get additional groups (video, audio, adbusers)
 | 
			
		||||
- Server users get minimal groups (wheel, networkmanager)
 | 
			
		||||
 | 
			
		||||
#### Package Management
 | 
			
		||||
- Stable packages from nixpkgs 25.05
 | 
			
		||||
- Unstable packages available via `nixpkgs-unstable`
 | 
			
		||||
- Catppuccin theme integration via catppuccin.nix
 | 
			
		||||
- NUR (Nix User Repository) overlay enabled
 | 
			
		||||
 | 
			
		||||
### Configuration Patterns
 | 
			
		||||
 | 
			
		||||
#### User-Specific Settings
 | 
			
		||||
Each user configuration defines:
 | 
			
		||||
```nix
 | 
			
		||||
{
 | 
			
		||||
  userName = "username";
 | 
			
		||||
  fullName = "Full Name";
 | 
			
		||||
  email = "email@domain.com";
 | 
			
		||||
  hostName = "hostname";
 | 
			
		||||
  desktop = "sway" or "hyprland";
 | 
			
		||||
  gaming = true/false;
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
#### Module System
 | 
			
		||||
- Custom modules in `modules/` directories
 | 
			
		||||
- Shared modules in `shared/modules/`
 | 
			
		||||
- Options defined with `lib.mkOption`
 | 
			
		||||
- Conditional configuration with `lib.mkIf`
 | 
			
		||||
 | 
			
		||||
#### Home Manager Integration
 | 
			
		||||
- Home Manager configurations in `modules/home-manager/home.nix`
 | 
			
		||||
- Dotfiles linked from `dotfiles/` directories
 | 
			
		||||
- User packages defined in `homePackages`
 | 
			
		||||
 | 
			
		||||
### Development Environment
 | 
			
		||||
 | 
			
		||||
#### Installed Development Tools
 | 
			
		||||
- **Editors**: Helix (default), Emacs
 | 
			
		||||
- **Languages**: Go, Python, Clojure, Nix
 | 
			
		||||
- **LSPs**: gopls, nil, bash-language-server, python-lsp-server
 | 
			
		||||
- **Tools**: Docker, distrobox, jq, make, cmake
 | 
			
		||||
- **Version Control**: Git with delta, direnv
 | 
			
		||||
 | 
			
		||||
#### Shell Configuration
 | 
			
		||||
- **Default Shell**: Zsh with Oh My Zsh
 | 
			
		||||
- **Theme**: half-life
 | 
			
		||||
- **Plugins**: git, ssh-agent
 | 
			
		||||
- **Aliases**: Modern Unix tools (lsd, bat, ripgrep, fd, fzf)
 | 
			
		||||
 | 
			
		||||
### Security and Maintenance
 | 
			
		||||
 | 
			
		||||
#### Automatic Updates
 | 
			
		||||
- `auto-update.nix` module for automatic system updates
 | 
			
		||||
- Garbage collection configured weekly
 | 
			
		||||
- Boot loader limited to 5 generations
 | 
			
		||||
- Store optimization enabled
 | 
			
		||||
 | 
			
		||||
#### Security Features
 | 
			
		||||
- ClamAV antivirus on work systems
 | 
			
		||||
- Gnome Keyring for SSH secrets
 | 
			
		||||
- Firewall configuration for servers
 | 
			
		||||
- Initial password set to "password" (should be changed)
 | 
			
		||||
 | 
			
		||||
### Server Configuration
 | 
			
		||||
 | 
			
		||||
For server deployments, use `shared/server-configuration.nix` which provides:
 | 
			
		||||
- SSH server option
 | 
			
		||||
- NFS server with configurable exports
 | 
			
		||||
- Syncthing for file synchronization
 | 
			
		||||
- Radicale CalDAV server
 | 
			
		||||
- Printer sharing via CUPS/Avahi
 | 
			
		||||
 | 
			
		||||
### Special Features
 | 
			
		||||
 | 
			
		||||
#### Claude Code Integration
 | 
			
		||||
- Work profile: `claudew` command (uses AWS Bedrock)
 | 
			
		||||
- Personal profile: `claudep` command (uses standard API)
 | 
			
		||||
- Configuration directories: `/home/nate/.claude-work` and `/home/nate/.claude-personal`
 | 
			
		||||
 | 
			
		||||
#### Catppuccin Theme
 | 
			
		||||
- Consistent theming across applications
 | 
			
		||||
- Macchiato variant with lavender accent
 | 
			
		||||
- GTK, Qt, and terminal theme integration
 | 
			
		||||
							
								
								
									
										12
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										12
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							@ -78,11 +78,11 @@
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs-unstable": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1749794982,
 | 
			
		||||
        "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=",
 | 
			
		||||
        "lastModified": 1751792365,
 | 
			
		||||
        "narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=",
 | 
			
		||||
        "owner": "nixos",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81",
 | 
			
		||||
        "rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
@ -94,11 +94,11 @@
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs_2": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1750005367,
 | 
			
		||||
        "narHash": "sha256-h/aac1dGLhS3qpaD2aZt25NdKY7b+JT0ZIP2WuGsJMU=",
 | 
			
		||||
        "lastModified": 1751741127,
 | 
			
		||||
        "narHash": "sha256-t75Shs76NgxjZSgvvZZ9qOmz5zuBE8buUaYD28BMTxg=",
 | 
			
		||||
        "owner": "nixos",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "6c64dabd3aa85e0c02ef1cdcb6e1213de64baee3",
 | 
			
		||||
        "rev": "29e290002bfff26af1db6f64d070698019460302",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
 | 
			
		||||
@ -40,7 +40,7 @@ in
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    nixpkgs.overlays = [
 | 
			
		||||
      inputs.nur.overlay
 | 
			
		||||
      inputs.nur.overlays.default
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    # Enable flakes feature
 | 
			
		||||
 | 
			
		||||
@ -12,7 +12,7 @@
 | 
			
		||||
  # nixpkgs.config.allowUnfree = true;
 | 
			
		||||
  # inputs.nixpkgs-stable.config.allowUnfree = true;
 | 
			
		||||
  imports = [
 | 
			
		||||
      ../apps/firefox/firefox.nix
 | 
			
		||||
      ../../../shared/modules/apps/firefox/firefox.nix
 | 
			
		||||
  ];
 | 
			
		||||
  
 | 
			
		||||
  home.username = userName;
 | 
			
		||||
@ -49,7 +49,8 @@
 | 
			
		||||
    gimp
 | 
			
		||||
 | 
			
		||||
    # Install fonts
 | 
			
		||||
    (nerdfonts.override { fonts = [ "Hermit" "Gohu" ]; })
 | 
			
		||||
    nerd-fonts.hurmit
 | 
			
		||||
    # TODO need to add gohu font
 | 
			
		||||
    # Style
 | 
			
		||||
    catppuccin-kvantum
 | 
			
		||||
    libsForQt5.qtstyleplugin-kvantum
 | 
			
		||||
@ -81,26 +82,8 @@
 | 
			
		||||
          plugins = [ "git" ];
 | 
			
		||||
          theme = "half-life";
 | 
			
		||||
      };
 | 
			
		||||
      initExtra = ''
 | 
			
		||||
          alias ask="nix-shell -p python310Packages.openai --run 'python ~/source/python/chat.py'"
 | 
			
		||||
 | 
			
		||||
          fzf_projects() {
 | 
			
		||||
              DIR=`
 | 
			
		||||
              fd .git --search-path="$HOME/source/" -H --ignore-file ~/.config/fd-ignore -tdirectory | \
 | 
			
		||||
              xargs dirname | \
 | 
			
		||||
              sed 's|$HOME||g' | \
 | 
			
		||||
              sort | \
 | 
			
		||||
              uniq | \
 | 
			
		||||
              fzf --preview 'ls $HOME/{}/README.md 2>/dev/null && bat $HOME/{}/README.md || printf "No README.md file found in this directory\n%s" {}' --preview-window=top | \
 | 
			
		||||
              xargs printf "$HOME/%s/"
 | 
			
		||||
              `
 | 
			
		||||
              cd $DIR
 | 
			
		||||
          }
 | 
			
		||||
          alias p="fzf_projects source/"
 | 
			
		||||
 | 
			
		||||
          ### Busykid Bash Functions
 | 
			
		||||
 | 
			
		||||
       '';
 | 
			
		||||
      initContent = ''
 | 
			
		||||
      '';
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -78,7 +78,7 @@ in
 | 
			
		||||
          plugins = [ "git" ];
 | 
			
		||||
          theme = "dieter";
 | 
			
		||||
      };
 | 
			
		||||
      initExtra = ''
 | 
			
		||||
      initContent = ''
 | 
			
		||||
          eval "$(direnv hook zsh)"
 | 
			
		||||
 | 
			
		||||
          alias ls="lsd"
 | 
			
		||||
 | 
			
		||||
@ -14,7 +14,7 @@
 | 
			
		||||
  boot.extraModulePackages = [ ];
 | 
			
		||||
  boot.supportedFilesystems = [ "zfs" ];
 | 
			
		||||
 | 
			
		||||
  boot.kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages;  
 | 
			
		||||
  boot.kernelPackages = pkgs.linuxPackages_6_10;
 | 
			
		||||
 | 
			
		||||
  boot.zfs.forceImportRoot = false;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,23 +0,0 @@
 | 
			
		||||
yt-audio() {
 | 
			
		||||
  nix-shell -p yt-dlp --run "yt-dlp -x $1 --audio-format mp3"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
docker_mysql() {
 | 
			
		||||
  if [ -z "$1" ]; then
 | 
			
		||||
    echo "Usage: docker_mysql <mysql_container_name>"
 | 
			
		||||
    return 1
 | 
			
		||||
  fi
 | 
			
		||||
  docker exec -it "$1" mysql -u root -ppassword
 | 
			
		||||
}
 | 
			
		||||
# Tab-completion for docker_mysql function
 | 
			
		||||
_complete_docker_mysql() {
 | 
			
		||||
  local cur=${COMP_WORDS[COMP_CWORD]}
 | 
			
		||||
  COMPREPLY=($(compgen -W "$(docker ps --format '{{.Names}}' | grep mysql)" -- $cur))
 | 
			
		||||
}
 | 
			
		||||
# Register the completion for the docker_mysql function
 | 
			
		||||
complete -F _complete_docker_mysql docker_mysql
 | 
			
		||||
 | 
			
		||||
# Git restore file, like git restore but works for staged changes as well
 | 
			
		||||
gres() {
 | 
			
		||||
  git restore --source=HEAD --staged --worktree -- "$1"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										117
									
								
								nate-work/dotfiles/zsh_functions.zsh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								nate-work/dotfiles/zsh_functions.zsh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,117 @@
 | 
			
		||||
yt-audio() {
 | 
			
		||||
  nix-shell -p yt-dlp --run "yt-dlp -x $1 --audio-format mp3"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
docker_mysql() {
 | 
			
		||||
  if [ -z "$1" ]; then
 | 
			
		||||
    echo "Usage: docker_mysql <mysql_container_name>"
 | 
			
		||||
    return 1
 | 
			
		||||
  fi
 | 
			
		||||
  docker exec -it "$1" mysql -u root -ppassword
 | 
			
		||||
}
 | 
			
		||||
# Tab-completion for docker_mysql function
 | 
			
		||||
_complete_docker_mysql() {
 | 
			
		||||
  local cur=${COMP_WORDS[COMP_CWORD]}
 | 
			
		||||
  COMPREPLY=($(compgen -W "$(docker ps --format '{{.Names}}' | grep mysql)" -- $cur))
 | 
			
		||||
}
 | 
			
		||||
# Register the completion for the docker_mysql function
 | 
			
		||||
complete -F _complete_docker_mysql docker_mysql
 | 
			
		||||
 | 
			
		||||
# Git restore file, like git restore but works for staged changes as well
 | 
			
		||||
gres() {
 | 
			
		||||
  git restore --source=HEAD --staged --worktree -- "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Nixos upgrade functions
 | 
			
		||||
upgrade() {
 | 
			
		||||
    local command="$1"
 | 
			
		||||
    local profile="$2"
 | 
			
		||||
    local flake_path="$HOME/nixos"
 | 
			
		||||
    
 | 
			
		||||
    # Define valid commands
 | 
			
		||||
    local valid_commands=("switch" "boot" "test" "build" "dry-build" "dry-activate" "edit" "repl" "build-vm" "build-vm-with-bootloader" "build-image")
 | 
			
		||||
    
 | 
			
		||||
    # Check if command is provided
 | 
			
		||||
    if [[ -z "$command" ]]; then
 | 
			
		||||
        echo "Error: No command specified"
 | 
			
		||||
        echo "Usage: upgrade <command> [profile]"
 | 
			
		||||
        echo "Valid commands: ${valid_commands[*]}"
 | 
			
		||||
        return 1
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Validate command
 | 
			
		||||
    local valid_command=false
 | 
			
		||||
    for valid_cmd in "${valid_commands[@]}"; do
 | 
			
		||||
        if [[ "$command" == "$valid_cmd" ]]; then
 | 
			
		||||
            valid_command=true
 | 
			
		||||
            break
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
    
 | 
			
		||||
    if [[ "$valid_command" != true ]]; then
 | 
			
		||||
        echo "Error: Invalid command '$command'"
 | 
			
		||||
        echo "Valid commands: ${valid_commands[*]}"
 | 
			
		||||
        return 1
 | 
			
		||||
    fi
 | 
			
		||||
    
 | 
			
		||||
    # Check if flake directory exists
 | 
			
		||||
    if [[ ! -d "$flake_path" ]]; then
 | 
			
		||||
        echo -e "Error: Flake directory '$flake_path' does not exist, check function definition:\n\n\t`function upgrade`"
 | 
			
		||||
        return 1
 | 
			
		||||
    fi
 | 
			
		||||
    
 | 
			
		||||
    # Check if flake.nix exists
 | 
			
		||||
    if [[ ! -f "$flake_path/flake.nix" ]]; then
 | 
			
		||||
        echo "Error: flake.nix not found in '$flake_path'"
 | 
			
		||||
        return 1
 | 
			
		||||
    fi
 | 
			
		||||
    
 | 
			
		||||
    # If profile is provided, validate it exists in flake.nix
 | 
			
		||||
    if [[ -n "$profile" ]]; then
 | 
			
		||||
        if ! awk '/nixosConfigurations = \{/,/^\s*\}/' "$flake_path/flake.nix" | \
 | 
			
		||||
             grep -E "^\s*$profile\s*=" > /dev/null; then
 | 
			
		||||
            echo "Error: Profile '$profile' not found in flake.nix"
 | 
			
		||||
            echo "Available profiles:"
 | 
			
		||||
            # Extract available profiles from nixosConfigurations section
 | 
			
		||||
            awk '/nixosConfigurations = \{/,/^\s*\}/' "$flake_path/flake.nix" | \
 | 
			
		||||
                grep -E "^\s*[a-zA-Z0-9_-]+\s*=.*nixpkgs\.lib\.nixosSystem" | \
 | 
			
		||||
                sed -E 's/^\s*([a-zA-Z0-9_-]+)\s*=.*/  - \1/'
 | 
			
		||||
            return 1
 | 
			
		||||
        fi
 | 
			
		||||
        # Build the full flake reference
 | 
			
		||||
        local flake_ref="$flake_path#$profile"
 | 
			
		||||
        echo "Running: sudo nixos-rebuild $command --flake $flake_ref"
 | 
			
		||||
        sudo nixos-rebuild "$command" --flake "$flake_ref"
 | 
			
		||||
    else
 | 
			
		||||
        echo "Error: No profile provided."
 | 
			
		||||
        echo "Usage: upgrade <command> [profile]"
 | 
			
		||||
        return 1
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Add tab completion for the function
 | 
			
		||||
_upgrade_completion() {
 | 
			
		||||
    local cur="${COMP_WORDS[COMP_CWORD]}"
 | 
			
		||||
    local prev="${COMP_WORDS[COMP_CWORD-1]}"
 | 
			
		||||
    
 | 
			
		||||
    case $COMP_CWORD in
 | 
			
		||||
        1)
 | 
			
		||||
            # Complete command names
 | 
			
		||||
            local commands="switch boot test build dry-build dry-activate edit repl build-vm build-vm-with-bootloader build-image"
 | 
			
		||||
            COMPREPLY=($(compgen -W "$commands" -- "$cur"))
 | 
			
		||||
            ;;
 | 
			
		||||
        2)
 | 
			
		||||
            # Complete profile names from flake.nix
 | 
			
		||||
            if [[ -f "$HOME/nixos/flake.nix" ]]; then
 | 
			
		||||
                local profiles=$(grep -E "^\s*[a-zA-Z0-9_-]+\s*=" "$HOME/nixos/flake.nix" | \
 | 
			
		||||
                    grep -A5 -B5 "nixosConfigurations" | \
 | 
			
		||||
                    sed -n 's/^\s*\([a-zA-Z0-9_-]*\)\s*=.*/\1/p' | \
 | 
			
		||||
                    sort -u)
 | 
			
		||||
                COMPREPLY=($(compgen -W "$profiles" -- "$cur"))
 | 
			
		||||
            fi
 | 
			
		||||
            ;;
 | 
			
		||||
    esac
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Register the completion function
 | 
			
		||||
complete -F _upgrade_completion upgrade
 | 
			
		||||
@ -47,6 +47,17 @@ in
 | 
			
		||||
                                icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
 | 
			
		||||
                                definedAliases = [ "@np" ];
 | 
			
		||||
                            };
 | 
			
		||||
                            "MySQL Docs" = {
 | 
			
		||||
                                urls = [{
 | 
			
		||||
                                    template = "https://dev.mysql.com/doc/search";
 | 
			
		||||
                                    params = [
 | 
			
		||||
                                        { name = "d"; value = "371"; }
 | 
			
		||||
                                        { name = "p"; value = "1"; }
 | 
			
		||||
                                        { name = "q"; value = "{searchTerms}"; }
 | 
			
		||||
                                    ];
 | 
			
		||||
                                }];
 | 
			
		||||
                                definedAliases = [ "@mysql" ];
 | 
			
		||||
                            };
 | 
			
		||||
                        };
 | 
			
		||||
                    };
 | 
			
		||||
                    settings = {
 | 
			
		||||
 | 
			
		||||
@ -33,7 +33,7 @@
 | 
			
		||||
  # ];
 | 
			
		||||
 | 
			
		||||
  imports = [
 | 
			
		||||
      ../apps/firefox/firefox.nix
 | 
			
		||||
      ../../../shared/modules/apps/firefox/firefox.nix
 | 
			
		||||
      ../hypr/hypr_home.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
@ -67,18 +67,16 @@
 | 
			
		||||
      # Dev Tools
 | 
			
		||||
      #
 | 
			
		||||
      helix
 | 
			
		||||
      vscodium-fhs
 | 
			
		||||
      unstable.distrobox
 | 
			
		||||
      unstable.docker_25
 | 
			
		||||
      docker-compose
 | 
			
		||||
      jq
 | 
			
		||||
      gnumake
 | 
			
		||||
      insomnia
 | 
			
		||||
      mariadb
 | 
			
		||||
      lsp-ai
 | 
			
		||||
      python3
 | 
			
		||||
      cmake
 | 
			
		||||
      claude-code
 | 
			
		||||
      unstable.claude-code
 | 
			
		||||
      # proto
 | 
			
		||||
      protobuf
 | 
			
		||||
      protoc-gen-dart
 | 
			
		||||
@ -87,7 +85,10 @@
 | 
			
		||||
      delve
 | 
			
		||||
      gotools
 | 
			
		||||
      go-tools
 | 
			
		||||
      govulncheck
 | 
			
		||||
      golangci-lint
 | 
			
		||||
      go-swag
 | 
			
		||||
      delve
 | 
			
		||||
 | 
			
		||||
      # clojure
 | 
			
		||||
      jre17_minimal
 | 
			
		||||
@ -99,13 +100,11 @@
 | 
			
		||||
 | 
			
		||||
      ### LSP's
 | 
			
		||||
      gopls
 | 
			
		||||
      nil # Nix LSP
 | 
			
		||||
      nil
 | 
			
		||||
      nodePackages_latest.bash-language-server
 | 
			
		||||
      openscad-lsp
 | 
			
		||||
      vscode-langservers-extracted # provides eslint, markdown, json, css, and html lsp
 | 
			
		||||
      python311Packages.python-lsp-server
 | 
			
		||||
      gopls
 | 
			
		||||
      delve
 | 
			
		||||
      yaml-language-server
 | 
			
		||||
      elixir-ls
 | 
			
		||||
 | 
			
		||||
@ -165,7 +164,6 @@
 | 
			
		||||
      gnome-disk-utility
 | 
			
		||||
      kdePackages.filelight
 | 
			
		||||
      hugo
 | 
			
		||||
      go-swag
 | 
			
		||||
      unstable.llama-cpp
 | 
			
		||||
      
 | 
			
		||||
      #
 | 
			
		||||
@ -176,33 +174,19 @@
 | 
			
		||||
      libsForQt5.qt5ct
 | 
			
		||||
      # Install fonts
 | 
			
		||||
      lato
 | 
			
		||||
      # (unstable.nerdfonts.override { fonts = [ "Iconsolata" "Hermit" "Overpass" ]; })
 | 
			
		||||
      unstable.nerd-fonts.hurmit
 | 
			
		||||
      unstable.nerd-fonts.overpass
 | 
			
		||||
      unstable.nerd-fonts.monaspace
 | 
			
		||||
      monaspace
 | 
			
		||||
# fonts.packages = [
 | 
			
		||||
#                ...
 | 
			
		||||
#                pkgs.nerd-fonts._0xproto
 | 
			
		||||
#                pkgs.nerd-fonts.droid-sans-mono
 | 
			
		||||
#              ]      recursive
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Home Manager is pretty good at managing dotfiles. The primary way to manage
 | 
			
		||||
  # plain files is through 'home.file'.
 | 
			
		||||
  home.file."${config.xdg.configHome}" = {
 | 
			
		||||
    source = ../../dotfiles;
 | 
			
		||||
    recursive = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # For applying custom styles
 | 
			
		||||
  # home.file.".mozilla/firefox/default" = {
 | 
			
		||||
  #   source = ../../misc/firefox_styles;
 | 
			
		||||
  #   recursive = true;
 | 
			
		||||
  # };
 | 
			
		||||
  # location where stylus data is kept
 | 
			
		||||
  # /home/nate/.mozilla/firefox/default/storage/default/moz-extension+++77a1d59f-183c-4439-b249-fdae98b7bd7b/idb
 | 
			
		||||
  # 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
 | 
			
		||||
@ -214,7 +198,6 @@
 | 
			
		||||
    XCURSOR_THEME = "Bibata-Modern-Classic";
 | 
			
		||||
    XCURSOR_SIZE = "24";
 | 
			
		||||
    HYPRCURSOR_THEME = "Bibata-Modern-Classic";
 | 
			
		||||
    # HYPRCURSOR_SIZE = "24";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Git setup
 | 
			
		||||
@ -238,11 +221,11 @@
 | 
			
		||||
  programs = {
 | 
			
		||||
    direnv = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      enableZshIntegration = true; # see note on other shells below
 | 
			
		||||
      enableZshIntegration = true;
 | 
			
		||||
      nix-direnv.enable = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    bash.enable = true; # see note on other shells below
 | 
			
		||||
    bash.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Zsh setup
 | 
			
		||||
@ -258,18 +241,40 @@
 | 
			
		||||
          '';
 | 
			
		||||
      };
 | 
			
		||||
      initContent = ''
 | 
			
		||||
          # direnv setup
 | 
			
		||||
          eval "$(direnv hook zsh)"
 | 
			
		||||
          # eval "$(ssh-agent)" >/dev/null
 | 
			
		||||
          # export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent
 | 
			
		||||
 | 
			
		||||
          # History
 | 
			
		||||
          HISTSIZE=10000
 | 
			
		||||
          SAVEHIST=10000
 | 
			
		||||
          setopt SHARE_HISTORY
 | 
			
		||||
          setopt APPEND_HISTORY
 | 
			
		||||
 | 
			
		||||
          # Work envs
 | 
			
		||||
          source ~/.vasion_env
 | 
			
		||||
          # bonus functions
 | 
			
		||||
          source ~/.config/zsh_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";
 | 
			
		||||
@ -277,6 +282,9 @@
 | 
			
		||||
          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 = {
 | 
			
		||||
 | 
			
		||||
@ -33,7 +33,7 @@
 | 
			
		||||
  # ];
 | 
			
		||||
 | 
			
		||||
  imports = [
 | 
			
		||||
      ../apps/firefox/firefox.nix
 | 
			
		||||
      ../../../shared/modules/apps/firefox/firefox.nix
 | 
			
		||||
  ];
 | 
			
		||||
  
 | 
			
		||||
  home.username = userName;
 | 
			
		||||
@ -58,12 +58,8 @@
 | 
			
		||||
    #
 | 
			
		||||
    dbeaver-bin
 | 
			
		||||
    helix
 | 
			
		||||
    # kakoune
 | 
			
		||||
    # flutter316
 | 
			
		||||
    docker
 | 
			
		||||
    docker-compose
 | 
			
		||||
    # fossil
 | 
			
		||||
    # fnc
 | 
			
		||||
    unstable.godot
 | 
			
		||||
    jq
 | 
			
		||||
    python310
 | 
			
		||||
 | 
			
		||||
@ -18,7 +18,9 @@
 | 
			
		||||
  # Use xanmod kernel. List kernels by running:
 | 
			
		||||
  # `nix repl`
 | 
			
		||||
  # > :l <nixpkgs>
 | 
			
		||||
  # > pkgs.linuxPackages
 | 
			
		||||
  # > pkgs.linuxPackages<Tab>
 | 
			
		||||
  # > ## Should display a list of available kernels
 | 
			
		||||
  # > :quit
 | 
			
		||||
  boot.kernelPackages = pkgs.linuxPackages_xanmod;
 | 
			
		||||
 | 
			
		||||
  fileSystems."/" =
 | 
			
		||||
 | 
			
		||||
@ -39,7 +39,7 @@ in
 | 
			
		||||
    ];
 | 
			
		||||
  
 | 
			
		||||
    nixpkgs.overlays = [
 | 
			
		||||
      inputs.nur.overlay
 | 
			
		||||
      inputs.nur.overlays.default
 | 
			
		||||
    ];
 | 
			
		||||
  
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -35,7 +35,7 @@
 | 
			
		||||
#  ];
 | 
			
		||||
 | 
			
		||||
  imports = [
 | 
			
		||||
      ../apps/firefox/firefox.nix
 | 
			
		||||
      ../../../shared/modules/apps/firefox/firefox.nix
 | 
			
		||||
  ];
 | 
			
		||||
  
 | 
			
		||||
  home.username = userName;
 | 
			
		||||
@ -332,7 +332,7 @@
 | 
			
		||||
          plugins = [ "fossil" "git" ];
 | 
			
		||||
          theme = "half-life";
 | 
			
		||||
      };
 | 
			
		||||
      initExtra = ''
 | 
			
		||||
      initContent = ''
 | 
			
		||||
          eval "$(direnv hook zsh)"
 | 
			
		||||
          export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -13,17 +13,18 @@ in
 | 
			
		||||
    config = lib.mkIf cfg.enable {
 | 
			
		||||
        programs.firefox = {
 | 
			
		||||
            # Add pipewire support
 | 
			
		||||
            package = (pkgs.wrapFirefox (pkgs.firefox-unwrapped.override { pipewireSupport = true;}) {});
 | 
			
		||||
            # package = (pkgs.wrapFirefox (pkgs.firefox-unwrapped.override { pipewireSupport = true;}) {});
 | 
			
		||||
            enable = true;
 | 
			
		||||
            profiles = {
 | 
			
		||||
                default = {
 | 
			
		||||
                    id = 0;
 | 
			
		||||
                    name = "default";
 | 
			
		||||
                    isDefault = true;
 | 
			
		||||
                    extensions = with pkgs; [
 | 
			
		||||
                    extensions.packages = with pkgs; [
 | 
			
		||||
                        nur.repos.rycee.firefox-addons.darkreader
 | 
			
		||||
                        nur.repos.rycee.firefox-addons.keepassxc-browser
 | 
			
		||||
                        nur.repos.crazazy.firefox-addons.ublock-origin
 | 
			
		||||
                        nur.repos.bandithedoge.firefoxAddons.stylus
 | 
			
		||||
                    ];
 | 
			
		||||
                    search = {
 | 
			
		||||
                        # Replace default firefox search engine config with this one
 | 
			
		||||
@ -46,12 +47,22 @@ in
 | 
			
		||||
                                icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
 | 
			
		||||
                                definedAliases = [ "@np" ];
 | 
			
		||||
                            };
 | 
			
		||||
                            "MySQL Docs" = {
 | 
			
		||||
                                urls = [{
 | 
			
		||||
                                    template = "https://dev.mysql.com/doc/search";
 | 
			
		||||
                                    params = [
 | 
			
		||||
                                        { name = "d"; value = "371"; }
 | 
			
		||||
                                        { name = "p"; value = "1"; }
 | 
			
		||||
                                        { name = "q"; value = "{searchTerms}"; }
 | 
			
		||||
                                    ];
 | 
			
		||||
                                }];
 | 
			
		||||
                                definedAliases = [ "@mysql" ];
 | 
			
		||||
                            };
 | 
			
		||||
                        };
 | 
			
		||||
                    };
 | 
			
		||||
                    settings = {
 | 
			
		||||
                       "browser.startup.blankWindow" = true;
 | 
			
		||||
                       "browser.startup.homepage" = "https://www.startpage.com/do/mypage.pl?prfe=11898a1adf7b7dfb587580692f358773a11ca25e993b8e077476641cec033319e15f2449c345f5be919fd0a082015c3e4ed23143bd4337512466c04c2999831a54abca2eaeb42963c63ff064";
 | 
			
		||||
                       "browser.newtabpage.enabled" = false;
 | 
			
		||||
                       "browser.search.region" = "US";
 | 
			
		||||
                       "browser.search.isUS" = true;
 | 
			
		||||
                       "distribution.searchplugins.defaultLocale" = "en-US";
 | 
			
		||||
@ -68,6 +79,8 @@ in
 | 
			
		||||
                       "extensions.formautofill.creditCards.enabled" = false;
 | 
			
		||||
                       "extensions.formautofill.addresses.enabled" = false;
 | 
			
		||||
                       "browser.toolbars.bookmarks.visibility" = "always";
 | 
			
		||||
                       # For applying userContent.css - not being used
 | 
			
		||||
                       # "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
 | 
			
		||||
                       # "browser.newtabpage.pinned" = [{
 | 
			
		||||
                       #   title = "NixOS";
 | 
			
		||||
                       #   url = "https://nixos.org";
 | 
			
		||||
 | 
			
		||||
@ -187,7 +187,7 @@ in
 | 
			
		||||
      listenAddresses = [ "*:631" ];
 | 
			
		||||
      allowFrom = [ "all" ];
 | 
			
		||||
      browsing = true;
 | 
			
		||||
      browserAddress = "192.168.1.169:631";
 | 
			
		||||
      # browserAddress = "192.168.1.169:631";
 | 
			
		||||
      defaultShared = true;
 | 
			
		||||
      openFirewall = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user