Compare commits

...

27 Commits

Author SHA1 Message Date
a1001e521e fix(wlogout): incorrect hyprland exit command 2026-07-16 18:42:19 +01:00
aae8be4001 style(hypr): cleanup lua configs 2026-07-16 10:20:11 +01:00
5dce5eb3b7 refactor(zsh): cleanup zshrc file 2026-07-14 19:46:20 +01:00
06b5aaa2d8 fix(hypr): incorrect mouse sens 2026-07-14 19:32:39 +01:00
84c0bb23b8 refactor!(hypr): switch to Lua config 2026-07-14 19:31:21 +01:00
3ec778781d fix(binds): update playerctl keybinds
Interfered with CS2 voting systems. Must find another way for it not to
override with other programs.
2026-04-06 20:47:36 +01:00
30425fa1e4 fix(hyprland): increase hyprland window animation speed
Was too slow, got really annoying
2026-04-06 20:44:33 +01:00
b55b45f25e fix(gitconfig): auto-lf 2026-04-06 20:43:50 +01:00
6bb29b7539 feat(vscode): update font size 2026-04-06 20:42:34 +01:00
3481125919 fix(hypr): fix minimum force speed 2026-03-16 22:51:08 +00:00
798ecf40a2 fix(hypr): adjust gesture settings for smoother workspace swaps
It turns out there are options for adjust the cancelling ratio and force
speed for workspace animations. This makes it much closer to real MacOS
animations.

This was tested against Jas's Macbook Air - M1 and they seem quite
closer.
2026-03-16 22:26:54 +00:00
eabcc3de6b feat(hyprland): add hypridle and lid close binds 2026-03-16 22:26:14 +00:00
bf9d570ff3 Merge branch 'main' of ssh://gitea/dylan/birch-dots 2026-03-14 13:21:03 +00:00
2c3c58e92d feat(packages): add yt-dlp 2026-03-14 00:34:20 +00:00
bc2c508969 fix(wlogout): broken logout button 2026-03-12 22:51:22 +00:00
8b12bc3a3b fix(mouse): incorrect sens 2026-03-12 22:46:17 +00:00
e628456780 Merge branch 'main' of ssh://gitea/dylan/birch-dots 2026-03-12 22:45:02 +00:00
3c463300b5 feat(gitconfig): add LFS config 2026-03-12 22:44:31 +00:00
984027efcb fix(hyprcursor): breeze mouse pointer uses lowercase "b"
Not really sure why it worked before, but after logging in this morning
the cursor was the default hyprland cursor. Fixed by reinstalling Breeze
and changing this.
2026-03-12 09:27:17 +00:00
1c12506728 chore(gitconfig): add LFS config 2026-03-12 08:56:16 +00:00
568a81a94d fix(hypr): increase scroll factor
Scrolling on certain apps is too slow with 0.2
2026-03-12 08:55:49 +00:00
9ee3da3100 feat(waybar): add bluetooth module 2026-03-12 08:55:28 +00:00
fab1c53cb3 fix(bootstrap): entire file skip upon one package fail
If one package in a file failed, the whole file was skipped.
2026-03-09 15:45:19 +00:00
f29cf5e920 fix(packages): update incorrect docker compose package 2026-03-09 15:40:21 +00:00
3ef8420a21 feat(packages): add rsync 2026-03-09 15:36:40 +00:00
7805b3c98d docs: add common issues markdown
These mostly pertain to the QEMU VM setup, so they might not be fully
relevant outside of VMs.
2026-03-09 15:24:19 +00:00
ccb5b1ab96 fix(bootstrap): missing NetworkManager install before enabling 2026-03-09 15:23:16 +00:00
25 changed files with 360 additions and 286 deletions

View File

@@ -1,13 +0,0 @@
github.copilot-chat
ms-azuretools.vscode-containers
ms-python.debugpy
ms-python.python
ms-python.vscode-pylance
ms-python.vscode-python-envs
ms-vscode-remote.remote-containers
ms-vscode.cmake-tools
ms-vscode.cpp-devtools
ms-vscode.cpptools
ms-vscode.cpptools-extension-pack
ms-vscode.cpptools-themes
tomoki1207.pdf

View File

@@ -1,7 +0,0 @@
{
"explorer.confirmDragAndDrop": false,
"python.defaultInterpreterPath": "/sbin/python3.14",
"git.autofetch": true,
"explorer.confirmDelete": false,
"git.confirmSync": false
}

