#W# Initial Commit: No Flake Config

This commit is contained in:
WarrentyExpired 2026-07-31 12:23:39 -04:00
commit c463cec3e2
74 changed files with 14898 additions and 0 deletions

16
DistroboxArch.sh Executable file
View file

@ -0,0 +1,16 @@
if command -v yay &>/dev/null; then
echo "Yay installed, skipping"
else
echo "Installing Yay"
sudo pacman -Syu
sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
cd ../
rm -rf yay
fi
echo "Installing pacman packages"
sudo pacman -S --needed nano ttf-dejavu ttf-liberation libice libsm pipewire pipewire-pulse mono git eza nano
echo "Installing yay packages"
yay -S --needed ironpython3

1887
dotnet-install.sh vendored Executable file

File diff suppressed because it is too large Load diff

9
home/TazUO.desktop Normal file
View file

@ -0,0 +1,9 @@
[Desktop Entry]
Type=Application
Name=TazUO
Comment=TazUO Launcher
Path=/mnt/fileStorage/TazUOLauncher
Exec=/mnt/fileStorage/TazUOLauncher/TazUOLauncher
Icon=/mnt/fileStorage/TazUOLauncher/icon.png
Terminal=false
Categories=Games

View file

@ -0,0 +1,56 @@
if status is-interactive
# -------------------------------------------------------------------------
# Environment Variables
# -------------------------------------------------------------------------
set fish_greeting ""
set -gx DOTNET_ROOT $HOME/.dotnet
fish_add_path $DOTNET_ROOT
fish_add_path $DOTNET_ROOT
set -gx DOTNET_SYSTEM_NET_DISABLEIPV6 1
# -------------------------------------------------------------------------
# Keybindings
# -------------------------------------------------------------------------
bind \cd\cd\cd delete-or-exit
bind \cf 'ts; commandline -f repaint'
# -------------------------------------------------------------------------
# Shell Aliases
# -------------------------------------------------------------------------
# NixOS & Home Manager
#alias rebuild="sudo nixos-rebuild switch"
alias rebuild="nh os switch -f '<nixpkgs/nixos>'"
alias hms="home-manager switch"
# SSH Connections
alias sshavatar="ssh warrentyexpired@192.168.88.111"
alias sshvaultnas="ssh warrentyexpired@192.168.88.100"
alias sshservarr="ssh warrentyexpired@192.168.88.101"
alias sshdocker="ssh warrentyexpired@192.168.88.102"
alias sshlive="ssh mementoadmin@uo-memento.com"
alias sshproxy="ssh warrentyexpired@192.168.88.200"
# Shortcuts & Utilities
alias stff="mpv --autofit=10%"
alias s="goto s"
alias g="goto g"
alias l="goto l"
alias mv="mv -i --backup=t"
alias cat="bat"
# eza conditional setup
if type -q eza
alias ls='eza --color=always --group-directories-first --icons'
alias ll='eza -a --color=always --group-directories-first --icons'
alias la='eza -al --group-directories-first --icons'
alias lt='eza -aT --level=2 --group-directories-first --icons'
alias l.='eza -ad .* --group-directories-first --icons'
else
printf "You may want to install eza\n"
end
# -------------------------------------------------------------------------
# Shell Abbreviations
# -------------------------------------------------------------------------
abbr -a sshracknerd 'mosh -p 60001 192.227.229.130 --ssh="ssh -p 5522"'
end

View file

@ -0,0 +1,4 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR __fish_initialized:4300
SETUVAR fish_user_paths:/home/warrentyexpired/\x2edotnet

View file

@ -0,0 +1,28 @@
function fish_prompt
set -l white (set_color white)
set -l brwhite (set_color brwhite)
set -l green (set_color green)
set -l red (set_color red)
set -l blue (set_color blue)
# Line 1: ┌─ [user] @ [host]
echo -s $white"┌─ ["$green$USER$white"] "$brwhite"@ " $white"["$red$hostname$white"]"
# Line 2: ├─ [directory]
set -l full_path (string replace -r "^$HOME" "~" $PWD)
echo -s $white"├─ ["$blue$full_path$white"]"
# Line 3: └─ [(git_branch)] or [$]
echo -n $white"└─ ["
set -l git_info (gitinfo 2>/dev/null)
if test -n "$git_info"
echo -n $git_info
else
echo -n $brwhite"\$"
end
echo -n $white"]"
# Final prompt symbol and reset
echo -n $brwhite" "
set_color normal
end

View file

@ -0,0 +1,19 @@
function gitinfo
if git rev-parse --is-inside-work-tree >/dev/null 2>&1
set -l branch (git branch --show-current)
set -l staged ""
set -l dirty ""
set -l untracked ""
if not git diff --quiet
set dirty (set_color yellow)"*"
end
if not git diff --cached --quiet
set staged (set_color green)"+"
end
set -l untracked_files (git ls-files --others --exclude-standard)
if test -n "$untracked_files"
set untracked (set_color red)" *"
end
echo (set_color magenta)"($branch)"$staged$dirty$untracked(set_color normal)
end
end

View file

@ -0,0 +1,78 @@
function goto
set -l gotoConfig "$HOME/.config/goto/bookmarks"
set -l gotoDir "$HOME/.config/goto"
mkdir -p "$gotoDir"
touch "$gotoConfig"
set -l command $argv[1]
set -l bookmark_name $argv[2]
if test -z "$command"
echo "Usage: goto s <name> (save current directory)"
echo " goto g <name> (go to saved directory)"
echo " goto d <name> (delete a bookmark)"
echo " goto l (list all bookmarks)"
echo " goto e (edit bookmarks file)"
return
end
switch $command
case s # Save bookmarks
if test -z "$bookmark_name"
echo "Error: Must provide a bookmark name to save."
return 1
end
sed -i "/^$bookmark_name:/d" "$gotoConfig"
echo "$bookmark_name:"(pwd) >> "$gotoConfig"
echo "Bookmark $bookmark_name saved to: "(pwd)
case g # Go to bookmark
if test -z "$bookmark_name"
echo "Error: Must provide a bookmark name to go to."
return 1
end
set -l target_path (grep "^$bookmark_name:" "$gotoConfig" | cut -d ':' -f 2)
if test -z "$target_path"
echo "Error: Bookmark $bookmark_name not found."
return 1
end
if test -d "$target_path"
cd "$target_path"
echo "Jumping to: $target_path"
else
echo "Error: Directory $target_path does not exist or is not a directory"
end
case d # Delete bookmark
if test -z "$bookmark_name"
echo "Error: Must provide a bookmark name to delete."
return 1
end
if grep -q "^$bookmark_name:" "$gotoConfig"
sed -i "/^$bookmark_name:/d" "$gotoConfig"
echo "Bookmark $bookmark_name deleted."
else
echo "Error: Bookmark $bookmark_name not found."
return 1
end
case e # Edit bookmarks file
if set -q EDITOR
$EDITOR "$gotoConfig"
else
nano "$gotoConfig"
end
case l # List bookmarks
if not test -s "$gotoConfig"
echo "No bookmarks saved yet."
return 0
end
echo "___ Bookmarks (Stored in: $gotoDir) ___"
column -t -s ':' "$gotoConfig"
case '*'
echo "Invalid command: $command"
goto # Show usage
end
end

View file

@ -0,0 +1,21 @@
function lookfor --description "Lookfor (d)irectory, (f)ile (a)ll (pattern)"
if test (count $argv) -lt 2
echo "Usage: lookfor (f)ile|(d)irectory|(a)ll \"pattern\""
return 1
end
set -l type_flag $argv[1]
set -l pattern $argv[2]
switch $type_flag
case f
find . -type f -name "*$pattern*" 2>/dev/null
case d
find . -type d -name "*$pattern*" 2>/dev/null
case a
find . -name "*$pattern*" 2>/dev/null
case *
echo "Invalid type: $type_flag. Use f for file or d for directory."
return 1
end
end

View file

@ -0,0 +1,67 @@
function ts --description "Tmux session manager with fuzzy search and quick jump"
echo -e ""
# 1. Show Active Sessions
set -l active_sessions (tmux list-sessions 2>/dev/null)
if test -n "$active_sessions"
echo -e (set_color 99ff99)"󱫟 Active Sessions:"(set_color normal)
for line in $active_sessions
echo -e " $line"
end
echo ""
else
echo -e (set_color 555555)"(No active sessions)"(set_color normal)
echo ""
end
# 2. Provide choices
echo -e (set_color 00afaf)"󰒓 Select an option:"(set_color normal)
echo -e " [1] Pick from active sessions (Fuzzy search)"
echo -e " [2] Create NEW custom session"
echo -e " [w] Enter Tmuxinator Workspaces"
echo -e " [d] Detach from current session"
echo -e " [x] Kill a session"
echo -e " [Enter] Quick jump to "(set_color -o)"Main"(set_color normal)
echo ""
read -l -P "Choice > " choice
switch "$choice"
case 1
set -l session (tmux list-sessions -F "#{session_name}" 2>/dev/null | fzf --exit-0 --height=15% --reverse --header="Select Session")
if test -n "$session"
if set -q TMUX
tmux switch-client -t "$session"
else
tmux attach-session -t "$session"
end
end
case 2
read -l -P "Enter name for new session: " new_name
if test -n "$new_name"
env -u TMUX tmux new-session -d -s "$new_name" 2>/dev/null
if set -q TMUX
tmux switch-client -t "$new_name"
else
tmux attach-session -t "$new_name"
end
end
case d D
if set -q TMUX; tmux detach-client; else; echo "You aren't in a tmux session!"; end
case w W
if type -q tmuxinator
tmuxinator start Workspace
else
echo (set_color red)"Error: tmuxinator is not installed."(set_color normal)
end
case x X
set -l session (tmux list-sessions -F "#{session_name}" 2>/dev/null | fzf --exit-0 --height=15% --reverse --header="Select Session to KILL")
if test -n "$session"
tmux kill-session -t "$session"
echo "Killed session: $session"
ts
end
case "" "*"
env -u TMUX tmux new-session -d -s Main 2>/dev/null
if set -q TMUX; tmux switch-client -t Main; else; tmux attach-session -t Main; end
end
commandline -f repaint
end

View file

@ -0,0 +1,49 @@
# Font Configuration
font-size = 12
# Window Configuration
# window-decoration = false
window-padding-x = 12
window-padding-y = 12
background-opacity = 0.90
background-blur-radius = 32
# Cursor Configuration
cursor-style = block
cursor-style-blink = true
# Scrollback
scrollback-limit = 3023
# Terminal features
mouse-hide-while-typing = true
copy-on-select = false
confirm-close-surface = false
# Disable annoying copied to clipboard
app-notifications = no-clipboard-copy,no-config-reload
# Key bindings
keybind = ctrl+shift+n=new_window
keybind = ctrl+t=new_tab
keybind = ctrl+plus=increase_font_size:1
keybind = ctrl+minus=decrease_font_size:1
keybind = ctrl+zero=reset_font_size
# Material 3 UI elements
unfocused-split-opacity = 0.7
unfocused-split-fill = #44464f
# Tab configuration
gtk-titlebar = false
# Shell integration
shell-integration = detect
shell-integration-features = cursor,sudo,title,no-cursor
keybind = shift+enter=text:\n
# Rando stuff
gtk-single-instance = true
# Dank theme
config-file = ./themes/dankcolors

