Skip to content

Repository files navigation

* Dotfiles Configuration

This repository contains my personal dotfiles for managing my environment, including XMonad, terminal, shell, and Emacs configurations.

** Overview

The goal of this setup is to create a smooth workflow optimized for Emacs and Firefox, while maintaining compatibility with Steam and gaming.

I use picom, rofi, and xmobar alongside XMonad. Their config files are included here.

Emacs configuration is included in this repository under ~/.config/emacs.

** Managed Software

These are the main software packages managed and configured here, tested mainly on Ubuntu:

|-----------------+----------------------------------------------------------|
| Software        | Description                                              |
|-----------------+----------------------------------------------------------|
| xmonad          | Window manager                                           |
| xmobar          | Status bar                                               |
| xmonad-contrib  | Extra xmonad modules                                     |
| Aeson           | JSON parsing library (used for PulseAudio sink switcher) |
| alacritty       | Terminal emulator                                        |
| fish            | Shell                                                    |
| feh             | Wallpaper setter                                         |
| picom           | Compositor                                               |
| rofi            | Application launcher                                     |
| emacs           | Text editor with custom configuration                    |
| git             | Version control system                                   |
| python3-yamlfix | Yamlfix tool for YAML fixing                             |
| btop            | Resource monitor                                         |
| mpv             | Media player                                             |
|-----------------+----------------------------------------------------------|

** Installing dependencies on Ubuntu

#+begin_src bash
sudo apt install xmonad xmobar libghc-xmonad-dev libghc-aeson-dev alacritty fish feh picom rofi emacs git python3-yamlfix btop mpv
#+end_src

** Installation

To install every configuration file, run:

#+begin_src bash
./install.ml
#+end_src

The script runs through its shebang, so there is no build step. To act on a single
directory, pass an action and a name. The action is a bare letter, not a flag:

#+begin_src bash
./install.ml i emacs   # install only emacs
./install.ml u emacs   # uninstall emacs
./install.ml c emacs   # run the configure script for emacs
#+end_src

Which file goes where is defined in ~dest_places.txt~, one entry per line in the format
~src:dest[:symlink|hardlink][:chmod]~, where ~dest~ is relative to ~$HOME~.

** Xmobar Panels

I use several xmobar panel configurations for different setups/screens:

- big_screen_config.hs
- laptop_bottom_config.hs
- laptop_top_config.hs
- small_screen_bottom_config.hs
- small_screen_top_config.hs

** Emacs Configuration

This repo contains a full Emacs setup tailored for coding and note-taking.

Highlights include:

- use-package-based package management with deferred loading.
- LSP support with Eglot configured for C, C++, Haskell, YAML, and more.
- Custom handling to disable Eglot on cabal.project.* files (like cabal.project.dev) because HLS does **not** support them, avoiding false error messages.
- Undo-tree for undo history management.
- Treemacs for project file tree browsing.
- Projectile for project management.
- Rainbow delimiters and rainbow mode for better syntax visualization.
- Multiple language modes: Haskell, Markdown, Fish, PHP, YAML, Vimscript, OCaml (tuareg).
- Custom keybindings and settings for Haskell development, including compilation and testing helpers.
- A cozy pink theme.

** Vimscript and Fish Mode

I include fish-mode and vimrc-mode in Emacs because sometimes I need to edit Vim and Fish configuration files directly in Emacs. This allows me to edit those config files (.vimrc and fish config) with proper syntax highlighting and editing support inside Emacs while keeping those files versioned in this repo.

** Extra benefits of my HLS + Eglot setup

- Custom my-hls-wrapper.sh script improves integration and flexibility with Haskell Language Server.
- Automatically disables Eglot management on cabal.project.* files (e.g. cabal.project.dev) because HLS does **not** support them, preventing numerous erroneous error messages.
- Fine-tuned performance and error display settings such as autoshutdown, autoreconnect, and eldoc delay.
- Customized keybindings for quick access to common LSP features.
- Enhanced markup formatting supporting markdown math for better documentation experience.

** Notes

- I avoid initializing Git repositories directly in my home directory to keep it clean and uncluttered. Instead, all config files are managed inside this dotfiles repository, and symlinked from there to their appropriate locations (mostly under ~/.config/). This setup allows easy version control, centralized management, and a tidy home directory.
- Emacs configuration, along with all other software configurations, is kept organized in separate folders within this repository for clarity and maintainability.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages