nixos-config-backup/home.nix
2024-11-18 15:19:41 +09:00

160 lines
4.1 KiB
Nix

{ config, pkgs, nixvim, ... }:
{
imports = [
nixvim.homeManagerModules.nixvim
];
# Home Manager needs a bit of information about you and the paths it should
# manage.
home.username = "liu";
home.homeDirectory = "/home/liu";
nixpkgs.config.allowUnfree = true;
# This value determines the Home Manager release that your configuration is
# compatible with. This helps avoid breakage when a new Home Manager release
# introduces backwards incompatible changes.
#
# You should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
home.stateVersion = "23.05"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = with pkgs; [
# # Adds the 'hello' command to your environment. It prints a friendly
# # "Hello, world!" when run.
# pkgs.hello
# # It is sometimes useful to fine-tune packages, for example, by applying
# # overrides. You can do that directly here, just don't forget the
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
# # fonts?
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
# # You can also create simple shell scripts directly inside your
# # configuration. For example, this adds a command 'my-hello' to your
# # environment:
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, ${config.home.username}!"
# '')
vim
git
wget
curl
vscode
google-chrome
guake
dmidecode
k9s
kubernetes-helm
# Language servers
yaml-language-server
nodePackages.typescript-language-server
ansible-language-server
nodePackages.vscode-langservers-extracted
nodePackages.bash-language-server
lua-language-server
nil
];
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
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
# '';
};
# You can also manage environment variables but you will have to manually
# source
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/liu/etc/profile.d/hm-session-vars.sh
#
# if you don't want to manage your shell through Home Manager.
home.sessionVariables = {
# EDITOR = "hx";
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
programs.git = {
enable = true;
userName = "Leon Liu";
userEmail = "lliu@indeed.com";
aliases = {
st = "status";
co = "checkout";
po = "push origin";
};
};
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestion = {
enable = true;
};
oh-my-zsh = {
enable = true;
plugins = [ "git" "history-substring-search" ];
theme = "robbyrussell";
};
initExtra = ''
VISUAL=hx
EDITOR="$VISUAL"
'';
};
programs.direnv = {
enable = true;
nix-direnv.enable = true;
enableZshIntegration = true;
};
programs.vscode = {
enable = true;
extensions = [
pkgs.vscode-extensions.bbenoist.nix
pkgs.vscode-extensions.rust-lang.rust-analyzer
];
userSettings = {
"window.zoomLevel" = 2;
"editor.fontFamily" = "mononoki";
};
};
programs.helix = {
enable = true;
defaultEditor = true;
settings = {
theme = "gruvbox_dark_hard";
editor = {
file-picker = {
hidden = false;
};
true-color = true;
};
};
# languages = {
# language-server.rust-analyzer.config = {
# diagnostics.experimental.enable = true;
# };
# };
};
}