Skip to content

papanito/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

312 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 papanito's Dotfiles

Personal configuration for a declarative and reproducible development environment. Built with Nix, managed via home-manager (optional), and deployed using chezmoi.

📦 Quick Start & Installation

This setup assumes you have chezmoi installed.

Optionally should also install home-manager.

[!REMARK]

Instead of using home-manager to manage all my dotfiles, I use chezmoi as my primary tool. I use home-manager to declaratively manage user-specific packages and environment logic. This is an optional part of the setup; the core dotfiles can function independently, especially as I still have machines without nix.

Initialize chezmoi

This clones the repo into ~/.local/share/chezmoi

chezmoi init https://github.com/papanito/dotfiles.git

Configure home-manager

Home Manager is a Nix-based tool that allows you to manage your user-specific configuration and packages declaratively, similar to how NixOS manages an entire system.

I configure chezmoi to run home-manager switch whenever I run chezmoi apply

[hooks.apply.post]
command = "home-manager"
args = [
    "switch",
    "--flake",
    "/home/papanito/.config/home-manager"
]

🛠 Tech Stack

My environment uses the following basic tools:

  • Shell: zsh as my primary shell using
    • zinit to manage plugins for sub-second startup times using Turbo (asynchronous) loading.
    • atuin an SQLite-powered shell history
    • direnv to automatically load environment variables and Nix shells when entering a directory.
    • oh-my-posh as my prompt for a consistent, informative, and aesthetic prompt across any shell.
    • Aliases & Functions to work faster on the shell
  • Editor: Neovim configured with the LazyVim distro for a modular, high-performance IDE experience.
  • Workspace: Zellij — A modern terminal workspace and multiplexer with built-in layouts.

🔧 Core Tools & CLI Utilities

Here are some tools worth mentioning - check home.nix for more tools

Tool Description
bitwarden Password manager to manage not only password but also use it as ssh-key agent
bws Bitwarden secret manager in combination with direnv to inject environment variables.
zoxide A smarter cd command that learns your habits.
fzf General-purpose command-line fuzzy finder.
ripgrep (rg) Blazing fast recursive line-oriented search.
bat A cat clone with syntax highlighting and git integration.
eza A modern, maintained replacement for ls.
watchman Watches files and records, or triggers actions, when they change.
pueue Pueue is a command-line task management tool for sequential and parallel execution of long-running tasks.

📂 Direnv & Environment Management

I use direnv to load environment variables using bitwarden or bws. this file contains 2 Functions

  • bw_env - use bitwarden which will require to login/unlock the vault
  • bws_env - use bws which only contains the environment variables and not all personal passwords (hence my preferred solution)

So I can use the following in .envrc files to automatically inject secrets automatically

bws_env -p personal RESTIC_PASSWORD
bws_env -p private B2_ACCOUNT_KEY B2_ACCOUNT_ID

❄️NixOS Home Manager

Where I have Nix installed, I manage some desktop settings with home-manager:

⚙️Systemd User Services

I manage background processes via systemd user services, which run in the user context (systemctl --user). This allows for automated management of daemons without requiring root privileges.

About

[MIRROR] My dotfiles using [chezmoi](https://github.com/twpayne/chezmoi/), which allows me to manage my dotfiles for multiple machines securely.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors