Screenshots last updated 2025-08-08
- flake.nix base of the configuration
- hosts 🌳 per-host configurations that contain machine specific configurations
- desktop 🖥️ Desktop specific configuration
- desktop-office 🏢 Office desktop specific configuration
- desktop-work 🖥️ Work desktop specific configuration
- laptop 💻 Laptop specific configuration
- vm 🗄️ VM specific configuration
- modules 🍱 modularized NixOS configurations
- core ⚙️ Core NixOS configuration
- home 🏠 my Home-Manager config
- wallpapers 🌄 wallpapers collection
NixOS + Hyprland | |
---|---|
Window Manager | Hyprland |
Bar | Waybar |
Application Launcher | rofi |
Notification Daemon | swaync |
Terminal Emulator | Kitty + Ghostty |
Shell | zsh + oh-my-zsh |
Text Editor | VSCode + Neovim + micro |
network management tool | NetworkManager + network-manager-applet |
System resource monitor | Btop |
Browser | Zen Browser + Firefox |
File Manager | Nautilus + yazi |
Fonts | Maple Mono |
Color Scheme | Gruvbox Dark Hard |
Cursor | Bibata-Modern-Ice |
Icons | Papirus-Dark |
Lockscreen | Hyprlock |
Image Viewer | viewnior |
Media Player | mpv |
Screenshot Software | grimblast |
Screen Recording | wf-recorder |
Color Picker | hyprpicker |
Theme Manager | Stylix |
Utils (EXPAND)
-
c
$\rightarrow$ clear
-
cd
$\rightarrow$ z
-
cat
$\rightarrow$ bat
-
nano
$\rightarrow$ micro
-
code
$\rightarrow$ code
-
diff
$\rightarrow$ delta --diff-so-fancy --side-by-side
-
less
$\rightarrow$ bat
-
y
$\rightarrow$ yazi
-
py
$\rightarrow$ python
-
ipy
$\rightarrow$ ipython
-
icat
$\rightarrow$ kitten icat
-
dsize
$\rightarrow$ du -hs
-
pdf
$\rightarrow$ tdf
-
open
$\rightarrow$ xdg-open
-
space
$\rightarrow$ ncdu
-
man
$\rightarrow$ BAT_THEME='default' batman
-
l
$\rightarrow$ eza --icons -a --group-directories-first -1
-
ll
$\rightarrow$ eza --icons -a --group-directories-first -1 --no-user --long
-
tree
$\rightarrow$ eza --icons --tree --group-directories-first
Nixos (EXPAND)
-
cdnix
$\rightarrow$ cd ~/nixos-config && code ~/nixos-config
-
ns
$\rightarrow$ nom-shell --run zsh
-
nix-test
$\rightarrow$ nh os test
-
nix-switch
$\rightarrow$ nh os switch
-
nix-update
$\rightarrow$ nh os switch --update
-
nix-clean
$\rightarrow$ nh clean all --keep 5
-
nix-search
$\rightarrow$ nh search
Git (EXPAND)
-
g
$\rightarrow$ lazygit
-
gi
$\rightarrow$ onefetch --number-of-file-churns 0 --no-color-palette
-
ga
$\rightarrow$ git add
-
gaa
$\rightarrow$ git add --all
-
gs
$\rightarrow$ git status
-
gf
$\rightarrow$ git fetch
-
gfp
$\rightarrow$ git fetch --prune
-
gb
$\rightarrow$ git branch
-
gm
$\rightarrow$ git merge
-
gd
$\rightarrow$ git diff
-
gpl
$\rightarrow$ git pull
-
gplo
$\rightarrow$ git pull origin
-
gps
$\rightarrow$ git push
-
gpsf
$\rightarrow$ git push --force
-
gpso
$\rightarrow$ git push origin
-
gpst
$\rightarrow$ git push --follow-tags
-
gcl
$\rightarrow$ git clone
-
gc
$\rightarrow$ git commit
-
gcm
$\rightarrow$ git commit -m
-
gca
$\rightarrow$ git commit --amend
-
gcaa
$\rightarrow$ git add --all && git commit --amend --no-edit
-
gcz
$\rightarrow$ git cz
-
gcfu
$\rightarrow$ git commit --fixup HEAD
-
gcma
$\rightarrow$ git add --all && git commit -m
-
gcza
$\rightarrow$ git add --all && git cz
-
gcfua
$\rightarrow$ git add --all && git commit --fixup HEAD
-
gtag
$\rightarrow$ git tag -ma
-
gch
$\rightarrow$ git checkout
-
gchb
$\rightarrow$ git checkout -b
-
glog
$\rightarrow$ git log --oneline --decorate --graph
-
glol
$\rightarrow$ git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset'
-
glola
$\rightarrow$ git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --all
-
glols
$\rightarrow$ git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --stat
All the scripts are in modules/home/scripts/scripts/
and are exported as packages in modules/home/scripts/default.nix
ascii.sh
Description: This script displays a comprehensive ASCII character table showing decimal, hexadecimal, and character representations in a formatted table layout.
Usage: ascii
compress.sh
Description: This script compresses a file or a folder into a tar.gz
archive which is created in the current directory with the name of the chosen file or folder.
Usage: compress <file>
or compress <folder>
extract.sh
Description: This script extracts tar.gz
archives in the current directory.
Usage: extract <archive_file>
google-chrome-profile.sh
Description: This script launches Google Chrome with a specific profile by name, automatically finding the correct profile directory.
Usage: google-chrome-profile <profile_name> [additional_args]
keybinds.sh
Description: This script displays all Hyprland keybindings in a rofi menu by parsing the Hyprland configuration file.
Usage: keybinds
list-audio-devices.sh
Description: This script lists all available audio devices including cards, output devices (sinks), and input devices (sources) with clear categorization and device information.
Usage: list-audio-devices
lofi.sh
Description: This script toggles a lo-fi music stream. If mpv is already playing, it kills the process; otherwise, it starts playing a lo-fi YouTube stream in the background.
Usage: lofi
poolsuite.sh
Description: This script toggles a poolsuite music playlist. If mpv is already playing, it kills the process; otherwise, it starts playing a poolsuite YouTube playlist in shuffle mode.
Usage: poolsuite
record.sh
Description: This script provides screen recording functionality with options to record as MP4 or GIF format, with the ability to select recording area and output optimization.
Usage: record
rofi-launcher.sh
Description: This script launches a rofi application launcher with a custom theme for quickly finding and launching applications.
Usage: rofi-launcher
rofi-power-menu.sh
Description: This script provides a rofi-based power menu with options to shutdown, reboot, or lock the system with confirmation dialogs.
Usage: rofi-power-menu
rofi-screenshot-menu.sh
Description: This script provides a rofi-based menu for taking screenshots with multiple capture modes and clipboard functionality. All capture modes automatically copy screenshots to the clipboard for immediate use.
Usage: rofi-screenshot-menu
Options:
- 📷 Area - Select an area and copy directly to clipboard
- 🖥️ Fullscreen - Capture entire screen and copy to clipboard
- 💾 Save to File - Choose between area or fullscreen capture and save to
~/Pictures/Screenshots/
- ✏️ Edit with Swappy - Capture and save, then open in Swappy image editor
- ⏰ Timer - Delayed fullscreen capture (5s or 10s countdown) and save to file
runbg.sh
Description: This script runs a provided command along with its arguments and detaches it from the terminal. Handy for launching apps from the command line without blocking it.
Usage: runbg <command> <arg1> <arg2> <...>
screenshot.sh
Description: This script provides basic screenshot functionality with options to copy to clipboard, save to file, or edit with Swappy. Screenshots are saved to ~/Pictures/Screenshots/
.
Usage: screenshot --copy
or screenshot --save
or screenshot --swappy
shutdown-script.sh
Description: This script provides a simple rofi-based power menu with options to shutdown, restart, or cancel the operation.
Usage: shutdown-script
toggle-blur.sh
Description: This script toggles the Hyprland blur effect. If the blur is currently enabled, it will be disabled, and if it's disabled, it will be turned on.
Usage: toggle-blur
toggle-float.sh
Description: This script toggles the floating state of the current window in Hyprland. If the window is currently tiled, it will be floated, and if it's floating, it will be tiled.
Usage: toggle-float
toggle-opacity.sh
Description: This script toggles the Hyprland opacity effect. If the opacity is currently set to 0.90, it will be set to 1, and if it's set to 1, it will be set to 0.90.
Usage: toggle-opacity
toggle-waybar.sh
Description: This script toggles the visibility of the Waybar status bar. If Waybar is currently visible, it will be hidden, and if it's hidden, it will be shown.
Usage: toggle-waybar
vm-start.sh
Description: This script starts a Windows 10 virtual machine using libvirt and switches to workspace 6. It then opens the VM in fullscreen mode using virt-viewer.
Usage: vm-start
wall-change.sh
Description: This script changes the wallpaper using swww with random transition effects (either any transition type or a wipe transition with 135-degree angle).
Usage: wall-change <wallpaper_path>
wallpaper-picker.sh
Description: This script provides a rofi-based wallpaper picker that allows you to browse and select wallpapers from your wallpaper directories. It supports both the main wallpaper folder and subdirectories.
Usage: wallpaper-picker
View all keybinds by pressing $mainMod F1
and wallpaper picker by pressing $mainMod w
. By default $mainMod
is the SUPER
key.
Keybindings
show keybinds list
$mainMod, F1, exec, keybinds
keybindings
$mainMod, Return, exec, [float; center; size 50% 50%] kitty
$mainMod SHIFT, Return, exec, kitty
$mainMod ALT, Return, exec, [fullscreen] kitty
$mainMod, B, exec, zen-beta
$mainMod, Q, killactive,
$mainMod, F, fullscreen, 0
$mainMod SHIFT, F, fullscreen, 1
$mainMod, G, exec, toggle-float
$mainMod, Space, exec, rofi-launcher
$mainMod SHIFT, D, exec, legcord --enable-features=UseOzonePlatform --ozone-platform=wayland
$mainMod SHIFT, Escape, exec, rofi-power-menu
$mainMod, P, pseudo,
$mainMod, X, togglesplit,
$mainMod, T, exec, toggle-opacity
$mainMod, E, exec, nautilus
$mainMod SHIFT, B, exec, toggle-waybar
$mainMod, C, exec, hyprpicker -a
$mainMod, W, exec, wallpaper-picker
$mainMod, N, exec, swaync-client -t -sw
$mainMod SHIFT, W, exec, vm-start
screenshot
,Print, exec, rofi-screenshot-menu
$mainMod, Print, exec, screenshot --save
$mainMod SHIFT, Print, exec, screenshot --swappy
switch focus
$mainMod, left, movefocus, l
$mainMod, right, movefocus, r
$mainMod, up, movefocus, u
$mainMod, down, movefocus, d
$mainMod, h, movefocus, l
$mainMod, j, movefocus, d
$mainMod, k, movefocus, u
$mainMod, l, movefocus, r
switch workspace
$mainMod, 1, workspace, 1
$mainMod, 2, workspace, 2
$mainMod, 3, workspace, 3
$mainMod, 4, workspace, 4
$mainMod, 5, workspace, 5
$mainMod, 6, workspace, 6
$mainMod, 7, workspace, 7
$mainMod, 8, workspace, 8
$mainMod, 9, workspace, 9
$mainMod, 0, workspace, 10
same as above, but move to the workspace
$mainMod SHIFT, 1, movetoworkspacesilent, 1 # movetoworkspacesilent
$mainMod SHIFT, 2, movetoworkspacesilent, 2
$mainMod SHIFT, 3, movetoworkspacesilent, 3
$mainMod SHIFT, 4, movetoworkspacesilent, 4
$mainMod SHIFT, 5, movetoworkspacesilent, 5
$mainMod SHIFT, 6, movetoworkspacesilent, 6
$mainMod SHIFT, 7, movetoworkspacesilent, 7
$mainMod SHIFT, 8, movetoworkspacesilent, 8
$mainMod SHIFT, 9, movetoworkspacesilent, 9
$mainMod SHIFT, 0, movetoworkspacesilent, 10
$mainMod CTRL, c, movetoworkspace, empty
window control
-
$mainMod SHIFT, left, movewindoworgroup, l
-
$mainMod SHIFT, right, movewindoworgroup, r
-
$mainMod SHIFT, up, movewindoworgroup, u
-
$mainMod SHIFT, down, movewindoworgroup, d
-
$mainMod SHIFT, h, movewindoworgroup, l
-
$mainMod SHIFT, j, movewindoworgroup, d
-
$mainMod SHIFT, k, movewindoworgroup, u
-
$mainMod SHIFT, l, movewindoworgroup, r
-
$mainMod CTRL, left, resizeactive, -80 0
-
$mainMod CTRL, right, resizeactive, 80 0
-
$mainMod CTRL, up, resizeactive, 0 -80
-
$mainMod CTRL, down, resizeactive, 0 80
-
$mainMod CTRL, h, resizeactive, -80 0
-
$mainMod CTRL, j, resizeactive, 0 80
-
$mainMod CTRL, k, resizeactive, 0 -80
-
$mainMod CTRL, l, resizeactive, 80 0
-
$mainMod ALT, left, moveactive, -80 0
-
$mainMod ALT, right, moveactive, 80 0
-
$mainMod ALT, up, moveactive, 0 -80
-
$mainMod ALT, down, moveactive, 0 80
-
$mainMod ALT, h, moveactive, -80 0
-
$mainMod ALT, j, moveactive, 0 80
-
$mainMod ALT, k, moveactive, 0 -80
-
$mainMod ALT, l, moveactive, 80 0
window tabbed grouping
$mainMod SHIFT, T, togglegroup # toggle tabbed group
$mainMod ALT, left, changegroupactive, b # change active tab back
$mainMod ALT, right, changegroupactive, f # change active tab forward
$mainMod ALT, j, changegroupactive, b # change active tab back
$mainMod ALT, l, changegroupactive, f # change active tab forward
mouse bindings
$mainMod, mouse:274, movewindow
$mainMod SHIFT, mouse:274, resizewindow
media and volume controls
,XF86AudioPlay,exec, playerctl play-pause
,XF86AudioNext,exec, playerctl next
,XF86AudioPrev,exec, playerctl previous
,XF86AudioStop, exec, playerctl stop
$mainMod, mouse_down, workspace, e-1
$mainMod, mouse_up, workspace, e+1
Caution
Applying custom configurations, especially those related to your operating system, can have unexpected consequences and may interfere with your system's normal behavior. While I have tested these configurations on my own setup, there is no guarantee that they will work flawlessly for you. I am not responsible for any issues that may arise from using this configuration.
Note
It is highly recommended to review the configuration contents and make necessary modifications to customize it to your needs before attempting the installation.
First install nixos using any graphical ISO image.
Note
Only been tested using the Gnome graphical installer and choosing the No desktop
option during installation.
nix-shell -p git
git clone https://github.com/raven2cz/nixos-config
cd nixos-config
Caution
For some computers, the default rebuild command might get stuck due to CPU cores running out of RAM. To fix that modify the install script line: sudo nixos-rebuild switch --flake .#${HOST}
to sudo nixos-rebuild switch --cores <less than your max number of cores> --flake .#${HOST}
Tip
As it is better to know what a script does before running it, you are advised to read it or at least see the Install script walkthrough section before execution.
Execute and follow the installation script :
./install.sh
After rebooting, the config should be applied, you'll be greeted by hyprlock prompting for your password.
Even though I use home manager and Stylix for automated theming, there is still a little bit of manual configuration to do:
- Enable Discord theme (in Discord settings under VENCORD > Themes).
- Configure the browser (some browser configuration is done automatically for firefox & zen).
- Change the git account information in
./modules/home/git.nix
programs.git = {
...
userName = "raven2cz";
userEmail = "[email protected]";
...
};
Note: With the addition of Stylix, most theming is handled automatically across the system, including colors, fonts, and icons. The system will consistently apply the theme to supported applications.
A brief walkthrough of what the install script does.
You will receive a prompt to enter your username, with a confirmation check.
The script will replace all occurrences of the default username CURRENT_USERNAME
by the given one stored in $username
The following directories will be created:
~/Downloads
~/Documents
~/Pictures/wallpapers/others
~/Projects
Then the wallpapers will be copied into ~/Pictures/wallpapers/others
which is the folder in which the wallpaper-picker.sh
script will be looking for them.
It will also automatically copy the hardware configuration from /etc/nixos/hardware-configuration.nix
to ./hosts/${host}/hardware-configuration.nix
so that the hardware configuration used is yours and not the default one.
Now you will need to choose the host you want. It depends on whether you are using a desktop, office desktop, work desktop, laptop, or VM (although VM can be really buggy).
Lastly, it will build the system using nh, which includes both the flake config and home-manager config.
Description: Volta is a JavaScript tool manager that allows you to easily install and switch between different versions of Node.js, npm, and other JavaScript command-line tools.
Issue: Tool installed via Volta but not available in PATH
Solution:
- Remove the Volta directory from your home folder:
rm -rf ~/.volta
- Reinstall the tool using Volta:
volta install <tool-name>
This will reset Volta's local configuration and properly reinstall the tool with correct PATH integration.
Special thanks to Frost-Phoenix
I forked this project from: Frost-Phoenix/nixos-config
Other dotfiles that I learned / copy from:
-
Nix Flakes
- nomadics9/NixOS-Flake
- samiulbasirfahim/Flakes: General flake / files structure
- justinlime/dotfiles: Mainly waybar (old design)
- skiletro/nixfiles: Vscodium config (that prevent it to crash)
- fufexan/dotfiles
- tluijken/.dotfiles: base rofi config
- mrh/dotfiles: base waybar config
-
README