A collection of my personal configurations, tools, and scripts for a streamlined development workflow.
Find a file
2026-10-05 00:37:52 +03:00
atuin feat: add config for atuin 2026-09-09 19:25:23 +03:00
bash feat: add nixos configuration 2026-10-03 13:15:51 +00:00
git feat: add gitconfig settings to dots 2026-09-29 13:04:10 +03:00
gitui feat: add gitui config 2026-09-09 19:25:37 +03:00
hypr feat: configure Waybar, Wofi and Mako 2026-10-05 00:37:52 +03:00
kitty feat: configure ProFont and desktop fonts 2026-10-05 00:37:52 +03:00
mako feat: configure Waybar, Wofi and Mako 2026-10-05 00:37:52 +03:00
nixos feat: configure Hyprlock and locking before suspend 2026-10-05 00:37:52 +03:00
nvim feat: add Nix highlights to xcodedark theme 2026-10-05 00:37:52 +03:00
wallpapers feat: add wallpapers 2026-08-30 14:01:45 +03:00
waybar feat: configure Waybar, Wofi and Mako 2026-10-05 00:37:52 +03:00
wofi feat: configure Waybar, Wofi and Mako 2026-10-05 00:37:52 +03:00
.gitignore feat: add haskel lspconfig 2026-09-17 17:53:35 +03:00
flake.lock feat: add nixos configuration 2026-10-03 13:15:51 +00:00
flake.nix feat: add nixos configuration 2026-10-03 13:15:51 +00:00
README.md refactor: update README for nixos setup 2026-10-03 13:15:51 +00:00

Custom environment

My personal development environment and dotfiles. The repository contains the configuration I use to keep the terminal, editor, shell history, and Git workflow consistent across machines.

Toolset

Tool Purpose
Kitty Terminal emulator
Neovim Editor and development environment
Starship Fast, minimal shell prompt
direnv Per-project environment variables
zoxide Smarter directory navigation
Atuin Searchable shell history
fzf Fuzzy finding from the command line
eza Modern replacement for ls
GitUI Terminal UI for Git

The shell configuration also includes shortcuts for Meson and Ninja builds, sanitizer-assisted test runs, perf, FlameGraph, and systemd user scopes.

Repository layout

.
├── flake.nix             # Reproducible NixOS entry point
├── nixos/                # Host and reusable NixOS modules
├── bash/                 # Bash environment, aliases, and helper functions
├── atuin/                # Atuin configuration
├── gitui/                # GitUI key bindings
├── kitty/                # Kitty settings and color themes
├── nvim/                 # Neovim configuration and plugin lockfile
└── wallpapers/           # Desktop wallpapers

Starship, direnv, zoxide, fzf, and eza do not currently have dedicated configuration directories tracked in this repository.

NixOS

The flake exposes the nixos host. Its machine-specific configuration lives in nixos/hosts/nixos, while reusable settings are grouped by purpose in nixos/modules. Packages are split into desktop, development, shell, and general utility modules under nixos/modules/packages.

From the repository root, check and apply the configuration with:

nix flake check
sudo nixos-rebuild switch --flake .#nixos

On the first run, if flakes are not enabled in the currently booted system, pass the feature flags explicitly:

sudo nixos-rebuild switch \
  --extra-experimental-features 'nix-command flakes' \
  --flake .#nixos

Update the pinned Nixpkgs revision and rebuild with:

nix flake update
sudo nixos-rebuild switch --flake .#nixos

Codex is taken from a separately pinned Nixpkgs master input so it can be updated without upgrading the stable NixOS package set:

nix flake update codex-nixpkgs
sudo nixos-rebuild switch --flake .#nixos

The codex-background-server user service starts automatically when hhhh logs in and listens on the local Unix socket. Connect with codex --remote unix://. Check its status with systemctl --user status codex-background-server and view its logs with journalctl --user -u codex-background-server.

Before using this configuration on another machine, regenerate or replace nixos/hosts/nixos/hardware-configuration.nix and adjust the host name, user, graphics driver, and system.stateVersion as appropriate.

Installation

Clone the repository, install the tools listed above using your system package manager, and link the configuration files into their expected locations. For example:

git clone git@github.com:Claucdan/Custom-environment.git
cd Custom-environment

ln -sfn "$PWD/nvim" "$HOME/.config/nvim"
ln -sfn "$PWD/kitty" "$HOME/.config/kitty"
ln -sfn "$PWD/atuin" "$HOME/.config/atuin"
ln -sfn "$PWD/gitui" "$HOME/.config/gitui"

Review .bashrc before sourcing or linking it: some aliases, paths, and helper functions are tailored to my local development setup.

Notes

  • A Nerd Font is recommended for Kitty, Starship, and terminal icons.
  • Neovim plugins are managed with lazy.nvim; open Neovim after linking the configuration to install them.
  • This is a personal setup rather than a universal bootstrap script. Feel free to copy or adapt any part of it.