View File

@@ -1,16 +0,0 @@
{
"offloadAdmControls": true,
"BACKGROUND_COLOR": "#000000",
"enableHardwareAcceleration": true,
"chromiumSwitches": {},
"asyncVideoInputDeviceInit": false,
"IS_MAXIMIZED": false,
"IS_MINIMIZED": false,
"WINDOW_BOUNDS": {
"x": 1927,
"y": 57,
"width": 1906,
"height": 1016
},
"SKIP_HOST_UPDATE": true
}

View File

@@ -1,6 +0,0 @@
# Floating
windowrule = float 1, match:title Play Timer
# Opacity
windowrule = opacity 0.9 0.75, match:class $terminal

View File

@@ -0,0 +1,23 @@
-- Opacity
hl.window_rule({
name = "opacity_0_75_0_6",
match = {
class = ".*" .. terminal .. ".*"
},
opacity = "0.75 0.6",
})
-- Workspaces
hl.window_rule({
workspace = "1",
match = {
class = ".*[Mm]inecraft.*"
}
})
hl.window_rule({
workspace = "1",
match = {
class = ".*[Ss]team*."
}
})

View File

@@ -1,67 +0,0 @@
general {
# Gaps & borders – light and uncluttered
gaps_in = 4
gaps_out = 6
gaps_workspaces = 32
border_size = 1
col.active_border = rgba(0DB7D4FF)
col.inactive_border = rgba(31313633)
no_focus_fallback = true
allow_tearing = true
snap {
enabled = true
window_gap = 4
monitor_gap = 6
respect_gaps = true
}
}
dwindle {
preserve_split = true
smart_split = false
smart_resizing = false
}
decoration {
rounding = 10
shadow {
enabled = yes
range = 16
render_power = 2
color = rgba(00000040)
}
blur {
enabled = yes
size = 5
passes = 2
vibrancy = 0.14
}
}
animations {
enabled = yes
bezier = overshoot, 0.22, 0.61, 0.36, 1.15
bezier = breeze, 0.22, 0.61, 0.36, 1.0
# Windows: quick, soft, intentional
animation = windows, 1, 5, breeze, slidefade
animation = windowsOut, 1, 4, breeze, slidefade
# Workspaces: airy glide, finishes fast
animation = workspaces, 1, 5, overshoot, slidefade
# Subtle polish
animation = fade, 1, 4, breeze
animation = windowsMove, 1, 3, breeze
animation = border, 1, 3, breeze
}

View File

@@ -0,0 +1,53 @@
hl.config({
general = {
-- Gaps & borders – light and uncluttered
gaps_in = 4,
gaps_out = 6,
gaps_workspaces = 32,
border_size = 1,
no_focus_fallback = true,
allow_tearing = true,
snap = {
enabled = true,
window_gap = 4,
monitor_gap = 6,
respect_gaps = true,
},
col = {
active_border = "rgba(0DB7D4FF)",
inactive_border = "rgba(31313633)",
},
},
})
hl.config({
dwindle = {
preserve_split = true,
smart_split = false,
smart_resizing = false,
},
})
hl.config({
decoration = {
rounding = 10,
shadow = {
enabled = true,
range = 16,
render_power = 2,
color = "rgba(00000040)",
},
blur = {
enabled = true,
size = 5,
passes = 2,
vibrancy = 0.14,
},
},
})
hl.config({
animations = {
enabled = true,
},
})

View File

@@ -1,41 +0,0 @@
source = ~/.config/hypr/monitors.conf
# Set programs that you use
$terminal = kitty
$fileManager = thunar
$menu = wofi --show drun
$browser = brave
exec-once = /usr/lib/xdg-desktop-portal-hyprland &
exec-once = /usr/lib/xdg-desktop-portal &
exec-once = hyprpaper
exec = gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" # for GTK4 apps
exec = gsettings set org.gnome.desktop.interface gtk-theme "adw-gtk3-dark" # for GTK3 apps
misc {
force_default_wallpaper = 0
disable_hyprland_logo = true
initial_workspace_tracking = 1
}
#############################
### ENVIRONMENT VARIABLES ###
#############################
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
env = LIBVA_DRIVER_NAME,nvidia
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
env = NVD_BACKEND,direct
env = QT_QPA_PLATFORMTHEME,qt6ct # for Qt apps# Theme
exec-once = waybar
exec-once = nextcloud
exec-once = hyprctl setcursor Breeze 24
source = ~/.config/hypr/input.conf
source = ~/.config/hypr/keybinds.conf
source = ~/.config/hypr/applications.conf
source = ~/.config/hypr/decoration.conf
source = ~/.config/hypr/workspaces.conf
source = ~/.config/hypr/hyprpaper.conf

