2024-03-17 19:18:53 +01:00
|
|
|
{
|
|
|
|
pkgs,
|
|
|
|
inputs,
|
|
|
|
config,
|
|
|
|
system,
|
|
|
|
...
|
|
|
|
}:
|
|
|
|
{
|
|
|
|
imports = [
|
|
|
|
./modules/packages.nix
|
|
|
|
./modules/vscodium.nix
|
2024-03-26 10:34:35 +01:00
|
|
|
./modules/fonts.nix
|
2024-03-17 19:18:53 +01:00
|
|
|
];
|
|
|
|
home.homeDirectory =
|
|
|
|
if pkgs.stdenv.isDarwin then "/Users/${config.home.username}" else "/home/${config.home.username}";
|
|
|
|
programs.home-manager.enable = true;
|
|
|
|
|
|
|
|
programs.bat.enable = true;
|
|
|
|
programs.direnv = {
|
|
|
|
enable = true;
|
|
|
|
nix-direnv.enable = true;
|
|
|
|
enableZshIntegration = true;
|
|
|
|
};
|
|
|
|
|
|
|
|
programs.tmux = {
|
|
|
|
enable = true;
|
|
|
|
keyMode = "vi";
|
|
|
|
extraConfig =
|
|
|
|
# for direnv not messing up the environment
|
|
|
|
''
|
|
|
|
set-option -g update-environment "DIRENV_DIFF DIRENV_DIR DIRENV_WATCHES"
|
|
|
|
set-environment -gu DIRENV_DIFF
|
|
|
|
set-environment -gu DIRENV_DIR
|
|
|
|
set-environment -gu DIRENV_WATCHES
|
|
|
|
set-environment -gu DIRENV_LAYOUT
|
|
|
|
|
|
|
|
bind-key -T copy-mode-vi 'v' send -X begin-selection
|
|
|
|
bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel'';
|
|
|
|
terminal = "screen-256color";
|
|
|
|
};
|
|
|
|
|
|
|
|
programs.git = {
|
|
|
|
enable = true;
|
|
|
|
extraConfig = {
|
|
|
|
credential.helper = "cache";
|
|
|
|
push.default = "simple";
|
|
|
|
init.defaultBranch = "mainline";
|
|
|
|
diff.tool = "vimdiff";
|
|
|
|
merge.tool = "vimdiff";
|
|
|
|
core.excludesfile = toString (
|
|
|
|
pkgs.writeText ".gitignore_global" ''
|
2024-03-18 11:59:50 +01:00
|
|
|
# Direnv stuff #
|
|
|
|
################
|
2024-03-17 19:18:53 +01:00
|
|
|
.direnv
|
|
|
|
.envrc
|
|
|
|
# Editor files #
|
|
|
|
################
|
|
|
|
*~
|
|
|
|
*.swp
|
|
|
|
*.swo
|
2024-03-18 11:59:50 +01:00
|
|
|
# macOS foo #
|
|
|
|
#############
|
|
|
|
.DS_Store
|
2024-03-17 19:18:53 +01:00
|
|
|
''
|
|
|
|
);
|
|
|
|
core.whitespace = "-blank-at-eol,blank-at-eof,space-before-tab";
|
|
|
|
};
|
|
|
|
lfs.enable = true;
|
|
|
|
delta = {
|
|
|
|
enable = true;
|
|
|
|
options = {
|
|
|
|
line-numbers = true;
|
|
|
|
side-by-side = true;
|
|
|
|
#dark = true;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
# shell config
|
|
|
|
programs.zsh = {
|
|
|
|
enable = true;
|
|
|
|
syntaxHighlighting.enable = true;
|
|
|
|
history.ignoreSpace = true;
|
|
|
|
initExtra = ''
|
|
|
|
# Uncomment following line if you want red dots to be displayed while waiting for completion
|
|
|
|
COMPLETION_WAITING_DOTS="true"
|
|
|
|
### Fix slowness of pastes with zsh-syntax-highlighting.zsh
|
|
|
|
pasteinit() {
|
|
|
|
OLD_SELF_INSERT=''${''${(s.:.)widgets[self-insert]}[2,3]}
|
|
|
|
zle -N self-insert url-quote-magic # I wonder if you'd need `.url-quote-magic`?
|
|
|
|
}
|
|
|
|
|
|
|
|
pastefinish() {
|
|
|
|
zle -N self-insert $OLD_SELF_INSERT
|
|
|
|
}
|
|
|
|
zstyle :bracketed-paste-magic paste-init pasteinit
|
|
|
|
zstyle :bracketed-paste-magic paste-finish pastefinish
|
|
|
|
|
|
|
|
# automatic rehash of path completion
|
|
|
|
zstyle ':completion:*' rehash true
|
|
|
|
|
|
|
|
eval "$(${pkgs.thefuck}/bin/thefuck --alias)"
|
|
|
|
|
|
|
|
## helper functions
|
|
|
|
nixify() {
|
|
|
|
if [ ! -e ./.envrc ]; then
|
|
|
|
echo "eval \"$(lorri direnv)\"" > .envrc
|
|
|
|
direnv allow
|
|
|
|
fi
|
|
|
|
if [ ! -e shell.nix ]; then
|
|
|
|
cat > shell.nix <<'EOF'
|
|
|
|
with import <nixpkgs> {};
|
|
|
|
mkShell {
|
|
|
|
buildInputs = [
|
|
|
|
bashInteractive
|
|
|
|
];
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
${"EDITOR:-vim"} default.nix
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
binpath() {
|
|
|
|
realpath $(${pkgs.which}/bin/which $1)
|
|
|
|
}
|
|
|
|
'';
|
|
|
|
|
|
|
|
oh-my-zsh = {
|
|
|
|
enable = true;
|
|
|
|
theme = "bira";
|
|
|
|
plugins = [
|
|
|
|
"git"
|
|
|
|
"python"
|
|
|
|
"systemd"
|
|
|
|
"gpg-agent"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
home.shellAliases = {
|
|
|
|
ip = "ip --color";
|
|
|
|
ipb = "ip --color --brief";
|
|
|
|
ll = "ls -l";
|
|
|
|
wavesynth = "nix-shell -p sox --run 'play -n synth brownnoise synth pinknoise mix synth 0 0 0 15 40 80 trapezium amod 0.2 20'";
|
|
|
|
vim = "nvim";
|
|
|
|
};
|
|
|
|
home.sessionVariables = {
|
|
|
|
EDITOR = "nvim";
|
|
|
|
};
|
2024-06-11 22:44:40 +02:00
|
|
|
|
|
|
|
home.activation.reportChanges = config.lib.dag.entryAnywhere ''
|
|
|
|
if [[ -v oldGenPath ]]; then
|
|
|
|
run nix store diff-closures $oldGenPath $newGenPath
|
|
|
|
fi
|
|
|
|
'';
|
2024-03-17 19:18:53 +01:00
|
|
|
}
|