# pacman sudo ln -sfv "$DOTFILES/pacman.conf" /etc/pacman.conf pacman_deps=( coreutils util-linux xdg-utils scdoc stow man-db man-pages texinfo sudo base-devel cmake meson pkg-config cpio pciutils gcc iwd chrony openssh rsync git github-cli difftastic jujutsu mergiraf perl-authen-sasl perl-io-socket-ssl zoxide eza bat fd ripgrep sd fzf skim chafa gnupg pinentry rng-tools pass pass-otp tealdeer just inotify-tools entr lua rustup zig fnm bottom jq imagemagick ffmpeg lf v4l-utils xdotool wtype cliphist grim slurp satty gpu-screen-recorder mpv typst docker go qmk bear pipewire pipewire-audio pipewire-pulse pipewire-jack wireplumber playerctl brightnessctl bluez bluez-utils pamixer pavucontrol libnotify mako swayosd wl-clipboard wl-clip-persist python python-pip python-adblock ghostty foot foot-terminfo fish tmux bob # neovim version manager tree-sitter-cli # needed to cache treesitter parsers noto-fonts noto-fonts-emoji libva-utils xorg-xwayland xwayland-satellite swaylock gnome-keyring qt5-wayland qt6-wayland qt6-multimedia-ffmpeg qt5ct qt6ct sway awww swayimg waybar gamemode lib32-gamemode udiskie fuzzel bluetui impala rofimoji steam qutebrowser pdfjs # needed for qutebrowser zathura zathura-pdf-mupdf python-tldextract cronie xdg-desktop-portal xdg-desktop-portal-wlr wayland-utils wlr-randr ly opencode unzip # lsps, formatters, linters vscode-css-languageserver vscode-json-languageserver tailwindcss-language-server clang rust-analyzer yaml-language-server taplo-cli tinymist markdown-oxide bash-language-server zls stylua shfmt yamlfmt ruff typstyle eslint_d uv ) step "installing pacman packages" sudo pacman -Syu --needed --noconfirm ${pacman_deps[@]} install_rust() { rustup toolchain install stable rustup default stable rustup update } install_wrapper cargo install_rust install_yay() { cd $DOWNLOADS git clone https://aur.archlinux.org/yay.git cd yay && makepkg -si --noconfirm && cd .. && rm -rf yay } install_wrapper yay install_yay aur_deps=( tessen pass-git-helper vesktop-bin hellwal hyprpicker-git mpv-uosc-git mpv-thumbfast-git xdg-desktop-portal-termfilechooser-boydaihungst-git watchman-bin localsend-bin cmd-polkit-git wayfreeze-git # lsps, formatters, linters emmylua-ls-bin fish-lsp-git ) step "installing AUR packages" yay -S --needed --noconfirm --devel ${aur_deps[@]} # systemd step "systemd: enable system services" sudo systemctl disable --now systemd-timesyncd.service sudo systemctl enable --now \ chronyd.service \ chrony-wait.service \ cronie.service \ systemd-resolved \ iwd.service success step "systemd: enable user services" systemctl --user daemon-reload systemctl --user enable --now \ pipewire.socket \ pipewire-pulse.socket \ wireplumber.service \ ssh-agent.service \ ssh-agent.socket \ xdg-desktop-portal.service \ xdg-desktop-portal-wlr.service success step "systemd-logind: ignore lid switch" logind_conf=/etc/systemd/logind.conf for key in HandleLidSwitch HandleLidSwitchExternalPower HandleLidSwitchDocked; do if rg -q "^${key}=" "$logind_conf"; then info "$key: skipped (already set)" elif rg -q "^#${key}=" "$logind_conf"; then sudo sd "(?m)^#${key}=.*" "${key}=ignore" "$logind_conf" info "$key: set to ignore" else sudo sd "(?m)^\[Login\]$" "[Login]\n${key}=ignore" "$logind_conf" info "$key: set to ignore" fi done success step "display manager: ly" sudo ln -sfv "$DOTFILES/ly/config.ini" /etc/ly/config.ini sudo systemctl enable ly@tty2.service sudo systemctl disable getty@tty2.service success # chrony sudo chronyc online # groups sudo gpasswd -a $USER gamemode sudo gpasswd -a $USER network sudo gpasswd -a $USER input # bluetooth sudo systemctl enable --now bluetooth.service # docker sudo usermod -aG docker $USER sudo systemctl enable --now docker # gtk if exists "gsettings"; then step "gsettings" source "$DOTFILES/install/gsettings.sh" success fi