cozydot is an automated post-install, update, & config (dotfile) manager for Linux.
Built With: yq • GNU Stow • Catppuccin
Table of Contents
cozydot is an automated post-install, update, & config (dotfile) manager for Linux, with a focus on idempotency & repeatability. Supports Debian-based / Ubuntu-based distros, & GNOME / Cinnamon desktop environments. Riced & themed with Catppuccin.
Features:
- More than a post-install script. cozydot updates your system & can be run at any time, & not only on fresh installs.
- Latest & greatest packages. cozydot uses 3rd-party apt repos, Flatpak, AppImage & Cargo to deliver up-to-date packages.
- Intuitive config files. cozydot uses customisable YAML files that are easily edited, or use available presets in
./configs/
directory. - Uses native tools. With the exception of yq for querying config files & GNU Stow for managing dotfiles, cozydot uses already existing tools to perform each command.
prod by blvnk.
Git. Install git with sudo apt-get install git
.
Clone this repository & run cozydot. On the first run, cozydot will install itself in ~/.cozydot
.
git clone https://github.com/adoreblvnk/cozydot.git && ./cozydot/cozydot
- .description
<string>
: Config description used incozydot --list-configs
- .distro
auto | ubuntu | debian | linuxmint
- .DE
auto | gnome | cinnamon
- distroCfg
true
: Debloats / configures distro (ubuntu / debian / linuxmint) before cozydot executes command actions. - purge
!disabled
: Uninstalls unneeded / conflicting packages (eg Docker). NOTE: Enable this when running on a fresh install - deps
!enabled
: Installs dependencies for other packages (eg Alacritty) from apt. Recommended to leave this enabled to prevent dependency errors - python
!enabled
: Manage Python & Pip via pyenv- pyenvUpdate
false
- version
latest | <major>[.<minor>]
: Python version. Accepted version examples: latest, 3, 3.12 - pip
false
: Upgrades Pip
- pyenvUpdate
- rustupCheck
true
: Installs Rustup, the Rust toolchain (Rust, Cargo) installer - appimaged
true
: Installs appimaged (Appimage integration daemon) - nerdfont
!enabled
: Installs Nerd Fonts (Geist Mono by default) which provide glyphs & ligatures. Full font list in Font Downloads
- check
true
- apt
!enabled
: Installs essential packages (eg vim). Some packages' (eg yazi) functionality can be extended with these packages installed - addRepos
!enabled
: 3rd-party apt repositories (SourcesList)- sourceName
<string>
- remoteKey
<string> | null
: URL of signing key - keyPath
<string> | null
: Path of signing key on machine - repo
<string>
: SourcesList entry for repo - pinning
false
: Edit package priority. If pinning is enabled, paste the contents of the preference file here - packages
<list>
: List of packages to install from this source
- sourceName
- flatpak
!enabled
: Install Flatpak packages - cargo
!enabled
: Install Cargo packages - binaries
!enabled
: Install binaries (AppImage / deb packages)- name
<string>
: Name of binary. File extension determines if package is an AppImage or binary (.deb) - url
<string>
: Package URL
- name
- languages.goVersion
latest | <major>.<minor>.<patch>
: Installs latest version of Go. Accepted version examples: latest, 1.23.5 - languages.nodeVersion
latest | <major>[.<minor>[.<patch>]]
: Installs latest version of Node via NVM. Accepted version examples: latest, 22, 22.13.0
- check
true
- apt
!enabled
: Updates & upgrades apt packages- aptFull
false
: Upgrades the entire system, installing new packages if necessary, & removes old archive files & unused packages with their config files
- aptFull
- flatpak
true
- cargo
false
- other.yq
true
: Updates yq binary - other.go
false
: Updates Go to the latest version - other.node
false
: Updates Node to the latest version via NVM - other.zellij
true
: Delete all other Zellij sessions, including exited ones
- check
true
- dotfiles
!enabled
: Dotfile manager implementation via GNU Stow- stowMode
override | backup
: Override option uses cozydot's dotfiles. Backup option uses original system dotfiles - packages
<list>
: List of packages to stow. Directory structure for each package indotfiles/
starts from$HOME
PATH
- stowMode
- apps.alacritty
true
: Setup Alacritty adds desktop entry & bash completion - apps.docker
true
: Setup Docker adds user to docker group & uses local logging driver to prevent disk-exhaustion - apps.virtualbox
true
: Setup VirtualBox adds user to vboxusers group - apps.vscodeExtensions
!enabled
: Install VS Code extensions - optimisations.auto-cpufreq
true
: Installs / configures auto-cpufreq, a CPU optimizer - DE
!enabled
: Desktop environment customisations- gnome.settings
true
: Settings config increase screen blank delay to 15 mins, set dark mode - gnome.extensions
true
: Install GNOME extensions - gnome.defaultTerm
alacritty
: Set default terminal - gnome.MacOSDock
true
: Make Dash to Dock mimic MacOS dock behaviour - gnome.smoothRoundedCorners
true
: Smoothen corners in Rounded Window Corners Reborn
- gnome.settings
cozydot is an automated post-install, update, & config (dotfile) manager for Linux
Usage: cozydot [Options] [Command]
Options:
-n, --no-colour Do not output any colour. Useful when redirecting output to a logfile
-c, --config <CONFIG> Specify a yaml config file that exists in ~/.cozydot/configs/
--list-configs List all available configs in ~/.cozydot/configs/ directory
-h, --help Print help information
-V, --version Print version information
Commands:
check Purges bloat (disabled by default) & installs dependencies. Installs Python (via
pyenv), Cargo (via rustup), appimaged (AppImage integration daemon), & Nerdfonts
i, install Installs all apt (& alternative sources), flatpak, cargo, binary (AppImage)
packages, & programming languages (node & golang)
u, update Updates & upgrades apt, flatpak, cargo packages. Updates other packages & clears
Zellij cache (see ~/.cozydot/configs/default.yaml for details)
c, configure Restore / backup dotfiles via Stow (dotfile manager), configures apps installed,
customise desktop environment (Cinnamon / GNOME)
Configuration:
Customise each command action by modifying the config (default: ~/.cozydot/configs/default.yaml).
The full config schema of cozydot is available in README.md.
Preset configs are available in ~/.cozydot/configs/ directory.
Add new configs in ~/.cozydot/configs/ or list them with cozydot --list-configs
Example: cozydot --config virtual_machine install
Project Homepage: https://github.com/adoreblvnk/cozydot
On a fresh install, cozydot is intended to be run sequentially like:
cozydot install # includes `check` step by default
cozydot configure
Fill up your name
, email
& signingkey
(optional) in /dotfiles/bash/.gitconfig
. Optionally, run git update-index --assume-unchanged dotfiles/bash/.gitconfig
to avoid committing your secrets to git.