dotfiles/nixos/home/danny/home.nix
DannyDannyDanny 0eb9d0e8ed OpenClaw: documents from local path, rebuild workaround, forgejo-cli
- Documents (SOUL/TOOLS/AGENTS) from path input to openclaw-documents-repo
- Flake: openclaw-documents.url = path to local clone (no SSH under sudo)
- Remove in-repo openclaw-documents; add docs/openclaw-documents.md
- openclaw.nix: activation backup + force for openclaw.json (TODO to remove)
- home.nix: add forgejo-cli
- .gitignore: openclaw-documents-repo; drop SOUL/TOOLS ignores
- AGENTS.md: OpenClaw docs ref
- TODO: remove OpenClaw activation/force bloat

Made-with: Cursor
2026-03-14 11:48:59 +01:00

228 lines
6.9 KiB
Nix

{ pkgs, lib, zen-browser ? null, ... }:
{
# TODO: remove next two lines from here or from flake.nix
# home.username = "danny";
# home.homeDirectory = "/Users/danny";
programs.home-manager.enable = true;
# Import neovim configuration
imports = [ ../../neovim.nix ];
# tmux (user-level; same config on macOS and NixOS if you reuse this file)
programs.tmux = {
enable = true;
# Keep portable things in extraConfig:
extraConfig = ''
# remap prefix from ^B to Alt-f
unbind C-b
set -g prefix M-f
bind M-f send-prefix
# nvim 'checkhealth' advice
set -g focus-events on
set -sa terminal-overrides ',xterm-256color:RGB'
set -g default-terminal "screen-256color"
# indices
set -g base-index 1
set -g pane-base-index 1
# sensible defaults
setw -g mode-keys vi
set -g history-limit 100000
set -g escape-time 20
# pane movement shortcuts
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# window selection
bind -r C-h select-window -t :-
bind -r C-l select-window -t :+
# split with dash and vbar
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# Enable mouse with smooth scrolling
set -g mouse on
# Override the default wheel bindings that cause 5-line jumps
unbind -T copy-mode WheelUpPane
unbind -T copy-mode WheelDownPane
unbind -T copy-mode-vi WheelUpPane
unbind -T copy-mode-vi WheelDownPane
# Bind smooth scrolling (1 line at a time)
bind -T copy-mode WheelUpPane send-keys -X scroll-up
bind -T copy-mode WheelDownPane send-keys -X scroll-down
bind -T copy-mode-vi WheelUpPane send-keys -X scroll-up
bind -T copy-mode-vi WheelDownPane send-keys -X scroll-down
'';
plugins = with pkgs.tmuxPlugins; [
catppuccin
tmux-fzf
extrakto
];
};
# Git configuration
programs.git = {
enable = true;
settings = {
core = {
editor = "nvim";
};
alias = {
"tidy" = "!bash ~/dotfiles/scripts/git-cleanup-branches.sh";
};
};
};
# direnv (user-level tool)
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
# Firefox
programs.firefox = {
enable = true;
profiles.default = {
settings = {
"devtools.debugger.remote-enabled" = true;
"devtools.debugger.remote-port" = 6000;
"devtools.chrome.enabled" = true;
"devtools.debugger.prompt-connection" = false;
};
};
};
# Environment variables (user-level)
home.sessionVariables = {
DBT_USER = "DNTH"; # TODO: remove this
EDITOR = "nvim";
VISUAL = "nvim";
};
# Add faf script to PATH
home.file.".local/bin/faf" = {
source = ../../../scripts/f-around-firefox/faf.py;
executable = true;
};
# Alacritty terminal configuration with conditional theme switching
programs.alacritty = {
enable = true;
settings = {
window = {
padding = { x = 8; y = 8; };
dynamic_padding = true;
decorations = "buttonless";
opacity = 0.95;
startup_mode = "Maximized";
option_as_alt = "Both";
};
scrolling = { history = 10000; multiplier = 1; };
font = {
size = 13.0;
};
cursor = { style = "Block"; unfocused_hollow = true; };
terminal = {
shell = {
program = "${pkgs.fish}/bin/fish";
};
};
# Conditional colors based on system theme
colors = let
# Set this to true for light theme, false for dark theme
# You can change this and run 'darwin-rebuild switch' to switch themes
isLightTheme = true;
# Catppuccin Latte (Light) colors
lightColors = {
primary = { background = "0xeff1f5"; foreground = "0x4c4f69"; };
cursor = { text = "0xeff1f5"; cursor = "0xdc8a78"; };
normal = {
black = "0x5c5f77"; red = "0xd20f39"; green = "0x40a02b"; yellow = "0xdf8e1d";
blue = "0x1e40af"; magenta = "0xea76cb"; cyan = "0x179299"; white = "0xacb0be";
};
bright = {
black = "0x6c6f85"; red = "0xd20f39"; green = "0x40a02b"; yellow = "0xdf8e1d";
blue = "0x1e40af"; magenta = "0xea76cb"; cyan = "0x179299"; white = "0xbcc0cc";
};
};
# Catppuccin Mocha (Dark) colors
darkColors = {
primary = { background = "0x1e1e2e"; foreground = "0xcdd6f4"; };
cursor = { text = "0x1e1e2e"; cursor = "0xf5e0dc"; };
normal = {
black = "0x45475a"; red = "0xf38ba8"; green = "0xa6e3a1"; yellow = "0xf9e2af";
blue = "0x89b4fa"; magenta = "0xf5c2e7"; cyan = "0x94e2d5"; white = "0xbac2de";
};
bright = {
black = "0x585b70"; red = "0xf38ba8"; green = "0xa6e3a1"; yellow = "0xf9e2af";
blue = "0x89b4fa"; magenta = "0xf5c2e7"; cyan = "0x94e2d5"; white = "0xa6adc8";
};
};
in if isLightTheme then lightColors else darkColors;
};
};
# TODO: Put user-installed binaries here if you want HM to own them (optional)
# Fonts
fonts.fontconfig.enable = true;
home.packages = with pkgs; [
# Zen Browser (Firefox fork; from flake, supports aarch64-darwin)
] ++ (lib.optionals (zen-browser != null) [
zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.default
]) ++ (with pkgs; [
# Google Fonts (includes Michroma)
google-fonts
# Development tools
ripgrep # replacement for grep
fd # replacement for find
wget # downloader
# azure-cli # TODO: remove this Azure cli tool
gh # github cli tool
forgejo-cli # forgejo/codeberg cli (provides fj)
git # version control
jujutsu # Git alternative
gnupg # GNU privacy guard (GPG)
coreutils # GNU core utilities
openssl # cryptography swiss army knife
# busybox # doesn't run on darwin
# Utilities
neofetch # system info
btop # resource monitor
zoxide # directory jumping (cd alternative)
tldr # community driven manpage alternative
fzf # fuzzy finder
tree # list directory contents
ffmpeg # video and audio processing
lz4 # compression tool (needed for reading Firefox session files)
cowsay # ascii art cows for fun
lolcat # rainbow text for fun
# vlc # video player - doesn't build for MacOS
# Applications
# alacritty # TODO: configured via programs.alacritty above, so not needed here
# warp-terminal # TODO: Bloat
# vscodium # TODO: Bloat
# zed-editor # TODO: Bloat
code-cursor
cursor-cli
discord
mapscii
mpv
]);
# First HM version for this user config; bump only if you understand the migration notes.
home.stateVersion = "25.11";
}