traverseda-nixos-config/home-manager/home.nix

173 lines
4.0 KiB
Nix
Raw Normal View History

2024-04-23 07:59:37 -03:00
# This is your home-manager configuration file
# Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix)
{
inputs,
outputs,
lib,
config,
pkgs,
...
}: {
# You can import other home-manager modules here
imports = [
# If you want to use modules your own flake exports (from modules/home-manager):
# outputs.homeManagerModules.example
# Or modules exported from other flakes (such as nix-colors):
# inputs.nix-colors.homeManagerModules.default
# You can also split up your configuration and import pieces of it here:
# ./nvim.nix
];
nixpkgs = {
# You can add overlays here
overlays = [
# Add overlays your own flake exports (from overlays and pkgs dir):
outputs.overlays.additions
outputs.overlays.modifications
outputs.overlays.unstable-packages
# You can also add overlays exported from other flakes:
# neovim-nightly-overlay.overlays.default
# Or define it inline, for example:
# (final: prev: {
# hi = final.hello.overrideAttrs (oldAttrs: {
# patches = [ ./change-hello-to-hi.patch ];
# });
# })
];
# Configure your nixpkgs instance
config = {
# Disable if you don't want unfree packages
allowUnfree = true;
# Workaround for https://github.com/nix-community/home-manager/issues/2942
allowUnfreePredicate = _: true;
};
};
2024-05-18 21:20:55 -03:00
2024-04-23 07:59:37 -03:00
home = {
2024-05-18 18:40:15 -03:00
username = "traverseda";
homeDirectory = "/home/traverseda";
2024-04-23 07:59:37 -03:00
};
2024-05-18 18:40:15 -03:00
programs.git = {
enable = true;
userName = "Alex Davies";
userEmail = "traverse.da@gmail.com";
extraConfig = {
core = {
editor = "vim"; # Set default editor for Git
};
color = {
ui = "auto"; # Enable colored output in the terminal
};
push = {
default = "simple"; # Default push behavior to 'simple'
};
pull = {
rebase = "false"; # Avoid rebasing by default on pull
};
credential = {
helper = "cache --timeout=3600"; # Cache credentials for 1 hour (3600 seconds)
};
};
};
programs.neovim = {
enable = true;
defaultEditor = true;
viAlias = true;
vimAlias = true;
vimdiffAlias = true;
plugins = with pkgs.vimPlugins; [
nvim-lspconfig
nvim-treesitter.withAllGrammars
vim-bufferline
tokyonight-nvim
{
plugin = which-key-nvim;
}
];
};
programs.ssh = {
enable = true; # Enable SSH module
extraConfig = ''
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600
'';
};
2024-05-18 21:20:55 -03:00
home.packages = with pkgs; [
pkgs.htop
pkgs.zsh
pkgs.xclip
2024-05-18 18:40:15 -03:00
pkgs.ripgrep
2024-05-18 21:20:55 -03:00
pkgs.mosh
pkgs.waypipe
pkgs.pwgen
pkgs.chezmoi
pkgs.neovim-remote
pkgs.pipx
pkgs.rclone
pkgs.pyright
pkgs.mosh
pkgs.jq
pkgs.copier
pkgs.pv
pkgs.poetry
pkgs.nmap
pkgs.dig
pkgs.tree
pkgs.curl
pkgs.wget
pkgs.wl-clipboard
(pkgs.writeShellScriptBin "nvr-edit" ''
nvr --remote-wait $@
'')
(pkgs.writeShellScriptBin "nvidia-offload" ''
export __NV_PRIME_RENDER_OFFLOAD=1
export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0
export __GLX_VENDOR_LIBRARY_NAME=nvidia
export __VK_LAYER_NV_optimus=NVIDIA_only
exec "$@"
'')
2024-05-18 18:40:15 -03:00
];
2024-04-23 07:59:37 -03:00
2024-05-18 21:20:55 -03:00
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
history.size = 10000;
history.path = "${config.xdg.dataHome}/zsh/history";
oh-my-zsh = {
enable = true;
plugins = [ "git" "docker" "docker-compose"];
theme = "robbyrussell";
};
initExtra = ''
if [[ -n ''${NVIM+x} ]]; then
alias vim="nvr --remote"
export EDITOR=nvr-edit
fi
'';
};
2024-04-23 07:59:37 -03:00
# Enable home-manager and git
programs.home-manager.enable = true;
# Nicely reload system units when changing configs
systemd.user.startServices = "sd-switch";
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
home.stateVersion = "23.05";
}