updated dotfiles, fixed install scripts, added missing packages

This commit is contained in:
2026-08-03 02:53:32 +02:00
parent e845d8bda1
commit e854d4a22e
17 changed files with 309 additions and 76 deletions
+6 -1
View File
@@ -12,7 +12,7 @@ fi
## Functions
# Yazi
function ya() {
function y() {
local tmp="$(mktemp -t "yazi-cwd.XXXXX")"
yazi "$@" --cwd-file="$tmp"
if cwd="$(cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
@@ -21,6 +21,11 @@ function ya() {
rm -f -- "$tmp"
}
# Chezmoi apply changes from current chezmoi DIR
function ca() {
chezmoi apply "$(chezmoi target-path "${1:-.}")"
}
## Aliases
# Replace ls with eza
if [ -f /usr/bin/eza ]; then
@@ -0,0 +1,37 @@
# This file was created by fish when upgrading to version 4.3, to migrate
# theme variables from universal to global scope.
# Don't edit this file, as it will be written by the web-config tool (`fish_config`).
# To customize your theme, delete this file and see
# help interactive#syntax-highlighting
# or
# man fish-interactive | less +/^SYNTAX.HIGHLIGHTING
# for appropriate commands to add to ~/.config/fish/config.fish instead.
# See also the release notes for fish 4.3.0 (run `help relnotes`).
set --global fish_color_autosuggestion brblack
set --global fish_color_cancel -r
set --global fish_color_command blue
set --global fish_color_comment red
set --global fish_color_cwd green
set --global fish_color_cwd_root red
set --global fish_color_end green
set --global fish_color_error brred
set --global fish_color_escape brcyan
set --global fish_color_history_current --bold
set --global fish_color_host normal
set --global fish_color_host_remote yellow
set --global fish_color_normal normal
set --global fish_color_operator brcyan
set --global fish_color_param cyan
set --global fish_color_quote yellow
set --global fish_color_redirection cyan --bold
set --global fish_color_search_match white --background=brblack
set --global fish_color_selection white --bold --background=brblack
set --global fish_color_status red
set --global fish_color_user brgreen
set --global fish_color_valid_path --underline
set --global fish_pager_color_completion normal
set --global fish_pager_color_description yellow -i
set --global fish_pager_color_prefix normal --bold --underline
set --global fish_pager_color_progress brwhite --background=cyan
set --global fish_pager_color_selected_background -r
+10
View File
@@ -134,6 +134,16 @@ function w2o
end
end
# Chezmoi apply changes from current chezmoi DIR
function ca
set -l path "."
if test (count $argv) -gt 0
set path $argv[1]
end
chezmoi apply (chezmoi target-path $path)
end
## Aliases
# Replace ls with eza
if type -q eza
+30
View File
@@ -0,0 +1,30 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR fish_color_autosuggestion:brblack
SETUVAR fish_color_cancel:\x2dr
SETUVAR fish_color_command:blue
SETUVAR fish_color_comment:red
SETUVAR fish_color_cwd:green
SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:green
SETUVAR fish_color_error:brred
SETUVAR fish_color_escape:brcyan
SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:normal
SETUVAR fish_color_host_remote:yellow
SETUVAR fish_color_normal:normal
SETUVAR fish_color_operator:brcyan
SETUVAR fish_color_param:cyan
SETUVAR fish_color_quote:yellow
SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_status:red
SETUVAR fish_color_user:brgreen
SETUVAR fish_color_valid_path:\x2d\x2dunderline
SETUVAR fish_key_bindings:fish_default_key_bindings
SETUVAR fish_pager_color_completion:normal
SETUVAR fish_pager_color_description:yellow\x1e\x2di
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
SETUVAR fish_pager_color_selected_background:\x2dr
+10 -1
View File
@@ -13,7 +13,7 @@ cursor-style = block
cursor-style-blink = true
# Scrollback
scrollback-limit = 512000
scrollback-limit = 10485760
# Terminal features
mouse-hide-while-typing = true
@@ -39,6 +39,15 @@ keybind = ctrl+plus=increase_font_size:1
keybind = ctrl+minus=decrease_font_size:1
keybind = ctrl+zero=reset_font_size
keybind = ctrl+enter=unbind
keybind = ctrl+1=goto_tab:1
keybind = ctrl+2=goto_tab:2
keybind = ctrl+3=goto_tab:3
keybind = ctrl+4=goto_tab:4
keybind = ctrl+5=goto_tab:5
keybind = ctrl+6=goto_tab:6
keybind = ctrl+7=goto_tab:7
keybind = ctrl+8=goto_tab:8
keybind = ctrl+9=goto_tab:9
# GTK
gtk-titlebar = false
+11
View File
@@ -0,0 +1,11 @@
{
"firstLaunch": false,
"windowBounds": {
"x": 0,
"y": 0,
"width": 1920,
"height": 1080
},
"maximized": true,
"minimized": false
}
@@ -9,4 +9,7 @@
<property name="misc-thumbnail-draw-frames" type="bool" value="false"/>
<property name="misc-thumbnail-mode" type="string" value="THUNAR_THUMBNAIL_MODE_ALWAYS"/>
<property name="misc-thumbnail-max-file-size" type="uint64" value="104857600"/>
<property name="misc-use-csd" type="bool" value="false"/>
<property name="misc-directory-specific-settings" type="bool" value="true"/>
<property name="last-show-hidden" type="bool" value="true"/>
</channel>
+2 -2
View File
@@ -1,8 +1,8 @@
# Bookmarks
[[mgr.prepend_keymap]]
on = [ "b", "g" ]
run = "cd ~/git/"
desc = "GIT"
run = "cd ~/Projects/"
desc = "GIT/Projects"
[[mgr.prepend_keymap]]
on = [ "b", "D" ]
@@ -0,0 +1,92 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IG1sa2VtNzY4eDI1NTE5IDhJU0h4b2RT
eWQ0c2RRRXRmb0hpZWhMdUw0N0oxWVZOOFpVckc2UUsrQUpMNDMrYkZXRURQMUsz
TnN1SmEyZHRtQVNycHlPQlpOSVQyTFhvTk5RK0dlcHZvYXBoUXZ2R291TGxwTHYz
WUxSRDRzWUg0bjFnU1JoOFc0ZS9La3daekdCMjZ5UnpJNHJzKytGc2c3ZDZ2TWJk
cUhqS2kxSlI5WHpMMkUyYTBZaWpucGY5QVdoZjlhK0p5amRnWjlaOXNVVGdxOXF3
NXUyV2lrMEpVaHRITlk4emNScVhkVkRRNSt3SzdSL2FlR0c5cHpZd3Rqd2dtZ014
cWI3MkRlVjlDcWR4L3Rhb0pTSmR6eEFpSDBHRm1nUlV1TWFHWEg1SVpGQm1oZjFD
Mjh3ZkZjWTRQRXBzSWNNRTNsRmwvUkdBSDRPR3NCcWVmb0tZZi9iZnhtcEx6SWYw
NmRLKys2TjBvbGx6RDFBdXhOSE8xS05HdWc0dkx4OWIrV251elpsSnBwY25XVmdG
ZkFiZUtyVmdsUW4vb0YvZHp1OVRLYk5zalpsNzhUdGcwTE8wSEhXTG90RUtma3hO
REtQVnU2dEJHb1hRK2xkR0pvc2pTaThpRHBuTkdRSUxISHlqUkIvMmhPM25tOCtW
ME9RMzRYVDd2WFhNMGZ0UEJJU2N6RHJPRWhRUkxnTm1IQVVHK296ZlYyVXJ2SkNU
Q3BrQVBjbkpSaEFUY3FhaUxPY0xWdmtjc25WbmQvS1JuLzJNQjVsZktxSU1jcjBO
RFp0cklDMkVKVFlZVVpQaHhoaXc2NE8wd1Npa0luKzhXYmdZYXlkZWcrUllWZ083
UkZwR1pZTWlxYW1MTXBuenVPSlRUNTIxeEVCR3BlYWlwdVRMRHpvNDVobGlyemVK
ZFFQdFVUdm41MTNJb0VpS3FIcTd0Z0g3dWk1TytjNmg1TTd2VjZSY2xuU3c0R2Ry
QjVaUlRwZmtWTVlOSUR3Z2FVRzV6VTRvdlJzWGs1dWdFUjVMRk5PVDJEdFJLSE5q
TWJQbVdYVWFVenhJclZ6MHB6Z05qNjB5UmZIa2NRRWJVekZ3ZlR3VW5QNm05SDJ4
QThjSHk3bVJIMzJSL09nUHR1amFPWWUrNWpQeC9sb2pHM1V6VmxwdGdRc2tiZnph
Nzhla29nVkFuMHpjMEY5U04zbnlmVlRtdWkzNFhTbUdjU1VzQS93RlNSL25BaUhH
TzlzTXV1MHBBWmVTOTlSMG9JQmJnWUV2K3JxcHlNOWZNaW5OZkg1bHcxVWx6Tktt
blY0dnA3OHRPY0pnaWFkYmdvYWJWM3VlcEs4Uzk5cUhmelUwNThIaHdpWHJ0K29q
Z0FhRlRBcVlOQ3h4UktyNXdXYWwwNWdhcUVPMjVYYmtDTjhRck51djdmL3dISlRD
L1hhcXFHL29tMUpoRTk1dFBYRE43Y0FkTnFlSzNaVDBWd3Rib3ZzM3UwYktwNEFQ
bTNmYlU2U3BmSkdrUG51OHZWWGd4RktTL3VTTUlIZGVhU21qTDFRZ0wwWEoxMDAr
WHlTVmpPU0kxa0tDTnVzWVpJdTRPNWpqVjNpdjBuRjJpRFVvd2Y0TFNuRGcvdEE1
ZndpdFRHWE50dTZZRGFWZGpPcVpuZnBkZ3UvRGlMeFpFREFteXJYUXNocmNlQ1FB
THNQMVBJWlRhRlhTL20yUXRIODc1Y2FhVytUTzhHVzFFMzVaZnplOGNETE1kMFhp
WEtqYUFVTGxScXY0U2hjOFhNT2Z4ODJYWWRSQVBUMm9EaTgrWHJlaGNEMzUzUkIy
VHk3Y1J4WTRpVjVIQUNXd3Mzdkw0ZnZrVFdud2w0S003clYvdE5KalZtbXhHUWt0
MnM1dzg0dUZJOUtHZVhYaXlEajZLd243SHdUckxWWG9DVkNCR1dxOTVtMERoNkc2
RUpPUGtPZzNmOXNyTlFjaEdZUXR4WitTWmNZWXEyMXlHU0RqMFBTRlBYTENjZwpR
aWwwc2pDdVBMUzRDMmk4eWw0RkJYY25VY2xhU1NPZmo5d0VXaVVFUFVnCi0tLSBK
cWhucWNYOVAyVmRBUmRrMVdaQjNPQUgxalpvWGFVeEhGSDVONDQ5K3A0CtEhoJd4
5lRNK2OjRusSit0FZvv8I9ftruZwYf+13qOMQ7DlGJ/yNJgu+FfTW5HXZx++SL40
p3VSEzHpRsiEzz6yxBQ6kLwGJiI2VuLkEfXiyX8GE9NOar/DKxAXJmQG0v5MYurj
Bsqx9oB2WEpPinsDFfsL6AW5kW1f8ROIgckpA/Ved0J99Qs/Sb63HwMwJqRrOkzm
4CP91hgOSywCcjgCt35rbpeD/pHqZaoYkzLBeY6Em5Ua6QsE2v8BLIYJiak+WZbm
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
q1by
-----END AGE ENCRYPTED FILE-----
+31
View File
@@ -0,0 +1,31 @@
#!/bin/bash
# run_once_05-system-setup.sh
# Early system-level configuration that must run before package installs.
set -euo pipefail
SYS="{{ .system | default "desktop" }}"
DISTRO_ID="{{ .chezmoi.osRelease.id | default "" }}"
SRC="{{ .chezmoi.sourceDir }}"
echo ">>> [system-setup] distro=$DISTRO_ID, system=$SYS, source=$SRC"
case "$DISTRO_ID" in
arch)
echo ">>> [system-setup] applying pacman.conf"
sudo install -m644 "$SRC/assets/pacman.conf" /etc/pacman.conf
echo ">>> [system-setup] tuning makepkg.conf"
sudo sed -i 's/^#MAKEFLAGS=/MAKEFLAGS="-j'"$(nproc)"'"/' /etc/makepkg.conf
;;
ubuntu)
echo ">>> [system-setup] ubuntu: no early system setup required"
;;
*)
echo ">>> [system-setup] unsupported distro: ${DISTRO_ID:-unknown}, skipping"
exit 0
;;
esac
echo ">>> [system-setup] done"
@@ -4,8 +4,8 @@
set -euo pipefail
SYS="$(chezmoi data --format=json 2>/dev/null | jq -r '.system // "desktop"')"
DISTRO_ID="$(chezmoi data --format=json 2>/dev/null | jq -r '.chezmoi.osRelease.id // empty')"
SYS="{{ .system | default "desktop" }}"
DISTRO_ID="{{ .chezmoi.osRelease.id | default "" }}"
case "$DISTRO_ID" in
arch)
@@ -14,12 +14,15 @@ case "$DISTRO_ID" in
networkmanager-openvpn wireguard-tools base-devel \
inotify-tools libqalculate cifs-utils reflector os-prober ntfs-3g \
openssh upower expac unzip less curl wget gawk zip tar \
btop fastfetch yazi eza bat fzf fd jq go npm python-pipx
btop fastfetch yazi eza bat fzf fd jq go npm python-pipx \
fish zoxide starship sshfs man-db man-pages p7zip ripgrep resvg \
lazygit exiftool
if [ "$SYS" != "server" ]; then
sudo pacman -Syu --noconfirm --needed \
dbeaver mariadb \
jdk-openjdk maven rustup
jdk-openjdk maven rustup \
dotnet-sdk docker docker-compose
rustup default stable >/dev/null 2>&1 || true
fi
@@ -41,7 +44,9 @@ case "$DISTRO_ID" in
sudo apt-get install -y \
network-manager openvpn wireguard-tools inotify-tools libqalculate \
cifs-utils os-prober ntfs-3g openssh upower unzip less curl wget \
gawk zip tar fzf fd-find jq
gawk zip tar fzf fd-find jq \
fish sshfs man-db manpages p7zip-full ripgrep \
libimage-exiftool-perl tesseract-ocr tesseract-ocr-eng
# fdfind → fd compatibility symlink
# if command -v fdfind >/dev/null 2>&1 && ! command -v fd >/dev/null 2>&1; then
@@ -50,7 +55,8 @@ case "$DISTRO_ID" in
if [ "$SYS" != "server" ]; then
sudo apt-get install -y \
openjdk-17-jdk maven rustup npm golang-go
openjdk-17-jdk maven rustup npm golang-go \
dotnet-sdk-8.0 docker-compose
rustup default stable >/dev/null 2>&1 || true
fi
;;
@@ -4,8 +4,8 @@
set -euo pipefail
SYS="$(chezmoi data --format=json 2>/dev/null | jq -r '.system // "desktop"')"
DISTRO_ID="$(chezmoi data --format=json 2>/dev/null | jq -r '.chezmoi.osRelease.id // empty')"
SYS="{{ .system | default "desktop" }}"
DISTRO_ID="{{ .chezmoi.osRelease.id | default "" }}"
if [ "$SYS" = "server" ]; then
echo ">>> [gui] system=server, skipping"
@@ -26,23 +26,29 @@ case "$DISTRO_ID" in
cups cups-pdf cups-pk-helper \
qt5ct qt6ct \
papirus-icon-theme breeze-cursors adw-gtk-theme \
brightnessctl playerctl libnotify mediainfo \
ddcutil playerctl libnotify mediainfo \
fprintd kimageformats \
kdeconnect loupe dosfstools gnome-disk-utility \
cava guvcview tesseract tesseract-data-eng \
cliphist wl-clipboard tesseract zbar imagemagick img2pdf \
polkit-kde-agent xdg-desktop-portal-hyprland gnome-keyring \
xdg-desktop-portal-hyprland gnome-keyring \
hyprland greetd ghostty
# Dank Shell - sed workaround to pass args to installer
sudo -v && curl -fsSL https://install.danklinux.com | sed 's#\./installer$#./installer "$@"#' | sh -s -- -c hyprland -t ghostty --include-deps dms-greeter,danksearch,dankcalendar -y
# Firefox theming
pipx install pywalfox
pywalfox install
~/.local/bin/pywalfox install
mkdir -p ~/.cache/wal
touch ~/.cache/wal/dank-pywalfox.json
ln -sf ~/.cache/wal/dank-pywalfox.json ~/.cache/wal/colors.json
;;
ubuntu)
echo ">>> [gui] ubuntu, system=$SYS"
echo ">>> [gui] ubuntu, no GUI packages"
sudo apt-get install -y \
kdeconnect dosfstools gnome-disk-utility \
cava ddcutil guvcview
;;
*)
-39
View File
@@ -1,39 +0,0 @@
#!/bin/bash
# run_once_30-install-power-mgmt.sh
# Laptop-only: power management stack. Skipped on desktop/server.
set -euo pipefail
SYS="$(chezmoi data --format=json 2>/dev/null | jq -r '.system // "desktop"')"
DISTRO_ID="$(chezmoi data --format=json 2>/dev/null | jq -r '.chezmoi.osRelease.id // empty')"
if [ "$SYS" != "laptop" ]; then
echo ">>> [power-mgmt] system=$SYS, skipping (not a laptop)"
exit 0
fi
case "$DISTRO_ID" in
arch)
echo ">>> [power-mgmt] arch"
sudo pacman -Syu --noconfirm --needed tlp auto-cpufreq power-profiles-daemon
sudo systemctl enable tlp
sudo systemctl enable auto-cpufreq
sudo systemctl enable power-profiles-daemon
;;
ubuntu)
echo ">>> [power-mgmt] ubuntu"
sudo apt-get install -y tlp tlp-rdw power-profiles-daemon
sudo systemctl enable tlp
# tlp and power-profiles-daemon conflict on most hardware — mask the latter
sudo systemctl mask power-profiles-daemon || true
;;
*)
echo ">>> [power-mgmt] unsupported distro: ${DISTRO_ID:-unknown}, skipping"
exit 0
;;
esac
echo ">>> [power-mgmt] done"
@@ -4,9 +4,9 @@
set -euo pipefail
SYS="$(chezmoi data --format=json 2>/dev/null | jq -r '.system // "desktop"')"
GAMING="$(chezmoi data --format=json 2>/dev/null | jq -r '.gaming // "false"')"
DISTRO_ID="$(chezmoi data --format=json 2>/dev/null | jq -r '.chezmoi.osRelease.id // empty')"
SYS="{{ .system | default "desktop" }}"
GAMING="{{ .gaming | default false }}"
DISTRO_ID="{{ .chezmoi.osRelease.id | default "" }}"
if [ "$SYS" = "server" ]; then
echo ">>> [apps] system=server, skipping"
@@ -20,7 +20,7 @@ case "$DISTRO_ID" in
echo ">>> [apps] installing packages"
sudo pacman -Syu --noconfirm --needed \
libreoffice-fresh nextcloud-client \
gvfs gvfs-mtp gvfs-smb thunar tumbler \
gvfs gvfs-mtp gvfs-smb thunar tumbler lshw \
mpv nvtop pavucontrol thunderbird firefox yt-dlp \
feishin
@@ -33,7 +33,7 @@ case "$DISTRO_ID" in
if [ "$GAMING" = "true" ]; then
echo ">>> [apps] installing gaming packages"
sudo pacman -Syu --noconfirm --needed \
steam
steam
yay -Sy --noconfirm --needed \
heroic-games-launcher-bin
@@ -1,12 +1,12 @@
#!/bin/bash
# run_once_99-set-shell.sh
# Sets the user's default login shell to fish.
# TODO prompt which shell
# run_once_45-configure-user.sh
# User configuration.
# TODO prompt which shell, download ??
set -euo pipefail
if ! command -v fish >/dev/null 2>&1; then
echo ">>> [set-shell] fish not installed; skipping"
echo ">>> [configure-user] fish not installed; skipping"
exit 0
fi
@@ -14,9 +14,9 @@ USER_NAME="${USER:-$(id -un)}"
current_shell="$(getent passwd "$USER_NAME" | cut -d: -f7)"
if [ "$current_shell" = "$(command -v fish)" ]; then
echo ">>> [set-shell] shell already set to fish"
echo ">>> [configure-user] shell already set to fish"
exit 0
fi
echo ">>> [set-shell] changing shell for $USER_NAME to $(command -v fish)"
echo ">>> [configure-user] changing shell for $USER_NAME to $(command -v fish)"
sudo chsh -s "$(command -v fish)" "$USER_NAME" || true
@@ -4,9 +4,9 @@
set -euo pipefail
SYS="$(chezmoi data --format=json 2>/dev/null | jq -r '.system // "desktop"')"
DISTRO_ID="$(chezmoi data --format=json 2>/dev/null | jq -r '.chezmoi.osRelease.id // empty')"
SRC="$(chezmoi source-path)"
SYS="{{ .system | default "desktop" }}"
DISTRO_ID="{{ .chezmoi.osRelease.id | default "" }}"
SRC="{{ .chezmoi.sourceDir }}"
echo ">>> [configure] distro=$DISTRO_ID, system=$SYS, source=$SRC"
services=(
@@ -17,12 +17,6 @@ services=(
case "$DISTRO_ID" in
arch)
echo ">>> [configure] applying pacman.conf"
sudo install -m644 "$SRC/assets/pacman.conf" /etc/pacman.conf
echo ">>> [configure] applying pacman.conf"
sudo sed -i 's/^#MAKEFLAGS=/MAKEFLAGS="-j'"$(nproc)"'"/' /etc/makepkg.conf
if [ "$SYS" != "server" ]; then
echo ">>> [configure] enabling services"
for service in "${services[@]}"; do
+38
View File
@@ -0,0 +1,38 @@
#!/bin/bash
# run_once_60-configure-laptop.sh
# Laptop only configuration.
set -euo pipefail
SYS="{{ .system | default "desktop" }}"
DISTRO_ID="{{ .chezmoi.osRelease.id | default "" }}"
if [ "$SYS" != "laptop" ]; then
echo ">>> [configure-laptop] system=$SYS, skipping (not a laptop)"
exit 0
fi
case "$DISTRO_ID" in
arch)
echo ">>> [configure-laptop] arch"
sudo pacman -Syu --noconfirm --needed tlp power-profiles-daemon
sudo systemctl enable tlp
sudo systemctl enable power-profiles-daemon
;;
ubuntu)
echo ">>> [configure-laptop] ubuntu"
sudo apt-get install -y tlp tlp-rdw power-profiles-daemon
sudo systemctl enable tlp
# tlp and power-profiles-daemon conflict on most hardware — mask the latter
sudo systemctl mask power-profiles-daemon || true
;;
*)
echo ">>> [configure-laptop] unsupported distro: ${DISTRO_ID:-unknown}, skipping"
exit 0
;;
esac
echo ">>> [configure-laptop] done"