This repository contains a collection of dotfiles and a powerful, automated script to set up a consistent development environment across multiple Debian and Arch-based Linux distributions. The setup is designed to be non-interactive and profile-based, allowing for easy customization.
- Automated & Non-Interactive: The
setup.shscript runs without requiring user input, making it ideal for automated provisioning. - Profile-Based Installation: Install only what you need. The setup is modularized into profiles:
default: Core tools, Zsh, Tmux, and Neovim. (Always installed)dev: Development tools like Docker, Node.js, and the Gemini CLI.rev: Reverse engineering tools like Ghidra and Joern.pwn: Penetration testing tools and SSH hardening.
- Cross-Distro Support: Works on Debian, Ubuntu, Kali, Parrot, and Arch Linux.
- Reproducible Environments: A Docker-based testing system is included to validate the setup script on clean installations of Ubuntu, Arch, and Kali.
- Comprehensive Tooling: Includes configurations for Zsh, Neovim (with Lua and lazy.nvim), Tmux, Alacritty, and more.
-
Clone the repository:
git clone https://github.com/mm4rks/dotfiles.git ~/.dotfiles -
Run the setup script:
Change into the
~/.dotfilesdirectory and execute thesetup.shscript with the desired profiles.cd ~/.dotfiles chmod +x setup.sh
Examples:
-
Default installation:
./setup.sh
-
Default + Developer tools:
./setup.sh dev
-
Install everything and harden SSH:
# Replace "ssh-ed25519 AAAA..." with your actual public key ./setup.sh all --ssh-key "ssh-ed25519 AAAA..."
-
-
default: (Implicitly installed)- Core utilities:
git,zsh,tmux,eza,bat,fzf,ripgrep. - Neovim (latest AppImage) with a custom Lua configuration.
- Nerd Font (FiraMono).
- Stows configuration for
zsh,tmux,git,nvim, etc.
- Core utilities:
-
dev:- Docker and Docker Compose.
- Node.js (LTS) and
pure-prompt. - Gemini CLI (
@google/gemini-cli@nightly).
-
rev:- Ghidra, Joern, Semgrep, and
flare-floss. - Requires JDK 21 (will be installed automatically).
- Ghidra, Joern, Semgrep, and
-
pwn:- NetExec.
- SSH server hardening (disables password authentication). Requires providing a public key via the
--ssh-keyflag.
The integrity of the setup.sh script is verified across multiple distributions using Docker. The test_runner.sh script automates this process.
To run the tests:
./test_runner.shThis will build Docker images for Ubuntu, Arch, and Kali, and then execute the setup.sh script within each container to ensure it completes successfully.
GNU Stow is used to manage symlinks for the configuration files.
-
Create symlinks:
# Stow all packages stow zsh tmux git nvim alacritty ... # Stow a specific package stow nvim
-
Remove symlinks:
# Un-stow all packages stow -D zsh tmux git nvim alacritty ... # Un-stow a specific package stow -D nvim