Skip to content
zenobi-usPublic

About

my workstation setup for linux, windows and mac

Topics

Resources

Stars

68 stars

Watchers

1 watching

Forks

Latest commit

 

History

2,115 Commits

Folders and files

Repository files navigation

My Dotfiles

Cross-platform configuration for:

  • Zsh on Linux and macOS
  • PowerShell on Windows
  • Development tools managed by mise

Getting started

Setup has two steps:

  1. Install mise.
  2. Bootstrap this repository.

Install mise

Linux and macOS

Run:

curl https://mise.run | sh

Open a new shell, then verify the installation:

mise --version

Windows

Open PowerShell as an administrator. Enable the required Windows features:

Enable-WindowsOptionalFeature `
  -Online `
  -FeatureName Microsoft-Windows-Subsystem-Linux,VirtualMachinePlatform `
  -All `
  -NoRestart

Restart Windows. Then open PowerShell and install mise:

winget install --exact --id mise.run

Open a new PowerShell window, then verify the installation:

mise --version

Bootstrap the dotfiles

The first bootstrap clones this repository to a stable local path. It then applies the platform-specific packages, tools, and dotfiles.

Linux and macOS

Run:

mise bootstrap \
  --from https://github.com/zenobi-us/dotfiles.git \
  --from-dir "$HOME/.local/share/dotfiles" \
  --yes

Open a new Zsh process after bootstrap changes the shell files:

exec zsh

The managed .zshenv sets MISE_GLOBAL_CONFIG_ROOT to the repository root. Future bootstrap runs do not need --from or --from-dir:

mise bootstrap --yes

Windows

Run in PowerShell:

mise bootstrap `
  --from https://github.com/zenobi-us/dotfiles.git `
  --from-dir "$HOME/.local/share/dotfiles" `
  --yes

Set the repository as the persistent mise global config root:

[Environment]::SetEnvironmentVariable(
  "MISE_GLOBAL_CONFIG_ROOT",
  "$HOME/.local/share/dotfiles",
  "User"
)

Open a new PowerShell window. Future bootstrap runs do not need --from or --from-dir:

mise bootstrap --yes

Common commands

Apply the full machine setup:

mise bootstrap --yes

Apply selected bootstrap parts, or refresh only the OMP agent setup:

mise bootstrap --only dotfiles --yes
mise bootstrap --only tools --yes
mise bootstrap --only task --yes
mise run bootstrap-agent

Inspect state without changing the machine:

mise bootstrap status
mise bootstrap status --missing
mise bootstrap --dry-run
mise bootstrap plan

View Markdown locally

Run markdown-view directly; its mise shebang starts Bun and installs pinned npm packages on first use:

markdown-view ./path/to/file.md
markdown-view ./path/to/file.md --port 4000

The command prints a loopback URL. Refresh the browser to render edits to the file. YAML frontmatter configures markdown-it options and plugins:

---
markdown:
  options:
    breaks: true
  plugins:
    markdown-it-anchor@9.2.0:
      tabIndex: false
---

Plugin keys use exact npm versions, and plugins must default-export a markdown-it function. Frontmatter plugins execute with your user permissions: only view files you trust. Local image assets are served from the file's directory and its subdirectories; other assets and hidden paths are not served.

Debug bootstrap configuration

Show the mise version:

mise --version

Show the active config files:

mise config ls

Show the combined bootstrap plan:

mise bootstrap plan

The repository stores its modules directly under .mise/conf.d/. Each direct child is a real directory, not a symlink to a separate files/ tree. Module names use <category>-<module>, such as devtools-agent, shells-zsh, and assets-fonts; secrets keeps its existing name.

Each module contains its platform-specific mise.<env>.toml files and the files referenced by those configurations. Keep module-local source paths relative to the module, and refer to another module by its flattened directory name.

After updating a checkout from the old layout, refresh deployed symlinks without reinstalling tools:

mise bootstrap --only dotfiles --yes

OMP shared-context autocomplete

The mise bootstrap links .mise/conf.d/devtools-omp/extensions to ~/.omp/agent/extensions. In OMP, type # to find files from the shared context associated with the current repository. Select an item to insert it as an @ attachment. OMP keeps its built-in @ file autocomplete.

OMP image editor

Run /reload after updating the extension. Use these commands in interactive OMP sessions:

Command Action
/image new [prompt] Open a blank drawing canvas.
/image annotate "path/to/image.png" [prompt] Annotate a PNG, JPEG, WebP, or GIF file.
/image annotate Annotate the latest image attached in the current session.

You can also ask the agent to open a canvas or let you annotate a screenshot. The image_editor tool accepts action: new or action: annotate, plus an optional file path. Without a path, annotation uses the latest user attachment. Attachment selection resets when you switch or branch sessions.

Draw in the browser, then click Done to return a PNG. The tool returns the image directly to the agent. Slash commands submit the image and optional prompt as a user message. Cancel returns no image. This editor supports manual drawing; it does not generate images from prompts.

The annotate: prefix still opens an attached image directly without an agent turn. The old annotation slash command has been replaced by /image.

About

my workstation setup for linux, windows and mac

Topics

Resources

Stars

68 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages