aboutsummaryrefslogtreecommitdiff
path: root/modules/home-manager
diff options
context:
space:
mode:
authorschererleander <leander@schererleander.de>2025-04-29 16:59:25 +0200
committerschererleander <leander@schererleander.de>2025-04-29 16:59:25 +0200
commitdb88d50e8924cba8b424c0ea7546b81baccd9c5c (patch)
tree44b2b1082c587b47fb1f08d620ee707ddd4adf27 /modules/home-manager
parent539b3e2836e4e7177e65b3df10a4bfe68f9f4d23 (diff)
initial commit
Diffstat (limited to 'modules/home-manager')
-rw-r--r--modules/home-manager/default.nix13
-rw-r--r--modules/home-manager/emacs.nix13
-rw-r--r--modules/home-manager/foot.nix48
-rw-r--r--modules/home-manager/git.nix23
-rw-r--r--modules/home-manager/neovim/default.nix57
-rw-r--r--modules/home-manager/neovim/lua/autocmds.lua8
-rw-r--r--modules/home-manager/neovim/lua/keymaps.lua0
-rw-r--r--modules/home-manager/neovim/lua/options.lua45
-rw-r--r--modules/home-manager/neovim/lua/plugins.lua268
-rw-r--r--modules/home-manager/nextcloud.nix39
-rw-r--r--modules/home-manager/spicetify.nix21
-rw-r--r--modules/home-manager/sway.nix104
-rw-r--r--modules/home-manager/tmux.nix14
-rw-r--r--modules/home-manager/vencord.nix22
-rw-r--r--modules/home-manager/waybar.nix72
-rw-r--r--modules/home-manager/zsh.nix29
16 files changed, 776 insertions, 0 deletions
diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix
new file mode 100644
index 0000000..9e5a958
--- /dev/null
+++ b/modules/home-manager/default.nix
@@ -0,0 +1,13 @@
+{ pkgs, lib, ... }: {
+ imports = [
+ ./git.nix
+ ./zsh.nix
+ ./foot.nix
+ ./sway.nix
+ ./tmux.nix
+ ./emacs.nix
+ ./waybar.nix
+ ./neovim/default.nix
+ ./nextcloud.nix
+ ];
+}
diff --git a/modules/home-manager/emacs.nix b/modules/home-manager/emacs.nix
new file mode 100644
index 0000000..47192a4
--- /dev/null
+++ b/modules/home-manager/emacs.nix
@@ -0,0 +1,13 @@
+{ config, lib, pkgs, ... }:
+
+let
+ cfg = config.emacs;
+in {
+ options.emacs.enable = lib.mkEnableOption "Enable emacs and setup";
+ config = lib.mkIf cfg.enable {
+ programs.emacs = {
+ enable = true;
+ package = pkgs.emacs;
+ };
+ };
+}
diff --git a/modules/home-manager/foot.nix b/modules/home-manager/foot.nix
new file mode 100644
index 0000000..107b7bb
--- /dev/null
+++ b/modules/home-manager/foot.nix
@@ -0,0 +1,48 @@
+{ config, lib, pkgs, ... }:
+
+let
+ cfg = config.foot;
+in {
+ options.foot.enable = lib.mkEnableOption "Enable and configure the Foot terminal emulator";
+
+ config = lib.mkIf cfg.enable {
+ home.packages = with pkgs; [
+ ibm-plex
+ ];
+
+ programs.foot = {
+ enable = true;
+ settings = {
+ main = {
+ pad = "10x10";
+ font = "IBM Plex Mono:size=10";
+ line-height = 12;
+ };
+
+ colors = {
+ background = "000000";
+ foreground = "f8f8f6";
+
+ regular0 = "232a2d";
+ regular1 = "e57474";
+ regular2 = "8ccf7e";
+ regular3 = "e5c76b";
+ regular4 = "67b0e8";
+ regular5 = "c47fd5";
+ regular6 = "6cbfbf";
+ regular7 = "b3b9b8";
+
+ bright0 = "2d3437";
+ bright1 = "ef7e7e";
+ bright2 = "96d988";
+ bright3 = "f4d67a";
+ bright4 = "71baf2";
+ bright5 = "ce89df";
+ bright6 = "67cbe7";
+ bright7 = "bdc3c2";
+ };
+ };
+ };
+ };
+}
+
diff --git a/modules/home-manager/git.nix b/modules/home-manager/git.nix
new file mode 100644
index 0000000..2e44a34
--- /dev/null
+++ b/modules/home-manager/git.nix
@@ -0,0 +1,23 @@
+{ config, lib, pkgs, ... }:
+
+let
+ cfg = config.git;
+in {
+ options.git.enable = lib.mkEnableOption "Enable and configure Git";
+
+ config = lib.mkIf cfg.enable {
+ programs.git = {
+ enable = true;
+ userName = "schererleander";
+ userEmail = "leander@schererleander.de";
+
+ extraConfig = ''
+ [alias]
+ co = checkout
+ br = branch
+ st = status
+ '';
+ };
+ };
+}
+
diff --git a/modules/home-manager/neovim/default.nix b/modules/home-manager/neovim/default.nix
new file mode 100644
index 0000000..415861a
--- /dev/null
+++ b/modules/home-manager/neovim/default.nix
@@ -0,0 +1,57 @@
+{ config, lib, pkgs, ... }:
+
+let
+ cfg = config.neovim;
+in {
+ options.neovim.enable = lib.mkEnableOption "Enable and setup neovim";
+
+ config = lib.mkIf cfg.enable {
+ xdg.configFile."nvim/lua".source = pkgs.lib.mkForce ./lua;
+
+ programs.neovim = {
+ enable = true;
+ vimAlias = true;
+
+ extraPackages = with pkgs; [
+ lua-language-server
+ ];
+
+ plugins = with pkgs.vimPlugins; [
+ lazy-nvim
+ nvim-lspconfig
+ friendly-snippets
+ telescope-nvim
+
+ (nvim-treesitter.withPlugins (plugins: with plugins; [
+ tree-sitter-bash
+ tree-sitter-c
+ tree-sitter-json
+ tree-sitter-lua
+ tree-sitter-python
+ tree-sitter-nix
+ tree-sitter-vim
+ tree-sitter-vimdoc
+ tree-sitter-yaml
+ tree-sitter-markdown
+ tree-sitter-markdown_inline
+ ]))
+ ];
+
+ extraLuaConfig = ''
+ vim.g.mapleader = " "
+ vim.g.maplocalleader = "\\"
+
+ require('options')
+ require('keymaps')
+ require('plugins')
+ require('autocmds')
+ '';
+ };
+
+ home.sessionVariables = rec {
+ EDITOR = "nvim";
+ GIT_EDITOR = EDITOR;
+ };
+ };
+}
+
diff --git a/modules/home-manager/neovim/lua/autocmds.lua b/modules/home-manager/neovim/lua/autocmds.lua
new file mode 100644
index 0000000..f7e6923
--- /dev/null
+++ b/modules/home-manager/neovim/lua/autocmds.lua
@@ -0,0 +1,8 @@
+vim.cmd('highlight WinSeparator guibg=None ctermbg=None')
+vim.cmd('highlight VertSplit guibg=NONE ctermbg=NONE')
+-- hide background lsp coloum
+vim.cmd('highlight SignColumn guibg=NONE ctermbg=None')
+
+-- transparent background
+vim.cmd('highlight Normal guibg=NONE ctermbg=NONE')
+vim.cmd('highlight NormalNC guibg=NONE ctermbg=NONE')
diff --git a/modules/home-manager/neovim/lua/keymaps.lua b/modules/home-manager/neovim/lua/keymaps.lua
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/modules/home-manager/neovim/lua/keymaps.lua
diff --git a/modules/home-manager/neovim/lua/options.lua b/modules/home-manager/neovim/lua/options.lua
new file mode 100644
index 0000000..891668f
--- /dev/null
+++ b/modules/home-manager/neovim/lua/options.lua
@@ -0,0 +1,45 @@
+local options = {
+ list = false,
+ backup = false, -- creates a backup file
+ clipboard = "unnamedplus", -- allows neovim to access the system clipboard
+ conceallevel = 2, -- so that `` is visible in markdown files
+ fileencoding = "utf-8", -- the encoding written to a file
+ hidden = true, -- required to keep multiple buffers and open multiple buffers
+ hlsearch = true, -- highlight all matches on previous search pattern
+ ignorecase = true, -- ignore case in search patterns
+ mouse = "a", -- allow the mouse to be used in neovim
+ laststatus = 3,
+ showmode = false, -- we don't need to see things like -- INSERT -- anymore
+ smartcase = true, -- smart case
+ smartindent = true, -- make indenting smarter again
+ splitbelow = true, -- force all horizontal splits to go below current window ↕️
+ splitright = true, -- force all vertical splits to go to the right of current window ↔️
+ swapfile = false, -- creates a swapfile
+ termguicolors = true, -- set term gui colors (most terminals support this)
+ timeoutlen = 100, -- time to wait for a mapped sequence to complete (in milliseconds)
+ undofile = true, -- enable persistent undo
+ updatetime = 300, -- faster completion (4000ms default) ⚡
+ writebackup = false, -- if a file is being edited by another program, it is not allowed to be edited
+ expandtab = true, -- use tabs instead of spaces ␣
+ pumheight = 10,
+ cmdheight = 2,
+ shiftwidth = 2, -- the number of spaces inserted for each indentation
+ tabstop = 2, -- insert 2 spaces for a tab ⇥
+ cursorline = false, -- highlight the current line (disabled for now)
+ number = false, -- set numbered lines
+ relativenumber = false, -- set relative numbered lines
+ numberwidth = 4, -- set number column width to 2 (default 4)
+ wrap = false, -- display lines as one long lines
+}
+
+vim.opt.shortmess:append 'c'
+
+for k, v in pairs(options) do
+ vim.opt[k] = v
+end
+
+vim.wo.list = false
+vim.cmd 'set whichwrap+=<,>,[,],h,l'
+
+-- lazy load
+vim.loader.enable()
diff --git a/modules/home-manager/neovim/lua/plugins.lua b/modules/home-manager/neovim/lua/plugins.lua
new file mode 100644
index 0000000..7c2d956
--- /dev/null
+++ b/modules/home-manager/neovim/lua/plugins.lua
@@ -0,0 +1,268 @@
+require("lazy").setup({
+ {
+ "ellisonleao/gruvbox.nvim",
+ priority = 1000,
+ config = function ()
+ require("gruvbox").setup({})
+ vim.cmd("colorscheme gruvbox")
+ end
+ },
+
+ {
+ "hrsh7th/nvim-cmp",
+ dependencies = {
+ "neovim/nvim-lspconfig",
+ "hrsh7th/cmp-nvim-lsp",
+ "hrsh7th/cmp-buffer",
+ "hrsh7th/cmp-path",
+ "hrsh7th/cmp-cmdline",
+ "L3MON4D3/LuaSnip",
+ "onsails/lspkind-nvim"
+ },
+ config = function()
+ local signs = {
+ Error = " ",
+ Warn = " ",
+ Hint = " ",
+ Info = " ",
+ }
+ for type, icon in pairs(signs) do
+ local hl = "DiagnosticSign" .. type
+ vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
+ end
+
+ local capabilities = require("cmp_nvim_lsp").default_capabilities()
+
+ local on_attach = function(client, bufnr)
+ local opts = { noremap = true, silent = true, buffer = bufnr }
+ vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
+ vim.keymap.set("n", "K", vim.lsp.buf.hover, opts)
+ vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts)
+ vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help, opts)
+ vim.keymap.set("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, opts)
+ vim.keymap.set("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, opts)
+ vim.keymap.set("n", "<leader>wl", function()
+ print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
+ end, opts)
+ vim.keymap.set("n", "<leader>D", vim.lsp.buf.type_definition, opts)
+ vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts)
+ vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, opts)
+ vim.keymap.set("n", "gr", vim.lsp.buf.references, opts)
+ vim.keymap.set("n", "<leader>e", 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", "<leader>q", vim.diagnostic.setloclist, opts)
+ end
+
+ local lspconfig = require("lspconfig")
+
+ lspconfig.lua_ls.setup({
+ capabilities = capabilities,
+ on_attach = on_attach,
+ settings = {
+ Lua = {
+ diagnostics = {
+ globals = { "vim" },
+ },
+ workspace = {
+ library = vim.api.nvim_get_runtime_file("", true),
+ },
+ telemetry = {
+ enable = false,
+ },
+ },
+ },
+ })
+
+ local cmp = require("cmp")
+ local luasnip = require("luasnip")
+ local lspkind = require("lspkind")
+ require("luasnip.loaders.from_vscode").lazy_load()
+
+ cmp.setup({
+ snippet = {
+ expand = function(args)
+ luasnip.lsp_expand(args.body)
+ end,
+ },
+ mapping = cmp.mapping.preset.insert({
+ ["<C-d>"] = cmp.mapping.scroll_docs(-4),
+ ["<C-f>"] = cmp.mapping.scroll_docs(4),
+ ["<C-Space>"] = cmp.mapping.complete(),
+ ["<C-e>"] = cmp.mapping.close(),
+ ["<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" }),
+ }),
+ formatting = {
+ format = lspkind.cmp_format({
+ mode = "symbol_text",
+ maxwidth = 50,
+ ellipsis_char = "..."
+ }),
+ },
+ sources = {
+ { name = "nvim_lsp" },
+ { name = "luasnip" },
+ { name = "buffer" },
+ { name = "path" },
+ },
+ })
+
+ cmp.setup.filetype('gitcommit', {
+ sources = cmp.config.sources({
+ { name = 'buffer' },
+ })
+ })
+
+ cmp.setup.cmdline(':', {
+ mapping = cmp.mapping.preset.cmdline(),
+ sources = cmp.config.sources({
+ { name = 'path' }
+ }, {
+ { name = 'cmdline' }
+ })
+ })
+ end,
+ },
+
+ {
+ "nvim-treesitter/nvim-treesitter",
+ build = ":TSUpdate",
+ event = "BufRead",
+ config = function()
+ require("nvim-treesitter.configs").setup({
+ auto_install = true,
+ ensure_installed = { "c", "lua", "vim", "python", "java", "javascript", "typescript", "css", "html" },
+ highlight = { enable = true, use_languagetree = true },
+ indent = { enable = true },
+ })
+ end,
+ },
+
+ {
+ "nvim-tree/nvim-tree.lua",
+ enabled = false,
+ config = function()
+ require("nvim-tree").setup({
+ view = { width = 20, side = "left" },
+ disable_netrw = true,
+ hijack_cursor = true,
+ update_cwd = true,
+ hijack_directories = { auto_open = true },
+ renderer = {
+ root_folder_label = false,
+ indent_markers = {
+ enable = true,
+ icons = { corner = "└ ", edge = "│ ", none = " " },
+ },
+ },
+ })
+ end,
+ },
+
+ {
+ "nvim-telescope/telescope.nvim",
+ dependencies = { "nvim-lua/plenary.nvim" },
+ keys = {
+ { "<C-s>", ":silent Telescope current_buffer_fuzzy_find<CR>", desc = "Open Telescope" },
+ },
+ config = function()
+ require("telescope").setup({
+ defaults = { mapping = {} },
+ pickers = {},
+ extensions = {},
+ })
+ end,
+ },
+
+ {
+ "lewis6991/gitsigns.nvim",
+ config = function()
+ require("gitsigns").setup()
+ end,
+ },
+
+ {
+ "echasnovski/mini.nvim",
+ version = false,
+ dependencies = { "nvim-tree/nvim-web-devicons" },
+ config = function()
+ require("mini.starter").setup({
+ header = table.concat({
+ " /l、 ",
+ "(゚、 。 7 ",
+ " l ~ ヽ ",
+ " じしf_,)ノ ",
+ }, "\n"),
+ footer = "",
+ content_hooks = {
+ require("mini.starter").gen_hook.adding_bullet("» "),
+ require("mini.starter").gen_hook.aligning("center", "center"),
+ },
+ })
+ end,
+ },
+
+ {
+ "windwp/nvim-autopairs",
+ event = "InsertEnter",
+ config = function()
+ require("nvim-autopairs").setup {}
+ end,
+ },
+
+ {
+ "tamton-aquib/staline.nvim",
+ dependencies = { "nvim-tree/nvim-web-devicons" },
+ config = function()
+ require("staline").setup {
+ sections = {
+ left = { 'file_name', 'branch' },
+ mid = { 'lsp' },
+ right = { 'line_column' },
+ },
+ special_table = {
+ NvimTree = { 'NvimTree', ' ' },
+ packer = { 'Packer', ' ' },
+ starter = { '', '' },
+ lazy = { '', '' },
+ mason = { '', '' },
+ },
+ lsp_symbols = {
+ Error = " ",
+ Info = " ",
+ Warn = " ",
+ Hint = "",
+ },
+ defaults = {
+ true_colors = true,
+ line_column = ' ☰ %l/%L %c',
+ branch_symbol = " ",
+ exclude_fts = { 'NvimTree' },
+ },
+ }
+ vim.cmd('highlight Statusline guibg=none')
+ vim.cmd('highlight StatuslineNC guibg=none')
+ end,
+ },
+})
diff --git a/modules/home-manager/nextcloud.nix b/modules/home-manager/nextcloud.nix
new file mode 100644
index 0000000..6e8774f
--- /dev/null
+++ b/modules/home-manager/nextcloud.nix
@@ -0,0 +1,39 @@
+{ config, lib, pkgs, ... }:
+
+let
+ cfg = config.nextcloud;
+in {
+ options.nextcloud.enable = lib.mkEnableOption "Enable nextcloud and setup";
+ config = lib.mkIf cfg.enable {
+ home.file.".netrc".text = ''default
+ login exmaple
+ password test123
+ '';
+
+ home.packages = pkgs.nextcloud-client;
+
+ systemd.user = {
+ services.nextcloud-autosync = {
+ Unit = {
+ Description = "Auto sync Nextcloud";
+ After = "network-online.target";
+ };
+ Service = {
+ Type = "simple";
+ ExecStart = "${pkgs.nextcloud-client}/bin/nextcloudcmd -h -n https://cloud.schererleander.de";
+ TimeoutStopSec = "180";
+ KillMode = "process";
+ KillSignal = "SIGINT";
+ };
+ Install.WantedBy = ["multi-user.target"];
+ };
+ timers.nextcloud-autosync = {
+ Unit.Description = "Automatic sync files with Nextcloud when booted up after 5 minutes then rerun every 60 minutes";
+ Timer.OnBootSec = "5min";
+ Timer.OnUnitActiveSec = "60min";
+ Install.WantedBy = ["multi-user.target" "timers.target"];
+ };
+ startServices = true;
+ };
+ };
+}
diff --git a/modules/home-manager/spicetify.nix b/modules/home-manager/spicetify.nix
new file mode 100644
index 0000000..e331ad3
--- /dev/null
+++ b/modules/home-manager/spicetify.nix
@@ -0,0 +1,21 @@
+{ config, lib, pkgs, inputs, ... }:
+let
+ cfg = config.spicetify;
+ spicePkgs = inputs.spicetify-nix.packages.${pkgs.system}.default;
+in {
+ options.spicetify.enable = lib.mkEnableOption "Enable and configure Spicetify";
+ config = lib.mkIf cfg.enable {
+ programs.spicetify = {
+ enable = true;
+ enabledSnippets = with spicePkgs.snippets; [
+ pointer
+ sonicDancing
+ modernScrollbar
+ nyanCatProgressBar
+ declutterNowPlayingBar
+ ];
+ theme = spicePkgs.themes.sleek;
+ colorScheme = "coral";
+ };
+ };
+}
diff --git a/modules/home-manager/sway.nix b/modules/home-manager/sway.nix
new file mode 100644
index 0000000..77f1138
--- /dev/null
+++ b/modules/home-manager/sway.nix
@@ -0,0 +1,104 @@
+{ config, lib, pkgs, ... }:
+
+let
+ cfg = config.sway;
+in {
+ options.sway.enable = lib.mkEnableOption "Enable sway and setup";
+ config = lib.mkIf cfg.enable {
+ home.packages = with pkgs; [
+ wmenu
+ swaybg
+ wl-clipboard
+ playerctl
+ ];
+
+ xdg = {
+ portal = {
+ enable = true;
+ extraPortals = with pkgs; [
+ xdg-desktop-portal-wlr
+ xdg-desktop-portal-gtk
+ ];
+ };
+ };
+
+ wayland.windowManager.sway = {
+ enable = true;
+ config = {
+ input = {
+ "*" = {
+ xkb_layout = "de";
+ };
+ };
+ output = {
+ DP-1 = {
+ resolution = "1920x1080@240Hz";
+ bg = "/etc/nixos/jaison-lin-2WHTac8jVA8-unsplash.jpg fill";
+ };
+ };
+ gaps = {
+ inner = 15;
+ };
+ window = {
+ titlebar = false;
+ border = 0;
+ };
+ keybindings = let
+ mod = "Mod4";
+ in
+ lib.mkOptionDefault {
+ "${mod}+Return" = "exec ${pkgs.foot}/bin/foot";
+ "${mod}+q" = "kill";
+ "${mod}+d" = "exec exec ${pkgs.wmenu}/bin/wmenu-run -b -N 000000";
+ "${mod}+Shift+e" = "exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'";
+ "${mod}+Tab" = "workspace back_and_forth";
+ "${mod}+1" = "workspace number 1";
+ "${mod}+2" = "workspace number 2";
+ "${mod}+3" = "workspace number 3";
+ "${mod}+4" = "workspace number 4";
+ "${mod}+5" = "workspace number 5";
+ "${mod}+6" = "workspace number 6";
+ "${mod}+7" = "workspace number 7";
+ "${mod}+8" = "workspace number 8";
+ "${mod}+9" = "workspace number 9";
+ "${mod}+0" = "workspace number 10";
+
+ "${mod}+Shift+1" = "move container to workspace number 1";
+ "${mod}+Shift+2" = "move container to workspace number 2";
+ "${mod}+Shift+3" = "move container to workspace number 3";
+ "${mod}+Shift+4" = "move container to workspace number 4";
+ "${mod}+Shift+5" = "move container to workspace number 5";
+ "${mod}+Shift+6" = "move container to workspace number 6";
+ "${mod}+Shift+7" = "move container to workspace number 7";
+ "${mod}+Shift+8" = "move container to workspace number 8";
+ "${mod}+Shift+9" = "move container to workspace number 9";
+ "${mod}+Shift+0" = "move container to workspace number 10";
+
+ "${mod}+b" = "splith";
+ "${mod}+v" = "splitv";
+ "${mod}+f" = "fullscreen";
+ "${mod}+Shift+space" = "floating toggle";
+
+ "XF86AudioPlay" = "exec playerctl play-pause";
+ "XF86AudioPrev" = "exec playerctl previous";
+ "XF86AudioNext" = "exec playerctl next";
+
+ "XF86AudioRaiseVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_DEVICE@ +5%";
+ "XF86AudioLowerVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_DEVICE@ -5%";
+ "XF86AudioMute" = "exec wpctl set-mute @DEFAULT_AUDIO_DEVICE@ toggle";
+ };
+ defaultWorkspace = "workspace number 1";
+ bars = [{
+ "command" = "${pkgs.waybar}/bin/waybar";
+ }];
+ };
+ checkConfig = false;
+ wrapperFeatures.base = true;
+ wrapperFeatures.gtk = true;
+ };
+
+ home.sessionVariables = {
+ XDG_CURRENT_DESKTOP = "wayland";
+ };
+ };
+}
diff --git a/modules/home-manager/tmux.nix b/modules/home-manager/tmux.nix
new file mode 100644
index 0000000..c4bfefc
--- /dev/null
+++ b/modules/home-manager/tmux.nix
@@ -0,0 +1,14 @@
+{ config, lib, pkgs, ... }:
+
+let
+ cfg = config.tmux;
+in {
+ options.tmux.enable = lib.mkEnableOption "Enable and configure Tmux";
+
+ config = lib.mkIf cfg.enable {
+ programs.tmux = {
+ enable = true;
+ };
+ };
+}
+
diff --git a/modules/home-manager/vencord.nix b/modules/home-manager/vencord.nix
new file mode 100644
index 0000000..8b085c4
--- /dev/null
+++ b/modules/home-manager/vencord.nix
@@ -0,0 +1,22 @@
+{ config, lib, pkgs, inputs, ... }:
+
+let
+ cfg = config.nixcord;
+in {
+ options.nixcord.enable = lib.mkEnableOption "Enable nixord and setup";
+ config = lib.mkIf cfg.enable {
+ programs.nixcord = {
+ enable = true;
+ config = {
+ themeLinks = [
+ "https://github.com/TheCommieAxolotl/BetterDiscord-Stuff/blob/main/Ultra/Ultra.theme.css"
+ ];
+ frameless = true;
+ plugins = {
+ alwaysAnimate.enable = true;
+ clearURLs.enable = true;
+ };
+ };
+ };
+ };
+}
diff --git a/modules/home-manager/waybar.nix b/modules/home-manager/waybar.nix
new file mode 100644
index 0000000..6a54d0d
--- /dev/null
+++ b/modules/home-manager/waybar.nix
@@ -0,0 +1,72 @@
+{ config, lib, pkgs, ... }:
+
+let
+ cfg = config.waybar;
+in {
+ options.waybar.enable = lib.mkEnableOption "Enable and configure Waybar";
+
+ config = lib.mkIf cfg.enable {
+ programs.waybar = {
+ enable = true;
+ settings = {
+ mainBar = {
+ height = 20;
+ layer = "top";
+ position = "bottom";
+ tray = { spacing = 10; };
+ modules-center = [ "sway/window" ];
+ modules-left = [ "sway/workspaces" "sway/mode" ];
+ modules-right = [
+ "pulseaudio"
+ "clock"
+ "tray"
+ ];
+ clock = {
+ format-alt = "{:%Y-%m-%d}";
+ tooltip-format = "{:%Y-%m-%d | %H:%M}";
+ };
+ pulseaudio = {
+ format = "{volume}% {icon} {format_source}";
+ format-bluetooth = "{volume}% {icon} {format_source}";
+ format-bluetooth-muted = " {icon} {format_source}";
+ format-icons = {
+ car = "";
+ default = [ "" "" "" ];
+ handsfree = "";
+ headphones = "";
+ headset = "";
+ phone = "";
+ portable = "";
+ };
+ format-muted = " {format_source}";
+ format-source = "{volume}% ";
+ format-source-muted = "";
+ on-click = "pavucontrol";
+ };
+ };
+ };
+ style = ''
+ * {
+ border: none;
+ border-radius: 0;
+ font-family: monospace;
+ font-size: 12px;
+ }
+
+ window#waybar {
+ background: #000000;
+ }
+
+ #workspaces button {
+ padding-left: 5px;
+ padding-right: 5px;
+ }
+
+ #clock, #pulseaudio, #tray {
+ padding-left: 5px;
+ padding-right: 5px;
+ }
+ '';
+ };
+ };
+}
diff --git a/modules/home-manager/zsh.nix b/modules/home-manager/zsh.nix
new file mode 100644
index 0000000..9dab7d8
--- /dev/null
+++ b/modules/home-manager/zsh.nix
@@ -0,0 +1,29 @@
+{ config, lib, pkgs, ... }:
+
+let
+ cfg = config.zsh;
+in {
+ options.zsh.enable = lib.mkEnableOption "Enable zsh and configure";
+
+ config = lib.mkIf cfg.enable {
+ programs.zsh = {
+ enable = true;
+ autosuggestion.enable = true;
+ historySubstringSearch.enable = true;
+ plugins = [
+ {
+ name = "pure";
+ src = "${pkgs.pure-prompt}/share/zsh/site-functions";
+ }
+ {
+ name = "zsh-completions";
+ src = "${pkgs.zsh-completions}/share/zsh/site-functions";
+ }
+ {
+ name = "fast-syntax-highlighting";
+ src = "${pkgs.zsh-fast-syntax-highlighting}/share/zsh/site-functions";
+ }
+ ];
+ };
+ };
+}