Restructure Darwin configuration

So far, this is just based on mightymac. The other devices will be
updated soon.
This commit is contained in:
Gene Liverman 2024-12-07 23:12:52 -05:00
parent ce3a1b5e20
commit f95cc09e13
45 changed files with 14 additions and 18 deletions

View file

@ -0,0 +1,10 @@
{ pkgs, ... }: {
home.packages = with pkgs; [
# nothing here right now
];
programs = {
git.aliases = {
kraken = "!gitkraken -p $(cd \"\${1:-.}\" && git rev-parse --show-toplevel)";
};
};
}

View file

@ -0,0 +1,348 @@
{ inputs, pkgs, ... }: let
sqlite_lib = if builtins.elem pkgs.system [
"aarch64-darwin"
"x86_64-darwin"
]
then "libsqlite3.dylib"
else "libsqlite3.so";
in {
home.packages = with pkgs; [
bundix
cargo
cheat
colordiff
dogdns
dos2unix
du-dust
duf
esptool
fd
f2
git-filter-repo
glab
gomuks
gotop
htop
httpie
hub
jq
lazydocker
lazygit
lua-language-server
minicom
mtr
nil
nix-zsh-completions
nodejs
nodePackages.npm
nurl
nvd
onefetch
powershell
pre-commit
puppet-lint
rename
ruby
subversion
tree
trippy
vimv
watch
wget
yq-go
];
home.sessionVariables = {
CLICLOLOR = 1;
PAGER = "less";
};
programs = {
atuin = {
enable = true;
settings = {
ctrl_n_shortcuts = true; # Use Ctrl-0 .. Ctrl-9 instead of Alt-0 .. Alt-9 UI shortcuts
enter_accept = true; # press tab to edit command before running
filter_mode_shell_up_key_binding = "host"; # or global, host, directory, etc
sync_address = "https://atuin.home.technicalissues.us";
sync_frequency = "15m";
};
};
bat = {
enable = true;
config = {
theme = "Catppuccin-frappe";
};
themes = {
Catppuccin-frappe = {
src = pkgs.fetchFromGitHub {
owner = "catppuccin";
repo = "bat";
rev = "ba4d16880d63e656acced2b7d4e034e4a93f74b1";
hash = "sha256-6WVKQErGdaqb++oaXnY3i6/GuH2FhTgK0v4TN4Y0Wbw=";
};
file = "Catppuccin-frappe.tmTheme";
};
};
};
bottom.enable = true;
broot.enable = true;
direnv = {
enable = true;
enableZshIntegration = true;
nix-direnv.enable = true;
};
eza.enable = true;
fzf.enable = true;
gh.enable = true;
git = {
enable = true;
diff-so-fancy.enable = true;
extraConfig = {
diff.sopsdiffer.textconv = "sops --config /dev/null --decrypt";
};
ignores = [
"*~"
"*.swp"
".DS_Store"
];
includes = [ { path = "~/.gitconfig-local"; }];
lfs.enable = true;
package = pkgs.gitAndTools.gitFull;
userName = "Gene Liverman";
extraConfig = {
init = {
defaultBranch = "main";
};
merge = {
conflictStyle = "diff3";
tool = "meld";
};
pull = {
rebase = false;
};
};
}; # end git
irssi.enable = true;
jq.enable = true;
neovim = {
enable = true;
defaultEditor = true;
extraLuaConfig = ''
-- NOTE: This will get the OS from Lua:
-- print(vim.loop.os_uname().sysname)
-- setup lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
vim.opt.rtp:prepend(lazypath)
-- hack to deal with bug in telescope-cheat.nvim
-- https://github.com/nvim-telescope/telescope-cheat.nvim/issues/7
local cheat_dbdir = vim.fn.stdpath "data" .. "/databases"
if not vim.loop.fs_stat(cheat_dbdir) then
vim.loop.fs_mkdir(cheat_dbdir, 493)
end
-- load additional settings
require("config.vim-options")
require("lazy").setup("plugins")
-- tell sqlite.lua where to find the bits it needs
vim.g.sqlite_clib_path = '${pkgs.sqlite.out}/lib/${sqlite_lib}'
'';
extraPackages = with pkgs; [
gcc # needed so treesitter can do compiling
sqlite # needed by sqlite.lua used by telescope-cheat
];
plugins = [ pkgs.vimPlugins.lazy-nvim ]; # let lazy.nvim manage every other plugin
};
oh-my-posh = {
enable = true;
enableZshIntegration = true;
settings = builtins.fromJSON (builtins.unsafeDiscardStringContext (builtins.readFile (inputs.genebean-omp-themes + "/beanbag.omp.json")));
};
ripgrep.enable = true;
tmux = {
enable = true;
historyLimit = 100000;
mouse = true;
tmuxinator.enable = true;
plugins = with pkgs.tmuxPlugins; [
vim-tmux-navigator
{
plugin = dracula;
extraConfig = ''
set -g @dracula-show-battery false
set -g @dracula-show-powerline true
set -g @dracula-refresh-rate 10
'';
}
];
extraConfig = ''
set -g status-position top
'';
};
vim = {
enable = true;
defaultEditor = false;
plugins = with pkgs.vimPlugins; [
syntastic
tabular
tlib_vim
vim-addon-mw-utils
vim-airline
vim-airline-themes
vim-flog
vim-fugitive
vim-json
vim-markdown
vim-nix
vim-puppet
vim-ruby
vim-snipmate
vim-snippets
vim-tmux-navigator
vim-yaml
];
settings = {
background = "dark";
expandtab = true;
};
extraConfig = ''
set nocompatible " be iMproved, required
filetype plugin indent on " required for plugins to be able to adjust indent
syntax on " enable syntax highlighting
set encoding=utf-8
set termencoding=utf-8
set t_Co=256 " tell vim we have 256 colors to work with
set autoindent " automatically indent new lines
set backspace=2 " make backspace work like most other programs
set fillchars+=stl:\ ,stlnc:\ " fix added per powerline troubleshooting docs
set laststatus=2 " Always display the status line in all windows
set noshowmode " Hide the default mode text (e.g. -- INSERT -- below the status line)
set smarttab " helps with expanding tabs to spaces (I think)
set statusline+=%{FugitiveStatusline()} " get git info via fugitive plugin
set statusline+=%#warningmsg# " recommended setting from syntastic plugin
set statusline+=%{SyntasticStatuslineFlag()} " recommended setting from syntastic plugin
set statusline+=%* " recommended setting from syntastic plugin
" This has to come after colorscheme, if defined, to not be masked
highlight ColorColumn ctermbg=232 " set the color to be used for guidelines
let &colorcolumn=join(range(81,999),",") " change the background color of everything beyond 80 characters
let g:snipMate = { 'snippet_version' : 1 }
" settings for the syntastic plugin
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
let g:syntastic_enable_signs = 1
let g:syntastic_ruby_checkers = ['rubocop']
let g:syntastic_quiet_messages = {'level': 'warnings'}
" don't wrap text in markdown files
let g:vim_markdown_folding_disabled = 1
" settings for vim-airline
let g:airline_theme='badwolf'
let g:airline_powerline_fonts = 1
'';
};
zsh = {
enable = true;
enableCompletion = true;
autosuggestion.enable = true;
history.save = 1000000;
history.size = 1000000;
initExtra = ''
[ -f ~/.private-env ] && source ~/.private-env || echo '~/.private-env is missing'
[ -f ~/.gitconfig-local ] || echo '~/.gitconfig-local is missing. Create it and set user.email'
# Start GPG agent
# Some tips from https://hedberg.io/yubikey-for-ssh/ helped simplify this:
if [[ $(uname) == 'Darwin' ]]; then
# Add GPG Suite binaries to the path:
export PATH=/usr/local/MacGPG2/bin:$PATH
fi
export GPG_TTY=$(tty)
nv() {
# Assumes all configs exist in directories named ~/.config/nvim-*
local config=$(fd --max-depth 1 --glob 'nvim*' ~/.config | fzf --prompt="Neovim Configs > " --height=~50% --layout=reverse --border --exit-0)
# If I exit fzf without selecting a config, don't open Neovim
[[ -z $config ]] && echo "No config selected" && return
# Open Neovim with the selected config
NVIM_APPNAME=$(basename $config) nvim $*
}
svndiffless() {
svn diff "$@" |diff-so-fancy |less -R
}
svndiffless-nows() {
svn diff -x -w "$@" |diff-so-fancy |less -R
}
# unset oh-my-zsh's gk so that gk can refer to the gitkraken-cli
unalias gk
'';
oh-my-zsh = {
enable = true;
plugins = [
"bundler"
"gem"
"git"
"github"
"history"
"kubectl"
"pip"
"terraform"
"vagrant"
"vscode"
];
};
shellAliases = {
bcrr = "bolt command run --run-as root --sudo-password-prompt";
bcrrs = "bcrr --stream --no-verbose";
beo = "bundle exec onceover run spec --trace --force";
biv = "bundle install --path=vendor/bundle";
bottom = "echo 'To run bottom, the command is btm'";
ce = "code-exploration";
dots = "cd ~/repos/dots";
gbc = ''
git branch --merged | command grep -vE "^(\*|\s*(main|master|develop|production)\s*$)" | command xargs -n 1 git branch -d
'';
gitextract = "git log --pretty=email --patch-with-stat --reverse --full-index --binary --";
gpge = "gpg2 --encrypt --sign --armor -r ";
hubpr = "hub pull-request --push --browse";
nvdots = "NVIM_APPNAME=nvim-dots nvim";
nve = "nvdots ~/repos/dots/modules/home-manager/files/nvim/lua";
pssh = "ssh -o 'UserKnownHostsFile /dev/null' -o 'StrictHostKeyChecking no' -o PubkeyAcceptedKeyTypes=+ssh-rsa -o HostKeyAlgorithms=+ssh-rsa -o KexAlgorithms=+diffie-hellman-group1-sha1 -i ~/.ssh/id_rsa-acceptance";
sal = "ssh-add -L";
sshnull = "ssh -o UserKnownHostsFile=/dev/null";
st = "open -a SourceTree";
sz = "source ~/.zshrc";
trippy = "echo 'To run trippy, the command is trip'";
usegpg = "killall ssh-agent; export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) && gpgconf --launch gpg-agent";
usessh = "gpgconf --kill gpg-agent";
};
}; # end zsh
}; # end programs
home.file = {
".config/nvim/lua/config" = {
source = ./files/nvim/lua/config;
recursive = true;
};
".config/nvim/lua/plugins" = {
source = ./files/nvim/lua/plugins;
recursive = true;
};
".config/powershell/Microsoft.PowerShell_profile.ps1".source = ./files/Microsoft.PowerShell_profile.ps1;
".config/powershell/Microsoft.VSCode_profile.ps1".source = ./files/Microsoft.PowerShell_profile.ps1;
};
}