46
.config/hypr/hyprland.lua Normal file
View File

@@ -0,0 +1,46 @@
local monitors = require("monitors")
-- Set programs that you use
terminal = "kitty"
fileManager = "thunar"
menu = "wofi --show drun"
browser = "brave"
hl.config({
misc = {
force_default_wallpaper = 0,
disable_hyprland_logo = true,
initial_workspace_tracking = 1,
},
})
-- Envs
hl.env("XCURSOR_SIZE", 24)
hl.env("HYPRCURSOR_SIZE", 24)
hl.env("LIBVA_DRIVER_NAME", "nvidia")
hl.env("__GLX_VENDOR_LIBRARY_NAME", "nvidia")
hl.env("NVD_BACKEND", "direct")
hl.env("QT_QPA_PLATFORMTHEME", "qt6ct")
local keybinds = require("keybinds")
local input = require("input")
local applications = require("applications")
local decorations = require("decoration")
local workspaces = require("workspaces")
-- Autostart
hl.on("hyprland.start", function()
hl.exec_cmd("/usr/lib/xdg-desktop-portal-hyprland &")
hl.exec_cmd("/usr/lib/xdg-desktop-portal &")
hl.exec_cmd("hyprpaper")
hl.exec_cmd("hypridle")
hl.exec_cmd("nextcloud")
hl.exec_cmd("waybar")
hl.exec_cmd("hyprctl setcursor breeze 24")
end)
-- Exec (run every reload)
hl.on("config.reloaded", function()
hl.exec_cmd("gsettings set org.gnome.desktop.interface color-scheme prefer-dark")
hl.exec_cmd("gsettings set org.gnome.desktop.interface gtk-theme adw-gtk3-dark")
end)

View File

@@ -1 +0,0 @@
splash = false

View File

@@ -1,26 +0,0 @@
input {
kb_layout = ie
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
accel_profile = flat
force_no_accel=2
sensitivity = 1
touchpad {
natural_scroll = true
scroll_factor = 0.2
}
}
device {
name = logitech-usb-receiver
sensitivity = 0
}
gesture = 3, horizontal, workspace
gesture = 3, down, fullscreen

20
.config/hypr/input.lua Normal file
View File

@@ -0,0 +1,20 @@
hl.config({
input = {
kb_layout = "ie",
follow_mouse = 1,
accel_profile = "flat",
sensitivity = 0,
touchpad = {
natural_scroll = true,
scroll_factor = 0.45,
},
},
})
hl.config({
gestures = {
workspace_swipe_cancel_ratio = 0,
workspace_swipe_min_speed_to_force = 10,
},
})

View File

@@ -1,71 +0,0 @@
$mainMod = SUPER # Sets "Windows" key as main modifier
bind = $mainMod, RETURN, exec, $terminal
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, 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 active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 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
# Change wallpaper
bind = $mainMod, W, exec, ~/.config/wofi/scripts/wallpaper.sh
bindel = $mainMod, L, exec, brightnessctl -e4 -n2 set 5%+
bindel = $mainMod, K, exec, brightnessctl -e4 -n2 set 5%-
# Volume
bindl = , F4, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindl = , F5, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindl = , F6, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindl = , F7, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
# Playback (requires playerctl)
bindl = , F2, exec, playerctl previous
bindl = , F1, exec, playerctl play-pause
bindl = , F3, exec, playerctl next
bind = SUPER CTRL, left, swapwindow, l
bind = SUPER CTRL, right, swapwindow, r
bind = SUPER SHIFT, F, fullscreen
bind = SUPER CTRL, F, fullscreen, 1
bind = SUPER, Q, killactive
bind = ALT, TAB, cyclenext
bind = SUPER, F, exec, $fileManager
bind = SUPER, D, exec, $menu
bind = SUPER, B, exec, $browser
bind = SUPER SHIFT, S, exec, grim -g "$(slurp)" - | wl-copy