View file

@ -0,0 +1,22 @@
background = #131313
foreground = #e2e2e2
cursor-color = #eeb1ff
selection-background = #662f79
selection-foreground = #e2e2e2
palette = 0=#131313
palette = 1=#ff7287
palette = 2=#7fffa0
palette = 3=#ffdd72
palette = 4=#de99f2
palette = 5=#673376
palette = 6=#eeb1ff
palette = 7=#fbefff
palette = 8=#a299a5
palette = 9=#ff9fad
palette = 10=#a5ffbc
palette = 11=#ffe9a5
palette = 12=#f0bcff
palette = 13=#f3c8ff
palette = 14=#f7dbff
palette = 15=#fdf8ff

393
home/config/niri/config.kdl Executable file
View file

@ -0,0 +1,393 @@
input {
keyboard {
xkb {
}
numlock
}
touchpad {
tap
natural-scroll
}
mouse {
accel-speed 1.0
}
trackpoint {
}
}
cursor {
xcursor-theme "Bibata-Modern-Classic"
xcursor-size 24
}
gestures {
hot-corners {
off
}
}
layout {
gaps 16
background-color "transparent"
center-focused-column "never"
always-center-single-column
preset-column-widths {
proportion 0.33333
proportion 0.5
proportion 0.66667
}
default-column-width { proportion 0.5; }
focus-ring {
//off
width 3
active-color "#7fc8ff"
inactive-color "#505050"
}
border {
off
width 4
active-color "#ffc87f"
inactive-color "#505050"
urgent-color "#9b0000"
}
shadow {
//on
//draw-behind-window true
softness 30
spread 5
offset x=0 y=5
color "#0007"
}
struts {
}
}
hotkey-overlay {
skip-at-startup
}
prefer-no-csd
screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
//animations {
// off
// slowdown 3.0
//}
animations {
window-close {
duration-ms 600
curve "ease-out-quad"
custom-shader r"
float hash21(vec2 p) {
return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123);
}
float value_noise(vec2 p) {
vec2 i = floor(p);
vec2 f = fract(p);
vec2 u = f * f * (3.0 - 2.0 * f);
return mix(
mix(hash21(i), hash21(i + vec2(1.0, 0.0)), u.x),
mix(hash21(i + vec2(0.0, 1.0)), hash21(i + vec2(1.0, 1.0)), u.x),
u.y
);
}
float fbm(vec2 p) {
float v = 0.0;
float amp = 0.5;
float freq = 1.0;
for (int i = 0; i < 5; i++) {
v += amp * value_noise(p * freq);
freq *= 2.0;
amp *= 0.5;
}
return v;
}
vec4 close_color(vec3 coords_geo, vec3 size_geo) {
vec2 uv = coords_geo.xy;
float p = niri_clamped_progress;
float seed = niri_random_seed * 100.0;
// Distance from nearest edge of window rect
float dx = min(uv.x, 1.0 - uv.x);
float dy = min(uv.y, 1.0 - uv.y);
float edge_dist = min(dx, dy);
// Noise-driven edge erosion: breaks the box shape
float edge_noise = fbm((uv + seed) * 8.0 * 1.5);
float erode = p * 0.80;
float edge_threshold = edge_noise * erode;
float edge_alpha = smoothstep(edge_threshold - 0.02, edge_threshold + 0.02, edge_dist);
// Skip pixels far outside eroded boundary
if (edge_dist < -0.15) {
return vec4(0.0);
}
// Wobble the window content
vec2 np = (uv + seed) * 8.0;
float wx = fbm(np + vec2(17.3, 0.0)) - 0.5;
float wy = fbm(np + vec2(0.0, 43.1)) - 0.5;
vec3 warped = coords_geo;
warped.x += wx * 0.080 * p;
warped.y += wy * 0.080 * p;
vec3 tex_coords = niri_geo_to_tex * warped;
vec4 color = texture2D(niri_tex, tex_coords.st);
// Overall fade
float alpha = edge_alpha * (1.0 - p * p);
alpha = clamp(alpha, 0.0, 1.0);
// Warm glow at dissolving edges
float glow = smoothstep(edge_threshold - 0.04, edge_threshold, edge_dist)
* (1.0 - smoothstep(edge_threshold, edge_threshold + 0.04, edge_dist));
glow *= (1.0 - p) * 0.6;
color.rgb += vec3(0.3, 0.18, 0.06) * glow;
return color * alpha;
}
"
}
window-open {
duration-ms 600
curve "ease-out-expo"
custom-shader r"
float hash21(vec2 p) {
return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123);
}
float value_noise(vec2 p) {
vec2 i = floor(p);
vec2 f = fract(p);
vec2 u = f * f * (3.0 - 2.0 * f);
return mix(
mix(hash21(i), hash21(i + vec2(1.0, 0.0)), u.x),
mix(hash21(i + vec2(0.0, 1.0)), hash21(i + vec2(1.0, 1.0)), u.x),
u.y
);
}
float fbm(vec2 p) {
float v = 0.0;
float amp = 0.5;
float freq = 1.0;
for (int i = 0; i < 5; i++) {
v += amp * value_noise(p * freq);
freq *= 2.0;
amp *= 0.5;
}
return v;
}
vec4 open_color(vec3 coords_geo, vec3 size_geo) {
vec2 uv = coords_geo.xy;
float p = 1.0 - niri_clamped_progress;
float seed = niri_random_seed * 100.0;
// Distance from nearest edge of window rect
float dx = min(uv.x, 1.0 - uv.x);
float dy = min(uv.y, 1.0 - uv.y);
float edge_dist = min(dx, dy);
// Noise-driven edge erosion: breaks the box shape
float edge_noise = fbm((uv + seed) * 8.0 * 1.5);
float erode = p * 0.80;
float edge_threshold = edge_noise * erode;
float edge_alpha = smoothstep(edge_threshold - 0.02, edge_threshold + 0.02, edge_dist);
// Skip pixels far outside eroded boundary
if (edge_dist < -0.15) {
return vec4(0.0);
}
// Wobble the window content
vec2 np = (uv + seed) * 8.0;
float wx = fbm(np + vec2(17.3, 0.0)) - 0.5;
float wy = fbm(np + vec2(0.0, 43.1)) - 0.5;
vec3 warped = coords_geo;
warped.x += wx * 0.080 * p;
warped.y += wy * 0.080 * p;
vec3 tex_coords = niri_geo_to_tex * warped;
vec4 color = texture2D(niri_tex, tex_coords.st);
// Overall fade
float alpha = edge_alpha * (1.0 - p * p);
alpha = clamp(alpha, 0.0, 1.0);
// Warm glow at dissolving edges
float glow = smoothstep(edge_threshold - 0.04, edge_threshold, edge_dist)
* (1.0 - smoothstep(edge_threshold, edge_threshold + 0.04, edge_dist));
glow *= (1.0 - p) * 0.6;
color.rgb += vec3(0.3, 0.18, 0.06) * glow;
return color * alpha;
}
"
}
}
window-rule {
geometry-corner-radius 8
clip-to-geometry true
}
window-rule {
match app-id=r#"org.quickshell$"#
open-floating true
}
window-rule {
match app-id="org.gnome.Calculator"
open-floating true
}
window-rule {
match app-id="mpv"
open-floating true
default-floating-position x=0 y=32 relative-to="bottom"
}
window-rule {
match app-id="^ghostty$"
opacity 0.8
background-effect {
blur true
}
}
window-rule {
draw-border-with-background false
}
// spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell"
// spawn-at-startup "waybar"
binds {
Mod+Shift+Slash { show-hotkey-overlay; }
Mod+Alt+P hotkey-overlay-title="Open Power Menu" { spawn "dms" "ipc" "call" "powermenu" "toggle"; }
Mod+Alt+I hotkey-overlay-title="Toggle Idle Inhibitoer" { spawn "dms" "ipc" "call" "inhibit" "toggle"; }
Mod+Q hotkey-overlay-title="Open a Terminal: ghostty" { spawn "ghostty"; }
Mod+Space hotkey-overlay-title="Run an Application: dank launcher" { spawn "dms" "ipc" "call" "launcher" "toggle"; }
//Mod+Space hotkey-overlay-title="Run an Application: fuzzel" { spawn "fuzzel"; }
Mod+W hotkey-overlay-title="Open a Web browser: firefox" { spawn "firefox"; }
Mod+E hotkey-overlay-title="Open File browser: nautilus" { spawn "nautilus"; }
XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0"; }
Mod+Alt+WheelScrollUp { spawn "dms" "ipc" "call" "audio" "increment" "5"; }
Mod+Alt+WheelScrollDown { spawn "dms" "ipc" "call" "audio" "decrement" "5"; }
XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; }
XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; }
XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; }
XF86AudioPlay allow-when-locked=true { spawn-sh "playerctl play-pause"; }
XF86AudioStop allow-when-locked=true { spawn-sh "playerctl stop"; }
XF86AudioPrev allow-when-locked=true { spawn-sh "playerctl previous"; }
XF86AudioNext allow-when-locked=true { spawn-sh "playerctl next"; }
XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; }
XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; }
Mod+O repeat=false { toggle-overview; }
Mod+Escape repeat=false { close-window; }
Mod+Left { focus-column-left; }
Mod+Down { focus-window-down; }
Mod+Up { focus-window-up; }
Mod+Right { focus-column-right; }
Mod+H { focus-column-left; }
Mod+J { focus-window-down; }
Mod+K { focus-window-up; }
Mod+L { focus-column-right; }
Mod+Ctrl+Left { move-column-left; }
Mod+Ctrl+Down { move-window-down; }
Mod+Ctrl+Up { move-window-up; }
Mod+Ctrl+Right { move-column-right; }
Mod+Ctrl+H { move-column-left; }
Mod+Ctrl+J { move-window-down; }
Mod+Ctrl+K { move-window-up; }
Mod+Ctrl+L { move-column-right; }
Mod+Home { focus-column-first; }
Mod+End { focus-column-last; }
Mod+Ctrl+Home { move-column-to-first; }
Mod+Ctrl+End { move-column-to-last; }
Mod+Shift+Left { focus-monitor-left; }
Mod+Shift+Down { focus-monitor-down; }
Mod+Shift+Up { focus-monitor-up; }
Mod+Shift+Right { focus-monitor-right; }
Mod+Shift+H { focus-monitor-left; }
Mod+Shift+J { focus-monitor-down; }
Mod+Shift+K { focus-monitor-up; }
Mod+Shift+L { focus-monitor-right; }
Mod+Shift+Ctrl+Left { move-column-to-monitor-left; }
Mod+Shift+Ctrl+Down { move-column-to-monitor-down; }
Mod+Shift+Ctrl+Up { move-column-to-monitor-up; }
Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
Mod+Page_Down { focus-workspace-down; }
Mod+Page_Up { focus-workspace-up; }
Mod+U { focus-workspace-down; }
Mod+I { focus-workspace-up; }
Mod+Ctrl+Page_Down { move-column-to-workspace-down; }
Mod+Ctrl+Page_Up { move-column-to-workspace-up; }
Mod+Ctrl+U { move-column-to-workspace-down; }
Mod+Ctrl+I { move-column-to-workspace-up; }
Mod+Shift+Page_Down { move-workspace-down; }
Mod+Shift+Page_Up { move-workspace-up; }
Mod+Shift+U { move-workspace-down; }
Mod+Shift+I { move-workspace-up; }
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
Mod+WheelScrollRight { focus-column-right; }
Mod+WheelScrollLeft { focus-column-left; }
Mod+Ctrl+WheelScrollRight { move-column-right; }
Mod+Ctrl+WheelScrollLeft { move-column-left; }
Mod+Shift+WheelScrollDown { focus-column-right; }
Mod+Shift+WheelScrollUp { focus-column-left; }
Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
Mod+Ctrl+Shift+WheelScrollUp { move-column-left; }
Mod+1 { focus-workspace 1; }
Mod+2 { focus-workspace 2; }
Mod+3 { focus-workspace 3; }
Mod+4 { focus-workspace 4; }
Mod+5 { focus-workspace 5; }
Mod+6 { focus-workspace 6; }
Mod+7 { focus-workspace 7; }
Mod+8 { focus-workspace 8; }
Mod+9 { focus-workspace 9; }
Mod+Ctrl+1 { move-column-to-workspace 1; }
Mod+Ctrl+2 { move-column-to-workspace 2; }
Mod+Ctrl+3 { move-column-to-workspace 3; }
Mod+Ctrl+4 { move-column-to-workspace 4; }
Mod+Ctrl+5 { move-column-to-workspace 5; }
Mod+Ctrl+6 { move-column-to-workspace 6; }
Mod+Ctrl+7 { move-column-to-workspace 7; }
Mod+Ctrl+8 { move-column-to-workspace 8; }
Mod+Ctrl+9 { move-column-to-workspace 9; }
Mod+BracketLeft { consume-or-expel-window-left; }
Mod+BracketRight { consume-or-expel-window-right; }
Mod+Comma { consume-window-into-column; }
Mod+Period { expel-window-from-column; }
Mod+R { switch-preset-column-width; }
Mod+Shift+R { switch-preset-window-height; }
Mod+Ctrl+R { reset-window-height; }
Mod+F { maximize-column; }
Mod+Shift+F { fullscreen-window; }
Mod+Ctrl+F { expand-column-to-available-width; }
Mod+C { center-column; }
Mod+Ctrl+C { center-visible-columns; }
Mod+Minus { set-column-width "-10%"; }
Mod+Equal { set-column-width "+10%"; }
Mod+Shift+Minus { set-window-height "-10%"; }
Mod+Shift+Equal { set-window-height "+10%"; }
//Mod+V { toggle-window-floating; }
Mod+Shift+V { switch-focus-between-floating-and-tiling; }
Mod+Shift+W { toggle-column-tabbed-display; }
Shift+Alt+R { screenshot; }
Shift+Alt+S { screenshot-screen; }
Shift+Alt+W { screenshot-window; }
Mod+Shift+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
Mod+Shift+E { quit; }
Ctrl+Alt+Delete { quit; }
Mod+Shift+P { power-off-monitors; }
}
include "dms/binds.kdl"
include "dms/outputs.kdl"
include "dms/windowrules.kdl"
include "dms/cursor.kdl"

