init (podpierdolenie)
BIN
config/demo.png
Normal file
|
After Width: | Height: | Size: 694 KiB |
1853
config/emoji.nix
Normal file
BIN
config/face.jpg
Normal file
|
After Width: | Height: | Size: 140 KiB |
114
config/fastfetch/default.nix
Normal file
@@ -0,0 +1,114 @@
|
||||
{
|
||||
programs.fastfetch = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
display = {
|
||||
color = {
|
||||
keys = "35";
|
||||
output = "90";
|
||||
};
|
||||
};
|
||||
|
||||
logo = {
|
||||
source = ./nixos.png;
|
||||
type = "kitty-direct";
|
||||
height = 15;
|
||||
width = 30;
|
||||
padding = {
|
||||
top = 3;
|
||||
left = 3;
|
||||
};
|
||||
};
|
||||
|
||||
modules = [
|
||||
"break"
|
||||
{
|
||||
type = "custom";
|
||||
format = "┌──────────────────────Hardware──────────────────────┐";
|
||||
}
|
||||
{
|
||||
type = "cpu";
|
||||
key = "│ ";
|
||||
}
|
||||
{
|
||||
type = "gpu";
|
||||
key = "│ ";
|
||||
}
|
||||
{
|
||||
type = "memory";
|
||||
key = "│ ";
|
||||
}
|
||||
{
|
||||
type = "custom";
|
||||
format = "└────────────────────────────────────────────────────┘";
|
||||
}
|
||||
"break"
|
||||
{
|
||||
type = "custom";
|
||||
format = "┌──────────────────────Software──────────────────────┐";
|
||||
}
|
||||
{
|
||||
type = "custom";
|
||||
format = " OS -> ZaneyOS 2.2";
|
||||
}
|
||||
{
|
||||
type = "kernel";
|
||||
key = "│ ├ ";
|
||||
}
|
||||
{
|
||||
type = "packages";
|
||||
key = "│ ├ ";
|
||||
}
|
||||
{
|
||||
type = "shell";
|
||||
key = "└ └ ";
|
||||
}
|
||||
"break"
|
||||
{
|
||||
type = "wm";
|
||||
key = " WM";
|
||||
}
|
||||
{
|
||||
type = "wmtheme";
|
||||
key = "│ ├ ";
|
||||
}
|
||||
{
|
||||
type = "terminal";
|
||||
key = "└ └ ";
|
||||
}
|
||||
{
|
||||
type = "custom";
|
||||
format = "└────────────────────────────────────────────────────┘";
|
||||
}
|
||||
"break"
|
||||
{
|
||||
type = "custom";
|
||||
format = "┌────────────────────Uptime / Age────────────────────┐";
|
||||
}
|
||||
{
|
||||
type = "command";
|
||||
key = "│ ";
|
||||
text =
|
||||
#bash
|
||||
''
|
||||
birth_install=$(stat -c %W /)
|
||||
current=$(date +%s)
|
||||
delta=$((current - birth_install))
|
||||
delta_days=$((delta / 86400))
|
||||
echo $delta_days days
|
||||
'';
|
||||
}
|
||||
{
|
||||
type = "uptime";
|
||||
key = "│ ";
|
||||
}
|
||||
{
|
||||
type = "custom";
|
||||
format = "└────────────────────────────────────────────────────┘";
|
||||
}
|
||||
"break"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
BIN
config/fastfetch/nixos.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
210
config/hyprland.nix
Normal file
@@ -0,0 +1,210 @@
|
||||
{
|
||||
lib,
|
||||
username,
|
||||
host,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
inherit
|
||||
(import ../hosts/${host}/variables.nix)
|
||||
browser
|
||||
terminal
|
||||
extraMonitorSettings
|
||||
keyboardLayout
|
||||
;
|
||||
in
|
||||
with lib; {
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
systemd.enable = true;
|
||||
extraConfig = let
|
||||
modifier = "SUPER";
|
||||
in
|
||||
concatStrings [
|
||||
''
|
||||
env = NIXOS_OZONE_WL, 1
|
||||
env = NIXPKGS_ALLOW_UNFREE, 1
|
||||
env = XDG_CURRENT_DESKTOP, Hyprland
|
||||
env = XDG_SESSION_TYPE, wayland
|
||||
env = XDG_SESSION_DESKTOP, Hyprland
|
||||
env = GDK_BACKEND, wayland, x11
|
||||
env = CLUTTER_BACKEND, wayland
|
||||
env = QT_QPA_PLATFORM=wayland;xcb
|
||||
env = QT_WAYLAND_DISABLE_WINDOWDECORATION, 1
|
||||
env = QT_AUTO_SCREEN_SCALE_FACTOR, 1
|
||||
env = SDL_VIDEODRIVER, x11
|
||||
env = MOZ_ENABLE_WAYLAND, 1
|
||||
exec-once = dbus-update-activation-environment --systemd --all
|
||||
exec-once = systemctl --user import-environment QT_QPA_PLATFORMTHEME WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
|
||||
exec-once = killall -q swww;sleep .5 && swww init
|
||||
exec-once = killall -q waybar;sleep .5 && waybar
|
||||
exec-once = killall -q swaync;sleep .5 && swaync
|
||||
exec-once = nm-applet --indicator
|
||||
exec-once = lxqt-policykit-agent
|
||||
exec-once = sleep 1.5 && swww img /home/${username}/Pictures/Wallpapers/attack-on-titan-mikasa-ackerman.jpg
|
||||
monitor=,1920x1080@144,auto,1
|
||||
${extraMonitorSettings}
|
||||
general {
|
||||
gaps_in = 6
|
||||
gaps_out = 8
|
||||
border_size = 2
|
||||
layout = master
|
||||
resize_on_border = true
|
||||
col.active_border = rgb(${config.stylix.base16Scheme.base08}) rgb(${config.stylix.base16Scheme.base0C}) 45deg
|
||||
col.inactive_border = rgb(${config.stylix.base16Scheme.base01})
|
||||
}
|
||||
input {
|
||||
kb_layout = ${keyboardLayout}
|
||||
kb_options = grp:alt_shift_toggle
|
||||
kb_options = caps:super
|
||||
follow_mouse = 1
|
||||
touchpad {
|
||||
natural_scroll = true
|
||||
disable_while_typing = true
|
||||
scroll_factor = 0.8
|
||||
}
|
||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||
accel_profile = flat
|
||||
}
|
||||
windowrule = noborder,^(wofi)$
|
||||
windowrule = center,^(wofi)$
|
||||
windowrule = center,^(steam)$
|
||||
windowrule = float, nm-connection-editor|blueman-manager
|
||||
windowrule = float, swayimg|vlc|Viewnior|pavucontrol
|
||||
windowrule = float, nwg-look|qt5ct|mpv
|
||||
windowrule = float, zoom
|
||||
windowrulev2 = stayfocused, title:^()$,class:^(steam)$
|
||||
windowrulev2 = minsize 1 1, title:^()$,class:^(steam)$
|
||||
windowrulev2 = opacity 1 0.7, class:^(librewolf)$
|
||||
windowrulev2 = opacity 0.9 0.7, class:^(thunar)$
|
||||
windowrulev2 = opacity 0.9 0.7, class:^(steam)$
|
||||
windowrulev2 = opacity 0.9 0.7, class:^(code-url-handler)$
|
||||
windowrulev2 = opacity 0.9 0.7, class:^(Plexamp)$
|
||||
windowrulev2 = opacity 0.9 0.7, class:^(chrome-bbdeiblfgdokhlblpgeaokenkfknecgl-Default)$
|
||||
windowrulev2 = opacity 0.9 0.7, class:^(discord)$
|
||||
gestures {
|
||||
workspace_swipe = true
|
||||
workspace_swipe_fingers = 3
|
||||
}
|
||||
misc {
|
||||
initial_workspace_tracking = 0
|
||||
mouse_move_enables_dpms = true
|
||||
key_press_enables_dpms = false
|
||||
}
|
||||
animations {
|
||||
enabled = yes
|
||||
bezier = wind, 0.05, 0.9, 0.1, 1.05
|
||||
bezier = winIn, 0.1, 1.1, 0.1, 1.1
|
||||
bezier = winOut, 0.3, -0.3, 0, 1
|
||||
bezier = liner, 1, 1, 1, 1
|
||||
animation = windows, 1, 6, wind, slide
|
||||
animation = windowsIn, 1, 6, winIn, slide
|
||||
animation = windowsOut, 1, 5, winOut, slide
|
||||
animation = windowsMove, 1, 5, wind, slide
|
||||
animation = border, 1, 1, liner
|
||||
animation = fade, 1, 10, default
|
||||
animation = workspaces, 1, 5, wind
|
||||
}
|
||||
decoration {
|
||||
rounding = 10
|
||||
drop_shadow = true
|
||||
shadow_range = 4
|
||||
shadow_render_power = 3
|
||||
col.shadow = rgba(1a1a1aee)
|
||||
blur {
|
||||
enabled = true
|
||||
size = 5
|
||||
passes = 3
|
||||
new_optimizations = on
|
||||
ignore_opacity = off
|
||||
}
|
||||
}
|
||||
plugin {
|
||||
hyprtrails {
|
||||
}
|
||||
}
|
||||
dwindle {
|
||||
pseudotile = true
|
||||
preserve_split = true
|
||||
}
|
||||
bind = ${modifier},Return,exec,${terminal}
|
||||
bind = ${modifier}SHIFT,Return,exec,rofi-launcher
|
||||
bind = ${modifier}SHIFT,W,exec,web-search
|
||||
bind = ${modifier}ALT,W,exec,wallsetter
|
||||
bind = ${modifier}SHIFT,N,exec,swaync-client -rs
|
||||
bind = ${modifier},W,exec,${browser}
|
||||
bind = ${modifier},E,exec,emopicker9000
|
||||
bind = ${modifier},S,exec,screenshootin
|
||||
bind = ${modifier},D,exec,discord
|
||||
bind = ${modifier},O,exec,obs
|
||||
bind = ${modifier},C,exec,hyprpicker -a
|
||||
bind = ${modifier},G,exec,gimp
|
||||
bind = ${modifier}SHIFT,G,exec,godot4
|
||||
bind = ${modifier},T,exec,thunar
|
||||
bind = ${modifier},M,exec,plexamp
|
||||
bind = ${modifier},Q,killactive,
|
||||
bind = ${modifier},P,pseudo,
|
||||
bind = ${modifier}SHIFT,I,togglesplit,
|
||||
bind = ${modifier},F,fullscreen,
|
||||
bind = ${modifier}SHIFT,F,togglefloating,
|
||||
bind = ${modifier}SHIFT,C,exit,
|
||||
bind = ${modifier}SHIFT,left,movewindow,l
|
||||
bind = ${modifier}SHIFT,right,movewindow,r
|
||||
bind = ${modifier}SHIFT,up,movewindow,u
|
||||
bind = ${modifier}SHIFT,down,movewindow,d
|
||||
bind = ${modifier}SHIFT,h,movewindow,l
|
||||
bind = ${modifier}SHIFT,l,movewindow,r
|
||||
bind = ${modifier}SHIFT,k,movewindow,u
|
||||
bind = ${modifier}SHIFT,j,movewindow,d
|
||||
bind = ${modifier},left,movefocus,l
|
||||
bind = ${modifier},right,movefocus,r
|
||||
bind = ${modifier},up,movefocus,u
|
||||
bind = ${modifier},down,movefocus,d
|
||||
bind = ${modifier},h,movefocus,l
|
||||
bind = ${modifier},l,movefocus,r
|
||||
bind = ${modifier},k,movefocus,u
|
||||
bind = ${modifier},j,movefocus,d
|
||||
bind = ${modifier},1,workspace,1
|
||||
bind = ${modifier},2,workspace,2
|
||||
bind = ${modifier},3,workspace,3
|
||||
bind = ${modifier},4,workspace,4
|
||||
bind = ${modifier},5,workspace,5
|
||||
bind = ${modifier},6,workspace,6
|
||||
bind = ${modifier},7,workspace,7
|
||||
bind = ${modifier},8,workspace,8
|
||||
bind = ${modifier},9,workspace,9
|
||||
bind = ${modifier},0,workspace,10
|
||||
bind = ${modifier}SHIFT,SPACE,movetoworkspace,special
|
||||
bind = ${modifier},SPACE,togglespecialworkspace
|
||||
bind = ${modifier}SHIFT,1,movetoworkspace,1
|
||||
bind = ${modifier}SHIFT,2,movetoworkspace,2
|
||||
bind = ${modifier}SHIFT,3,movetoworkspace,3
|
||||
bind = ${modifier}SHIFT,4,movetoworkspace,4
|
||||
bind = ${modifier}SHIFT,5,movetoworkspace,5
|
||||
bind = ${modifier}SHIFT,6,movetoworkspace,6
|
||||
bind = ${modifier}SHIFT,7,movetoworkspace,7
|
||||
bind = ${modifier}SHIFT,8,movetoworkspace,8
|
||||
bind = ${modifier}SHIFT,9,movetoworkspace,9
|
||||
bind = ${modifier}SHIFT,0,movetoworkspace,10
|
||||
bind = ${modifier}CONTROL,right,workspace,e+1
|
||||
bind = ${modifier}CONTROL,left,workspace,e-1
|
||||
bind = ${modifier},mouse_down,workspace, e+1
|
||||
bind = ${modifier},mouse_up,workspace, e-1
|
||||
bindm = ${modifier},mouse:272,movewindow
|
||||
bindm = ${modifier},mouse:273,resizewindow
|
||||
bind = ALT,Tab,cyclenext
|
||||
bind = ALT,Tab,bringactivetotop
|
||||
bind = ,XF86AudioRaiseVolume,exec,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bind = ,XF86AudioLowerVolume,exec,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
binde = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bind = ,XF86AudioPlay, exec, playerctl play-pause
|
||||
bind = ,XF86AudioPause, exec, playerctl play-pause
|
||||
bind = ,XF86AudioNext, exec, playerctl next
|
||||
bind = ,XF86AudioPrev, exec, playerctl previous
|
||||
bind = ,XF86MonBrightnessDown,exec,brightnessctl set 5%-
|
||||
bind = ,XF86MonBrightnessUp,exec,brightnessctl set +5%
|
||||
''
|
||||
];
|
||||
};
|
||||
}
|
||||
90
config/neovim.nix
Normal file
@@ -0,0 +1,90 @@
|
||||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}: let
|
||||
finecmdline = pkgs.vimUtils.buildVimPlugin {
|
||||
name = "fine-cmdline";
|
||||
src = inputs.fine-cmdline;
|
||||
};
|
||||
in {
|
||||
programs = {
|
||||
neovim = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
vimdiffAlias = true;
|
||||
withNodeJs = true;
|
||||
extraPackages = with pkgs; [
|
||||
lua-language-server
|
||||
gopls
|
||||
xclip
|
||||
wl-clipboard
|
||||
luajitPackages.lua-lsp
|
||||
nil
|
||||
rust-analyzer
|
||||
#nodePackages.bash-language-server
|
||||
yaml-language-server
|
||||
pyright
|
||||
marksman
|
||||
];
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
alpha-nvim
|
||||
auto-session
|
||||
bufferline-nvim
|
||||
dressing-nvim
|
||||
indent-blankline-nvim
|
||||
nui-nvim
|
||||
finecmdline
|
||||
nvim-treesitter.withAllGrammars
|
||||
lualine-nvim
|
||||
nvim-autopairs
|
||||
nvim-web-devicons
|
||||
nvim-cmp
|
||||
nvim-surround
|
||||
nvim-lspconfig
|
||||
cmp-nvim-lsp
|
||||
cmp-buffer
|
||||
luasnip
|
||||
cmp_luasnip
|
||||
friendly-snippets
|
||||
lspkind-nvim
|
||||
comment-nvim
|
||||
nvim-ts-context-commentstring
|
||||
plenary-nvim
|
||||
neodev-nvim
|
||||
luasnip
|
||||
telescope-nvim
|
||||
todo-comments-nvim
|
||||
nvim-tree-lua
|
||||
telescope-fzf-native-nvim
|
||||
vim-tmux-navigator
|
||||
];
|
||||
extraConfig = ''
|
||||
set noemoji
|
||||
nnoremap : <cmd>FineCmdline<CR>
|
||||
'';
|
||||
extraLuaConfig = ''
|
||||
${builtins.readFile ./nvim/options.lua}
|
||||
${builtins.readFile ./nvim/keymaps.lua}
|
||||
${builtins.readFile ./nvim/plugins/alpha.lua}
|
||||
${builtins.readFile ./nvim/plugins/autopairs.lua}
|
||||
${builtins.readFile ./nvim/plugins/auto-session.lua}
|
||||
${builtins.readFile ./nvim/plugins/comment.lua}
|
||||
${builtins.readFile ./nvim/plugins/cmp.lua}
|
||||
${builtins.readFile ./nvim/plugins/lsp.lua}
|
||||
${builtins.readFile ./nvim/plugins/nvim-tree.lua}
|
||||
${builtins.readFile ./nvim/plugins/telescope.lua}
|
||||
${builtins.readFile ./nvim/plugins/todo-comments.lua}
|
||||
${builtins.readFile ./nvim/plugins/treesitter.lua}
|
||||
${builtins.readFile ./nvim/plugins/fine-cmdline.lua}
|
||||
require("ibl").setup()
|
||||
require("bufferline").setup{}
|
||||
require("lualine").setup({
|
||||
icons_enabled = true,
|
||||
})
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
15
config/nvim/keymaps.lua
Normal file
@@ -0,0 +1,15 @@
|
||||
local keymap = vim.keymap
|
||||
-- use jk to exit insert mode
|
||||
keymap.set("i", "jk", "<ESC>", { desc = "Exit insert mode with jk" })
|
||||
-- clear search highlights
|
||||
keymap.set("n", "<leader>nh", ":nohl<CR>", { desc = "Clear search highlights" })
|
||||
-- window management
|
||||
keymap.set("n", "<leader>sv", "<C-w>v", { desc = "Split window vertically" }) -- split window vertically
|
||||
keymap.set("n", "<leader>sh", "<C-w>s", { desc = "Split window horizontally" }) -- split window horizontally
|
||||
keymap.set("n", "<leader>se", "<C-w>=", { desc = "Make splits equal size" }) -- make split windows equal width & height
|
||||
keymap.set("n", "<leader>sx", "<cmd>close<CR>", { desc = "Close current split" }) -- close current split window
|
||||
keymap.set("n", "<leader>to", "<cmd>tabnew<CR>", { desc = "Open new tab" }) -- open new tab
|
||||
keymap.set("n", "<leader>tx", "<cmd>tabclose<CR>", { desc = "Close current tab" }) -- close current tab
|
||||
keymap.set("n", "<leader>tn", "<cmd>tabn<CR>", { desc = "Go to next tab" }) -- go to next tab
|
||||
keymap.set("n", "<leader>tp", "<cmd>tabp<CR>", { desc = "Go to previous tab" }) -- go to previous tab
|
||||
keymap.set("n", "<leader>tf", "<cmd>tabnew %<CR>", { desc = "Open current buffer in new tab" }) -- move current buffer to new tab
|
||||
21
config/nvim/options.lua
Normal file
@@ -0,0 +1,21 @@
|
||||
local opt = vim.opt
|
||||
opt.number = true
|
||||
opt.relativenumber = true
|
||||
opt.tabstop = 2
|
||||
opt.shiftwidth = 2
|
||||
opt.expandtab = true
|
||||
opt.autoindent = true
|
||||
opt.wrap = false
|
||||
opt.ignorecase = true
|
||||
opt.smartcase = true
|
||||
opt.termguicolors = true
|
||||
opt.background = "dark"
|
||||
opt.signcolumn = "yes"
|
||||
opt.mouse = "a"
|
||||
opt.cursorline = true
|
||||
opt.backspace = "indent,eol,start"
|
||||
opt.clipboard:append("unnamedplus")
|
||||
opt.splitright = true
|
||||
opt.splitbelow = true
|
||||
opt.swapfile = false
|
||||
vim.g.mapleader = " "
|
||||
30
config/nvim/plugins/alpha.lua
Normal file
@@ -0,0 +1,30 @@
|
||||
local alpha = require("alpha")
|
||||
local dashboard = require("alpha.themes.dashboard")
|
||||
|
||||
-- Set header
|
||||
dashboard.section.header.val = {
|
||||
" ",
|
||||
" ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ ",
|
||||
" ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║ ",
|
||||
" ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║ ",
|
||||
" ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║ ",
|
||||
" ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║ ",
|
||||
" ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ ",
|
||||
" ",
|
||||
}
|
||||
|
||||
-- Set menu
|
||||
dashboard.section.buttons.val = {
|
||||
dashboard.button("e", " > New File", "<cmd>ene<CR>"),
|
||||
dashboard.button("SPC fe", " > Toggle file explorer", "<cmd>NvimTreeToggle<CR>"),
|
||||
dashboard.button("SPC ff", " > Find File", "<cmd>Telescope find_files<CR>"),
|
||||
dashboard.button("SPC lg", " > Find Word", "<cmd>Telescope live_grep<CR>"),
|
||||
dashboard.button("SPC wr", " > Restore Session For Current Directory", "<cmd>SessionRestore<CR>"),
|
||||
dashboard.button("q", " > Quit NVIM", "<cmd>qa<CR>"),
|
||||
}
|
||||
|
||||
-- Send config to alpha
|
||||
alpha.setup(dashboard.opts)
|
||||
|
||||
-- Disable folding on alpha buffer
|
||||
vim.cmd([[autocmd FileType alpha setlocal nofoldenable]])
|
||||
11
config/nvim/plugins/auto-session.lua
Normal file
@@ -0,0 +1,11 @@
|
||||
local auto_session = require("auto-session")
|
||||
|
||||
auto_session.setup({
|
||||
auto_restore_enabled = false,
|
||||
auto_session_suppress_dirs = { "~/", "~/Dev/", "~/Downloads", "~/Documents", "~/Desktop/" },
|
||||
})
|
||||
|
||||
local keymap = vim.keymap
|
||||
|
||||
keymap.set("n", "<leader>wr", "<cmd>SessionRestore<CR>", { desc = "Restore session for cwd" }) -- restore last workspace session for current directory
|
||||
keymap.set("n", "<leader>ws", "<cmd>SessionSave<CR>", { desc = "Save session for auto session root dir" }) -- save workspace session for current working directory
|
||||
20
config/nvim/plugins/autopairs.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
local autopairs = require("nvim-autopairs")
|
||||
|
||||
-- configure autopairs
|
||||
autopairs.setup({
|
||||
check_ts = true, -- enable treesitter
|
||||
ts_config = {
|
||||
lua = { "string" }, -- don't add pairs in lua string treesitter nodes
|
||||
javascript = { "template_string" }, -- don't add pairs in javscript template_string treesitter nodes
|
||||
java = false, -- don't check treesitter on java
|
||||
},
|
||||
})
|
||||
|
||||
-- import nvim-autopairs completion functionality
|
||||
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
|
||||
|
||||
-- import nvim-cmp plugin (completions plugin)
|
||||
local cmp = require("cmp")
|
||||
|
||||
-- make autopairs and completion work together
|
||||
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
|
||||
41
config/nvim/plugins/cmp.lua
Normal file
@@ -0,0 +1,41 @@
|
||||
local cmp = require("cmp")
|
||||
local luasnip = require("luasnip")
|
||||
local lspkind = require("lspkind")
|
||||
|
||||
-- loads vscode style snippets from installed plugins (e.g. friendly-snippets)
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
|
||||
cmp.setup({
|
||||
completion = {
|
||||
completeopt = "menu,menuone,preview,noselect",
|
||||
},
|
||||
snippet = { -- configure how nvim-cmp interacts with snippet engine
|
||||
expand = function(args)
|
||||
luasnip.lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
["<C-k>"] = cmp.mapping.select_prev_item(), -- previous suggestion
|
||||
["<C-j>"] = cmp.mapping.select_next_item(), -- next suggestion
|
||||
["<C-b>"] = cmp.mapping.scroll_docs(-4),
|
||||
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
||||
["<C-Space>"] = cmp.mapping.complete(), -- show completion suggestions
|
||||
["<C-e>"] = cmp.mapping.abort(), -- close completion window
|
||||
["<CR>"] = cmp.mapping.confirm({ select = false }),
|
||||
}),
|
||||
-- sources for autocompletion
|
||||
sources = cmp.config.sources({
|
||||
{ name = "nvim_lsp" }, -- language servers
|
||||
{ name = "luasnip" }, -- snippets
|
||||
{ name = "buffer" }, -- text within current buffer
|
||||
{ name = "path" }, -- file system paths
|
||||
}),
|
||||
|
||||
-- configure lspkind for vs-code like pictograms in completion menu
|
||||
formatting = {
|
||||
format = lspkind.cmp_format({
|
||||
maxwidth = 50,
|
||||
ellipsis_char = "...",
|
||||
}),
|
||||
},
|
||||
})
|
||||
9
config/nvim/plugins/comment.lua
Normal file
@@ -0,0 +1,9 @@
|
||||
local comment = require("Comment")
|
||||
|
||||
local ts_context_commentstring = require("ts_context_commentstring.integrations.comment_nvim")
|
||||
|
||||
-- enable comment
|
||||
comment.setup({
|
||||
-- for commenting tsx, jsx, svelte, html files
|
||||
pre_hook = ts_context_commentstring.create_pre_hook(),
|
||||
})
|
||||
33
config/nvim/plugins/fine-cmdline.lua
Normal file
@@ -0,0 +1,33 @@
|
||||
require('fine-cmdline').setup({
|
||||
cmdline = {
|
||||
enable_keymaps = true,
|
||||
smart_history = true,
|
||||
prompt = '> '
|
||||
},
|
||||
popup = {
|
||||
position = {
|
||||
row = '10%',
|
||||
col = '50%',
|
||||
},
|
||||
size = {
|
||||
width = '60%',
|
||||
},
|
||||
border = {
|
||||
style = 'rounded',
|
||||
},
|
||||
win_options = {
|
||||
winhighlight = 'Normal:Normal,FloatBorder:FloatBorder',
|
||||
},
|
||||
},
|
||||
hooks = {
|
||||
before_mount = function(input)
|
||||
-- code
|
||||
end,
|
||||
after_mount = function(input)
|
||||
-- code
|
||||
end,
|
||||
set_keymaps = function(imap, feedkeys)
|
||||
-- code
|
||||
end
|
||||
}
|
||||
})
|
||||
8
config/nvim/plugins/lsp.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
local lspconfig = require("lspconfig")
|
||||
|
||||
require'lspconfig'.pyright.setup{}
|
||||
require'lspconfig'.nil_ls.setup{}
|
||||
require'lspconfig'.marksman.setup{}
|
||||
require'lspconfig'.rust_analyzer.setup{}
|
||||
require'lspconfig'.yamlls.setup{}
|
||||
require'lspconfig'.bashls.setup{}
|
||||
47
config/nvim/plugins/nvim-tree.lua
Normal file
@@ -0,0 +1,47 @@
|
||||
local nvimtree = require("nvim-tree")
|
||||
|
||||
-- recommended settings from nvim-tree documentation
|
||||
vim.g.loaded_netrw = 1
|
||||
vim.g.loaded_netrwPlugin = 1
|
||||
|
||||
nvimtree.setup({
|
||||
view = {
|
||||
width = 35,
|
||||
relativenumber = true,
|
||||
},
|
||||
-- change folder arrow icons
|
||||
renderer = {
|
||||
indent_markers = {
|
||||
enable = true,
|
||||
},
|
||||
icons = {
|
||||
glyphs = {
|
||||
folder = {
|
||||
arrow_closed = "", -- arrow when folder is closed
|
||||
arrow_open = "", -- arrow when folder is open
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
-- disable window_picker for
|
||||
-- explorer to work well with
|
||||
-- window splits
|
||||
actions = {
|
||||
open_file = {
|
||||
window_picker = {
|
||||
enable = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
filters = {
|
||||
custom = { ".DS_Store" },
|
||||
},
|
||||
git = {
|
||||
ignore = false,
|
||||
},
|
||||
})
|
||||
|
||||
-- set keymaps
|
||||
local keymap = vim.keymap -- for conciseness
|
||||
|
||||
keymap.set("n", "<leader>fe", "<cmd>NvimTreeToggle<CR>", { desc = "Toggle file explorer" }) -- toggle file explorer
|
||||
20
config/nvim/plugins/telescope.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
require('telescope').setup({
|
||||
extensions = {
|
||||
fzf = {
|
||||
fuzzy = true, -- false will only do exact matching
|
||||
override_generic_sorter = true, -- override the generic sorter
|
||||
override_file_sorter = true, -- override the file sorter
|
||||
case_mode = "smart_case", -- or "ignore_case" or "respect_case"
|
||||
-- the default case_mode is "smart_case"
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
require('telescope').load_extension('fzf')
|
||||
|
||||
local builtin = require('telescope.builtin')
|
||||
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
|
||||
vim.keymap.set('n', '<leader>lg', builtin.live_grep, {})
|
||||
vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
|
||||
vim.keymap.set('n', '<leader>fh', builtin.help_tags, {})
|
||||
vim.keymap.set("n", "<leader>ft", "<cmd>TodoTelescope<cr>", { desc = "Find todos" })
|
||||
14
config/nvim/plugins/todo-comments.lua
Normal file
@@ -0,0 +1,14 @@
|
||||
local todo_comments = require("todo-comments")
|
||||
|
||||
-- set keymaps
|
||||
local keymap = vim.keymap -- for conciseness
|
||||
|
||||
keymap.set("n", "]t", function()
|
||||
todo_comments.jump_next()
|
||||
end, { desc = "Next todo comment" })
|
||||
|
||||
keymap.set("n", "[t", function()
|
||||
todo_comments.jump_prev()
|
||||
end, { desc = "Previous todo comment" })
|
||||
|
||||
todo_comments.setup()
|
||||
9
config/nvim/plugins/treesitter.lua
Normal file
@@ -0,0 +1,9 @@
|
||||
require('nvim-treesitter.configs').setup {
|
||||
ensure_installed = {},
|
||||
|
||||
auto_install = false,
|
||||
|
||||
highlight = { enable = true },
|
||||
|
||||
indent = { enable = true },
|
||||
}
|
||||
9
config/rofi/config-emoji.nix
Normal file
@@ -0,0 +1,9 @@
|
||||
{...}: {
|
||||
home.file.".config/rofi/config-emoji.rasi".text = ''
|
||||
@import "~/.config/rofi/config-long.rasi"
|
||||
entry {
|
||||
width: 45%;
|
||||
placeholder: "🔎 Search Emoji's 👀";
|
||||
}
|
||||
'';
|
||||
}
|
||||
16
config/rofi/config-long.nix
Normal file
@@ -0,0 +1,16 @@
|
||||
{...}: {
|
||||
home.file.".config/rofi/config-long.rasi".text = ''
|
||||
@import "~/.config/rofi/config.rasi"
|
||||
window {
|
||||
width: 50%;
|
||||
}
|
||||
entry {
|
||||
placeholder: "🔎 Search ";
|
||||
}
|
||||
listview {
|
||||
columns: 1;
|
||||
lines: 8;
|
||||
scrollbar: true;
|
||||
}
|
||||
'';
|
||||
}
|
||||
214
config/rofi/rofi.nix
Normal file
@@ -0,0 +1,214 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
programs = {
|
||||
rofi = {
|
||||
enable = true;
|
||||
package = pkgs.rofi-wayland;
|
||||
extraConfig = {
|
||||
modi = "drun,filebrowser,run";
|
||||
show-icons = true;
|
||||
icon-theme = "Papirus";
|
||||
location = 0;
|
||||
font = "JetBrainsMono Nerd Font Mono 12";
|
||||
drun-display-format = "{icon} {name}";
|
||||
display-drun = " Apps";
|
||||
display-run = " Run";
|
||||
display-filebrowser = " File";
|
||||
};
|
||||
theme = let
|
||||
inherit (config.lib.formats.rasi) mkLiteral;
|
||||
in {
|
||||
"*" = {
|
||||
bg = mkLiteral "#${config.stylix.base16Scheme.base00}";
|
||||
bg-alt = mkLiteral "#${config.stylix.base16Scheme.base09}";
|
||||
foreground = mkLiteral "#${config.stylix.base16Scheme.base01}";
|
||||
selected = mkLiteral "#${config.stylix.base16Scheme.base08}";
|
||||
active = mkLiteral "#${config.stylix.base16Scheme.base0B}";
|
||||
text-selected = mkLiteral "#${config.stylix.base16Scheme.base00}";
|
||||
text-color = mkLiteral "#${config.stylix.base16Scheme.base05}";
|
||||
border-color = mkLiteral "#${config.stylix.base16Scheme.base0F}";
|
||||
urgent = mkLiteral "#${config.stylix.base16Scheme.base0E}";
|
||||
};
|
||||
"window" = {
|
||||
width = mkLiteral "50%";
|
||||
transparency = "real";
|
||||
orientation = mkLiteral "vertical";
|
||||
cursor = mkLiteral "default";
|
||||
spacing = mkLiteral "0px";
|
||||
border = mkLiteral "2px";
|
||||
border-color = "@border-color";
|
||||
border-radius = mkLiteral "20px";
|
||||
background-color = mkLiteral "@bg";
|
||||
};
|
||||
"mainbox" = {
|
||||
padding = mkLiteral "15px";
|
||||
enabled = true;
|
||||
orientation = mkLiteral "vertical";
|
||||
children = map mkLiteral [
|
||||
"inputbar"
|
||||
"listbox"
|
||||
];
|
||||
background-color = mkLiteral "transparent";
|
||||
};
|
||||
"inputbar" = {
|
||||
enabled = true;
|
||||
padding = mkLiteral "10px 10px 200px 10px";
|
||||
margin = mkLiteral "10px";
|
||||
background-color = mkLiteral "transparent";
|
||||
border-radius = "25px";
|
||||
orientation = mkLiteral "horizontal";
|
||||
children = map mkLiteral [
|
||||
"entry"
|
||||
"dummy"
|
||||
"mode-switcher"
|
||||
];
|
||||
background-image = mkLiteral ''url("~/Pictures/Wallpapers/attack-on-titan-mikasa-ackerman.jpg", width)'';
|
||||
};
|
||||
"entry" = {
|
||||
enabled = true;
|
||||
expand = false;
|
||||
width = mkLiteral "20%";
|
||||
padding = mkLiteral "10px";
|
||||
border-radius = mkLiteral "12px";
|
||||
background-color = mkLiteral "@selected";
|
||||
text-color = mkLiteral "@text-selected";
|
||||
cursor = mkLiteral "text";
|
||||
placeholder = "🖥️ Search ";
|
||||
placeholder-color = mkLiteral "inherit";
|
||||
};
|
||||
"listbox" = {
|
||||
spacing = mkLiteral "10px";
|
||||
padding = mkLiteral "10px";
|
||||
background-color = mkLiteral "transparent";
|
||||
orientation = mkLiteral "vertical";
|
||||
children = map mkLiteral [
|
||||
"message"
|
||||
"listview"
|
||||
];
|
||||
};
|
||||
"listview" = {
|
||||
enabled = true;
|
||||
columns = 2;
|
||||
lines = 6;
|
||||
cycle = true;
|
||||
dynamic = true;
|
||||
scrollbar = false;
|
||||
layout = mkLiteral "vertical";
|
||||
reverse = false;
|
||||
fixed-height = false;
|
||||
fixed-columns = true;
|
||||
spacing = mkLiteral "10px";
|
||||
background-color = mkLiteral "transparent";
|
||||
border = mkLiteral "0px";
|
||||
};
|
||||
"dummy" = {
|
||||
expand = true;
|
||||
background-color = mkLiteral "transparent";
|
||||
};
|
||||
"mode-switcher" = {
|
||||
enabled = true;
|
||||
spacing = mkLiteral "10px";
|
||||
background-color = mkLiteral "transparent";
|
||||
};
|
||||
"button" = {
|
||||
width = mkLiteral "5%";
|
||||
padding = mkLiteral "12px";
|
||||
border-radius = mkLiteral "12px";
|
||||
background-color = mkLiteral "@text-selected";
|
||||
text-color = mkLiteral "@text-color";
|
||||
cursor = mkLiteral "pointer";
|
||||
};
|
||||
"button selected" = {
|
||||
background-color = mkLiteral "@selected";
|
||||
text-color = mkLiteral "@text-selected";
|
||||
};
|
||||
"scrollbar" = {
|
||||
width = mkLiteral "4px";
|
||||
border = 0;
|
||||
handle-color = mkLiteral "@border-color";
|
||||
handle-width = mkLiteral "8px";
|
||||
padding = 0;
|
||||
};
|
||||
"element" = {
|
||||
enabled = true;
|
||||
spacing = mkLiteral "10px";
|
||||
padding = mkLiteral "10px";
|
||||
border-radius = mkLiteral "12px";
|
||||
background-color = mkLiteral "transparent";
|
||||
cursor = mkLiteral "pointer";
|
||||
};
|
||||
"element normal.normal" = {
|
||||
background-color = mkLiteral "inherit";
|
||||
text-color = mkLiteral "inherit";
|
||||
};
|
||||
"element normal.urgent" = {
|
||||
background-color = mkLiteral "@urgent";
|
||||
text-color = mkLiteral "@foreground";
|
||||
};
|
||||
"element normal.active" = {
|
||||
background-color = mkLiteral "@active";
|
||||
text-color = mkLiteral "@foreground";
|
||||
};
|
||||
"element selected.normal" = {
|
||||
background-color = mkLiteral "@selected";
|
||||
text-color = mkLiteral "@text-selected";
|
||||
};
|
||||
"element selected.urgent" = {
|
||||
background-color = mkLiteral "@urgent";
|
||||
text-color = mkLiteral "@text-selected";
|
||||
};
|
||||
"element selected.active" = {
|
||||
background-color = mkLiteral "@urgent";
|
||||
text-color = mkLiteral "@text-selected";
|
||||
};
|
||||
"element alternate.normal" = {
|
||||
background-color = mkLiteral "transparent";
|
||||
text-color = mkLiteral "inherit";
|
||||
};
|
||||
"element alternate.urgent" = {
|
||||
background-color = mkLiteral "transparent";
|
||||
text-color = mkLiteral "inherit";
|
||||
};
|
||||
"element alternate.active" = {
|
||||
background-color = mkLiteral "transparent";
|
||||
text-color = mkLiteral "inherit";
|
||||
};
|
||||
"element-icon" = {
|
||||
background-color = mkLiteral "transparent";
|
||||
text-color = mkLiteral "inherit";
|
||||
size = mkLiteral "36px";
|
||||
cursor = mkLiteral "inherit";
|
||||
};
|
||||
"element-text" = {
|
||||
background-color = mkLiteral "transparent";
|
||||
font = "JetBrainsMono Nerd Font Mono 12";
|
||||
text-color = mkLiteral "inherit";
|
||||
cursor = mkLiteral "inherit";
|
||||
vertical-align = mkLiteral "0.5";
|
||||
horizontal-align = mkLiteral "0.0";
|
||||
};
|
||||
"message" = {
|
||||
background-color = mkLiteral "transparent";
|
||||
border = mkLiteral "0px";
|
||||
};
|
||||
"textbox" = {
|
||||
padding = mkLiteral "12px";
|
||||
border-radius = mkLiteral "10px";
|
||||
background-color = mkLiteral "@bg-alt";
|
||||
text-color = mkLiteral "@bg";
|
||||
vertical-align = mkLiteral "0.5";
|
||||
horizontal-align = mkLiteral "0.0";
|
||||
};
|
||||
"error-message" = {
|
||||
padding = mkLiteral "12px";
|
||||
border-radius = mkLiteral "20px";
|
||||
background-color = mkLiteral "@bg-alt";
|
||||
text-color = mkLiteral "@bg";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
310
config/swaync.nix
Normal file
@@ -0,0 +1,310 @@
|
||||
{config, ...}: {
|
||||
home.file.".config/swaync/config.json".text = ''
|
||||
{
|
||||
"$schema": "/etc/xdg/swaync/configSchema.json",
|
||||
"positionX": "right",
|
||||
"positionY": "top",
|
||||
"control-center-margin-top": 10,
|
||||
"control-center-margin-bottom": 10,
|
||||
"control-center-margin-right": 10,
|
||||
"control-center-margin-left": 10,
|
||||
"notification-icon-size": 64,
|
||||
"notification-body-image-height": 100,
|
||||
"notification-body-image-width": 200,
|
||||
"timeout": 10,
|
||||
"timeout-low": 5,
|
||||
"timeout-critical": 0,
|
||||
"fit-to-screen": false,
|
||||
"control-center-width": 500,
|
||||
"control-center-height": 1025,
|
||||
"notification-window-width": 500,
|
||||
"keyboard-shortcuts": true,
|
||||
"image-visibility": "when-available",
|
||||
"transition-time": 200,
|
||||
"hide-on-clear": false,
|
||||
"hide-on-action": true,
|
||||
"script-fail-notify": true,
|
||||
"widgets": [
|
||||
"title",
|
||||
"mpris",
|
||||
"volume",
|
||||
"backlight",
|
||||
"dnd",
|
||||
"notifications"
|
||||
],
|
||||
"widget-config": {
|
||||
"title": {
|
||||
"text": "Notification Center",
|
||||
"clear-all-button": true,
|
||||
"button-text": " Clear All"
|
||||
},
|
||||
"dnd": {
|
||||
"text": "Do Not Disturb"
|
||||
},
|
||||
"label": {
|
||||
"max-lines": 1,
|
||||
"text": "Notification Center"
|
||||
},
|
||||
"mpris": {
|
||||
"image-size": 96,
|
||||
"image-radius": 7
|
||||
},
|
||||
"volume": {
|
||||
"label": ""
|
||||
},
|
||||
"backlight": {
|
||||
"label": ""
|
||||
},
|
||||
}
|
||||
}
|
||||
'';
|
||||
home.file.".config/swaync/style.css".text = ''
|
||||
* {
|
||||
font-family: JetBrainsMono Nerd Font Mono;
|
||||
font-weight: bold;
|
||||
}
|
||||
.control-center .notification-row:focus,
|
||||
.control-center .notification-row:hover {
|
||||
opacity: 0.9;
|
||||
background: #${config.stylix.base16Scheme.base00}
|
||||
}
|
||||
.notification-row {
|
||||
outline: none;
|
||||
margin: 10px;
|
||||
padding: 0;
|
||||
}
|
||||
.notification {
|
||||
background: transparent;
|
||||
padding: 0;
|
||||
margin: 0px;
|
||||
}
|
||||
.notification-content {
|
||||
background: #${config.stylix.base16Scheme.base00};
|
||||
padding: 10px;
|
||||
border-radius: 5px;
|
||||
border: 2px solid #${config.stylix.base16Scheme.base0D};
|
||||
margin: 0;
|
||||
}
|
||||
.notification-default-action {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.close-button {
|
||||
background: #${config.stylix.base16Scheme.base08};
|
||||
color: #${config.stylix.base16Scheme.base00};
|
||||
text-shadow: none;
|
||||
padding: 0;
|
||||
border-radius: 5px;
|
||||
margin-top: 5px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
.close-button:hover {
|
||||
box-shadow: none;
|
||||
background: #${config.stylix.base16Scheme.base0D};
|
||||
transition: all .15s ease-in-out;
|
||||
border: none
|
||||
}
|
||||
.notification-action {
|
||||
border: 2px solid #${config.stylix.base16Scheme.base0D};
|
||||
border-top: none;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.notification-default-action:hover,
|
||||
.notification-action:hover {
|
||||
color: #${config.stylix.base16Scheme.base0B};
|
||||
background: #${config.stylix.base16Scheme.base0B}
|
||||
}
|
||||
.notification-default-action {
|
||||
border-radius: 5px;
|
||||
margin: 0px;
|
||||
}
|
||||
.notification-default-action:not(:only-child) {
|
||||
border-bottom-left-radius: 7px;
|
||||
border-bottom-right-radius: 7px
|
||||
}
|
||||
.notification-action:first-child {
|
||||
border-bottom-left-radius: 10px;
|
||||
background: #${config.stylix.base16Scheme.base00}
|
||||
}
|
||||
.notification-action:last-child {
|
||||
border-bottom-right-radius: 10px;
|
||||
background: #${config.stylix.base16Scheme.base00}
|
||||
}
|
||||
.inline-reply {
|
||||
margin-top: 8px
|
||||
}
|
||||
.inline-reply-entry {
|
||||
background: #${config.stylix.base16Scheme.base00};
|
||||
color: #${config.stylix.base16Scheme.base05};
|
||||
caret-color: #${config.stylix.base16Scheme.base05};
|
||||
border: 1px solid #${config.stylix.base16Scheme.base09};
|
||||
border-radius: 5px
|
||||
}
|
||||
.inline-reply-button {
|
||||
margin-left: 4px;
|
||||
background: #${config.stylix.base16Scheme.base00};
|
||||
border: 1px solid #${config.stylix.base16Scheme.base09};
|
||||
border-radius: 5px;
|
||||
color: #${config.stylix.base16Scheme.base05}
|
||||
}
|
||||
.inline-reply-button:disabled {
|
||||
background: initial;
|
||||
color: #${config.stylix.base16Scheme.base03};
|
||||
border: 1px solid transparent
|
||||
}
|
||||
.inline-reply-button:hover {
|
||||
background: #${config.stylix.base16Scheme.base00}
|
||||
}
|
||||
.body-image {
|
||||
margin-top: 6px;
|
||||
background-color: #${config.stylix.base16Scheme.base05};
|
||||
border-radius: 5px
|
||||
}
|
||||
.summary {
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
background: transparent;
|
||||
color: rgba(158, 206, 106, 1);
|
||||
text-shadow: none
|
||||
}
|
||||
.time {
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
background: transparent;
|
||||
color: #${config.stylix.base16Scheme.base05};
|
||||
text-shadow: none;
|
||||
margin-right: 18px
|
||||
}
|
||||
.body {
|
||||
font-size: 15px;
|
||||
font-weight: 400;
|
||||
background: transparent;
|
||||
color: #${config.stylix.base16Scheme.base05};
|
||||
text-shadow: none
|
||||
}
|
||||
.control-center {
|
||||
background: #${config.stylix.base16Scheme.base00};
|
||||
border: 2px solid #${config.stylix.base16Scheme.base0C};
|
||||
border-radius: 5px;
|
||||
}
|
||||
.control-center-list {
|
||||
background: transparent
|
||||
}
|
||||
.control-center-list-placeholder {
|
||||
opacity: .5
|
||||
}
|
||||
.floating-notifications {
|
||||
background: transparent
|
||||
}
|
||||
.blank-window {
|
||||
background: alpha(black, 0)
|
||||
}
|
||||
.widget-title {
|
||||
color: #${config.stylix.base16Scheme.base0B};
|
||||
background: #${config.stylix.base16Scheme.base00};
|
||||
padding: 5px 10px;
|
||||
margin: 10px 10px 5px 10px;
|
||||
font-size: 1.5rem;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.widget-title>button {
|
||||
font-size: 1rem;
|
||||
color: #${config.stylix.base16Scheme.base05};
|
||||
text-shadow: none;
|
||||
background: #${config.stylix.base16Scheme.base00};
|
||||
box-shadow: none;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.widget-title>button:hover {
|
||||
background: #${config.stylix.base16Scheme.base08};
|
||||
color: #${config.stylix.base16Scheme.base00};
|
||||
}
|
||||
.widget-dnd {
|
||||
background: #${config.stylix.base16Scheme.base00};
|
||||
padding: 5px 10px;
|
||||
margin: 10px 10px 5px 10px;
|
||||
border-radius: 5px;
|
||||
font-size: large;
|
||||
color: #${config.stylix.base16Scheme.base0B};
|
||||
}
|
||||
.widget-dnd>switch {
|
||||
border-radius: 5px;
|
||||
/* border: 1px solid #${config.stylix.base16Scheme.base0B}; */
|
||||
background: #${config.stylix.base16Scheme.base0B};
|
||||
}
|
||||
.widget-dnd>switch:checked {
|
||||
background: #${config.stylix.base16Scheme.base08};
|
||||
border: 1px solid #${config.stylix.base16Scheme.base08};
|
||||
}
|
||||
.widget-dnd>switch slider {
|
||||
background: #${config.stylix.base16Scheme.base00};
|
||||
border-radius: 5px
|
||||
}
|
||||
.widget-dnd>switch:checked slider {
|
||||
background: #${config.stylix.base16Scheme.base00};
|
||||
border-radius: 5px
|
||||
}
|
||||
.widget-label {
|
||||
margin: 10px 10px 5px 10px;
|
||||
}
|
||||
.widget-label>label {
|
||||
font-size: 1rem;
|
||||
color: #${config.stylix.base16Scheme.base05};
|
||||
}
|
||||
.widget-mpris {
|
||||
color: #${config.stylix.base16Scheme.base05};
|
||||
padding: 5px 10px;
|
||||
margin: 10px 10px 5px 10px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.widget-mpris > box > button {
|
||||
border-radius: 5px;
|
||||
}
|
||||
.widget-mpris-player {
|
||||
padding: 5px 10px;
|
||||
margin: 10px
|
||||
}
|
||||
.widget-mpris-title {
|
||||
font-weight: 700;
|
||||
font-size: 1.25rem
|
||||
}
|
||||
.widget-mpris-subtitle {
|
||||
font-size: 1.1rem
|
||||
}
|
||||
.widget-menubar>box>.menu-button-bar>button {
|
||||
border: none;
|
||||
background: transparent
|
||||
}
|
||||
.topbar-buttons>button {
|
||||
border: none;
|
||||
background: transparent
|
||||
}
|
||||
.widget-volume {
|
||||
background: #${config.stylix.base16Scheme.base01};
|
||||
padding: 5px;
|
||||
margin: 10px 10px 5px 10px;
|
||||
border-radius: 5px;
|
||||
font-size: x-large;
|
||||
color: #${config.stylix.base16Scheme.base05};
|
||||
}
|
||||
.widget-volume>box>button {
|
||||
background: #${config.stylix.base16Scheme.base0B};
|
||||
border: none
|
||||
}
|
||||
.per-app-volume {
|
||||
background-color: #${config.stylix.base16Scheme.base00};
|
||||
padding: 4px 8px 8px;
|
||||
margin: 0 8px 8px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.widget-backlight {
|
||||
background: #${config.stylix.base16Scheme.base01};
|
||||
padding: 5px;
|
||||
margin: 10px 10px 5px 10px;
|
||||
border-radius: 5px;
|
||||
font-size: x-large;
|
||||
color: #${config.stylix.base16Scheme.base05}
|
||||
}
|
||||
'';
|
||||
}
|
||||
BIN
config/wallpapers/attack-on-titan-mikasa-ackerman.jpg
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
config/wallpapers/edward-elric-fullmetal-alchemist.jpg
Normal file
|
After Width: | Height: | Size: 868 KiB |
BIN
config/wallpapers/fire-nation.jpg
Normal file
|
After Width: | Height: | Size: 396 KiB |
BIN
config/wallpapers/four-elements.jpg
Normal file
|
After Width: | Height: | Size: 208 KiB |
BIN
config/wallpapers/rammstein-log-two.jpg
Normal file
|
After Width: | Height: | Size: 128 KiB |
BIN
config/wallpapers/rammstein-logo-one.jpg
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
config/wallpapers/rammstein-logo-three.jpg
Normal file
|
After Width: | Height: | Size: 269 KiB |
BIN
config/wallpapers/rammstein-one.jpg
Normal file
|
After Width: | Height: | Size: 430 KiB |
277
config/waybar.nix
Normal file
@@ -0,0 +1,277 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
host,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
betterTransition = "all 0.3s cubic-bezier(.55,-0.68,.48,1.682)";
|
||||
inherit (import ../hosts/${host}/variables.nix) clock24h;
|
||||
in
|
||||
with lib; {
|
||||
# Configure & Theme Waybar
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
package = pkgs.waybar;
|
||||
settings = [
|
||||
{
|
||||
layer = "top";
|
||||
position = "top";
|
||||
modules-center = ["hyprland/workspaces"];
|
||||
modules-left = [
|
||||
"custom/startmenu"
|
||||
"hyprland/window"
|
||||
"pulseaudio"
|
||||
"cpu"
|
||||
"memory"
|
||||
"idle_inhibitor"
|
||||
];
|
||||
modules-right = [
|
||||
"custom/hyprbindings"
|
||||
"custom/notification"
|
||||
"custom/exit"
|
||||
"battery"
|
||||
"tray"
|
||||
"clock"
|
||||
];
|
||||
|
||||
"hyprland/workspaces" = {
|
||||
format = "{name}";
|
||||
format-icons = {
|
||||
default = " ";
|
||||
active = " ";
|
||||
urgent = " ";
|
||||
};
|
||||
on-scroll-up = "hyprctl dispatch workspace e+1";
|
||||
on-scroll-down = "hyprctl dispatch workspace e-1";
|
||||
};
|
||||
"clock" = {
|
||||
format =
|
||||
if clock24h == true
|
||||
then '' {:L%H:%M}''
|
||||
else '' {:L%I:%M %p}'';
|
||||
tooltip = true;
|
||||
tooltip-format = "<big>{:%A, %d.%B %Y }</big>\n<tt><small>{calendar}</small></tt>";
|
||||
};
|
||||
"hyprland/window" = {
|
||||
max-length = 22;
|
||||
separate-outputs = false;
|
||||
rewrite = {
|
||||
"" = " 🙈 No Windows? ";
|
||||
};
|
||||
};
|
||||
"memory" = {
|
||||
interval = 5;
|
||||
format = " {}%";
|
||||
tooltip = true;
|
||||
};
|
||||
"cpu" = {
|
||||
interval = 5;
|
||||
format = " {usage:2}%";
|
||||
tooltip = true;
|
||||
};
|
||||
"disk" = {
|
||||
format = " {free}";
|
||||
tooltip = true;
|
||||
};
|
||||
"network" = {
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
format-ethernet = " {bandwidthDownOctets}";
|
||||
format-wifi = "{icon} {signalStrength}%";
|
||||
format-disconnected = "";
|
||||
tooltip = false;
|
||||
};
|
||||
"tray" = {
|
||||
spacing = 12;
|
||||
};
|
||||
"pulseaudio" = {
|
||||
format = "{icon} {volume}% {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 = "sleep 0.1 && pavucontrol";
|
||||
};
|
||||
"custom/exit" = {
|
||||
tooltip = false;
|
||||
format = "";
|
||||
on-click = "sleep 0.1 && wlogout";
|
||||
};
|
||||
"custom/startmenu" = {
|
||||
tooltip = false;
|
||||
format = "";
|
||||
# exec = "rofi -show drun";
|
||||
on-click = "sleep 0.1 && rofi-launcher";
|
||||
};
|
||||
"custom/hyprbindings" = {
|
||||
tooltip = false;
|
||||
format = "";
|
||||
on-click = "sleep 0.1 && list-hypr-bindings";
|
||||
};
|
||||
"idle_inhibitor" = {
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
activated = "";
|
||||
deactivated = "";
|
||||
};
|
||||
tooltip = "true";
|
||||
};
|
||||
"custom/notification" = {
|
||||
tooltip = false;
|
||||
format = "{icon} {}";
|
||||
format-icons = {
|
||||
notification = "<span foreground='red'><sup></sup></span>";
|
||||
none = "";
|
||||
dnd-notification = "<span foreground='red'><sup></sup></span>";
|
||||
dnd-none = "";
|
||||
inhibited-notification = "<span foreground='red'><sup></sup></span>";
|
||||
inhibited-none = "";
|
||||
dnd-inhibited-notification = "<span foreground='red'><sup></sup></span>";
|
||||
dnd-inhibited-none = "";
|
||||
};
|
||||
return-type = "json";
|
||||
exec-if = "which swaync-client";
|
||||
exec = "swaync-client -swb";
|
||||
on-click = "sleep 0.1 && task-waybar";
|
||||
escape = true;
|
||||
};
|
||||
"battery" = {
|
||||
states = {
|
||||
warning = 30;
|
||||
critical = 15;
|
||||
};
|
||||
format = "{icon} {capacity}%";
|
||||
format-charging = " {capacity}%";
|
||||
format-plugged = " {capacity}%";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
on-click = "";
|
||||
tooltip = false;
|
||||
};
|
||||
}
|
||||
];
|
||||
style = concatStrings [
|
||||
''
|
||||
* {
|
||||
font-family: JetBrainsMono Nerd Font Mono;
|
||||
font-size: 16px;
|
||||
border-radius: 0px;
|
||||
border: none;
|
||||
min-height: 0px;
|
||||
}
|
||||
window#waybar {
|
||||
background: rgba(0,0,0,0);
|
||||
}
|
||||
#workspaces {
|
||||
color: #${config.stylix.base16Scheme.base00};
|
||||
background: #${config.stylix.base16Scheme.base01};
|
||||
margin: 4px 4px;
|
||||
padding: 5px 5px;
|
||||
border-radius: 16px;
|
||||
}
|
||||
#workspaces button {
|
||||
font-weight: bold;
|
||||
padding: 0px 5px;
|
||||
margin: 0px 3px;
|
||||
border-radius: 16px;
|
||||
color: #${config.stylix.base16Scheme.base00};
|
||||
background: linear-gradient(45deg, #${config.stylix.base16Scheme.base08}, #${config.stylix.base16Scheme.base0D});
|
||||
opacity: 0.5;
|
||||
transition: ${betterTransition};
|
||||
}
|
||||
#workspaces button.active {
|
||||
font-weight: bold;
|
||||
padding: 0px 5px;
|
||||
margin: 0px 3px;
|
||||
border-radius: 16px;
|
||||
color: #${config.stylix.base16Scheme.base00};
|
||||
background: linear-gradient(45deg, #${config.stylix.base16Scheme.base08}, #${config.stylix.base16Scheme.base0D});
|
||||
transition: ${betterTransition};
|
||||
opacity: 1.0;
|
||||
min-width: 40px;
|
||||
}
|
||||
#workspaces button:hover {
|
||||
font-weight: bold;
|
||||
border-radius: 16px;
|
||||
color: #${config.stylix.base16Scheme.base00};
|
||||
background: linear-gradient(45deg, #${config.stylix.base16Scheme.base08}, #${config.stylix.base16Scheme.base0D});
|
||||
opacity: 0.8;
|
||||
transition: ${betterTransition};
|
||||
}
|
||||
tooltip {
|
||||
background: #${config.stylix.base16Scheme.base00};
|
||||
border: 1px solid #${config.stylix.base16Scheme.base08};
|
||||
border-radius: 12px;
|
||||
}
|
||||
tooltip label {
|
||||
color: #${config.stylix.base16Scheme.base08};
|
||||
}
|
||||
#window, #pulseaudio, #cpu, #memory, #idle_inhibitor {
|
||||
font-weight: bold;
|
||||
margin: 4px 0px;
|
||||
margin-left: 7px;
|
||||
padding: 0px 18px;
|
||||
background: #${config.stylix.base16Scheme.base04};
|
||||
color: #${config.stylix.base16Scheme.base00};
|
||||
border-radius: 24px 10px 24px 10px;
|
||||
}
|
||||
#custom-startmenu {
|
||||
color: #${config.stylix.base16Scheme.base0B};
|
||||
background: #${config.stylix.base16Scheme.base02};
|
||||
font-size: 28px;
|
||||
margin: 0px;
|
||||
padding: 0px 30px 0px 15px;
|
||||
border-radius: 0px 0px 40px 0px;
|
||||
}
|
||||
#custom-hyprbindings, #network, #battery,
|
||||
#custom-notification, #tray, #custom-exit {
|
||||
font-weight: bold;
|
||||
background: #${config.stylix.base16Scheme.base0F};
|
||||
color: #${config.stylix.base16Scheme.base00};
|
||||
margin: 4px 0px;
|
||||
margin-right: 7px;
|
||||
border-radius: 10px 24px 10px 24px;
|
||||
padding: 0px 18px;
|
||||
}
|
||||
#clock {
|
||||
font-weight: bold;
|
||||
color: #0D0E15;
|
||||
background: linear-gradient(90deg, #${config.stylix.base16Scheme.base0E}, #${config.stylix.base16Scheme.base0C});
|
||||
margin: 0px;
|
||||
padding: 0px 15px 0px 30px;
|
||||
border-radius: 0px 0px 0px 40px;
|
||||
}
|
||||
''
|
||||
];
|
||||
};
|
||||
}
|
||||
101
config/wlogout.nix
Normal file
@@ -0,0 +1,101 @@
|
||||
{config, ...}: {
|
||||
programs.wlogout = {
|
||||
enable = true;
|
||||
layout = [
|
||||
{
|
||||
label = "shutdown";
|
||||
action = "sleep 1; systemctl poweroff";
|
||||
text = "Shutdown";
|
||||
keybind = "s";
|
||||
}
|
||||
{
|
||||
"label" = "reboot";
|
||||
"action" = "sleep 1; systemctl reboot";
|
||||
"text" = "Reboot";
|
||||
"keybind" = "r";
|
||||
}
|
||||
{
|
||||
"label" = "logout";
|
||||
"action" = "sleep 1; hyprctl dispatch exit";
|
||||
"text" = "Exit";
|
||||
"keybind" = "e";
|
||||
}
|
||||
{
|
||||
"label" = "suspend";
|
||||
"action" = "sleep 1; systemctl suspend";
|
||||
"text" = "Suspend";
|
||||
"keybind" = "u";
|
||||
}
|
||||
{
|
||||
"label" = "lock";
|
||||
"action" = "sleep 1; hyprlock";
|
||||
"text" = "Lock";
|
||||
"keybind" = "l";
|
||||
}
|
||||
{
|
||||
"label" = "hibernate";
|
||||
"action" = "sleep 1; systemctl hibernate";
|
||||
"text" = "Hibernate";
|
||||
"keybind" = "h";
|
||||
}
|
||||
];
|
||||
style = ''
|
||||
* {
|
||||
font-family: "JetBrainsMono NF", FontAwesome, sans-serif;
|
||||
background-image: none;
|
||||
transition: 20ms;
|
||||
}
|
||||
window {
|
||||
background-color: rgba(12, 12, 12, 0.1);
|
||||
}
|
||||
button {
|
||||
color: #${config.stylix.base16Scheme.base05};
|
||||
font-size:20px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 25%;
|
||||
border-style: solid;
|
||||
background-color: rgba(12, 12, 12, 0.3);
|
||||
border: 3px solid #${config.stylix.base16Scheme.base05};
|
||||
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
|
||||
}
|
||||
button:focus,
|
||||
button:active,
|
||||
button:hover {
|
||||
color: #${config.stylix.base16Scheme.base0B};
|
||||
background-color: rgba(12, 12, 12, 0.5);
|
||||
border: 3px solid #${config.stylix.base16Scheme.base0B};
|
||||
}
|
||||
#logout {
|
||||
margin: 10px;
|
||||
border-radius: 20px;
|
||||
background-image: image(url("icons/logout.png"));
|
||||
}
|
||||
#suspend {
|
||||
margin: 10px;
|
||||
border-radius: 20px;
|
||||
background-image: image(url("icons/suspend.png"));
|
||||
}
|
||||
#shutdown {
|
||||
margin: 10px;
|
||||
border-radius: 20px;
|
||||
background-image: image(url("icons/shutdown.png"));
|
||||
}
|
||||
#reboot {
|
||||
margin: 10px;
|
||||
border-radius: 20px;
|
||||
background-image: image(url("icons/reboot.png"));
|
||||
}
|
||||
#lock {
|
||||
margin: 10px;
|
||||
border-radius: 20px;
|
||||
background-image: image(url("icons/lock.png"));
|
||||
}
|
||||
#hibernate {
|
||||
margin: 10px;
|
||||
border-radius: 20px;
|
||||
background-image: image(url("icons/hibernate.png"));
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
BIN
config/wlogout/hibernate.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
config/wlogout/lock.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
config/wlogout/logout.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
config/wlogout/reboot.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
config/wlogout/shutdown.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
config/wlogout/suspend.png
Normal file
|
After Width: | Height: | Size: 4.4 KiB |