mirror of
https://github.com/awatertrevi/macos-configuration.git
synced 2026-09-22 10:10:36 +00:00
Refresh configs, add update.fish, rewrite README as setup runbook
- Re-dump brewfile (adds postgresql@16, tree; drops typeit4me) - Refresh claude-settings.json, hosts, and serena_config.yml from machine - Add update.fish to actualise the copied configs in one go - Rewrite README as a complete ordered fresh-machine setup guide Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MN5eka2MuNJP9uCMdTda75
This commit is contained in:
115
README.md
115
README.md
@@ -1,54 +1,133 @@
|
|||||||
# macOS Configuration
|
# macOS Configuration
|
||||||
|
|
||||||
Personal macOS setup and configuration files.
|
Personal macOS setup. This README is a complete, ordered runbook for setting up a
|
||||||
|
fresh machine — follow it top to bottom and you end up with a working environment.
|
||||||
|
|
||||||
## Setup
|
Two kinds of files live here:
|
||||||
|
|
||||||
### 1. Install Homebrew
|
- **Symlinked** — the file in this repo *is* the live config (fish, starship, ssh,
|
||||||
|
kube, npm, NuGet). Edit either side, they're the same file.
|
||||||
|
- **Copied** — files that can't be symlinked (`/etc/hosts`, Claude/Serena settings,
|
||||||
|
the brewfile). Refresh them from the machine with `./update.fish`.
|
||||||
|
|
||||||
|
## Fresh machine setup
|
||||||
|
|
||||||
|
### 1. Install Command Line Tools and clone this repo
|
||||||
|
|
||||||
|
```bash
|
||||||
|
xcode-select --install
|
||||||
|
mkdir -p ~/Repositories/personal
|
||||||
|
git clone https://github.com/awatertrevi/macos-configuration.git ~/Repositories/personal/macos-configuration
|
||||||
|
cd ~/Repositories/personal/macos-configuration
|
||||||
|
```
|
||||||
|
|
||||||
|
(First clone happens over HTTPS; once 1Password + SSH are set up below, remotes work over SSH.)
|
||||||
|
|
||||||
|
### 2. Install Homebrew
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||||
|
eval "$(/opt/homebrew/bin/brew shellenv)"
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Install packages and apps
|
### 3. Install all packages, casks, and VS Code extensions
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
brew bundle --file=brewfile
|
brew bundle --file=brewfile
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Symlink configuration files
|
This installs everything: CLI tools (fish, gh, node, pnpm, uv, opentofu, …),
|
||||||
|
apps (1Password, iTerm2, Docker Desktop, Fork, VS Code, …), fonts, and
|
||||||
|
VS Code extensions.
|
||||||
|
|
||||||
|
### 4. Sign in to 1Password and enable the SSH agent
|
||||||
|
|
||||||
|
Open 1Password → Settings → Developer → enable **SSH Agent**. The ssh-config
|
||||||
|
symlinked below routes all SSH auth through the 1Password agent
|
||||||
|
(`~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock`), so the
|
||||||
|
private keys never live on disk — only the `.pub` files referenced in
|
||||||
|
`ssh-config` need to exist in `~/.ssh/` (1Password can export them, or copy
|
||||||
|
them from the old machine).
|
||||||
|
|
||||||
|
### 5. Symlink configuration files
|
||||||
|
|
||||||
|
Run from the repo root:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
mkdir -p ~/.config/fish ~/.kube ~/.nuget/NuGet
|
||||||
ln -sf $(pwd)/fish-config.fish ~/.config/fish/config.fish
|
ln -sf $(pwd)/fish-config.fish ~/.config/fish/config.fish
|
||||||
ln -sf $(pwd)/starship.toml ~/.config/starship.toml
|
ln -sf $(pwd)/starship.toml ~/.config/starship.toml
|
||||||
ln -sf $(pwd)/ssh-config ~/.ssh/config
|
ln -sf $(pwd)/ssh-config ~/.ssh/config
|
||||||
|
ln -sf $(pwd)/kube-config ~/.kube/config
|
||||||
|
ln -sf $(pwd)/.npmrc ~/.npmrc
|
||||||
|
ln -sf $(pwd)/NuGet.Config ~/.nuget/NuGet/NuGet.Config
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4. Set Fish as default shell
|
### 6. Restore the copied configs
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir -p ~/.claude ~/.serena
|
||||||
|
cp claude-settings.json ~/.claude/settings.json
|
||||||
|
cp serena_config.yml ~/.serena/serena_config.yml
|
||||||
|
sudo cp hosts /etc/hosts
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7. Set fish as the default shell
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
echo /opt/homebrew/bin/fish | sudo tee -a /etc/shells
|
echo /opt/homebrew/bin/fish | sudo tee -a /etc/shells
|
||||||
chsh -s /opt/homebrew/bin/fish
|
chsh -s /opt/homebrew/bin/fish
|
||||||
```
|
```
|
||||||
|
|
||||||
### 5. Configure iTerm2
|
### 8. Configure iTerm2
|
||||||
|
|
||||||
Import `iterm-profile.json` via iTerm2 preferences. Uses 1Password SSH agent for key management.
|
iTerm2 → Settings → Profiles → Other Actions → **Import JSON Profiles** →
|
||||||
|
select `iterm-profile.json`, then set it as the default profile.
|
||||||
|
(Requires the Fira Code Nerd Font installed in step 3.)
|
||||||
|
|
||||||
## Scripts
|
### 9. Install the .NET 10 SDK
|
||||||
|
|
||||||
### clone-resoftware-repos.fish
|
|
||||||
|
|
||||||
Clones all repositories from the `resoftware` GitHub organization, organized by customer number:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
fish install-dotnet10.fish
|
||||||
|
```
|
||||||
|
|
||||||
|
Installs into `~/.dotnet` via the official dotnet-install script and prints the
|
||||||
|
`fish_add_path` line to persist it if needed.
|
||||||
|
|
||||||
|
### 10. Clone work repositories
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gh auth login # authenticate the GitHub CLI first
|
||||||
fish clone-resoftware-repos.fish
|
fish clone-resoftware-repos.fish
|
||||||
```
|
```
|
||||||
|
|
||||||
Repos are cloned via SSH into `~/Repositories/{customer-number}/{repo-name}` based on each repo's `customer-number` custom property. Safe to re-run -- already cloned repos are skipped.
|
Clones every repo in the `resoftware` GitHub org via SSH into
|
||||||
|
`~/Repositories/{customer-number}/{repo-name}`, based on each repo's
|
||||||
|
`customer-number` custom property. Safe to re-run — existing clones are skipped.
|
||||||
|
|
||||||
## Updating the Brewfile
|
### 11. WireGuard tunnel to home network (optional)
|
||||||
|
|
||||||
|
`meerkoet-proxy.conf` is a WireGuard client config for the home (Fritz!Box)
|
||||||
|
network. Import it into the WireGuard app (installable from the App Store) via
|
||||||
|
**Import Tunnel(s) from File**.
|
||||||
|
|
||||||
|
### 12. Manual leftovers
|
||||||
|
|
||||||
|
Things not automated here:
|
||||||
|
|
||||||
|
- Sign in: iCloud, Chrome/Zen, Slack, Spark, Google Drive, Docker Desktop, Todoist.
|
||||||
|
- JetBrains Toolbox → sign in and install the IDEs you use.
|
||||||
|
- Grant permissions as apps ask (Bartender, BetterTouchTool, CleanShot, Mos, Cursr).
|
||||||
|
- Alfred / BetterTouchTool: restore licenses and sync/import preferences.
|
||||||
|
|
||||||
|
## Keeping this repo up to date
|
||||||
|
|
||||||
|
The symlinked files are always current by construction. Refresh the copied ones with:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
brew bundle dump --file=brewfile --force
|
./update.fish
|
||||||
```
|
```
|
||||||
|
|
||||||
|
It re-dumps the brewfile (`brew bundle dump --force`) and re-copies
|
||||||
|
`~/.claude/settings.json`, `~/.serena/serena_config.yml`, and `/etc/hosts` into
|
||||||
|
the repo. Review `git diff` afterwards and commit.
|
||||||
|
|||||||
86
brewfile
86
brewfile
@@ -1,61 +1,144 @@
|
|||||||
|
# Official Amazon AWS command-line interface
|
||||||
brew "awscli"
|
brew "awscli"
|
||||||
|
# Azure Storage data transfer utility
|
||||||
|
brew "azcopy"
|
||||||
|
# Clone of cat(1) with syntax highlighting and Git integration
|
||||||
brew "bat"
|
brew "bat"
|
||||||
|
# Play, record, convert, and stream select audio and video codecs
|
||||||
|
brew "ffmpeg"
|
||||||
|
# User-friendly command-line shell for UNIX-like operating systems
|
||||||
brew "fish"
|
brew "fish"
|
||||||
|
# Command-line fuzzy finder written in Go
|
||||||
brew "fzf"
|
brew "fzf"
|
||||||
|
# GitHub command-line tool
|
||||||
brew "gh"
|
brew "gh"
|
||||||
|
# CLI for Drive, Gmail, Calendar, Sheets, Docs, Chat, Admin, and more
|
||||||
|
brew "googleworkspace-cli"
|
||||||
|
# Open-source build automation tool based on the Groovy and Kotlin DSL
|
||||||
|
brew "gradle"
|
||||||
|
# CLI for Infisical
|
||||||
brew "infisical"
|
brew "infisical"
|
||||||
|
# Postgres C API library
|
||||||
brew "libpq"
|
brew "libpq"
|
||||||
|
# Open-source, cross-platform JavaScript runtime environment
|
||||||
brew "node"
|
brew "node"
|
||||||
|
# Development kit for the Java programming language
|
||||||
|
brew "openjdk@17"
|
||||||
|
# Development kit for the Java programming language
|
||||||
|
brew "openjdk@21"
|
||||||
|
# Drop-in replacement for Terraform. Infrastructure as Code Tool
|
||||||
brew "opentofu"
|
brew "opentofu"
|
||||||
|
# Fast, disk space efficient package manager
|
||||||
brew "pnpm"
|
brew "pnpm"
|
||||||
|
# PDF rendering library (based on the xpdf-3.0 code base)
|
||||||
|
brew "poppler"
|
||||||
|
# Object-relational database system
|
||||||
|
brew "postgresql@16", link: true
|
||||||
|
# Cross-shell prompt for astronauts
|
||||||
brew "starship"
|
brew "starship"
|
||||||
|
# SMTP command-line test tool
|
||||||
brew "swaks"
|
brew "swaks"
|
||||||
|
# Terminal multiplexer
|
||||||
brew "tmux"
|
brew "tmux"
|
||||||
|
# Display directories as trees (with optional color/HTML output)
|
||||||
|
brew "tree"
|
||||||
|
# Extremely fast Python package installer and resolver, written in Rust
|
||||||
brew "uv"
|
brew "uv"
|
||||||
|
# Library to create, extract, and modify Windows Imaging files
|
||||||
|
brew "wimlib"
|
||||||
|
# Feature-rich command-line audio/video downloader
|
||||||
|
brew "yt-dlp"
|
||||||
|
# Password manager that keeps all passwords secure behind one password
|
||||||
cask "1password"
|
cask "1password"
|
||||||
|
# Command-line interface for 1Password
|
||||||
|
cask "1password-cli"
|
||||||
|
# Application launcher and productivity software
|
||||||
cask "alfred"
|
cask "alfred"
|
||||||
|
# Command-line tools for building and debugging Android apps
|
||||||
|
cask "android-commandlinetools"
|
||||||
|
# Integrated CAD, CAM, CAE, and PCB software
|
||||||
|
cask "autodesk-fusion"
|
||||||
|
# Menu bar icon organiser
|
||||||
cask "bartender"
|
cask "bartender"
|
||||||
|
# Tool to customise input devices and automate computer systems
|
||||||
cask "bettertouchtool"
|
cask "bettertouchtool"
|
||||||
|
# Web debugging Proxy application
|
||||||
cask "charles"
|
cask "charles"
|
||||||
|
# Anthropic's official Claude AI desktop app
|
||||||
cask "claude"
|
cask "claude"
|
||||||
|
# Terminal-based AI coding assistant
|
||||||
cask "claude-code"
|
cask "claude-code"
|
||||||
|
# Tool to remove unnecessary files and folders from disk
|
||||||
cask "cleanmymac"
|
cask "cleanmymac"
|
||||||
|
# Screen capturing tool
|
||||||
cask "cleanshot"
|
cask "cleanshot"
|
||||||
|
# Customise mouse movements between multiple displays
|
||||||
cask "cursr"
|
cask "cursr"
|
||||||
|
# Drivers for DisplayLink docks, adapters and monitors
|
||||||
cask "displaylink"
|
cask "displaylink"
|
||||||
|
# App to build and share containerised applications and microservices
|
||||||
cask "docker-desktop"
|
cask "docker-desktop"
|
||||||
cask "font-fira-code-nerd-font"
|
cask "font-fira-code-nerd-font"
|
||||||
|
# GIT client
|
||||||
cask "fork"
|
cask "fork"
|
||||||
|
# Finder replacement and FTP, SFTP, WebDAV and Amazon s3 client
|
||||||
cask "forklift"
|
cask "forklift"
|
||||||
|
# Kubernetes IDE
|
||||||
cask "freelens"
|
cask "freelens"
|
||||||
|
# Free and open-source image editor
|
||||||
cask "gimp"
|
cask "gimp"
|
||||||
|
# Web browser
|
||||||
cask "google-chrome"
|
cask "google-chrome"
|
||||||
|
# Client for the Google Drive storage service
|
||||||
cask "google-drive"
|
cask "google-drive"
|
||||||
|
# Companion app for Home Assistant home automation software
|
||||||
cask "home-assistant"
|
cask "home-assistant"
|
||||||
cask "insomnium"
|
cask "insomnium"
|
||||||
|
# Terminal emulator as alternative to Apple's Terminal app
|
||||||
cask "iterm2"
|
cask "iterm2"
|
||||||
|
# JetBrains tools manager
|
||||||
cask "jetbrains-toolbox"
|
cask "jetbrains-toolbox"
|
||||||
|
# Explorer for Azure Storage
|
||||||
cask "microsoft-azure-storage-explorer"
|
cask "microsoft-azure-storage-explorer"
|
||||||
|
# Smooths scrolling and set mouse scroll directions independently
|
||||||
cask "mos"
|
cask "mos"
|
||||||
|
# Reverse proxy, secure introspectable tunnels to localhost
|
||||||
|
cask "ngrok"
|
||||||
|
# Knowledge base that works on top of a local folder of plain text Markdown files
|
||||||
cask "obsidian"
|
cask "obsidian"
|
||||||
|
# Finder Toolbar app to open the current directory in Terminal or Editor
|
||||||
cask "openinterminal"
|
cask "openinterminal"
|
||||||
|
# RAW photo processor
|
||||||
|
cask "rawtherapee"
|
||||||
|
# Email client
|
||||||
cask "readdle-spark"
|
cask "readdle-spark"
|
||||||
|
# Team communication and collaboration software
|
||||||
cask "slack"
|
cask "slack"
|
||||||
|
# Music streaming service
|
||||||
cask "spotify"
|
cask "spotify"
|
||||||
|
# Messaging app with a focus on speed and security
|
||||||
cask "telegram"
|
cask "telegram"
|
||||||
|
# Unpacks archive files
|
||||||
cask "the-unarchiver"
|
cask "the-unarchiver"
|
||||||
|
# To-do list
|
||||||
cask "todoist-app"
|
cask "todoist-app"
|
||||||
cask "typeit4me"
|
# PDF editor
|
||||||
cask "updf"
|
cask "updf"
|
||||||
|
# Open-source code editor
|
||||||
cask "visual-studio-code"
|
cask "visual-studio-code"
|
||||||
|
# Native desktop client for WhatsApp
|
||||||
cask "whatsapp"
|
cask "whatsapp"
|
||||||
|
# Connect to Windows
|
||||||
cask "windows-app"
|
cask "windows-app"
|
||||||
|
# Gecko based web browser
|
||||||
cask "zen"
|
cask "zen"
|
||||||
vscode "alefragnani.project-manager"
|
vscode "alefragnani.project-manager"
|
||||||
vscode "anthropic.claude-code"
|
vscode "anthropic.claude-code"
|
||||||
vscode "astro-build.astro-vscode"
|
vscode "astro-build.astro-vscode"
|
||||||
vscode "dbaeumer.vscode-eslint"
|
vscode "dbaeumer.vscode-eslint"
|
||||||
vscode "dracula-theme.theme-dracula"
|
vscode "dracula-theme.theme-dracula"
|
||||||
|
vscode "fwcd.kotlin"
|
||||||
|
vscode "github.vscode-github-actions"
|
||||||
vscode "hashicorp.terraform"
|
vscode "hashicorp.terraform"
|
||||||
vscode "ms-python.debugpy"
|
vscode "ms-python.debugpy"
|
||||||
vscode "ms-python.python"
|
vscode "ms-python.python"
|
||||||
@@ -63,5 +146,6 @@ vscode "ms-python.vscode-pylance"
|
|||||||
vscode "ms-python.vscode-python-envs"
|
vscode "ms-python.vscode-python-envs"
|
||||||
vscode "pkief.material-icon-theme"
|
vscode "pkief.material-icon-theme"
|
||||||
vscode "redhat.vscode-yaml"
|
vscode "redhat.vscode-yaml"
|
||||||
|
vscode "tomoki1207.pdf"
|
||||||
vscode "usernamehw.errorlens"
|
vscode "usernamehw.errorlens"
|
||||||
vscode "vue.volar"
|
vscode "vue.volar"
|
||||||
|
|||||||
@@ -1,9 +1,99 @@
|
|||||||
{
|
{
|
||||||
|
"env": {
|
||||||
|
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
|
||||||
|
},
|
||||||
|
"permissions": {
|
||||||
|
"defaultMode": "auto"
|
||||||
|
},
|
||||||
|
"model": "fable[1m]",
|
||||||
|
"hooks": {
|
||||||
|
"Notification": [
|
||||||
|
{
|
||||||
|
"hooks": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"command": "'/Users/trevi/Library/Application Support/Bartender/NotchBar/AgentStatus/hooks/claude-event-hook.sh' Waiting # notchbar-agents-claude-hook"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"PostToolUse": [
|
||||||
|
{
|
||||||
|
"hooks": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"command": "'/Users/trevi/Library/Application Support/Bartender/NotchBar/AgentStatus/hooks/claude-event-hook.sh' Auto # notchbar-agents-claude-hook"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"PostToolUseFailure": [
|
||||||
|
{
|
||||||
|
"hooks": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"command": "'/Users/trevi/Library/Application Support/Bartender/NotchBar/AgentStatus/hooks/claude-event-hook.sh' ToolFail # notchbar-agents-claude-hook"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"PreToolUse": [
|
||||||
|
{
|
||||||
|
"hooks": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"command": "'/Users/trevi/Library/Application Support/Bartender/NotchBar/AgentStatus/hooks/claude-event-hook.sh' Working # notchbar-agents-claude-hook"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"SessionEnd": [
|
||||||
|
{
|
||||||
|
"hooks": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"command": "'/Users/trevi/Library/Application Support/Bartender/NotchBar/AgentStatus/hooks/claude-event-hook.sh' Ended # notchbar-agents-claude-hook"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"SessionStart": [
|
||||||
|
{
|
||||||
|
"hooks": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"command": "'/Users/trevi/Library/Application Support/Bartender/NotchBar/AgentStatus/hooks/claude-event-hook.sh' Idle # notchbar-agents-claude-hook"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Stop": [
|
||||||
|
{
|
||||||
|
"hooks": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"command": "'/Users/trevi/Library/Application Support/Bartender/NotchBar/AgentStatus/hooks/claude-event-hook.sh' Idle # notchbar-agents-claude-hook"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"UserPromptSubmit": [
|
||||||
|
{
|
||||||
|
"hooks": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"command": "'/Users/trevi/Library/Application Support/Bartender/NotchBar/AgentStatus/hooks/claude-event-hook.sh' Working # notchbar-agents-claude-hook"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"enabledPlugins": {
|
"enabledPlugins": {
|
||||||
"frontend-design@claude-plugins-official": true,
|
"frontend-design@claude-plugins-official": true,
|
||||||
"serena@claude-plugins-official": true
|
"serena@claude-plugins-official": true
|
||||||
},
|
},
|
||||||
"env": {
|
"tui": "fullscreen",
|
||||||
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
|
"skipDangerousModePermissionPrompt": true,
|
||||||
}
|
"agentPushNotifEnabled": true,
|
||||||
|
"skipAutoPermissionPrompt": true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
|
# The following lines were added by Docker Desktop to add commands to your PATH.
|
||||||
|
export PATH="$PATH:/Users/trevi/.docker/bin"
|
||||||
|
# End of Docker Desktop section.
|
||||||
|
|
||||||
set -g fish_greeting
|
set -g fish_greeting
|
||||||
set -gx NUXT_TELEMETRY_DISABLED 1
|
set -gx NUXT_TELEMETRY_DISABLED 1
|
||||||
|
|
||||||
|
# User-installed command-line tools (including Hermes)
|
||||||
|
fish_add_path "$HOME/.local/bin"
|
||||||
|
|
||||||
if status is-interactive
|
if status is-interactive
|
||||||
starship init fish | source
|
starship init fish | source
|
||||||
set -gx LSCOLORS Exfxcxdxbxegedabagacad
|
set -gx LSCOLORS Exfxcxdxbxegedabagacad
|
||||||
|
|||||||
1
hosts
1
hosts
@@ -4,7 +4,6 @@
|
|||||||
# localhost is used to configure the loopback interface
|
# localhost is used to configure the loopback interface
|
||||||
# when the system is booting. Do not change this entry.
|
# when the system is booting. Do not change this entry.
|
||||||
##
|
##
|
||||||
|
|
||||||
127.0.0.1 localhost
|
127.0.0.1 localhost
|
||||||
255.255.255.255 broadcasthost
|
255.255.255.255 broadcasthost
|
||||||
::1 localhost
|
::1 localhost
|
||||||
|
|||||||
214
serena_config.yml
Normal file
214
serena_config.yml
Normal file
@@ -0,0 +1,214 @@
|
|||||||
|
# the language backend to use for code understanding and manipulation.
|
||||||
|
# Possible values are:
|
||||||
|
# * LSP: Use the language server protocol (LSP), spawning freely available language servers
|
||||||
|
# via the SolidLSP library that is part of Serena.
|
||||||
|
# * JetBrains: Use the Serena plugin in your JetBrains IDE.
|
||||||
|
# (requires the plugin to be installed and the project being worked on to be open
|
||||||
|
# in your IDE).
|
||||||
|
language_backend: LSP
|
||||||
|
|
||||||
|
# line ending convention to use when writing source files.
|
||||||
|
# Possible values: "lf" (Unix), "crlf" (Windows), "native" (platform default).
|
||||||
|
# Note that Serena's own files (e.g. memories and configuration files) always use native line endings.
|
||||||
|
# This setting can be overridden on a per-project basis in project.yml files.
|
||||||
|
line_ending: native
|
||||||
|
|
||||||
|
# whether to open a graphical window with Serena's logs.
|
||||||
|
# This is mainly supported on Windows and (partly) on Linux; not available on macOS.
|
||||||
|
# If you prefer a browser-based tool, use the `web_dashboard` option instead.
|
||||||
|
# Further information: https://oraios.github.io/serena/02-usage/060_dashboard.html
|
||||||
|
#
|
||||||
|
# Being able to inspect logs is useful both for troubleshooting and for monitoring the tool calls,
|
||||||
|
# especially when using the agno playground, since the tool calls are not always shown,
|
||||||
|
# and the input params are never shown in the agno UI.
|
||||||
|
# When used as MCP server for Claude Desktop, the logs are primarily for troubleshooting.
|
||||||
|
# Note: unfortunately, the various entities starting the Serena server or agent do so in
|
||||||
|
# mysterious ways, often starting multiple instances of the process without shutting down
|
||||||
|
# previous instances. This can lead to multiple log windows being opened, and only the last
|
||||||
|
# window being updated. Since we can't control how agno or Claude Desktop start Serena,
|
||||||
|
# we have to live with this limitation for now.
|
||||||
|
gui_log_window: false
|
||||||
|
|
||||||
|
# whether to start the Serena Dashboard, which provides detailed information on your Serena session,
|
||||||
|
# the current configuration and furthermore allows some settings to be conveniently modified on the fly.
|
||||||
|
# We strongly recommend to always enable this option!
|
||||||
|
# If you want to prevent the Dashboard window from being opened on launch,
|
||||||
|
# set `web_dashboard_open_on_launch` to false (see below).
|
||||||
|
# Further information: https://oraios.github.io/serena/02-usage/060_dashboard.html
|
||||||
|
web_dashboard: true
|
||||||
|
|
||||||
|
# the address the web dashboard will listen on (bind address).
|
||||||
|
web_dashboard_listen_address: 127.0.0.1
|
||||||
|
|
||||||
|
# whether to open the Dashboard window/browser tab when Serena starts (provided that `web_dashboard` is enabled).
|
||||||
|
# If set to false, you can still open the dashboard manually:
|
||||||
|
# * When using an interface that supports a tray icon (see setting `web_dashboard_interface`),
|
||||||
|
# you can conveniently open the dashboard from the system tray.
|
||||||
|
# * When using the `browser` interface (no tray icon), so you can only open the dashboard by
|
||||||
|
# a) telling the LLM to "open the dashboard" (provided that the open_dashboard tool is enabled) or by
|
||||||
|
# b) manually navigating to http://localhost:24282/dashboard/ in your web browser (actual port
|
||||||
|
# may be higher if you have multiple instances running; try ports 24283, 24284, etc.)
|
||||||
|
# Further information: https://oraios.github.io/serena/02-usage/060_dashboard.html
|
||||||
|
web_dashboard_open_on_launch: false
|
||||||
|
jetbrains_plugin_server_address: 127.0.0.1
|
||||||
|
|
||||||
|
# the minimum log level for the GUI log window and the dashboard (10 = debug, 20 = info, 30 = warning, 40 = error)
|
||||||
|
log_level: 20
|
||||||
|
|
||||||
|
# whether to trace the communication between Serena and the language servers.
|
||||||
|
# This is useful for debugging language server issues.
|
||||||
|
trace_lsp_communication: false
|
||||||
|
|
||||||
|
# advanced configuration option allowing to configure language server-specific options.
|
||||||
|
# Maps the language key to the options.
|
||||||
|
# Have a look at the docstring of the constructors of the LS implementations within solidlsp (e.g., for C# or PHP) to see which options are available.
|
||||||
|
# No documentation on options means no options are available.
|
||||||
|
ls_specific_settings: {}
|
||||||
|
|
||||||
|
# list of paths to ignore across all projects.
|
||||||
|
# Same syntax as gitignore, so you can use * and **.
|
||||||
|
# These patterns are merged additively with each project's own ignored_paths.
|
||||||
|
# Quote patterns that start with `*`, e.g. `"**/bin/**"`.
|
||||||
|
ignored_paths: []
|
||||||
|
|
||||||
|
# list of regex patterns which, when matched, mark a memory entry as read‑only.
|
||||||
|
# For example, "global/.*" will mark all global memories as read-only.
|
||||||
|
# You can extend the list on a per-project basis in the project.yml configuration file.
|
||||||
|
read_only_memory_patterns: []
|
||||||
|
|
||||||
|
# timeout, in seconds, after which tool executions are terminated
|
||||||
|
tool_timeout: 240
|
||||||
|
|
||||||
|
# list of tools to be globally excluded
|
||||||
|
excluded_tools: []
|
||||||
|
|
||||||
|
# list of optional tools (which are disabled by default) to be included
|
||||||
|
included_optional_tools: []
|
||||||
|
|
||||||
|
# fixed set of tools to use as the base tool set (if non-empty), replacing Serena's default set of tools.
|
||||||
|
# This cannot be combined with non-empty excluded_tools or included_optional_tools.
|
||||||
|
fixed_tools: []
|
||||||
|
|
||||||
|
# list of mode names to that are always to be included in the set of active modes.
|
||||||
|
# The full set of modes to be activated is base_modes + default_modes + added_modes,
|
||||||
|
# where added_modes can be defined by projects/CLI parameters.
|
||||||
|
# If this is undefined/empty, no base modes are included.
|
||||||
|
# See https://oraios.github.io/serena/02-usage/050_configuration.html#modes
|
||||||
|
base_modes:
|
||||||
|
default_modes:
|
||||||
|
- interactive
|
||||||
|
- editing
|
||||||
|
|
||||||
|
# Used as default for tools where the apply method has a default maximal answer length.
|
||||||
|
# Even though the value of the max_answer_chars can be changed when calling the tool, it may make sense to adjust this default
|
||||||
|
# through the global configuration.
|
||||||
|
default_max_tool_answer_chars: 150000
|
||||||
|
|
||||||
|
# the name of the token count estimator to use for tool usage statistics.
|
||||||
|
# See the `RegisteredTokenCountEstimator` enum for available options.
|
||||||
|
#
|
||||||
|
# By default, a very naive character count estimator is used, which simply counts the number of characters.
|
||||||
|
# You can configure this to TIKTOKEN_GPT4O to use a local tiktoken-based estimator for GPT-4o (will download tiktoken
|
||||||
|
# data files on first run), or ANTHROPIC_CLAUDE_SONNET_4 which will use the (free of cost) Anthropic API to
|
||||||
|
# estimate the token count using the Claude Sonnet 4 tokenizer.
|
||||||
|
token_count_estimator: CHAR_COUNT
|
||||||
|
|
||||||
|
# time budget (seconds) per tool call for the retrieval of additional symbol information
|
||||||
|
# such as docstrings or parameter information.
|
||||||
|
# (currently only used by LSP-based tools).
|
||||||
|
# If the budget is exceeded, Serena stops issuing further retrieval requests
|
||||||
|
# and returns partial info results.
|
||||||
|
# 0 disables the budget (no early stopping). Negative values are invalid.
|
||||||
|
# This is an advanced setting that can help alleviate problems with LSP servers
|
||||||
|
# that have a slow implementation of request_hover (clangd is one of those)
|
||||||
|
# or with tool calls that find very many symbols.
|
||||||
|
# Can be overridden in project.yml.
|
||||||
|
symbol_info_budget: 10
|
||||||
|
|
||||||
|
# template for the location of the per-project .serena data folder (memories, caches, etc.).
|
||||||
|
# Supports the following placeholders:
|
||||||
|
# $projectDir - the absolute path to the project root directory
|
||||||
|
# $projectFolderName - the name of the project directory
|
||||||
|
# Default: "$projectDir/.serena" (data stored inside the project directory)
|
||||||
|
# Example for a central location: "/projects-metadata/$projectFolderName/.serena"
|
||||||
|
project_serena_folder_location: "$projectDir/.serena"
|
||||||
|
|
||||||
|
# the list of registered project paths (updated automatically).
|
||||||
|
projects:
|
||||||
|
- /Users/trevi/Repositories/personal/xamarin-neo4j
|
||||||
|
|
||||||
|
# list of regex patterns for memories to completely ignore.
|
||||||
|
# Matching memories will not appear in list_memories or activate_project output
|
||||||
|
# and cannot be accessed via read_memory or write_memory.
|
||||||
|
# To access ignored memory files, use the read_file tool on the raw file path.
|
||||||
|
# This is useful for projects with large numbers of archived memory files.
|
||||||
|
# You can extend the list on a per-project basis in the project.yml configuration file.
|
||||||
|
# Example: ["_archive/.*", "_episodes/.*"]
|
||||||
|
ignored_memory_patterns: []
|
||||||
|
|
||||||
|
# defines the interface (application mode) used for the web dashboard (if enabled).
|
||||||
|
# If empty/null, use platform-dependent default. Otherwise, possible values:
|
||||||
|
# * browser: the dashboard is opened in the default browser (if `web_dashboard_open_on_launch` is true)
|
||||||
|
# This is supported on all platforms.
|
||||||
|
# * app: the dashboard is opened in a separate native-like app window with accompanying tray icon, whose
|
||||||
|
# lifecycle is tied to the Serena process.
|
||||||
|
# If `web_dashboard_open_on_launch` is false, the dashboard can be conveniently accessed via the tray icon.
|
||||||
|
# This is supported on Windows and macOS, but note that on macOS, where tray icons are very visible,
|
||||||
|
# this may result in too many icons being displayed when using multi-agent setups.
|
||||||
|
# * tray_manager: use a global tray icon to provide access to the dashboards of all running Serena instances,
|
||||||
|
# opening the dashboard in browser tabs when selected from the tray menu.
|
||||||
|
# This is EXPERIMENTAL. It is tested on Windows only. We will establish macOS support, but it is yet untested.
|
||||||
|
# On Linux, this cannot be universally supported, but it may work in some desktop environments.
|
||||||
|
# On NixOS, when using the package from flake.nix, both modern AppIndicator trays as well as
|
||||||
|
# older Xorg-/XEmbed-based trays should be supported.
|
||||||
|
# See https://oraios.github.io/serena/02-usage/060_dashboard.html
|
||||||
|
web_dashboard_interface:
|
||||||
|
|
||||||
|
# trusted hosts used to access the web dashboard.
|
||||||
|
# By default, only allow access via local addresses for security reasons.
|
||||||
|
# If you want to allow access from remote machines, add the hostname used to access the dashboard to this list.
|
||||||
|
# If the list is empty/undefined, all hosts are trusted.
|
||||||
|
web_dashboard_trusted_hosts:
|
||||||
|
- 127.0.0.1
|
||||||
|
- localhost
|
||||||
|
|
||||||
|
# command used to launch a JetBrains IDE on demand (only relevant when using the JetBrains language backend)
|
||||||
|
# If this is non-empty and, at project activation, the Serena JetBrains Plugin server instance corresponding
|
||||||
|
# to the project is not found, use this command to spawn a new instance.
|
||||||
|
# Specifically, if this is <cmd>, then `<cmd> <projectDir>` is launched.
|
||||||
|
# Provide the full path to the executable/script (e.g., "/usr/bin/idea" or "C:/Users/bob/AppData/Local/JetBrains/Toolbox/scripts/idea.cmd").
|
||||||
|
jetbrains_launch_command:
|
||||||
|
|
||||||
|
# list of glob patterns for project root directories that are considered trusted.
|
||||||
|
# Some project settings will only be applied if the project is trusted.
|
||||||
|
# A glob pattern can contain the following:
|
||||||
|
# * matches any sequence of characters except path separators
|
||||||
|
# ** matches any sequence of characters including path separators
|
||||||
|
# ? matches any single character except path separators
|
||||||
|
# [abc] matches any single character in the set (here: a, b, or c)
|
||||||
|
# Path separators are normalised internally, so on Windows, both / and \ can be used in the patterns.
|
||||||
|
# Example:
|
||||||
|
# trusted_project_path_patterns:
|
||||||
|
# - /home/user/projects/**
|
||||||
|
# - C:\Users\Anna\Dev\work\**
|
||||||
|
# The pattern "**" matches any project path, so it can be used to trust all projects.
|
||||||
|
trusted_project_path_patterns:
|
||||||
|
- '**'
|
||||||
|
|
||||||
|
# mapping from language server keys to integer priority values (higher = more preferred), which determine
|
||||||
|
# language server selection during automatic project creation and are used to break ties when multiple
|
||||||
|
# language servers match an equal number of source files.
|
||||||
|
# The priority values override Serena's default priorities:
|
||||||
|
# * 0 = experimental or secondary language servers, which are never auto-detected
|
||||||
|
# (e.g. `python_*` and `php_*` are "secondary"; also applies to non-programming languages like `json`)
|
||||||
|
# * 1 = supersets of other languages, which shall be preferred only if they match more files
|
||||||
|
# (e.g. `vue` and `svelte`, which are supersets of `typescript`)
|
||||||
|
# * 2 = default priority
|
||||||
|
# Example:
|
||||||
|
# ls_priorities:
|
||||||
|
# python: 0
|
||||||
|
# python_basedpyright: 3
|
||||||
|
# This example would achieve that `python_basedpyright` becomes the preferred language server for Python,
|
||||||
|
# giving it a high priority of 3, while the default Python language server is fully excluded from
|
||||||
|
# auto-detection with priority 0.
|
||||||
|
ls_priorities:
|
||||||
@@ -10,6 +10,13 @@ Host meerkoet01
|
|||||||
Port 22
|
Port 22
|
||||||
IdentityFile ~/.ssh/personal.pub
|
IdentityFile ~/.ssh/personal.pub
|
||||||
|
|
||||||
|
Host meerkoet02
|
||||||
|
Hostname 192.168.178.108
|
||||||
|
User Administrator
|
||||||
|
Port 22
|
||||||
|
IdentityFile ~/.ssh/meerkoet02
|
||||||
|
StrictHostKeyChecking no
|
||||||
|
|
||||||
Host meerkoet03
|
Host meerkoet03
|
||||||
Hostname 192.168.178.70
|
Hostname 192.168.178.70
|
||||||
User trevi
|
User trevi
|
||||||
|
|||||||
58
update.fish
Executable file
58
update.fish
Executable file
@@ -0,0 +1,58 @@
|
|||||||
|
#!/usr/bin/env fish
|
||||||
|
|
||||||
|
# Actualise the tracked config files from the current machine state.
|
||||||
|
#
|
||||||
|
# Most files in this repo are symlinked into place (see README), so they are
|
||||||
|
# always current. This script refreshes the ones that are plain copies and
|
||||||
|
# therefore drift out of date:
|
||||||
|
#
|
||||||
|
# * brewfile <- `brew bundle dump`
|
||||||
|
# * claude-settings.json <- ~/.claude/settings.json
|
||||||
|
# * hosts <- /etc/hosts
|
||||||
|
# * serena_config.yml <- ~/.serena/serena_config.yml
|
||||||
|
#
|
||||||
|
# Safe to re-run. Review the diff afterwards and commit what you want to keep.
|
||||||
|
|
||||||
|
set -l repo (dirname (status --current-filename))
|
||||||
|
cd $repo; or exit 1
|
||||||
|
|
||||||
|
echo "Actualising config in $repo"
|
||||||
|
echo
|
||||||
|
|
||||||
|
# --- Homebrew packages, casks and VS Code extensions -----------------------
|
||||||
|
if type -q brew
|
||||||
|
echo "==> Dumping Homebrew bundle -> brewfile"
|
||||||
|
brew bundle dump --file=brewfile --force
|
||||||
|
else
|
||||||
|
echo "==> Skipping brewfile (brew not found)"
|
||||||
|
end
|
||||||
|
|
||||||
|
# --- Claude Code settings --------------------------------------------------
|
||||||
|
set -l claude_settings "$HOME/.claude/settings.json"
|
||||||
|
if test -f $claude_settings
|
||||||
|
echo "==> Copying $claude_settings -> claude-settings.json"
|
||||||
|
cp $claude_settings claude-settings.json
|
||||||
|
else
|
||||||
|
echo "==> Skipping claude-settings.json ($claude_settings not found)"
|
||||||
|
end
|
||||||
|
|
||||||
|
# --- Serena config ---------------------------------------------------------
|
||||||
|
set -l serena_config "$HOME/.serena/serena_config.yml"
|
||||||
|
if test -f $serena_config
|
||||||
|
echo "==> Copying $serena_config -> serena_config.yml"
|
||||||
|
cp $serena_config serena_config.yml
|
||||||
|
else
|
||||||
|
echo "==> Skipping serena_config.yml ($serena_config not found)"
|
||||||
|
end
|
||||||
|
|
||||||
|
# --- /etc/hosts ------------------------------------------------------------
|
||||||
|
if test -f /etc/hosts
|
||||||
|
echo "==> Copying /etc/hosts -> hosts"
|
||||||
|
cp /etc/hosts hosts
|
||||||
|
else
|
||||||
|
echo "==> Skipping hosts (/etc/hosts not found)"
|
||||||
|
end
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Done. Review changes:"
|
||||||
|
echo " git -C $repo diff --stat"
|
||||||
Reference in New Issue
Block a user