Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/gfarrell/dotfiles

Gideon's dotfiles
https://github.com/gfarrell/dotfiles

Last synced: 2 months ago
JSON representation

Gideon's dotfiles

Awesome Lists containing this project

README

        

# Gideon's Dotfiles

> Look upon my ~works~ dotfiles, ye Mighty, and despair!

These probably won't stand the test of time, but these dotfiles are for
setting up my personal environment on Linux and macOS machines. Since I
now use Linux as my daily driver and almost never touch macOS, I can't
guarantee everything will still work in the Apple ecosystem.

## Repository Structure

Each configuration group (which normally corresponds to a particular
service or application) is contained within a root-level folder. All the
configuration files for that group are contained therein.

There is a Makefile at the root of the repository which will create all
the necessary symlinks. This assumes that your system will obey the XDG
conventions for the most part. Applications I know do not will have
their configurations symlinked appropriately.

## Usage

Clone this repository into a suitable location (e.g. `~/dotfiles`):

git clone https://github.com/gfarrell/dotfiles.git ~/dotfiles

Make symlinks:

cd ~/dotfiles && make symlinks

## Repository Contents

[Firejail](https://firejail.wordpress.com/) (Linux only): used to
control the access of certain applications to parts of the filesystem. I
primarily use this to constrain Firefox's access as the web browser is a
major vulnerability in my system.

[Git](https://git-scm.com/): contains config and shortcuts for the git
version-control system.

haskell: contains the config for ghci (basically just customises the Haskell
repl).

[i3](i3wm.org/) (Linux only): I use `i3-gaps` as my window manager (for
X) on Linux.

init: contains initialisation scripts for a new machine. This includes
package installation scripts which are maintained with the list of
packages I keep installed on my system (inspired by Brewfiles, which
I use for macOS via [homebrew](https://brew.sh/)). For example, to
initialise a linux system run `./init/linux/init-linux.sh`. These
scripts have a "dry-run" option `-d`.

[jrnl](https://jrnl.sh/): CLI journal application which I use to
occasionally journal and record dreams.

[karabiner](https://karabiner-elements.pqrs.org/): keyboard-remapping
utility for macOS (for Linux I just set this in X11 conf).

[khal](https://github.com/pimutils/khal): CLI calendar application,
all calendar configuration is in here. Calendars are stored in
`~/calendars`.

[khard](https://github.com/scheibler/khard): CLI address book,
all address book configuration is in here. Contacts are stored in
`~/contacts`.

[kitty](https://sw.kovidgoyal.net/kitty/): this is my terminal emulator,
completely configurable using a single file.

linux-scripts: various linux scripts go in here, including things which
are more ke systemd services which run continuously (like backups), and
things I run discretely.

[neovim](https://neovim.io/): 💖 I love (neo)vim 💖 -- my editor of
choice, contains all my configuration, including the currently used
version of vim-plug which is a plugin-loading system, and the settings
for CoC which is a semantically aware autocompleter.

[picom](https://github.com/yshui/picom): compositor for X11, my config
in here just does things like handles transparency and shadows on
windows.

[polybar](https://github.com/polybar/polybar): UI bar for X11 which is
compatible with i3. This has both a config file and a launch script to
manage the different processes, especially useful as autorandr needs to
launch the right polybar instances when I add or remove monitors.

[rofi](https://github.com/davatorium/rofi): launcher for X11
(not compatible with wayland), quite extensible, e.g. with my
[rofi-khard](https://github.com/gfarrell/rofi-khard) integration.

systemd: contains various systemd units and timers, e.g. for email /
calendar / contacts sync, backups, etc..

[task](https://taskwarrior.org/): CLI task management application,
contains basic config.

[tmux](https://github.com/tmux/tmux): terminal multiplexer config, I use
`tpm` for managing plugins. Now that I have a tiling window manager this
isn't used as much.

[tridactyl](https://github.com/tridactyl/tridactyl): VIM-like command
interface for Firefox. Really powerful. This config file is currently
not used though, as it would require giving tridactly-native filesystem
access. I need to write a firejail profile to allow this to happen
safely but I have not got around to it.

xorg: all my X11 config files -- these aren't really dotfiles but they
need to be copied to the `/etc/X11` directory. These are for input /
output settings like mapping caps-lock to escape. The only dotfile in
there is `xprofile`.

[zathura](https://pwmt.org/projects/zathura/): VIM-like document viewer,
has a simple config file.

zsh: various bits of shell and environment config. The two files in here
which are sourced *by* zsh itself are zshrc and zshenv, the rest are
sourced by my zshrc file.