Skip to content

H1rono/dotfiles

Repository files navigation

dotfiles

my dotfiles

Environments

With Home Manager

  • MacBook Air (Apple M1 Sillicon)
    • OS: macOS Sonoma 14

Without Home Manager

  • MacBook Air (Apple M1 Sillicon)
    • OS: macOS Sonoma 14
  • Raspberry Pi 4B
    • OS: Raspberry Pi OS
  • else
    • OS: Ubuntu Desktop 22.04

Dependencies

Please see manual installation of dependencies to install above tools manually.

Files' descriptions

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

This file is used for setting git config --global commit.template. There is my favorite list of gitmoji.

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

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

Quick installation

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).

Manual installation of dependencies

Note

LLVM, gh, lazygit, dust, and cargo-clean-all are not included in the commands below. This issue will be fixed soon.

in macOS

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.

in Ubuntu(-like) OS

with apt and cargo:

# 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.

general operation

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

reference

Article/link(s) about this repo