Skip to content

Latest commit

 

History

History
82 lines (62 loc) · 3.65 KB

File metadata and controls

82 lines (62 loc) · 3.65 KB

Profiles

Profiles are cumulative. Choose the smallest profile that covers the machine's role.

Profile Purpose
minimal Core shell, Zinit, Vim, and macOS terminal fonts
developer Minimal plus Neovim, Tree-sitter CLI, Node.js, Python, uv, GitHub CLI, FZF, Zoxide, Ripgrep, Eza, Bat, jq, and compiler tooling

developer is selected when --profile is omitted. Choose minimal explicitly for a lightweight shell setup without the larger development toolchain.

The developer profile installs a pinned mise binary and activates it for interactive Zsh. Selfishell keeps its defaults in ${XDG_CONFIG_HOME:-$HOME/.config}/selfishell/mise/selfishell.toml (which is symlinked to ~/.config/mise/conf.d/selfishell.toml so it is automatically loaded by mise); a project's mise.toml can select different tool versions.

Built-in mise tools use exact reviewed versions pinned in config/shared/mise.toml, the single source of truth for these versions. Projects remain free to override them in a local mise.toml. Updating these defaults requires a normal Selfishell release and never happens during shell startup.

Preview without changing the machine:

selfishell install --dry-run

Install or change the selected profile explicitly:

selfishell install --profile minimal --yes

The active profile is recorded in the XDG state directory. selfishell update uses that recorded profile to install missing Apt, Homebrew, and directly managed tools before updating configuration. Apt and Homebrew retain responsibility for versions of packages they already manage.

Profile package requirements have two failure policies:

  • required packages must be available and install successfully;
  • optional packages are recommended and attempted automatically, but an unavailable package or installation failure does not stop the rest of setup.

optional does not mean that Selfishell asks about each package. Ghostty is the separate interactive installation choice on macOS.

On macOS, interactive installation separately asks whether to install Ghostty and manage its configuration. --yes accepts that choice automatically. The choice is saved and reused by selfishell update.

Neovim workflow

The developer profile includes a pinned Neovim configuration whose leader key is Space. In Normal mode, press Space and pause to open which-key. The popup shows actions available in the current context; continue typing to narrow the list. Every Selfishell mapping has a description, so which-key remains aligned with the installed configuration without a separate shortcut list.

Lua, Python, Bash, sh, JSON, YAML, TOML, and Markdown LSP support appears when a configured server attaches. Neovim's standard LSP mappings remain available as well.

Additional LSP servers are installed with :LspInstall <server>, the standard mason-lspconfig command; installed servers auto-enable on the next matching buffer. For a server Selfishell does not manage by default, customize its settings by adding ~/.config/nvim/after/lsp/<server>.lua (for example after/lsp/rust_analyzer.lua), returning a config table Neovim's built-in LSP client merges in (see :help lsp-config).

New splits open to the right and below, four lines of context remain above and below the cursor when possible, commands that would discard unsaved changes ask for confirmation, and :substitute results preview in a split before they are applied. Bufferline shows open buffers across the top; use [b and ]b to move between them, and Space b d to close the current buffer without closing its editor window.

In the developer profile, vim resolves to Neovim while vi remains the system editor.