first commit

This commit is contained in:
2026-07-07 13:24:21 +07:00
commit c3314d6ebe
24 changed files with 458 additions and 0 deletions

11
.gitignore vendored Normal file
View File

@@ -0,0 +1,11 @@
.DS_Store
*.log
*.tmp
*.bak
*.swp
*.swo
restore.local.sh
# Runtime state that should never be committed
config/fish/fish_variables
config/**/.DS_Store

54
README.md Normal file
View File

@@ -0,0 +1,54 @@
# dotfiles
Curated public-friendly dotfiles extracted from `~/.config`.
## Layout
- `config/`: files that belong under `~/.config`
- `home/`: files that belong under `$HOME`
- `restore.sh`: creates backups, then installs symlinks
- `install-pkg.sh`: installs official and AUR packages from list files
- `packages-official.txt`: explicitly installed repository packages
- `packages-aur.txt`: explicitly installed AUR packages
## Restore
```bash
./restore.sh
./install-pkg.sh
```
By default the script:
- creates timestamped backups for existing non-symlink targets
- creates symlinks from this repository into `~/.config`
- skips targets that already point to this repo
## Package Install
```bash
./install-pkg.sh
./install-pkg.sh --official-only
./install-pkg.sh --aur-only
```
The installer uses:
- `pacman` for `packages-official.txt`
- `yay` or `paru` for `packages-aur.txt`
## Excluded on purpose
These were intentionally not pulled in because they usually contain secrets, device-specific state, caches, databases, logs, or personal browsing/session data:
- `gh/`
- `mozilla/`
- `pulse/`
- `go/telemetry/`
- `obs-studio/`
- `Throne/`
- `dconf/user`
- `session/`
- `fish/fish_variables`
Review everything once more before publishing.

10
config/dolphinrc Normal file
View File

@@ -0,0 +1,10 @@
[General]
Version=202
ViewPropsTimestamp=2026,6,18,11,12,27.447
[KFileDialog Settings]
Places Icons Auto-resize=false
Places Icons Static Size=22
[MainWindow]
MenuBar=Disabled

3
config/filetypesrc Normal file
View File

@@ -0,0 +1,3 @@
[EmbedSettings]
embed-image/x-canon-cr2=false
embed-video/mp4=false

7
config/fish/config.fish Normal file
View File

@@ -0,0 +1,7 @@
source /usr/share/cachyos-fish-config/cachyos-config.fish
# overwrite greeting
# potentially disabling fastfetch
#function fish_greeting
# # smth smth
#end

1
config/hypr/hypr Symbolic link
View File

@@ -0,0 +1 @@
/home/hexdev/hexdots/hypr

1
config/hypr/hyprland Symbolic link
View File

@@ -0,0 +1 @@
/home/hexdev/hexdots/hypr/hyprland

1
config/hypr/hyprland.conf Symbolic link
View File

@@ -0,0 +1 @@
/home/hexdev/hexdots/hypr/hyprland.conf

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

@@ -0,0 +1,6 @@
require("hyprland.monitors")
require("hyprland.inputs")
require("hyprland.keybinds")
require("hyprland.autostart")
require("hyprland.appearance")
require("hyprland.window-rules")

1
config/hypr/hyprlock.conf Symbolic link
View File

@@ -0,0 +1 @@
/home/hexdev/hexdots/hypr/hyprlock.conf

1
config/hypr/hyprpaper.conf Symbolic link
View File

@@ -0,0 +1 @@
/home/hexdev/hexdots/hypr/hyprpaper.conf

1
config/kitty/kitty.conf Symbolic link
View File

@@ -0,0 +1 @@
/home/hexdev/hexdots/kitty/kitty.conf

8
config/mimeapps.list Normal file
View File

@@ -0,0 +1,8 @@
[Added Associations]
image/x-canon-cr2=nomacs.desktop;
video/mp4=vlc-2.desktop;
[Default Applications]
image/x-canon-cr2=nomacs.desktop;
video/mp4=vlc-2.desktop;
x-scheme-handler/throne=throne-url-handler.desktop

1
config/nvim Symbolic link
View File

@@ -0,0 +1 @@
/home/hexdev/hexdots/nvim

9
config/pavucontrol.ini Normal file
View File

