- Notifications
You must be signed in to change notification settings - Fork0
Personal chezmoi-managed dotfiles/configs (nvim, zellij, zsh, aqua, KDE Plasma, etc.)
License
Apache-2.0, Unknown licenses found
Licenses found
ethanjli/dotfiles
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
These are my personal dotfiles, managed withchezmoi.
I use them:
- On my laptop runninga personalized custom imageofghcr.io/ublue-os/aurora-dx
- InDistrobox containers
- A visual theme emphasizing visual consistency and readability, notably:
- Use of theOne Dark color scheme wherever possible
- Use ofAtkinson Hyperlegible as the sans serif fontwherever possible
- Use of theIntel One Mono'spatched Nerd Fontas the monospace font wherever possible
- Avoidance of visual clutter
TODO: add screenshots
- A self-contained configuration forzsh, notably:
- Fast startup times (~0.2 s on my laptop)
- A clean prompt line, usingpowerlevel10k:
- with a similar look-and-feel as Starship'splain text symbols preset (only using ASCIIsymbols, for compatibility with virtual consoles)
- usinginstant promptfor fast startup times
- left-alignment of all elements to prevent terminal resizing weirdness
- a reduced set of elements focused on the kinds of projects I work on or might work on
- A fast, simple, and generalizable plugin system which just uses chezmoi to download plugins atpinned versions
- Organization of files into
$HOME/.config/zshand$HOME/.cache/zsh
- A self-contained configuration for bash:
- Fast startup times (~0.2 s on my laptop)
- A clean prompt line, usingoh-my-posh (which I found to be extremelyfast, in contrast to Starship)
- configured to have a similar look-and-feel as my powerlevel10k prompt configuration
- a reduced set of modules focused on the kinds of projects I work on or might work on
- A fast, simple, and generalizable plugin system which just uses chezmoi to download plugins atpinned versions
- Synchronized, fuzzy-searchable shell history usingatuin
- AZellij configuration, notably:
- Custom keybindings for a simpler, more vim-like experience
- A modal usage model which defaults to locked mode as the base and enters normal mode using
Alt+ito perform quick actions and access more advanced modes - A command-line script with a fuzzy-search menu for attaching to any Zellij session or creatinga new session, designed to be run as an application launcher for Zellij in graphical desktops
- (WIP) A minimalisticNeovim configuration, notably:
- The Vim compatibility for all plugin-independent configuration
- Generally default keybindings to avoid disrupting muscle-memory on machines with the defaultkeybindings
- lazy.nvim as the plugin manager
- mason.nvim as the language support tools manager
- (WIP) Anlf configuration, notably:
- Nice previews of:
- Markdown files, usingglow
- Other text files, usingbat
- Raster images, usingchafa with sixel-based graphics
- SVG images, usingImageMagick
- Videos, usingFFMPEG
- (WIP) Integration with Neovim, the shell, and other tools, including:
- Commands (intended for use with Zellij) for launching a Neovim server instance and then usingLF to browse and (remotely) open files in that server instance.
- Nice previews of:
- zoxide shell integration for easier navigation betweendirectories
- Alazygit configuration for doing most of what I needto do with git within a Zellij pane and/or from within lf, notably:
- A cleaner (and denser) view of the Git log
- A simplewezterm configuration (because wezterm is fast andefficient, it's on Flathub, and I found that wezterm starts up much faster than Contour), notably:
- Very minimal keybindings, mostly attached to the
Ctrl+Shiftmodifier, to avoid disruptingmuscle-memory on other terminal emulators and to avoid keybinding conflicts - No keybindings for panes, since I use Zellij for panes and tabs
- No session management, since I use Zellij for session management
- Very minimal keybindings, mostly attached to the
- (WIP) KDE Plasma configurations & theming, notably:
- Custom keybindings, mostly attached to the
Metamodifier, for manual window tiling
- Custom keybindings, mostly attached to the
All general-purpose CLI tools are installed and version-managed withaqua, except for packages listed in theprerequisites section which can be installed via Homebrew as part of the setupprocess described below.
This repository also keeps track of the Flatpak apps installed on the system via a Brewfile-like"Flatpakfile" (in~/.Flatpakfile).~/.Brewfile and~/.Flatpakfile are both automaticallyupdated according to the system's actual configuration upon every user login.
To use this repository, you will first need to set up the dotfiles using chezmoi. Then you will needto set up global tools using aqua.
The following requirements must be met:
- You will need to have either bash or zsh (or both) installed. You probably already have bashinstalled.
If you want to take advantage of certain features, you will need to have some packages installed onyour host environment:
- If you want to use Neovim: the Neovim build downloaded by aqua doesn't run on musl hosts such asAlpine Linux - in such environments, Neovim needs to be provided by the host. The shellconfigurations will default to using the host-provided neovim if it exists; otherwise, theaqua-provided Neovim will be used as a fallback.
- If you want to use LSP servers and other tools managed by mason.nvim, you will need to have toolssuch as
go,node&npm, andpythonandpipinstalled (e.g. using Homebrew). These toolscan be installed using Homebrew following the instructions below. - If you want to preview SVG images in LF, you will need ImageMagick, which is not provided by aqua.These tools can be installed using Homebrew following the instructions below.
- If you want to preview videos in LF, you will need FFMPEG, which is not provided by aqua.These tools can be installed using Homebrew following the instructions below.
- If you want to use zsh, you will need to have it already installed.I may eventually investigatestatically-linked zsh build todetermine whether it might make sense to provide zsh via aqua or chezmoi.
To install the dotfiles on a new machine which already has chezmoi, run:
chezmoi init --apply ethanjliOtherwise, you should run:
sh -c "$(curl -fsLS get.chezmoi.io)" -- -b "$(mktemp -d)" init --apply ethanjliThis will set up the globalaqua configuration without you having toinstall chezmoi first. Then the next step will install chezmoi for you.
After restarting your terminal, you can install tools needed for Neovim LSP and treesitter plugins(all managed by mason.nvim) by running:
systemctl --user start homebrew-install.serviceOn a machine without aqua, you can install aqua as follows:
curl -sSfL https://raw.githubusercontent.com/aquaproj/aqua-installer/v3.0.1/aqua-installer | bash(this is only needed when this repository has packages which I have not yet contributed upstreamto the standard aqua repository)
Then you should install the aqua tools by running:
aqua i -aRunatuin login.
You can install the full list of Flatpaks specifie by this repo by running:
systemctl --user start flatpak-install.serviceTODO: add a keybindings cheatsheet
To bump the installed version of an aqua-provided tool after this repo bumps the configured versionto install, just runaqua i -a.
To install new packages when this repo adds packages to the Brewfile, runsystemctl --user start homebrew-install.service.
To install new packages when this repo adds packages to the Flatpakfile, runsystemctl --user start flatpak-install.service.
To bump the installed version of a zsh or bash plugin after this repo bumps the configured versionto install, delete the cached plugin directory in~/.cache/zsh/plugins or~/.cache/bash/plugins,and runchezmoi apply.
If using local packages from this repository, you may first need to configure aqua to allow that:
cd ${XDG_CONFIG_HOME:-$HOME/.config}/aquaproj-aquagit initaqua policy allow "${XDG_CONFIG_HOME:-$HOME/.config}/aquaproj-aqua/aqua-policy.yaml"Then you can run:
aqua g -o ${XDG_CONFIG_HOME:-$HOME/.config}/aquaproj-aqua/aqua.yamlTBD
To bump the version of a zsh or bash plugin, update the URL in.chezmoiexternal.toml.
Except where otherwise indicated, source code provided here is covered by the following information:
Copyright Ethan Li
SPDX-License-Identifier: Apache-2.0 OR BlueOak-1.0.0
You can use the source code provided here either under theApache 2.0 Licenseor under theBlue Oak Model License 1.0.0;you get to decide. I am making the software available under the Apache license because it'sOSI-approved,but I like the Blue Oak Model License more because it's easier to read and understand.
About
Personal chezmoi-managed dotfiles/configs (nvim, zellij, zsh, aqua, KDE Plasma, etc.)
Resources
License
Apache-2.0, Unknown licenses found
Licenses found
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Contributors2
Uh oh!
There was an error while loading.Please reload this page.