View file

@ -0,0 +1,632 @@
// This config is in the KDL format: https://kdl.dev
// "/-" comments out the following node.
// Check the wiki for a full description of the configuration:
// https://niri-wm.github.io/niri/Configuration:-Introduction
// Input device configuration.
// Find the full list of options on the wiki:
// https://niri-wm.github.io/niri/Configuration:-Input
input {
keyboard {
xkb {
// You can set rules, model, layout, variant and options.
// For more information, see xkeyboard-config(7).
// For example:
// layout "us,ru"
// options "grp:win_space_toggle,compose:ralt,ctrl:nocaps"
// If this section is empty, niri will fetch xkb settings
// from org.freedesktop.locale1. You can control these using
// localectl set-x11-keymap.
}
// Enable numlock on startup, omitting this setting disables it.
numlock
}
// Next sections include libinput settings.
// Omitting settings disables them, or leaves them at their default values.
// All commented-out settings here are examples, not defaults.
touchpad {
// off
tap
// dwt
// dwtp
// drag false
// drag-lock
natural-scroll
// accel-speed 0.2
// accel-profile "flat"
// scroll-method "two-finger"
// disabled-on-external-mouse
}
mouse {
// off
// natural-scroll
// accel-speed 0.2
// accel-profile "flat"
// scroll-method "no-scroll"
}
trackpoint {
// off
// natural-scroll
// accel-speed 0.2
// accel-profile "flat"
// scroll-method "on-button-down"
// scroll-button 273
// scroll-button-lock
// middle-emulation
}
// Uncomment this to make the mouse warp to the center of newly focused windows.
// warp-mouse-to-focus
// Focus windows and outputs automatically when moving the mouse into them.
// Setting max-scroll-amount="0%" makes it work only on windows already fully on screen.
// focus-follows-mouse max-scroll-amount="0%"
}
// You can configure outputs by their name, which you can find
// by running `niri msg outputs` while inside a niri instance.
// The built-in laptop monitor is usually called "eDP-1".
// Find more information on the wiki:
// https://niri-wm.github.io/niri/Configuration:-Outputs
// Remember to uncomment the node by removing "/-"!
/-output "eDP-1" {
// Uncomment this line to disable this output.
// off
// Resolution and, optionally, refresh rate of the output.
// The format is "<width>x<height>" or "<width>x<height>@<refresh rate>".
// If the refresh rate is omitted, niri will pick the highest refresh rate
// for the resolution.
// If the mode is omitted altogether or is invalid, niri will pick one automatically.
// Run `niri msg outputs` while inside a niri instance to list all outputs and their modes.
mode "1920x1080@120.030"
// You can use integer or fractional scale, for example use 1.5 for 150% scale.
scale 2
// Transform allows to rotate the output counter-clockwise, valid values are:
// normal, 90, 180, 270, flipped, flipped-90, flipped-180 and flipped-270.
transform "normal"
// Position of the output in the global coordinate space.
// This affects directional monitor actions like "focus-monitor-left", and cursor movement.
// The cursor can only move between directly adjacent outputs.
// Output scale and rotation has to be taken into account for positioning:
// outputs are sized in logical, or scaled, pixels.
// For example, a 3840×2160 output with scale 2.0 will have a logical size of 1920×1080,
// so to put another output directly adjacent to it on the right, set its x to 1920.
// If the position is unset or results in an overlap, the output is instead placed
// automatically.
position x=1280 y=0
}
// Settings that influence how windows are positioned and sized.
// Find more information on the wiki:
// https://niri-wm.github.io/niri/Configuration:-Layout
layout {
// Set gaps around windows in logical pixels.
gaps 16
// When to center a column when changing focus, options are:
// - "never", default behavior, focusing an off-screen column will keep at the left
// or right edge of the screen.
// - "always", the focused column will always be centered.
// - "on-overflow", focusing a column will center it if it doesn't fit
// together with the previously focused column.
center-focused-column "never"
// You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between.
preset-column-widths {
// Proportion sets the width as a fraction of the output width, taking gaps into account.
// For example, you can perfectly fit four windows sized "proportion 0.25" on an output.
// The default preset widths are 1/3, 1/2 and 2/3 of the output.
proportion 0.33333
proportion 0.5
proportion 0.66667
// Fixed sets the width in logical pixels exactly.
// fixed 1920
}
// You can also customize the heights that "switch-preset-window-height" (Mod+Ctrl+Shift+R) toggles between.
// preset-window-heights { }
// You can change the default width of the new windows.
default-column-width { proportion 0.5; }
// If you leave the brackets empty, the windows themselves will decide their initial width.
// default-column-width {}
// By default focus ring and border are rendered as a solid background rectangle
// behind windows. That is, they will show up through semitransparent windows.
// This is because windows using client-side decorations can have an arbitrary shape.
//
// If you don't like that, you should uncomment `prefer-no-csd` below.
// Niri will draw focus ring and border *around* windows that agree to omit their
// client-side decorations.
//
// Alternatively, you can override it with a window rule called
// `draw-border-with-background`.
// You can change how the focus ring looks.
focus-ring {
// Uncomment this line to disable the focus ring.
// off
// How many logical pixels the ring extends out from the windows.
width 4
// Colors can be set in a variety of ways:
// - CSS named colors: "red"
// - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa"
// - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others.
// Color of the ring on the active monitor.
active-color "#7fc8ff"
// Color of the ring on inactive monitors.
//
// The focus ring only draws around the active window, so the only place
// where you can see its inactive-color is on other monitors.
inactive-color "#505050"
// You can also use gradients. They take precedence over solid colors.
// Gradients are rendered the same as CSS linear-gradient(angle, from, to).
// The angle is the same as in linear-gradient, and is optional,
// defaulting to 180 (top-to-bottom gradient).
// You can use any CSS linear-gradient tool on the web to set these up.
// Changing the color space is also supported, check the wiki for more info.
//
// active-gradient from="#80c8ff" to="#c7ff7f" angle=45
// You can also color the gradient relative to the entire view
// of the workspace, rather than relative to just the window itself.
// To do that, set relative-to="workspace-view".
//
// inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
}
// You can also add a border. It's similar to the focus ring, but always visible.
border {
// The settings are the same as for the focus ring.
// If you enable the border, you probably want to disable the focus ring.
off
width 4
active-color "#ffc87f"
inactive-color "#505050"
// Color of the border around windows that request your attention.
urgent-color "#9b0000"
// Gradients can use a few different interpolation color spaces.
// For example, this is a pastel rainbow gradient via in="oklch longer hue".
//
// active-gradient from="#e5989b" to="#ffb4a2" angle=45 relative-to="workspace-view" in="oklch longer hue"
// inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
}
// You can enable drop shadows for windows.
shadow {
// Uncomment the next line to enable shadows.
// on
// By default, the shadow draws only around its window, and not behind it.
// Uncomment this setting to make the shadow draw behind its window.
//
// Note that niri has no way of knowing about the CSD window corner
// radius. It has to assume that windows have square corners, leading to
// shadow artifacts inside the CSD rounded corners. This setting fixes
// those artifacts.
//
// However, instead you may want to set prefer-no-csd and/or
// geometry-corner-radius. Then, niri will know the corner radius and
// draw the shadow correctly, without having to draw it behind the
// window. These will also remove client-side shadows if the window
// draws any.
//
// draw-behind-window true
// You can change how shadows look. The values below are in logical
// pixels and match the CSS box-shadow properties.
// Softness controls the shadow blur radius.
softness 30
// Spread expands the shadow.
spread 5
// Offset moves the shadow relative to the window.
offset x=0 y=5
// You can also change the shadow color and opacity.
color "#0007"
}
// Struts shrink the area occupied by windows, similarly to layer-shell panels.
// You can think of them as a kind of outer gaps. They are set in logical pixels.
// Left and right struts will cause the next window to the side to always be visible.
// Top and bottom struts will simply add outer gaps in addition to the area occupied by
// layer-shell panels and regular gaps.
struts {
// left 64
// right 64
// top 64
// bottom 64
}
}
// Add lines like this to spawn processes at startup.
// Note that running niri as a session supports xdg-desktop-autostart,
// which may be more convenient to use.
// See the binds section below for more spawn examples.
// This line starts waybar, a commonly used bar for Wayland compositors.
spawn-at-startup "waybar"
// To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup:
// spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell"
hotkey-overlay {
// Uncomment this line to disable the "Important Hotkeys" pop-up at startup.
// skip-at-startup
}
// Uncomment this line to ask the clients to omit their client-side decorations if possible.
// If the client will specifically ask for CSD, the request will be honored.
// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners.
// This option will also fix border/focus ring drawing behind some semitransparent windows.
// After enabling or disabling this, you need to restart the apps for this to take effect.
// prefer-no-csd
// You can change the path where screenshots are saved.
// A ~ at the front will be expanded to the home directory.
// The path is formatted with strftime(3) to give you the screenshot date and time.
screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
// You can also set this to null to disable saving screenshots to disk.
// screenshot-path null
// Animation settings.
// The wiki explains how to configure individual animations:
// https://niri-wm.github.io/niri/Configuration:-Animations
animations {
// Uncomment to turn off all animations.
// off
// Slow down all animations by this factor. Values below 1 speed them up instead.
// slowdown 3.0
}
// Window rules let you adjust behavior for individual windows.
// Find more information on the wiki:
// https://niri-wm.github.io/niri/Configuration:-Window-Rules
// Work around WezTerm's initial configure bug
// by setting an empty default-column-width.
window-rule {
// This regular expression is intentionally made as specific as possible,
// since this is the default config, and we want no false positives.
// You can get away with just app-id="wezterm" if you want.
match app-id=r#"^org\.wezfurlong\.wezterm$"#
default-column-width {}
}
// Open the Firefox picture-in-picture player as floating by default.
window-rule {
// This app-id regular expression will work for both:
// - host Firefox (app-id is "firefox")
// - Flatpak Firefox (app-id is "org.mozilla.firefox")
match app-id=r#"firefox$"# title="^Picture-in-Picture$"
open-floating true
}
// Example: block out two password managers from screen capture.
// (This example rule is commented out with a "/-" in front.)
/-window-rule {
match app-id=r#"^org\.keepassxc\.KeePassXC$"#
match app-id=r#"^org\.gnome\.World\.Secrets$"#
block-out-from "screen-capture"
// Use this instead if you want them visible on third-party screenshot tools.
// block-out-from "screencast"
}
// Example: enable rounded corners for all windows.
// (This example rule is commented out with a "/-" in front.)
/-window-rule {
geometry-corner-radius 12
clip-to-geometry true
}
binds {
// Keys consist of modifiers separated by + signs, followed by an XKB key name
// in the end. To find an XKB name for a particular key, you may use a program
// like wev.
//
// "Mod" is a special modifier equal to Super when running on a TTY, and to Alt
// when running as a winit window.
//
// Most actions that you can bind here can also be invoked programmatically with
// `niri msg action do-something`.
// Mod-Shift-/, which is usually the same as Mod-?,
// shows a list of important hotkeys.
Mod+Shift+Slash { show-hotkey-overlay; }
// Suggested binds for running programs: terminal, app launcher, screen locker.
Mod+T hotkey-overlay-title="Open a Terminal: alacritty" { spawn "alacritty"; }
Mod+D hotkey-overlay-title="Run an Application: fuzzel" { spawn "fuzzel"; }
Super+Alt+L hotkey-overlay-title="Lock the Screen: swaylock" { spawn "swaylock"; }
// Use spawn-sh to run a shell command. Do this if you need pipes, multiple commands, etc.
// Note: the entire command goes as a single argument. It's passed verbatim to `sh -c`.
// For example, this is a standard bind to toggle the screen reader (orca).
Super+Alt+S allow-when-locked=true hotkey-overlay-title=null { spawn-sh "pkill orca || exec orca"; }
// Example volume keys mappings for PipeWire & WirePlumber.
// The allow-when-locked=true property makes them work even when the session is locked.
// Using spawn-sh allows to pass multiple arguments together with the command.
// "-l 1.0" limits the volume to 100%.
XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0"; }
XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; }
XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; }
XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; }
// Example media keys mapping using playerctl.
// This will work with any MPRIS-enabled media player.
XF86AudioPlay allow-when-locked=true { spawn-sh "playerctl play-pause"; }
XF86AudioStop allow-when-locked=true { spawn-sh "playerctl stop"; }
XF86AudioPrev allow-when-locked=true { spawn-sh "playerctl previous"; }
XF86AudioNext allow-when-locked=true { spawn-sh "playerctl next"; }
// Example brightness key mappings for brightnessctl.
// You can use regular spawn with multiple arguments too (to avoid going through "sh"),
// but you need to manually put each argument in separate "" quotes.
XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; }
XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; }
// Open/close the Overview: a zoomed-out view of workspaces and windows.
// You can also move the mouse into the top-left hot corner,
// or do a four-finger swipe up on a touchpad.
Mod+O repeat=false { toggle-overview; }
Mod+Q repeat=false { close-window; }
Mod+Left { focus-column-left; }
Mod+Down { focus-window-down; }
Mod+Up { focus-window-up; }
Mod+Right { focus-column-right; }
Mod+H { focus-column-left; }
Mod+J { focus-window-down; }
Mod+K { focus-window-up; }
Mod+L { focus-column-right; }
Mod+Ctrl+Left { move-column-left; }
Mod+Ctrl+Down { move-window-down; }
Mod+Ctrl+Up { move-window-up; }
Mod+Ctrl+Right { move-column-right; }
Mod+Ctrl+H { move-column-left; }
Mod+Ctrl+J { move-window-down; }
Mod+Ctrl+K { move-window-up; }
Mod+Ctrl+L { move-column-right; }
// Alternative commands that move across workspaces when reaching
// the first or last window in a column.
// Mod+J { focus-window-or-workspace-down; }
// Mod+K { focus-window-or-workspace-up; }
// Mod+Ctrl+J { move-window-down-or-to-workspace-down; }
// Mod+Ctrl+K { move-window-up-or-to-workspace-up; }
Mod+Home { focus-column-first; }
Mod+End { focus-column-last; }
Mod+Ctrl+Home { move-column-to-first; }
Mod+Ctrl+End { move-column-to-last; }
Mod+Shift+Left { focus-monitor-left; }
Mod+Shift+Down { focus-monitor-down; }
Mod+Shift+Up { focus-monitor-up; }
Mod+Shift+Right { focus-monitor-right; }
Mod+Shift+H { focus-monitor-left; }
Mod+Shift+J { focus-monitor-down; }
Mod+Shift+K { focus-monitor-up; }
Mod+Shift+L { focus-monitor-right; }
Mod+Shift+Ctrl+Left { move-column-to-monitor-left; }
Mod+Shift+Ctrl+Down { move-column-to-monitor-down; }
Mod+Shift+Ctrl+Up { move-column-to-monitor-up; }
Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
// Alternatively, there are commands to move just a single window:
// Mod+Shift+Ctrl+Left { move-window-to-monitor-left; }
// ...
// And you can also move a whole workspace to another monitor:
// Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; }
// ...
Mod+Page_Down { focus-workspace-down; }
Mod+Page_Up { focus-workspace-up; }
Mod+U { focus-workspace-down; }
Mod+I { focus-workspace-up; }
Mod+Ctrl+Page_Down { move-column-to-workspace-down; }
Mod+Ctrl+Page_Up { move-column-to-workspace-up; }
Mod+Ctrl+U { move-column-to-workspace-down; }
Mod+Ctrl+I { move-column-to-workspace-up; }
// Alternatively, there are commands to move just a single window:
// Mod+Ctrl+Page_Down { move-window-to-workspace-down; }
// ...
Mod+Shift+Page_Down { move-workspace-down; }
Mod+Shift+Page_Up { move-workspace-up; }
Mod+Shift+U { move-workspace-down; }
Mod+Shift+I { move-workspace-up; }
// You can bind mouse wheel scroll ticks using the following syntax.
// These binds will change direction based on the natural-scroll setting.
//
// To avoid scrolling through workspaces really fast, you can use
// the cooldown-ms property. The bind will be rate-limited to this value.
// You can set a cooldown on any bind, but it's most useful for the wheel.
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
Mod+WheelScrollRight { focus-column-right; }
Mod+WheelScrollLeft { focus-column-left; }
Mod+Ctrl+WheelScrollRight { move-column-right; }
Mod+Ctrl+WheelScrollLeft { move-column-left; }
// Usually scrolling up and down with Shift in applications results in
// horizontal scrolling; these binds replicate that.
Mod+Shift+WheelScrollDown { focus-column-right; }
Mod+Shift+WheelScrollUp { focus-column-left; }
Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
Mod+Ctrl+Shift+WheelScrollUp { move-column-left; }
// Similarly, you can bind touchpad scroll "ticks".
// Touchpad scrolling is continuous, so for these binds it is split into
// discrete intervals.
// These binds are also affected by touchpad's natural-scroll, so these
// example binds are "inverted", since we have natural-scroll enabled for
// touchpads by default.
// Mod+TouchpadScrollDown { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02+"; }
// Mod+TouchpadScrollUp { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02-"; }
// You can refer to workspaces by index. However, keep in mind that
// niri is a dynamic workspace system, so these commands are kind of
// "best effort". Trying to refer to a workspace index bigger than
// the current workspace count will instead refer to the bottommost
// (empty) workspace.
//
// For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on
// will all refer to the 3rd workspace.
Mod+1 { focus-workspace 1; }
Mod+2 { focus-workspace 2; }
Mod+3 { focus-workspace 3; }
Mod+4 { focus-workspace 4; }
Mod+5 { focus-workspace 5; }
Mod+6 { focus-workspace 6; }
Mod+7 { focus-workspace 7; }
Mod+8 { focus-workspace 8; }
Mod+9 { focus-workspace 9; }
Mod+Ctrl+1 { move-column-to-workspace 1; }
Mod+Ctrl+2 { move-column-to-workspace 2; }
Mod+Ctrl+3 { move-column-to-workspace 3; }
Mod+Ctrl+4 { move-column-to-workspace 4; }
Mod+Ctrl+5 { move-column-to-workspace 5; }
Mod+Ctrl+6 { move-column-to-workspace 6; }
Mod+Ctrl+7 { move-column-to-workspace 7; }
Mod+Ctrl+8 { move-column-to-workspace 8; }
Mod+Ctrl+9 { move-column-to-workspace 9; }
// Alternatively, there are commands to move just a single window:
// Mod+Ctrl+1 { move-window-to-workspace 1; }
// Switches focus between the current and the previous workspace.
// Mod+Tab { focus-workspace-previous; }
// The following binds move the focused window in and out of a column.
// If the window is alone, they will consume it into the nearby column to the side.
// If the window is already in a column, they will expel it out.
Mod+BracketLeft { consume-or-expel-window-left; }
Mod+BracketRight { consume-or-expel-window-right; }
// Consume one window from the right to the bottom of the focused column.
Mod+Comma { consume-window-into-column; }
// Expel the bottom window from the focused column to the right.
Mod+Period { expel-window-from-column; }
// Cycle through widths set in preset-column-widths.
Mod+R { switch-preset-column-width; }
// Cycling through the presets in reverse order is also possible.
Mod+Shift+R { switch-preset-column-width-back; }
Mod+Ctrl+Shift+R { switch-preset-window-height; }
Mod+Ctrl+R { reset-window-height; }
Mod+F { maximize-column; }
Mod+Shift+F { fullscreen-window; }
// While maximize-column leaves gaps and borders around the window,
// maximize-window-to-edges doesn't: the window expands to the edges of the screen.
// This bind corresponds to normal window maximizing,
// e.g. by double-clicking on the titlebar.
Mod+M { maximize-window-to-edges; }
// Expand the focused column to space not taken up by other fully visible columns.
// Makes the column "fill the rest of the space".
Mod+Ctrl+F { expand-column-to-available-width; }
Mod+C { center-column; }
// Center all fully visible columns on screen.
Mod+Ctrl+C { center-visible-columns; }
// Finer width adjustments.
// This command can also:
// * set width in pixels: "1000"
// * adjust width in pixels: "-5" or "+5"
// * set width as a percentage of screen width: "25%"
// * adjust width as a percentage of screen width: "-10%" or "+10%"
// Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0,
// set-column-width "100" will make the column occupy 200 physical screen pixels.
Mod+Minus { set-column-width "-10%"; }
Mod+Equal { set-column-width "+10%"; }
// Finer height adjustments when in column with other windows.
Mod+Shift+Minus { set-window-height "-10%"; }
Mod+Shift+Equal { set-window-height "+10%"; }
// Move the focused window between the floating and the tiling layout.
Mod+V { toggle-window-floating; }
Mod+Shift+V { switch-focus-between-floating-and-tiling; }
// Toggle tabbed column display mode.
// Windows in this column will appear as vertical tabs,
// rather than stacked on top of each other.
Mod+W { toggle-column-tabbed-display; }
// Actions to switch layouts.
// Note: if you uncomment these, make sure you do NOT have
// a matching layout switch hotkey configured in xkb options above.
// Having both at once on the same hotkey will break the switching,
// since it will switch twice upon pressing the hotkey (once by xkb, once by niri).
// Mod+Space { switch-layout "next"; }
// Mod+Shift+Space { switch-layout "prev"; }
Print { screenshot; }
Ctrl+Print { screenshot-screen; }
Alt+Print { screenshot-window; }
// Applications such as remote-desktop clients and software KVM switches may
// request that niri stops processing the keyboard shortcuts defined here
// so they may, for example, forward the key presses as-is to a remote machine.
// It's a good idea to bind an escape hatch to toggle the inhibitor,
// so a buggy application can't hold your session hostage.
//
// The allow-inhibiting=false property can be applied to other binds as well,
// which ensures niri always processes them, even when an inhibitor is active.
Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
// The quit action will show a confirmation dialog to avoid accidental exits.
Mod+Shift+E { quit; }
Ctrl+Alt+Delete { quit; }
// Powers off the monitors. To turn them back on, do any input like
// moving the mouse or pressing any other key.
Mod+Shift+P { power-off-monitors; }
}