View file

@ -0,0 +1,4 @@
# With PowerCLI installed via ps-get this isn't needed anymore
#Get-Module -ListAvailable PowerCLI.* | Import-Module
oh-my-posh init pwsh --config ~/.config/oh-my-posh/config.json | Invoke-Expression

View file

@ -0,0 +1,31 @@
vim.g.mapleader = " "
vim.g.maplocalleader = " "
-- make sure vim know I always have a dark terminal
vim.opt.background = "dark"
-- use spaces for tabs and whatnot
vim.opt.expandtab = true
vim.opt.tabstop = 2
vim.opt.softtabstop = 2
vim.opt.shiftwidth = 2
vim.opt.shiftround = true
-- make sure all the mouse stuff is on.
-- pressing alt to hightlight + copy/paste works like it does outside of nvim
vim.opt.mouse = "a"
vim.keymap.set("n", "<leader>h", ":nohlsearch<CR>")
vim.wo.relativenumber = true
vim.o.termguicolors = true
-- Tips from https://github.com/folke/edgy.nvim
-- views can only be fully collapsed with the global statusline
vim.opt.laststatus = 3
-- Default splitting will cause your main splits to jump when opening an edgebar.
-- To prevent this, set `splitkeep` to either `screen` or `topline`.
vim.opt.splitkeep = "screen"

View file

@ -0,0 +1,14 @@
return {'romgrk/barbar.nvim',
dependencies = {
'lewis6991/gitsigns.nvim', -- OPTIONAL: for git status
'nvim-tree/nvim-web-devicons', -- OPTIONAL: for file icons
},
init = function() vim.g.barbar_auto_setup = false end,
opts = {
-- lazy.nvim will automatically call setup for you. put your options here, anything missing will use the default:
-- animation = true,
-- insert_at_start = true,
-- …etc.
},
}

View file

@ -0,0 +1,9 @@
return {
"sudormrfbin/cheatsheet.nvim",
dependencies = {
'nvim-telescope/telescope.nvim',
'nvim-lua/popup.nvim',
'nvim-lua/plenary.nvim',
},
config = true,
}

View file

@ -0,0 +1,11 @@
return{
"nvim-tree/nvim-tree.lua",
config = function ()
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
require('nvim-tree').setup()
vim.keymap.set('n', '<c-n>', ':NvimTreeFindFileToggle<CR>')
end
}

View file

@ -0,0 +1,8 @@
return {
"Mofiqul/dracula.nvim",
lazy = false,
priority = 1000,
config = function()
vim.cmd.colorscheme("dracula")
end,
}

View file

@ -0,0 +1,11 @@
return {
"ellisonleao/gruvbox.nvim",
priority = 1000 ,
config = function ()
require("gruvbox").setup()
vim.o.background = "dark"
vim.o.termguicolors = true
vim.cmd.colorscheme "gruvbox"
end
}

View file

@ -0,0 +1,8 @@
return {
"rebelot/kanagawa.nvim",
lazy = false,
priority = 1000,
config = function()
vim.cmd.colorscheme "kanagawa"
end,
}

View file

@ -0,0 +1,8 @@
return {
"nyoom-engineering/oxocarbon.nvim",
config = function ()
vim.o.background = "dark"
vim.o.termguicolors = true
vim.cmd.colorscheme "oxocarbon"
end
}

View file

@ -0,0 +1,10 @@
return {
-- the colorscheme should be available when starting Neovim
"folke/tokyonight.nvim",
lazy = false, -- make sure we load this during startup if it is your main colorscheme
priority = 1000, -- make sure to load this before all the other start plugins
config = function()
-- load the colorscheme here
vim.cmd.colorscheme "tokyonight-storm"
end,
}

View file

@ -0,0 +1,33 @@
return {
"goolord/alpha-nvim",
dependencies = {
"nvim-tree/nvim-web-devicons",
},
config = function()
local alpha = require("alpha")
local dashboard = require("alpha.themes.startify")
dashboard.section.header.val = {
[[ ]],
[[ ]],
[[ ]],
[[ ]],
[[  ]],
[[ ████ ██████ █████ ██ ]],
[[ ███████████ █████  ]],
[[ █████████ ███████████████████ ███ ███████████ ]],
[[ █████████ ███ █████████████ █████ ██████████████ ]],
[[ █████████ ██████████ █████████ █████ █████ ████ █████ ]],
[[ ███████████ ███ ███ █████████ █████ █████ ████ █████ ]],
[[ ██████ █████████████████████ ████ █████ █████ ████ ██████ ]],
[[ ]],
[[ ]],
[[ ]],
}
alpha.setup(dashboard.opts)
vim.cmd('autocmd User AlphaReady Neotree show')
end,
}

View file

