A collection of my personal configurations, tools, and scripts for a streamlined development workflow.
Find a file
2026-10-05 00:37:53 +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: manage user configuration with Home Manager 2026-10-05 00:37:52 +03:00
nvim feat: add Nix highlights to xcodedark theme 2026-10-05 00:37:52 +03:00
sddm feat: add custom SDDM login 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: manage user configuration with Home Manager 2026-10-05 00:37:52 +03:00
flake.nix feat: manage user configuration with Home Manager 2026-10-05 00:37:52 +03:00
README.md docs: document desktop setup and Home Manager installation 2026-10-05 00:37:53 +03: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
├── mako/                 # Notification settings
├── nvim/                 # Neovim configuration and plugin lockfile
├── waybar/               # Compact Hyprland status bar and power menu
├── wofi/                 # Application launcher with icons
└── 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.

Screen locking

The initial SDDM login screen uses a matching Qt 6 theme in sddm/, packaged by nixos/modules/login-theme.nix. Its assets and ProFont are included in the theme package so they are available before a user session starts. It supports username/password entry, desktop session selection, and power actions. Apply with nixos-rebuild switch; the theme appears at the next login. Avoid restarting the display manager during an active session.

Hyprlock uses hypr/hyprlock.conf and the existing wallpaper assets for a blurred, two-column lock screen with ProFont, a clock, and live system status. Press Super+L or choose Lock in the Waybar power menu. Hypridle handles session lock requests and locks before suspend; no idle timeout is configured. The NixOS Hyprlock module supplies its PAM authentication configuration.

Home Manager

Home Manager is integrated into the NixOS flake and uses the same pinned Nixpkgs input. The user configuration lives in nixos/home/hhhh.nix. It manages atuin, gitui, hypr, kitty, mako, nvim, waybar, and wofi under ~/.config.

These directories link to ~/Git/Custom-environment through mkOutOfStoreSymlink, so edits in the repository are available immediately. Reload or restart the affected application to pick up configuration changes. Keep the repository at this location, or adjust repo in the user module.

Apply Home Manager changes together with the system configuration:

sudo nixos-rebuild switch --flake .#nixos

On activation, conflicting configuration files or links are backed up with the .hm-backup suffix; links already pointing to the same content can be adopted without a backup. Existing backups are preserved; move an old backup aside if it blocks activation. Keep home.stateVersion at the version used when first enabling Home Manager.

Installation

On NixOS, clone the repository into the location expected by Home Manager, then apply the flake:

git clone git@github.com:Claucdan/Custom-environment.git ~/Git/Custom-environment
cd ~/Git/Custom-environment
sudo nixos-rebuild switch --flake .#nixos

On other distributions, install the tools using your system package manager and link the configuration directories manually:

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/mako" "$HOME/.config/mako"
ln -sfn "$PWD/atuin" "$HOME/.config/atuin"
ln -sfn "$PWD/gitui" "$HOME/.config/gitui"
ln -sfn "$PWD/waybar" "$HOME/.config/waybar"
ln -sfn "$PWD/wofi" "$HOME/.config/wofi"

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.