my dotfiles
- MacBook Air (Apple M1 Sillicon)
- OS: macOS Sonoma 14
- MacBook Air (Apple M1 Sillicon)
- OS: macOS Sonoma 14
- Raspberry Pi 4B
- OS: Raspberry Pi OS
- else
- OS: Ubuntu Desktop 22.04
- Home Manager (GitHub) (optional)
- LLVM
- shell: Zsh (GitHub mirror)
- terminal emulator: WezTerm (GitHub)
- Zsh plugin manager: Sheldon (GitHub)
- prompt customizing: Starship (GitHub)
- programming languages/tools manager: mise (GitHub)
- modern CLI tools
- rustup (optional)
- Required if setupping without Home Manager
- cargo
- subcommands: cargo-clean-all
- terminal multiplexer: tmux
- tmux plugin manager: tpm
- editor in terminal: Neovim (GitHub)
- font: FirgeNerd Console
Please see manual installation of dependencies to install above tools manually.
dotfiles
├── .github
│ ├── dependabot.yml -- Dependabot configuration file
│ └── workflows
│ ├── home-manager.yml -- GitHub Actions to check home-manager build
│ └── update-flake.yml -- GitHub Actions to update flake.lock automatically
├── .gitignore -- .gitignore
├── config -- ~/.config
│ ├── bat
│ │ └── config.conf -- default options of `bat`
│ ├── git
│ │ └── gitmessage.txt -- Git commit template
│ ├── mise
│ │ └── config.toml -- mise global configuration
│ ├── nvim
│ │ └── init.vim -- Neovim startup script
│ ├── sheldon
│ │ └── plugins.toml -- Sheldon plugin information
│ └── starship.toml -- Starship configuration
├── flake.lock -- lockfile of flake.nix
├── flake.nix -- entrypoint of Nix Flakes
├── home.nix -- configuration body of home-manager
├── install.sh -- install script of dotfiles
├── LICENSE -- GPL-3.0 licence
├── nix -- Nix helper functions
│ ├── fetchFlakeInput.nix
│ ├── readFlakeLock.nix
│ └── readInputInfo.nix
├── packages
│ ├── cargo-clean-all.nix -- Nix package file to install cargo-clean-all
│ ├── firge-nerd.nix -- Nix package file to install FirgeNerd Console
│ ├── mise.nix -- Nix package file to install mise
│ └── sheldon.nix -- Nix package file to install Sheldon
├── README.md -- this file
├── rust-toolchain.toml -- information of rust toolchain
├── rye
│ └── config.toml -- rye configuration file
├── tmux.conf -- tmux configuration
├── wezterm.lua -- WezTerm configuration
└── zshrc -- Zsh startup script
About gitmessage.txt
This file is used for setting git config --global commit.template
. There is my favorite list of gitmoji.
About rust-toolchain.toml
This file is currently used by home-manager (with fenix), to determine what version of rust is to be installed. Its layout follows Overrides - The rustup book #The toolchain file, which is used for per-directory overrides with rustup.
With rustup, same setup with this file is done by running:
# $TOOLCHAIN_CHANNEL corresponds to `channel = ...` in the file
$ rustup default $TOOLCHAIN_CHANNEL
# for each element of `components = [...]` in the file (bound to $COMPONENT)
$ rustup component add $COMPONENT
About install.sh
This script (currently) only makes or updates symbolic links from configuration files in this repository to corresponding ones in the specified directory ($HOME
by default), and updates global git configuration.
If you want to make the links into $HOME
directory, just run:
$ ./install.sh
If you want to make them into a specific directory, then:
# in absolute:
$ ./install.sh /path/to/dir
# or in relative:
$ ./install.sh ./some/dir
This requires Nix and Home Manager are installed. With these commands, you don't have to follow Manual installation below.
$ nix run nixpkgs#gnused -- -i -e "s/kh/$USER/" /path/to/dotfiles/flake.nix
$ home-manager switch --flake /path/to/dotfiles
warning: this way is only tested in M1 MacBook Air (system aarch64-darwin
).
Note
LLVM, gh, lazygit, dust, and cargo-clean-all are not included in the commands below. This issue will be fixed soon.
with Homebrew:
# install brew
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# install dependencies (zsh may be unnecessary)
$ brew install zsh sheldon starship tmux neovim mise bat zoxide jq fzf
$ brew tap wez/wezterm
$ brew install --cask wez/wezterm/wezterm
see also general operation below.
# requirements to complete installation
$ sudo apt install libssl-dev pkg-config build-essential cmake
# install rust (you may need to restart shell)
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# install with apt
$ sudo apt install zsh tmux neovim bat lsd zoxide jq fzf
# install with `cargo install`
$ cargo install sheldon starship mise
# install WezTerm (curl is required)
$ curl -LO https://github.com/wez/wezterm/releases/download/20230408-112425-69ae8472/wezterm-20230408-112425-69ae8472.Ubuntu22.04.deb
$ sudo apt-get install ./wezterm-20230408-112425-69ae8472.Ubuntu22.04.deb
$ rm ./wezterm-20230408-112425-69ae8472.Ubuntu22.04.deb
Warning
Since the commands above to install WezTerm only works in Ubuntu 22.04, please check Linux installation.
see also general operation below.
This is required after OS-specific operation. To install tpm, run:
$ git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
To activate mise, run:
$ /path/to/dotfiles/install.sh # if you haven't run `install.sh`
$ mise trust ~/.config/mise/config.toml
$ mise install
To install FirgeNerd, please follow instructions below.
- download
FirgeNerd_[version].zip
file from Releases · yuru7/Firge - unzip the zip file
- install
.ttf
files with font manager
- zsh — Homebrew Formulae
- WezTerm
- 📦 Installation - sheldon docs
- Starship#🚀-installation
- sharkdp/bat: A cat(1) clone with wings. #Installation
- lsd-rs/lsd: The next gen ls command #Installation
- Getting Started | mise-en-place
- ajeetdsouza/zoxide: A smarter cd command. Supports all major shells. #Installation
- Installing · tmux/tmux Wiki
- Installing Neovim · neovim/neovim Wiki
- tmux-plugins/tpm: Tmux Plugin Manager#installation
- Releases · yuru7/Firge