@ -0,0 +1,49 @@
return {
"akinsho/bufferline.nvim",
after = "catppuccin",
dependencies = { "nvim-tree/nvim-web-devicons" },
version = "*",
config = function()
-- Get the color pallet of the theme flavor I am using
local color_palette = require("catppuccin.palettes").get_palette("frappe")
-- Set variables to use the color they'd use if the background was not transparent
local bg_highlight = color_palette.crust
local separator_fg = color_palette.crust
require("bufferline").setup({
highlights = require("catppuccin.groups.integrations.bufferline").get({
-- Copy settings from Catppuccin bufferline integration and override just the
-- part that is needed to make it look like it would if the background was not
-- set to transparent in catppuccin.lua
-- https://github.com/catppuccin/nvim/blob/main/lua/catppuccin/groups/integrations/bufferline.lua
custom = {
all = {
-- this makes the background behind the tabs contrast with the tabs themselves
fill = { bg = bg_highlight },
-- separators
-- I am only overriding the foreground as that is what makes the tabs look correct
separator = { fg = separator_fg },
separator_visible = { fg = separator_fg },
separator_selected = { fg = separator_fg },
offset_separator = { fg = separator_fg },
},
},
}),
options = {
mode = "buffers",
separator_style = "slant",
offsets = {
{
filetype = "neo-tree",
text = "File Explorer",
highlight = "Directory",
separator = true,
},
},
diagnostics = "nvim_lsp",
},
})
end,
}

View file

@ -0,0 +1,57 @@
return {
"catppuccin/nvim",
name = "catppuccin",
flavour = "frappe", -- latte, frappe, macchiato, mocha
lazy = false,
priority = 1000,
config = function()
require("catppuccin").setup({
transparent_background = true,
color_overrides = {
frappe = {
base = "#07042B",
mantle = "#0c0746",
crust = "#10095d",
rosewater = "#FF7F7F", -- used for cursor
},
},
custom_highlights = function(colors)
return {
Comment = { fg = colors.subtext0 },
LineNr = { fg = colors.subtext0 },
}
end,
})
vim.cmd.colorscheme("catppuccin")
end,
--[[
-- original palette from frappe:
rosewater = "#f2d5cf",
flamingo = "#eebebe",
pink = "#f4b8e4",
mauve = "#ca9ee6",
red = "#e78284",
maroon = "#ea999c",
peach = "#ef9f76",
yellow = "#e5c890",
green = "#a6d189",
teal = "#81c8be",
sky = "#99d1db",
sapphire = "#85c1dc",
blue = "#8caaee",
lavender = "#babbf1",
text = "#c6d0f5",
subtext1 = "#b5bfe2",
subtext0 = "#a5adce",
overlay2 = "#949cbb",
overlay1 = "#838ba7",
overlay0 = "#737994",
surface2 = "#626880",
surface1 = "#51576d",
surface0 = "#414559",
base = "#303446",
mantle = "#292c3c",
crust = "#232634",
--]]
}

View file

@ -0,0 +1,49 @@
return {
{
"hrsh7th/nvim-cmp",
config = function()
local cmp = require("cmp")
require("luasnip.loaders.from_vscode").lazy_load()
cmp.setup({
snippet = {
expand = function(args)
require("luasnip").lsp_expand(args.body)
end,
},
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
mapping = cmp.mapping.preset.insert({
["<C-b>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.abort(),
["<CR>"] = cmp.mapping.confirm({ select = true }),
}),
sources = cmp.config.sources({
{
name = "nvim_lsp",
entry_filter = function(entry)
return require("cmp.types").lsp.CompletionItemKind[entry:get_kind()] ~= "Text"
end,
},
{ name = "luasnip" },
}, {
{ name = "buffer" },
}),
})
end,
},
{
"hrsh7th/cmp-nvim-lsp",
},
{
"L3MON4D3/LuaSnip",
dependencies = {
"saadparwaiz1/cmp_luasnip",
"rafamadriz/friendly-snippets",
},
},
}

View file

@ -0,0 +1,65 @@
return {
"folke/edgy.nvim",
event = "VeryLazy",
opts = {
exit_when_last = false,
bottom = {
-- toggleterm / lazyterm at the bottom with a height of 40% of the screen
{
ft = "toggleterm",
size = { height = 0.2 },
-- exclude floating windows
filter = function(buf, win)
return vim.api.nvim_win_get_config(win).relative == ""
end,
},
"Trouble",
{ ft = "qf", title = "QuickFix" },
{
ft = "help",
size = { height = 20 },
-- only show help buffers
filter = function(buf)
return vim.bo[buf].buftype == "help"
end,
},
{ ft = "spectre_panel", size = { height = 0.4 } },
},
left = {
-- Neo-tree filesystem always takes half the screen height
{
title = "Neo-Tree",
ft = "neo-tree",
filter = function(buf)
return vim.b[buf].neo_tree_source == "filesystem"
end,
size = { height = 0.5 },
},
{
title = "Neo-Tree Git",
ft = "neo-tree",
filter = function(buf)
return vim.b[buf].neo_tree_source == "git_status"
end,
pinned = true,
open = "Neotree position=right git_status",
},
{
title = "Neo-Tree Buffers",
ft = "neo-tree",
filter = function(buf)
return vim.b[buf].neo_tree_source == "buffers"
end,
pinned = true,
open = "Neotree position=top buffers",
},
{
ft = "Outline",
pinned = true,
open = "SymbolsOutlineOpen",
},
-- any other neo-tree windows
"neo-tree",
},
},
}

View file

@ -0,0 +1,38 @@
return {
{
"lewis6991/gitsigns.nvim",
config = function()
require("gitsigns").setup({
current_line_blame = true,
})
vim.keymap.set("n", "<leader gp", ":Gitsigns preview_hunk<CR>", {})
end,
},
{
"tpope/vim-fugitive",
},
{
"kdheepak/lazygit.nvim",
cmd = {
"LazyGit",
"LazyGitConfig",
"LazyGitCurrentFile",
"LazyGitFilter",
"LazyGitFilterCurrentFile",
},
-- optional for floating window border decoration
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope.nvim",
},
-- setting the keybinding for LazyGit with 'keys' is recommended in
-- order to load the plugin when the command is run for the first time
keys = {
{ "<leader>lg", "<cmd>LazyGit<cr>", desc = "LazyGit" },
},
config = function()
require("telescope").load_extension("lazygit")
end,
},
}

View file

@ -0,0 +1,65 @@
return {
{
"williamboman/mason.nvim",
config = true,
},
{
"williamboman/mason-lspconfig.nvim",
config = function()
require("mason-lspconfig").setup({
ensure_installed = {
"lemminx", -- xml
"lua_ls", -- lua
"nil_ls", -- nix
"puppet", -- puppet
"ruff", -- python
},
})
end,
},
{
"neovim/nvim-lspconfig",
config = function()
local on_attach = function(_, _)
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, {})
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, {})
vim.keymap.set("n", "gd", vim.lsp.buf.definition, {})
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, {})
vim.keymap.set("n", "gr", require("telescope.builtin").lsp_references, {})
vim.keymap.set("n", "K", vim.lsp.buf.hover, {})
end
local lspconfig = require("lspconfig")
local capabilities = require("cmp_nvim_lsp").default_capabilities()
lspconfig.lemminx.setup({
capabilities = capabilities,
on_attach = on_attach,
})
lspconfig.lua_ls.setup({
capabilities = capabilities,
on_attach = on_attach,
settings = { Lua = { diagnostics = { globals = { "vim" } } } },
})
lspconfig.nil_ls.setup({
capabilities = capabilities,
on_attach = on_attach,
})
local puppet_languageserver = vim.fn.expand(
"$HOME/.local/share/nvim/mason/packages/puppet-editor-services/libexec/puppet-languageserver"
)
lspconfig.puppet.setup({
capabilities = capabilities,
on_attach = on_attach,
cmd = { puppet_languageserver, "--feature-flags=puppetstrings" },
settings = { puppet = { editorServices = { formatOnType = { enable = true } } } },
})
lspconfig.ruff.setup({ on_attach = on_attach })
end,
},
}

