diff options
33 files changed, 2395 insertions, 0 deletions
diff --git a/home-manager/.config/home-manager/common/dwl_3/config.h b/home-manager/.config/home-manager/common/dwl_3/config.h new file mode 100644 index 0000000..30c8ec2 --- /dev/null +++ b/home-manager/.config/home-manager/common/dwl_3/config.h @@ -0,0 +1,135 @@ +#include <X11/XF86keysym.h> + +/* appearance */ +static const int sloppyfocus = 1; /* focus follows mouse */ +static const unsigned int borderpx = 1; /* border pixel of windows */ +static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */ +static const float rootcolor[] = {0.3, 0.3, 0.3, 1.0}; +static const float bordercolor[] = {0.5, 0.5, 0.5, 1.0}; +static const float focuscolor[] = {1.0, 0.0, 0.0, 1.0}; + +/* tagging */ +static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; + +static const Rule rules[] = { + /* app_id title tags mask isfloating monitor */ + /* examples: + { "Gimp", NULL, 0, 1, -1 }, + */ + { "firefox", NULL, 1 << 8, 0, -1 }, +}; + +/* layout(s) */ +static const Layout layouts[] = { + /* symbol arrange function */ + { "[]=", tile }, + { "><>", NULL }, /* no layout function means floating behavior */ + { "[M]", monocle }, +}; + +/* monitors */ +static const MonitorRule monrules[] = { + /* name mfact nmaster scale layout rotate/reflect */ + /* example of a HiDPI laptop monitor: + { "eDP-1", 0.5, 1, 2, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL }, + */ + /* defaults */ + { NULL, 0.55, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL }, +}; + +/* keyboard */ +static const struct xkb_rule_names xkb_rules = { + /* can specify fields: rules, model, layout, variant, options */ + /* example: + .options = "ctrl:nocaps", + */ + .options = "caps:escape", +}; + +static const int repeat_rate = 25; +static const int repeat_delay = 600; + +/* Trackpad */ +static const int tap_to_click = 1; +static const int natural_scrolling = 0; + +/* If you want to use the windows key change this to WLR_MODIFIER_LOGO */ +#define MODKEY WLR_MODIFIER_ALT +#define TAGKEYS(KEY,SKEY,TAG) \ + { MODKEY, KEY, view, {.ui = 1 << TAG} }, \ + { MODKEY|WLR_MODIFIER_CTRL, KEY, toggleview, {.ui = 1 << TAG} }, \ + { MODKEY|WLR_MODIFIER_SHIFT, SKEY, tag, {.ui = 1 << TAG} }, \ + { MODKEY|WLR_MODIFIER_CTRL|WLR_MODIFIER_SHIFT,SKEY,toggletag, {.ui = 1 << TAG} } + +/* helper for spawning shell commands in the pre dwm-5.0 fashion */ +#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } } + + +/* commands */ +static const char *termcmd[] = { "foot", NULL }; +static const char *menucmd[] = { "wofi", "--show", "run", NULL }; +static const char *volmute[] = { "amixer", "set", "Master", "toggle", NULL }; +static const char *voldown[] = { "amixer", "set", "Master", "10%-", NULL }; +static const char *volup[] = { "amixer", "set", "Master", "10%+", NULL }; +static const char *brightdown[] = { "light", "-U", "10", NULL }; +static const char *brightup[] = { "light", "-A", "10", NULL }; +static const char *hibernatecmd[] = { "systemctl", "hibernate", NULL }; + +static const Key keys[] = { + /* Note that Shift changes certain key codes: c -> C, 2 -> at, etc. */ + /* modifier key function argument */ + { MODKEY, XKB_KEY_p, spawn, {.v = menucmd} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Return, spawn, {.v = termcmd} }, + { MODKEY, XKB_KEY_j, focusstack, {.i = +1} }, + { MODKEY, XKB_KEY_k, focusstack, {.i = -1} }, + { MODKEY, XKB_KEY_i, incnmaster, {.i = +1} }, + { MODKEY, XKB_KEY_d, incnmaster, {.i = -1} }, + { MODKEY, XKB_KEY_h, setmfact, {.f = -0.05} }, + { MODKEY, XKB_KEY_l, setmfact, {.f = +0.05} }, + { MODKEY, XKB_KEY_Return, zoom, {0} }, + { MODKEY, XKB_KEY_Tab, view, {0} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_C, killclient, {0} }, + { MODKEY, XKB_KEY_t, setlayout, {.v = &layouts[0]} }, + { MODKEY, XKB_KEY_f, setlayout, {.v = &layouts[1]} }, + { MODKEY, XKB_KEY_m, setlayout, {.v = &layouts[2]} }, + { MODKEY, XKB_KEY_space, setlayout, {0} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} }, + { MODKEY, XKB_KEY_e, togglefullscreen, {0} }, + { MODKEY, XKB_KEY_0, view, {.ui = ~0} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_parenright, tag, {.ui = ~0} }, + { MODKEY, XKB_KEY_comma, focusmon, {.i = WLR_DIRECTION_LEFT} }, + { MODKEY, XKB_KEY_period, focusmon, {.i = WLR_DIRECTION_RIGHT} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_less, tagmon, {.i = WLR_DIRECTION_LEFT} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_greater, tagmon, {.i = WLR_DIRECTION_RIGHT} }, + // custom binds + { 0, XKB_KEY_XF86AudioMute, spawn, {.v = volmute} }, + { 0, XKB_KEY_XF86AudioLowerVolume, spawn, {.v = voldown} }, + { 0, XKB_KEY_XF86AudioRaiseVolume, spawn, {.v = volup} }, + { 0, XKB_KEY_XF86MonBrightnessDown, spawn, {.v = brightdown} }, + { 0, XKB_KEY_XF86MonBrightnessUp, spawn, {.v = brightup} }, + { 0, XKB_KEY_Print, spawn, SHCMD("slurp | grim -g - - | wl-copy && notify-send 'Copied selection to clipboard!' && wl-paste > $HOME/pics/$(date +'%Y-%m-%d-%H%M%S_grim.png')") }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Delete, spawn, {.v = hibernatecmd} }, + TAGKEYS( XKB_KEY_1, XKB_KEY_exclam, 0), + TAGKEYS( XKB_KEY_2, XKB_KEY_at, 1), + TAGKEYS( XKB_KEY_3, XKB_KEY_numbersign, 2), + TAGKEYS( XKB_KEY_4, XKB_KEY_dollar, 3), + TAGKEYS( XKB_KEY_5, XKB_KEY_percent, 4), + TAGKEYS( XKB_KEY_6, XKB_KEY_asciicircum, 5), + TAGKEYS( XKB_KEY_7, XKB_KEY_ampersand, 6), + TAGKEYS( XKB_KEY_8, XKB_KEY_asterisk, 7), + TAGKEYS( XKB_KEY_9, XKB_KEY_parenleft, 8), + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Q, quit, {0} }, + + /* Ctrl-Alt-Backspace and Ctrl-Alt-Fx used to be handled by X server */ + { WLR_MODIFIER_CTRL|WLR_MODIFIER_ALT,XKB_KEY_Terminate_Server, quit, {0} }, +#define CHVT(n) { WLR_MODIFIER_CTRL|WLR_MODIFIER_ALT,XKB_KEY_XF86Switch_VT_##n, chvt, {.ui = (n)} } + CHVT(1), CHVT(2), CHVT(3), CHVT(4), CHVT(5), CHVT(6), + CHVT(7), CHVT(8), CHVT(9), CHVT(10), CHVT(11), CHVT(12), +}; + +static const Button buttons[] = { + { MODKEY, BTN_LEFT, moveresize, {.ui = CurMove} }, + { MODKEY, BTN_MIDDLE, togglefloating, {0} }, + { MODKEY, BTN_RIGHT, moveresize, {.ui = CurResize} }, +}; + diff --git a/home-manager/.config/home-manager/common/dwl_4/config.h b/home-manager/.config/home-manager/common/dwl_4/config.h new file mode 100644 index 0000000..e0875a0 --- /dev/null +++ b/home-manager/.config/home-manager/common/dwl_4/config.h @@ -0,0 +1,191 @@ +#include <X11/XF86keysym.h> + +/* appearance */ +static const int sloppyfocus = 1; /* focus follows mouse */ +static const int bypass_surface_visibility = 0; /* 1 means idle inhibitors will disable idle tracking even if it's surface isn't visible */ +static const unsigned int borderpx = 1; /* border pixel of windows */ +static const float rootcolor[] = {0.3, 0.3, 0.3, 1.0}; +static const float bordercolor[] = {0.5, 0.5, 0.5, 1.0}; +static const float focuscolor[] = {1.0, 0.0, 0.0, 1.0}; +/* To conform the xdg-protocol, set the alpha to zero to restore the old behavior */ +static const float fullscreen_bg[] = {0.1, 0.1, 0.1, 1.0}; +#define TAGCOUNT (9) + +/* tagging */ +static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; + +static const Rule rules[] = { + /* app_id title tags mask isfloating monitor */ + /* examples: + { "Gimp", NULL, 0, 1, -1 }, + */ + { "firefox", NULL, 1 << 8, 0, -1 }, +}; + +/* layout(s) */ +static const Layout layouts[] = { + /* symbol arrange function */ + { "[]=", tile }, + { "><>", NULL }, /* no layout function means floating behavior */ + { "[M]", monocle }, +}; + +/* monitors */ +static const MonitorRule monrules[] = { + /* name mfact nmaster scale layout rotate/reflect */ + /* example of a HiDPI laptop monitor: + { "eDP-1", 0.5, 1, 2, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL }, + */ + /* defaults */ + { NULL, 0.55, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL }, +}; + +/* keyboard */ +static const struct xkb_rule_names xkb_rules = { + /* can specify fields: rules, model, layout, variant, options */ + /* example: + .options = "ctrl:nocaps", + */ + .options = "caps:escape", +}; + +static const int repeat_rate = 25; +static const int repeat_delay = 600; + +/* Trackpad */ +static const int tap_to_click = 1; +static const int tap_and_drag = 1; +static const int drag_lock = 1; +static const int natural_scrolling = 0; +static const int disable_while_typing = 1; +static const int left_handed = 0; +static const int middle_button_emulation = 0; +/* You can choose between: +LIBINPUT_CONFIG_SCROLL_NO_SCROLL +LIBINPUT_CONFIG_SCROLL_2FG +LIBINPUT_CONFIG_SCROLL_EDGE +LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN +*/ +static const enum libinput_config_scroll_method scroll_method = LIBINPUT_CONFIG_SCROLL_2FG; + +/* You can choose between: +LIBINPUT_CONFIG_CLICK_METHOD_NONE +LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS +LIBINPUT_CONFIG_CLICK_METHOD_CLICKFINGER +*/ +static const enum libinput_config_click_method click_method = LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS; + +/* You can choose between: +LIBINPUT_CONFIG_SEND_EVENTS_ENABLED +LIBINPUT_CONFIG_SEND_EVENTS_DISABLED +LIBINPUT_CONFIG_SEND_EVENTS_DISABLED_ON_EXTERNAL_MOUSE +*/ +static const uint32_t send_events_mode = LIBINPUT_CONFIG_SEND_EVENTS_ENABLED; + +/* You can choose between: +LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT +LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE +*/ +static const enum libinput_config_accel_profile accel_profile = LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE; +static const double accel_speed = 0.0; +/* You can choose between: +LIBINPUT_CONFIG_TAP_MAP_LRM -- 1/2/3 finger tap maps to left/right/middle +LIBINPUT_CONFIG_TAP_MAP_LMR -- 1/2/3 finger tap maps to left/middle/right +*/ +static const enum libinput_config_tap_button_map button_map = LIBINPUT_CONFIG_TAP_MAP_LRM; + +/* If you want to use the windows key for MODKEY, use WLR_MODIFIER_LOGO */ +#define MODKEY WLR_MODIFIER_ALT + +#define TAGKEYS(KEY,SKEY,TAG) \ + { MODKEY, KEY, view, {.ui = 1 << TAG} }, \ + { MODKEY|WLR_MODIFIER_CTRL, KEY, toggleview, {.ui = 1 << TAG} }, \ + { MODKEY|WLR_MODIFIER_SHIFT, SKEY, tag, {.ui = 1 << TAG} }, \ + { MODKEY|WLR_MODIFIER_CTRL|WLR_MODIFIER_SHIFT,SKEY,toggletag, {.ui = 1 << TAG} } + +/* helper for spawning shell commands in the pre dwm-5.0 fashion */ +#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } } + + +/* commands */ +static const char *termcmd[] = { "foot", NULL }; +static const char *menucmd[] = { "wofi", "--show", "run", NULL }; +static const char *rangercmd[] = { "foot", "-e", "ranger", NULL }; +static const char *volmute[] = { "amixer", "set", "Master", "toggle", NULL }; +static const char *voldown[] = { "amixer", "set", "Master", "10%-", NULL }; +static const char *volup[] = { "amixer", "set", "Master", "10%+", NULL }; +static const char *brightdown[] = { "light", "-U", "10", NULL }; +static const char *brightup[] = { "light", "-A", "10", NULL }; +static const char *hibernatecmd[] = { "systemctl", "hibernate", NULL }; +static const char *lockcmd[] = { "swaylock", "-i", "/tmp/bg", NULL }; +static const char scrotcmd[] = "slurp | \ + grim -g - - | \ + wl-copy --type image/png && \ + notify-send 'Copied selection to clipboard!' && \ + wl-paste --type image > $HOME/pics/$(date +'%Y-%m-%d-%H%M%S_grim.png')"; + +static const Key keys[] = { + /* Note that Shift changes certain key codes: c -> C, 2 -> at, etc. */ + /* modifier key function argument */ + { MODKEY, XKB_KEY_p, spawn, {.v = menucmd} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Return, spawn, {.v = termcmd} }, + { MODKEY, XKB_KEY_j, focusstack, {.i = +1} }, + { MODKEY, XKB_KEY_k, focusstack, {.i = -1} }, + { MODKEY, XKB_KEY_i, incnmaster, {.i = +1} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_i, incnmaster, {.i = -1} }, + { MODKEY, XKB_KEY_a, rotatetags, {.i = -1} }, + { MODKEY, XKB_KEY_d, rotatetags, {.i = 1} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_A, rotatetags, {.i = -2} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_D, rotatetags, {.i = 2} }, + { MODKEY, XKB_KEY_h, setmfact, {.f = -0.05} }, + { MODKEY, XKB_KEY_l, setmfact, {.f = +0.05} }, + { MODKEY, XKB_KEY_Return, zoom, {0} }, + { MODKEY, XKB_KEY_Tab, view, {0} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_C, killclient, {0} }, + { MODKEY, XKB_KEY_t, setlayout, {.v = &layouts[0]} }, + { MODKEY, XKB_KEY_f, setlayout, {.v = &layouts[1]} }, + { MODKEY, XKB_KEY_m, setlayout, {.v = &layouts[2]} }, + { MODKEY, XKB_KEY_space, setlayout, {0} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} }, + { MODKEY, XKB_KEY_e, togglefullscreen, {0} }, + { MODKEY, XKB_KEY_r, spawn, {.v = rangercmd} }, + { MODKEY, XKB_KEY_0, view, {.ui = ~0} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_parenright, tag, {.ui = ~0} }, + { MODKEY, XKB_KEY_comma, focusmon, {.i = WLR_DIRECTION_LEFT} }, + { MODKEY, XKB_KEY_period, focusmon, {.i = WLR_DIRECTION_RIGHT} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_less, tagmon, {.i = WLR_DIRECTION_LEFT} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_greater, tagmon, {.i = WLR_DIRECTION_RIGHT} }, + // custom binds + { 0, XKB_KEY_XF86AudioMute, spawn, {.v = volmute} }, + { 0, XKB_KEY_XF86AudioLowerVolume, spawn, {.v = voldown} }, + { 0, XKB_KEY_XF86AudioRaiseVolume, spawn, {.v = volup} }, + { 0, XKB_KEY_XF86MonBrightnessDown, spawn, {.v = brightdown} }, + { 0, XKB_KEY_XF86MonBrightnessUp, spawn, {.v = brightup} }, + { 0, XKB_KEY_Print, spawn, SHCMD(scrotcmd) }, + { 0, XKB_KEY_F1, spawn, SHCMD(scrotcmd) }, + { MODKEY, XKB_KEY_Delete, spawn, {.v = lockcmd} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Delete, spawn, {.v = hibernatecmd} }, + TAGKEYS( XKB_KEY_1, XKB_KEY_exclam, 0), + TAGKEYS( XKB_KEY_2, XKB_KEY_at, 1), + TAGKEYS( XKB_KEY_3, XKB_KEY_numbersign, 2), + TAGKEYS( XKB_KEY_4, XKB_KEY_dollar, 3), + TAGKEYS( XKB_KEY_5, XKB_KEY_percent, 4), + TAGKEYS( XKB_KEY_6, XKB_KEY_asciicircum, 5), + TAGKEYS( XKB_KEY_7, XKB_KEY_ampersand, 6), + TAGKEYS( XKB_KEY_8, XKB_KEY_asterisk, 7), + TAGKEYS( XKB_KEY_9, XKB_KEY_parenleft, 8), + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Q, quit, {0} }, + + /* Ctrl-Alt-Backspace and Ctrl-Alt-Fx used to be handled by X server */ + { WLR_MODIFIER_CTRL|WLR_MODIFIER_ALT,XKB_KEY_Terminate_Server, quit, {0} }, +#define CHVT(n) { WLR_MODIFIER_CTRL|WLR_MODIFIER_ALT,XKB_KEY_XF86Switch_VT_##n, chvt, {.ui = (n)} } + CHVT(1), CHVT(2), CHVT(3), CHVT(4), CHVT(5), CHVT(6), + CHVT(7), CHVT(8), CHVT(9), CHVT(10), CHVT(11), CHVT(12), +}; + +static const Button buttons[] = { + { MODKEY, BTN_LEFT, moveresize, {.ui = CurMove} }, + { MODKEY, BTN_MIDDLE, togglefloating, {0} }, + { MODKEY, BTN_RIGHT, moveresize, {.ui = CurResize} }, +}; + diff --git a/home-manager/.config/home-manager/common/fonts/ComicMono/ComicMono-Bold.ttf b/home-manager/.config/home-manager/common/fonts/ComicMono/ComicMono-Bold.ttf Binary files differnew file mode 100644 index 0000000..e03f41e --- /dev/null +++ b/home-manager/.config/home-manager/common/fonts/ComicMono/ComicMono-Bold.ttf diff --git a/home-manager/.config/home-manager/common/fonts/ComicMono/ComicMono.ttf b/home-manager/.config/home-manager/common/fonts/ComicMono/ComicMono.ttf Binary files differnew file mode 100644 index 0000000..9bc7354 --- /dev/null +++ b/home-manager/.config/home-manager/common/fonts/ComicMono/ComicMono.ttf diff --git a/home-manager/.config/home-manager/common/foot/foot.ini b/home-manager/.config/home-manager/common/foot/foot.ini new file mode 100644 index 0000000..8b95524 --- /dev/null +++ b/home-manager/.config/home-manager/common/foot/foot.ini @@ -0,0 +1,7 @@ +term=xterm-256color +font=Comic Mono:size=12 +dpi-aware=yes + +[colors] +alpha=0.7 + diff --git a/home-manager/.config/home-manager/common/mako/config b/home-manager/.config/home-manager/common/mako/config new file mode 100644 index 0000000..52a21f1 --- /dev/null +++ b/home-manager/.config/home-manager/common/mako/config @@ -0,0 +1,25 @@ +sort=-time +layer=overlay +background-color=#2e3440 +width=300 +height=110 +border-size=2 +border-color=#88c0d0 +border-radius=15 +icons=0 +max-icon-size=64 +default-timeout=5000 +ignore-timeout=1 +font=monospace 14 + +[urgency=low] +border-color=#cccccc + +[urgency=normal] +border-color=#d08770 + +[urgency=high] +border-color=#bf616a +default-timeout=0 + + diff --git a/home-manager/.config/home-manager/common/nvim/init.vim b/home-manager/.config/home-manager/common/nvim/init.vim new file mode 100644 index 0000000..5a14928 --- /dev/null +++ b/home-manager/.config/home-manager/common/nvim/init.vim @@ -0,0 +1,40 @@ +nnoremap <SPACE> <Nop> +let mapleader = " " +colorscheme tokyonight-moon +set number relativenumber +set cursorline + +" Keymaps +" save +nmap <Leader>, :w<cr> +" exit to normal mode +inoremap jk <Esc> +" Toggle line chars view +noremap <Leader>l :set list!<CR> + +" Telescope Keymaps +map <Leader><Space> :Telescope find_files<CR> +map <Leader>/ :Telescope live_grep<CR> +map <Leader>g :Telescope git_files<CR> +map <Leader>: :Telescope command_history<CR> + +" Indent blocks in visual mode. +vnoremap K xkP`[V`] +vnoremap J xp`[V`] +vnoremap L >gv +vnoremap H <gv + +" Move beteween splits +map <C-j> <C-W>j +map <C-k> <C-W>k +map <C-h> <C-W>h +map <C-l> <C-W>l + +" Start n³ in the current buffers directory +let g:nnn#action = { + \ '<c-t>': 'tab split', + \ '<c-s>': 'split', + \ '<c-v>': 'vsplit' } +nnoremap <Leader>n :NnnPicker %:p:h<CR> + +autocmd BufRead,BufNewFile *.yaml set filetype=yaml.ansible diff --git a/home-manager/.config/home-manager/common/nvim/plugins/indent-blankline.lua b/home-manager/.config/home-manager/common/nvim/plugins/indent-blankline.lua new file mode 100644 index 0000000..4953cc8 --- /dev/null +++ b/home-manager/.config/home-manager/common/nvim/plugins/indent-blankline.lua @@ -0,0 +1,3 @@ +vim.opt.listchars:append "eol:↴" + +require("ibl").setup() diff --git a/home-manager/.config/home-manager/common/nvim/plugins/leap.lua b/home-manager/.config/home-manager/common/nvim/plugins/leap.lua new file mode 100644 index 0000000..c0aeeef --- /dev/null +++ b/home-manager/.config/home-manager/common/nvim/plugins/leap.lua @@ -0,0 +1 @@ +require('leap').add_default_mappings() diff --git a/home-manager/.config/home-manager/common/nvim/plugins/lspconfig.lua b/home-manager/.config/home-manager/common/nvim/plugins/lspconfig.lua new file mode 100644 index 0000000..bf6bef0 --- /dev/null +++ b/home-manager/.config/home-manager/common/nvim/plugins/lspconfig.lua @@ -0,0 +1,149 @@ +local servers = {'ansiblels', 'dockerls', 'pylsp', 'bashls', 'jsonls'} +require('nvim-autopairs').setup({ + disable_filetype = { "TelescopePrompt" , "vim" }, +}) +require("mason").setup() +require("mason-lspconfig").setup { + ensure_installed = servers +} +require("neoconf").setup() + +local cmp = require('cmp') +local cmp_nvim_lsp = require('cmp_nvim_lsp') +local cmp_autopairs = require('nvim-autopairs.completion.cmp') +local luasnip = require('luasnip') +local lspconfig = require('lspconfig') + +local capabilities = cmp_nvim_lsp.default_capabilities() + +local opts = { noremap=true, silent=true } +--vim.keymap.set('n', '<space>le', vim.diagnostic.open_float, opts) +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) +vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts) +--vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts) +vim.keymap.set("n", "<leader>xx", "<cmd>TroubleToggle<cr>", opts) +vim.keymap.set("n", "<leader>xw", "<cmd>TroubleToggle workspace_diagnostics<cr>", opts) +vim.keymap.set("n", "<leader>xe", "<cmd>TroubleToggle document_diagnostics<cr>", opts) +vim.keymap.set("n", "<leader>xl", "<cmd>TroubleToggle loclist<cr>", opts) +vim.keymap.set("n", "<leader>xq", "<cmd>TroubleToggle quickfix<cr>", opts) +vim.keymap.set("n", "gR", "<cmd>TroubleToggle lsp_references<cr>", opts) + +local on_attach = function(client, bufnr) + -- Mappings. + local bufopts = { noremap=true, silent=true, buffer=bufnr } + vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) + vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) + vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) + vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts) + vim.keymap.set('n', '<space>K', vim.lsp.buf.signature_help, bufopts) + vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts) + vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts) + vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts) + vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) + vim.keymap.set('n', '<space>f', vim.lsp.buf.formatting, bufopts) +end + +cmp.setup({ + snippet = { + expand = function(args) + 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({ + behavior = cmp.ConfirmBehavior.Replace, + select = true + }), + ['<Tab>'] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, { 'i', 's' }), + ['<S-Tab>'] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { 'i', 's' }), + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'luasnip' }, -- For luasnip users. + }, { + { name = 'buffer' }, + }) +}) + +cmp.event:on( + 'confirm_done', + cmp_autopairs.on_confirm_done() +) + +local settings = { + pylsp = { + pylsp = { + plugins = { + autopep8 = { enabled = false }, + flake8 = { enabled = false }, + pycodestyle = { enabled = false }, + pydocstyle = { enabled = false }, + pyflakes = { enabled = false }, + yapf = { enabled = false }, + pylint = { enabled = false }, + black = { enabled = false }, + } + } + }, + bashls = {}, + ansiblels = { + ansible = { + ansible = { + useFullyQualifiedCollectionNames = true + }, + executionEnvironment = { + containerEngine = "docker", + enabled = true, + image = "ghcr.io/ansible/creator-ee:latest", + pull = { + policy = "missing" + }, + }, + completion = { + provideRedirectModules = true, + provideModuleOptionAliases = true + }, + validation = { + enabled = true, + lint = { + enabled = true, + arguments = "-c ansible-lint.yaml" + } + } + } + } +} + +for _,lsp in ipairs(servers) do + lspconfig[lsp].setup{ + on_attach = on_attach, + capabilities = capabilities, + settings = settings[lsp], + } +end + +require("luasnip.loaders.from_vscode").lazy_load() diff --git a/home-manager/.config/home-manager/common/nvim/plugins/lualine.lua b/home-manager/.config/home-manager/common/nvim/plugins/lualine.lua new file mode 100644 index 0000000..90e6db2 --- /dev/null +++ b/home-manager/.config/home-manager/common/nvim/plugins/lualine.lua @@ -0,0 +1 @@ +require('lualine').setup() diff --git a/home-manager/.config/home-manager/common/nvim/plugins/telescope.lua b/home-manager/.config/home-manager/common/nvim/plugins/telescope.lua new file mode 100644 index 0000000..6892243 --- /dev/null +++ b/home-manager/.config/home-manager/common/nvim/plugins/telescope.lua @@ -0,0 +1,16 @@ +local telescope = require('telescope') +local actions = require('telescope.actions') + +local trouble = require("trouble.sources.telescope") + +telescope.setup { + defaults = { + file_ignore_patterns = { "^.git/" }, + mappings = { + i = { ["<c-o>"] = trouble.open }, + n = { ["<c-o>"] = trouble.open }, + }, + }, +} + +telescope.load_extension('fzf') diff --git a/home-manager/.config/home-manager/common/nvim/plugins/trouble.lua b/home-manager/.config/home-manager/common/nvim/plugins/trouble.lua new file mode 100644 index 0000000..cf7a27b --- /dev/null +++ b/home-manager/.config/home-manager/common/nvim/plugins/trouble.lua @@ -0,0 +1,3 @@ +require('trouble').setup { + use_diagnostic_signs = true +} diff --git a/home-manager/.config/home-manager/common/scripts/fixwlr b/home-manager/.config/home-manager/common/scripts/fixwlr new file mode 100755 index 0000000..d9f4230 --- /dev/null +++ b/home-manager/.config/home-manager/common/scripts/fixwlr @@ -0,0 +1,3 @@ +#!/bin/sh +systemctl --user import-environment WAYLAND_DISPLAY +systemctl --user restart xdg-desktop-portal diff --git a/home-manager/.config/home-manager/common/scripts/spiceconnect b/home-manager/.config/home-manager/common/scripts/spiceconnect new file mode 100755 index 0000000..9e410ac --- /dev/null +++ b/home-manager/.config/home-manager/common/scripts/spiceconnect @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +remote-viewer ~/Downloads/"$(ls -1t ~/Downloads | head -n1)" diff --git a/home-manager/.config/home-manager/common/scripts/start b/home-manager/.config/home-manager/common/scripts/start new file mode 100755 index 0000000..c8b1235 --- /dev/null +++ b/home-manager/.config/home-manager/common/scripts/start @@ -0,0 +1,33 @@ +#!/bin/sh +# This a sort-of auto-start script. +# Run this from a tty to start my graphical env. +# + +#export XDG_CURRENT_DESKTOP=dwl +#export XDG_SESSION_TYPE=wayland +#export XDG_SESSION_DESKTOP=dwl +# +#systemctl --user import-environment XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE +# +#exec dwl -s 'somebar' & +# +## set blocks on bar +#exec /usr/local/bin/someblocks & +# +## give wayland session some time to init +#sleep 1 +# +#exec mako & +# +#sleep 1 +# +## set bg +#exec walp & +# +## set monitor to be left of the laptop display +#exec wlr-randr --output DP-1 --pos 0,0 & +# +## fix for screen-sharing +#exec fixwlr +# +nix run github:guibou/nixGL#nixGLIntel -- Hyprland diff --git a/home-manager/.config/home-manager/common/scripts/walp b/home-manager/.config/home-manager/common/scripts/walp new file mode 100755 index 0000000..9bac47e --- /dev/null +++ b/home-manager/.config/home-manager/common/scripts/walp @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +pkill wbg || echo "No wbg process was running." + +WALLPAPERS_HOME=${1:-$HOME/pics/wallpapers} + +# Get a random image file from the dir. +RAND_BG=$(find "$WALLPAPERS_HOME" -type f -name "*.jpeg" -o -name "*.jpg" -o -name "*.png" | shuf | head -n1) + +# Store the chosen bg +cp -a "${RAND_BG}" /tmp/bg + +WBG_PATH="$(command -v wbg || echo "$HOME"/.nix-profile/bin/wbg)" +echo "WBG is $WBG_PATH" + +if [[ ! -f "$WBG_PATH" ]]; then + ehco "WBG is not installed. Exiting." + exit 1 +else + # Set the image file as the background. + notify-send "Setting background." + "${WBG_PATH}" "${RAND_BG}" & +fi diff --git a/home-manager/.config/home-manager/common/someblocks/blocks.h b/home-manager/.config/home-manager/common/someblocks/blocks.h new file mode 100644 index 0000000..dd342aa --- /dev/null +++ b/home-manager/.config/home-manager/common/someblocks/blocks.h @@ -0,0 +1,13 @@ +//Modify this file to change what commands output to your statusbar, and recompile using the make command. +static const Block blocks[] = { + /*Icon*/ /*Command*/ /*Update Interval*/ /*Update Signal*/ + {"", "amixer sget 'Master' | grep Right | awk -F'[][]' '{print $2$4}' | sed '2q;d'", 1, 0}, + {"", "nmcli -f DEVICE,NAME --terse con show", 30, 0}, + {"", "free -h | awk '/^Mem/ { print $3\"/\"$2 }' | sed s/i//g", 30, 0}, + {"", "acpi | awk -F' ' '{print $2, $4, $3}' | tr -d ',' | tr '\n' ';'", 30, 0}, + {"", "date '+%b %d (%a) %I:%M:%S%p'", 5, 0}, +}; + +//sets delimeter between status commands. NULL character ('\0') means no delimeter. +static char delim[] = " | "; +static unsigned int delimLen = 5; diff --git a/home-manager/.config/home-manager/common/waybar/config b/home-manager/.config/home-manager/common/waybar/config new file mode 100644 index 0000000..04ec64c --- /dev/null +++ b/home-manager/.config/home-manager/common/waybar/config @@ -0,0 +1,78 @@ +{ + "layer": "top", // Waybar at top layer + "height": 30, // Waybar height (to be removed for auto height) + "spacing": 4, // Gaps between modules (4px) + "modules-left": ["hyprland/workspaces"], + "modules-center": ["hyprland/window"], + "modules-right": ["pulseaudio", "network", "cpu", "memory", "battery", "clock", "tray"], + "hyprland/workspaces": { + "format": "{name}", + "format-icons": { + "active": "", + "default": "", + } + }, + "hyprland/window": { + "max-length": 200, + "format": "👉 {}", + "separate-outputs": true + }, + "tray": { + // "icon-size": 21, + "spacing": 10 + }, + "clock": { + "timezone": "America/Toronto", + "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>", + "format-alt": "{:%Y-%m-%d}" + }, + "cpu": { + "format": "{usage}% ", + "tooltip": false + }, + "memory": { + "format": "{}% " + }, + "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" + }, +} diff --git a/home-manager/.config/home-manager/common/waybar/style.css b/home-manager/.config/home-manager/common/waybar/style.css new file mode 100644 index 0000000..fe58f76 --- /dev/null +++ b/home-manager/.config/home-manager/common/waybar/style.css @@ -0,0 +1,74 @@ +* { + font-family: "Font Awesome 6 Free", Roboto, Helvetica, Arial, sans-serif; + font-size: 14px; +} + +window#waybar { + background: rgba(43, 48, 59, 0.5); + border-bottom: 3px solid rgba(100, 114, 125, 0.5); + color: white; + transition-property: background-color; + transition-duration: .5s; +} + +tooltip { + background: rgba(43, 48, 59, 0.5); + border: 1px solid rgba(100, 114, 125, 0.5); +} +tooltip label { + color: white; +} + +#workspaces button { + padding: 0 5px; + background: transparent; + color: white; + border-bottom: 3px solid transparent; +} + +#workspaces button.focused { + background: #64727D; + border-bottom: 3px solid white; +} + +#workspaces button.active { + background: rgba(43, 48, 59, 0.5); + border-bottom: 3px solid white; +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#mode, #clock, #battery, #pulseaudio, #network, #memory, #cpu { + padding: 0 10px; +} + +#mode { + background: #64727D; + border-bottom: 3px solid white; +} + +#clock { + background-color: #64727D; +} + +#battery { + background-color: white; + color: black; +} + +#battery.charging { + color: white; + background-color: #26A65B; +} + +#battery.warning:not(.charging) { + background: #f53c3c; + color: white; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} diff --git a/home-manager/.config/home-manager/common/wofi/style.css b/home-manager/.config/home-manager/common/wofi/style.css new file mode 100644 index 0000000..ba73e91 --- /dev/null +++ b/home-manager/.config/home-manager/common/wofi/style.css @@ -0,0 +1,58 @@ +#entry { + border-radius: 3px; + padding: 2px 3px 2px 3px; +} + +#entry:selected { + background-color: #5e81ac; +} + +#text:selected { + color: #d8dee9; +} + +#window { + padding: 2px; + background-color: rgba(53, 59, 73, 0.97); + border: 3px solid #3b4252; + border-radius: 2px; + font-family: 'Inter Nerd Font','FuraCode Nerd Font Mono'; + font-size: 48px; +} + +#input { + border: 2px solid #5e81ac; + background-color: #4c566a; + color: #d8dee9; + padding: 3px 5px 3px 5px; + border-radius: 5px; +} + +#inner-box { + color: #d8dee9; + padding: 2px; + background-color: transparent; +} + +#outer-box { + margin: 15px; + background-color: transparent; +} + +#scroll { + margin-top: 10px; + background-color: transparent; + border: none; +} + +#text { + padding: 3px; + background-color: transparent; +} + +#img { + background-color: transparent; + padding: 5px; +} + + diff --git a/home-manager/.config/home-manager/flake.lock b/home-manager/.config/home-manager/flake.lock new file mode 100644 index 0000000..2f1e96c --- /dev/null +++ b/home-manager/.config/home-manager/flake.lock @@ -0,0 +1,65 @@ +{ + "nodes": { + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1720470846, + "narHash": "sha256-7ftA4Bv5KfH4QdTRxqe8/Hz2YTKo+7IQ9n7vbNWgv28=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "2fb5c1e0a17bc6059fa09dc411a43d75f35bb192", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nixos-hardware": { + "locked": { + "lastModified": 1720429258, + "narHash": "sha256-d6JI5IgJ1xdrk7DvYVx7y8ijcYz5I1nhCwOiDP6cq00=", + "owner": "NixOS", + "repo": "nixos-hardware", + "rev": "72d3c007024ce47d838bb38693c8773812f54bf2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "master", + "repo": "nixos-hardware", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1720418205, + "narHash": "sha256-cPJoFPXU44GlhWg4pUk9oUPqurPlCFZ11ZQPk21GTPU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "655a58a72a6601292512670343087c2d75d859c1", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixos-hardware": "nixos-hardware", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/home-manager/.config/home-manager/flake.nix b/home-manager/.config/home-manager/flake.nix new file mode 100644 index 0000000..778e281 --- /dev/null +++ b/home-manager/.config/home-manager/flake.nix @@ -0,0 +1,66 @@ +{ + description = "NixOS configuration"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + home-manager.url = "github:nix-community/home-manager"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + nixos-hardware.url = "github:NixOS/nixos-hardware/master"; + }; + + outputs = inputs@{ nixpkgs, home-manager, nixos-hardware, ... }: { + # NixOS + Home Manager + nixosConfigurations = { + "art-sr" = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + ./per-user/kdam0-home/configuration.nix + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.kdam0 = import ./per-user/kdam0-home/home.nix; + + # Optionally, use home-manager.extraSpecialArgs to pass + # arguments to home.nix + } + ]; + }; + "art" = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + ./per-user/kdam0-art/configuration.nix + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.kdam0 = import ./per-user/kdam0-art/home.nix; + + # Optionally, use home-manager.extraSpecialArgs to pass + # arguments to home.nix + } + ]; + }; + }; + + # Home Manager Only + homeConfigurations = { + "kdam0" = home-manager.lib.homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages."x86_64-linux"; + modules = [ + ./per-user/kdam0-work/home.nix + ]; + + # Optionally use extraSpecialArgs + # to pass through arguments to home.nix + }; + "kdam0@testing-deb" = home-manager.lib.homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages."x86_64-linux"; + modules = [ + ./per-user/kdam0-deb/home.nix + ]; + }; + }; + + }; +} diff --git a/home-manager/.config/home-manager/per-user/kdam0-art/configuration.nix b/home-manager/.config/home-manager/per-user/kdam0-art/configuration.nix new file mode 100644 index 0000000..21e925a --- /dev/null +++ b/home-manager/.config/home-manager/per-user/kdam0-art/configuration.nix @@ -0,0 +1,125 @@ +{ config, lib, pkgs, ... }: +{ + imports = + [ + ./hardware-configuration.nix + ./hosts.nix + ]; + + boot.loader.grub.enable = true; + boot.loader.grub.device = "/dev/sda"; + + networking.hostName = "art"; + networking.networkmanager.enable = true; + + time.timeZone = "America/Toronto"; + + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + #keyMap = "us"; + useXkbConfig = true; # use xkb.options in tty. + }; + + # Enable sound. + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + wireplumber.enable = true; + # media-session.enable = false; + jack.enable = true; + systemWide = false; + }; + + users.users.kdam0 = { + isNormalUser = true; + extraGroups = [ + "wheel" + "networkmanager" + "audio" + "video" + "docker" + "libvirtd" + ]; + packages = with pkgs; [ + tree + ]; + shell = pkgs.zsh; + }; + + environment.systemPackages = with pkgs; [ + vim + neovim + wget + git + rsync + htop + bmon + alsa-utils + docker-buildx + docker-compose + wireguard-tools + cacert + openssl.dev + (python3.withPackages (ps: with ps; [ + pip + regex + pyopenssl + ])) + ]; + + virtualisation.docker = { + enable = true; + enableOnBoot = true; + rootless = { + enable = true; + setSocketVariable = true; + }; + }; + + programs.mtr.enable = true; + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + programs.zsh.enable = true; + programs.hyprland.enable = true; + + # List services that you want to enable: + services.printing.enable = true; + services.openssh.enable = true; + services.thermald.enable = true; + services.tlp.enable = true; + services.logind.lidSwitch = "suspend-then-hibernate"; + services.gvfs.enable = true; + #services.gnome.gnome-keyring.enable = true; + + security.polkit.enable = true; + security.pam.services = { + login.gnupg.enable = true; + #gdm.enableGnomeKeyring = true; + #hyprland.enableGnomeKeyring = true; + }; + + powerManagement.enable = true; + + networking.firewall.enable = false; + + systemd.sleep.extraConfig = '' + AllowSuspend=yes + AllowHybridSleep=no + AllowHibernation=yes + AllowSuspendThenHibernate=yes + HibernateDelaySec=1m + ''; + + nix.settings.experimental-features = ["nix-command" "flakes"]; + nix.settings.auto-optimise-store = true; + + system.stateVersion = "23.11"; # DO NOT CHANGE + system.autoUpgrade.enable = true; + system.autoUpgrade.allowReboot = true; +} diff --git a/home-manager/.config/home-manager/per-user/kdam0-art/hardware-configuration.nix b/home-manager/.config/home-manager/per-user/kdam0-art/hardware-configuration.nix new file mode 100644 index 0000000..e8eb415 --- /dev/null +++ b/home-manager/.config/home-manager/per-user/kdam0-art/hardware-configuration.nix @@ -0,0 +1,37 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "ehci_pci" "ahci" "usb_storage" "sd_mod" "sdhci_pci" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ config.boot.kernelPackages.rtl8821au ]; + boot.resumeDevice = "/dev/disk/by-label/swap"; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/4d71526e-b296-49a2-ab2b-3c7a2c970f83"; + fsType = "ext4"; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/7f4fb8f6-2fac-4b0e-8ed5-7d30e492545b"; } + ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp0s25.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + +} diff --git a/home-manager/.config/home-manager/per-user/kdam0-art/home.nix b/home-manager/.config/home-manager/per-user/kdam0-art/home.nix new file mode 100644 index 0000000..84ff666 --- /dev/null +++ b/home-manager/.config/home-manager/per-user/kdam0-art/home.nix @@ -0,0 +1,354 @@ +{ config, pkgs, libs, ...}: +{ + home.username = "kdam0"; + home.homeDirectory = "/home/kdam0"; + home.sessionPath = [ + "$HOME/.config/nixpkgs/common/scripts" + ]; + home.sessionVariables = { + EDITOR = "nvim"; + TERM = "xterm-256color"; + }; + home.shellAliases = { + l = "ls -l"; + ll = "ls -al"; + ".." = "cd .."; + v = "nvim $@"; + r = "ranger $@"; + gst = "git status"; + cnix = "nvim ~/.config/nixpkgs/per-user/kdam0-art/configuration.nix"; + chm = "nvim ~/.config/nixpkgs/per-user/kdam0-art/home.nix"; + cvim = "nvim ~/.config/nixpkgs/common/nvim/init.vim"; + clsp = "nvim ~/.config/nixpkgs/common/nvim/plugins/lspconfig.lua"; + search = "nix search nixpkgs $@"; + conf = "ranger ~/.config/nixpkgs/common/"; + up = "cd ~/.config/nixpkgs; sudo nixos-rebuild switch --flake ."; + }; + + programs.home-manager.enable = true; + programs.zsh = { + enable = true; + defaultKeymap = "viins"; + initExtra = '' + source ${config.home.homeDirectory}/.p10k.zsh + bindkey '^ ' autosuggest-accept + ''; + zplug = { + enable = true; + plugins = [ + { name = "zsh-users/zsh-autosuggestions"; } + { name = "romkatv/powerlevel10k"; tags = [ as:theme depth:1 ]; } + ]; + }; + }; + programs.tmux = { + enable = true; + clock24 = true; + shell = "${pkgs.zsh}/bin/zsh"; + prefix = "C-a"; + terminal = "screen-256color"; + keyMode = "vi"; + plugins = with pkgs; [ + tmuxPlugins.sensible + { + plugin = tmuxPlugins.resurrect; + extraConfig = "set -g @resurrect-strategy-nvim 'session'"; + } + tmuxPlugins.pain-control + tmuxPlugins.yank + ]; + sensibleOnTop = true; + }; + programs.git = { + enable = true; + userName = "Kumar Damani"; + userEmail = "me@kumardamani.net"; + aliases = { + lg = "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"; + }; + }; + programs.neovim = { + enable = true; + withPython3 = false; + withRuby = true; + withNodeJs = true; + vimdiffAlias = true; + plugins = with pkgs.vimPlugins; [ + tokyonight-nvim + nvim-treesitter.withAllGrammars + nvim-autopairs + nvim-cmp + cmp-buffer + cmp-path + nvim-web-devicons + nnn-vim + luasnip + cmp_luasnip + cmp-nvim-lsp + friendly-snippets + { + plugin = indent-blankline-nvim-lua; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/indent-blankline.lua); + } + { + plugin = lualine-nvim; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/lualine.lua); + } + { + plugin = trouble-nvim; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/trouble.lua); + } + { + plugin = telescope-nvim; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/telescope.lua); + } + telescope-fzf-native-nvim + { + plugin = leap-nvim; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/leap.lua); + } + mason-nvim + mason-lspconfig-nvim + neoconf-nvim + { + plugin = nvim-lspconfig; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/lspconfig.lua); + } + ]; + extraConfig = builtins.readFile ../../common/nvim/init.vim; + }; + programs.fzf = { + enable = true; + tmux.enableShellIntegration = true; + }; + programs.direnv = { + enable = true; + enableZshIntegration = true; # see note on other shells below + nix-direnv.enable = true; + }; + + programs.waybar.enable = true; + home.stateVersion = "23.11"; + nixpkgs = { + config = { + allowUnfree = true; + allowUnfreePredicate = (_: true); + }; + }; + + home.packages = with pkgs; [ + # Window environment + xdg-desktop-portal-hyprland + foot + wl-clipboard + wf-recorder + grimblast + wbg + # Browsers + firefox + brave + # File Managers + ranger + nnn + # Fonts + noto-fonts + noto-fonts-emoji + noto-fonts-monochrome-emoji + nerdfonts + hack-font + font-awesome + # Notifications + mako + libnotify + # Image viewer + imv + pinta + # Video player + mpv + # Pdf Viewer + zathura + # Power stuff + acpi + # Other stuff + entr + gnumake + neofetch + trash-cli + nextcloud-client + ripgrep + fd + stow + unzip + nodejs + cargo + lazygit + signal-desktop + wev + sshpass + libreoffice + drawio + virt-viewer + dig + dnsutils + s3fs + jq + publii + thunderbird + wofi + pavucontrol + pcmanfm + gnome.seahorse + ]; + + fonts.fontconfig.enable = true; + + services.gpg-agent = { + enable = true; + defaultCacheTtl = 1800; + enableSshSupport = true; + }; + services.gnome-keyring.enable = true; + services.gnome-keyring.components = ["secrets"]; + + systemd.user.services = { + bg-wallpaper = { + Unit = { + Description = "Auto refresh wallpaper"; + After = "network-online.target"; + }; + Service = { + Type = "simple"; + ExecStart = "${config.home.homeDirectory}/.config/nixpkgs/common/scripts/walp"; + TimeoutStopSec = "10"; + KillMode = "process"; + KillSignal = "SIGKILL"; + }; + Install.WantedBy = ["multi-user.target"]; + }; + }; + systemd.user.timers = { + bg-wallpaper = { + Unit.Description = "Automatic update of wallpaper"; + Timer.OnUnitActiveSec = "10min"; + Install.WantedBy = ["multi-user.target" "timers.target"]; + }; + }; + systemd.user.startServices = true; + + wayland.windowManager.hyprland = { + enable = true; + settings = { + "$mod" = "ALT"; + input = { + "kb_options" = "caps:swapescape"; + }; + monitor = [ + "DP-1, 1920x1080@60, 0x0,1" + ", preferred,auto,1" + ]; + workspace = [ + "1,monitor:eDP-1" + "2,monitor:DP-1" + "3,monitor:DP-1" + "4,monitor:DP-1" + "5,monitor:DP-1" + "6,monitor:DP-1" + "7,monitor:DP-1" + "8,monitor:DP-1" + "9,monitor:DP-1" + "10,monitor:DP-1" + ]; + windowrulev2 = [ + "workspace 9,class:^firefox$" + "workspace 8,class:^Brave(.*)$" + "workspace 7,class:^remote-viewer$" + "workspace 1,class:^Slack$" + "workspace 1,class:^Signal$" + ]; + animation = [ + "workspaces,1,2,default" + "windows,1,3,default" + "fade,0" + ]; + bind = [ + "$mod, j, cyclenext, prev" + "$mod Shift, j, swapnext, prev" + "$mod, k, cyclenext," + "$mod Shift, k, swapnext," + "$mod Shift, l, exec, swaylock -i /tmp/bg" + "$mod, period, focusmonitor, +1" + "$mod, Tab, workspace, previous" + "$mod, escape, workspace, m-1" + "$mod, semicolon, workspace, m+1" + "$mod, q, killactive" + "$mod, Return, exec, foot" + "$mod, p, exec, wofi --show run" + "$mod, r, exec, foot -e ranger" + ", Delete, exec, grimblast copy area" + "Shift, Delete, exec, GRIMBLAST_EDITOR=pinta grimblast edit area" + ] + ++ ( + # workspaces + # binds $mod + [shift +] {1..10} to [move to] workspace {1..10} + builtins.concatLists (builtins.genList ( + x: let + ws = let + c = (x + 1) / 10; + in + builtins.toString (x + 1 - (c * 10)); + in [ + "$mod, ${ws}, workspace, ${toString (x + 1)}" + "$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}" + ] + ) + 10) + ); + binde = [ + ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + "$mod, Next, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + "$mod, Prior, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" + ", XF86MonBrightnessDown, exec, light -U 10" + ", XF86MonBrightnessUp, exec, light -A 10" + "$mod, h, resizeactive, -20 20" + "$mod, l, resizeactive, 20 -20" + ]; + bindm = [ + "$mod,mouse:272,movewindow" + "$mod,mouse:273,resizewindow" + ]; + binds = { + "allow_workspace_cycles" = true; + }; + "exec-once" = [ + "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1" + #"${pkgs.plasma5Packages.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1" + "mako" + "walp" + "waybar" + "[workspace 9 silient] firefox" + "[workspace 2 silent] foot" + "[workspace 1 silient] slack" + "[workspace 1 silient] signal-desktop" + ]; + }; + }; + + + # Source app specific configs + home.file.".config/foot/foot.ini".source = ../../common/foot/foot.ini; + home.file.".config/wofi/style.css".source = ../../common/wofi/style.css; + home.file.".config/mako/config".source = ../../common/mako/config; + home.file.".local/share/fonts".source = ../../common/fonts; + home.file.".config/waybar".source = ../../common/waybar; + + #home.file.".config/foot/foot.ini".text = '' + #[colors] + #alpha=0.7 + #''; +} diff --git a/home-manager/.config/home-manager/per-user/kdam0-art/hosts.nix b/home-manager/.config/home-manager/per-user/kdam0-art/hosts.nix new file mode 100644 index 0000000..8f21ea8 --- /dev/null +++ b/home-manager/.config/home-manager/per-user/kdam0-art/hosts.nix @@ -0,0 +1,9 @@ +{ config, pkgs, ... }: + +{ networking.extraHosts = '' +# Your /etc/hosts entries go here +127.0.0.2 other-localhost + +192.168.0.87 art-jr +''; +} diff --git a/home-manager/.config/home-manager/per-user/kdam0-deb/home.nix b/home-manager/.config/home-manager/per-user/kdam0-deb/home.nix new file mode 100644 index 0000000..4654a3c --- /dev/null +++ b/home-manager/.config/home-manager/per-user/kdam0-deb/home.nix @@ -0,0 +1,142 @@ +{ config, pkgs, libs, ...}: +{ + home.username = "kdam0"; + home.homeDirectory = "/home/kdam0"; + home.sessionPath = [ + "$HOME/.config/home-manager/common/scripts" + ]; + home.sessionVariables = { + EDITOR = "nvim"; + TERM = "xterm-256color"; + }; + home.shellAliases = { + l = "ls -l"; + ll = "ls -al"; + ".." = "cd .."; + v = "nvim $@"; + r = "ranger $@"; + gst = "git status"; + chm = "nvim ~/.config/home-manager/per-user/kdam0-deb/home.nix"; + cvim = "nvim ~/.config/home-manager/common/nvim/init.vim"; + clsp = "nvim ~/.config/home-manager/common/nvim/plugins/lspconfig.lua"; + search = "nix search home-manager $@"; + conf = "ranger ~/.config/home-manager/common/"; + up = "home-manager switch"; + }; + + programs.home-manager.enable = true; + programs.zsh = { + enable = true; + defaultKeymap = "viins"; + initExtra = '' + source ${config.home.homeDirectory}/.p10k.zsh + bindkey '^ ' autosuggest-accept + ''; + zplug = { + enable = true; + plugins = [ + { name = "zsh-users/zsh-autosuggestions"; } + { name = "romkatv/powerlevel10k"; tags = [ as:theme depth:1 ]; } + ]; + }; + }; + programs.tmux = { + enable = true; + clock24 = true; + shell = "${pkgs.zsh}/bin/zsh"; + prefix = "C-a"; + terminal = "screen-256color"; + keyMode = "vi"; + plugins = with pkgs; [ + tmuxPlugins.sensible + { + plugin = tmuxPlugins.resurrect; + extraConfig = "set -g @resurrect-strategy-nvim 'session'"; + } + tmuxPlugins.pain-control + tmuxPlugins.yank + ]; + sensibleOnTop = true; + }; + programs.git = { + enable = true; + userName = "Kumar Damani"; + userEmail = "me@kumardamani.net"; + aliases = { + lg = "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"; + }; + }; + programs.neovim = { + enable = true; + withPython3 = false; + withRuby = true; + withNodeJs = true; + vimdiffAlias = true; + plugins = with pkgs.vimPlugins; [ + tokyonight-nvim + nvim-treesitter.withAllGrammars + nvim-autopairs + nvim-cmp + cmp-buffer + cmp-path + nvim-web-devicons + nnn-vim + luasnip + cmp_luasnip + cmp-nvim-lsp + friendly-snippets + { + plugin = indent-blankline-nvim-lua; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/indent-blankline.lua); + } + { + plugin = lualine-nvim; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/lualine.lua); + } + { + plugin = trouble-nvim; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/trouble.lua); + } + { + plugin = telescope-nvim; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/telescope.lua); + } + telescope-fzf-native-nvim + { + plugin = leap-nvim; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/leap.lua); + } + mason-nvim + mason-lspconfig-nvim + neoconf-nvim + { + plugin = nvim-lspconfig; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/lspconfig.lua); + } + ]; + extraConfig = builtins.readFile ../../common/nvim/init.vim; + }; + programs.fzf = { + enable = true; + tmux.enableShellIntegration = true; + }; + programs.direnv = { + enable = true; + enableZshIntegration = true; # see note on other shells below + nix-direnv.enable = true; + }; + home.stateVersion = "23.05"; + home.packages = with pkgs; [ + ranger + nnn + ripgrep + python311 + ]; + targets.genericLinux.enable = true; +} diff --git a/home-manager/.config/home-manager/per-user/kdam0-home/configuration.nix b/home-manager/.config/home-manager/per-user/kdam0-home/configuration.nix new file mode 100644 index 0000000..4bf5557 --- /dev/null +++ b/home-manager/.config/home-manager/per-user/kdam0-home/configuration.nix @@ -0,0 +1,135 @@ +{ config, pkgs, ... }: + +{ + imports = + [ + ./hardware-configuration.nix + ./hosts.nix + ]; + + # Bootloader. + boot.loader.grub.enable = true; + boot.loader.grub.device = "/dev/sda"; + boot.loader.grub.useOSProber = true; + + networking.hostName = "art-sr"; # Define your hostname. + networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. + + # Set your time zone. + time.timeZone = "America/Toronto"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + #useXkbConfig = true; # use xkbOptions in tty. + }; + + # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the KDE Plasma Desktop Environment. + services.xserver.displayManager.sddm.enable = true; + services.xserver.desktopManager.plasma5.enable = true; + + # Configure keymap in X11 + services.xserver = { + layout = "us"; + xkbVariant = ""; + }; + + nixpkgs.config.allowUnfree = true; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable sound. + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + wireplumber.enable = true; + # media-session.enable = false; + jack.enable = true; + systemWide = false; + }; + + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.kdam0 = { + isNormalUser = true; + description = "kdam0"; + extraGroups = [ + "wheel" + "networkmanager" + "video" + "audio" + "docker" + "libvirtd" + ]; + shell = pkgs.zsh; + }; + + # List packages installed in system profile. To search, run: + environment.systemPackages = with pkgs; [ + wget + git + rsync + neovim + htop + bmon + alsa-utils + docker-buildx + docker-compose + wireguard-tools + cacert + openssl.dev + (python3.withPackages (ps: with ps; [ + pip + regex + pyopenssl + ])) + ]; + + virtualisation.docker = { + enable = true; + enableOnBoot = true; + rootless = { + enable = true; + setSocketVariable = true; + }; + }; + + # Copy the NixOS configuration file and link it from the resulting system + # (/run/current-system/configuration.nix). This is useful in case you + # accidentally delete configuration.nix. + # system.copySystemConfiguration = true; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "23.05"; # Did you read the comment? + + nix.settings.experimental-features = ["nix-command" "flakes"]; + nix.settings.auto-optimise-store = true; + + #xdg.portal = { + # enable = true; + # wlr.enable = true; + #}; + + # Enable the OpenSSH daemon. + services.openssh.enable = true; + services.fwupd.enable = true; + security.pam.services = { + login.gnupg.enable = true; + }; + programs.zsh.enable = true; +} + diff --git a/home-manager/.config/home-manager/per-user/kdam0-home/hardware-configuration.nix b/home-manager/.config/home-manager/per-user/kdam0-home/hardware-configuration.nix new file mode 100644 index 0000000..24ecc53 --- /dev/null +++ b/home-manager/.config/home-manager/per-user/kdam0-home/hardware-configuration.nix @@ -0,0 +1,31 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/profiles/qemu-guest.nix") + ]; + + boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/f037f7e0-59e5-43c2-9682-28ccd33a9f38"; + fsType = "ext4"; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.ens18.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +} diff --git a/home-manager/.config/home-manager/per-user/kdam0-home/home.nix b/home-manager/.config/home-manager/per-user/kdam0-home/home.nix new file mode 100644 index 0000000..9ca47e5 --- /dev/null +++ b/home-manager/.config/home-manager/per-user/kdam0-home/home.nix @@ -0,0 +1,190 @@ +{ config, pkgs, ...}: +{ + home.username = "kdam0"; + home.homeDirectory = "/home/kdam0"; + home.sessionPath = [ + "$HOME/.config/nixpkgs/common/scripts" + ]; + home.sessionVariables = { + EDITOR = "nvim"; + TERM = "xterm-256color"; + }; + home.shellAliases = { + l = "ls -l"; + ll = "ls -al"; + ".." = "cd .."; + v = "nvim $@"; + r = "ranger $@"; + gst = "git status"; + chm = "nvim ~/.config/nixpkgs/per-user/kdam0-home/home.nix"; + clsp = "nvim ~/.config/nixpkgs/common/nvim/plugins/lspconfig.lua"; + cnix = "nvim ~/.config/nixpkgs/per-user/kdam0-home/configuration.nix"; + up = "sudo nixos-rebuild switch"; + clean = "sudo nix-collect-garbage -d && nix-collect-garbage -d"; + search = "nix search nixpkgs $@"; + conf = "ranger ~/.config/nixpkgs/common/"; + }; + + programs.home-manager.enable = true; + programs.zsh = { + enable = true; + defaultKeymap = "viins"; + initExtra = '' + source ${config.home.homeDirectory}/.p10k.zsh + bindkey '^ ' autosuggest-accept + ''; + zplug = { + enable = true; + plugins = [ + { name = "zsh-users/zsh-autosuggestions"; } + { name = "romkatv/powerlevel10k"; tags = [ as:theme depth:1 ]; } + ]; + }; + }; + programs.tmux = { + enable = true; + clock24 = true; + shell = "${pkgs.zsh}/bin/zsh"; + prefix = "C-a"; + terminal = "screen-256color"; + keyMode = "vi"; + plugins = with pkgs; [ + tmuxPlugins.sensible + { + plugin = tmuxPlugins.resurrect; + extraConfig = "set -g @resurrect-strategy-nvim 'session'"; + } + tmuxPlugins.pain-control + tmuxPlugins.yank + ]; + sensibleOnTop = true; + }; + programs.git = { + enable = true; + userName = "Kumar Damani"; + userEmail = "me@kumardamani.net"; + aliases = { + lg = "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"; + }; + }; + + programs.neovim = { + enable = true; + withPython3 = true; + withRuby = true; + withNodeJs = true; + vimdiffAlias = true; + plugins = with pkgs.vimPlugins; [ + tokyonight-nvim + nvim-treesitter.withAllGrammars + nvim-autopairs + nvim-cmp + cmp-buffer + cmp-path + nvim-web-devicons + nnn-vim + luasnip + cmp_luasnip + cmp-nvim-lsp + friendly-snippets + { + plugin = indent-blankline-nvim-lua; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/indent-blankline.lua); + } + { + plugin = lualine-nvim; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/lualine.lua); + } + { + plugin = trouble-nvim; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/trouble.lua); + } + { + plugin = telescope-nvim; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/telescope.lua); + } + telescope-fzf-native-nvim + { + plugin = leap-nvim; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/leap.lua); + } + mason-nvim + mason-lspconfig-nvim + neoconf-nvim + { + plugin = nvim-lspconfig; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/lspconfig.lua); + } + ]; + extraConfig = builtins.readFile ../../common/nvim/init.vim; + }; + + + home.stateVersion = "23.05"; + home.packages = [ + # Web + pkgs.firefox + pkgs.brave + # Image Editor + pkgs.krita + # Fonts + pkgs.nerdfonts + pkgs.hack-font + pkgs.noto-fonts + pkgs.noto-fonts-cjk + # Latex stuff + (pkgs.texlive.combine { inherit (pkgs.texlive) scheme-small xifthen ifmtarg framed paralist titling titlesec libertine letltxmacro; }) + pkgs.texmaker + pkgs.gnumake + pkgs.clang + pkgs.neofetch + pkgs.ripgrep + pkgs.fd + pkgs.unzip + pkgs.nodejs + pkgs.cargo + # Files + pkgs.ranger + pkgs.nnn + pkgs.vlc + # Comms + pkgs.signal-desktop + pkgs.mutt-wizard + pkgs.isync + pkgs.msmtp + pkgs.pass + pkgs.neomutt + pkgs.nextcloud-client + pkgs.thunderbird + # Office stuff + pkgs.libreoffice-qt + pkgs.hunspell + pkgs.hunspellDicts.en_CA + pkgs.lynx + # dev stuff + pkgs.terraform + pkgs.ansible + pkgs.jq + pkgs.publii + pkgs.s3fs + ]; + + fonts.fontconfig.enable = true; + + services.gpg-agent = { + enable = true; + defaultCacheTtl = 1800; + enableSshSupport = true; + }; + + systemd.user.startServices = true; + + # Source app specific configs + home.file.".local/share/fonts".source = ../../common/fonts; +} diff --git a/home-manager/.config/home-manager/per-user/kdam0-home/hosts.nix b/home-manager/.config/home-manager/per-user/kdam0-home/hosts.nix new file mode 100644 index 0000000..8f21ea8 --- /dev/null +++ b/home-manager/.config/home-manager/per-user/kdam0-home/hosts.nix @@ -0,0 +1,9 @@ +{ config, pkgs, ... }: + +{ networking.extraHosts = '' +# Your /etc/hosts entries go here +127.0.0.2 other-localhost + +192.168.0.87 art-jr +''; +} diff --git a/home-manager/.config/home-manager/per-user/kdam0-work/home.nix b/home-manager/.config/home-manager/per-user/kdam0-work/home.nix new file mode 100644 index 0000000..38c511d --- /dev/null +++ b/home-manager/.config/home-manager/per-user/kdam0-work/home.nix @@ -0,0 +1,376 @@ +{ config, pkgs, libs, ...}: +{ + home.username = "kdam0"; + home.homeDirectory = "/home/kdam0"; + home.sessionPath = [ + "$HOME/.config/nixpkgs/common/scripts" + ]; + home.sessionVariables = { + EDITOR = "nvim"; + TERM = "xterm-256color"; + }; + home.shellAliases = { + l = "ls -l"; + ll = "ls -al"; + ".." = "cd .."; + v = "nvim $@"; + r = "ranger $@"; + gst = "git status"; + chm = "nvim ~/.config/nixpkgs/per-user/kdam0-work/home.nix"; + cvim = "nvim ~/.config/nixpkgs/common/nvim/init.vim"; + clsp = "nvim ~/.config/nixpkgs/common/nvim/plugins/lspconfig.lua"; + search = "nix search nixpkgs $@"; + conf = "ranger ~/.config/nixpkgs/common/"; + up = "home-manager switch"; + k9s = "docker run --net host --rm -it -v ~/.kube/config:/root/.kube/config quay.io/derailed/k9s"; + b = "ssh kdamani@burne.sat"; + auto = "ssh kepler@auto.sat"; + dns = "ssh administrator@ctrlf-dns"; + pyans = "source ~/.venv/ansible/bin/activate"; + pykep36 = "source ~/.venv/kepler36/bin/activate"; + pykep37 = "source ~/.venv/kepler37/bin/activate"; + }; + + programs.home-manager.enable = true; + programs.zsh = { + enable = true; + defaultKeymap = "viins"; + initExtra = '' + source ${config.home.homeDirectory}/.p10k.zsh + bindkey '^ ' autosuggest-accept + ''; + zplug = { + enable = true; + plugins = [ + { name = "zsh-users/zsh-autosuggestions"; } + { name = "romkatv/powerlevel10k"; tags = [ as:theme depth:1 ]; } + ]; + }; + }; + programs.tmux = { + enable = true; + clock24 = true; + shell = "${pkgs.zsh}/bin/zsh"; + prefix = "C-a"; + terminal = "screen-256color"; + keyMode = "vi"; + plugins = with pkgs; [ + tmuxPlugins.sensible + { + plugin = tmuxPlugins.resurrect; + extraConfig = "set -g @resurrect-strategy-nvim 'session'"; + } + tmuxPlugins.pain-control + tmuxPlugins.yank + ]; + sensibleOnTop = true; + }; + programs.git = { + enable = true; + userName = "Kumar Damani"; + userEmail = "me@kumardamani.net"; + aliases = { + lg = "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"; + }; + }; + programs.neovim = { + enable = true; + withPython3 = false; + withRuby = true; + withNodeJs = true; + vimdiffAlias = true; + plugins = with pkgs.vimPlugins; [ + tokyonight-nvim + nvim-treesitter.withAllGrammars + nvim-autopairs + nvim-cmp + cmp-buffer + cmp-path + nvim-web-devicons + nnn-vim + luasnip + cmp_luasnip + cmp-nvim-lsp + friendly-snippets + { + plugin = indent-blankline-nvim-lua; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/indent-blankline.lua); + } + { + plugin = lualine-nvim; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/lualine.lua); + } + { + plugin = trouble-nvim; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/trouble.lua); + } + { + plugin = telescope-nvim; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/telescope.lua); + } + telescope-fzf-native-nvim + { + plugin = leap-nvim; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/leap.lua); + } + mason-nvim + mason-lspconfig-nvim + neoconf-nvim + { + plugin = nvim-lspconfig; + type = "lua"; + config = builtins.readFile(../../common/nvim/plugins/lspconfig.lua); + } + ]; + extraConfig = builtins.readFile ../../common/nvim/init.vim; + }; + programs.fzf = { + enable = true; + tmux.enableShellIntegration = true; + }; + programs.direnv = { + enable = true; + enableZshIntegration = true; # see note on other shells below + nix-direnv.enable = true; + }; + + programs.waybar.enable = true; + + + home.stateVersion = "22.11"; + nixpkgs = { + config = { + allowUnfree = true; + allowUnfreePredicate = (_: true); + }; + }; + home.packages = with pkgs; [ + # Window environment + xdg-desktop-portal-hyprland + #somebar + foot + wl-clipboard + wf-recorder + grimblast + pinta + #grim + #slurp + wbg + # Text Editors + #pkgs.neovim + # Browsers + firefox + brave + # File Managers + ranger + nnn + # Fonts + noto-fonts + noto-fonts-emoji + noto-fonts-monochrome-emoji + nerdfonts + hack-font + font-awesome + # Notifications + mako + libnotify + # Image viewer + imv + sxiv + # Video player + mpv + # Pdf Viewer + zathura + # Power stuff + acpi + # Other stuff + entr + #pkgs.gcc + #stdenv.cc.cc.lib + #pkgs.libstdcxx5 + #llvmPackages_6.libstdcxxClang + #pkgs.clang + gnumake + neofetch + trash-cli + nextcloud-client + ripgrep + fd + stow + unzip + nodejs + cargo + wget + lazygit + #pkgs.tree-sitter + # Work stuff + mattermost-desktop + signal-desktop + slack + wev + sshpass + libreoffice + drawio + kubectl + kubernetes-helm + virt-viewer + dig + dnsutils + awscli + rclone + moonlight-qt + wireguard-tools + wireshark + step-cli + ]; + + fonts.fontconfig.enable = true; + + services.gpg-agent = { + enable = true; + defaultCacheTtl = 1800; + enableSshSupport = true; + }; + + systemd.user.services = { + bg-wallpaper = { + Unit = { + Description = "Auto refresh wallpaper"; + After = "network-online.target"; + }; + Service = { + Type = "simple"; + ExecStart = "${config.home.homeDirectory}/.config/nixpkgs/common/scripts/walp"; + TimeoutStopSec = "10"; + KillMode = "process"; + KillSignal = "SIGKILL"; + }; + Install.WantedBy = ["multi-user.target"]; + }; + }; + systemd.user.timers = { + bg-wallpaper = { + Unit.Description = "Automatic update of wallpaper"; + Timer.OnUnitActiveSec = "10min"; + Install.WantedBy = ["multi-user.target" "timers.target"]; + }; + }; + systemd.user.startServices = true; + + wayland.windowManager.hyprland = { + enable = true; + settings = { + "$mod" = "ALT"; + input = { + "kb_options" = "caps:swapescape"; + }; + monitor = [ + "DP-1, 1920x1080@60, 0x0,1" + ", preferred,auto,1" + ]; + workspace = [ + "1,monitor:eDP-1" + "2,monitor:DP-1" + "3,monitor:DP-1" + "4,monitor:DP-1" + "5,monitor:DP-1" + "6,monitor:DP-1" + "7,monitor:DP-1" + "8,monitor:DP-1" + "9,monitor:DP-1" + "10,monitor:DP-1" + ]; + windowrulev2 = [ + "workspace 9,class:^firefox$" + "workspace 8,class:^Brave(.*)$" + "workspace 7,class:^remote-viewer$" + "workspace 1,class:^Slack$" + "workspace 1,class:^Signal$" + ]; + animation = [ + "workspaces,1,2,default" + "windows,1,3,default" + "fade,0" + ]; + bind = [ + "$mod, j, cyclenext, prev" + "$mod Shift, j, swapnext, prev" + "$mod, k, cyclenext," + "$mod Shift, k, swapnext," + "$mod Shift, l, exec, swaylock -i /tmp/bg" + "$mod, period, focusmonitor, +1" + "$mod, Tab, workspace, previous" + "$mod, escape, workspace, m-1" + "$mod, semicolon, workspace, m+1" + "$mod, q, killactive" + "$mod, Return, exec, foot" + "$mod, p, exec, wofi --show run" + "$mod, r, exec, foot -e ranger" + ", Delete, exec, grimblast copy area" + "Shift, Delete, exec, GRIMBLAST_EDITOR=pinta grimblast edit area" + ] + ++ ( + # workspaces + # binds $mod + [shift +] {1..10} to [move to] workspace {1..10} + builtins.concatLists (builtins.genList ( + x: let + ws = let + c = (x + 1) / 10; + in + builtins.toString (x + 1 - (c * 10)); + in [ + "$mod, ${ws}, workspace, ${toString (x + 1)}" + "$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}" + ] + ) + 10) + ); + binde = [ + ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" + ", XF86MonBrightnessDown, exec, light -U 10" + ", XF86MonBrightnessUp, exec, light -A 10" + "$mod, h, resizeactive, -20 20" + "$mod, l, resizeactive, 20 -20" + ]; + bindm = [ + "$mod,mouse:272,movewindow" + "$mod,mouse:273,resizewindow" + ]; + binds = { + "allow_workspace_cycles" = true; + }; + "exec-once" = [ + "mako" + "walp" + "waybar" + "[workspace 9 silient] firefox" + "[workspace 8 silient] brave" + "[workspace 2 silent] foot" + "[workspace 1 silient] slack" + "[workspace 1 silient] signal-desktop" + ]; + }; + }; + + # Source app specific configs + home.file.".config/foot/foot.ini".source = ../../common/foot/foot.ini; + home.file.".config/wofi/style.css".source = ../../common/wofi/style.css; + home.file.".config/mako/config".source = ../../common/mako/config; + home.file.".local/share/fonts".source = ../../common/fonts; + home.file.".config/waybar".source = ../../common/waybar; + #home.file.".config/way-displays".source = ../../common/way-displays; + + #home.file.".config/foot/foot.ini".text = '' + #[colors] + #alpha=0.7 + #''; + + targets.genericLinux.enable = true; +} |
