3.4 KiB
Installation and Environment
This is a set of dotfiles and utilities for setting up my personal environment
on POSIX-style environments. It is cloned from github and installed from the
install.sh script.
It mostly relies on symlinking dotfiles and other resources into the appropriate locations, but also installs dependencies in various ways.
I primarily target Debian Linux-based (Debian, Ubuntu, and Kali Linux) systems
as well as MacOS. Other platforms are lower priorities. Shell scripts ending
in .sh should use only POSIX features unless there is a shebang line at the
beginning suggesting a different shell will be used. In particular, those
in directories with names like bash might use those shells.
zsh and fish are the key interactive shells to be configured, but bash
may also be used at times.
Project Structure
bin/: Contains executable scripts symlinked to~/bin/. Subdirectories likemacos/,restic/, andsetup/are included.dotfiles/: Contains configuration files (dotfiles) symlinked to the home directory.dotfile_overlays/: Each directory within is symlinked to the home directory, allowing for modular or git-submodule-based configurations.local_dotfiles/: If present, its contents are symlinked to the home directory (ignored by git).packages/: Contains lists of packages (one per line) for different environments or toolsets.keys/: Contains SSH keys (ssh/), GPG keys (gpg/), and aknown_hostsfile to be installed/merged.skeltools/: Internal utilities used by the installation scripts.sysctl/andudev/: Linux system configuration files.Brewfile: Homebrew package list for macOS environments.install.sh: The primary installation script for symlinking and basic setup.
Notes on Security Issues
It is safe to have scripts and tools re-invoke themselves with sudo when they require elevated privileges, as these are my own. Do not attempt to remove these use cases.
Making Changes
IMPORTANT: Only make those changes which are explicitly requested. If you identify other issues, notify me about them, but do not suggest changes until I ask for them.
When making large changes, explain your chain of thought transparently and explain solution design.
If making changes that affects how the user installs the tools, update
README.md accordingly.
Adding a new dotfile
- Place the new dotfile in the
dotfiles/directory. - Alternatively, use
dotfile_overlays/if the dotfile belongs to a specific group or submodule. - The
install.shscript will automatically symlink it to the home directory.
Adding a new script to bin/
- Add the new script to the
bin/directory (or an appropriate subdirectory). - Ensure the script is executable (
chmod +x).
Adding a new package
- Identify the appropriate package list in the
packages/directory (e.g.,packages/cli,packages/kali). - Add the new package name to the list (one per line).
- If a new package set is required, create a new file in the
packages/directory. - For macOS-specific packages, also consider adding them to the
Brewfile.
Platform-specific changes
When making changes that are specific to a platform (e.g., Debian vs. macOS), please check for existing conventions in the install.sh script or other files. Use conditional logic (e.g., checking uname) to apply platform-specific settings.