View file

@ -0,0 +1,19 @@
return {
"nvim-lualine/lualine.nvim",
config = function()
require("lualine").setup({
options = {
icons_enabled = true,
-- theme = "dracula-nvim",
},
sections = {
lualine_a = {
{
"filename",
path = 1,
},
},
},
})
end,
}

View file

@ -0,0 +1,24 @@
return {
"nvim-neo-tree/neo-tree.nvim",
lazy = false,
branch = "v3.x",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons",
"MunifTanjim/nui.nvim",
},
config = function()
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
vim.keymap.set("n", "<C-n>", ":Neotree toggle<CR>", {})
require("neo-tree").setup({
filesystem = {
follow_current_file = {
enabled = true,
},
hijack_netrw_behavior = "open_default",
},
follow_current_file = { enabled = true },
})
end,
}

View file

@ -0,0 +1,61 @@
return {
"folke/noice.nvim",
event = "VeryLazy",
opts = {
-- add any options here
},
dependencies = {
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
"MunifTanjim/nui.nvim",
-- OPTIONAL:
-- `nvim-notify` is only needed, if you want to use the notification view.
-- If not available, we use `mini` as the fallback
-- "rcarriga/nvim-notify",
},
config = function()
require("noice").setup({
cmdline = { enabled = true },
messages = { enabled = false },
lsp = {
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
override = {
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
["vim.lsp.util.stylize_markdown"] = true,
["cmp.entry.get_documentation"] = true,
},
},
views = {
cmdline_popup = {
position = {
row = "50%",
col = "50%",
},
size = {
width = 60,
height = "auto",
},
},
popupmenu = {
relative = "editor",
position = {
row = "61%",
col = "50%",
},
size = {
width = 60,
height = 10,
},
border = {
style = "rounded",
padding = { 0, 1 },
},
win_options = {
winhighlight = { Normal = "Normal", FloatBorder = "DiagnosticInfo" },
},
},
},
})
end,
}

View file

@ -0,0 +1,40 @@
return {
{
"jay-babu/mason-null-ls.nvim",
event = { "BufReadPre", "BufNewFile" },
dependencies = {
"williamboman/mason.nvim",
"nvimtools/none-ls.nvim",
},
config = function()
require("mason-null-ls").setup({
ensure_installed = {
"prettier", -- HTML, JS, JSON, etc.
"stylua", -- LUA
},
})
end,
},
{
-- none-ls replaces null_ls... it's weird
"nvimtools/none-ls.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
local null_ls = require("null-ls")
null_ls.setup({
sources = {
null_ls.builtins.completion.spell,
null_ls.builtins.diagnostics.puppet_lint,
null_ls.builtins.diagnostics.rubocop,
null_ls.builtins.formatting.prettier,
null_ls.builtins.formatting.puppet_lint,
null_ls.builtins.formatting.rubocop,
null_ls.builtins.formatting.stylua,
},
})
vim.keymap.set("n", "<leader>gf", vim.lsp.buf.format, {})
end,
},
}

View file

@ -0,0 +1,4 @@
return {
"nvim-tree/nvim-web-devicons",
config = true,
}

View file

@ -0,0 +1,40 @@
return {
{
"nvim-telescope/telescope.nvim",
tag = "0.1.5",
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
-- This is your opts table
require("telescope").setup({
extensions = {
["ui-select"] = {
require("telescope.themes").get_dropdown({
-- even more opts
}),
},
},
})
-- load_extension, somewhere after setup function:
require("telescope").load_extension("cheat")
require("telescope").load_extension("ui-select")
local builtin = require("telescope.builtin")
vim.keymap.set("n", "<leader>ts", ":Telescope<CR>")
vim.keymap.set("n", "<C-p>", builtin.find_files, {})
vim.keymap.set("n", "<leader><leader>", builtin.oldfiles, {})
vim.keymap.set("n", "<leader>fg", builtin.live_grep, {})
vim.keymap.set("n", "<leader>fh", builtin.help_tags, {})
end,
},
{
"nvim-telescope/telescope-cheat.nvim",
dependencies = {
"kkharji/sqlite.lua",
"nvim-telescope/telescope.nvim",
},
},
{ "nvim-telescope/telescope-symbols.nvim" },
{ "nvim-telescope/telescope-ui-select.nvim" },
}

View file

@ -0,0 +1,9 @@
return {
"folke/todo-comments.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
},
}

View file

@ -0,0 +1,5 @@
return {
"akinsho/toggleterm.nvim",
version = "*",
config = true,
}

View file

@ -0,0 +1,53 @@
return {
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
config = function()
local config = require("nvim-treesitter.configs")
config.setup({
auto_install = true,
highlight = { enable = true },
indent = { enable = true },
sync_install = false,
ensure_installed = {
"bash",
"css",
"csv",
"diff",
"dockerfile",
"git_config",
"git_rebase",
"gitattributes",
"gitignore",
"go",
"hcl",
"hocon",
"html",
"javascript",
"json",
"lua",
"make",
"markdown",
"markdown_inline",
"nix",
"passwd",
"promql",
"puppet",
"python",
"regex",
--"pip_requirements",
"ruby",
"sql",
"ssh_config",
"terraform",
"toml",
"tsv",
"typescript",
"udev",
"vim",
"vimdoc",
"xml",
"yaml",
},
})
end,
}

View file

@ -0,0 +1,5 @@
return {
"folke/trouble.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
config = true,
}

View file

@ -0,0 +1,3 @@
return {
"christoomey/vim-tmux-navigator",
}

View file

@ -0,0 +1,4 @@
return {
"folke/which-key.nvim",
config = true,
}

View file

@ -0,0 +1,35 @@
{
"name": "Beanbag-Mathias",
"comment": "Inspired by colors from EndeavourOS",
"background-color": "#07042B",
"badge-color": "#FFFFFF",
"bold-color": "#FFFFFF",
"cursor-background-color": "#FF7F7F",
"cursor-foreground-color": "#07042B",
"foreground-color": "#E3E3EA",
"highlight-background-color": "#000000",
"highlight-foreground-color": "#FFFFFF",
"palette": [
"#000000",
"#E52222",
"#A6E32D",
"#FC951E",
"#C48DFF",
"#FA2573",
"#67D9F0",
"#F2F2F2",
"#555555",
"#FF5555",
"#55FF55",
"#FFFF55",
"#5555FF",
"#FF55FF",
"#55FFFF",
"#FFFFFF"
],
"use-badge-color": false,
"use-bold-color": false,
"use-cursor-color": true,
"use-highlight-color": false,
"use-theme-colors": false
}

View file

