Skip to content

Repository files navigation

dots

my dotfiles

install

git clone git@github.com:jorgeavaldez/dots.git ~/dots/
cd ~/dots
./install.sh

If a file already exists at the destination and isn't already symlinked correctly, the script will stop and show the differences so you can review them. To overwrite anyway:

./install.sh --force

This will symlink:

  • .zshenv~/.zshenv
  • .zshrc~/.zshrc
  • .zprofile~/.zprofile
  • .tmux.conf~/.tmux.conf
  • opencode.json~/.config/opencode/opencode.json
  • starship.toml~/.config/starship.toml
  • wezterm/~/.config/wezterm
  • mise/~/.config/mise
  • jj/config.toml~/.config/jj/config.toml
  • zellij/config.kdl~/.config/zellij/config.kdl
  • git/config~/.gitconfig

It also downloads the latest WezTerm terminfo definitions from upstream and installs them into ~/.terminfo so tools like less work when TERM=wezterm.

On Linux outside Termux, interactive Zsh shells start or reuse keychain and may request the SSH key passphrase. All Zsh sessions, including non-interactive SSH commands, reuse that unlocked agent until the machine or agent restarts.

Termux on Android

Install the Termux and Termux:API apps from the same source, configure SSH, and clone this repository to the path expected by the shared shell files:

git clone git@github.com:jorgeavaldez/dots.git ~/dots
cd ~/dots
./install.android.sh

The Android installer supports ARM64 Termux devices. It installs the native packages listed in termux/packages.txt, installs the npm packages in termux/npm-packages.txt, installs Herdr through its official installer, downloads the latest ARM64 musl Jujutsu release, and links the shared shell, tmux, Starship, Jujutsu, and Git configuration. Pi is installed through its officially supported Termux setup on native Termux Node.js. Existing files are preserved unless you explicitly run ./install.android.sh --force.

The installer deliberately does not install or configure mise, glibc compatibility, a PRoot Linux distribution, or managed language toolchains. It installs the small proot package only for the Jujutsu shared-storage wrapper described below. Android's Bionic libc directly recognizes en_US.UTF-8, so no locale package or locale-gen step is needed. On Termux, termux-services owns a stable SSH agent and interactive shells use keychain to load ~/.ssh/id_ed25519; non-interactive Zsh sessions reuse the same unlocked agent.

Jujutsu on Android shared storage

Android shared storage does not support the file locks required by Jujutsu's .jj metadata. The Android installer therefore puts the real binary at ~/.local/libexec/jj and installs a wrapper as the normal ~/.local/bin/jj command.

Private-storage repositories run the real binary directly. For a repository under /storage/emulated, initialize its private Jujutsu metadata with:

cd /storage/emulated/0/path/to/repository
jj android init

The wrapper keeps working files and the colocated .git repository on shared storage. It stores .jj under ~/.local/share/jj-android/workspaces and exposes it through PRoot only while jj runs. It also matches the PRoot process identity to the shared filesystem owner so Jujutsu trusts Git remote configuration. Normal subcommands and flags continue to use the same jj command. Unsafe jj git init calls on shared storage stop with the correct bootstrap instructions.

Back up ~/.local/share/jj-android with the rest of the Termux home. If that private state is lost, Jujutsu operations and unnamed history may not be recoverable from the shared Git repository.

shell formatting

Shell files are formatted with shfmt (installed via mise).

make format

Check formatting without modifying files:

make lint
# or
make check

See which files are included:

make shell-files

About

my dotfiles

Resources

Stars

0 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages