Skip to content

My dynamic and universal .dotfiles currently for Linux (Arch and Debian), macOS, WSL.

License

Notifications You must be signed in to change notification settings

av1155/.dotfiles

Repository files navigation

.dotfiles

This repository contains my personal configuration files (dotfiles) for setting up my Arch Linux with Hyprland window manager and other utilities. It also includes configurations for macOS and other environments.

Installation

To install and symlink the configuration files to your system:

  1. Clone this repository into your home directory:

    git clone [email protected]:av1155/.dotfiles.git ~/.dotfiles
  2. Install GNU Stow (if not installed) to manage the symlinks:

    sudo pacman -S stow     # For Arch Linux
    brew install stow       # For macOS (using Homebrew)
    sudo apt install stow   # For Debian Linux
  3. Navigate to the .dotfiles directory and run Stow:

    cd ~/.dotfiles
    stow --restow */

    If conflicts arise because symlinks already exist, or original files, you need to manually remove those files (or turn them into .bak's) and then run stow --restow */ from the ~/.dotfiles directory again.

    mv ~/.gitconfig ~/.gitconfig.bak
    # or
    rm ~/.gitconfig

    Run man stow to understand how it works before using it.

.dotfiles Structure

.
├── .stow-global-ignore
├── App-Configs
│   └── configs
│       ├── iTerm2_Profile
│       ├── KittyAppIconMac
│       └── MacOS-Bootstrap # Bootstrap script for setting up macOS development environment
├── Config
│   └── .config
│       ├── bat
│       ├── 'Code - OSS'
│       ├── colorls
│       ├── fastfetch
│       ├── hypr
│       ├── kanshi
│       ├── kitty
│       ├── lazygit
│       ├── tmux
│       └── yazi
├── Fonts
│   └── .fonts
│       ├── *.ttf
│       ├── OFL.txt
│       └── README.md
├── Formatting-Files
│   └── .clang-format
│   └── .prettierrc.json
├── Git
│   ├── .gitconfig
│   ├── .gitignore
│   └── .gitignore_global
├── Java-Jars
│   └── javaClasspath
│       ├── apiguardian-api-1.1.0.jar
│       ├── jlayer-1.0.1.jar
│       ├── jsoup-1.8.3.jar
│       ├── junit-jupiter-api-5.7.0.jar
│       ├── junit-jupiter-engine-5.7.0.jar
│       ├── junit-platform-commons-1.7.0.jar
│       ├── junit-platform-engine-1.7.0.jar
│       └── opentest4j-1.2.0.jar
├── macOS-Library
│   └── Library
│       └── 'Application Support'
├── README.md
├── SSH
│   └── .ssh
│       └── config
└── ZSH
    ├── .p10k.zsh
    ├── .zprofile
    ├── .zshrc
    └── fzf-git.sh
        ├── .github
        ├── fzf-git.sh
        └── README.md

Key Features

Universal Zsh Configuration (.zshrc)

The .zshrc file is designed to work across different systems like macOS, Linux (Arch, Raspberry Pi, etc.), and Windows (WSL). It detects the current OS and adjusts paths and tool installations accordingly, ensuring consistent behavior regardless of the platform.

  • Oh My Zsh: Configuration for managing Zsh and its plugins.
  • Powerlevel10k Theme: Installs and configures Powerlevel10k for a beautiful terminal prompt.
  • ZPlug: Manages Zsh plugins.
  • Fastfetch: Quickly fetches system information and displays it in the terminal.

MacOS Bootstrap Setup

This repository also includes a macOS bootstrap script located in the App-Configs/configs/MacOS-Bootstrap directory. This script automates the setup of a macOS development environment from zero, including the installation of essential development tools, Homebrew, AstroNvim, and more.

To learn more about this bootstrap and how to use it, refer to the MacOS-Bootstrap README.

Terminal Multiplexing (tmux)

Auto-starts a tmux session on terminal login, with custom session naming and attachment logic. This is ideal for maintaining persistent work environments.

Issues if tmux configuration does not load:

  1. Remove all Tmux plugins or previous symlinks
cd ~/.config/tmux/plugins
rm -rf *
  1. Reinstall Tmux Plugin Manager (tpm)
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
  1. Reload Tmux Configuration
tmux source-file ~/.config/tmux/tmux.conf
  1. Install Plugins Using tpm
Ctrl + A (your current prefix), then I

Neovim Configuration

  • The .zshrc includes automatic setup for Neovim's Python provider, ensuring that Neovim is always ready to work with Python and other environments.
  • Supports a dynamic Python executable path for pynvim.

FZF and Bat Integration

  • Enhanced file navigation with FZF (Fuzzy Finder) and bat (a better cat).
  • Custom aliases for efficient directory and file navigation.

Package Manager Support

The setup automatically configures the appropriate package manager for your system:

  • Paru/Yay on Arch Linux (for AUR support)
  • Homebrew on macOS (via brew)

Scripts

  • fzf-git.sh: Adds git integration to FZF for quickly browsing and managing git repositories.
  • Custom Shell Scripts: Includes scripts for managing Java projects, SQL URLs, updating packages, etc.

Color Schemes

  • Bat themes: Automatically installs the Catppuccin theme for the bat command.
  • Kitty: Dynamic configuration for font size and opacity depending on the OS.

Java Classpath

Automatically configures the Java classpath based on the JAR files found in the javaClasspath directory. This makes them available when compiling and running Java programs.

License

This project is licensed under the MIT License.

About

My dynamic and universal .dotfiles currently for Linux (Arch and Debian), macOS, WSL.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published