diff --git a/cleo.darwin.nix b/cleo.darwin.nix index 1c07d8d..ae13a23 100644 --- a/cleo.darwin.nix +++ b/cleo.darwin.nix @@ -28,11 +28,6 @@ # Add Homebrew to PATH environment.systemPath = [ "/opt/homebrew/bin" "/opt/homebrew/sbin" "/Users/matthew.bessette/.local/bin" ]; - # Biome config - environment.etc."biome.json".source = ./config.biome.json; - environment.etc."oxlintrc.json".source = ./config.oxlintrc.json; - # environment.etc."opencode.jsonc".source = ./config.opencode.jsonc; - system.primaryUser = "matthew.bessette"; users.users."matthew.bessette" = { name = "matthew.bessette"; @@ -84,6 +79,7 @@ "libreoffice" "obsidian" "postico" + "sublime-text" "spotify" "yubico-yubikey-manager" "zoom" diff --git a/cleo.home.nix b/cleo.home.nix index 886d623..cc90020 100644 --- a/cleo.home.nix +++ b/cleo.home.nix @@ -70,6 +70,19 @@ in }; }; + programs.starship = { + enable = true; + enableZshIntegration = true; + + settings = { + add_newline = false; + character = { + success_symbol = "[❯](bold green)"; + error_symbol = "[❯](bold red)"; + }; + }; + }; + # Automatically load the 1Password agent in your shell programs.zsh = { enable = true; @@ -79,12 +92,6 @@ in profileExtra = '' eval "$(/opt/homebrew/bin/brew shellenv)" ''; - oh-my-zsh.enable = true; - oh-my-zsh.theme = "robbyrussell"; - oh-my-zsh.plugins = [ - "git" - "npm" - ]; initContent = '' export JIRA_API_TOKEN=$(security find-generic-password -a "$USER" -s "jira-token" -w 2>/dev/null) @@ -109,6 +116,7 @@ in shellAliases = { ll = "ls -l"; + gst = "git status"; update = "sudo darwin-rebuild switch --flake ~/nixos#cleo-darwin"; laws = "aws --endpoint=http://localhost:4566"; dev = "nix develop -c $SHELL"; @@ -136,15 +144,59 @@ in prefix=${config.home.homeDirectory}/.npm-global '' ; + programs.ghostty = { + enable = true; + + # Automatically hooks shell history, title updates, and cwd tracking + enableBashIntegration = true; + enableZshIntegration = true; + enableFishIntegration = true; + + settings = { + # Visuals & Theme + theme = "catppuccin-mocha"; + font-family = "JetBrainsMono Nerd Font"; + font-size = 12; + + # Window Spacing + window-padding-x = 12; + window-padding-y = 12; + window-padding-balance = true; + + # UI Preferences + window-decoration = true; # Set to false if using a tiling window manager (Hyprland/i3) + gtk-single-instance = true; + confirm-close-surface = false; # Don't prompt when closing a pane + + # Cursor Customization + cursor-style = "block"; + cursor-style-blink = false; + + # Mouse & Scrolling + mouse-hide-while-typing = true; + scrollback-limit = 10000; + + # Keybindings (Alt/Super splits & tabs) + keybind = [ + "alt+shift+e=new_split:right" + "alt+shift+o=new_split:down" + "alt+w=close_surface" + "alt+t=new_tab" + "alt+1=goto_tab:1" + "alt+2=goto_tab:2" + "alt+3=goto_tab:3" + ]; + }; + }; + home.file.".config/1Password/ssh/agent.toml".source = ./config.agent.toml; # Stub Android SDK directory so ANDROID_HOME/platform-tools/adb resolves to # the adb binary installed by the android-platform-tools Homebrew cask. home.file."android-sdk/platform-tools/adb".source = config.lib.file.mkOutOfStoreSymlink "/opt/homebrew/bin/adb"; home.file."android-sdk/cmdline-tools/latest/bin/sdkmanager".source = config.lib.file.mkOutOfStoreSymlink "/opt/homebrew/bin/sdkmanager"; xdg.configFile."opencode/opencode.jsonc".source = config.lib.file.mkOutOfStoreSymlink "/Users/matthew.bessette/nixos/config.opencode.jsonc"; - xdg.configFile."claude/settings.json".source = config.lib.file.mkOutOfStoreSymlink "/Users/matthew.bessette/nixos/config.claude.json"; - xdg.configFile."claude/agents/plan.md".source = config.lib.file.mkOutOfStoreSymlink "/Users/matthew.bessette/nixos/claude.agents.plan.md"; - xdg.configFile."claude/agents/build.md".source = config.lib.file.mkOutOfStoreSymlink "/Users/matthew.bessette/nixos/claude.agents.build.md"; + xdg.configFile."oxlint/oxlintrc.json".source = config.lib.file.mkOutOfStoreSymlink "/Users/matthew.bessette/nixos/config.oxlintrc.json"; + xdg.configFile."biome/biome.json".source = config.lib.file.mkOutOfStoreSymlink "/Users/matthew.bessette/nixos/config.biome.json"; programs.tmux.enable = true; diff --git a/config.oxlintrc.json b/config.oxlintrc.json index e6d8137..73fcd39 100644 --- a/config.oxlintrc.json +++ b/config.oxlintrc.json @@ -15,6 +15,9 @@ "perf": "error" }, "rules": { + "react/exhaustive-deps": "error", + "import/no-extraneous-dependencies": "warn", + "import/no-duplicates": "warn", "unicorn/require-module-specifiers": "off", "no-await-in-loop": "warn", "typescript/no-extraneous-class": ["warn", { "allowWithDecorator": true }], diff --git a/config.vscode.settings.json b/config.vscode.settings.json index 7cde241..c7066c5 100644 --- a/config.vscode.settings.json +++ b/config.vscode.settings.json @@ -8,7 +8,7 @@ "editor.formatOnSave": true, "editor.defaultFormatter": "biomejs.biome", - "extensions.autoUpdate": false, + "extensions.autoUpdate": "off", "extensions.autoCheckUpdates": false, "extensions.ignoreRecommendations": false, "denyCommands": ["code --install-extension*"], @@ -62,8 +62,41 @@ "oxc.disableNestedConfig": true, "js/ts.updateImportsOnFileMove.enabled": "always", "js/ts.experimental.useTsgo": true, + "js/ts.tsdk.path": "~/.npm-global/lib/node_modules/typescript", "workbench.iconTheme": "vscode-icons", "update.mode": "none", "i18n-ally.displayLanguage": "en-US", - "remote.SSH.configFile": "~/.config/ssh.conf" + "remote.SSH.configFile": "~/.config/ssh.conf", + + "files.watcherExclude": { + "**/.git/objects/**": true, + "**/.git/subtree-cache/**": true, + "**/.DS_Store": true, + "**/.vscode": true, + "**/node_modules": true, + "**/dist": true, + "**/.next": true, + "**/.expo": true, + "**/coverage": true, + "**/staticfiles": true, + "**/.ruff_cache": true, + "**/__pycache__": true, + "**/__generated__": true, + "**/*.tsbuildinfo": true, + "**/.env": true, + "**/.envrc": true, + "**/logs": true, + "**/*.log": true, + "**/*.gz": true, + "**/android": true, + "**/ios": true, + "**/scripts/dev-data-loader/data/*.dump": true, + "**/frontends/cleo-app/src/scratch": true, + "**/frontends/cleo-app/checksum-local": true, + "**/earthly": true, + "**/infra-space/applications/terraform.tfstate": true, + "**/.venv": true, + "**/services/ory/config-management/kratos": true, + "**/services/ory/config-management/satosa": true + } }