@@ -0,0 +1,9 @@
[window]
width=500
height=400
sinkInputType=1
sourceOutputType=1
sinkType=0
sourceType=1
showVolumeMeters=1
hideUnavailableCardProfiles=0

1
config/rofi Symbolic link
View File

@@ -0,0 +1 @@
/home/hexdev/hexdots/rofi

1
config/swaync Symbolic link
View File

@@ -0,0 +1 @@
/home/hexdev/hexdots/swaync

16
config/user-dirs.dirs Normal file
View File

@@ -0,0 +1,16 @@
# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run.
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
#
XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOWNLOAD_DIR="$HOME/Downloads"
XDG_TEMPLATES_DIR="$HOME/Templates"
XDG_PUBLICSHARE_DIR="$HOME/Public"
XDG_DOCUMENTS_DIR="$HOME/Documents"
XDG_MUSIC_DIR="$HOME/Music"
XDG_PICTURES_DIR="$HOME/Pictures"
XDG_VIDEOS_DIR="$HOME/Videos"
XDG_PROJECTS_DIR="$HOME/Projects"

1
config/user-dirs.locale Normal file
View File

@@ -0,0 +1 @@
en_US

1
config/waybar Symbolic link
View File

@@ -0,0 +1 @@
/home/hexdev/hexdots/waybar

66
install-pkg.sh Executable file
View File

