From: Andreas Glashauser Date: Tue, 18 Mar 2025 18:48:33 +0000 (+0100) Subject: Initial commit X-Git-Url: https://git.andreasglashauser.com/?a=commitdiff_plain;h=56a9e92f10135edbe44f7112670d5bdbc73183cb;p=dotfiles.git Initial commit --- 56a9e92f10135edbe44f7112670d5bdbc73183cb diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d4d120a --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +# Released under MIT License + +Copyright (c) 2025 Andreas Glashauser. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..fe03580 --- /dev/null +++ b/Makefile @@ -0,0 +1,34 @@ +DOTFILES_DIR := $(CURDIR) +HOME_DIR := $(HOME) + +DOTFILES := Xresources dockerignore editorconfig gitattributes gitconfig gitignore tmux.conf + +.PHONY: install clean + +install: + @echo "Creating symlinks for dotfiles..." + @for file in $(DOTFILES); do \ + echo "Creating link: $(HOME_DIR)/.$$file -> $(DOTFILES_DIR)/$$file"; \ + ln -svf $(DOTFILES_DIR)/$$file $(HOME_DIR)/.$$file; \ + done + + @echo "Creating symlink aliases..." + mkdir -p $(HOME_DIR)/.bashrc.d + ln -svf $(DOTFILES_DIR)/aliases $(HOME_DIR)/.bashrc.d/aliases + + @echo "Creating symlink for Neovim configuration..." + mkdir -p $(HOME_DIR)/.config + ln -svf $(DOTFILES_DIR)/config/nvim $(HOME_DIR)/.config/nvim + + @echo "Creating symlink for SSH configuration..." + mkdir -p $(HOME_DIR)/.ssh + ln -svf $(DOTFILES_DIR)/ssh.config $(HOME_DIR)/.ssh/config + @echo "Done" + +clean: + @echo "Removing symlinks..." + @for file in $(DOTFILES); do \ + rm -v $(HOME_DIR)/.$$file; \ + done + rm -v $(HOME_DIR)/.config/nvim + rm -v $(HOME_DIR)/.ssh/config diff --git a/README.md b/README.md new file mode 100644 index 0000000..1a6f831 --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +This repository contains my personal dotfiles. + +To set up these dotfiles on your system, simply clone the repository and run `make` in the repo directory. +This will automatically create the necessary symlinks: + +``` +git clone https://github.com/andreasglashauser/dotfiles.git ~/dotfiles +cd ~/dotfiles +make +``` + +Note that before running the `make` command, it's a good idea to back up any existing dotfiles in case you want to revert later. diff --git a/Xresources b/Xresources new file mode 100644 index 0000000..ce9e600 --- /dev/null +++ b/Xresources @@ -0,0 +1,7 @@ +xterm*scrollBar: false +xterm*background: black +xterm*foreground: white +xterm*selectToClipboard: true + +! if you do a double click on a line, xterm now automatically selects the whole link +xterm*charClass: 33:48,35-39:48,42-47:48,58-59:48,61:48,63:48,64:48,91-93:48,95:48,126:48 diff --git a/aliases b/aliases new file mode 100644 index 0000000..c3760c9 --- /dev/null +++ b/aliases @@ -0,0 +1,4 @@ +alias ..="cd .." +alias ...="cd ../.." +alias ....="cd ../../../" +alias .....="cd ../.././../" diff --git a/config/nvim/after/plugin/catppuccin.lua b/config/nvim/after/plugin/catppuccin.lua new file mode 100644 index 0000000..23164ca --- /dev/null +++ b/config/nvim/after/plugin/catppuccin.lua @@ -0,0 +1,11 @@ +require("catppuccin").setup({ + flavour = "mocha", + color_overrides = { + mocha = { + base = "#000000", + mantle = "#000000", + crust = "#000000", + }, + }, +}) +vim.cmd("colorscheme catppuccin") diff --git a/config/nvim/after/plugin/formatter.lua b/config/nvim/after/plugin/formatter.lua new file mode 100644 index 0000000..df24831 --- /dev/null +++ b/config/nvim/after/plugin/formatter.lua @@ -0,0 +1,74 @@ +-- Utilities for creating configurations +local util = require "formatter.util" + +-- Provides the Format, FormatWrite, FormatLock, and FormatWriteLock commands +require("formatter").setup { + -- Enable or disable logging + logging = true, + -- Set the log level + log_level = vim.log.levels.WARN, + -- All formatter configurations are opt-in + filetype = { + -- Formatter configurations for filetype "lua" go here + -- and will be executed in order + lua = { + -- "formatter.filetypes.lua" defines default configurations for the + -- "lua" filetype + require("formatter.filetypes.lua").stylua, + + -- You can also define your own configuration + function() + -- Supports conditional formatting + if util.get_current_buffer_file_name() == "special.lua" then + return nil + end + + -- Full specification of configurations is down below and in Vim help + -- files + return { + exe = "stylua", + args = { + "--search-parent-directories", + "--stdin-filepath", + util.escape_path(util.get_current_buffer_file_path()), + "--", + "-", + }, + stdin = true, + } + end + }, + + -- Use the special "*" filetype for defining formatter configurations on + -- any filetype + ["*"] = { + -- "formatter.filetypes.any" defines default configurations for any + -- filetype + require("formatter.filetypes.any").remove_trailing_whitespace, + -- Remove trailing whitespace without 'sed' + -- require("formatter.filetypes.any").substitute_trailing_whitespace, + } + } +} + +local M = {} + +local defaults = require "formatter.defaults" +local util = require "formatter.util" + +M.remove_trailing_whitespace = util.withl(defaults.sed, "[ \t]*$") + +M.substitute_trailing_whitespace = function() + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + + vim.cmd [[silent! :keeppatterns %s/[ \t]\+$//ge]] + + -- Restore cursor position without going out of bounds + local lastline = vim.fn.line "$" + if line > lastline then + line = lastline + end + vim.api.nvim_win_set_cursor(0, { line, col }) +end + +return M diff --git a/config/nvim/after/plugin/mason.lua b/config/nvim/after/plugin/mason.lua new file mode 100644 index 0000000..7b93fad --- /dev/null +++ b/config/nvim/after/plugin/mason.lua @@ -0,0 +1,13 @@ +require("mason").setup({ + ui = { + icons = { + package_installed = "✓", + package_pending = "➜", + package_uninstalled = "✗" + } + } +}) +require("mason-lspconfig").setup() +require("lspconfig").pyright.setup{} +require("lspconfig").omnisharp.setup({ +}) diff --git a/config/nvim/after/plugin/mz-lspconfig.lua b/config/nvim/after/plugin/mz-lspconfig.lua new file mode 100644 index 0000000..5105146 --- /dev/null +++ b/config/nvim/after/plugin/mz-lspconfig.lua @@ -0,0 +1,85 @@ + local capabilities = require('cmp_nvim_lsp').default_capabilities() + +local lspconfig = require('lspconfig') + +local on_attach = function(client, bufnr) + local bufopts = { noremap = true, silent = true, buffer = bufnr } + vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) + vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) + vim.keymap.set('n', 'rn', vim.lsp.buf.rename, bufopts) + vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, bufopts) +end + +lspconfig.pyright.setup { + capabilities = capabilities, + on_attach = on_attach, +} + +lspconfig.clangd.setup({ + cmd = { "clangd" }, + filetypes = { "c", "cpp", "objc", "objcpp" }, + root_dir = lspconfig.util.root_pattern(".clangd", ".git", "compile_commands.json", "compile_flags.txt"), + single_file_support = true, + capabilities = require('cmp_nvim_lsp').default_capabilities(), + on_attach = on_attach, +}) + +local on_attach_csharp = function(client, bufnr) + if client.name == "omnisharp" then + vim.keymap.set('n', 'gd', "lua require('omnisharp_extended').telescope_lsp_definition({ jump_type = 'vsplit' })", { noremap = true, buffer = bufnr }) + vim.keymap.set('n', 'gr', "lua require('omnisharp_extended').telescope_lsp_references()", { noremap = true, buffer = bufnr }) + vim.keymap.set('n', 'D', "lua require('omnisharp_extended').telescope_lsp_type_definition()", { noremap = true, buffer = bufnr }) + vim.keymap.set('n', 'gi', "lua require('omnisharp_extended').telescope_lsp_implementation()", { noremap = true, buffer = bufnr }) + end +end + +lspconfig.omnisharp.setup({ + cmd = { "/usr/sbin/dotnet", "/home/andreasg/.local/share/nvim/mason/packages/omnisharp/libexec/OmniSharp.dll" }, + on_attach = on_attach_csharp, + handlers = { + ["textDocument/definition"] = require('omnisharp_extended').definition_handler, + ["textDocument/typeDefinition"] = require('omnisharp_extended').type_definition_handler, + ["textDocument/references"] = require('omnisharp_extended').references_handler, + ["textDocument/implementation"] = require('omnisharp_extended').implementation_handler, + }, + + filetypes = { "*.sln", "*.csproj", "*.git", "*.cs" }, + settings = { + FormattingOptions = { + -- Enables support for reading code style, naming convention and analyzer + -- settings from .editorconfig. + EnableEditorConfigSupport = true, + -- Specifies whether 'using' directives should be grouped and sorted during + -- document formatting. + OrganizeImports = nil, + }, + MsBuild = { + -- If true, MSBuild project system will only load projects for files that + -- were opened in the editor. This setting is useful for big C# codebases + -- and allows for faster initialization of code navigation features only + -- for projects that are relevant to code that is being edited. With this + -- setting enabled OmniSharp may load fewer projects and may thus display + -- incomplete reference lists for symbols. + LoadProjectsOnDemand = nil, + }, + RoslynExtensionsOptions = { + -- Enables support for roslyn analyzers, code fixes and rulesets. + EnableAnalyzersSupport = nil, + -- Enables support for showing unimported types and unimported extension + -- methods in completion lists. When committed, the appropriate using + -- directive will be added at the top of the current file. This option can + -- have a negative impact on initial completion responsiveness, + -- particularly for the first few completion sessions after opening a + -- solution. + EnableImportCompletion = nil, + -- Only run analyzers against open files when 'enableRoslynAnalyzers' is + -- true + AnalyzeOpenDocumentsOnly = nil, + }, + Sdk = { + -- Specifies whether to include preview versions of the .NET SDK when + -- determining which version to use for project loading. + IncludePrereleases = true, + }, + }, +}) diff --git a/config/nvim/after/plugin/nvim-cmp.lua b/config/nvim/after/plugin/nvim-cmp.lua new file mode 100644 index 0000000..53e6a31 --- /dev/null +++ b/config/nvim/after/plugin/nvim-cmp.lua @@ -0,0 +1,72 @@ +-- Set up nvim-cmp. + local cmp = require'cmp' + + cmp.setup({ + snippet = { + -- REQUIRED - you must specify a snippet engine + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users. + -- require('luasnip').lsp_expand(args.body) -- For `luasnip` users. + -- require('snippy').expand_snippet(args.body) -- For `snippy` users. + -- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users. + -- vim.snippet.expand(args.body) -- For native neovim snippets (Neovim v0.10+) + end, + }, + window = { + -- completion = cmp.config.window.bordered(), + -- documentation = cmp.config.window.bordered(), + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'vsnip' }, -- For vsnip users. + -- { name = 'luasnip' }, -- For luasnip users. + -- { name = 'ultisnips' }, -- For ultisnips users. + -- { name = 'snippy' }, -- For snippy users. + }, { + { name = 'buffer' }, + }) + }) + + -- To use git you need to install the plugin petertriho/cmp-git and uncomment lines below + -- Set configuration for specific filetype. + --[[ cmp.setup.filetype('gitcommit', { + sources = cmp.config.sources({ + { name = 'git' }, + }, { + { name = 'buffer' }, + }) + }) + require("cmp_git").setup() ]]-- + + -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). + cmp.setup.cmdline({ '/', '?' }, { + mapping = cmp.mapping.preset.cmdline(), + sources = { + { name = 'buffer' } + } + }) + + -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). + cmp.setup.cmdline(':', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = 'path' } + }, { + { name = 'cmdline' } + }), + matching = { disallow_symbol_nonprefix_matching = false } + }) + +-- -- Set up lspconfig. +-- local capabilities = require('cmp_nvim_lsp').default_capabilities() +-- -- Replace with each lsp server you've enabled. +-- require('lspconfig')[''].setup { +-- capabilities = capabilities +-- } diff --git a/config/nvim/after/plugin/nvim-lint.lua b/config/nvim/after/plugin/nvim-lint.lua new file mode 100644 index 0000000..a7f8cdc --- /dev/null +++ b/config/nvim/after/plugin/nvim-lint.lua @@ -0,0 +1,12 @@ +--vim.api.nvim_create_autocmd({ "BufWritePost" }, { +-- callback = function() +-- +-- -- try_lint without arguments runs the linters defined in `linters_by_ft` +-- -- for the current filetype +-- require("lint").try_lint() +-- +-- -- You can call `try_lint` with a linter name or a list of names to always +-- -- run specific linters, independent of the `linters_by_ft` configuration +-- require("lint").try_lint("cspell") +-- end, +--}) diff --git a/config/nvim/after/plugin/telescope.lua b/config/nvim/after/plugin/telescope.lua new file mode 100644 index 0000000..a70270d --- /dev/null +++ b/config/nvim/after/plugin/telescope.lua @@ -0,0 +1,4 @@ +local builtin = require('telescope.builtin') +vim.keymap.set('n', 'ff', builtin.find_files, { desc = 'Telescope find files' }) +vim.keymap.set('n', 'gff', builtin.git_files, { desc = 'Git find files' }) +vim.keymap.set('n', 'fg', builtin.live_grep, { desc = 'Telescope live grep' }) diff --git a/config/nvim/after/plugin/treesitter.lua b/config/nvim/after/plugin/treesitter.lua new file mode 100644 index 0000000..3647020 --- /dev/null +++ b/config/nvim/after/plugin/treesitter.lua @@ -0,0 +1,38 @@ +require'nvim-treesitter.configs'.setup { + -- A list of parser names, or "all" (the listed parsers MUST always be installed) + ensure_installed = { "c", "lua", "vim", "vimdoc", "query", "markdown", "markdown_inline", }, + + -- Install parsers synchronously (only applied to `ensure_installed`) + sync_install = false, + + -- Automatically install missing parsers when entering buffer + -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally + auto_install = true, + + ---- If you need to change the installation directory of the parsers (see -> Advanced Setup) + -- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")! + + highlight = { + enable = true, + + -- NOTE: these are the names of the parsers and not the filetype. (for example if you want to + -- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is + -- the name of the parser) + -- list of language that will be disabled + -- disable = { "c", "rust" }, + -- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files + --disable = function(lang, buf) + -- local max_filesize = 100 * 1024 -- 100 KB + -- local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) + -- if ok and stats and stats.size > max_filesize then + -- retur true + -- end + --end, + + -- Setting this to true will run `:h syntax` and tree-sitter at the same time. + -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). + -- Using this option may slow down your editor, and you may see some duplicate highlights. + -- Instead of true it can also be a list of languages + additional_vim_regex_highlighting = false, + }, +} diff --git a/config/nvim/after/plugin/undotree.lua b/config/nvim/after/plugin/undotree.lua new file mode 100644 index 0000000..a346462 --- /dev/null +++ b/config/nvim/after/plugin/undotree.lua @@ -0,0 +1 @@ +vim.keymap.set('n', 'u', vim.cmd.UndotreeToggle) diff --git a/config/nvim/after/plugin/vimtex.lua b/config/nvim/after/plugin/vimtex.lua new file mode 100644 index 0000000..5222d1e --- /dev/null +++ b/config/nvim/after/plugin/vimtex.lua @@ -0,0 +1,5 @@ +vim.cmd('filetype plugin indent on') +vim.cmd('syntax enable') + +vim.g.vimtex_view_method = 'zathura' + diff --git a/config/nvim/init.lua b/config/nvim/init.lua new file mode 100644 index 0000000..2c77da1 --- /dev/null +++ b/config/nvim/init.lua @@ -0,0 +1 @@ +require("conf") diff --git a/config/nvim/lua/conf/init.lua b/config/nvim/lua/conf/init.lua new file mode 100644 index 0000000..2cc4689 --- /dev/null +++ b/config/nvim/lua/conf/init.lua @@ -0,0 +1,3 @@ +require("conf.remap") +require("conf.set") +require("conf.plugins") diff --git a/config/nvim/lua/conf/plugins.lua b/config/nvim/lua/conf/plugins.lua new file mode 100644 index 0000000..a01539b --- /dev/null +++ b/config/nvim/lua/conf/plugins.lua @@ -0,0 +1,24 @@ +vim.cmd [[ + call plug#begin('~/.local/share/nvim/plugged') + + Plug 'nvim-lua/plenary.nvim' + Plug 'Hoffs/omnisharp-extended-lsp.nvim' + Plug 'nvim-telescope/telescope.nvim', { 'tag': '0.1.8' } + Plug 'catppuccin/nvim', { 'as': 'catppuccin' } + Plug 'nvim-treesitter/nvim-treesitter', { 'do': ':TSUpdate' } + Plug 'mbbill/undotree' + Plug 'williamboman/mason.nvim' + Plug 'williamboman/mason-lspconfig.nvim' + Plug 'neovim/nvim-lspconfig' + Plug 'mfussenegger/nvim-lint' + Plug 'mhartington/formatter.nvim' + Plug 'hrsh7th/cmp-nvim-lsp' + Plug 'hrsh7th/cmp-buffer' + Plug 'hrsh7th/cmp-path' + Plug 'hrsh7th/cmp-cmdline' + Plug 'hrsh7th/nvim-cmp' + Plug 'lervag/vimtex' + Plug 'tpope/vim-obsession' + + call plug#end() +]] diff --git a/config/nvim/lua/conf/remap.lua b/config/nvim/lua/conf/remap.lua new file mode 100644 index 0000000..cff7ab9 --- /dev/null +++ b/config/nvim/lua/conf/remap.lua @@ -0,0 +1,6 @@ +vim.g.mapleader = " " + +vim.keymap.set("n", "ex", vim.cmd.Ex) + +vim.keymap.set("v", "J", ":m '>+1gv=gv") +vim.keymap.set("v", "K", ":m '<-2gv=gv") diff --git a/config/nvim/lua/conf/set.lua b/config/nvim/lua/conf/set.lua new file mode 100644 index 0000000..70e9fa4 --- /dev/null +++ b/config/nvim/lua/conf/set.lua @@ -0,0 +1,29 @@ +vim.opt.number = true +vim.opt.relativenumber = true + +vim.opt.tabstop = 4 +vim.opt.softtabstop = 4 +vim.opt.shiftwidth = 4 +vim.opt.expandtab = true + +vim.opt.smartindent = true + +vim.opt.wrap = false + +vim.opt.swapfile = false +vim.opt.backup = false +vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir" +vim.opt.undofile = true + +vim.opt.ignorecase = true +vim.opt.smartcase = true +vim.opt.incsearch = true + +vim.opt.termguicolors = true + +vim.opt.scrolloff = 100000 +vim.opt.signcolumn = "yes" + +vim.opt.updatetime = 50 + +vim.opt.colorcolumn = "70" diff --git a/dockerignore b/dockerignore new file mode 100644 index 0000000..0465cd8 --- /dev/null +++ b/dockerignore @@ -0,0 +1,3 @@ +# Note: podman also respects this files +docker-compose.yml +Dockerfile diff --git a/editorconfig b/editorconfig new file mode 100644 index 0000000..779f99a --- /dev/null +++ b/editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +indent_style = space +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/gitattributes b/gitattributes new file mode 100644 index 0000000..e491506 --- /dev/null +++ b/gitattributes @@ -0,0 +1,13 @@ +*.gif diff=image +*.jpeg diff=image +*.jpg diff=image +*.png diff=image + +*.safetensors filter=lfs diff=lfs merge=lfs -text +*.tar.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.tfrecord filter=lfs diff=lfs merge=lfs -text diff --git a/gitconfig b/gitconfig new file mode 100644 index 0000000..c775ad9 --- /dev/null +++ b/gitconfig @@ -0,0 +1,72 @@ +[user] + # update the [user] values below with your personal details. For the signing key, you can either + # provide your public ssh key as a string (obviously without quotes) or specify the file path to your .pub file + name = + email = + signingkey = + +[init] + defaultBranch = main + +[push] + # configures Git to push the currently checked-out branch to a remote branch with the same name, and creating it if it doesn't exist + default = current + +[alias] + aa = add --all + ap = add --patch + st = status + p = push + pf = push --force-with-lease + diffmain = !"git log --no-merges origin/$(git mainormaster).." + lg = log --oneline --graph --decorate --all + unstage = reset HEAD -- + last = log -1 HEAD + # I use this line to automatically push to my self-hosted git and github. You will probably never need this + pushall = !git push origin HEAD && git push github HEAD + +[core] + exludesfile = ~/.gitignore + attributesfile = ~/.gitattributes + # converts Windows CRLF line endings to UNIX LF on commit + autocrlf = input + # https://github.com/dandavison/delta + pager=delta + +[gpg] + format = ssh + +[commit] + gpgsign = true + +[tag] + gpgsign = true + +[interactive] + diffFilter = delta --color-only + +[delta] + navigate = true + dark = true + line-numbers = true + side-by-side = true + +[diff] + colorMoved= default + renames = copies + submodule = log + +[merge] + conflictstyle = zdiff3 + +[fetch] + prune = true + +[rebase] + autosquash = true + +[checkout] + defaultRemote = origin + +[stash] + showPatch = true diff --git a/gitignore b/gitignore new file mode 100644 index 0000000..1cd86a4 --- /dev/null +++ b/gitignore @@ -0,0 +1,5 @@ +.env/ +node_modules/ +tmp/ +*.log +data/ diff --git a/ssh.config b/ssh.config new file mode 100644 index 0000000..a3eb67b --- /dev/null +++ b/ssh.config @@ -0,0 +1,4 @@ +Host * + # Enables the option to share channel for all sessions + ControlMaster auto + ControlPersist 120 diff --git a/tmux.conf b/tmux.conf new file mode 100644 index 0000000..c31b157 --- /dev/null +++ b/tmux.conf @@ -0,0 +1,26 @@ +set -g base-index 1 +set-window-option -g pane-base-index 1 + +set -g renumber-windows on + +set-window-option -g window-status-current-format "#[fg=white]#I:#W#[default]" + +setw -g automatic-rename on + +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-resurrect' +set -g @plugin 'tmux-plugins/tmux-continuum' + +set -g @resurrect-processes 'nvim' +set -g @resurrect-capture-pane-contents 'on' +set -g @resurrect-strategy-nvim 'session' + +set -g @continuum-save-interval '5' +set -g @continuum-restore 'on' + +set -g status-right-length 150 +set -g status-interval 1 +set -g status-right 'Continuum status: #{continuum_status}; %a %d.%m.%Y %H:%M:%S' + + +run -b '~/.tmux/plugins/tpm/tpm'