Skip to content

cozydot is an automated post-install, update, & config (dotfile) manager for Linux

Notifications You must be signed in to change notification settings

adoreblvnk/cozydot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cozydot

cozydot is an automated post-install, update, & config (dotfile) manager for Linux.

Built With: yqGNU StowCatppuccin


Table of Contents

About

result

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.

Getting Started

Prerequisites

Git. Install git with sudo apt-get install git.

Installation

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

Usage

Config Schema

Metadata

  • .description <string>: Config description used in cozydot --list-configs
  • .distro auto | ubuntu | debian | linuxmint
  • .DE auto | gnome | cinnamon

Check

  • 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
  • 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

Install

  • 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
  • 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
  • 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

Update

  • 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
  • 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

Configure

  • 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 in dotfiles/ starts from $HOME PATH
  • 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

Help Message

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

Commands to Run after a Fresh Install

On a fresh install, cozydot is intended to be run sequentially like:

cozydot install # includes `check` step by default
cozydot configure

Setting Up Git Credentials

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.

Credits

Acknowledgements

About

cozydot is an automated post-install, update, & config (dotfile) manager for Linux

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages