laptop-config/home/sscoble.nix
Scott Scoble f9f6ddc670 WGU prep: Windows VM setup, trackpad/trackpoint tweaks, aliases
- Add WGU Windows VM helper script + virtualization module (KVM/libvirt)
- Fix create-wgu-vn: mkdir before use, CPU topology, detect OS variant
- Add Webex, ZapZap, qalculate-gtk, libqalculate, tigervnc packages
- Add n97-mini VNC alias, switch nr to local flake path
- Tune trackpad (0.44) and TrackPoint (160/120) sensitivity
- Reduce mouse sensitivity to -0.2
- Move zapzap from desktop.nix alphabetically
- Remove OVMFFull from virtualisation (handled by swtpm/OVMF default)
- Bump flake inputs (home-manager, nixos-hardware, nixpkgs, pi-mono)
2026-06-04 11:44:32 -07:00

185 lines
4.8 KiB
Nix

{ config, pkgs, ... }:
{
home.username = "sscoble";
home.stateVersion = "25.11";
# Don't let home-manager manage these
manual.json.enable = false;
manual.manpages.enable = false;
# === Shared CLI packages (macOS + NixOS) ===
home.packages = with pkgs; [
bat
eza
delta
fd
jq
ripgrep
tldr
rsync
rclone
neovim
python3
uv
go
direnv
nix-direnv
tree
htop
tmux
unzip
curl
wget
] ++ (if pkgs.stdenv.isLinux then (with pkgs; [
nodejs
bun
git
tigervnc
]) else []);
# === Home directory (conditional) ===
home.homeDirectory = if pkgs.stdenv.isDarwin
then "/Users/sscoble"
else "/home/sscoble";
# === Git Config ===
programs.git = {
enable = true;
settings = {
user = {
name = "Scott Scoble";
email = "sscoble@scobleclaw.dev";
};
init.defaultBranch = "main";
pull.rebase = true;
push.autoSetupRemote = true;
core.editor = "nvim";
alias = {
lol = "log --graph --oneline --decorate --all";
co = "checkout";
br = "branch";
st = "status";
ci = "commit";
};
};
};
# === Neovim config (with LSP support) ===
home.file.".config/nvim/init.lua".text = ''
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.expandtab = true
vim.opt.shiftwidth = 2
vim.opt.tabstop = 2
vim.opt.smartindent = true
vim.opt.wrap = false
vim.opt.swapfile = false
vim.opt.backup = false
vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir"
vim.opt.undofile = true
vim.opt.hlsearch = false
vim.opt.incsearch = true
vim.opt.termguicolors = true
vim.opt.scrolloff = 8
vim.opt.signcolumn = "yes"
vim.opt.isfname:append("@-@")
vim.opt.updatetime = 50
vim.opt.colorcolumn = "100"
vim.g.mapleader = " "
-- LSP: load per-filetype configs
vim.api.nvim_create_autocmd("FileType", {
pattern = "typst",
callback = function()
local ok, config = pcall(dofile, vim.fn.stdpath("config") .. "/lua/lsp/typst.lua")
if ok and config then
vim.lsp.start(config, { bufnr = 0 })
local buf = vim.api.nvim_get_current_buf()
vim.keymap.set("n", "K", vim.lsp.buf.hover, { buffer = buf })
vim.keymap.set("n", "gd", vim.lsp.buf.definition, { buffer = buf })
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, { buffer = buf })
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, { buffer = buf })
end
end,
})
'';
# === Pi config directory ===
home.file.".pi/agent/README.md".text = ''
# Pi Agent Configuration
Restore these files from backup:
- SYSTEM.md (core agent directive)
- models.json (provider + model configuration)
- mcp.json (MCP server connections)
- settings.json (pi preferences)
- auth.json (API keys — keep secure!)
'';
# === Vault directory ===
home.file."vault/.gitkeep".text = "";
# === Direnv ===
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
# === SSH config ===
home.file.".ssh/config".text = ''
Host n97-mini
HostName 192.168.168.41
User sscoble
ForwardAgent yes
Host n97-mini-ext
HostName os.scoble.me
Port 22
User sscoble
ForwardAgent yes
Host forgejo
HostName os.scoble.me
User git
'';
# === Zsh ===
programs.zsh = {
enable = true;
oh-my-zsh = {
enable = true;
plugins = [ "git" "node" "npm" "ssh-agent" "sudo" "history" ];
theme = "robbyrussell";
};
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
shellAliases = {
ll = "ls -la";
la = "ls -A";
l = "ls -CF";
nix-clean = "sudo nix-collect-garbage -d && nix-collect-garbage -d";
n97-mini = "vncviewer 100.104.70.88:5900";
};
initContent = ''
# Nix flake shortcuts (adapts to platform)
# Uses local checkout so uncommitted changes are picked up immediately.
# Push to the remote repo separately when you want to share/sync.
if command -v nixos-rebuild &>/dev/null; then
alias nr="sudo nixos-rebuild switch --flake ~/laptop-config#laptop"
elif command -v home-manager &>/dev/null; then
alias nr="home-manager switch --flake ~/laptop-config#sscoble"
fi
# Pi / QMD (work from homebrew or nixpkgs)
alias vq="qmd query" 2>/dev/null || alias vq="echo 'qmd not found — install with brew install qmd or bunx @tobilu/qmd'"
# VNC into n97-mini server
alias n97-mini="vncviewer 100.104.70.88:5900"
'';
envExtra = ''
export EDITOR=nvim
export VISUAL=nvim
export PATH=$HOME/.local/bin:$HOME/.npm-global/bin:$PATH
'';
};
}