View file

@ -0,0 +1,10 @@
// ! DO NOT EDIT !
// ! AUTO-GENERATED BY DMS !
// ! CHANGES WILL BE OVERWRITTEN !
// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE !
recent-windows {
highlight {
corner-radius 12
}
}

View file

@ -0,0 +1 @@
binds {}

View file

@ -0,0 +1,39 @@
// ! Auto-generated file. Do not edit directly.
// Remove `include "dms/colors.kdl"` from your config to override.
layout {
background-color "transparent"
focus-ring {
active-color "#eeb1ff"
inactive-color "#919191"
urgent-color "#ffb4ab"
}
border {
active-color "#eeb1ff"
inactive-color "#919191"
urgent-color "#ffb4ab"
}
shadow {
color "#00000070"
}
tab-indicator {
active-color "#eeb1ff"
inactive-color "#919191"
urgent-color "#ffb4ab"
}
insert-hint {
color "#eeb1ff80"
}
}
recent-windows {
highlight {
active-color "#662f79"
urgent-color "#ffb4ab"
}
}

View file

@ -0,0 +1,9 @@
// ! DO NOT EDIT !
// ! AUTO-GENERATED BY DMS !
// ! CHANGES WILL BE OVERWRITTEN !
// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE !
cursor {
xcursor-theme "Bibata-Modern-Classic"
xcursor-size 24
}

