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 | pop | zorin | Deepin | kali | tails - 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, etc) 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: configures 3rd-party apt repositories (SourcesList)- sourceName
<string> - remoteKey
<string> | null: URL of signing key - keyPath
<string> | null: Path of signing key on machine. NOTE: if there is no signing key,remoteKey&keyPathshould benull - repo
<string>: SourcesList entry for repo - pinning
false: Edit package priority. If pinning is enabled, paste the preference file contents 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$HOMEPATH
- stowMode
- apps.alacritty
true: Alacritty setup adds desktop entry & bash completion - apps.docker
true: Docker setup adds user to docker group & uses local logging driver to prevent disk-exhaustion - apps.virtualbox
true: VirtualBox setup adds user to vboxusers group to access USB devices - 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, & other minor setting changes - 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 vm 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 configureFill 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.