#!/usr/bin/env bash
# setup - setup system packages and configuration files.
#
# usage: setup
#
# link - symlink configuration files
# install - install system packages and tools
set -euo pipefail
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"
usage() {
echo "setup - setup system packages and configuration files."
echo "usage: setup "
echo ""
echo "link - symlink configuraion files"
echo "install - install system packages and tools"
}
link() {
mkdir -p "$HOME/.local"
mkdir -p "$HOME/.local/bin"
mkdir -p "$HOME/.claude"
mkdir -p "$XDG_CONFIG_HOME/agents"
mkdir -p "$XDG_CONFIG_HOME/autostart"
mkdir -p "$XDG_CONFIG_HOME/emacs"
mkdir -p "$XDG_CONFIG_HOME/fontconfig"
mkdir -p "$XDG_CONFIG_HOME/mise"
mkdir -p "$XDG_CONFIG_HOME/rustfmt"
mkdir -p "$XDG_CONFIG_HOME/systemd/user"
mkdir -p "$XDG_CONFIG_HOME/tmux"
ln -s "$PWD/bin/caps-to-ctrl" "$HOME/.local/bin/caps-to-ctrl"
ln -s "$PWD/bin/dl-music" "$HOME/.local/bin/dl-music"
ln -s "$PWD/bin/rctrl-to-compose" "$HOME/.local/bin/rctrl-to-compose"
ln -s "$PWD/bin/theme" "$HOME/.local/bin/theme"
ln -s "$PWD/shell/.bashrc" "$HOME/.bashrc"
ln -s "$PWD/shell/.profile" "$HOME/.profile"
ln -s "$PWD/shell/.inputrc" "$HOME/.inputrc"
ln -s "$PWD/shell/tmux.conf" "$XDG_CONFIG_HOME/tmux/tmux.conf"
sudo cp "$PWD/shell/disable-admin-flag" /etc/sudoers.d/disable-admin-flag
sudo chown root:root /etc/sudoers.d/disable-admin-flag
sudo chmod 0440 /etc/sudoers.d/disable-admin-flag
ln -s "$PWD/emacs/init.el" "$XDG_CONFIG_HOME/emacs/init.el"
ln -s "$PWD/emacs/themes" "$XDG_CONFIG_HOME/emacs/themes"
ln -s "$PWD/git" "$XDG_CONFIG_HOME/git"
ln -s "$PWD/fonts/archives" "$XDG_DATA_HOME/fonts"
ln -s "$PWD/fonts/fonts.conf" "$XDG_CONFIG_HOME/fontconfig/fonts.conf"
ln -s "$PWD/agents/AGENTS.md" "$XDG_CONFIG_HOME/agents/AGENTS.md"
ln -s "$PWD/agents/conventions" "$XDG_CONFIG_HOME/agents/conventions"
ln -s "$PWD/agents/claude/CLAUDE.md" "$HOME/.claude/CLAUDE.md"
ln -s "$PWD/agents/claude/settings.json" "$HOME/.claude/settings.json"
ln -s "$PWD/agents/pi" "$XDG_CONFIG_HOME/pi"
ln -s "$PWD/langs/mise/config.toml" "$XDG_CONFIG_HOME/mise/config.toml"
ln -s "$PWD/langs/rust/rustfmt.toml" "$XDG_CONFIG_HOME/rustfmt/rustfmt.toml"
ln -s "$PWD/systemd/theme-auto.service" "$XDG_CONFIG_HOME/systemd/user/theme-auto.service"
ln -s "$PWD/systemd/theme-auto.timer" "$XDG_CONFIG_HOME/systemd/user/theme-auto.timer"
ln -s "$PWD/xfce/caps-to-ctrl.desktop" "$XDG_CONFIG_HOME/autostart/caps-to-ctrl.desktop"
ln -s "$PWD/xfce/rctrl-to-compose.desktop" "$XDG_CONFIG_HOME/autostart/ctrl-to-compose.desktop"
cp "$PWD/xfce/xfce4-keyboard-shortcuts.xml" "$XDG_CONFIG_HOME/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml"
cp "$PWD/xfce/xfce4-panel.xml" "$XDG_CONFIG_HOME/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml"
cp "$PWD/xfce/xfce4-terminal.xml" "$XDG_CONFIG_HOME/xfce4/xfconf/xfce-perchannel-xml/xfce4-terminal.xml"
cp "$PWD/xfce/xfwm4.xml" "$XDG_CONFIG_HOME/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml"
cp "$PWD/xfce/xsettings.xml" "$XDG_CONFIG_HOME/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml"
}
install() {
sudo apt install -y $(xargs