View file

@ -0,0 +1,22 @@
// ! DO NOT EDIT !
// ! AUTO-GENERATED BY DMS !
// ! CHANGES WILL BE OVERWRITTEN !
// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE !
layout {
gaps 4
border {
width 2
}
focus-ring {
width 2
}
}
window-rule {
geometry-corner-radius 12
clip-to-geometry true
tiled-state true
draw-border-with-background false
}

View file

View file

View file

@ -0,0 +1,9 @@
// ! DO NOT EDIT !
// ! AUTO-GENERATED BY DMS !
// ! CHANGES WILL BE OVERWRITTEN !
// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE !
layer-rule {
match namespace="dms:blurwallpaper"
place-within-backdrop true
}

136
home/config/nvim/init.lua Normal file
View file

@ -0,0 +1,136 @@
-------------------------------------------------------------------------------
-- 1. Leader Keys & Timeout Options
-------------------------------------------------------------------------------
vim.keymap.set("", "<Space>", "Nop")
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
-------------------------------------------------------------------------------
-- 2. Built-in Plugin Manager (vim.pack)
-------------------------------------------------------------------------------
vim.pack.add({
'https://github.com/RomanAverin/charleston.nvim',
'https://github.com/nvim-tree/nvim-web-devicons',
'https://github.com/nvim-lualine/lualine.nvim',
'https://github.com/stevearc/oil.nvim',
'https://github.com/nvim-lua/plenary.nvim',
'https://github.com/nvim-telescope/telescope.nvim',
'https://github.com/nvimdev/dashboard-nvim',
})
-------------------------------------------------------------------------------
-- 3. Options
-------------------------------------------------------------------------------
local opt = vim.opt
opt.showmode = false
opt.number = true
opt.relativenumber = true
opt.tabstop = 4
opt.shiftwidth = 4
opt.expandtab = true
opt.autoindent = true
opt.smartindent = true
opt.background = "dark"
opt.signcolumn = "yes"
opt.cursorline = true
opt.listchars = "tab: ,multispace:| ,eol:󰌑"
opt.list = true
opt.clipboard = "unnamedplus"
opt.timeoutlen = 2000
-- opt.timeout = false
-------------------------------------------------------------------------------
-- 4. Plugin Configurations & Colorscheme
-------------------------------------------------------------------------------
-- Colorscheme
vim.cmd.colorscheme('charleston')
-- Lualine
require('lualine').setup({
options = {
theme = 'charleston',
component_separators = { left = '', right = '' },
section_separators = { left = '', right = '' },
globalstatus = true,
},
sections = {
lualine_a = { 'mode' },
lualine_b = { 'branch', 'diff', 'diagnostics' },
lualine_c = { 'filename' },
lualine_x = { 'encoding', 'fileformat', 'filetype' },
lualine_y = { 'progress' },
lualine_z = { 'location' },
},
})
-- Oil
require('oil').setup({
default_file_explorer = true,
delete_to_trash = true,
skip_confirm_for_simple_edits = true,
view_options = {
show_hidden = true,
},
})
-- Telescope
require('telescope').setup({
defaults = {
path_display = { "smart" },
file_ignore_patterns = { "node_modules", ".git/" },
},
})
-- Dashboard
require('dashboard').setup({
theme = 'doom',
config = {
header = {
" ",
" ███╗ ██╗ ███████╗ ██████╗ ██╗ ██╗ ██╗ ███╗ ███╗",
" ████╗ ██║ ██╔════╝██╔═══██╗ ██║ ██║ ██║ ████╗ ████║",
" ██╔██╗ ██║ █████╗ ██║ ██║ ██║ ██║ ██║ ██╔████╔██║",
" ██║╚██╗██║ ██╔══╝ ██║ ██║ ╚██╗ ██╔╝ ██║ ██║╚██╔╝██║",
" ██║ ╚████║ ███████╗╚██████╔╝ ╚████╔╝ ██║ ██║ ╚═╝ ██║",
" ╚═╝ ╚═══╝ ╚══════╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝",
" ",
},
center = {
{ icon = '', desc = 'Find File ', action = 'Telescope find_files', key = 'f' },
{ icon = '', desc = 'Find Text ', action = 'Telescope live_grep', key = 't' },
{ icon = '', desc = 'Recent Files ', action = 'Telescope oldfiles', key = 'r' },
{ icon = '', desc = 'File Explorer ', action = 'Oil', key = 'e' },
{ icon = '', desc = 'New File ', action = 'ene | startinsert', key = 'n' },
{ icon = '󰈆 ', desc = 'Quit Neovim ', action = 'qa', key = 'q' },
},
footer = { "", "⚡ Neovim 0.12 Minimal Config" },
},
})
-------------------------------------------------------------------------------
-- 5. Keymaps
-------------------------------------------------------------------------------
local keymap = vim.keymap.set
local opts = { silent = true }
-- File & Quit shortcuts
keymap('n', '<leader>w', '<cmd>write<CR>', opts)
keymap('n', '<leader>q', '<cmd>quit<CR>', opts)
keymap('n', '<leader>QQ', '<cmd>q!<CR>', opts)
keymap('n', '<leader>wq', '<cmd>wq<CR>', opts)
-- UI Toggles
keymap('n', '<leader>r', '<cmd>set wrap!<CR>', opts)
keymap('n', '<leader>n', '<cmd>set number! relativenumber!<CR>', opts)
-- File Explorer (Oil)
keymap('n', '-', function() require('oil').open() end, { desc = 'Open parent directory in Oil' })
keymap('n', '<leader>e', function() require('oil').open() end, { desc = 'Open parent directory in Oil' })
-- Telescope Keymaps
local builtin = require('telescope.builtin')
keymap('n', '<leader>ff', builtin.find_files, { desc = 'Find files' })
keymap('n', '<leader>fg', builtin.live_grep, { desc = 'Live grep search' })
keymap('n', '<leader>fb', builtin.buffers, { desc = 'Find open buffers' })
keymap('n', '<leader>fh', builtin.help_tags, { desc = 'Find help tags' })

