- Drop modules/dotfiles-rebuild.nix and its imports in clan.nix; sunken-ship + phantom-ship no longer ship the legacy 15-min rebuild-from-git timer. - Add dm-pull-deploy-push systemd timer on sunken-ship: every 15min runs dm-send-deploy to announce origin/main rev via data-mesher gossip (sunken is the dm-pull-deploy push node). - Fix mulbo-pull service path: add openssh so 'git fetch' over an SSH remote stops failing with 'cannot run ssh'. - vps-relay authorized_keys: rename Mac key comment to mac-admin, add sunken-ship's actual ed25519 key for ZT mesh debugging. - home.nix: add cinny-desktop (Matrix client). - neovim: enable cursorline.
245 lines
7.6 KiB
Nix
245 lines
7.6 KiB
Nix
{ pkgs, lib, config, ... }:
|
|
{
|
|
# 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 ];
|
|
|
|
# ZeroTier SSH aliases — managed drop-in under ~/.ssh/config.d/.
|
|
# For this to take effect, your ~/.ssh/config must include:
|
|
# Include ~/.ssh/config.d/*
|
|
# near the top (before any host-specific blocks).
|
|
home.file.".ssh/config.d/zerotier".text = ''
|
|
Host sunken-ship-zt fdd5:53a2:de33:d269:6499:93d5:53a2:de33
|
|
HostName fdd5:53a2:de33:d269:6499:93d5:53a2:de33
|
|
User danny
|
|
IdentityFile ~/.ssh/id_ed25519_sunken_ship
|
|
IdentitiesOnly yes
|
|
|
|
Host phantom-ship-zt fdd5:53a2:de33:d269:6499:936c:48a:bbdc
|
|
HostName fdd5:53a2:de33:d269:6499:936c:48a:bbdc
|
|
User danny
|
|
IdentityFile ~/.ssh/id_ed25519_phantom_ship
|
|
IdentitiesOnly yes
|
|
'';
|
|
|
|
# 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 :+
|
|
|
|
# Resize pane shortcuts
|
|
bind -r H resize-pane -L 10
|
|
bind -r J resize-pane -D 10
|
|
bind -r K resize-pane -U 10
|
|
bind -r L resize-pane -R 10
|
|
|
|
# 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;
|
|
};
|
|
|
|
# Palette fragments: synced to system appearance (see scripts/alacritty-sync-system-theme.sh).
|
|
xdg.configFile."alacritty/catppuccin-latte-colors.toml".source =
|
|
../../../assets/alacritty/catppuccin-latte-colors.toml;
|
|
xdg.configFile."alacritty/catppuccin-mocha-colors.toml".source =
|
|
../../../assets/alacritty/catppuccin-mocha-colors.toml;
|
|
|
|
# Alacritty: base config + imported active-colors.toml (updated without rebuild)
|
|
programs.alacritty = {
|
|
enable = true;
|
|
settings = {
|
|
general = {
|
|
live_config_reload = true;
|
|
import = [ "${config.xdg.configHome}/alacritty/active-colors.toml" ];
|
|
};
|
|
window = {
|
|
padding = { x = 8; y = 8; };
|
|
dynamic_padding = true;
|
|
decorations = "buttonless";
|
|
decorations_theme_variant = "None";
|
|
opacity = 1.0;
|
|
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";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
# Writable copy (not a symlink to the store — cp in the sync script must replace a real file).
|
|
home.activation.alacrittySystemTheme = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
|
MOCHA="${../../../assets/alacritty/catppuccin-mocha-colors.toml}"
|
|
ACTIVE="${config.xdg.configHome}/alacritty/active-colors.toml"
|
|
$DRY_RUN_CMD mkdir -p "${config.xdg.configHome}/alacritty"
|
|
if [ ! -f "$ACTIVE" ]; then
|
|
$DRY_RUN_CMD cp "$MOCHA" "$ACTIVE"
|
|
$DRY_RUN_CMD chmod 0644 "$ACTIVE"
|
|
fi
|
|
$DRY_RUN_CMD ${pkgs.bash}/bin/bash "${../../../scripts/alacritty-sync-system-theme.sh}" || true
|
|
'';
|
|
|
|
|
|
# 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 overlay, supports aarch64-darwin)
|
|
] ++ (lib.optionals (pkgs ? zen-browser) [
|
|
pkgs.zen-browser
|
|
]) ++ (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
|
|
claude-code # Anthropic agentic coding CLI
|
|
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
|
|
fastfetch # 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
|
|
code-cursor
|
|
cursor-cli
|
|
cinny-desktop # Matrix client (Tauri wrapper around the Cinny web app)
|
|
dfu-util # USB DFU firmware flasher (Flipper Zero etc.)
|
|
discord
|
|
mapscii
|
|
mpv
|
|
# uhk-agent # UHK keyboard configuration GUI + CLI — removed, nixpkgs marks x86_64-linux only TODO
|
|
]);
|
|
|
|
# First HM version for this user config; bump only if you understand the migration notes.
|
|
home.stateVersion = "25.11";
|
|
}
|
|
|