285 lines
8 KiB
Nix
285 lines
8 KiB
Nix
|
{ config, pkgs, ... }:
|
||
|
|
||
|
{
|
||
|
# Home Manager needs a bit of information about you and the paths it should
|
||
|
# manage.
|
||
|
home.username = "millironx";
|
||
|
home.homeDirectory = "/Users/millironx";
|
||
|
|
||
|
# 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.11"; # Please read the comment before changing.
|
||
|
|
||
|
# The home.packages option allows you to install Nix packages into your
|
||
|
# environment.
|
||
|
home.packages = with pkgs; [
|
||
|
act
|
||
|
asitop
|
||
|
bat
|
||
|
cowsay
|
||
|
direnv
|
||
|
ffmpeg
|
||
|
figlet
|
||
|
fortune
|
||
|
gh
|
||
|
gitflow
|
||
|
git-absorb
|
||
|
gnugrep
|
||
|
gnupg
|
||
|
gnused
|
||
|
htop
|
||
|
inkscape-with-extensions
|
||
|
jq
|
||
|
lapce
|
||
|
lsd
|
||
|
lynx
|
||
|
most
|
||
|
neovide
|
||
|
nil
|
||
|
nixd
|
||
|
nixfmt
|
||
|
pandoc
|
||
|
pinentry_mac
|
||
|
pipx
|
||
|
python3
|
||
|
quarto
|
||
|
shellcheck
|
||
|
sketchybar-app-font
|
||
|
sqlitebrowser
|
||
|
texlive.combined.scheme-full
|
||
|
woodpecker-cli
|
||
|
yt-dlp
|
||
|
zulu17
|
||
|
|
||
|
# # 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 = [ "FiraCode" "Hack" "Meslo" "NerdFontsSymbolsOnly" ];
|
||
|
})
|
||
|
|
||
|
# # 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}!"
|
||
|
# '')
|
||
|
(pkgs.writeShellScriptBin "nd" ''
|
||
|
mkdir "$1"
|
||
|
cd "$1"
|
||
|
'')
|
||
|
(pkgs.writeShellScriptBin "uq" ''
|
||
|
xattr -rdv com.apple.quarantine "/Applications/$1.app"
|
||
|
'')
|
||
|
];
|
||
|
|
||
|
# 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
|
||
|
# '';
|
||
|
};
|
||
|
|
||
|
# 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/millironx/etc/profile.d/hm-session-vars.sh
|
||
|
#
|
||
|
home.sessionVariables = {
|
||
|
EDITOR = "nvim";
|
||
|
PAGER = "most";
|
||
|
NXF_HOME = "$HOME/.nextflow";
|
||
|
NXF_CACHE = "$HOME/.cache/nextflow";
|
||
|
NXF_CONDA_CACHEDIR = "$NXF_CACHE/conda";
|
||
|
NXF_SINGULARITY_CACHEDIR = "$NXF_CACHE/singularity";
|
||
|
JULIA_NUM_THREADS = "$(sysctl -n hw.logicalcpu)";
|
||
|
JULIA_PKG_USE_CLI_GIT = "true";
|
||
|
GPG_TTY = "$(tty)";
|
||
|
SSH_AUTH_SOCK = "$(gpgconf --list-dirs agent-ssh-socket)";
|
||
|
};
|
||
|
|
||
|
home.shellAliases = {
|
||
|
cat = "bat";
|
||
|
ls = "lsd";
|
||
|
code = "codium";
|
||
|
nproc = "sysctl -n hw.logicalcpu";
|
||
|
please = "sudo $(fc -ln -1)";
|
||
|
nrun = ''
|
||
|
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia __VK_LAYER_NV_optimus="NVIDIA_only"'';
|
||
|
grim = "git rebase -i --autosquash $(git_main_branch)";
|
||
|
grid = "git rebase -i --autosquash $(git_develop_branch)";
|
||
|
gpub = "git push --set-upstream origin $(git rev-parse --abbrev-ref HEAD)";
|
||
|
};
|
||
|
|
||
|
home.sessionPath = [
|
||
|
"$HOME/.julia/bin"
|
||
|
"$HOME/.juliaup/bin"
|
||
|
"$HOME/.cargo/bin"
|
||
|
"$HOME/.local/bin"
|
||
|
];
|
||
|
|
||
|
# Let Home Manager install and manage itself.
|
||
|
programs.home-manager.enable = true;
|
||
|
|
||
|
programs.bash = {
|
||
|
enable = true;
|
||
|
initExtra = ''
|
||
|
# >>> conda initialize >>>
|
||
|
# !! Contents within this block are managed by 'conda init' !!
|
||
|
__conda_setup="$($HOME/miniconda3/bin/conda shell.bash 'hook' 2> /dev/null)"
|
||
|
if [ $? -eq 0 ]; then
|
||
|
eval "$__conda_setup"
|
||
|
else
|
||
|
if [ -f "$HOME/miniconda3/etc/profile.d/conda.sh" ]; then
|
||
|
. "$HOME/miniconda3/etc/profile.d/conda.sh"
|
||
|
else
|
||
|
export PATH="$HOME/miniconda3/bin:$PATH"
|
||
|
fi
|
||
|
fi
|
||
|
unset __conda_setup
|
||
|
|
||
|
if [ -f "$HOME/miniconda3/etc/profile.d/mamba.sh" ]; then
|
||
|
. "$HOME/miniconda3/etc/profile.d/mamba.sh"
|
||
|
fi
|
||
|
# <<< conda initialize <<<
|
||
|
export PS1="[\[\e[32m\]\u\[\e[m\]@\[\e[33m\]\h\[\e[m\] \[\e[34m\]\W\[\e[m\]] \\$ "
|
||
|
'';
|
||
|
profileExtra = ''
|
||
|
if [ "$(arch)" = "i386" ]; then
|
||
|
eval "$(/usr/local/bin/brew shellenv bash)"
|
||
|
else
|
||
|
eval "$(/opt/homebrew/bin/brew shellenv bash)"
|
||
|
fi
|
||
|
gpgconf --launch gpg-agent
|
||
|
'';
|
||
|
};
|
||
|
programs.bat = {
|
||
|
enable = true;
|
||
|
config = { pager = "less -SRF"; };
|
||
|
};
|
||
|
programs.direnv = {
|
||
|
enable = true;
|
||
|
enableBashIntegration = true;
|
||
|
enableZshIntegration = true;
|
||
|
};
|
||
|
programs.git = {
|
||
|
enable = true;
|
||
|
userName = "Thomas A. Christensen II";
|
||
|
userEmail = "25492070+MillironX@users.noreply.github.com";
|
||
|
signing = {
|
||
|
key = "0x073201D703B7C376";
|
||
|
signByDefault = true;
|
||
|
};
|
||
|
extraConfig = {
|
||
|
core = { editor = "nvim"; };
|
||
|
credential = { helper = "store"; };
|
||
|
color = { ui = "auto"; };
|
||
|
init = { defaultBranch = "master"; };
|
||
|
};
|
||
|
};
|
||
|
programs.gpg.enable = true;
|
||
|
programs.neovim = {
|
||
|
enable = true;
|
||
|
package = pkgs.neovim-unwrapped;
|
||
|
coc.enable = true;
|
||
|
plugins = with pkgs.vimPlugins; [
|
||
|
mason-nvim
|
||
|
mason-lspconfig-nvim
|
||
|
nvim-lspconfig
|
||
|
nvim-dap
|
||
|
nvim-dap-ui
|
||
|
null-ls-nvim
|
||
|
nvim-lint
|
||
|
formatter-nvim
|
||
|
lspsaga-nvim
|
||
|
vim-slime
|
||
|
];
|
||
|
extraLuaConfig = ''
|
||
|
require("mason").setup()
|
||
|
'';
|
||
|
};
|
||
|
programs.zsh = {
|
||
|
enable = true;
|
||
|
autosuggestion.enable = true;
|
||
|
enableCompletion = true;
|
||
|
completionInit =
|
||
|
"autoload -U compinit && compinit; autoload -U bashcompinit && bashcompinit";
|
||
|
antidote = {
|
||
|
enable = true;
|
||
|
plugins = [
|
||
|
"ohmyzsh/ohmyzsh path:lib"
|
||
|
"ohmyzsh/ohmyzsh path:plugins/git"
|
||
|
"ohmyzsh/ohmyzsh path:plugins/extract"
|
||
|
"zsh-users/zsh-syntax-highlighting"
|
||
|
"zsh-users/zsh-autosuggestions"
|
||
|
"zsh-users/zsh-completions"
|
||
|
"romkatv/powerlevel10k"
|
||
|
];
|
||
|
};
|
||
|
initExtraFirst = ''
|
||
|
if [[ -r "''${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-''${(%):-%n}.zsh" ]]; then
|
||
|
source "''${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-''${(%):-%n}.zsh"
|
||
|
fi
|
||
|
'';
|
||
|
initExtra = ''
|
||
|
source ~/.p10k.zsh
|
||
|
# >>> conda initialize >>>
|
||
|
# !! Contents within this block are managed by 'conda init' !!
|
||
|
__conda_setup="$($HOME/miniconda3/bin/conda shell.zsh 'hook' 2> /dev/null)"
|
||
|
if [ $? -eq 0 ]; then
|
||
|
eval "$__conda_setup"
|
||
|
else
|
||
|
if [ -f "$HOME/miniconda3/etc/profile.d/conda.sh" ]; then
|
||
|
. "$HOME/miniconda3/etc/profile.d/conda.sh"
|
||
|
else
|
||
|
export PATH="$HOME/miniconda3/bin:$PATH"
|
||
|
fi
|
||
|
fi
|
||
|
unset __conda_setup
|
||
|
|
||
|
if [ -f "$HOME/miniconda3/etc/profile.d/mamba.sh" ]; then
|
||
|
. "$HOME/miniconda3/etc/profile.d/mamba.sh"
|
||
|
fi
|
||
|
# <<< conda initialize <<<
|
||
|
gpgconf --launch gpg-agent
|
||
|
source "$HOME/.cargo/env"
|
||
|
'';
|
||
|
profileExtra = ''
|
||
|
if [ "$(arch)" = "i386" ]; then
|
||
|
eval "$(/usr/local/bin/brew shellenv zsh)"
|
||
|
else
|
||
|
eval "$(/opt/homebrew/bin/brew shellenv zsh)"
|
||
|
fi
|
||
|
'';
|
||
|
};
|
||
|
services.gpg-agent = {
|
||
|
enable = pkgs.hostPlatform.isLinux;
|
||
|
enableBashIntegration = true;
|
||
|
enableSshSupport = true;
|
||
|
enableZshIntegration = true;
|
||
|
defaultCacheTtl = 60;
|
||
|
maxCacheTtl = 120;
|
||
|
#pinentryPackage = pkgs.pinentry-qt;
|
||
|
};
|
||
|
}
|