```
      _       _    __ _ _           
     | |     | |  / _(_) |          
   __| | ___ | |_| |_ _| | ___  ___ 
  / _` |/ _ \| __|  _| | |/ _ \/ __|
 | (_| | (_) | |_| | | | |  __/\__ \
  \__,_|\___/ \__|_| |_|_|\___||___/
```

## Table of Contents

<!-- vim-markdown-toc GFM -->

* [Overview](#overview)
* [Chezmoi TLDR](#chezmoi-tldr)
* [Configs and Applications](#configs-and-applications)
* [Requirements](#requirements)
* [Optional Requirements](#optional-requirements)
* [Chezmoi Configuration File (Optional)](#chezmoi-configuration-file-optional)
* [Initial Setup](#initial-setup)
* [Special Notes](#special-notes)
    * [Mozilla Firefox](#mozilla-firefox)
    * [Tmux](#tmux)

<!-- vim-markdown-toc -->

# Overview

These are my dotfiles for various systems which are managed using [chezmoi](https://www.chezmoi.io/)

This includes custom profiles for various machines


# Chezmoi TLDR

```
chezmoi init <repo>
chezmoi apply -n    # Apply changes to ~ (Dry run)
chezmoi archive     # Create an archive of the dotfiles
chezmoi cd          # cd to chosmoi source path
chezmoi merge       # Merge changes made to local copy with chezmoi managed
chezmoi update      # Pull latest version from git and apply changes

chezmoi add ~/.my_file      # Manage new file
chezmoi forget ~/.my_file   # Stop managing a file
chezmoi managed             # View managed files
```


# Configs and Applications

Check out the README's of the various apps for shortcuts, plugin info, etc:

* [Tmux](dot_config/tmux/README.md)
* [Vim](dot_config/vim/README.md)
* [ZSH](dot_config/zsh/README.md)


# Requirements

| Application | Min Version |
| ----------- | ----------- |
| Chezmoi     | 2.3         |
| Tmux        | 3.3         |
| Vim         | 8.2         |
| zsh         | 5.8         |

The above are only the versions that each package was last known working with. It's possible earlier versions may work, although not for all applications. For instance, Tmux 3.3 is required for support of `$XDG_` variables (e.g. `$XDG_CONFIG_HOME`)

# Optional Requirements

See the configuration file for enabling

| Application | Min Version | Notes |
| ----------- | ----------- | ----- |
| Firefox     | ???         | Configures the `user-overrides.js` for use within [Arkenfox's user.js](https://github.com/arkenfox/user.js) profile (Does NOT download the arkenfox profile. Must be done manually via the updater/installer |


# Chezmoi Configuration File (Optional)

Create the chezmoi configuration at `~/.config/chezmoi/chezmoi.toml`:

```
[data]
    hostname_color = "blue"

[data.firefox]
    enabled = true
    bookmarks = "/home/user/bookmarks.html"
    profile_name = "a5bcdefg.default-release"

[data.fonts]
    enabled = true

[data.git]
    email = "git@email.com"
    name = "My User"
    ssl_verify = false
```


# Initial Setup

Chezmoi does not support submodules. However, submodules are how we want to handle this rather than having to use the chezmoi configuration

```
sh -c "$(curl -fsLS git.io/chezmoi)"
chezmoi init <repo>
chezmoi apply -v -n         # Remove -n to actually apply
```


# Special Notes

## Mozilla Firefox

I utilize various [user-overrides.js](private_dot_mozilla/private_firefox/private_personal-profile.default/user-overrides.js.tmpl) and [userChrome.css](private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/userChrome.css) tweaks.

A script is run on chezmoi apply, `.chezmoiscripts/run_after_sync-firefox-profile.sh.tmpl`, which rsyncs `~/.mozilla/firefox/personal-profile.default/` to the profile configured within `~/.mozilla/firefox/<profile-name>/` (`firefox.profile_name` in `chezmoi.toml`)

This allows for the use of [Arkenfox's user.js](https://github.com/arkenfox/user.js) along with the overrides. This does NOT run the Arkenfox `updater.sh` script so this still needs to be done. Will look into in the future.


## Tmux

* Default Prefix: `ctrl + a` or `ctrl + b`

On first install, it may be necessary to run the following to download the plugins and reload tmux:

```
<prefix>I
```