View file

@ -0,0 +1,40 @@
{
"plugins": {
"blink.cmp": {
"rev": "d26c6b0a4ea9188b9d10fdd5b180deba7675e3cd",
"src": "https://github.com/Saghen/blink.cmp"
},
"blink.lib": {
"rev": "2789206e10a0e4880f808c2aaf52bc57d876b481",
"src": "https://github.com/Saghen/blink.lib"
},
"charleston.nvim": {
"rev": "363cb2bbca78c353bb0a2014d3b160db18c9c2a8",
"src": "https://github.com/RomanAverin/charleston.nvim"
},
"dashboard-nvim": {
"rev": "f787e3462c2ee2b6117b17c1aa4ddf66cb6f57fe",
"src": "https://github.com/nvimdev/dashboard-nvim"
},
"lualine.nvim": {
"rev": "221ce6b2d999187044529f49da6554a92f740a96",
"src": "https://github.com/nvim-lualine/lualine.nvim"
},
"nvim-web-devicons": {
"rev": "2ae6958df7ced50baac5035cec0c15799eedfbf7",
"src": "https://github.com/nvim-tree/nvim-web-devicons"
},
"oil.nvim": {
"rev": "b73018b75affd13fa38e2fc94ef753b465f770d7",
"src": "https://github.com/stevearc/oil.nvim"
},
"plenary.nvim": {
"rev": "74b06c6c75e4eeb3108ec01852001636d85a932b",
"src": "https://github.com/nvim-lua/plenary.nvim"
},
"telescope.nvim": {
"rev": "427b576c16792edad01a92b89721d923c19ad60f",
"src": "https://github.com/nvim-telescope/telescope.nvim"
}
}
}

2
home/config/ssh/config Executable file
View file

@ -0,0 +1,2 @@
Host *
SetEnv TERM=xterm-256color

View file

@ -0,0 +1,8 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABA2xrdF06
FzXtwjxqZoFO/8AAAAGAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIMvOXXwkL3BR+pNX
XEj1x7MiVpvCH0B3gKz/ZwuN+34VAAAAsIGyFyWBvRTZmWmcRi2febVfy2Zr/pPiR7Lr8l
NVXLMPzxx7svkJvCD+A2S9jnI9lhgUsiEQKhG/5UsvjFVdrN7s/eICqd8dv5bxvp8y8Mrj
9xp6pkruJBimAFdSsJKWrvnoPLU7vxm8cANBMSf9znR7eBoEcw6blKXbUx9UIQWBqt+ccq
eLnFxNKWBhUI47Yu2sO8DV7/Zk2syklInKBz1tMP1cpIQgqCG6utJNWIZj
-----END OPENSSH PRIVATE KEY-----

View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMvOXXwkL3BR+pNXXEj1x7MiVpvCH0B3gKz/ZwuN+34V warrentyexpired@damagedProperty

19
home/config/ssh/known_hosts Executable file
View file

@ -0,0 +1,19 @@
[192.227.229.130]:5522 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDcguEeqsjzfNtI8RvUbCCGO+n8BZPuf/jTy3OR/ejCSghjzL7rmIvDIHzjYeng5SzULabQAwnYYwTw8f6Iw2WxFM1av7F6dpH10FPX/IgUWmZHV4KOH09qXoB+VaFpkYYhnxuX1JXeQ39bTA0H2T6mLYCLTBcxmTO4sU1KroXHLKyej2Lc2AbrRsRTxKdTdMuovBrawUPBEWpUiNDBZ0OQcj7wjqtG9KT4DKiHnYXd4jBRdDvdbeLw6GL+tUUdwU9c+RUWb5W/CmBTyucHy8Psqzh3aq7QwPfkoxLtHAYjzhjxT3WXfVYCbaaCVvRVYRfoLvC8emcF0ly274D0DNih
192.168.88.111 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMwycBkPubHw4CvD8xuR9PEK5zPmEXUavWCXQnpDZrAP
192.168.88.111 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCkFNa3ouKyziXkCIQLOHIJ5+vzwqclSkvePhUpqOPZ5TkNZj+jKErN1Ar/7+wi7KPcuN7zxCCsH8YkU8HRZTdvbJ0aVqtI7b2EwQBqOiC/C+eyoUjGxf/TROLMjK+Ev0Fqdxib8iwOPzlQRv9490QDKRNFbxMpIC+iQ4y8l3aSzOw4R5kcvWpDn8TqpQQ1JRlWokwGMSIRijI6UyGC+yF7CoKRiBBf3BNfIKmzLUPqJolSomNwghoZleJf/FsWLvsdYhpFFOEGGSdH8tLTjCoZQ7qpLdh+/dYpAIXOsVGAFiQmhLsAj7NPuoUOoIhN7lCRNYyot0ss2l4rajwSM3KrzgIMHREuDMUhGvnE4ry2OIO6bCfikjRiRrPuu1AkRuN7XHDkx3sZzIVPn6CrS270P2Rw66rdlmUCsNCOpCSgEvH1V8w3WbHVMgJejr41pbdAyAJP2+4mc4gkV7lNmjdrXy+A0SUO5MjivVa1nyHcrUe3CRcr6DnAs6uqzolBRys=
192.168.88.111 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBA54xsJjIRvC2MlYFS4aYUFKycBeWgBmRX5yUpkc9lYsi7R9RfpvFtBpMGoeN3FslsNuzJbpoy+uKqQI32haGpU=
uo-memento.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFLbaDvKFt8p/yXJN8/w0vxuZ3QyH4HEHgS8hhFczRet
uo-memento.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDAoLBgsSwDYEwzsMZ8x3O2HenUuD4y7kgHVbjruIM/vBkSyuuTrGM+ctJJmKF4ars9UprrrPLQER3V6STFPJ8jjnbeDKUQ7AjucygucZe7BcR4s5J0w/KaVX6xQO/pIfNd04wZDHtoSHg44Yjjt7NYEfDC0XeJpLigZ1B2NHkOp3SE0Tu1/7AQlxRnBHfsevuHt/7VFNmFPJIYx77qPHfgHeENW0mN08fPTLJY/d8pqiAGne6DUkh6NcID1Hh4qqx5GTKjvq0b5vKzg2T/XLwC/oxDXmUTOZW2qanpKmcay0XjjTZZIAAO1dUQLVNQb8yhQ2ZBPfq/93HHOsml/9ulfCdBI7huv+fPertubZUGw/BccJQtzP+ifmOwY2G45eETZsFyOMWjsnny6fuoCtQ0VndEhEV/hEoU60MeyF9IpIhF944rHrKyLCLrEFSBW0m6xG3rCwIjhligeFOhxeH6mbuS5wQsSEa6LJcdefjIprjn/+3rxxBgFPaHb/Mtirk=
uo-memento.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMy2o5Igq4piiQMe6s+av6HPcQz+ZtJ5cLD8AhsDKZ7KERxcgS1/37PqVsny4VHV1o1NHojM3ZYx2oyaKe139cw=
192.168.88.100 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPKqgGyqrsOQ2EkO4+EKNk1AnAlEBtgFVmQStG30JNaz
192.168.88.100 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCd/0letGnTTNI1YjXsJWHwtL4cz4605NABJ+D317+3dBTSD6Z7tEpmcYmjoLvaiLQ0iVenQtGjDiXF2bqM/Q6G5DwAKWiYoAp+9hlZxdV9Zqj5Q9QedmFy9eVWIXHrICHu8t0qzMM+I+2BBHUyORDVMXQ3UquGl1CrmB7nr0FpdiChtk77+LevqJSrhRmtV7qlqakw3zC99QqZNlWN3xRZAeNDfyn7HJw2yVRK+6A41lyW7w7O9YnkNjyIPhxZ4OcL0XL3JmcqKrP51+bFJVgtPPdsptCRUiAuGk75Z1BLEp0yV2cKwRH1EyTMuhezSTNeIf2fuW0MTe5KgFIrpC077pZoFHR1jwJBCGDHplf1mxoBNIlswh68mGWYmJ6FyChosT5tGPLXJtm3id+q7Z1cfDf8iEq3D1zZLnhwmho++Ink1qZevhFeK3DRmOOf4WzDPxucq5fjGnYuK920i7i4syF3gBB75LzyMBD+bmAGZsnpqXM2J08DkuqYv1ES8zE=
192.168.88.100 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBAZ5WyFSHQ9twwjHcjltJj5XXLCHZ0fOFXgZd7fTkqeQJNepWEmHYGxkF8at7p1nPA67sDP3E4X9CJeJLIbK3/s=
192.168.88.101 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIevUeB625pXqd46hCjcGoaLHTqrS9JpUWGLEvsKVT7T
192.168.88.101 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC4znA64J4SyI7N1P5ycIhPAJx3cLZF8zL+Mn6Sh1DJYV2BuLaKNB0GNW/KtKg9DMTQ9jRRa4y9cNJ4aQqItjCMjq0Jd5fA02KDNMKc+1DS48nYHGVpXGL8cLQhREU5/IQr3CR6Myt8v3+O0deVy3PX5xrDCt0qeGJy0Ni0jqGgr91lKPt+hXdcOIjMNknA3jT6j37htRHvqVeCijchWwlJTWgECX/bTNUshlyklpz2338B+STT2/U59tkIPYcEhvF+mOq3jqJ9n/0trHPtgJwX0VsgSMCMVaaXLVN8is9z01YIJLr3kDfQPQ4eOv3ChYSV8PqeAJwBXWge1VXRN+CCz3EzUY95OfBSHY/WeRrRUkgmi9i0mBkIAkTTuG6ygmng7qmQGojAbHROsUFtoq6ntMSOwW95Uass1BX+kwWeGjQT5rKL8oxUBfno44Mb0cjQtMsjdunDAkQXBkt2oo6O5xwnG8BU52wJdqZoeJODwcG6mY0xwLvmjXV9D5NBDfM=
192.168.88.101 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJ5EvPw4ismdOwTKvTA6wEDrmvgwH5Yfp3CXZhDsGC9+0mK/+LdpKtQaiM7nAbkoR8Rr5+Zq63VfpImGmCb/8Ro=
github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl
github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=
github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=
[192.227.229.130]:5522 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJzdoiAvNrdxRzNOSI3APdJaZOBNTzz7yuJpSg+2h28E0Pprk3VmyO/zjYZ6EHxVSmG4ElimFeNL11D7DsBN5FA=
[192.227.229.130]:5522 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKTVXE1v5egp5iHVc9R8o/0FipXIJAZ9Rc6ovyrORgWy
192.168.88.1 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDgD1FYF6x5ouEEog0lrs8DIgEIYjGfq3xE25y3dGDvZ

