192 lines
4.4 KiB
Nix

{ config, pkgs, inputs, ... }:
{
home.username = "julian";
home.homeDirectory = "/home/julian";
# DO NOT CHANGE!!!
home.stateVersion = "23.11";
home.packages = with pkgs; [
# Code formatters for use with doom emacs
nixfmt # nix
dockfmt # docker
google-java-format # java
# Lsps for use with doom emacs
# neocmakelsp # cmake
# Rust setup
rustc
cargo
rust-analyzer
# Further tools
lazygit
# TODO: migrate to module config
starship
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, ${config.home.username}!"
# '')
];
home.shellAliases = {
g = "git status";
fd = "fd -HI";
};
programs = {
direnv = {
enable = true;
enableZshIntegration = true;
};
starship = {
enable = true;
enableZshIntegration = true;
};
zsh = {
enable = true;
initExtra = ''
function go_dir_up() {
cd .. || return 1
}
function zle_go_dir_up() {
zle .kill-buffer
go_dir_up
zle .accept-line
}
fzf-z() {
dir=$(z | fzf --tiebreak=index --tac | sed -E 's/^[0-9]+[[:space:]]+//')
cd $dir
}
mkcd ()
{
mkdir -p -- "$1" && cd -P -- "$1"
}
zle -N zle_go_dir_up
bindkey "^[[1;3A" zle_go_dir_up
bindkey "^[[A" history-substring-search-up
bindkey "^[[B" history-substring-search-down
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
'';
zplug = {
enable = true;
plugins = [
# list of plugins: https://github.com/unixorn/awesome-zsh-plugins
{ name = "agkozak/zsh-z"; }
{ name = "mdumitru/last-working-dir"; }
{
name = "zsh-users/zsh-completions";
}
# make it behave like fish
{ name = "zsh-users/zsh-autosuggestions"; }
{ name = "zsh-users/zsh-history-substring-search"; }
{
name = "zsh-users/zsh-syntax-highlighting";
} # must be last sourced plugin
];
};
};
neovim = let
toLua = str: ''
lua << EOF
${str}
EOF
'';
in {
# https://www.youtube.com/watch?v=YZAnJ0rwREA
enable = true;
viAlias = true;
vimAlias = true;
# vimdiffAlias = true;
plugins = with pkgs.vimPlugins; [
{
plugin = dracula-nvim;
config = "colorscheme dracula";
}
{
plugin = comment-nvim;
config = toLua ''require("Comment").setup()'';
}
# nix file support
vim-nix
# Syntax highlighting
(nvim-treesitter.withPlugins (p: [
p.tree-sitter-nix
p.tree-sitter-vim
p.tree-sitter-bash
p.tree-sitter-lua
p.tree-sitter-python
p.tree-sitter-json
p.tree-sitter-cpp
p.tree-sitter-rust
]))
];
# extraLuaConfig = "\n";
extraLuaConfig = ''
vim.o.termguicolors = true
'';
};
};
home.file = {
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
".config/alacritty/theme".source = "${inputs.alacritty-theme}";
".config/alacritty" = {
source = ../alacritty;
recursive = true;
};
".config/starship.toml".source = ../starship/starship.toml;
};
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. If you don't want to manage your shell through Home
# Manager then you have to manually source 'hm-session-vars.sh' located at
# either
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
# or
# /etc/profiles/per-user/julian/etc/profile.d/hm-session-vars.sh
#
home.sessionVariables = {
TERMINAL = "alacritty";
EDITOR = "nvim";
VISUAL = "nvim";
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
}