There are a few main components to this project:
-
chezmoi - Chezmoi takes cares of the dotfiles and the configuration of the system. It is a tool that helps you manage your personal configuration files across multiple machines. Chezmoi is needed to apply the dotfiles and this repo follows chezmois structure
-
rebos - Rebos (Re)(B)uild(Os) is a neat command line tool that essentially adds nix-like reproduction to arch-based systems. It is a tool that helps you manage your system and install packages. To see the full list of packages that are installed and managed by rebos, you can check the packages
Warning
I highly recommend that you use it as template and edit the files to your liking before applying them (using your own GitHub username). Don't forget to come back here and star the project if you liked it!
GITHUB_USERNAME=Evangelospro # preferably change this to your own template and github username
git clone https://github.com/$GITHUB_USERNAME/dotfiles ~/.local/share/chezmoi
Important
Open up your local .chezmoi.jsonc.tmpl and edit all aplicable fields:
Warning
The below are a must to change, if you don't change them, you will probably not get what you want and have to spend a lot of time troubleshooting!
- isPersonal: This is kind of a setting you have to change or else you will receive some configurations that I deemed too personal, if I deemed that, then they will probably install some personal packages or configurations that you might not want
- isHeadless: This is whether the machine is running headless(No GUI) or not(e.g. a server), this is used to determine whether to install GUI packages or not
- isLaptop: This is whether the machine is a laptop or not, this is used to determine whether to install laptop specific packages or not
- isHacking: Personally, I like to play a lot of CTFs(capture the flag competitions), so I have A LOT of hacking tools installed for all the occasions, if you are not into that, you can set this to false, or at least check the hacking setup section to see if you want to install those tools or not.
- isAsus: This is whether the machine has Asus hardware or not, this is used to determine whether to install Asus specific packages or not(e.g. asusctl, rog-control-center ...)
- isNvidiaGPU: This is whether the machine has Nvidia hardware or not, this is used to determine whether to install Nvidia specific packages or not(e.g. nvidia drivers, cuda...)
- isAmdGPU: This is whether the machine has AMD gpu or not, this is used to determine whether to install AMD specific packages or not(e.g. amdgpu drivers...)
- isIntelGPU: This is whether the machine has Intel gpu or not, this is used to determine whether to install Intel specific packages or not(e.g. intel gpu drivers...)
bash install.sh
$MOD = SUPER
Keybinding | Action |
---|---|
$MOD + M | Exit Hyprland |
$MOD + Shift + R | Reload the window manager(hyprland) |
Keybinding | Action |
---|---|
$MOD + T | Launch Terminal |
$MOD + L | Lock Screen (swaylock) |
$MOD + Space | Launch launcher (walker) |
$MOD + V | Open clipboard manager (clipse) |
$MOD + C | Select color from screen (hyprpicker) and copy it |
$MOD + E | Open file manager (Nemo) |
$MOD + R | Resize window with slurp |
Keybinding | Action |
---|---|
ALT + F4 | Close focused window |
CTRL + SHIFT + ESC | Kill window clicked on (xkill or windows taskmanager like functionality) |
$MOD + F | Toggle fullscreen on focused window |
$MOD + Shift + F | Toggle floating on focused window |
$MOD + P | Arrange monitors (extend / duplicate) |
Keybinding | Action |
---|---|
prtsc | Take screenshot interactively (flameshot) |
$MOD + O | Copy text from screen with OCR (tesseract) |
Keybinding | Action |
---|---|
$MOD + AWSD | Move focus to the direction of the AWSD keys |
Keybinding | Action |
---|---|
$MOD + Arrow keys | Move focused window to the direction of the arrow keys |
Keybinding | Action |
---|---|
$MOD + SHIFT + Arrow keys | Move focused window to the monitor in the direction of the arrow key |
Keybinding | Action |
---|---|
$MOD + SHIFT + 1-9 | Move focused window to the workspace with the number pressed |
$MOD + 1-9 | Move to the workspace with the number pressed |
Keybinding | Action |
---|---|
$MOD + TAB | Cycle through workspaces forward |
$MOD + SHIFT + TAB | Cycle through workspaces backward |
Keybinding | Action |
---|---|
$MOD + Click and drag | Move window with mouse(you can even move across monitors) |
OS: Arch Linux
Display Server: Wayland
Color Scheme: Dracula
Notification Center: SwayNotificationCenter
Window Manager: Hyprland
Bar: Waybar
Application Launcher: Walker
Clipboard Managegment: wl-clipboard
- clipboard manager - A dmenu based clipboard manager that uses wl-clipboard and fuzzy finding to paste from clipboard history
Color Picker: Hyprpicker
OSD: swayosd - An on-screen display for capslock, numlock, volume, brightness and more
Terminal: Wezterm
Shell ZSH
Theme: Powerlevel10k
Font: FiraCode Nerd Font
Bindings: binds.zsh
Aliases: aliases.sh
Functions: functions.zsh
zsh-smartcache - Caches the output of commands such as $(eval program init) to speed up shell startup
thefuck - a magnificent app, that corrects errors in previous console commands.
direnv - It can load and unload environment variables depending on the current directory. (usually loads an adjacent .env from your local directory)
atuin - Stores shell history and allows you to search it with fuzzy finding and very quick shortcuts, significantly speeding up the proccess of you finding that one command that you typed a year ago.
highlighter - Essentially it allows you to highlight output of commands in the terminal (e.g echo "evangelospro" | h "pro")
dirhistory - Navigate directory history using ALT-LEFT and ALT-RIGHT
zoxide - A smarter cd
command that remember and adjusts to your habbits allowing you to navigate directories faster
zsh-mask - Masks secrets in your zsh history, so you don't accidentally leak them
zsh-autopair - A zsh plugin that automatically inserts closing brackets, parens, quotes, etc.
zsh-you-should-use - Simple zsh plugin that reminds you that you should use one of your existing aliases for a command you just typed.
zsh-auto-notify - β° ZSH plugin that automatically sends out a notification when a long running task has completed.
zsh-autosuggestions - Suggests commands as you type based on history and completions
fast-syntax-highlighting - Highlights commands as you type based on syntax
zsh-completions - Additional completion definitions for zsh
zsh-autocomplete - A fast, asynchronous autocomplete plugin for Zsh
zsh-autosuggestions - Fish-like autosuggestions for zsh
modern-unix-commands - Essentially replaces many well known unix commands and utilities with better or superior alternatives
- lsd - This project is a rewrite of GNU ls with lots of added features like colors, icons, tree-view, more formatting options etc...
- bat - A cat(1) clone with wings. With syntax highlighting and many more features while being a cat(1) drop in replacement
- format - A collection of additional utilities for bat(1) like prettyprinting / formatting with
format
- rigprep - ripgrep recursively searches directories for a regex pattern while respecting your gitignore (aliased to
rg
and boosted bybatgrep
for syntax highlighting) - fd - A simple, fast and user-friendly alternative to 'find'
- procs - A modern replacement for ps written in Rust
- hyperfine - A command-line benchmarking tool.
- btm - A cross-platform graphical process/system monitor with a customizable interface and a multitude of features (aliased to
top
) - tealdeer - A collection of simplified, example based and community-driven man pages. (aliased to
tldr
orhelp
) - dust - A more intuitive version of du written in Rust (aliased to
du
) - delta - A viewer for git and diff output (aliased to
diff
)
Theme: Powerlevel10k
On windows I use GlazeWM with the Win key remapped using PowerToys
winget install Microsoft.PowerToys --source winget
SO WIN -> ALT ALT -> WIN
Function | Action |
---|---|
update-burp | Update burp to the latest version |
angr | Run angr in a docker container |
extract-base64 | Extract base64 encoded strings from a file |
extract-urls | Extract urls from a file |
frida-init | Initialize frida server on android device |
frida-kill | Kill frida server on android device |
pwnenv | Create a pwn environment in a docker container |
pwnsetup | Setup a pwn template in the current directory |
scan | Use rustscan to scan a host |
curl | Normal curl but uses the burp proxy if it's running |
ferox-* | Feroxbust a host with a specific wordlist |
ffuf-* | Fuzz a host with a specific wordlist |
get-wordlist | Return a wordlist of either dns or dir according to the argument passed |
Burp is setup to auto update with the update zsh function above. As I like to use the jar file with my own loaders for obvious reasons, the latest jar file is fetched and placed in $HOME/.config/Burp/Burp-Loader and symlinked to burpsuite_pro.jar
An already setup android emulator can be started from the launcher using the android_emulator desktop file
- Please use the issue tracker to report any bugs, file feature requests or ask questions.
- Feel free to fork and contribute to this project. If you feel like you can add something to it or fix a bug, go for it.
- If you want to contribute to the project, please open a pull request.
- If you want to add a new feature, please create an issue first to discuss if it is a good idea or not.
- If you want to fix a bug, please also create an issue first.
- Consider leaving a star if you liked the project! Thanks!