137 lines
3.2 KiB
Nix
137 lines
3.2 KiB
Nix
{ config, pkgs, ... }:
|
||
|
||
let
|
||
# Dotfiles live on the installed system itself at: ~/dotfiles
|
||
dotfilesDir = "${config.home.homeDirectory}/dotfiles";
|
||
|
||
# Home Manager helper to symlink files/dirs that live outside the Nix store.
|
||
mkOOS = config.lib.file.mkOutOfStoreSymlink;
|
||
in
|
||
{
|
||
home.stateVersion = "24.05";
|
||
|
||
programs.home-manager.enable = true;
|
||
|
||
# ---
|
||
# Shell (zsh + oh-my-zsh + powerlevel10k)
|
||
# ---
|
||
programs.zsh = {
|
||
enable = true;
|
||
autosuggestion.enable = true;
|
||
syntaxHighlighting.enable = true;
|
||
|
||
oh-my-zsh = {
|
||
enable = true;
|
||
theme = "powerlevel10k/powerlevel10k";
|
||
plugins = [ "git" ];
|
||
};
|
||
|
||
shellAliases = {
|
||
ls = "eza --icons --git";
|
||
ll = "eza -l --icons --git";
|
||
la = "eza -la --icons --git";
|
||
tree = "eza --tree";
|
||
cat = "bat --color=always --paging=never";
|
||
};
|
||
|
||
# Dotfiles integration notes:
|
||
# - Home Manager manages ~/.zshrc; do not symlink ~/.zshrc directly.
|
||
# - If you want to source additional Zsh snippets from ~/dotfiles, tell me
|
||
# the exact filename(s) and we’ll add them safely here.
|
||
initExtra = ''
|
||
# Optional: source additional Zsh config from ~/dotfiles if desired.
|
||
# Example (uncomment + adjust if you confirm the exact file path):
|
||
# if [ -f "${dotfilesDir}/zsh/extra.zsh" ]; then
|
||
# source "${dotfilesDir}/zsh/extra.zsh"
|
||
# fi
|
||
'';
|
||
};
|
||
|
||
programs.powerlevel10k = {
|
||
enable = true;
|
||
# If you have a real p10k config file in dotfiles, tell me its exact path.
|
||
# Then we can symlink it to ~/.p10k.zsh (or source it) reliably.
|
||
};
|
||
|
||
# ---
|
||
# Shell tools
|
||
# ---
|
||
programs.atuin = {
|
||
enable = true;
|
||
enableZshIntegration = true;
|
||
};
|
||
|
||
programs.fzf = {
|
||
enable = true;
|
||
enableZshIntegration = true;
|
||
};
|
||
|
||
programs.zoxide = {
|
||
enable = true;
|
||
enableZshIntegration = true;
|
||
};
|
||
|
||
# ---
|
||
# Terminal / editor
|
||
# ---
|
||
programs.kitty.enable = true;
|
||
|
||
programs.neovim = {
|
||
enable = true;
|
||
defaultEditor = true;
|
||
};
|
||
|
||
# ---
|
||
# Packages (NOW list + a few safe essentials)
|
||
# ---
|
||
home.packages = with pkgs; [
|
||
git
|
||
curl
|
||
wget
|
||
|
||
eza
|
||
bat
|
||
ripgrep
|
||
fd
|
||
|
||
btop
|
||
lazygit
|
||
zellij
|
||
tealdeer
|
||
navi
|
||
yazi
|
||
dua
|
||
jq
|
||
|
||
unzip
|
||
zip
|
||
p7zip
|
||
];
|
||
|
||
# ---
|
||
# Dotfiles (out-of-store symlinks from ~/dotfiles)
|
||
# ---
|
||
# IMPORTANT:
|
||
# - These symlinks will point into ~/dotfiles.
|
||
# - Ensure you clone/copy your dotfiles to ~/dotfiles on the new system.
|
||
home.file.".config/atuin".source = mkOOS "${dotfilesDir}/atuin";
|
||
home.file.".config/kitty".source = mkOOS "${dotfilesDir}/kitty";
|
||
home.file.".config/nvim".source = mkOOS "${dotfilesDir}/nvim";
|
||
home.file.".config/zellij".source = mkOOS "${dotfilesDir}/zellij";
|
||
|
||
# TODO (needs confirmation from you):
|
||
# - zsh dotfiles: what exact files do you want sourced?
|
||
# - pk10k: what is the exact filename for your p10k config?
|
||
#
|
||
# Once you confirm, we can add e.g.:
|
||
# home.file.".p10k.zsh".source = mkOOS "${dotfilesDir}/pk10k/.p10k.zsh";
|
||
|
||
# ---
|
||
# Secrets policy
|
||
# ---
|
||
# Do NOT put API keys here (or anywhere in git).
|
||
# Preferred approach (local-only):
|
||
# ~/.config/environment.d/10-secrets.conf
|
||
# or add sops-nix later.
|
||
}
|