mirror of
https://github.com/davegallant/nix-config
synced 2025-08-06 11:23:40 +00:00
Re-org files and flatten dirs
This commit is contained in:
418
home.nix
Normal file
418
home.nix
Normal file
@@ -0,0 +1,418 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
unstable,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (pkgs) stdenv;
|
||||
in
|
||||
{
|
||||
home.stateVersion = "24.11";
|
||||
|
||||
home.packages = with pkgs; [ just ];
|
||||
|
||||
stylix = {
|
||||
enable = true;
|
||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyo-night-dark.yaml";
|
||||
|
||||
fonts.monospace = {
|
||||
name = "FiraCode Nerd Font Mono";
|
||||
package = "${pkgs.fira-mono}";
|
||||
};
|
||||
|
||||
fonts.sansSerif = {
|
||||
name = "FiraCode Nerd Font";
|
||||
package = "${pkgs.fira-code}";
|
||||
};
|
||||
};
|
||||
|
||||
services = {
|
||||
gpg-agent = {
|
||||
enable = stdenv.isLinux;
|
||||
defaultCacheTtl = 3600;
|
||||
defaultCacheTtlSsh = 3600;
|
||||
enableSshSupport = true;
|
||||
};
|
||||
};
|
||||
|
||||
services.lorri.enable = stdenv.isLinux;
|
||||
|
||||
fonts.fontconfig.enable = true;
|
||||
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
|
||||
direnv.enable = true;
|
||||
|
||||
git = {
|
||||
enable = true;
|
||||
|
||||
userName = "Dave Gallant";
|
||||
|
||||
diff-so-fancy.enable = true;
|
||||
|
||||
lfs.enable = true;
|
||||
|
||||
aliases = {
|
||||
aa = "add -A .";
|
||||
br = "branch";
|
||||
c = "commit -S";
|
||||
ca = "commit -S --amend";
|
||||
cane = "commit -S --amend --no-edit";
|
||||
cb = "checkout -b";
|
||||
co = "checkout";
|
||||
cmp = "! git checkout main && git pl";
|
||||
d = "diff";
|
||||
dc = "diff --cached";
|
||||
dcn = "diff --cached --name-only";
|
||||
ds = "! git diff origin | sed -r 's/value: (.*)/value: \"************\"/'";
|
||||
l = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit";
|
||||
ms = "merge --squash";
|
||||
p = "push origin";
|
||||
pf = "push -f";
|
||||
pl = "! git pull origin $(git rev-parse --abbrev-ref HEAD)";
|
||||
st = "status";
|
||||
wip = "for-each-ref --sort='authordate:iso8601' --format=' %(color:green)%(authordate:relative)%09%(color:white)%(refname:short)' refs/heads";
|
||||
};
|
||||
|
||||
includes = [ { path = "~/.gitconfig-work"; } ];
|
||||
|
||||
extraConfig = {
|
||||
push = {
|
||||
default = "current";
|
||||
};
|
||||
pull = {
|
||||
rebase = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
starship = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
|
||||
settings = {
|
||||
add_newline = false;
|
||||
gcloud = {
|
||||
format = "";
|
||||
};
|
||||
kubernetes = {
|
||||
disabled = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
zsh = {
|
||||
enable = true;
|
||||
autosuggestion.enable = true;
|
||||
enableCompletion = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
history.size = 1000000;
|
||||
|
||||
localVariables = {
|
||||
CASE_SENSITIVE = "true";
|
||||
DISABLE_UNTRACKED_FILES_DIRTY = "true";
|
||||
RPROMPT = ""; # override because macOS defaults to filepath
|
||||
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE = "fg=#838383,underline";
|
||||
ZSH_DISABLE_COMPFIX = "true";
|
||||
};
|
||||
|
||||
envExtra = ''
|
||||
export PAGER=less
|
||||
export EDITOR=vim
|
||||
export DOCKER_CLI_HINTS=false
|
||||
export TERM=xterm-256color
|
||||
|
||||
export PATH=$PATH:~/.cargo/bin
|
||||
export PATH=$PATH:~/.local/bin
|
||||
export PATH=$PATH:~/.npm-packages/bin
|
||||
export PATH=$PATH:/opt/homebrew/bin
|
||||
export PATH=$PATH:~/.krew/bin
|
||||
export PATH=$PATH:~/bin
|
||||
export GOPATH=~/go
|
||||
export GOBIN=$GOPATH/bin
|
||||
export PATH=$PATH:$GOBIN
|
||||
'';
|
||||
|
||||
initExtra = ''
|
||||
setopt noincappendhistory
|
||||
|
||||
source $HOME/.zsh-work
|
||||
|
||||
if [[ "$OSTYPE" == "darwin"* ]];
|
||||
then
|
||||
export PATH="$(brew --prefix)/opt/gnu-tar/libexec/gnubin:$PATH"
|
||||
alias xdg-open=open
|
||||
fi
|
||||
|
||||
source <(helm completion zsh)
|
||||
source <(kubectl completion zsh)
|
||||
eval "$(atuin init zsh)"
|
||||
|
||||
# kubecolor
|
||||
source <(kubectl completion zsh)
|
||||
alias kubectl=kubecolor
|
||||
# make completion work with kubecolor
|
||||
compdef kubecolor=kubectl
|
||||
'';
|
||||
|
||||
shellAliases = {
|
||||
".." = "cd ..";
|
||||
c = "code";
|
||||
g = "git";
|
||||
gc = "git checkout $(git branch | fzf)";
|
||||
gco = "git checkout $(git branch -r | sed -e 's/^ origin\\///' | fzf)";
|
||||
gho = "gh repo view --web >/dev/null";
|
||||
gr = "cd $(git rev-parse --show-toplevel)";
|
||||
grep = "rg --smart-case";
|
||||
j = "just";
|
||||
k = "kubecolor";
|
||||
kp = "viddy 'kubectl get pods'";
|
||||
kcx = "kubectx";
|
||||
kns = "kubens";
|
||||
l = "eza -la --git --group-directories-first";
|
||||
m = "make";
|
||||
nix-install = "nix-env -iA";
|
||||
ps = "procs";
|
||||
t = "cd-fzf";
|
||||
tf = "terraform";
|
||||
tree = "eza --tree";
|
||||
v = "nvim";
|
||||
};
|
||||
|
||||
"oh-my-zsh" = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
go = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
fzf = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
nixvim = {
|
||||
enable = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
keymaps = [
|
||||
{
|
||||
key = "<C-n>";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>tabnew<cr>";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>y";
|
||||
mode = [ "v" ];
|
||||
action = ''"+y''; # copy to OS clipboard
|
||||
}
|
||||
{
|
||||
key = "<leader>t";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>NvimTreeFindFileToggle<CR>";
|
||||
}
|
||||
{
|
||||
key = "gD";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>lua vim.lsp.buf.declaration()<CR>";
|
||||
}
|
||||
{
|
||||
key = "gd";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>lua vim.lsp.buf.definition()<CR>";
|
||||
}
|
||||
{
|
||||
key = "gr";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>lua vim.lsp.buf.references()<CR>";
|
||||
}
|
||||
{
|
||||
key = "<leader>ff";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>Telescope find_files<CR>";
|
||||
}
|
||||
{
|
||||
key = "<leader>fg";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>Telescope live_grep<CR>";
|
||||
}
|
||||
];
|
||||
|
||||
plugins = {
|
||||
auto-save.enable = true;
|
||||
cmp-path.enable = true;
|
||||
cmp-treesitter.enable = true;
|
||||
commentary.enable = true;
|
||||
diffview.enable = true;
|
||||
gitblame.enable = true;
|
||||
gitsigns.enable = true;
|
||||
gitlinker.enable = true;
|
||||
lualine.enable = true;
|
||||
lsp.enable = true;
|
||||
lsp.servers = {
|
||||
ansiblels.enable = true;
|
||||
bashls.enable = true;
|
||||
dockerls.enable = true;
|
||||
gopls.enable = true;
|
||||
helm_ls.enable = true;
|
||||
jsonls.enable = true;
|
||||
nixd.enable = true;
|
||||
terraformls.enable = true;
|
||||
yamlls.enable = true;
|
||||
};
|
||||
lsp-format = {
|
||||
enable = true;
|
||||
settings = {
|
||||
terraform = { };
|
||||
nix = { };
|
||||
go = { };
|
||||
};
|
||||
};
|
||||
cmp.enable = true;
|
||||
nvim-tree.enable = true;
|
||||
packer = {
|
||||
enable = true;
|
||||
plugins = [ ];
|
||||
};
|
||||
rainbow-delimiters.enable = true;
|
||||
treesitter.enable = true;
|
||||
telescope = {
|
||||
enable = true;
|
||||
settings.defaults = {
|
||||
layout_strategy = "vertical";
|
||||
layout_config = {
|
||||
vertical = {
|
||||
width = 0.9;
|
||||
};
|
||||
};
|
||||
};
|
||||
package = pkgs.vimPlugins.telescope-fzy-native-nvim;
|
||||
};
|
||||
web-devicons.enable = true;
|
||||
};
|
||||
opts = {
|
||||
autoindent = true;
|
||||
backup = false;
|
||||
belloff = "all";
|
||||
completeopt = [
|
||||
"menuone"
|
||||
"noselect"
|
||||
];
|
||||
cursorline = true;
|
||||
expandtab = true;
|
||||
fillchars = {
|
||||
diff = "∙";
|
||||
eob = " ";
|
||||
vert = "┃";
|
||||
};
|
||||
hlsearch = true;
|
||||
ignorecase = true;
|
||||
incsearch = true;
|
||||
modelines = 5;
|
||||
mouse = "a";
|
||||
number = true;
|
||||
pumblend = 10;
|
||||
scrolloff = 3;
|
||||
shell = "bash";
|
||||
shiftround = false;
|
||||
shiftwidth = 2;
|
||||
showbreak = "↳ ";
|
||||
showcmd = true;
|
||||
sidescroll = 0;
|
||||
sidescrolloff = 3;
|
||||
smartcase = true;
|
||||
smarttab = true;
|
||||
spellcapcheck = "";
|
||||
splitbelow = true;
|
||||
splitright = true;
|
||||
swapfile = false;
|
||||
switchbuf = "usetab";
|
||||
tabstop = 2;
|
||||
termguicolors = true;
|
||||
wildmenu = true;
|
||||
};
|
||||
|
||||
extraConfigLua = ''
|
||||
|
||||
-- https://github.com/orgs/community/discussions/108329
|
||||
vim.cmd([[let g:copilot_filetypes = {'yaml': v:true}]])
|
||||
|
||||
vim.cmd([[let g:copilot_filetypes = {'gitcommit': v:true}]])
|
||||
|
||||
-- Format JSON
|
||||
vim.cmd([[command! JsonFormat execute "::%!jq '.'"]])
|
||||
|
||||
-- Remember line number
|
||||
vim.cmd([[au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif]])
|
||||
|
||||
-- Replace visual selection
|
||||
vim.cmd([[vnoremap <C-r> "hy:%s/<C-r>h//g<left><left>]])
|
||||
|
||||
-- Indent YAML
|
||||
vim.cmd([[au FileType yaml setlocal ts=2 sts=2 sw=2 expandtab]])
|
||||
|
||||
-- Indent Python
|
||||
vim.cmd([[au BufNewFile,BufRead *.py set tabstop=4 softtabstop=4 shiftwidth=4 textwidth=79 expandtab autoindent fileformat=unix]])
|
||||
|
||||
-- Highlight whitespace
|
||||
vim.cmd([[highlight ExtraWhitespace ctermbg=red guibg=red]])
|
||||
vim.cmd([[match ExtraWhitespace /\s\+$/]])
|
||||
|
||||
-- folding
|
||||
vim.api.nvim_exec(
|
||||
[[
|
||||
set foldmethod=expr
|
||||
set foldlevel=20
|
||||
set nofoldenable
|
||||
set foldexpr=nvim_treesitter#foldexpr()
|
||||
]],
|
||||
true
|
||||
)
|
||||
'';
|
||||
};
|
||||
|
||||
vscode = {
|
||||
enable = stdenv.isLinux;
|
||||
package = pkgs.vscode;
|
||||
extensions =
|
||||
with pkgs.vscode-extensions;
|
||||
[
|
||||
bbenoist.nix
|
||||
github.vscode-pull-request-github
|
||||
golang.go
|
||||
hashicorp.terraform
|
||||
ms-dotnettools.csharp
|
||||
ms-kubernetes-tools.vscode-kubernetes-tools
|
||||
redhat.vscode-yaml
|
||||
]
|
||||
++ lib.optionals stdenv.isLinux [ ms-python.python ];
|
||||
};
|
||||
|
||||
firefox = {
|
||||
enable = stdenv.isLinux;
|
||||
|
||||
package = unstable.librewolf;
|
||||
|
||||
profiles = {
|
||||
default = {
|
||||
id = 0;
|
||||
isDefault = true;
|
||||
settings = {
|
||||
"privacy.resistFingerprinting" = false; # breaks timezone
|
||||
"dom.push.connection.enabled" = false;
|
||||
"dom.push.enabled" = false;
|
||||
"geo.enabled" = false;
|
||||
"intl.regional_prefs.use_os_locales" = true;
|
||||
"services.sync.prefs.sync.intl.regional._prefs.use_os_locates" = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user