174 lines
4.1 KiB
Markdown
174 lines
4.1 KiB
Markdown
# Utilities
|
|
|
|
Miscellaneous scripts and tools that live at the top level or in the `clamav/` directory.
|
|
|
|
---
|
|
|
|
## System Update
|
|
|
|
```bash
|
|
bash ~/Dotfiles/update.sh
|
|
```
|
|
|
|
Runs a full system update:
|
|
1. `sudo pacman -Syu` — official repos
|
|
2. `yay -Syu --answerdiff None --answerclean All --removemake` — AUR packages (no prompts)
|
|
|
|
For per-package AUR updates with confirmation:
|
|
```bash
|
|
bash ~/Dotfiles/update-aur-onebyone.sh
|
|
```
|
|
|
|
---
|
|
|
|
## Package Audit
|
|
|
|
```bash
|
|
bash ~/Dotfiles/setup/audit-packages.sh
|
|
```
|
|
|
|
Audits installed packages — useful for finding orphans or unexpected installations.
|
|
|
|
---
|
|
|
|
## Encryption Utilities
|
|
|
|
Simple OpenSSL wrappers for encrypting/decrypting arbitrary strings. Useful for storing secrets in scripts or config files without plaintext exposure.
|
|
|
|
### Encrypt
|
|
|
|
```bash
|
|
bash ~/Dotfiles/encrypt.sh "my secret text" "my-passphrase"
|
|
# Output: base64-encoded AES-256-CBC ciphertext
|
|
```
|
|
|
|
### Decrypt
|
|
|
|
```bash
|
|
bash ~/Dotfiles/decrypt.sh "<ciphertext>" "my-passphrase"
|
|
# Output: original plaintext
|
|
```
|
|
|
|
Both use AES-256-CBC with PBKDF2 key derivation via OpenSSL.
|
|
|
|
---
|
|
|
|
## Credential Storage
|
|
|
|
### Initial Setup
|
|
|
|
```bash
|
|
bash ~/Dotfiles/setup-creds-missing.sh
|
|
```
|
|
|
|
Installs `gnome-keyring` and `seahorse` (GUI manager), then sets git's credential helper to `store`.
|
|
|
|
### Git Credentials
|
|
|
|
`git/` contains `.gitconfig` with:
|
|
|
|
```ini
|
|
[user]
|
|
name = The_miro
|
|
email = amir@abdelbaki.eu
|
|
|
|
[credential]
|
|
helper = store
|
|
|
|
[init]
|
|
defaultBranch = main
|
|
|
|
[push]
|
|
autoSetupRemote = true
|
|
```
|
|
|
|
The `store` helper writes credentials to `~/.git-credentials`. For higher security, `gnome-keyring` intercepts this and stores the credentials in the system keyring instead of plaintext.
|
|
|
|
---
|
|
|
|
## Zsh Plugins
|
|
|
|
```bash
|
|
bash ~/Dotfiles/zshplugins.sh
|
|
```
|
|
|
|
Clones (or updates) the two Oh My Zsh community plugins:
|
|
- `zsh-syntax-highlighting` — real-time syntax colouring in the prompt
|
|
- `zsh-autosuggestions` — fish-style history-based suggestions
|
|
|
|
These are referenced in `.zshrc` and active after the next shell start.
|
|
|
|
---
|
|
|
|
## ClamAV On-Access Scanning
|
|
|
|
Full real-time antivirus scanning via ClamAV's `clamonacc` daemon.
|
|
|
|
### Installation
|
|
|
|
```bash
|
|
bash ~/Dotfiles/clamav/install-clam-onaccess.sh
|
|
```
|
|
|
|
What it does:
|
|
1. Installs `clamav`
|
|
2. Copies `clamd.conf` to `/etc/clamav/`
|
|
3. Installs `clamav-clamonacc.service` to `/etc/systemd/system/`
|
|
4. Installs the sudoers entry from `clamav-sudoer`
|
|
5. Updates virus definitions (`freshclam`)
|
|
6. Enables and starts `clamd` + `clamav-clamonacc`
|
|
|
|
### Key Files
|
|
|
|
| File | Purpose |
|
|
|------|---------|
|
|
| `clamav/clamd.conf` | Daemon configuration (30 KB, full options) |
|
|
| `clamav/clamav-clamonacc.service` | systemd unit for on-access scanning |
|
|
| `clamav/clamav-sudoer` | sudoers rule for ClamAV processes |
|
|
| `clamav/virus-event.bash` | Handler executed when a virus is detected |
|
|
|
|
### Virus Event Handler
|
|
|
|
`virus-event.bash` is called by clamonacc when a threat is found. Customise it to send notifications, quarantine files, or alert an admin.
|
|
|
|
---
|
|
|
|
## Shell Configuration
|
|
|
|
### `.zshrc`
|
|
|
|
- **Framework**: Oh My Zsh
|
|
- **Theme**: robbyrussell (overridden visually by Starship)
|
|
- **Plugins**: syntax-highlighting, autosuggestions
|
|
- **Walk integration**: `lk` function opens the `walk` file navigator
|
|
- **`WALK_MAIN_COLOR`**: set to `#5018DD` (CyberQueer violet)
|
|
- Sources Starship init at the end
|
|
|
|
### `.bashrc`
|
|
|
|
Minimal bash config — sets `PS1`, loads `~/.bash_profile` if present.
|
|
|
|
### Starship Prompt
|
|
|
|
`starship.toml` at the repo root is deployed to `~/.config/starship.toml`.
|
|
|
|
Key customisations:
|
|
- OS, username, directory, git, language, docker, and time segments
|
|
- CyberQueer colours throughout (colour-substitution target)
|
|
- Directory abbreviated to 3 levels with `…/` truncation
|
|
- Common directory substitutions (`~/Documents` → `📄`, etc.)
|
|
|
|
---
|
|
|
|
## Login Manager (ly)
|
|
|
|
`etc-ly-config.ini` is deployed to `/etc/ly/config.ini` during Hyprland install and kept as a colour-substitution target in `apply-theme.sh`.
|
|
|
|
ly is a minimal TUI display manager that runs on `tty1`:
|
|
|
|
```
|
|
systemctl enable ly@tty1
|
|
```
|
|
|
|
Session selection, auto-login, and timeout settings are all in the config.
|