@ -0,0 +1,99 @@
{
"layer": "top", // Waybar at top layer
// "position": "bottom", // Waybar position (top|bottom|left|right)
"height": 30, // Waybar height (to be removed for auto height)
// "width": 1280, // Waybar width
"spacing": 4, // Gaps between modules (4px)
// Choose the order of the modules
"modules-left": ["hyprland/workspaces"],
"modules-center": ["hyprland/window"],
"modules-right": ["idle_inhibitor", "pulseaudio", "network", "cpu", "memory", "backlight", "keyboard-state", "battery", "clock", "tray"],
"keyboard-state": {
"numlock": true,
"capslock": true,
"format": "{name} {icon}",
"format-icons": {
"locked": "",
"unlocked": ""
}
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
// "icon-size": 21,
"spacing": 10
},
"clock": {
// "timezone": "America/New_York",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format-alt": "{:%Y-%m-%d}"
},
"cpu": {
"format": "{usage}% ",
"tooltip": false
},
"memory": {
"format": "{}% "
},
"temperature": {
// "thermal-zone": 2,
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
"critical-threshold": 80,
// "format-critical": "{temperatureC}°C {icon}",
"format": "{temperatureF}°F {icon}",
"format-icons": ["", "", ""]
},
"backlight": {
// "device": "acpi_video1",
"format": "{percent}% {icon}",
"format-icons": ["", "", "", "", "", "", "", "", ""]
},
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{capacity}% {icon}",
"format-charging": "{capacity}% ",
"format-plugged": "{capacity}% ",
"format-alt": "{time} {icon}",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
"format-icons": ["", "", "", "", ""]
},
"network": {
// "interface": "wlp2*", // (Optional) To force the use of this interface
"format-wifi": "{essid} ({signalStrength}%) ",
"format-ethernet": "{ipaddr}/{cidr} ",
"tooltip-format": "{ifname} via {gwaddr} ",
"format-linked": "{ifname} (No IP) ",
"format-disconnected": "Disconnected ⚠",
"format-alt": "{ifname}: {ipaddr}/{cidr}"
},
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
"format": "{volume}% {icon} {format_source}",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": " {format_source}",
"format-source": "{volume}% ",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
},
"on-click": "pavucontrol"
}
}

View file

@ -0,0 +1,164 @@
@import "frappe.css";
* {
/* `otf-font-awesome` is required to be installed for icons */
font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif;
font-size: 13px;
color: @text;
}
window#waybar {
background-color: shade(@base, 0.9);
border-bottom: 3px solid alpha(@crust, 0.3);
transition-property: background-color;
transition-duration: .5s;
}
window#waybar.hidden {
opacity: 0.2;
}
button {
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
background: inherit;
box-shadow: inset 0 -3px #ffffff;
}
#workspaces button {
padding: 0 5px;
background-color: transparent;
}
#workspaces button:hover {
background: rgba(0, 0, 0, 0.2);
}
#workspaces button.focused {
background-color: #64727D;
box-shadow: inset 0 -3px #ffffff;
}
#workspaces button.urgent {
background-color: #eb4d4b;
}
#mode {
background-color: #64727D;
border-bottom: 3px solid #ffffff;
}
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#mpd {
padding: 0 10px;
}
#window,
#workspaces {
margin: 0 4px;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#battery.charging, #battery.plugged {
color: #26A65B;
}
@keyframes blink {
to {
background-color: #ffffff;
color: #000000;
}
}
#battery.critical:not(.charging) {
background-color: #f53c3c;
color: #ffffff;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
label:focus {
background-color: #000000;
}
#temperature.critical {
background-color: #eb4d4b;
}
#tray {
background-color: #2980b9;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: #eb4d4b;
}
#idle_inhibitor.activated {
background-color: #ecf0f1;
color: #2d3436;
}
#language {
padding: 0 5px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state {
padding: 0 0px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state > label {
padding: 0 5px;
}
#keyboard-state > label.locked {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad.empty {
background-color: transparent;
}

View file

@ -0,0 +1,68 @@
; xfce4-terminal GtkAccelMap rc-file -*- scheme -*-
; this file is an automated accelerator map dump
;
; (gtk_accel_path "<Actions>/terminal-window/copy-html" "")
; (gtk_accel_path "<Actions>/terminal-window/new-tab" "<Primary><Shift>t")
; (gtk_accel_path "<Actions>/terminal-window/reset" "")
; (gtk_accel_path "<Actions>/terminal-window/next-tab" "<Primary>Page_Down")
; (gtk_accel_path "<Actions>/terminal-window/search-prev" "")
; (gtk_accel_path "<Actions>/terminal-window/close-tab" "<Primary><Shift>w")
; (gtk_accel_path "<Actions>/terminal-window/help-menu" "")
; (gtk_accel_path "<Actions>/terminal-window/tabs-menu" "")
; (gtk_accel_path "<Actions>/terminal-window/zoom-in-alt" "<Primary>KP_Add")
; (gtk_accel_path "<Actions>/terminal-widget/shift-pagedown" "<Shift>Page_Down")
; (gtk_accel_path "<Actions>/terminal-window/show-toolbar" "")
; (gtk_accel_path "<Actions>/terminal-window/move-tab-right" "<Primary><Shift>Page_Down")
; (gtk_accel_path "<Actions>/terminal-window/zoom-in" "<Primary>plus")
; (gtk_accel_path "<Actions>/terminal-window/fullscreen" "F11")
; (gtk_accel_path "<Actions>/terminal-window/about" "")
; (gtk_accel_path "<Actions>/terminal-window/paste-selection" "")
; (gtk_accel_path "<Actions>/terminal-window/paste" "<Primary><Shift>v")
; (gtk_accel_path "<Actions>/terminal-widget/shift-down" "<Shift>Down")
; (gtk_accel_path "<Actions>/terminal-window/new-window" "<Primary><Shift>n")
; (gtk_accel_path "<Actions>/terminal-window/edit-menu" "")
; (gtk_accel_path "<Actions>/terminal-window/goto-tab-9" "<Alt>9")
; (gtk_accel_path "<Actions>/terminal-window/reset-and-clear" "")
; (gtk_accel_path "<Actions>/terminal-window/toggle-menubar" "F10")
; (gtk_accel_path "<Actions>/terminal-window/paste-selection-alt" "")
; (gtk_accel_path "<Actions>/terminal-window/set-title-color" "")
; (gtk_accel_path "<Actions>/terminal-window/zoom-reset" "<Primary>0")
; (gtk_accel_path "<Actions>/terminal-window/goto-tab-8" "<Alt>8")
; (gtk_accel_path "<Actions>/terminal-window/detach-tab" "")
; (gtk_accel_path "<Actions>/terminal-window/copy" "<Primary><Shift>c")
; (gtk_accel_path "<Actions>/terminal-window/show-borders" "")
; (gtk_accel_path "<Actions>/terminal-window/undo-close-tab" "<Primary><Shift>d")
; (gtk_accel_path "<Actions>/terminal-window/open-folder" "")
; (gtk_accel_path "<Actions>/terminal-window/select-all" "<Primary><Shift>a")
; (gtk_accel_path "<Actions>/terminal-window/search-next" "")
; (gtk_accel_path "<Actions>/terminal-window/goto-tab-7" "<Alt>7")
; (gtk_accel_path "<Actions>/terminal-window/show-menubar" "")
; (gtk_accel_path "<Actions>/terminal-window/move-tab-left" "<Primary><Shift>Page_Up")
; (gtk_accel_path "<Actions>/terminal-window/zoom-reset-alt" "<Primary>KP_0")
; (gtk_accel_path "<Actions>/terminal-window/read-only" "")
; (gtk_accel_path "<Actions>/terminal-window/file-menu" "")
; (gtk_accel_path "<Actions>/terminal-window/zoom-out-alt" "<Primary>KP_Subtract")
; (gtk_accel_path "<Actions>/terminal-window/search" "<Primary><Shift>f")
; (gtk_accel_path "<Actions>/terminal-window/goto-tab-6" "<Alt>6")
(gtk_accel_path "<Actions>/terminal-window/preferences" "<Primary><Shift>p")
; (gtk_accel_path "<Actions>/terminal-window/prev-tab" "<Primary>Page_Up")
; (gtk_accel_path "<Actions>/terminal-window/set-title" "<Primary><Shift>s")
; (gtk_accel_path "<Actions>/terminal-window/terminal-menu" "")
; (gtk_accel_path "<Actions>/terminal-window/copy-input" "")
; (gtk_accel_path "<Actions>/terminal-window/goto-tab-5" "<Alt>5")
; (gtk_accel_path "<Actions>/terminal-window/contents" "F1")
; (gtk_accel_path "<Actions>/terminal-window/paste-alt" "<Primary><Shift>Insert")
; (gtk_accel_path "<Actions>/terminal-widget/shift-up" "<Shift>Up")
; (gtk_accel_path "<Actions>/terminal-window/goto-tab-4" "<Alt>4")
; (gtk_accel_path "<Actions>/terminal-window/scroll-on-output" "")
; (gtk_accel_path "<Actions>/terminal-window/zoom-out" "<Primary>minus")
; (gtk_accel_path "<Actions>/terminal-widget/shift-pageup" "<Shift>Page_Up")
; (gtk_accel_path "<Actions>/terminal-window/zoom-menu" "")
; (gtk_accel_path "<Actions>/terminal-window/close-window" "<Primary><Shift>q")
; (gtk_accel_path "<Actions>/terminal-window/goto-tab-3" "<Alt>3")
; (gtk_accel_path "<Actions>/terminal-window/last-active-tab" "")
; (gtk_accel_path "<Actions>/terminal-window/save-contents" "")
; (gtk_accel_path "<Actions>/terminal-window/goto-tab-2" "<Alt>2")
; (gtk_accel_path "<Actions>/terminal-window/close-other-tabs" "")
; (gtk_accel_path "<Actions>/terminal-window/view-menu" "")
; (gtk_accel_path "<Actions>/terminal-window/goto-tab-1" "<Alt>1")

