#!/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