78
.config/hypr/keybinds.lua Normal file
View File

@@ -0,0 +1,78 @@
---@module 'hl'
local mainMod = "SUPER"
-- Sets "Windows" key as main modifier
hl.bind(mainMod .. " + " .. "RETURN", hl.dsp.exec_cmd(terminal))
-- Move focus with mainMod + arrow keys
hl.bind(mainMod .. " + " .. "left", hl.dsp.focus({ direction = "left" }))
hl.bind(mainMod .. " + " .. "right", hl.dsp.focus({ direction = "right" }))
hl.bind(mainMod .. " + " .. "up", hl.dsp.focus({ direction = "up" }))
hl.bind(mainMod .. " + " .. "down", hl.dsp.focus({ direction = "down" }))
-- Switch workspaces with mainMod + [0-9]
hl.bind(mainMod .. " + " .. 1, hl.dsp.focus({ workspace = 1 }))
hl.bind(mainMod .. " + " .. 2, hl.dsp.focus({ workspace = 2 }))
hl.bind(mainMod .. " + " .. 3, hl.dsp.focus({ workspace = 3 }))
hl.bind(mainMod .. " + " .. 4, hl.dsp.focus({ workspace = 4 }))
hl.bind(mainMod .. " + " .. 5, hl.dsp.focus({ workspace = 5 }))
hl.bind(mainMod .. " + " .. 6, hl.dsp.focus({ workspace = 6 }))
hl.bind(mainMod .. " + " .. 7, hl.dsp.focus({ workspace = 7 }))
hl.bind(mainMod .. " + " .. 8, hl.dsp.focus({ workspace = 8 }))
hl.bind(mainMod .. " + " .. 9, hl.dsp.focus({ workspace = 9 }))
hl.bind(mainMod .. " + " .. 0, hl.dsp.focus({ workspace = 10 }))
-- Move active window to a workspace with mainMod + SHIFT + [0-9]
hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 1, hl.dsp.window.move({ workspace = 1 }))
hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 2, hl.dsp.window.move({ workspace = 2 }))
hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 3, hl.dsp.window.move({ workspace = 3 }))
hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 4, hl.dsp.window.move({ workspace = 4 }))
hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 5, hl.dsp.window.move({ workspace = 5 }))
hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 6, hl.dsp.window.move({ workspace = 6 }))
hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 7, hl.dsp.window.move({ workspace = 7 }))
hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 8, hl.dsp.window.move({ workspace = 8 }))
hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 9, hl.dsp.window.move({ workspace = 9 }))
hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 0, hl.dsp.window.move({ workspace = 10 }))
-- Scroll through existing workspaces with mainMod + scroll
hl.bind(mainMod .. " + " .. "mouse_down", hl.dsp.focus({ workspace = "e+1" }))
hl.bind(mainMod .. " + " .. "mouse_up", hl.dsp.focus({ workspace = "e-1" }))
-- Move/resize windows with mainMod + LMB/RMB and dragging
hl.bind(mainMod .. " + " .. "mouse:272", hl.dsp.window.drag(), { mouse = true })
hl.bind(mainMod .. " + " .. "mouse:273", hl.dsp.window.resize(), { mouse = true })
-- Change wallpaper
hl.bind(mainMod .. " + " .. "W", hl.dsp.exec_cmd("~/.config/wofi/scripts/wallpaper.sh"))
hl.bind(mainMod .. " + " .. "L", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%+"), { locked = true })
hl.bind(mainMod .. " + " .. "K", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%-"), { locked = true })
-- Volume
hl.bind("F7", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { locked = true })
hl.bind("F8", hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"), { locked = true })
hl.bind("F9", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { locked = true })
hl.bind("F10", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { locked = true })
-- Playback (requires playerctl)
hl.bind("F4", hl.dsp.exec_cmd("playerctl previous"), { locked = true })
hl.bind("F5", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
hl.bind("F6", hl.dsp.exec_cmd("playerctl next"), { locked = true })
hl.bind("switch:on:Lid Switch", hl.dsp.exec_cmd("hyprctl dispatch dpms off"), { locked = true })
hl.bind("switch:off:Lid Switch", hl.dsp.exec_cmd("hyprctl dispatch dpms on"), { locked = true })
-- My binds
hl.bind("SUPER + CTRL" .. " + " .. "left", hl.dsp.window.swap({ direction = "left" }))
hl.bind("SUPER + CTRL" .. " + " .. "right", hl.dsp.window.swap({ direction = "right" }))
hl.bind("SUPER + SHIFT" .. " + " .. "F", hl.dsp.window.fullscreen())
hl.bind("SUPER + CTRL" .. " + " .. "F", hl.dsp.window.fullscreen({mode = "maximized"}))
hl.bind("SUPER" .. " + " .. "Q", hl.dsp.window.close())
hl.bind("ALT" .. " + " .. "TAB", hl.dsp.window.cycle_next())
hl.bind("SUPER" .. " + " .. "F", hl.dsp.exec_cmd(fileManager))
hl.bind("SUPER" .. " + " .. "D", hl.dsp.exec_cmd(menu))
hl.bind("SUPER" .. " + " .. "B", hl.dsp.exec_cmd(browser))
hl.bind(
"SUPER + SHIFT + S",
hl.dsp.exec_cmd('grim -g "$(slurp -d)" - | wl-copy')
)

13
.config/hypr/monitors.lua Normal file
View File

@@ -0,0 +1,13 @@
hl.monitor({
output = "DP-3",
mode = "1920x1080@270",
position = "0x0",
scale = 1,
})
hl.monitor({
output = "DP-1",
mode = "1920x1080@144",
position = "-1920x0",
scale = 1,
})

View File

@@ -1,14 +0,0 @@
# Workspaces 1–5 on DP-3
workspace = 1, monitor:DP-3, default:true
workspace = 2, monitor:DP-3
workspace = 3, monitor:DP-3
workspace = 4, monitor:DP-3
workspace = 5, monitor:DP-3
# Workspaces 6–10 on DP-1
workspace = 6, monitor:DP-1, default:true
workspace = 7, monitor:DP-1
workspace = 8, monitor:DP-1
workspace = 9, monitor:DP-1
workspace = 10, monitor:DP-1

View File

@@ -0,0 +1,51 @@
-- Workspaces 1–5 on DP-3
hl.workspace_rule({
workspace = 1,
monitor = "DP-3",
})
hl.workspace_rule({
workspace = 2,
monitor = "DP-3",
})
hl.workspace_rule({
workspace = 3,
monitor = "DP-3",
})
hl.workspace_rule({
workspace = 4,
monitor = "DP-3",
})
hl.workspace_rule({
workspace = 5,
monitor = "DP-3",
})
-- Workspaces 6–10 on DP-1
hl.workspace_rule({
workspace = 6,
monitor = "DP-1",
})
hl.workspace_rule({
workspace = 7,
monitor = "DP-1",
})
hl.workspace_rule({
workspace = 8,
monitor = "DP-1",
})
hl.workspace_rule({
workspace = 9,
monitor = "DP-1",
})
hl.workspace_rule({
workspace = 10,
monitor = "DP-1",
})

View File

@@ -16,6 +16,7 @@
"modules-right": [
"tray",
"pulseaudio",
"bluetooth",
"custom/micmute",
"battery",
"custom/power"
@@ -62,6 +63,16 @@
"on-click-right": "pavucontrol"
},
"bluetooth": {
"format": "󰂯 {num_connections}",
"format-connected": "󰂱 {num_connections}",
"format-disabled": "󰂲",
"tooltip-format-connected": "{device_enumerate}",
"tooltip-format-enumerate-connected": "󰂱 {device_alias} ({device_battery_percentage}%)",
"on-click": "blueman-manager",
"on-click-right": "bluectl power toggle"
},
"battery": {
"interval":2,
"states": {

View File

@@ -12,7 +12,7 @@
}
{
"label" : "logout",
"action" : "loginctl terminate-user $USER",
"action" : "hyprctl dispatch 'hl.dsp.exit()'",
"text" : "Logout",
"keybind" : "e"
}

View File

@@ -1,3 +1,10 @@
[user]
email = dylanseandefaoite@gmail.com
name = Dylan De Faoite
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[core]
autocrlf = input

36
.zshrc
View File

@@ -1,24 +1,26 @@
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
# INSTANT PROMPT
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
# Environment for apps
export QT_QPA_PLATFORMTHEME=qt5ct # for Qt5
export QT_QPA_PLATFORMTHEME=qt6ct # for Qt6
# PATH
export PATH="$HOME/.local/bin:$HOME/.opencode/bin:$PATH"
alias dotfiles="git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME"
source ~/powerlevel10k/powerlevel10k.zsh-theme
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
# Path updates
export PATH="$HOME/.local/bin:$PATH"
export PATH="$HOME/.opencode/bin:$PATH"
# Env Variables
# ENVIRONMENT
export EDITOR=nvim
export VISUAL=nvim
export QT_QPA_PLATFORMTHEME=qt6ct # Qt6 apps
# ALIASES
alias dotfiles="git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME"
# COMPLETION (before plugins that hook into it)
autoload -Uz compinit && compinit
# PLUGINS
source ~/powerlevel10k/powerlevel10k.zsh-theme
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh # keep LAST
# THEME CONFIG (after theme is loaded)
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

19
bootstrap.sh Executable file → Normal file
View File

@@ -64,6 +64,9 @@ log "Configuring pacman (colour + parallel downloads)"
sudo sed -i 's/^#Color/Color/' /etc/pacman.conf
sudo sed -i 's/^#ParallelDownloads.*/ParallelDownloads = 5/' /etc/pacman.conf
log "Enabling multilib repo"
sudo sed -i '/\[multilib\]/,/Include/s/^#//' /etc/pacman.conf
log "Updating mirrors and syncing package database"
sudo pacman -Sy --noconfirm reflector 2>/dev/null || true
sudo reflector --country Ireland,Germany --age 12 --protocol https \
@@ -78,9 +81,11 @@ sudo pacman -Syyu --noconfirm
log "Installing pacman packages"
for file in "$PKG_DIR"/pacman/*.txt; do
log " → $(basename "$file")"
# base/linux/base-devel already installed; --needed skips them safely
sudo pacman -S --needed --noconfirm - < "$file" || \
warn "Some packages in $(basename "$file") failed — continuing"
while IFS= read -r pkg; do
[[ -z "$pkg" || "$pkg" == \#* ]] && continue
sudo pacman -S --needed --noconfirm "$pkg" \
|| warn " Skipping pacman package not found: $pkg"
done < "$file"
done
# =============================================================================
@@ -113,8 +118,11 @@ fi
log "Installing AUR packages"
for file in "$PKG_DIR"/aur/*.txt; do
log " → $(basename "$file")"
yay -S --needed --noconfirm - < "$file" || \
warn "Some AUR packages in $(basename "$file") failed — continuing"
while IFS= read -r pkg; do
[[ -z "$pkg" || "$pkg" == \#* ]] && continue
yay -S --needed --noconfirm "$pkg" \
|| warn " Skipping AUR package not found: $pkg"
done < "$file"
done
# =============================================================================
@@ -166,6 +174,7 @@ sudo systemctl enable sddm
# =============================================================================
log "Enabling system services"
sudo systemctl enable bluetooth
sudo systemctl enable docker
sudo usermod -aG docker "$USER"
sudo systemctl enable earlyoom 2>/dev/null || true

21
common-issues.md Normal file
View File

@@ -0,0 +1,21 @@
# Creating a new user
1) Login to root account
2) Type `useradd -m -G wheel -s /bin/bash <NAME>`
3) Install `sudo` and `nvim`
4) Type `EDITOR=nvim visudo`
5) Uncomment the line `# %wheel ALL=(ALL:ALL) ALL`
- Towards the end of the file
# Broken Internet Access on VM
- This works for a VM with `enp1s0` link.
```
ip addr add 192.168.122.100/24 dev enp1s0
ip route add default via 192.168.122.1
echo "nameserver 8.8.8.8" > /etc/resolv.conf
ping 8.8.8.8
```
- Then install dhcpcd
```
pacman -S dhcpcd
systemctl enable --now dhcpcd@enp1s0
```

View File

@@ -19,7 +19,7 @@ jdk21-openjdk
maven
openmpi
docker
docker-compose-plugin
docker-compose
postgresql
postgresql-libs
nmap
@@ -27,3 +27,4 @@ ncdu
ufw
sshfs
nvidia-container-toolkit
rsync

View File

@@ -5,3 +5,4 @@ obs-studio
gpu-screen-recorder
gpu-screen-recorder-ui
wf-recorder
yt-dlp