View file

@ -0,0 +1,36 @@
[Configuration]
MiscAlwaysShowTabs=FALSE
MiscBell=FALSE
MiscBellUrgent=FALSE
MiscBordersDefault=TRUE
MiscCursorBlinks=FALSE
MiscCursorShape=TERMINAL_CURSOR_SHAPE_BLOCK
MiscDefaultGeometry=120x24
MiscInheritGeometry=FALSE
MiscMenubarDefault=TRUE
MiscMouseAutohide=FALSE
MiscMouseWheelZoom=TRUE
MiscToolbarDefault=FALSE
MiscConfirmClose=TRUE
MiscCycleTabs=TRUE
MiscTabCloseButtons=TRUE
MiscTabCloseMiddleClick=TRUE
MiscTabPosition=GTK_POS_TOP
MiscHighlightUrls=TRUE
MiscMiddleClickOpensUri=FALSE
MiscCopyOnSelect=FALSE
MiscShowRelaunchDialog=TRUE
MiscRewrapOnResize=TRUE
MiscUseShiftArrowsToScroll=FALSE
MiscSlimTabs=FALSE
MiscNewTabAdjacent=FALSE
MiscSearchDialogOpacity=100
MiscShowUnsafePasteDialog=TRUE
ColorForeground=#e3e3ea
ColorCursor=#ff7f7f
ColorPalette=#000000;#e52222;#a6e32d;#fc951e;#c48dff;#fa2573;#67d9f0;#f2f2f2;#555555;#ff5555;#55ff55;#ffff55;#5555ff;#ff55ff;#55ffff;#ffffff
ColorBackground=#08052b
ColorCursorUseDefault=FALSE
BackgroundMode=TERMINAL_BACKGROUND_TRANSPARENT
BackgroundDarkness=0.950000

View file

