Personal Linux dotfiles and quality-of-life shell helpers.
These files are meant to be added to an existing setup, not blindly replace every config. The installer is idempotent, creates backups, records install state, and detects local edits before overwriting managed files.
Tested design targets:
- Fedora / Nobara / RHEL-like systems using
dnforyum - Debian / Ubuntu / Kali / Parrot using
apt - Arch / EndeavourOS / Manjaro using
pacman - Alpine using
apk - openSUSE using
zypper - macOS with Homebrew, partial support
git clone https://gitthegit.zerotwo.tech/ZeroTwo/DotFiles.git ~/github/DotFiles
cd ~/github/DotFiles
./install.sh --dry-run
./install.shReview the script first. Dotfiles change shell behavior.
curl -fsSL https://gitthegit.zerotwo.tech/ZeroTwo/DotFiles/raw/branch/main/install.sh | bash -s --One-line install without packages:
curl -fsSL https://gitthegit.zerotwo.tech/ZeroTwo/DotFiles/raw/branch/main/install.sh | bash -s -- --no-packagesOne-line dry run:
curl -fsSL https://gitthegit.zerotwo.tech/ZeroTwo/DotFiles/raw/branch/main/install.sh | bash -s -- --dry-run --no-packagesDry-run only:
./install.sh --dry-runInstall dotfiles but skip packages:
./install.sh --no-packagesUpdate aliases from the repo after pulling changes:
cd ~/github/DotFiles
git pull --ff-only
./install.sh --update-aliases --no-packagesForce overwrite of any managed files after backup:
./install.sh --force --no-packagesInstall optional zsh/Oh My Zsh/Powerlevel10k setup:
./install.sh --setup-zshRemove managed shell source blocks and managed alias files:
./uninstall.sh --dry-run
./uninstall.shThe installer manages these files:
~/.config/thetruezerotwo-dotfiles/shell/path.sh~/.config/thetruezerotwo-dotfiles/shell/functions.sh~/.bash_aliases~/.pentesting_aliases- shell source blocks in
~/.bashrcand~/.zshrc - helper files in
~/.config/thetruezerotwo-dotfiles/ - install state in
~/.local/state/thetruezerotwo-dotfiles/install.state - backups in
~/.local/state/thetruezerotwo-dotfiles/backups/
The installer checks if it has been run before. If a managed file is different from the repo version, it compares the current file against the last installed hash:
- same as last install + repo changed: update safely
- locally modified after install: skip unless
--update-aliasesor--force - missing file: reinstall
- already current: do nothing
.
├── install.sh
├── uninstall.sh
├── shell/
│ ├── bash_aliases
│ ├── pentesting_aliases
│ ├── functions.sh
│ └── path.sh
├── packages/
│ ├── common.txt
│ ├── alpine.txt
│ ├── arch.txt
│ ├── debian.txt
│ ├── fedora.txt
│ ├── git.txt
│ ├── macos.txt
│ └── opensuse.txt
├── .gitea/workflows/distro-checks.yml
├── scripts/ci-local.sh
├── wiki/
│ ├── Home.md
│ ├── User-Guide.md
│ ├── One-Line-Install.md
│ ├── Aliases-and-Functions.md
│ ├── Package-Helpers.md
│ ├── Network-Helpers.md
│ ├── Contributor-Guide.md
│ ├── Pull-Request-Guide.md
│ ├── CI-and-Testing.md
│ └── Troubleshooting.md
└── docs/
pac- cross-distro package-helper menupaci,pacu,pacr,pacs,pacinfo- install, upgrade, remove, search, and show package info across apt/dnf/yum/pacman/zypper/apk/brewpacinstalled,paca,paclo,pacdnc,pacfiles,pacwhoownsit,paclcf,pacexpl,pacimpl- package inventory, cache, ownership, config-file, and explicit/dependency helpers where supportednetinfo2- distro-safe network report using whatever tools are availableopenports- listening ports usingss,netstat, orlsofmyip- local IP summarypublicip- external IP using HTTPSmkcd- make a directory and enter itextract- extract many archive typesports- compact listening portsdnfu,aptu,pacup,zypup,brewu- package-manager helpers
- The installer does not store secrets.
- Do not commit
.ssh,.gnupg,.env, private keys, tokens, or machine-specific configs. - Review scripts before running curl-to-bash one-liners.
This repo includes Gitea Actions only. The workflow lives at .gitea/workflows/distro-checks.yml and checks the scripts on Fedora, Debian, Ubuntu, Arch, Alpine, and OpenSUSE containers. No .github directory is included.
Run the same basic checks locally with:
./scripts/ci-local.shRepository wiki-source pages are included in wiki/. Copy them into the Gitea wiki repo, or keep them in-tree as documentation. They cover install, user usage, aliases/functions, package helpers, network helpers, CI, contributing, pull requests, and troubleshooting.