16
home/config/ssh/known_hosts.old Executable file
View file

@ -0,0 +1,16 @@
[192.227.229.130]:5522 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDcguEeqsjzfNtI8RvUbCCGO+n8BZPuf/jTy3OR/ejCSghjzL7rmIvDIHzjYeng5SzULabQAwnYYwTw8f6Iw2WxFM1av7F6dpH10FPX/IgUWmZHV4KOH09qXoB+VaFpkYYhnxuX1JXeQ39bTA0H2T6mLYCLTBcxmTO4sU1KroXHLKyej2Lc2AbrRsRTxKdTdMuovBrawUPBEWpUiNDBZ0OQcj7wjqtG9KT4DKiHnYXd4jBRdDvdbeLw6GL+tUUdwU9c+RUWb5W/CmBTyucHy8Psqzh3aq7QwPfkoxLtHAYjzhjxT3WXfVYCbaaCVvRVYRfoLvC8emcF0ly274D0DNih
192.168.88.111 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMwycBkPubHw4CvD8xuR9PEK5zPmEXUavWCXQnpDZrAP
192.168.88.111 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCkFNa3ouKyziXkCIQLOHIJ5+vzwqclSkvePhUpqOPZ5TkNZj+jKErN1Ar/7+wi7KPcuN7zxCCsH8YkU8HRZTdvbJ0aVqtI7b2EwQBqOiC/C+eyoUjGxf/TROLMjK+Ev0Fqdxib8iwOPzlQRv9490QDKRNFbxMpIC+iQ4y8l3aSzOw4R5kcvWpDn8TqpQQ1JRlWokwGMSIRijI6UyGC+yF7CoKRiBBf3BNfIKmzLUPqJolSomNwghoZleJf/FsWLvsdYhpFFOEGGSdH8tLTjCoZQ7qpLdh+/dYpAIXOsVGAFiQmhLsAj7NPuoUOoIhN7lCRNYyot0ss2l4rajwSM3KrzgIMHREuDMUhGvnE4ry2OIO6bCfikjRiRrPuu1AkRuN7XHDkx3sZzIVPn6CrS270P2Rw66rdlmUCsNCOpCSgEvH1V8w3WbHVMgJejr41pbdAyAJP2+4mc4gkV7lNmjdrXy+A0SUO5MjivVa1nyHcrUe3CRcr6DnAs6uqzolBRys=
192.168.88.111 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBA54xsJjIRvC2MlYFS4aYUFKycBeWgBmRX5yUpkc9lYsi7R9RfpvFtBpMGoeN3FslsNuzJbpoy+uKqQI32haGpU=
uo-memento.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFLbaDvKFt8p/yXJN8/w0vxuZ3QyH4HEHgS8hhFczRet
uo-memento.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDAoLBgsSwDYEwzsMZ8x3O2HenUuD4y7kgHVbjruIM/vBkSyuuTrGM+ctJJmKF4ars9UprrrPLQER3V6STFPJ8jjnbeDKUQ7AjucygucZe7BcR4s5J0w/KaVX6xQO/pIfNd04wZDHtoSHg44Yjjt7NYEfDC0XeJpLigZ1B2NHkOp3SE0Tu1/7AQlxRnBHfsevuHt/7VFNmFPJIYx77qPHfgHeENW0mN08fPTLJY/d8pqiAGne6DUkh6NcID1Hh4qqx5GTKjvq0b5vKzg2T/XLwC/oxDXmUTOZW2qanpKmcay0XjjTZZIAAO1dUQLVNQb8yhQ2ZBPfq/93HHOsml/9ulfCdBI7huv+fPertubZUGw/BccJQtzP+ifmOwY2G45eETZsFyOMWjsnny6fuoCtQ0VndEhEV/hEoU60MeyF9IpIhF944rHrKyLCLrEFSBW0m6xG3rCwIjhligeFOhxeH6mbuS5wQsSEa6LJcdefjIprjn/+3rxxBgFPaHb/Mtirk=
uo-memento.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMy2o5Igq4piiQMe6s+av6HPcQz+ZtJ5cLD8AhsDKZ7KERxcgS1/37PqVsny4VHV1o1NHojM3ZYx2oyaKe139cw=
192.168.88.100 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPKqgGyqrsOQ2EkO4+EKNk1AnAlEBtgFVmQStG30JNaz
192.168.88.100 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCd/0letGnTTNI1YjXsJWHwtL4cz4605NABJ+D317+3dBTSD6Z7tEpmcYmjoLvaiLQ0iVenQtGjDiXF2bqM/Q6G5DwAKWiYoAp+9hlZxdV9Zqj5Q9QedmFy9eVWIXHrICHu8t0qzMM+I+2BBHUyORDVMXQ3UquGl1CrmB7nr0FpdiChtk77+LevqJSrhRmtV7qlqakw3zC99QqZNlWN3xRZAeNDfyn7HJw2yVRK+6A41lyW7w7O9YnkNjyIPhxZ4OcL0XL3JmcqKrP51+bFJVgtPPdsptCRUiAuGk75Z1BLEp0yV2cKwRH1EyTMuhezSTNeIf2fuW0MTe5KgFIrpC077pZoFHR1jwJBCGDHplf1mxoBNIlswh68mGWYmJ6FyChosT5tGPLXJtm3id+q7Z1cfDf8iEq3D1zZLnhwmho++Ink1qZevhFeK3DRmOOf4WzDPxucq5fjGnYuK920i7i4syF3gBB75LzyMBD+bmAGZsnpqXM2J08DkuqYv1ES8zE=
192.168.88.100 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBAZ5WyFSHQ9twwjHcjltJj5XXLCHZ0fOFXgZd7fTkqeQJNepWEmHYGxkF8at7p1nPA67sDP3E4X9CJeJLIbK3/s=
192.168.88.101 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIevUeB625pXqd46hCjcGoaLHTqrS9JpUWGLEvsKVT7T
192.168.88.101 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC4znA64J4SyI7N1P5ycIhPAJx3cLZF8zL+Mn6Sh1DJYV2BuLaKNB0GNW/KtKg9DMTQ9jRRa4y9cNJ4aQqItjCMjq0Jd5fA02KDNMKc+1DS48nYHGVpXGL8cLQhREU5/IQr3CR6Myt8v3+O0deVy3PX5xrDCt0qeGJy0Ni0jqGgr91lKPt+hXdcOIjMNknA3jT6j37htRHvqVeCijchWwlJTWgECX/bTNUshlyklpz2338B+STT2/U59tkIPYcEhvF+mOq3jqJ9n/0trHPtgJwX0VsgSMCMVaaXLVN8is9z01YIJLr3kDfQPQ4eOv3ChYSV8PqeAJwBXWge1VXRN+CCz3EzUY95OfBSHY/WeRrRUkgmi9i0mBkIAkTTuG6ygmng7qmQGojAbHROsUFtoq6ntMSOwW95Uass1BX+kwWeGjQT5rKL8oxUBfno44Mb0cjQtMsjdunDAkQXBkt2oo6O5xwnG8BU52wJdqZoeJODwcG6mY0xwLvmjXV9D5NBDfM=
192.168.88.101 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJ5EvPw4ismdOwTKvTA6wEDrmvgwH5Yfp3CXZhDsGC9+0mK/+LdpKtQaiM7nAbkoR8Rr5+Zq63VfpImGmCb/8Ro=
github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl
github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=
github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=

View file

@ -0,0 +1,30 @@
set -g mouse on
unbind C-b
set-option -g prefix C-Space
set -g renumber-windows on
set -g detach-on-destroy off
set -g set-clipboard on
unbind r
bind r source-file ~/.config/tmux/tmux.conf
bind h split-window -v -c "#{pane_current_path}"
bind v split-window -h -c "#{pane_current_path}"
bind X confirm-before -p "Kill session #S (y/n)" kill-session
set -g status-position top
set -g status-style "bg=default"
set -g status-justify "absolute-centre"
setw -g pane-border-status top
setw -g pane-border-format " "
setw -g pane-active-border-style "bg=default, fg=#E0E0E0"
setw -g pane-border-style "bg=default, fg=#E0E0E0"
setw -g pane-border-lines single
set -g window-status-current-format ""
set -g window-status-format ""
set -g window-status-separator ""
set -g status-left-length 100
set -g status-left "#{?client_prefix,#[fg=#CC0000]  #S ,#[fg=#CCCC00]  #S, #[fg=#66CC00]  #S }"
set -ga status-left "#[bg=default,fg=#e0e0e0,none]│"
set -ga status-left "#[bg=default,fg=#e0e0e0]  #{pane_current_command} "
set -ga status-left "#[bg=default,fg=#e0e0e0,none]│"
set -ga status-left "#[bg=default,fg=#0080ff]  #{=/-32/...:#{s|/home/$USER|~|:pane_current_path}} "
set -g status-right ""
set -g status-right-length 0

View file

@ -0,0 +1,12 @@
name: Workspace
root: ~/
windows:
- setup:
layout: main-horizontal
options:
main-pane-height: 90%
panes:
- Dev:
- clear
- Main:
- clear

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,010 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 559 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

BIN
home/files/Wallpapers/Garage.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 994 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
home/files/Wallpapers/Summer.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 MiB

BIN
home/files/Wallpapers/TheTree.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
home/files/Wallpapers/Walkway.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

BIN
home/files/Wallpapers/blue.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
home/files/Wallpapers/clouds.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 913 KiB

BIN
home/files/Wallpapers/panes.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

BIN
home/files/Wallpapers/result.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

BIN
home/files/Wallpapers/space.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 KiB

10722
home/files/nerdfont.csv Executable file

File diff suppressed because it is too large Load diff

91
home/home.nix Normal file
View file

