█▀▀▀▀▀▀██▀▀▀▀▀▀▀█▀▀▀▀▀▀▀█▀▀▀▀▀▀▀█▀▀▀▀▀▀▀█▀▀▀█████▀▀▀▀▀▀▀█▀▀▀▀▀▀▀█ █ ▄ █ ▄ █▄▄ ▄▄█ ▄▄▄▄█▄▄ ▄▄█ █████ ▄▄▄▄█ ▄▄▄▄█ █ █ █ █ ███ ███ ███ ███ █████ █ █ █ ▀ █ ▀ ███ ███ █████▀▀ ▀▀█ ▀▀▀▀█ ▀▀▀▀█▀▀▀▀ █ █▄▄▄▄▄▄██▄▄▄▄▄▄▄███▄▄▄███▄▄▄█████▄▄▄▄▄▄▄█▄▄▄▄▄▄▄█▄▄▄▄▄▄▄█▄▄▄▄▄▄▄█
or whatchamacallit
- Overview
- Requirements
- Installation
- Deployment
- Terminal Configuration
- Tool Fetching
- Third-Party Notices
- License
dotfiles/ ├─ bin/ Platform-specific tools ├─ deploy/ Cross-platform deployment scripts ├─ font/ Bundled font archive and alphabet artwork ├─ komorebi/ Komorebi and WHKD configuration ├─ neovim/ Neovim configuration ├─ nushell/ Nushell configuration and modules ├─ opencode/ OpenCode configuration, instructions, and skills │ └─ skills/ │ ├─ phased-development/ Phased development workflow │ └─ read-paper/ Academic paper analysis workflow ├─ selecton/ Selecton configuration ├─ terminal/ Terminal configuration sources and generators │ ├─ ghostty/ Ghostty configuration generator │ └─ wt/ Windows Terminal settings generator ├─ wezterm/ WezTerm configuration └─ zellij/ Zellij configuration
- Git for:
- cloning the repository
- bootstrapping
lazy.nvim - using the
phased-developmentskill.
- Bash on Linux or macOS, or PowerShell on Windows.
jqwhen runningterminal/ghostty/ghostty.bash.wgetorcurlforfetch-tool.bash/ps1.
Clone the repository and enter its root directory:
git clone https://github.com/neur1n/dotfiles.git
cd dotfilesDeployment uses symbolic links on Linux and macOS. On Windows, directory profiles use junctions and file profiles use symbolic links.
# Linux and macOS
./deploy/deploy.bash <profile> [--dry-run] [--open]# Windows
.\deploy\deploy.ps1 <profile> [--dry-run] [--open]The deployers support the following profiles:
claudecodexkomorebi(Windows only)neovimnushellopencodeweztermzellij
--dry-run previews the directories and links without changing the system.
--open asks the platform's default GUI handler to open the deployment target;
it is skipped in remote sessions or when no GUI session is available.
The deployers create links rather than copying configuration files. They refuse to replace an existing destination that does not point to the expected source, and they do not create backups.
The main profile destinations are:
| Profile | Unix | Windows |
|---|---|---|
claude |
Existing ~/.claude |
Existing %USERPROFILE%\.claude |
codex |
Existing ~/.codex |
Existing %USERPROFILE%\.codex |
komorebi |
Not Available | %USERPROFILE% and %USERPROFILE%\.config |
neovim |
~/.config/nvim |
%LOCALAPPDATA%\nvim |
nushell |
~/.config/nushell or macOS ~/Library/Application Support/nushell |
%APPDATA%\nushell |
opencode |
~/.config/opencode |
%USERPROFILE%\.config\opencode |
wezterm |
~/.wezterm.lua and ~/.wezterm |
%USERPROFILE%\.wezterm.lua and %USERPROFILE%\.wezterm |
zellij |
~/.config/zellij |
%APPDATA%\Zellij\config |
The claude and codex profiles require their documented configuration
directories to already exist. The Windows deployer also requires the relevant
standard environment variables such as USERPROFILE, APPDATA, or
LOCALAPPDATA.
The terminal scripts combine a base configuration with shared font, color scheme, and theme data. They select available fonts and schemes, and Windows Terminal themes, at random when generating a configuration.
Generate a Ghostty configuration on Linux or macOS:
./terminal/ghostty/ghostty.bashIt writes to $XDG_CONFIG_HOME/ghostty/config.ghostty when
XDG_CONFIG_HOME is an absolute path, otherwise to
~/.config/ghostty/config.ghostty.
Generate Ghostty or Windows Terminal settings on Windows:
.\terminal\ghostty\ghostty.ps1
.\terminal\wt\wt.ps1The Windows scripts write to %LOCALAPPDATA%\ghostty\config.ghostty and
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json,
respectively.
The fetch helpers download the latest matching release archive for a target; they do not extract or install it.
# Linux or macOS
./bin/common/fetch-tool.bash <target> [destination]# Windows
.\bin\common\fetch-tool.ps1 <target> [destination]Available targets are:
bottomdeja-vufdfzfneovimnushellopencoderipgreptree-sitterzellijzoxide
The Bash helper supports Linux and macOS on x86_64 or aarch64/arm64; the PowerShell helper supports Windows x86_64 and ARM64.
Bundled binaries, copied configuration fragments, generated spell data, font files, and derived color palettes may have licenses independent of this repository. See THIRD_PARTY_NOTICES.md for their sources and license information.
Distributed under the MulanPSL-2.0 license. See LICENSE for details.
Why MulanPSL-2.0?
The Mulan Permissive Software License v2 (MulanPSL-2.0) may be less familiar than more widely used licenses. To provide clarity and context, the following table (cited from Choose a License) compares key aspects of MulanPSL v2 with popular licenses including Apache-2.0, BSD-3-Clause, and MIT.
| License | Commercial Use | Distribution | Modification | Patent Use | Private Use | Disclose Source | License and Copyright Notice | Network Use is Distribution | Same License | State Changes | Liability | Trademark Use | Warranty |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Apache-2.0 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🔵 | 🔵 | 🔴 | 🔴 | 🔴 | |||
| BSD-3-Clause | 🟢 | 🟢 | 🟢 | 🟢 | 🔵 | 🔴 | 🔴 | ||||||
| MIT | 🟢 | 🟢 | 🟢 | 🟢 | 🔵 | 🔴 | 🔴 | ||||||
| MulanPSL-2.0 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🔵 | 🔴 | 🔴 | 🔴 |
The drafter of the MulanPSL-2.0 license addressed similar concerns in this comment:
Thank you for raising this issue. Please allow me to explain. (I'm the one responsible for drafting MulanPSL-2.0 and getting it approved by OSI.)
Actually at the beginning we just say in the license, english and chinese version have the same legal effect (because we carefully translated the two versions word by word, sentence by sentence). However, the OSI community suggested that IN CASE, in case there is a conflict between the two languages, we should indicate which language prevails.
However, I must say, there is a tiny chance (close to zero) that this circumstance will happen. On the one hand, many people (including technical experts and lawyers) did careful proofreading between english version and chinese version; on the other hand, MulanPSL-2.0 is such a loose license that really doesn't have constrains, what conflict will you expect? We worry about conflict because we worry about legal risk that may bring, but since the legal terms are so loose we hardly see a risk.