140 lines
3.1 KiB
Nix

{ config, pkgs, inputs, ... }:
{
home.username = "julian";
home.homeDirectory = "/home/julian";
# DO NOT CHANGE!!!
home.stateVersion = "23.11";
modules = {
shell = {
zsh.enable = true;
direnv.enable = true;
};
topgrade.enable = true;
};
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
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, ${config.home.username}!"
# '')
];
programs = {
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
]))
];
extraConfig = ''
set clipboard=unnamedplus
'';
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;
};
};
# 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.shellAliases = {
g = "git status";
fd = "fd -HI";
ls = "ls --color";
la = "ls -Alh --color";
grep = "grep --color";
};
home.sessionVariables = {
TERMINAL = "alacritty";
EDITOR = "nvim";
VISUAL = "nvim";
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
}