pain and suffering

This commit is contained in:
tulg 2025-10-18 17:35:04 +03:00
commit 510db0f1d4
42 changed files with 2150 additions and 0 deletions

0
README.md Normal file
View file

35
config/hypr/hypridle.conf Normal file
View file

@ -0,0 +1,35 @@
general {
lock_cmd = pidof hyprlock || hyprlock
# avoid starting multiple hyprlock instances.
before_sleep_cmd = loginctl lock-session # lock before suspend.
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
}
listener {
timeout = 150 # 2.5min.
on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor.
on-resume = brightnessctl -r # monitor backlight restore.
}
# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight.
listener {
timeout = 150 # 2.5min.
on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight.
on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight.
}
listener {
timeout = 300 # 5min
on-timeout = loginctl lock-session # lock screen when timeout has passed
}
listener {
timeout = 330 # 5.5min
on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired.
}
listener {
timeout = 1800 # 30min
on-timeout = systemctl suspend # suspend pc
}

354
config/hypr/hyprland.conf Normal file
View file

@ -0,0 +1,354 @@
# #######################################################################################
# AUTOGENERATED HYPR CONFIG.
# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT,
# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
# #######################################################################################
#
# Please note not all available settings / options are set here.
# For a full list, see the wiki
#
# autogenerated = 1 # remove this line to remove the warning
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor = eDP-1, 1920x1080@60.02000, 0x0, 1.00
monitor = Virtual-1, 1920x1080,0x0, 1
#monitor = DP-1, 1920x1080@60, 0x0, 1
#monitor = HDMI-A-1, 1920x1080@60.02000, 0x0, 1
#monitor
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
# Execute your favorite apps at launch
#exec-once = garuda-welcome
# Add networkmanager applet to tray in waybar
exec-once = nm-applet --indicator
# Set keyboard layout
#exec-once = .local/bin/garuda-locale.sh
exec-once = NetworkManager
# Set monitor values. For own values, please comment with #
#exec-once = .local/bin/mon.sh
exec-once = swww-daemon
# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =
numlock_by_default= true
follow_mouse = 1
touchpad {
#natural_scroll = true
tap-to-click = true
disable_while_typing = true
}
sensitivity = -0.5 # -1.0 - 1.0, 0 means no modification.
}
general {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
gaps_in = 5
gaps_out = 10
border_size = 2
col.active_border = rgb(D3869B)
col.inactive_border = rgba(595959aa)
layout = dwindle
}
decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
rounding = 10
blur {
enabled = true
size = 5
passes = 1
}
# drop_shadow = true
# shadow_range = 4
# shadow_render_power = 3
# col.shadow = rgba(1a1a1aee)
}
animations {
enabled = true
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 2, default, popin 80%
animation = border, 1, 2, default
animation = fade, 1, 2, default
animation = workspaces, 1, 2, default
}
dwindle {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # you probably want this
}
master {
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
# new_is_master = true
}
gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
}
misc {
disable_hyprland_logo = true
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/
# executing for more
#device:epic mouse V1 {
# sensitivity = -0.5
#}
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# Example windowrule v1
#windowrule = float, ^(kitty)$
#windowrule = float, ^(garuda-assistant)$
#windowrule = float, ^(garuda-boot-options)$
#windowrule = float, ^(garuda-boot-repair)$
#windowrule = float, ^(garuda-gamer)$
#windowrule = float, ^(garuda-network-assistant)$
#windowrule = float, ^(garuda-settings-manager)$
#windowrule = float, ^(garuda-welcome)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = ALT
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod SHIFT, R, exec, hyprctl reload
#bind = $mainMod, 36, exec, footclient
bind = $mainMod, E, exec, kitty
bind = $mainMod, C, killactive,
bind = $mainMod, M, exec, nwgbar
bind = $mainMod, G, exec, /home/tulg/.config/looking-glass-client -F -f /dev/kvmfr0 -m 58
bind = $mainMod SHIFT, O, togglefloating,
bind = $mainMod, D, exec, wofi --show drun --allow-images -W 300 -H 500 -l 4
bind = $mainMod SHIFT, D, exec, nwg-drawer -mb 10 -mr 10 -ml 10 -mt 10
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod SHIFT, P, togglesplit, # dwindle
# Mainmod + Function keys
bind = $mainMod, F1, exec, firedragon
bind = $mainMod, F2, exec, thunderbird
bind = $mainMod, F3, exec, thunar
bind = $mainMod, F4, exec, geany
bind = $mainMod, F5, exec, github-desktop
bind = $mainMod, F6, exec, gparted
bind = $mainMod, F7, exec, inkscape
bind = $mainMod, F8, exec, blender
bind = $mainMod, F9, exec, meld
bind = $mainMod, F10, exec, joplin-desktop
bind = $mainMod, F11, exec, snapper-tools
bind = $mainMod, F12, exec, galculator
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, H, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, L, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, K, movefocus, u
bind = $mainMod, down, movefocus, d
bind = $mainMod, J, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move to workspace with focused container with ALT + SHIFT + [0-9]
bind = ALT SHIFT, 1, movetoworkspace, 1
bind = ALT SHIFT, 2, movetoworkspace, 2
bind = ALT SHIFT, 3, movetoworkspace, 3
bind = ALT SHIFT, 4, movetoworkspace, 4
bind = ALT SHIFT, 5, movetoworkspace, 5
bind = ALT SHIFT, 6, movetoworkspace, 6
bind = ALT SHIFT, 7, movetoworkspace, 7
bind = ALT SHIFT, 8, movetoworkspace, 8
bind = ALT SHIFT, 9, movetoworkspace, 9
bind = ALT SHIFT, 0, movetoworkspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1
bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2
bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3
bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4
bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5
bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6
bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7
bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8
bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9
bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# background
#exec-once = wpaperd
# status bar
exec-once = waybar
layerrule = blur , waybar
layerrule = ignorezero , waybar
# set volume (laptops only and may or may not work on PCs)
bind = ,122, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%
bind = ,123, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%
bind = ,121, exec, pactl set-sink-volume @DEFAULT_SINK@ 0%
# other bindings
#bind = $mainMod, E, exec, kitty
bind = $mainMod, F, fullscreen
bind = $mainMod, Q, exec, kitty lf
bind = ,232,exec,brightnessctl -c backlight set 5%-
bind = ,233,exec,brightnessctl -c backlight set +5%
#bind = $mainMod SHIFT,C, exec, killall -9 wpaperd && wpaperd
# Screenshots:
#
# Change to swappy https://github.com/jtheoof/swappy
# Old functions only commented out to make it easier for the user to change if necessary.
# Snip a selection and pipe to swappy
bind = ,Print, exec, grim -g "$(slurp)" - | swappy -f -
# Screenshot a window and pipe to swappy
bind = CTRL, Print, exec, .config/hypr/scripts/screenshot_window.sh
# Screenshot the current display and pipe to swappy
bind = SHIFT, Print, exec, .config/hypr/scripts/screenshot_display.sh
# https://github.com/hyprwm/contrib/blob/main/grimblast/grimblast.1.scd
# Print: All outputs
# SHIFT+Print: Select area
# $mainMod+Print: Current window
# $mainMod+Shfit+Print: Current output
#
# bind = ,Print, exec, grimblast save screen && notify-send Screenshot captured
# bind = SHIFT, Print, exec, grimblast save area && notify-send Selected\ area captured
# bind = $mainMod, Print, exec, grimblast save active && notify-send Active\ window captured
# bind = $mainMod SHIFT, Print, exec, grimblast output active && notify-send Output captured
# for resizing window
# will switch to a submap called resize
bind=$mainMod,R,submap,resize
# will start a submap called "resize"
submap=resize
# sets repeatable binds for resizing the active window
binde=,right,resizeactive,50 0
binde=,L,resizeactive,50 0
binde=,left,resizeactive,-50 0
binde=,H,resizeactive,-50 0
binde=,up,resizeactive,0 -50
binde=,K,resizeactive,0 -50
binde=,down,resizeactive,0 50
binde=,J,resizeactive,0 50
# use reset to go back to the global submap
bind=,escape,submap,reset
# will reset the submap, meaning end the current one and return to the global one
submap=reset
# to move window
bind = $mainMod SHIFT,up, movewindow, u
bind = $mainMod SHIFT,K, movewindow, u
bind = $mainMod SHIFT,down, movewindow, d
bind = $mainMod SHIFT,J, movewindow, d
bind = $mainMod SHIFT,left, movewindow, l
bind = $mainMod SHIFT,H, movewindow, l
bind = $mainMod SHIFT,right, movewindow, r
bind = $mainMod SHIFT,L, movewindow, r
# other blurings
blurls = wofi
blurls = thunar
blurls = gedit
blurls = gtk-layer-shell # for nwg-drawer
blurls = catfish
# window rules
#windowrule = opacity 0.85 override 0.85 override,^(thunar)$
#windowrule = opacity 0.85 override 0.85 override,^(gedit)$
#windowrule = opacity 0.85 override 0.85 override,^(catfish)$
#windowrule = stayfocused, ^(wofi)$
# window rules with evaluation
windowrulev2 = opacity 0.85 0.85,floating:1
exec-once = mako
exec-once =/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once = foot --server
# experimental(might work might won't)
# pre executions (under development)
#exec-once=exec xrdb -load ~/.Xresources
# Clipboard Manager
exec-once = wl-paste --type text --watch cliphist store #Stores only text data
exec-once = wl-paste --type image --watch cliphist store #Stores only image data
bind = $mainMod, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy
# video play paues bindings
bind=,172,exec,playerctl play-pause
bind=,171,exec,playerctl next
bind=,173,exec,playerctl previous
# Use gtk-settings
exec-once = apply-gsettings
exec-once = gsettings set org.gnome.desktop.interface cursor-theme BreezeX-RosePine-Linux
exec-once = gsettings set org.gnome.desktop.interface cursor-size 28
env = HYPRCURSOR_THEME,rose-pine-hyprcursor
env = HYPRCURSOR_SIZE,28
# Performance Tweaks (For less power consumption without sacrificing performance)
# See : https://wiki.hyprland.org/Configuring/Performance/
misc:vfr = true
# enable G-Hyprland
bind = $mainMod SHIFT, G, exec, footclient -e ~/.local/bin/bear/implement_gum.sh enable
# Install Garuda Hyprland
bind = $mainMod, I, exec, .local/bin/calamares.sh
# Let the user customize this hyprstart script by overriding stuff in $hyprstart
exec-once = .config/hypr/exec-hyprland

85
config/hypr/hyprlock.conf Normal file
View file

@ -0,0 +1,85 @@
# background
background {
monitor =
#path = screenshot
path = /usr/share/wallpapers/garuda-wallpapers/Garuda-TilliDie-cube-105.png
color = $background
blur_passes = 2
contrast = 1
brightness = 0.5
vibrancy = 0.2
vibrancy_darkness = 0.2
}
# general
general {
no_fade_in = true
no_fade_out = true
hide_cursor = false
grace = 0
disable_loading_bar = false
}
# animations
animations {
enabled = true
}
# input field
input-field {
monitor =
size = 250, 60
outline_thickness = 2
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.35 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
outer_color = rgba(236, 240, 15, 1)
inner_color = rgba(240 , 204, 14, 1)
font_color = $foreground
fade_on_empty = false
rounding = -1
check_color = rgb(204, 136, 34)
placeholder_text = <i><span foreground="##000000">Input Password...</span></i>
hide_input = false
position = 0, -200
halign = center
valign = center
}
# date
label {
monitor =
text = cmd[update:1000] echo "$(date +"%A, %B %d")"
color = rgba(242, 243, 244, 0.75)
font_size = 22
font_family = JetBrains Mono
position = 0, 300
halign = center
valign = center
}
# time
label {
monitor =
text = cmd[update:1000] echo "$(date +"%-I:%M")"
color = rgba(242, 243, 244, 0.75)
font_size = 95
font_family = JetBrains Mono Extrabold
position = 0, 200
halign = center
valign = center
}
# things that can be played by user
Profile Picture
image {
monitor =
path = /usr/share/logos/Hyprland_logo.png
size = 200
border_size = 2
border_color = $foreground
position = 0, 0
halign = center
valign = center
}

19
config/hypr/hyprstart Executable file
View file

@ -0,0 +1,19 @@
#!/bin/sh
cd ~
# user preferred settings
#cursor size
export XCURSOR_SIZE=24
# text editor
export MICRO_TRUECOLOR=1
export EDITOR=/usr/bin/micro
#browser
export BROWSER=firefox
#terminal
export TERM=kitty
#mail
export MAIL=thunderbird
# check /usr/local/bin/hyprstart

View file

View file

@ -0,0 +1,11 @@
#!/bin/bash
a=$(pidof hypridle)
if [[ $a ]]
then
killall -9 hypridle
notify-send "idle inhibitor activated"
else
notify-send "idle inhibitor deactivated"
hypridle &> /dev/null
fi

View file

@ -0,0 +1,29 @@
#!/bin/sh
swaylock \
--screenshots \
--clock \
--hide-keyboard-layout \
--indicator \
--indicator-radius 100 \
--indicator-thickness 7 \
--effect-blur 7x5 \
--effect-vignette 0.5:0.5 \
--ring-color cba6f7 \
--ring-ver-color 89b4fa \
--ring-wrong-color f38ba8 \
--ring-clear-color a6e3a1 \
--key-hl-color 1e1e2e \
--bs-hl-color eba0ac \
--text-color 11111b \
--text-caps-lock-color 11111b \
--line-color 00000000 \
--line-ver-color 00000000 \
--line-wrong-color 00000000 \
--line-clear-color 00000000 \
--separator-color 00000000 \
--inside-color cba6f7 \
--inside-ver-color 89b4fa\
--inside-wrong-color f38ba8 \
--inside-clear-color a6e3a1 \
--grace 2 \
--fade-in 0.2

View file

@ -0,0 +1,6 @@
#!/bin/bash
# .config/hypr/scripts/screenshot_display.sh
# Screenshot the current display Shift+Print
output_id=$(hyprctl -j monitors | jq -r '.[] | select(.focused).name')
grim -o $output_id - | swappy -f -

View file

@ -0,0 +1,5 @@
#!/bin/bash
# .config/hypr/scripts/screenshot_window.sh
# Screenshot a window Ctrl+Print
grim -g "$(hyprctl -j activewindow | jq -r '.at + .size | "\(.[0]),\(.[1]) \(.[2])x\(.[3])"' | slurp)" - | swappy -f -

View file

View file

@ -0,0 +1,53 @@
## name: Rosé Pine Moon
## author: mvllow
## license: MIT
## upstream: https://github.com/rose-pine/kitty/blob/main/dist/rose-pine-moon.conf
## blurb: All natural pine, faux fur and a bit of soho vibes for the classy minimalist
foreground #e0def4
background #232136
selection_foreground #e0def4
selection_background #44415a
cursor #56526e
cursor_text_color #e0def4
url_color #c4a7e7
active_tab_foreground #e0def4
active_tab_background #393552
inactive_tab_foreground #6e6a86
inactive_tab_background #232136
# black
color0 #393552
color8 #6e6a86
# red
color1 #eb6f92
color9 #eb6f92
# green
color2 #3e8fb0
color10 #3e8fb0
# yellow
color3 #f6c177
color11 #f6c177
# blue
color4 #9ccfd8
color12 #9ccfd8
# magenta
color5 #c4a7e7
color13 #c4a7e7
# cyan
color6 #ea9a97
color14 #ea9a97
# white
color7 #e0def4
color15 #e0def4

View file

@ -0,0 +1,53 @@
## name: Rosé Pine Moon
## author: mvllow
## license: MIT
## upstream: https://github.com/rose-pine/kitty/blob/main/dist/rose-pine-moon.conf
## blurb: All natural pine, faux fur and a bit of soho vibes for the classy minimalist
foreground #e0def4
background #232136
selection_foreground #e0def4
selection_background #44415a
cursor #56526e
cursor_text_color #e0def4
url_color #c4a7e7
active_tab_foreground #e0def4
active_tab_background #393552
inactive_tab_foreground #6e6a86
inactive_tab_background #232136
# black
color0 #393552
color8 #6e6a86
# red
color1 #eb6f92
color9 #eb6f92
# green
color2 #3e8fb0
color10 #3e8fb0
# yellow
color3 #f6c177
color11 #f6c177
# blue
color4 #9ccfd8
color12 #9ccfd8
# magenta
color5 #c4a7e7
color13 #c4a7e7
# cyan
color6 #ea9a97
color14 #ea9a97
# white
color7 #e0def4
color15 #e0def4

8
config/kitty/kitty.conf Normal file
View file

@ -0,0 +1,8 @@
background_opacity 0.3
enable_audio_bell no
# BEGIN_KITTY_THEME
# Rosé Pine Moon
#include current-theme.conf
# END_KITTY_THEME

View file

@ -0,0 +1,2 @@
background_opacity 0.3
enable_audio_bell no

BIN
config/lf/lf.tar.gz Normal file

Binary file not shown.

3
config/lf/lf_kitty_clean Executable file
View file

@ -0,0 +1,3 @@
#!/usr/bin/env bash
kitty +kitten icat --clear --stdin no --silent --transfer-mode file < /dev/null > /dev/tty

13
config/lf/lf_kitty_preview Executable file
View file

@ -0,0 +1,13 @@
#!/usr/bin/env bash
file=$1
w=$2
h=$3
x=$4
y=$5
if [[ "$( file -Lb --mime-type "$file")" =~ ^image ]]; then
kitty +kitten icat --silent --stdin no --transfer-mode file --place "${w}x${h}@${x}x${y}" "$file" < /dev/null > /dev/tty
exit 1
fi
pistol "$file"

147
config/lf/lfrc Normal file
View file

@ -0,0 +1,147 @@
# interpreter for shell commands
set shell zsh
# set '-eu' options for shell commands
# These options are used to have safer shell commands. Option '-e' is used to
# exit on error and option '-u' is used to give error for unset variables.
# Option '-f' disables pathname expansion which can be useful when $f, $fs, and
# $fx variables contain names with '*' or '?' characters. However, this option
# is used selectively within individual commands as it can be limiting at
# times.
set shellopts '-eu'
# set internal field separator (IFS) to "\n" for shell commands
# This is useful to automatically split file names in $fs and $fx properly
# since default file separator used in these variables (i.e. 'filesep' option)
# is newline. You need to consider the values of these options and create your
# commands accordingly.
set ifs "\n"
# leave some space at the top and the bottom of the screen
set scrolloff 10
# Use the `dim` attribute instead of underline for the cursor in the preview pane
set cursorpreviewfmt "\033[7;2m"
# use enter for shell commands
map <enter> shell
# show the result of execution of previous commands
map ` !true
# execute current file (must be executable)
map x $$f
map X !$f
map D set hidden!
map d set hidden!
# dedicated keys for file opener actions
map o &mimeopen $f
map O $mimeopen --ask $f
cmd nano ${{
nano $f
}}
cmd open-with-cli $$@ nano
#cmd open-with-cli $$@ $fx
#map e push :open-with-cli<space> ## input application
map e nano
map w wp
map bw wpm
map br cd /run/media/tulg
map bp cd /run/media/tulg/backup1/pogland/wallpapers/
map c cd ~/.config/
map f wppp
cmd wp &{{
swww img $f # To make sure our escape sequence still reaches stdout we pipe it to /dev/tty
}}
cmd wppp &{{
swayimg $f # To make sure our escape sequence still reaches stdout we pipe it to /dev/tty
}}
cmd wpm &{{
mv $f /run/media/tulg/backup1/pogland/wallpapers # To make sure our escape sequence still reaches stdout we pipe it to /dev/tty
}}
cmd drives &{{
cd /run/media/tulg # To make sure our escape sequence still reaches stdout we pipe it to /dev/tty
}}
cmd on-cd &{{
# '&' commands run silently in background (which is what we want here),
# but are not connected to stdout.
printf "\033]0; $(pwd | sed "s|$HOME|~|")\007" > /dev/tty # To make sure our escape sequence still reaches stdout we pipe it to /dev/tty
}}
# also run at startup
on-cd
# define a custom 'open' command
# This command is called when current file is not a directory. You may want to
# use either file extensions and/or mime types here. Below uses an editor for
# text files and a file opener for the rest.
cmd open &{{
case $(file --mime-type -Lb $f) in
text/*) lf -remote "send $id nano \$fx";;
*) for f in $fx; do $OPENER $f > /dev/null 2> /dev/null & done;;
esac
}}
# mkdir command. See wiki if you want it to select created dir
map a :push %mkdir<space>
# define a custom 'rename' command without prompt for overwrite
# cmd rename %[ -e $1 ] && printf "file exists" || mv $f $1
# map r push :rename<space>
# make sure trash folder exists
# %mkdir -p ~/.trash
# move current file or selected files to trash folder
# (also see 'man mv' for backup/overwrite options)
cmd trash %set -f; mv $fx ~/.trash
# define a custom 'delete' command
# cmd delete ${{
# set -f
# printf "$fx\n"
# printf "delete?[y/n]"
# read ans
# [ "$ans" = "y" ] && rm -rf $fx
# }}
# use '<delete>' key for either 'trash' or 'delete' command
# map <delete> trash
# map <delete> delete
# extract the current file with the right command
# (xkcd link: https://xkcd.com/1168/)
cmd extract ${{
set -f
case $f in
*.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;;
*.tar.gz|*.tgz) tar xzvf $f;;
*.tar.xz|*.txz) tar xJvf $f;;
*.zip) unzip $f;;
*.rar) unrar x $f;;
*.7z) 7z x $f;;
esac
}}
# compress current file or selected files with tar and gunzip
cmd tar ${{
set -f
mkdir $1
cp -r $fx $1
tar czf $1.tar.gz $1
rm -rf $1
}}
# compress current file or selected files with zip
cmd zip ${{
set -f
mkdir $1
cp -r $fx $1
zip -r $1.zip $1
rm -rf $1
}}
set preview
set previewer ~/.config/lf/lf_kitty_preview
set cleaner ~/.config/lf/lf_kitty_clean

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 MiB

16
config/mako/config Normal file
View file

@ -0,0 +1,16 @@
anchor=top-right
font=fira sans 10
background-color=#232136
text-color=#D3869B
width=350
margin=0,20,20
padding=10
border-size=1
border-color=#232136
border-radius=5
default-timeout=10000
group-by=summary
icons=1
[grouped]
format=<b>%s</b>\n%b

176
config/waybar/config Normal file
View file

@ -0,0 +1,176 @@
{
"layer": "top", // Waybar at top layer
"position": "top", // Waybar position (top|bottom|left|right)
"height": 40,
"width":1920,
"margin": "0 0 0 0",
"spacing":0,
// Choose the order of the modules
// Add according to your wishes: "custom/weather"
"modules-left": ["hyprland/workspaces", "hyprland/window"],
"modules-center": ["custom/network_traffic"],
"modules-right": ["backlight","temperature", "cpu", "memory", "battery", "pulseaudio", "network", "tray", "clock"],
// Modules configuration
"hyprland/workspaces": {
"format": "{icon}",
"on-click": "activate",
"all-outputs": true,
"sort-by-number": true,
"format-icons": {
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"10": "10",
"focused": "",
"default": ""
},
"on-scroll-up": "hyprctl dispatch workspace e+1",
"on-scroll-down": "hyprctl dispatch workspace e-1",
},
"hyprland/window": {
"format": "{}",
"icon":false,
"icon-size" : 20
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
"icon-size": 20,
"spacing": 5
},
"clock": {
"tooltip-format": "<big>{:%A, %d.%B %Y }</big>\n<tt><small>{calendar}</small></tt>",
"format": " {:%a %d %b  %I:%M %p}", //12 hour format
//"format": " {:%a %d %b  %H:%M}", //24 hour format
"format-alt": " {:%d/%m/%Y  %H:%M:%S}",
//"max-length": 200
"interval": 1,
"on-click": "~/.config/waybar/scripts/OCV",
},
"cpu": {
"format": "🖳{usage}%",
"on-click": "foot -e htop"
},
"memory": {
"format": "🖴 {: >3}%",
"on-click": "foot -e htop"
},
"temperature": {
"thermal-zone": 7, // Check with: # cat /sys/class/hwmon/hwmon*/temp1_input
"hwmon-path": "/sys/class/hwmon/hwmon7/temp1_input",
"critical-threshold": 80,
"format-critical": "{temperatureC}°C ",
"format": "{temperatureC}°C "
},
"backlight": {
// "device": "acpi_video1",
"format": "{icon} {percent: >3}%",
"format-icons": ["", ""],
"on-scroll-down": "brightnessctl -c backlight set 1%-",
"on-scroll-up": "brightnessctl -c backlight set +1%",
"on-click": "~/.config/waybar/scripts/backlight-hint.sh"
},
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity: >3}%",
"format-icons": ["", "", "", "", ""]
// "format-good": "", // An empty format will hide the module
// "format-full": "",
//"format-icons": ["", "", "", "", "", "", "", "", "", ""]
//"format": "&#x202b;{icon}&#x202c; {capacity}%",
//"format-icons": ["ﱉ","ﱊ","ﱌ","ﱍ","ﱋ"]
},
"network": {
//"interface": "wlp0s20f3", // (Optional) To force the use of this interface "format-wifi": " {essid}",
"format": "⚠Disabled",
"format-wifi": "",
"format-ethernet": "",
"format-linked": "{ifname} (No IP)",
"format-disconnected": "⚠Disabled",
"format-alt": "{ifname}: {ipaddr}/{cidr}",
"family": "ipv4",
"tooltip-format-wifi": " {ifname} @ {essid}\nIP: {ipaddr}\nStrength: {signalStrength}%\nFreq: {frequency}MHz\nUp: {bandwidthUpBits} Down: {bandwidthDownBits}",
"tooltip-format-ethernet": " {ifname}\nIP: {ipaddr}\n up: {bandwidthUpBits} down: {bandwidthDownBits}",
//"min-length": 2,
//"max-length": 2,
"on-click": "nm-connection-editor"
},
"custom/updates": {
"format": "{} {icon}",
"return-type": "json",
"format-icons": {
"has-updates": "󱍷",
"updated": "󰂪",
"interval": 7200,
},
"exec-if": "which waybar-module-pacman-updates",
"exec": "waybar-module-pacman-updates",
"on-click": "foot -e update"
},
"custom/power": {
"format":"⏻",
"on-click": "nwgbar",
"tooltip": false,
},
"custom/keyboard-layout": {
"format": " Cheat", // Icon: keyboard
"on-click": "~/.config/waybar/scripts/keyhint.sh",
},
"custom/launcher": {
"format":" ",
"on-click": "exec nwg-drawer -c 7 -is 70 -spacing 23",
"tooltip": false,
},
"custom/network_traffic": {
"exec": "~/.config/waybar/scripts/network_traffic.sh",
"return-type": "json",
"format-ethernet": "{icon} {ifname} ⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}", // optional
},
"pulseaudio": {
"scroll-step": 3, // %, can be a float
"format": "{icon} {volume}% {format_source}",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": " {format_source}",
//"format-source": "{volume}% ",
//"format-source-muted": "",
"format-source": "",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
},
"on-click": "pavucontrol",
"on-click-right": "pactl set-source-mute @DEFAULT_SOURCE@ toggle"
},
// https://github.com/chubin/wttr.in
"custom/weather": {
"exec": "curl 'https://wttr.in/Essen?format=2'",
"interval": 900,
"on-click": "yad --html --uri='https://wttr.in/Essen' --center --fixed --width=1000 --height=680 --timeout=60 --timeout-indicator=right"
},
}

BIN
config/waybar/launcher.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

9
config/waybar/scripts/OCV Executable file
View file

@ -0,0 +1,9 @@
#!/bin/bash
yad --width=400 --height=200 \
--center \
--fixed \
--title="Calendar" \
--no-buttons \
yad \
--calendar

View file

@ -0,0 +1,12 @@
#!/bin/bash
yad --width=100 --height=100 \
--center \
--fixed \
--title="Backlight" \
--no-buttons \
--timeout=10 \
--timeout-indicator=bottom \
yad \
--text="\nScroll your mouse wheel to change \n the backlight of the monitor." \

View file

@ -0,0 +1,7 @@
#!/bin/sh
sleep 20
hyprctl keyword windowrule "workspace unset,nmtui-colors"
hyprctl keyword windowrule "workspace unset,calamares"
hyprctl keyword windowrule "workspace unset,keyhint.sh"
hyprctl keyword windowrule "workspace unset,firedragon"

View file

@ -0,0 +1,37 @@
#!/bin/sh
# "Change keyboard layout in" "~/.config/hypr/hyprland.conf" " " \
yad --width=530 --height=640 \
--center \
--fixed \
--title="Garuda Hyprland Keybindings" \
--no-buttons \
--list \
--column=Key: \
--column=Description: \
--column=Command: \
--timeout=60 \
--timeout-indicator=right \
"ESC" "close this app" "" "=" "modkey" "(set mod Mod4)" \
"+Shift+g" "G-hyprland" "implement G-Hyprland" \
"+enter/+t" "Terminal" "(foot)" \
"" "Application Menu" "(wofi)" \
"+Shift+d" "Full Launcher" "(nwggrid)" \
"+o" "" "Open Broswer" \
"+n" "" "Open Files" \
"+q" "close focused app" "(kill)" \
"+v" "clipboard manager" "(cliphist)" \
"+r" "Resize windows" "(resize)" \
"Print" "screenshot" "(grimblast)" \
"Shift+Print" "screenshot region" "(grimblast)" \
"+Print" "screenshot window" "(grimblast)" \
"+Shift+e" "power-menu" "(wofi)" \
"+Shift+c" "Change wallpaper" "(wpaperd)" \
"+f" "Fullscreen" "Toggles to full screen" \
"+Shift+f" "fullscreenstate" "Behave full screen without full screen" \
"+m" "maximize" "Hides all the windows other then focused window" \
"+Shift+Spacebar" "Float" "Toggle windows to float" \
"+p" "Dwindle effect" "pseudo" \
"+Shift+p" "Dwindle effect" "toggle split" \
"+i" "Calamares" "Install Garuda Hyprland" \
"" "" " Window closed in 60 sec."\

View file

@ -0,0 +1,109 @@
#!/bin/bash
# network_traffic.sh [-tPOLLING_INTERVAL] [NETWORK_INTERFACE...]
getopts t: __ && shift
isecs=${OPTARG:-1}
ifaces=($@)
: ${rate_max:=1000000} # maximum transfer rate for {percent}, can be overridden setting the env var
# `snore` adapted from https://blog.dhampir.no/content/sleeping-without-a-subprocess-in-bash-and-how-to-sleep-forever
# without MacOS workaround, TODO: with _snore_fd initialized separatedly, also i dont touch IFS so dont bother with it
snore() {
local IFS
[[ -n "${_snore_fd:-}" ]] || { exec {_snore_fd}<> <(:); } 2>/dev/null
read ${1:+-t "$1"} -u $_snore_fd || :
}
human_readable() {
local hrunits=( B K M G T P )
local ndigits=${#1}
local idxunit=$(( (2 + ndigits) / 3 - 1))
local lentrim=$(( ndigits - (idxunit * 3 ) ))
echo ${1::$lentrim}${hrunits[$idxunit]}
}
exit_err() {
printf '{"text": "⚠ %s", "tooltip": "%s", "class": "error"}\n' "$@"
exit
}
if test ${#ifaces[@]} -gt 0; then
# sanity check the interface names
for iface in ${ifaces[@]}; do
test -h "/sys/class/net/${iface}" || exit_err "${iface}" "${iface} is not an existing network interface name"
done
else
# default to all interfaces except `lo`
ifaces=(/sys/class/net/*)
ifaces=(${ifaces[@]##*/})
ifaces=(${ifaces[@]^(eth|wlan|enp|wlp|eno)})
fi
# sanity check polling interval
if test ${isecs} -lt 1; then
exit_err "${isecs}" "${isecs} is not a valid polling interval"
fi
# NOTE: `snore` would take a decimal interval but bash arithmetic does not
#if test $(echo "${isecs} >= 0.2" |bc) -eq 0; then
# exit_err "${isecs}" "${isecs} is not a valid polling interval"
#fi
# NOTE: `/proc/net/dev` format is:
# interface:
# RX bytes packets errs drop fifo frame compressed multicast
# TX bytes packets errs drop fifo colls carrier compressed
# NOTE: array items are:
# 0=rx_bytes 1=rx_packets 2=rx_errs 3=rx_drop
# 4=tx_bytes 5=tx_packets 6=tx_errs 7=tx_drop
for iface in ${ifaces[@]} aggregate; do
declare -a traffic_prev_${iface} traffic_curr_${iface} traffic_delt_${iface}
declare -n traffic_prev=traffic_prev_${iface}
declare -n traffic_curr=traffic_curr_${iface}
declare -n traffic_delt=traffic_delt_${iface}
traffic_prev=( 0 0 0 0 0 0 0 0 )
traffic_curr=( 0 0 0 0 0 0 0 0 )
traffic_delt=( 0 0 0 0 0 0 0 0 )
done
# TODO: rearrange the loop, do not show bogus on first iteration
while snore ${isecs} ;do
tooltip=""
traffic_delt_aggregate=( 0 0 0 0 0 0 0 0 )
readarray -s2 proc_net_dev </proc/net/dev
while read -a data; do
iface=${data[0]%:}
test "${ifaces[*]}" = "${ifaces[*]//${iface}/}" && continue
declare -n traffic_prev=traffic_prev_${iface}
declare -n traffic_curr=traffic_curr_${iface}
declare -n traffic_delt=traffic_delt_${iface}
traffic_curr=(${data[@]:1:4} ${data[@]:9:4})
#FIXME: tooltip is delayed one iteration wrt main display (but why?)
#printf -v tooltip_hr_rx '%4s⇣' $(human_readable ${traffic_delt[0]})
#printf -v tooltip_hr_tx '%4s⇡' $(human_readable ${traffic_delt[4]})
#tooltip="${tooltip:+${tooltip}\r}${iface}\t${tooltip_hr_rx}\t${tooltip_hr_tx}"
for i in {0..7}; do
(( traffic_delt[i] = ( traffic_curr[i] - traffic_prev[i] ) / isecs ))
(( traffic_delt_aggregate[i] += traffic_delt[i] ))
done
traffic_prev=(${traffic_curr[@]})
done <<<"${proc_net_dev[@]}"
printf '{"text": "%4s⇣ %4s⇡", "tooltip": "%s", "percentage": %d}\n' \
$(human_readable ${traffic_delt_aggregate[0]}) \
$(human_readable ${traffic_delt_aggregate[4]}) \
"${tooltip}" \
$(( ( traffic_delt_aggregate[0] + traffic_delt_aggregate[4] ) / rate_max ))
#printf '{"text": "%5s⇣ %5s⇡", "alt": "%s", "tooltip": "%s", "class": "%s", "percentage": %d }\n' $(human_readable ${traffic_delt[0]}) $(human_readable ${traffic_delt[4]}) '_alt' '_tooltip' '_class' 0
done
# NOTE: in waybar config (do NOT use "interval"):
# "custom/network_traffic": {
# "exec": "~/.config/waybar/scripts/network_traffic.sh",
# "return-type": "json",
# "format": "Speed: {}", // optional
# },

187
config/waybar/style.css Normal file
View file

@ -0,0 +1,187 @@
/* =============================================================================
*
* Waybar configuration
*
* Configuration reference: https://github.com/Alexays/Waybar/wiki/Configuration
*
* =========================================================================== */
/* -----------------------------------------------------------------------------
* Keyframes
* -------------------------------------------------------------------------- */
/*
Polar Night
nord0 #2e3440
nord1 #3b4252
nord2 #434c5e
nord3 #4c566a
Snow Storm
nord4 #d8dee9
nord5 #e5e9f0
nord6 #eceff4
Frost
nord7 #8fbcbb
nord8 #88c0d0
nord9 #81a1c1
nord10 #5e81ac
Aurora
nord11 #bf616a
nord12 #d08770
nord13 #ebcb8b
nord14 #a3be8c
nord15 #b48ead
*/
/* -----------------------------------------------------------------------------
* Base styles
* -------------------------------------------------------------------------- */
/* Reset all styles */
* {
color:#a3be8c;
border: 0;
border-radius: 0;
padding: 0 0;
font-family:Symbols Nerd Font Mono;
font-size: 15px;
margin-right: 5px;
margin-left: 5px;
padding-bottom:2px;
}
window#waybar {
background:rgba (0, 0, 0, 0.5);
border-radius: 20px 20px 20px 20px;
color: #D3869B;
}
#workspaces button {
padding: 2px 0px;
border-bottom: 2px;
color: #D3869B;
border-color: #d8dee9;
border-style: solid;
margin-top:2px;
}
#workspaces button.active {
border-color: #D3869B;
}
#clock, #battery, #cpu, #memory,#idle_inhibitor, #temperature,#custom-keyboard-layout, #backlight, #network, #pulseaudio, #tray, #window,#custom-launcher,#custom-power,#custom-updates ,#custom-network_traffic,#custom-weather{
padding: 0 3px;
border-bottom: 2px;
border-style: solid;
}
/* -----------------------------------------------------------------------------
* Module styles
* -------------------------------------------------------------------------- */
#clock {
color:#a3be8c;
}
#backlight {
color: #ebcb8b;
}
#battery {
color: #d8dee9;
}
#battery.charging {
color: #81a1c1;
}
@keyframes blink {
to {
color: #4c566a;
background-color: #eceff4;
}
}
#battery.critical:not(.charging) {
background: #bf616a;
color: #eceff4;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#cpu {
color:#a3be8c ;
}
#memory {
color: #d3869b;
}
#network.disabled {
color:#bf616a;
}
#network{
color:#a3be8c;
}
#network.disconnected {
color: #bf616a;
}
#pulseaudio {
color: #b48ead;
}
#pulseaudio.muted {
color: #3b4252;
}
#temperature {
color: #8fbcbb;
}
#temperature.critical {
color: #bf616a;
}
#idle_inhibitor {
color: #ebcb8b;
}
#tray {
}
#custom-launcher{
font-size: 20px;
background-image: url('/home/tulg/.config/waybar/launcher.png');
background-position: center;
background-repeat: no-repeat;
background-size: contain;
border-style: hidden;
}
#custom-power{
border-style: hidden;
margin-top:2px;
}
#window{
border-style: hidden;
margin-top:1px;
color: #D3869B;
}
#custom-keyboard-layout{
color:#d08770;
}
#custom-network_traffic{
color:#d08770;
}

10
config/wofi/config Normal file
View file

@ -0,0 +1,10 @@
location=middle
show=drun
width=650
height=550
always_parse_args=true
show_all=true
print_command=true
layer=overlay
insensitive=true
prompt=

View file

@ -0,0 +1,8 @@
hide_search=true
hide_scroll=true
width=1
show=dmenu
lines=5
location=centre
x=870
y=455

51
config/wofi/style.css Normal file
View file

@ -0,0 +1,51 @@
window {
margin: 0px;
background-color: #232136;
border-radius: 0px;
font-family:Symbols Nerd Font Mono;
font-size: 10px;
}
#input {
margin: 3px;
border-radius: 0px;
border: none;
border-radius: 0px;;
color: #eb6f92;
background-color: #232136;
}
#inner-box {
margin: 3px;
border: none;
color: #232136;
border-radius: 0px;
}
#outer-box {
margin: 8px;
border: none;
background-color: #232136;
}
#scroll {
margin: 0px;
border: none;
}
#text {
margin: 5px;
border: none;
color: #e0def4;
}
#entry:selectd {
color: #232136;
border-radius: 0px;;
background-color: #232136;
}
#entry:selected * {
color: #232136;
border-radius: 0px;;
}

View file

@ -0,0 +1,17 @@
* {
--base: #faf4ed;
--surface: #fffaf3;
--overlay: #f2e9e1;
--muted: #9893a5;
--subtle: #797593;
--text: #575279;
--love: #b4637a;
--gold: #ea9d34;
--rose: #d7827e;
--pine: #286983;
--foam: #56949f;
--iris: #907aa9;
--highlightLow: #f4ede8;
--highlightMed: #dfdad9;
--highlightHigh: #cecacd;
}

View file

@ -0,0 +1,17 @@
* {
--base: #191724;
--surface: #1f1d2e;
--overlay: #26233a;
--muted: #6e6a86;
--subtle: #908caa;
--text: #e0def4;
--love: #eb6f92;
--gold: #f6c177;
--rose: #ebbcba;
--pine: #31748f;
--foam: #9ccfd8;
--iris: #c4a7e7;
--highlightLow: #21202e;
--highlightMed: #403d52;
--highlightHigh: #524f67;
}

View file

@ -0,0 +1,17 @@
* {
--base: #232136;
--surface: #2a273f;
--overlay: #393552;
--muted: #6e6a86;
--subtle: #908caa;
--text: #e0def4;
--love: #eb6f92;
--gold: #f6c177;
--rose: #ea9a97;
--pine: #3e8fb0;
--foam: #9ccfd8;
--iris: #c4a7e7;
--highlightLow: #2a283e;
--highlightMed: #44415a;
--highlightHigh: #56526e;
}

View file

@ -0,0 +1,71 @@
@import "rose-pine-moon.css";
:root {
--zen-colors-primary: var(--base) !important;
--zen-primary-color: var(--base) !important;
--zen-colors-secondary: var(--surface) !important;
--zen-colors-tertiary: var(--overlay) !important;
--zen-colors-border: var(--iris) !important;
--toolbarbutton-icon-fill: var(--iris) !important;
--lwt-text-color: var(--text) !important;
--toolbar-field-color: var(--text) !important;
--tab-selected-textcolor: var(--iris) !important;
--toolbar-field-focus-color: var(--text) !important;
--toolbar-color: var(--text) !important;
--newtab-text-primary-color: var(--text) !important;
--arrowpanel-color: var(--text) !important;
--arrowpanel-background: var(--overlay) !important;
--sidebar-text-color: var(--text) !important;
--lwt-sidebar-text-color: var(--text) !important;
--lwt-sidebar-background-color: var(--base) !important;
--toolbar-bgcolor: var(--base) !important;
--newtab-background-color: var(--overlay) !important;
--zen-themed-toolbar-bg: var(--base) !important;
--zen-main-browser-background: var(--base) !important;
}
#permissions-granted-icon {
color: #181825 !important;
}
.sidebar-placesTree {
background-color: var(--surface) !important;
}
#zen-workspaces-button {
background-color: var(--surface) !important;
}
#urlbar-background {
background-color: var(--surface) !important;
}
.tab-background[selected=""] {
background: var(--overlay) !important;
}
.content-shortcuts {
background-color: var(--surface) !important;
border-color: #89b4fa !important;
}
.urlbarView-url {
color: var(--iris) !important;
}
#zenEditBookmarkPanelFaviconContainer {
background: var(--base) !important;
}
toolbar .toolbarbutton-1 {
&:not([disabled]) {
&:is([open], [checked])
> :is(
.toolbarbutton-icon,
.toolbarbutton-text,
.toolbarbutton-badge-stack
) {
fill: var(--base);
}
}
}

View file

@ -0,0 +1,8 @@
/* Zen Mods - Generated by ZenMods.
* FILE GENERATED AT: Saturday, October 11, 2025 at 7:22:29 PM GMT+03:00
* DO NOT EDIT THIS FILE DIRECTLY!
* Your changes will be overwritten.
* Instead, go to the preferences and edit the mods there.
*/
/* End of Zen Mods */

139
configuration.nix Normal file
View file

@ -0,0 +1,139 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking = {
hostName = "virgil";
nameservers = ["127.0.0.1" "::1"];
};
services.dnscrypt-proxy2 = {
enable = true;
settings = {
listen_addresses = ["127.0.0.1:53" "[::1]:53"];
};
};
services.zapret = {
enable = true;
params = [
"--dpi-desync=fake"
"--dpi-desync-ttl=8"
];
};
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Europe/Istanbul";
# Select internationalisation properties.
services.getty.autologinUser = "tulg";
programs.hyprland = {
enable = true;
xwayland.enable = true;
};
# Define a user account. Don't forget to set a password with passwd.
users.users.tulg = {
isNormalUser = true;
description = "Tulga";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [];
};
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
git
rose-pine-gtk-theme
];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = true;
PermitRootLogin = "yes";
};
};
fonts = {
packages = with pkgs; [
noto-fonts
noto-fonts-cjk-sans
noto-fonts-emoji
nerd-fonts.symbols-only
liberation_ttf
font-awesome
fira
fira-sans
fira-code
fira-code-symbols
];
enableDefaultPackages = true;
fontconfig = {
enable = true;
defaultFonts = {
sansSerif = [ "Fira Sans Regular" ];
serif = [ "Fira Sans Regular" ];
monospace = [ "Fira Mono Regular" ];
};
};
};
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
users.users."root".openssh.authorizedKeys.keys = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDIefprdYz4gFgBqGlrkycWcTYxFttQHRjDQmREtQTiGyqK1gQiB4z4Cbiayt7Emq224sbaobQPlNSyhlBCSo/Wf0bmZMz8NwNdwhFSkDnyD6LPaHg8fv9FXnWW0wBMl4oSD2wfGbMQBrecjgHXfJ64UiHyyhDllDDtWGgoY75wwfWHzX/NiGaEi0LHCQ8dsgp7H+BhssTkJPZbv6BJcA34yfb6dISjvW2S/QGKMwgYr9ArfGLUTWPbj+EbL7Bf9VsTFe9nP+FnYqEu4+oBIbY2heXWA+FCi0zxmMY4oYJxT5cJi1nffVOxboKLm4kIT93gv1WdcDiQDVdy5sJ1q0gJyiRt1HfJW4l8jn36VJ0FvdGmRliOTzSfeER0gbIsOcxeArHRV3ff/CoSocnSs0To5vFKgjlGwhdE8sJsqILgZnIoKwVvOXuDOz/RhbdBPpVsG7upk7bLJtLv9P5h0h/gUIWA1iktaYBSDL0UofjSrfNhZH6M0P+soIuooanSlVGivTlASw1pd+gjvebbc9ksvGZVqPQT0XegIvZkwfu8moERZUqv/xhNcyWTEGfFKoeHt5ub8Ac0LOe9Ak6N+p8xDjTdkmUgte5J/CNL1JL3JA/iqocAo+VvmIbPatbrOwUNcROOS3WeFg8MfNrbDyYCVNbZWAyM6wwfLB2fIUB2jw== tulg@highcommand" # content of authorized_keys file
];
users.users."tulg".openssh.authorizedKeys.keys = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDIefprdYz4gFgBqGlrkycWcTYxFttQHRjDQmREtQTiGyqK1gQiB4z4Cbiayt7Emq224sbaobQPlNSyhlBCSo/Wf0bmZMz8NwNdwhFSkDnyD6LPaHg8fv9FXnWW0wBMl4oSD2wfGbMQBrecjgHXfJ64UiHyyhDllDDtWGgoY75wwfWHzX/NiGaEi0LHCQ8dsgp7H+BhssTkJPZbv6BJcA34yfb6dISjvW2S/QGKMwgYr9ArfGLUTWPbj+EbL7Bf9VsTFe9nP+FnYqEu4+oBIbY2heXWA+FCi0zxmMY4oYJxT5cJi1nffVOxboKLm4kIT93gv1WdcDiQDVdy5sJ1q0gJyiRt1HfJW4l8jn36VJ0FvdGmRliOTzSfeER0gbIsOcxeArHRV3ff/CoSocnSs0To5vFKgjlGwhdE8sJsqILgZnIoKwVvOXuDOz/RhbdBPpVsG7upk7bLJtLv9P5h0h/gUIWA1iktaYBSDL0UofjSrfNhZH6M0P+soIuooanSlVGivTlASw1pd+gjvebbc9ksvGZVqPQT0XegIvZkwfu8moERZUqv/xhNcyWTEGfFKoeHt5ub8Ac0LOe9Ak6N+p8xDjTdkmUgte5J/CNL1JL3JA/iqocAo+VvmIbPatbrOwUNcROOS3WeFg8MfNrbDyYCVNbZWAyM6wwfLB2fIUB2jw== tulg@highcommand" # content of authorized_keys file
];
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
nix.settings.experimental-features = [ "nix-command" "flakes"];
services.displayManager.ly.enable = true;
system.stateVersion = "25.05"; # Did you read the comment?
}

193
flake.lock generated Normal file
View file

@ -0,0 +1,193 @@
{
"nodes": {
"base16-schemes": {
"flake": false,
"locked": {
"lastModified": 1696158499,
"narHash": "sha256-5yIHgDTPjoX/3oDEfLSQ0eJZdFL1SaCfb9d6M0RmOTM=",
"owner": "tinted-theming",
"repo": "base16-schemes",
"rev": "a9112eaae86d9dd8ee6bb9445b664fba2f94037a",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-schemes",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1760641408,
"narHash": "sha256-Y086n2U0kN9HjOo+UScwQDS27gKMiIlT6vDehvlmdAg=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "847669dabf374d32a072bdab3f08cae7296ac011",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": {
"nixpkgs": [
"zen-browser",
"nixpkgs"
]
},
"locked": {
"lastModified": 1752603129,
"narHash": "sha256-S+wmHhwNQ5Ru689L2Gu8n1OD6s9eU9n9mD827JNR+kw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "e8c19a3cec2814c754f031ab3ae7316b64da085b",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nix-colors": {
"inputs": {
"base16-schemes": "base16-schemes",
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1707825078,
"narHash": "sha256-hTfge2J2W+42SZ7VHXkf4kjU+qzFqPeC9k66jAUBMHk=",
"owner": "misterio77",
"repo": "nix-colors",
"rev": "b01f024090d2c4fc3152cd0cf12027a7b8453ba1",
"type": "github"
},
"original": {
"owner": "misterio77",
"repo": "nix-colors",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1760524057,
"narHash": "sha256-EVAqOteLBFmd7pKkb0+FIUyzTF61VKi7YmvP1tw4nEw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "544961dfcce86422ba200ed9a0b00dd4b1486ec5",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1697935651,
"narHash": "sha256-qOfWjQ2JQSQL15KLh6D7xQhx0qgZlYZTYlcEiRuAMMw=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "e1e11fdbb01113d85c7f41cada9d2847660e3902",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1760038930,
"narHash": "sha256-Oncbh0UmHjSlxO7ErQDM3KM0A5/Znfofj2BSzlHLeVw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0b4defa2584313f3b781240b29d61f6f9f7e0df3",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nix-colors": "nix-colors",
"nixpkgs": "nixpkgs",
"spicetify-nix": "spicetify-nix",
"zen-browser": "zen-browser"
}
},
"spicetify-nix": {
"inputs": {
"nixpkgs": "nixpkgs_2",
"systems": "systems"
},
"locked": {
"lastModified": 1760243311,
"narHash": "sha256-LNrok211+WWlMGWqpGPpnGcnWhyo5SfvMv62uDiLzoI=",
"owner": "Gerg-L",
"repo": "spicetify-nix",
"rev": "93f1d45e48191a0b24c5c15e5cf369566ff75be9",
"type": "github"
},
"original": {
"owner": "Gerg-L",
"repo": "spicetify-nix",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"zen-browser": {
"inputs": {
"home-manager": "home-manager_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1760646099,
"narHash": "sha256-hFoiRU9tM0ilgZS4gSO00nbnsuTQoYGQBb8+5Vma3Og=",
"owner": "0xc000022070",
"repo": "zen-browser-flake",
"rev": "f3fd50667a6ab075b1e7c406ff30c54684cefa16",
"type": "github"
},
"original": {
"owner": "0xc000022070",
"repo": "zen-browser-flake",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

52
flake.nix Normal file
View file

@ -0,0 +1,52 @@
{
description = "NixOS configuration";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
spicetify-nix.url = "github:Gerg-L/spicetify-nix";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-colors.url = "github:misterio77/nix-colors";
zen-browser = {
url = "github:0xc000022070/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, home-manager, nix-colors, ... } @ inputs:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
in {
nixosConfigurations.virgil = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs; };
modules = [
./configuration.nix
home-manager.nixosModules.home-manager
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
# Pass additional inputs to home-manager modules
extraSpecialArgs = { inherit inputs nix-colors; };
backupFileExtension = "backup";
users.tulg = {
imports = [ ./home.nix ];
};
};
}
];
};
};
}

View file

@ -0,0 +1,37 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sr_mod" "virtio_blk" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/10d6e759-3b2a-4593-b7c8-21b78352781d";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/3639-959D";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp1s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

154
home.nix Normal file
View file

@ -0,0 +1,154 @@
{ config, lib, pkgs, inputs, nix-colors, ... }:
let
dots = "${config.home.homeDirectory}/nixdots/config";
symlink = path: config.lib.file.mkOutOfStoreSymlink path;
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.system};
in
{
imports = [
inputs.zen-browser.homeModules.twilight
inputs.spicetify-nix.homeManagerModules.default
];
home.username = "tulg";
home.homeDirectory = "/home/tulg";
home.stateVersion = "25.05";
home.packages = with pkgs; [
networkmanagerapplet
wdisplays
nwg-look
rose-pine-gtk-theme
xfce.thunar
arc-theme
# spotify
pavucontrol
wl-clipboard
hyprcursor
parsec-bin
file-roller
hyprpolkitagent
swww
grim
slurp
lf
pistol
waybar
wofi
mako
kitty
vesktop
libsForQt5.qtstyleplugin-kvantum
libsForQt5.qt5ct
rose-pine-kvantum
];
programs.vscode.enable = true;
programs.zen-browser.enable = true;
programs.zen-browser.policies = {
DisableAppUpdate = true;
DisableTelemetry = true;
};
programs.spicetify = {
enable = true;
theme = spicePkgs.themes.ziro;
colorScheme = "rose-pine-moon";
};
xdg.configFile."hypr" = {
source = symlink "${dots}/hypr";
recursive = true;
};
xdg.configFile."waybar" = {
source = symlink "${dots}/waybar";
recursive = true;
};
xdg.configFile."kitty" = {
source = symlink "${dots}/kitty";
recursive = true;
};
xdg.configFile."wofi" = {
source = symlink "${dots}/wofi";
recursive = true;
};
xdg.configFile."mako" = {
source = symlink "${dots}/mako";
recursive = true;
};
xdg.configFile."lf" = {
source = symlink "${dots}/lf";
recursive = true;
};
programs.firefox.enable = true;
programs.bash = {
enable = true;
shellAliases = {
a = "echo ids";
};
};
programs.git = {
enable = true;
userName = "tulg";
userEmail = "tulg@protonmail.ch";
};
gtk = {
enable = true;
theme = {
name = "Nordic-darker";
package = pkgs.nordic;
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
};
home.pointerCursor = {
gtk.enable = true;
x11.enable = true;
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 16;
};
nixpkgs.config.qt5 = {
enable = true;
platformTheme = "qt5ct";
style = {
package = pkgs.rose-pine-kvantum;
name = "Rose-pine";
};
};
#
#
home.sessionVariables = {
NIXOS_OZONE_WL = "1"; # hint Electron apps to use Wayland
GTK_THEME = "rose-pine";
QT_QPA_PLATFORMTHEME = "qt5ct";
QT_QPA_PLATFORM = "wayland";
};
xdg.portal = {
enable = true;
config.common.default = "*";
xdgOpenUsePortal = true;
extraPortals = [
pkgs.xdg-desktop-portal-hyprland
pkgs.xdg-desktop-portal-gtk
];
};
}