@ -0,0 +1,91 @@
{ config, pkgs, ... }:
{
imports = [
./modules/fastfetch.nix
./modules/fuzzel.nix
./modules/scripts.nix
];
home.username = "warrentyexpired";
home.homeDirectory = "/home/warrentyexpired";
home.stateVersion = "26.05"; # Please read the comment before changing.
home.packages = [
];
home.file = {
"./.config/tmux/tmux.conf" = {
source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/NixOS/home/config/tmux/tmux.conf";
};
"./.config/nvim" = {
source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/NixOS/home/config/nvim";
recursive = true;
};
"./.config/tmuxinator" = {
source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/NixOS/home/config/tmuxinator";
recursive = true;
};
"./.config/fish" = {
source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/NixOS/home/config/fish";
recursive = true;
};
"./.config/ghostty" = {
source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/NixOS/home/config/ghostty";
recursive = true;
};
"./.config/niri" = {
source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/NixOS/home/config/niri";
recursive = true;
};
"./.ssh" = {
source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/NixOS/home/config/ssh";
recursive = true;
};
"./Pictures/Wallpapers" = {
source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/NixOS/home/files/Wallpapers";
recursive = true;
};
"./.local/share/applications/TazUO.desktop" = {
source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/NixOS/home/TazUO.desktop";
};
};
gtk = {
enable = true;
theme = {
name = "adw-gtk3-dark";
package = pkgs.adw-gtk3;
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
};
dconf.settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
};
};
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. These will be explicitly sourced when using a
# shell provided by Home Manager. If you don't want to manage your shell
# through Home Manager then you have to manually source 'hm-session-vars.sh'
# located at either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/warrentyexpired/etc/profile.d/hm-session-vars.sh
#
home.sessionVariables = {
# EDITOR = "emacs";
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
}

107
home/modules/fastfetch.nix Executable file
View file

@ -0,0 +1,107 @@
{ config, pkgs, ... }: {
programs.fastfetch = {
enable = true;
settings = {
display = {
separator = " -> ";
};
modules = [
{
type = "custom";
format = "{#90}";
}
{ type = "title"; }
{
type = "custom";
format = "{#90}";
}
{
type = "custom";
format = "{#90}";
}
# OS and Software Info
{
type = "os";
key = " OS";
format = "{pretty-name}";
keyColor = "36";
}
{
type = "kernel";
key = " Kernel";
keyColor = "36";
}
{
type = "uptime";
key = " 󰅐 Uptime";
keyColor = "36";
}
{
type = "packages";
key = " 󰏖 Packages";
keyColor = "36";
}
{
type = "shell";
key = " Shell";
keyColor = "36";
}
{
type = "wm";
key = " WM";
keyColor = "36";
}
{
type = "terminal";
key = " Terminal";
keyColor = "36";
}
# Hardware Info
{
type = "host";
key = " PC";
keyColor = "green";
}
{
type = "cpu";
key = " CPU";
keyColor = "green";
}
{
type = "gpu";
key = " 󰍛 GPU";
keyColor = "green";
}
{
type = "disk";
key = " Disk";
keyColor = "green";
}
{
type = "memory";
key = " 󰑭 RAM";
keyColor = "green";
}
{
type = "swap";
key = " 󰓡 Swap";
keyColor = "green";
}
{
type = "display";
key = " 󰍹 Monitor";
keyColor = "green";
}
{
type = "custom";
format = "{#90}";
}
"break"
{
type = "custom";
format = "{#90}{#90} {#31} {#32} {#33} {#34} {#35} {#36} {#37} {#38} {#39} {#90} ";
}
];
};
};
}

27
home/modules/fuzzel.nix Executable file
View file

@ -0,0 +1,27 @@
{ pkgs, ... }: {
programs.fuzzel = {
enable = true;
settings = {
main = {
font = "JetBrainsMono Nerd Font:size=16"; # Thin often maps to weight in Nix
dpi-aware = "no";
terminal = "${pkgs.ghostty}/bin/ghostty";
lines = 20;
width = 50;
icons-enabled = "yes";
icon-theme = "Papirus-Nord";
};
colors = {
background = "121212ee";
text = "ffffffff";
selection = "444444ee";
selection-text = "acbeb1ff";
border = "3c4541ff";
};
border = {
radius = 5;
width = 2; # Added a small width so your border color actually shows
};
};
};
}

18
home/modules/scripts.nix Executable file
View file

@ -0,0 +1,18 @@
{ pkgs, ... }:
let
# This packages your script and its dependencies
nerdfont-search = pkgs.writeShellScriptBin "nfPicker" ''
# We reference the CSV file.
# If you put nerdfont.csv in the same folder as this nix file:
CSV_PATH="${../files/nerdfont.csv}"
# Run the pipeline using packages from the Nix store
cat "$CSV_PATH" | ${pkgs.fuzzel}/bin/fuzzel -d | ${pkgs.gawk}/bin/gawk -F, '{printf $3}' | ${pkgs.wl-clipboard}/bin/wl-copy
${pkgs.wl-clipboard}/bin/wl-paste
'';
in
{
home.packages = [
nerdfont-search
];
}

239
nixos/configuration.nix Normal file
View file

@ -0,0 +1,239 @@
{ config, pkgs, ... }:
{
imports =
[
./hardware-configuration.nix
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.kernelPackages = pkgs.linuxPackages_latest;
boot = {
consoleLogLevel = 3;
initrd.verbose = false;
initrd.systemd.enable = true;
kernelParams = [
"quiet" "splash" "intremap=on" "boot.shell_on_fail" "udev.log_priority=3" "rd.systemd.show_status=auto" "ipv6.disable=1"
];
plymouth.enable = true;
plymouth.font = "${pkgs.hack-font}/share/fonts/truetype/Hack-Regular.ttf";
plymouth.logo = "${pkgs.nixos-icons}/share/icons/hicolor/128x128/apps/nix-snowflake.png";
};
networking.hostName = "damagedProperty"; # Define your hostname.
networking.networkmanager.enable = true;
networking.enableIPv6 = false;
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
settings = {
General = {
Experimental = true;
FastConnectable = true;
};
Policy = {
AutoEnable = true;
};
};
};
time.timeZone = "America/New_York";
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
};
services.xserver.enable = true;
services.displayManager.dms-greeter = {
enable = true;
compositor.name = "niri";
};
systemd.user.services.xwayland-satellite = {
description = "Xwayland outside your Wayland compositor";
wantedBy = [ "graphical-session.target" ];
partOf = [ "graphical-session.target" ];
serviceConfig = {
ExecStart = "${pkgs.xwayland-satellite}/bin/xwayland-satellite";
Restart = "on-failure";
};
};
services.xserver.xkb = {
layout = "us";
variant = "";
};
services.printing.enable = true;
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
services.keyd = {
enable = true;
keyboards = {
default = {
ids = [ "*" ];
settings = {
main = {
capslock = "~";
};
shift = {
capslock = "`";
left = "home";
right = "end";
};
};
};
};
};
users.users."warrentyexpired" = {
isNormalUser = true;
shell = pkgs.fish;
description = "Micah L. Zellers";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [
];
};
nixpkgs.config.allowUnfree = true;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
programs.dms-shell = {
enable = true;
systemd.enable = true;
enableSystemMonitoring = true;
enableDynamicTheming = true;
enableAudioWavelength = true;
enableClipboardPaste = true;
};
programs.niri.enable = true;
programs.firefox.enable = true;
programs.fish.enable = true;
programs.tmux = {
enable = true;
baseIndex = 1;
escapeTime = 0;
historyLimit = 10000;
keyMode = "vi";
shortcut = "Space";
plugins = with pkgs; [
tmuxPlugins.sensible
tmuxPlugins.yank
];
};
programs.nh = {
enable = true;
clean.enable = true;
clean.extraArgs = "--keep-since 4d --keep 3";
};
programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [
libpulseaudio
alsa-lib
icu
openssl
zlib
fontconfig
freetype
libGL
sdl3
vulkan-loader
libX11
libXext
libXcursor
libXi
libXrandr
libICE
libSM
mono
libdeflate
libargon2
];
environment.systemPackages = with pkgs; [
wget
git
keyd
unzip
unrar
p7zip
wl-clipboard
btop
fzf
ripgrep
bat
ncdu
eza
cliphist
file-roller
neovim
mosh
tmuxinator
ghostty
discord
vlc
bibata-cursors
matugen
xwayland
xwayland-satellite
distrobox
podman
mono
gnumake
(bottles.override { removeWarningPopup = true; })
gnome-calculator
pinta
imv
papirus-icon-theme
adw-gtk3
libnotify
nautilus
];
virtualisation.podman = {
enable = true;
dockerCompat = true;
defaultNetwork.settings.dns_enable = true;
};
services.gvfs.enable = true;
services.udisks2.enable = true;
services.blueman.enable = true;
fonts.packages = with pkgs; [
nerd-fonts.jetbrains-mono
nerd-fonts.fira-code
nerd-fonts.meslo-lg
];
fonts.fontconfig = {
defaultFonts = {
monospace = [ "JetBrainsMono Nerd Font" ];
sansSerif = [ "DejaVu Sans" ];
};
};
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# 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).
system.stateVersion = "26.05"; # Did you read the comment?
}

View file

@ -0,0 +1,55 @@
# 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 + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/mapper/luks-1cfce221-0cff-491c-b873-a878354f73fb";
fsType = "btrfs";
};
boot.initrd.luks.devices."luks-1cfce221-0cff-491c-b873-a878354f73fb".device = "/dev/disk/by-uuid/1cfce221-0cff-491c-b873-a878354f73fb";
fileSystems."/nix" =
{ device = "/dev/mapper/luks-1cfce221-0cff-491c-b873-a878354f73fb";
fsType = "btrfs";
options = [ "subvol=nix" ];
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/A89B-17E2";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
fileSystems."/home" =
{ device = "/dev/mapper/luks-566acd93-8399-41c4-be4e-10e1df098e7f";
fsType = "btrfs";
};
boot.initrd.luks.devices."luks-566acd93-8399-41c4-be4e-10e1df098e7f".device = "/dev/disk/by-uuid/566acd93-8399-41c4-be4e-10e1df098e7f";
fileSystems."/mnt/fileStorage" =
{ device = "/dev/mapper/luks-a476201c-0098-41aa-b1d8-c68af6b23e5f";
fsType = "btrfs";
};
boot.initrd.luks.devices."luks-a476201c-0098-41aa-b1d8-c68af6b23e5f".device = "/dev/disk/by-uuid/a476201c-0098-41aa-b1d8-c68af6b23e5f";
swapDevices =
[ { device = "/dev/disk/by-uuid/f63fb713-1fcb-4172-af93-34d985ab40fb"; }
];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

4
sshPerms.sh Executable file
View file

@ -0,0 +1,4 @@
#!/usr/bin/env bash
chmod 700 $HOME/.ssh
chmod 644 $HOME/.ssh/id_ed25519.pub
chmod 600 $HOME/.ssh/id_ed25519