mirror of
https://github.com/AquaMorph/dotfiles.git
synced 2026-10-22 04:45:34 +00:00
Compare commits
8
Commits
f47e69f438
...
67c81eea85
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
67c81eea85 | ||
|
|
ed99088c87 | ||
|
|
891ba27000 | ||
|
|
8d80823b37 | ||
|
|
021dcf7010 | ||
|
|
8fb6eb5f82 | ||
|
|
585818041a | ||
|
|
525f55487f |
@@ -1,10 +1,65 @@
|
||||
# Dotfiles
|
||||
|
||||
A collection of config files and scripts for Fedora GNU/Linux.
|
||||
A collection of config files and scripts for Fedora GNU/Linux and macOS.
|
||||
|
||||
## Installation
|
||||
## Linux installation
|
||||
|
||||
```bash
|
||||
chezmoi init --apply git@github.com:AquaMorph/dotfiles.git
|
||||
```
|
||||
|
||||
## macOS installation
|
||||
|
||||
1. Install the Xcode Command Line Tools with `xcode-select --install`, then
|
||||
install [Homebrew](https://brew.sh/) and follow its `brew shellenv`
|
||||
instructions. Its default prefix is `/opt/homebrew` on Apple Silicon and
|
||||
`/usr/local` on Intel Macs.
|
||||
|
||||
2. Download the dotfiles without applying them, then install dependencies:
|
||||
|
||||
```bash
|
||||
brew install chezmoi
|
||||
chezmoi init git@github.com:AquaMorph/dotfiles.git
|
||||
brew bundle --file="$(chezmoi source-path ~/.brewfile)"
|
||||
```
|
||||
|
||||
The Brewfile includes chezmoi, Git, Emacs, Python, jq, pass, GnuPG, Brave Browser,
|
||||
Alacritty, and Inconsolata. FFmpeg and Ollama are optional; install them separately
|
||||
if needed.
|
||||
|
||||
3. Restore your password store to `~/.password-store` and import its GPG private
|
||||
key from a secure backup before applying the dotfiles:
|
||||
|
||||
```bash
|
||||
gpg --import /path/to/private-key-backup.asc
|
||||
```
|
||||
|
||||
If the store is kept in Git, clone it to `~/.password-store` using your
|
||||
password-store repository URL. Verify that all required secrets can be
|
||||
decrypted without printing their values:
|
||||
|
||||
```bash
|
||||
pass show self-host/token/audible-activation-bytes >/dev/null
|
||||
pass show self-host/token/aquaai >/dev/null
|
||||
pass show self-host/token/todoist >/dev/null
|
||||
```
|
||||
|
||||
`settings.conf` is rendered using `pass`, so applying it requires these
|
||||
entries and the matching private key. Never commit keys or plaintext tokens.
|
||||
|
||||
4. Review and apply the dotfiles, then open a new terminal:
|
||||
|
||||
```bash
|
||||
chezmoi diff
|
||||
chezmoi apply
|
||||
```
|
||||
|
||||
The generated `~/.config/settings.conf` is private (mode `0600`) and its
|
||||
values are shell-quoted. Linux-only configuration and scripts are ignored on
|
||||
macOS; shared shell, Git, and terminal configuration remains managed.
|
||||
|
||||
To install newly added macOS dependencies later:
|
||||
|
||||
```bash
|
||||
brew bundle --file="$(chezmoi source-path ~/.brewfile)"
|
||||
```
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
{{ if eq .chezmoi.os "darwin" -}}
|
||||
# Linux desktop configuration
|
||||
.config/g13
|
||||
.config/gtk-3.0
|
||||
.config/gtk-4.0
|
||||
.config/hypr
|
||||
.config/i3
|
||||
.config/mako
|
||||
.config/polybar
|
||||
.config/quickshell
|
||||
.config/rofi
|
||||
.config/waybar
|
||||
|
||||
# Linux services and PipeWire configuration
|
||||
.config/systemd
|
||||
.config/wireplumber
|
||||
.local/share/wireplumber
|
||||
user/*.service
|
||||
|
||||
# Linux package installers and desktop startup scripts
|
||||
bin/installers
|
||||
bin/desktop
|
||||
bin/system
|
||||
bin/i3-mouse.py
|
||||
bin/i3wm-config-gen.sh
|
||||
bin/i3wm-for-window-gen.sh
|
||||
bin/launch-stocks-tracker.py
|
||||
bin/start-firefox.py
|
||||
bin/start-brave.sh
|
||||
|
||||
# Linux hardware, screen locking, and NAS mounting
|
||||
bin/get-mouse-battery.sh
|
||||
bin/lock.sh
|
||||
bin/toggle-graphics.sh
|
||||
bin/trackpad-toggle.sh
|
||||
bin/connect-nas.sh
|
||||
|
||||
# ALSA/PipeWire routing and Rofi prompts; keep portable audio utilities
|
||||
bin/audio/audio-lib.sh
|
||||
bin/audio/aquamix.sh
|
||||
bin/audio/es8start.sh
|
||||
bin/audio/es9start.sh
|
||||
bin/audio/es9stop.sh
|
||||
bin/audio/system-start-audio.sh
|
||||
bin/audio/synth-power-prompt.sh
|
||||
|
||||
# Wine-based Adobe DNG conversion with GNU date
|
||||
bin/video/cr3todng.sh
|
||||
{{ else -}}
|
||||
# Homebrew dependencies are only managed on macOS.
|
||||
.brewfile
|
||||
{{ end -}}
|
||||
@@ -1 +1 @@
|
||||
openai/gpt-5.6-luna-fast
|
||||
openai/gpt-5.6-luna
|
||||
|
||||
@@ -22,8 +22,7 @@ function dnfUpdate {
|
||||
function aptUpdate {
|
||||
if command -v apt &> /dev/null; then
|
||||
echo Updating APT...
|
||||
sudo apt update
|
||||
sudo apt upgrade
|
||||
sudo apt update && sudo apt upgrade
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -31,22 +30,31 @@ function aptUpdate {
|
||||
function flatpakUpdate {
|
||||
if command -v flatpak &> /dev/null; then
|
||||
echo Updating Flatpak...
|
||||
flatpak uninstall --unused
|
||||
flatpak update
|
||||
flatpak uninstall --unused && flatpak update
|
||||
fi
|
||||
}
|
||||
|
||||
# Appimage Updater
|
||||
function appimageUpdate {
|
||||
if command -v am &> /dev/null; then
|
||||
echo Updating AppImages...
|
||||
am update
|
||||
fi
|
||||
}
|
||||
|
||||
# Homebrew Updater
|
||||
function brewUpdate {
|
||||
if command -v brew &> /dev/null; then
|
||||
echo Updating Homebrew...
|
||||
brew update && brew upgrade
|
||||
fi
|
||||
}
|
||||
|
||||
# Pass Repository Updater
|
||||
function passUpdate {
|
||||
if [ -d "$HOME/.password-store/.git" ] && [ -d "$HOME/.password-store" ]; then
|
||||
echo Updating pass repository...
|
||||
cd "$HOME/.password-store"
|
||||
git pull
|
||||
git -C "$HOME/.password-store" pull
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -72,16 +80,28 @@ function manualUpdate {
|
||||
fi
|
||||
}
|
||||
|
||||
chezmoiUpdate
|
||||
echo ''
|
||||
dnfUpdate
|
||||
aptUpdate
|
||||
echo ''
|
||||
flatpakUpdate
|
||||
echo ''
|
||||
appimageUpdate
|
||||
echo ''
|
||||
manualUpdate
|
||||
echo ''
|
||||
passUpdate
|
||||
update_failed=0
|
||||
|
||||
# Report failures while allowing the remaining updaters to run.
|
||||
function run_updater {
|
||||
if ! "$1"; then
|
||||
echo "Updater failed: $1" >&2
|
||||
update_failed=1
|
||||
fi
|
||||
}
|
||||
|
||||
run_updater chezmoiUpdate
|
||||
echo ''
|
||||
run_updater brewUpdate
|
||||
run_updater dnfUpdate
|
||||
run_updater aptUpdate
|
||||
echo ''
|
||||
run_updater flatpakUpdate
|
||||
echo ''
|
||||
run_updater appimageUpdate
|
||||
echo ''
|
||||
run_updater manualUpdate
|
||||
echo ''
|
||||
run_updater passUpdate
|
||||
|
||||
exit "$update_failed"
|
||||
|
||||
@@ -7,6 +7,7 @@ import datetime as dt
|
||||
import re
|
||||
import operator
|
||||
import os
|
||||
import shlex
|
||||
import sys
|
||||
import tbapy
|
||||
from todoist_api_python.api import TodoistAPI
|
||||
@@ -105,7 +106,7 @@ configParser.read_string(configString)
|
||||
|
||||
# Load needed credentials
|
||||
tbaKey = configParser.get('Settings', 'TBAKey')
|
||||
todoistToken = configParser.get('Settings', 'TodoistToken')
|
||||
todoistToken = shlex.split(configParser.get('Settings', 'TodoistToken'))[0]
|
||||
|
||||
# Setup Todoist
|
||||
api = TodoistAPI(todoistToken)
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
# Shared command-line tools
|
||||
brew "chezmoi"
|
||||
brew "git"
|
||||
brew "emacs"
|
||||
brew "python"
|
||||
brew "jq"
|
||||
|
||||
# Password-store secrets used by chezmoi templates
|
||||
brew "pass"
|
||||
brew "gnupg"
|
||||
|
||||
# Web browser
|
||||
cask "brave-browser"
|
||||
|
||||
# Terminal and font used by the shared Alacritty configuration
|
||||
cask "alacritty"
|
||||
cask "font-inconsolata"
|
||||
|
||||
# Optional tools for audio conversion and local AI
|
||||
# brew "ffmpeg"
|
||||
# brew "ollama"
|
||||
@@ -0,0 +1,5 @@
|
||||
# Single-quote values and escape embedded single quotes without changing backslashes.
|
||||
computer='{{ .chezmoi.hostname | replace "'" "'\\''" }}'
|
||||
activation_bytes='{{ pass "self-host/token/audible-activation-bytes" | replace "'" "'\\''" }}'
|
||||
AQUAAI_KEY='{{ pass "self-host/token/aquaai" | replace "'" "'\\''" }}'
|
||||
TodoistToken='{{ pass "self-host/token/todoist" | replace "'" "'\\''" }}'
|
||||
@@ -1,4 +0,0 @@
|
||||
computer={{ .chezmoi.hostname }}
|
||||
activation_bytes={{ pass "self-host/token/audible-activation-bytes" }}
|
||||
AQUAAI_KEY={{ pass "self-host/token/aquaai" }}
|
||||
TodoistToken={{ pass "self-host/token/todoist" }}
|
||||
@@ -1,10 +0,0 @@
|
||||
sh ~/.config/scripts/setup.sh -nr
|
||||
|
||||
# Load user settings from config file.
|
||||
. ~/.config/settings.conf
|
||||
|
||||
if [[ $computer == 'w530' ]]; then
|
||||
if [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then
|
||||
exec startx
|
||||
fi
|
||||
fi
|
||||
@@ -0,0 +1,25 @@
|
||||
{{ if eq .chezmoi.os "darwin" -}}
|
||||
# Initialize Homebrew on Apple Silicon or Intel Macs.
|
||||
if [[ -x /opt/homebrew/bin/brew ]]; then
|
||||
eval "$(/opt/homebrew/bin/brew shellenv)"
|
||||
elif [[ -x /usr/local/bin/brew ]]; then
|
||||
eval "$(/usr/local/bin/brew shellenv)"
|
||||
fi
|
||||
{{ else if eq .chezmoi.os "linux" -}}
|
||||
if [[ -f "$HOME/.config/scripts/setup.sh" ]]; then
|
||||
sh "$HOME/.config/scripts/setup.sh" -nr
|
||||
fi
|
||||
{{ end }}
|
||||
|
||||
# Load user settings from config file.
|
||||
if [[ -f "$HOME/.config/settings.conf" ]]; then
|
||||
source "$HOME/.config/settings.conf"
|
||||
fi
|
||||
|
||||
{{ if eq .chezmoi.os "linux" -}}
|
||||
if [[ $computer == 'w530' ]]; then
|
||||
if [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then
|
||||
exec startx
|
||||
fi
|
||||
fi
|
||||
{{ end -}}
|
||||
@@ -5,24 +5,45 @@ setopt PROMPT_SUBST
|
||||
PROMPT='%F{white}%n% @%m%f %F{blue}%~%f %F{red}${vcs_info_msg_0_}%f$ '
|
||||
|
||||
setopt appendhistory autocd extendedglob nomatch notify
|
||||
setopt hist_ignore_all_dups hist_save_no_dups hist_find_no_dups
|
||||
unsetopt beep
|
||||
bindkey -e
|
||||
zstyle :compinstall filename '~/.zshrc'
|
||||
|
||||
# Keep PATH entries unique when shell configuration is sourced again.
|
||||
typeset -U path PATH
|
||||
|
||||
{{ if eq .chezmoi.os "darwin" -}}
|
||||
# Load Homebrew completions before initializing completion support.
|
||||
typeset -U fpath
|
||||
if [[ -n "$HOMEBREW_PREFIX" && -d "$HOMEBREW_PREFIX/share/zsh/site-functions" ]]; then
|
||||
fpath=("$HOMEBREW_PREFIX/share/zsh/site-functions" $fpath)
|
||||
elif [[ -d /opt/homebrew/share/zsh/site-functions ]]; then
|
||||
fpath=(/opt/homebrew/share/zsh/site-functions $fpath)
|
||||
elif [[ -d /usr/local/share/zsh/site-functions ]]; then
|
||||
fpath=(/usr/local/share/zsh/site-functions $fpath)
|
||||
fi
|
||||
{{ end -}}
|
||||
|
||||
autoload -Uz compinit
|
||||
compinit
|
||||
|
||||
HISTFILE=~/.zsh_history
|
||||
HISTSIZE=99999999
|
||||
SAVEHIST=99999999
|
||||
HISTSIZE=100000
|
||||
SAVEHIST=50000
|
||||
|
||||
if [[ -f "$HOME/.config/settings.conf" ]]; then
|
||||
source "$HOME/.config/settings.conf"
|
||||
fi
|
||||
|
||||
# User scripts
|
||||
path=("$HOME/bin" $path)
|
||||
export PATH
|
||||
|
||||
# Text Editor
|
||||
export EDITOR='emacs -nw'
|
||||
alias emacs="${EDITOR}"
|
||||
alias e="${EDITOR}"
|
||||
export TERM=xterm
|
||||
|
||||
# Search
|
||||
alias g='grep -Irn'
|
||||
@@ -36,16 +57,21 @@ alias dote="${DOT_PROGRAM} edit --apply"
|
||||
alias dotu="${DOT_PROGRAM} update"
|
||||
|
||||
# Other
|
||||
{{ if eq .chezmoi.os "darwin" -}}
|
||||
alias i='brew install'
|
||||
alias d='brew'
|
||||
{{ else -}}
|
||||
alias i='sudo dnf install'
|
||||
alias d='sudo dnf'
|
||||
alias u='sh ~/bin/update.sh'
|
||||
{{ end -}}
|
||||
alias u='bash ~/bin/update.sh'
|
||||
alias h='cd ~/git/cacolglazier.com/ && hugo server'
|
||||
|
||||
# OpenCode
|
||||
export PATH="$HOME/.opencode/bin:$PATH"
|
||||
path=("$HOME/.opencode/bin" $path)
|
||||
OPENCODE='opencode'
|
||||
alias o="${OPENCODE}"
|
||||
alias oc="${OPENCODE} --agent commit run 'Create a commit.'"
|
||||
alias oc="${OPENCODE} run --agent commit --model '{{ includeTemplate ".chezmoitemplates/models/small-brain" | trim }}' 'Create a commit.'"
|
||||
alias ocr="${OPENCODE} --agent review --prompt 'Code review staged changes.'"
|
||||
alias or="${OPENCODE} --continue"
|
||||
|
||||
@@ -76,11 +102,14 @@ export AQUAAI_RICH_FORMAT_MODE=false
|
||||
export AQUAAI_KEY
|
||||
|
||||
# Daisy build toolkit
|
||||
GCC_PATH=~/dev/gcc-arm-none-eabi-10-2020-q4-major/bin
|
||||
export PATH=$GCC_PATH:$PATH
|
||||
GCC_PATH="$HOME/dev/gcc-arm-none-eabi-10-2020-q4-major/bin"
|
||||
if [[ -d "$GCC_PATH" ]]; then
|
||||
path=("$GCC_PATH" $path)
|
||||
fi
|
||||
|
||||
# AM auto complete
|
||||
if [[ -f "$HOME/.local/share/bash-completion/completions/am" ]]; then
|
||||
autoload bashcompinit
|
||||
bashcompinit
|
||||
source "/home/aqua/.local/share/bash-completion/completions/am"
|
||||
|
||||
source "$HOME/.local/share/bash-completion/completions/am"
|
||||
fi
|
||||
Reference in New Issue
Block a user