@@ -0,0 +1,66 @@
#!/usr/bin/env bash
set -euo pipefail
repo_root=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
official_file="$repo_root/packages-official.txt"
aur_file="$repo_root/packages-aur.txt"
install_official=true
install_aur=true
for arg in "$@"; do
case "$arg" in
--official-only)
install_official=true
install_aur=false
;;
--aur-only)
install_official=false
install_aur=true
;;
--help|-h)
cat <<'EOF'
Usage: ./install-pkg.sh [--official-only | --aur-only]
Installs packages listed in:
- packages-official.txt via pacman
- packages-aur.txt via yay or paru
EOF
exit 0
;;
*)
printf 'Unknown argument: %s\n' "$arg" >&2
exit 1
;;
esac
done
read_packages() {
local file=$1
mapfile -t packages < <(grep -vE '^\s*($|#)' "$file")
}
if [[ "$install_official" == true ]]; then
read_packages "$official_file"
if (( ${#packages[@]} > 0 )); then
sudo pacman -S --needed --noconfirm -- "${packages[@]}"
fi
fi
if [[ "$install_aur" == true ]]; then
helper=
if command -v yay >/dev/null 2>&1; then
helper=yay
elif command -v paru >/dev/null 2>&1; then
helper=paru
else
printf 'AUR helper not found. Install yay or paru first.\n' >&2
exit 1
fi
read_packages "$aur_file"
if (( ${#packages[@]} > 0 )); then
"$helper" -S --needed --noconfirm -- "${packages[@]}"
fi
fi

4
packages-aur.txt Normal file
View File

@@ -0,0 +1,4 @@
lazyssh-bin
nomacs
throne-bin
ttf-league-spartan

205
packages-official.txt Normal file
View File

@@ -0,0 +1,205 @@
accountsservice
alacritty
alsa-firmware
alsa-plugins
alsa-utils
awesome-terminal-fonts
base
base-devel
bash-completion
bind
bluez
bluez-hid2hci
bluez-libs
bluez-obex
bluez-utils
btop
btrfs-assistant
btrfs-progs
cachyos-fish-config
cachyos-hello
cachyos-hooks
cachyos-kernel-manager
cachyos-keyring
cachyos-micro-settings
cachyos-mirrorlist
cachyos-packageinstaller
cachyos-plymouth-bootanimation
cachyos-plymouth-theme
cachyos-rate-mirrors
cachyos-settings
cachyos-snapper-support
cachyos-v3-mirrorlist
cachyos-v4-mirrorlist
cachyos-wallpapers
cachyos-zsh-config
cantarell-fonts
chwd
code
cpupower
cryptsetup
device-mapper
diffutils
dmidecode
dmraid
dnsmasq
dolphin
dosfstools
duf
e2fsprogs
efibootmgr
efitools
egl-wayland
ethtool
exfatprogs
f2fs-tools
fastfetch
ffmpegthumbnailer
firefox
flatpak
fsarchiver
geeqie
git
github-cli
glances
gst-libav
gst-plugin-pipewire
gst-plugins-bad
gst-plugins-ugly
gst-plugin-va
hdparm
hwdetect
hwinfo
hyprland
hyprlock
hyprpaper
hyprpicker
hyprshot
hyprshutdown
inetutils
intel-media-driver
intel-media-sdk
intel-ucode
iwd
jfsutils
kitty
less
lib32-nvidia-utils
lib32-opencl-nvidia
lib32-vulkan-icd-loader
lib32-vulkan-intel
libdvdcss
libgsf
libopenraw
libva-nvidia-driver
limine
limine-mkinitcpio-hook
limine-snapper-sync
linux-cachyos
linux-cachyos-headers
linux-cachyos-lts
linux-cachyos-lts-headers
linux-cachyos-lts-nvidia-open
linux-cachyos-nvidia-open
linux-firmware
logrotate
lsb-release
lsscsi
lvm2
man-db
man-pages
mdadm
meld
mesa-utils
micro
mkinitcpio
modemmanager
mtools
nano
nano-syntax-highlighting
neovim
netctl
networkmanager
networkmanager-openvpn
nfs-utils
nilfs-utils
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
nss-mdns
nvidia-settings
nvidia-utils
obs-studio
opencl-nvidia
opencode
openssh
os-prober
pacman-contrib
paru
pavucontrol
perl
pipewire-alsa
pipewire-pulse
pkgfile
playerctl
plocate
plymouth
polkit-kde-agent
poppler-glib
power-profiles-daemon
prismlauncher
pv
pyenv
python
python-defusedxml
python-packaging
rebuild-detector
reflector
ripgrep
rofi
rsync
sddm
sg3_utils
shelly
smartmontools
s-nail
snapper
sof-firmware
sudo
swaync
sysfsutils
texinfo
ttf-bitstream-vera
ttf-dejavu
ttf-go-nerd
ttf-jetbrains-mono-nerd
ttf-liberation
ttf-meslo-nerd
ttf-opensans
ufw
ufw-extras
unrar
unzip
upower
usb_modeswitch
usbutils
uwsm
vim
vlc
vlc-plugins-all
vulkan-icd-loader
vulkan-intel
waybar
wget
which
wireplumber
wl-clipboard
wofi
wpa_supplicant
xdg-desktop-portal-hyprland
xdg-user-dirs
xfsprogs
xl2tpd
xorg-xinput
xorg-xwayland
yay

48
restore.sh Executable file
View File

@@ -0,0 +1,48 @@
#!/usr/bin/env bash
set -euo pipefail
repo_root=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
backup_root=${XDG_STATE_HOME:-"$HOME/.local/state"}/dotfiles-backups/$(date +%Y%m%d-%H%M%S)
link_path() {
local source_path=$1
local target_path=$2
mkdir -p "$(dirname "$target_path")"
if [[ -L "$target_path" ]]; then
local resolved
resolved=$(readlink -f "$target_path")
if [[ "$resolved" == "$source_path" ]]; then
printf 'skip %s\n' "$target_path"
return 0
fi
fi
if [[ -e "$target_path" && ! -L "$target_path" ]]; then
local backup_path="$backup_root/${target_path#$HOME/}"
mkdir -p "$(dirname "$backup_path")"
mv "$target_path" "$backup_path"
printf 'backup %s -> %s\n' "$target_path" "$backup_path"
elif [[ -L "$target_path" ]]; then
rm "$target_path"
fi
ln -s "$source_path" "$target_path"
printf 'link %s -> %s\n' "$target_path" "$source_path"
}
while IFS= read -r entry; do
[[ -z "$entry" ]] && continue
link_path "$repo_root/config/$entry" "$HOME/.config/$entry"
done < <(cd "$repo_root/config" && printf '%s\n' *)
if [[ -d "$repo_root/home" ]]; then
while IFS= read -r entry; do
[[ -z "$entry" ]] && continue
link_path "$repo_root/home/$entry" "$HOME/$entry"
done < <(cd "$repo_root/home" && printf '%s\n' .[^.]* *)
fi
printf '\nDone. Backups, if any, are in %s\n' "$backup_root"