@ -0,0 +1,97 @@
gandi_dns_pat: ENC[AES256_GCM,data:81tlAE6e655+RgKZVJgwYg6V59VtMmuVk5spkGZq1U6AgxYXO3wvsA==,iv:Dp5csrqHIAYloi5XkrBgDMqeIX/W+JFJ1avKbTnEU/Y=,tag:QjhdX4gv9OmWtQp7r06+RA==,type:str]
gandi_api: ENC[AES256_GCM,data:YsdDMk75miIKO4LkCZjfwJw6gxfrmsTL,iv:BOPRxB661sPJnUH1AUKEALIJfBeyAHZpkWJEDbY+7i8=,tag:TvtW7qhPbOqi9kKDcIe28w==,type:str]
restic_env: ENC[AES256_GCM,data:FCYR8tkClRwfcjUotcr28D6uRz7sNihn50nw38CaYnqOD/U9+5kU0iAPSvqAbeuw+xUoKKKAPAfMHI12dPTYt17Wz1N7i4a+MRkiIR9pjyv5KZTK59G+,iv:jStc8GMbZUQUgooZiRdImSZskdckYN1cRm2gsKbUyYY=,tag:HpQQIj1j7fjCmxkSeY/k4g==,type:str]
restic_repo: ENC[AES256_GCM,data:kCoNYVKwB87W4h5doa3IXj4n,iv:jKEw/Hki/tp3RSTsRB4dlg593I5B4pCLBav84ADCh70=,tag:+GFF5vHOVw0r/G8BbhcCjw==,type:str]
restic_password: ENC[AES256_GCM,data:PfQsxJul1Qpt3WQoUEI941l+yng3lVjhDd8=,iv:U5KjhcVqyksN2ay19RBjNhYIB31tUbfNRIqCEx/+Wbc=,tag:jsoU+B1mjAprPK+M5I0pAQ==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1rd55wsu0hhvxk25tm69d9h57z0z0u6556x4ypg09muj3vh4yqs5qaw23nu
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4bUFtRmZja1ZVK1Blbnk3
Q0h6cVBNU0t0K1puY1ZIbUVjMmhpSTdVMjFFCms1WE9ZQ3U2b0Q5bysvQlQxT0ty
QjhMTFkyUFB3UlUyb0dla1lvM1laZlUKLS0tIGlBTyt2b0hhNkRsa2t6ajBxa1U5
UGtrYk43S1FqZUlvT0tOcnlJVXg0TzQKnaloZ21vCJUFpg7kg7A/FkXGhEyKHfbv
GJ6bHLWzgH6Dr78lJoNjwvXdz2Ypld1Rk7ELxU55kxSuBKMIX5e0NQ==
-----END AGE ENCRYPTED FILE-----
- recipient: age180w4c04kga07097u0us6d72aslnv2523hx64x8fzgzu4tccrxuyqa50hpm
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2VWlqS1VkeWh1WnFDeVd6
dENWTHZmR2x3RXZTSlhUbmdabE9jU1FuV1EwCkh4ekZzS0ZnbVhVcEhoMUFUUzNG
cXhMMlZ3b0ZqWjFRTnJPc0VHNVIxMlkKLS0tIGlaOWhPdmJTV21jdWVhWHp6K21T
Wk84YWlWeGE3S09ZU0dEeXNYYVZ0dmMKcbtPczNboSE2q23B/1DBsE/wlpyOXcp6
GFpwHvG19JyuTTBanXdimMTycrmaBZtQkyjhKT267Ap9hADVStlOZg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1g4h5a4f5xfle2a6np8te342pphs3mcuan60emz2zp87nrwjzl5yquhr5vl
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQaUVlZnBkeDIvZlZHRHZa
OGVjM3NwUUtkTmd5ZlJlanpNWFMzekFwQzBFCnJQeThwbzNhUVNTRmVKNGxvRDBM
OTlYL1lnenpTUk41YnVCdnlHMzU5RTgKLS0tIHdmODhCUW95WW1DZTduOFkzdGVN
bHZIYitEdktkdG5yYUVXL3puV2xxNG8KRJGCGOfQIkh5HIlhU+KOWmyxOI4iEwE5
hPpeafdtQIeYUPxRZ9LYapXxryjvm0smwgU1sAww7h6rk7pOuhKCGQ==
-----END AGE ENCRYPTED FILE-----
- recipient: age1g24zhwvgenpc4wqejt63thvgd4rn5x9n7nnwwme7dm83nfqpp93se2vmq4
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBhc0YwWlA2Nko3dTgwcFF5
UkVpdHBGanRzYnQ0ZFVFNzg0eHpYQkQzMVc0CjR1NnNwa0RkbGMycGRIK1lKVnVn
cXBURFl2WTNxSlV3ZUFnemhMYnNFVDgKLS0tIEVrQVNXZDFuODg3NytuZ3gwcWxY
TFpmZFJEWWFlQWdZUlNxaE1ETXdzTlkKMNVpzuDykFeSoZ5zDLsswdNfTjEjYLPl
p8rffgia2ixVMGhGEHBZKGo6ST3+aeYNhzB2qaLMP8Dj8Jqs1+P+Ng==
-----END AGE ENCRYPTED FILE-----
- recipient: age15xlw5vnnjdx2ypz6rq0mqcywuaj3yx8y6lrgf95satafqf7y4qus6rv6ck
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzd0JxcSt3WWg0aFloREZu
RldneXFYTjl1U014RXhZQXVxTzBBMkpwbmhrClJ5TmFUMXhCWGY5TVNzazVzczEz
U3FYOCtyZE9KNmR0dzZ3UUxkaEVQREkKLS0tIHlsaVd5WDUzWWVoWVYzZ3ZVSVcw
VDkvQWViUDdVY045dmRrMjRtMjhFWjAKCoBQXpY1wjNqQIYDB14sA3IEKqSZsJBH
POi1HhW1sxc8SKnJ/ZJX0dir9/KMRcUZO5u/7I+hqe/W5014kOD3+Q==
-----END AGE ENCRYPTED FILE-----
- recipient: age1awdf9h0avajf57cudx0rjfmxu2wlxw8wf3sa7yvfk8rp4j6taecsu74x77
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHZTlnS0p5V2oxQnVoRUJt
R3JrYXBSbEloMk9EZ1JEL1ZKT3Nobk9ycEdBCnMySkpYVzNsS1VIWFA3Ui9vQzR3
RWppUElDLzRTc0lUbVpOR0NjSlVJUWcKLS0tIER1QVZzcmZ1WmlVNmtoaUMrR2Nx
VkVxa2Ztc3dVVjltSDd0TzVtN2l1SGsKU4Ipyi2EsnglhEF/pZEKprvI/Bb4eocL
oGsYMOyahIMkcFVai+7R74MC+y9GdCklnDVGuVZjaIc2pylzmP6Acg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1rt72txg22w8y3cdvq9w7zff0cas6xtkplpj36kxnevfnrtn82f6ss7yw7d
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHTkZVbWNkcktyUDNKZDJM
VW1DUElwTGVucXlTUEtVb0hUM2ltbm10M0hNCjNyVzBmTUpGWHV1UkZwdkhMM0pw
ZE5VMTBVRHlSNUNvdWUzM0NhTG00LzAKLS0tIDRYSFFWV2tPMW9MQndjV0ZzY0lr
WXFMb0xUYUZiY2NLUmh4S1U3b29SNUEKKghGvX5G9jfOlEFYsRVSE3lLKCaKpz+F
AoglIjgdaQTrqbAaLM8DG79d+VgzHrZdgeobenGtNSF2WRz/3VDNBg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1zz34qx3n3dj63sva24kaymetv3apn58lafjq4dl6zw7xxachuyts00mhck
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6azlFM1JGZ0JDY3RZdkRS
dXdtZUE2QnJVK3dmc3VxbGtDTldlb0dmTVRvClA3Y0x0ZDY3WmtqTWp5b2VRRGdF
VmkyM2dLUXJyeDdNUVpIZlpvdVE3UEEKLS0tIGRuZzEzRkZtT0N4Vjd3TUgyQ29T
Y000cS9ZblJZTkpRMzhNYnZRNVpmODgK9MpExCq5d5PN8HCJPa7WxViLL9pbWv3m
qGfW2iz4N4UH/3mq5zx67jNwtwOKd7B9L4yX+oGgsYewQnLFhr5Xng==
-----END AGE ENCRYPTED FILE-----
- recipient: age1rpy8edlpgxuf6w75cvlqexuq2xe4c49h9t2ge6jhc3fzczp8vfasnjelwq
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4c0tmWGVBSlMwdkhLTC81
bFBIbWZML2JiVDhrcldVdU1McHl0Ui9nUkhNCm9Ob3hEbGRhTzBreG5hTmFOS1lZ
UE16QzJ4Rjl4NVVMZ0ZzWUxRWm9CM1EKLS0tIHY2QUVNY1Q1Q0dpVDB6K3RsUlpQ
N2VYRDNrUk5wd3JQRVZabUhlRTF2UHMKCjCaXJ394MfsOKSWCuRVa8EA2pcLu1TU
VaXATezktIU+ZrXOrpwRc9u9uac9V3PmxykpzjEvyo2BQ7Ji0wOeEw==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2024-09-11T17:22:16Z"
mac: ENC[AES256_GCM,data:WbuN9UpP0OP69ta29VW2LlCFfyTWI3v8IiwUu3tLOxtY3gjdJLZTpaG2hBR985qjLYL3MT7eR7eWp4p99DAKupVBvA6tJl8/+N9+0W/dapcec+qv7u9wRHcFjP9wtggq66vUdGqH8IIHYuGlIhAvCbDouoXuLoFIcB2i2lYNB4Q=,iv:u+KsBgHxLgwSgFLYtY0F6HjCUbSCvNAatIIwrCGGyJg=,tag:bHO4vovTLPVK2vsQvliwzQ==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.8.1

View file

@ -0,0 +1,131 @@
{ pkgs, hostname, username, ... }: {
environment = {
shells = with pkgs; [ bash zsh ];
pathsToLink = [
"/Applications"
"/share/zsh"
];
systemPackages = with pkgs; [
age
bandwhich
coreutils
hugo
mas
nmap
openjdk
sops
ssh-to-age
];
};
homebrew = {
enable = true;
onActivation = {
autoUpdate = true;
cleanup = "zap";
upgrade = true;
};
taps = [
"homebrew/cask-fonts"
"null-dev/firefox-profile-switcher"
"theseal/ssh-askpass"
];
brews = [
"fastfetch"
"ffmpeg"
"firefox-profile-switcher-connector"
"ssh-askpass"
"telnet"
];
casks = [
"1password"
"1password-cli"
"amethyst"
"angry-ip-scanner"
"appcleaner"
"audacity"
"balenaetcher"
"bartender"
#"displaylink"
"element"
"firefox"
"font-hack-nerd-font"
"font-inconsolata-g-for-powerline"
"font-source-code-pro-for-powerline"
"gitkraken"
"gitkraken-cli"
"handbrake"
"imageoptim"
"iterm2"
"keepingyouawake"
"libreoffice"
"logseq"
"makemkv"
"meld"
"MKVToolNix"
"nextcloud"
"onlyoffice"
"raycast"
"signal"
"slack"
"sonos"
"tailscale"
"visual-studio-code"
"vivaldi"
"zoom"
];
masApps = {
"1Password for Safari" = 1569813296;
"BetterSnapTool" = 417375580;
"Brother iPrint&Scan" = 1193539993;
"Home Assistant" = 1099568401;
"MQTT Explorer" = 1455214828;
};
};
networking.hostName = "${hostname}";
nix = {
settings = {
bash-prompt-prefix = "(nix:$name)\040";
build-users-group = "nixbld";
experimental-features = [
"auto-allocate-uids"
"flakes"
"nix-command"
];
# extra-substituters = [
# ];
# extra-trusted-public-keys = [
# ];
substituters = [
"https://cache.nixos.org" # default one
"https://cache.flox.dev"
"https://nixpkgs-terraform.cachix.org"
];
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" # default one
"flox-cache-public-1:7F4OyH7ZCnFhcze3fJdfyXYLQw/aV7GEed86nQ7IsOs="
"nixpkgs-terraform.cachix.org-1:8Sit092rIdAVENA3ZVeH9hzSiqI/jng6JiCrQ1Dmusw="
];
trusted-users = [ "@admin" "${username}" ];
};
extraOptions = ''
# Generated by https://github.com/DeterminateSystems/nix-installer, version 0.11.0.
extra-nix-path = nixpkgs=flake:nixpkgs
# Uncoment below after validation bug is fixed
#upgrade-nix-store-path-url = https://install.determinate.systems/nix-upgrade/stable/universal
'';
};
programs = {
zsh.enable = true;
};
services.nix-daemon.enable = true;
users.users.${username} = {
home = "/Users/${username}";
shell = pkgs.zsh;
};
}

View file

@ -0,0 +1,29 @@
{ username, ... }: {
# dawrwin-specific shell config
programs.zsh = {
initExtra = ''
function otpon() {
osascript -e 'tell application "yubiswitch" to KeyOn'
}
function otpoff() {
osascript -e 'tell application "yubiswitch" to KeyOff'
}
# Include Puppet's normal bin folder since it is installed via Homebrew
export PATH=$PATH:/opt/puppetlabs/bin
export PATH=$PATH:/opt/puppetlabs/pdk/bin
export PATH=$PATH:/opt/puppetlabs/puppet/bin
'';
oh-my-zsh.plugins = [ "macos" ];
shellAliases = {
currentwifi = "networksetup -getairportnetwork en0 |cut -d ':' -f2- | cut -d ' ' -f2-";
nixdiff = "cd ~/repos/dots && darwin-rebuild build --flake . && nvd diff /run/current-system result";
nixup = "darwin-rebuild switch --flake ~/repos/dots";
uwgconnect = "networksetup -setairportnetwork en0 SecureWest";
uwgforget = "networksetup -removepreferredwirelessnetwork en0 SecureWest";
ykey = "pkill -9 gpg-agent && source ~/.zshrc; ssh-add -L";
};
};
sops.age.keyFile = "/Users/${username}/Library/Application Support/sops/age/keys.txt";
}

View file

@ -0,0 +1,30 @@
{ username, ... }: {
home.stateVersion = "23.11";
imports = [
../home.nix
../../common
../../common/all-gui.nix
];
programs = {
go = {
enable = true;
goPath = "go";
};
k9s.enable = true;
zsh = {
initExtra = ''
eval $(brew shellenv)
'';
};
};
sops = {
defaultSopsFile = ./secrets.yaml;
secrets = {
i2cssh_config.path = "/Users/${username}/.i2csshrc";
local_git_config.path = "/Users/${username}/.gitconfig-local";
local_private_env.path = "/Users/${username}/.private-env";
};
};
}

View file

@ -0,0 +1,24 @@
tailscale_key: ENC[AES256_GCM,data:rWN6mW6LC/EjMTbMjXkCmMQYEehEbViScKeaLEOpR6VSZJFD0aZI9wh5yKcQeaUT0BiJIzITsUxj,iv:aCqdsW7JPq6Q2kFl6ZciwIQfzAbs9LvhWilbEI8okAc=,tag:U0p4UND/n26ZF17keSL0DA==,type:str]
i2cssh_config: ENC[AES256_GCM,data:MwYLGFribitABOcQJFsEgd3vD4qsEdz0grg2ISE0LB3IT2usVRgUfnI/5g7pK4ON/bxz+mpkncDCZep8wBrd4+c316320u/HkxTEQYFU+zXGuFnkF380fx8klQdBel7JsJJKwa5b1M20Sqj9QYNXtwEw8zs+vG/VGdzWLKHlQosvUrdhT0LGntu+/RIgVhC3B6aEp79mbz8xOh8BrCpi4hVPFm8x5sUC++wR+aBvIg+bsOOU8T9OoW3bnEs8ucnvni9RYN7r5YCOllyhaFekNp6KiFBLd4h3A2r2UWBnRjlg5LKJc5aG6Z6XMHaz6NaGpZUw+fMHVZx7t7QL7IwvNpFp/+8oeWzBz/qecfxzVkGvBYqtPPsnv9mNUYZux6Fd0FETMbPI7dmUQrmUK2Y+L8Qw55cpL+BVJkV693DaKIJwQL3VIC6Z/NKqTXPdBBS9hWHjYWfGBmbiAiaU5X2Z3cz8YaEsCnC4OMqqlALLmzZ0crD/HXc6756U/i63GVsx4GiBTfs8Rvy+7GZOyjBhgvHZK6g4ShVZHDtNMInHlfyFzOGC03smZhgseF9ivVVXAMa6AI8OHU5678Fkb6/lD4e0Vqk77Icaj+Yte6EKmHK3Pq9ctYyJLNBFlFCreBWTcxrV+a6WLxh6QkcHmUYLfHKp/cG3nypPKRIaBkvbYOUYLuPI1IRrzdndALv5uRBhxKJEL+ukBv0EVm9y9sR1uimTQYB9tCRE7+2JfgBhcQwbUbIlW4NmZeOx9/9jAoqlID0PTS/2QsnbYI00X7c3GibGpLVVY86X6S4hW/HaHEq8jB5JiFDlQRGDLy/YV8MM1USsqZpjJHlZy8AWQRH3Ta47cXYfwCOD2eTC2pouS938qAaq48m3mPMuzCWlbiExXRrdE2Noek49/pfwCduplEebxb3FLr16lRHdcI+M8Hb9W5iXAJFYBx9FzFkIewDKz4UxL+MKX88K4t5l5ZTG6IT0OqCekZ3M/9scYbhrpgU2sWp3ADgmLRwL8iMxgwFygl1ZxdQ9C0IS8LwgLCfAn3wVKZlUogRdBkV52iHbkUVG4tEqUZxhJUALFW3P1A==,iv:udLgI4t3M3KDNfcA+WkUFLAe523/+O9tE/LGol1UBQA=,tag:6v1XUPTpgcjfmcgak9YKAQ==,type:str]
local_git_config: ENC[AES256_GCM,data:CQjq1bFnc8jdv2bM3Ez4hEgC6CtH5xQx4nFhqSRG7oV8DtMLQOwYklQt9Fra,iv:Wxw1or1+QaROvqe7QzTRi9oJSjrPtk0N60kq7jDfdWM=,tag:eODZOCeZMM/HoeRSeeNVLA==,type:str]
local_private_env: ENC[AES256_GCM,data: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,iv:47L7sa1Vt4hCdBXFlD/7oLNKjJ/i0WXz2F0a6JJiie8=,tag:kIAESlg2frqNl5zemsQc3w==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1zz34qx3n3dj63sva24kaymetv3apn58lafjq4dl6zw7xxachuyts00mhck
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3VEdwRHBZWWt2bERMV1Zm
K0VHb2NFVXBmMFpWYUh2V2VoYXRueTVuUER3CkdKK1pZb21qRjZvTFdlSzdjREpD
NXdwbjdKb2JrNXRTQUtiU0tlaWpzWUUKLS0tIE9Yck5NZC9IcTFFTDUwQytsTUdU
YndNc25Xemxrd2VXSStlbTJjZFBOR0UKe6wxJBlS7YZJXW3f/rlmKanqu9SeYXYB
qxEU+fMDfQ/R+jRo6fGRtNnnY3nowZP+hSYYuGT9SRFwqYR1M3xeqw==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2024-10-30T12:08:30Z"
mac: ENC[AES256_GCM,data:ko6uVSGiB0n3u/83EWrdvqj5O0E5gXIVbqW1+ihSmLjD0/DT7dF2+Ab36lnKLZTM+OKk72o5RZQ4vXNJsvLpjOXcqxUgo0Wv7cMymDKjrRMmC3kGAQImtBNXW/fifmZGogGzj8iAdaOoVrhTOoUdCYnqt865X3zG9cA6ZeRTYoo=,iv:yLH7l142mpogxPYx5m8riGA1kg3sBiHwE3Ojykq220Q=,tag:VbyvXFfD3+KRswocDJpteA==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.8.1