Skip to content

raven2cz/nixos-config

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Raven2cz's Flakes

🖼️ Gallery




Screenshots last updated 2025-08-08

Hyprlock (EXPAND)




🗃️ Overview

📚 Layout

  • 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
  • wallpapers 🌄 wallpapers collection

📓 Components

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

📝 Shell aliases

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

🛠️ Scripts

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

⌨️ Keybinds

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

🚀 Installation

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.

1. Install NixOs

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.

2. Clone the repo

nix-shell -p git
git clone https://github.com/raven2cz/nixos-config
cd nixos-config

3. Install script

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

4. Reboot

After rebooting, the config should be applied, you'll be greeted by hyprlock prompting for your password.

5. Manual config

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.

Install script walkthrough

A brief walkthrough of what the install script does.

1. Get username

You will receive a prompt to enter your username, with a confirmation check.

2. Set username

The script will replace all occurrences of the default username CURRENT_USERNAME by the given one stored in $username

3. Create basic directories

The following directories will be created:

  • ~/Downloads
  • ~/Documents
  • ~/Pictures/wallpapers/others
  • ~/Projects

4. Copy the wallpapers

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.

5. Get the hardware configuration

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.

6. Choose a host (desktop / desktop-office / desktop-work / laptop / vm)

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).

7. Build the system

Lastly, it will build the system using nh, which includes both the flake config and home-manager config.

🔧 Troubleshooting & Extra Info

Volta

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:

  1. Remove the Volta directory from your home folder:
    rm -rf ~/.volta
  2. 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.

👥 Credits

Special thanks to Frost-Phoenix

I forked this project from: Frost-Phoenix/nixos-config

Other dotfiles that I learned / copy from:

About

❄️ Raven2cz / NixOs ❄️

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Nix 55.0%
  • Shell 36.7%
  • CSS 8.3%