diff --git a/.config/karabiner/karabiner.json b/.config/karabiner/karabiner.json new file mode 100644 index 0000000..0c3e3ed --- /dev/null +++ b/.config/karabiner/karabiner.json @@ -0,0 +1,288 @@ +{ + "global": { + "check_for_updates_on_startup": true, + "show_in_menu_bar": false, + "show_profile_name_in_menu_bar": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [ + { + "manipulators": [ + { + "description": "Change right option to hyper/esc", + "from": { + "key_code": "right_option", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_control", + "modifiers": [ + "left_command", + "left_option", + "left_shift" + ] + } + ], + "to_if_alone": [ + { + "key_code": "escape" + } + ], + "type": "basic" + }, + { + "description": "Change caps lock to control/escape", + "from": { + "key_code": "caps_lock", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_control", + "modifiers": [] + } + ], + "to_if_alone": [ + { + "key_code": "escape" + } + ], + "type": "basic" + }, + { + "description": "Change left control lock to control/escape", + "from": { + "key_code": "left_control", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_control", + "modifiers": [] + } + ], + "to_if_alone": [ + { + "key_code": "escape" + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 34304, + "vendor_id": 1452 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "simple_modifications": [] + }, + { + "disable_built_in_keyboard_if_exists": true, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 256, + "vendor_id": 2131 + }, + "ignore": false, + "manipulate_caps_lock_led": false, + "simple_modifications": [] + }, + { + "disable_built_in_keyboard_if_exists": true, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 33, + "vendor_id": 1278 + }, + "ignore": false, + "manipulate_caps_lock_led": false, + "simple_modifications": [] + }, + { + "disable_built_in_keyboard_if_exists": true, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": false, + "manipulate_caps_lock_led": false, + "simple_modifications": [] + } + ], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "key_code": "launchpad" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "key_code": "illumination_decrement" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "illumination_increment" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "key_code": "fastforward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [], + "virtual_hid_keyboard": { + "caps_lock_delay_milliseconds": 0, + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "keyboard_type": "ansi", + "mouse_key_xy_scale": 100 + } + } + ] +} diff --git a/lazygit/config.yml b/.config/lazygit/config.yml similarity index 90% rename from lazygit/config.yml rename to .config/lazygit/config.yml index 452b375..122b206 100644 --- a/lazygit/config.yml +++ b/.config/lazygit/config.yml @@ -5,8 +5,6 @@ gui: theme: selectedLineBgColor: - reverse - selectedRangeBgColor: - - reverse disableStartupPopups: true notARepository: 'skip' git: diff --git a/office/mutt/accounts/mailbox b/.config/neomutt/accounts/mailbox similarity index 92% rename from office/mutt/accounts/mailbox rename to .config/neomutt/accounts/mailbox index ae443c2..dd5192a 100644 --- a/office/mutt/accounts/mailbox +++ b/.config/neomutt/accounts/mailbox @@ -1,3 +1,4 @@ +set realname = "Steffen Rademacker" set from = "kontakt@webgefrickel.de" set sendmail = "msmtp -a mailbox" @@ -12,7 +13,7 @@ set trash = "+mailbox/trash" alternates ^kontakt@webgefrickel.de$ ^s.rademacker@mailbox.org$ # custom signaure -set signature = ~/.mutt/signatures/work +set signature = ./signatures/work color status green default diff --git a/office/mutt/bindings b/.config/neomutt/bindings similarity index 100% rename from office/mutt/bindings rename to .config/neomutt/bindings diff --git a/office/mutt/colors b/.config/neomutt/colors similarity index 100% rename from office/mutt/colors rename to .config/neomutt/colors diff --git a/.config/neomutt/neomuttrc b/.config/neomutt/neomuttrc new file mode 100644 index 0000000..d48b6b2 --- /dev/null +++ b/.config/neomutt/neomuttrc @@ -0,0 +1,60 @@ +# default local settings +set certificate_file = ~/Dotfiles/extras/certificates.crt +set charset = "utf-8" +set send_charset = "utf-8:iso-8859-1:us-ascii" +set editor = nvim +set folder = ~/Mail +set mbox_type = Maildir +set query_command = "mu cfind --format=mutt-ab '%s'" + +# override some options for saner usage +set confirm_append = no +set delete = yes +set edit_headers = yes +set fast_reply = yes +set forward_format = "Fwd: %s" +set forward_quote = yes +set include = yes +set mail_check = 0 +set mark_old = no +set reply_to = yes +set reverse_name = yes +set sig_dashes = no +set text_flowed = yes +set timeout = 3 +set uncollapse_jump = yes +set use_envelope_from = yes +set wait_key = no + +# User interface +set date_format = "%d.%m.%Y %H:%M" +set index_format = "[%Z] %?X?A&-? %D %-20.20F %s" +set pager_context = 3 +set pager_index_lines = 10 +set sidebar_divider_char = ' │ ' +set sidebar_folder_indent = yes +set sidebar_format = "%B %* [%?N?%N / ?%S]" +set sidebar_indent_string = ' '' +set sidebar_short_path = yes +set sidebar_visible = yes +set sidebar_width = 25 +set sort = threads +set sort_aux = reverse-last-date-received +set status_chars = " *%A" +set status_format = "──── %f | %r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? | %>─%?p?( %p postponed )?" + +# Source colors and bindings +source ./colors +source ./bindings + +# Accounts and email headers and settings +ignore * +unignore from: to: cc: bcc: date: subject: +unhdr_order * +hdr_order from: to: cc: bcc: date: subject: +alternative_order text/plain text/enriched text/html +auto_view text/html + +mailboxes =mailbox +mailboxes =mailbox/INBOX =mailbox/archive =mailbox/sent =mailbox/drafts =mailbox/junk =mailbox/trash +source ./accounts/mailbox diff --git a/office/mutt/signatures/default b/.config/neomutt/signatures/default similarity index 100% rename from office/mutt/signatures/default rename to .config/neomutt/signatures/default diff --git a/office/mutt/signatures/work b/.config/neomutt/signatures/work similarity index 100% rename from office/mutt/signatures/work rename to .config/neomutt/signatures/work diff --git a/nvim/init.lua b/.config/nvim/init.lua similarity index 100% rename from nvim/init.lua rename to .config/nvim/init.lua diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json new file mode 100644 index 0000000..d269aad --- /dev/null +++ b/.config/nvim/lazy-lock.json @@ -0,0 +1,45 @@ +{ + "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, + "CopilotChat.nvim": { "branch": "canary", "commit": "82923efe22b604cf9c0cad0bb2a74aa9247755ab" }, + "Navigator.nvim": { "branch": "master", "commit": "91d86506ac2a039504d5205d32a1d4bc7aa57072" }, + "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, + "cmp-calc": { "branch": "main", "commit": "5947b412da67306c5b68698a02a846760059be2e" }, + "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, + "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, + "cmp-vsnip": { "branch": "main", "commit": "989a8a73c44e926199bfd05fa7a516d51f2d2752" }, + "codeium.nvim": { "branch": "main", "commit": "f6a2ef32a9e923cb0104a19d3e426b0e40e49505" }, + "copilot-cmp": { "branch": "master", "commit": "b6e5286b3d74b04256d0a7e3bd2908eabec34b44" }, + "copilot.lua": { "branch": "master", "commit": "86537b286f18783f8b67bccd78a4ef4345679625" }, + "flash.nvim": { "branch": "main", "commit": "ec0bf2842189f65f60fd40bf3557cac1029cc932" }, + "friendly-snippets": { "branch": "main", "commit": "45a1b96e46efe5fce8af325d4bed45feb9d29d0f" }, + "gitsigns.nvim": { "branch": "main", "commit": "375c44bdfdde25585466a966f00c2e291db74f2d" }, + "gruvbox-material": { "branch": "master", "commit": "767b5471b8145ec071426341988c7af563f078d1" }, + "lazy.nvim": { "branch": "main", "commit": "d1de92dffab5a862332fdd1892889d362369c12f" }, + "lualine.nvim": { "branch": "master", "commit": "6a40b530539d2209f7dc0492f3681c8c126647ad" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "37a336b653f8594df75c827ed589f1c91d91ff6c" }, + "mason.nvim": { "branch": "main", "commit": "f96a31855fa8aea55599cea412fe611b85a874ed" }, + "nvim-bqf": { "branch": "main", "commit": "1b24dc6050c34e8cd377b6b4cd6abe40509e0187" }, + "nvim-cmp": { "branch": "main", "commit": "a110e12d0b58eefcf5b771f533fc2cf3050680ac" }, + "nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" }, + "nvim-lspconfig": { "branch": "master", "commit": "cf97d2485fc3f6d4df1b79a3ea183e24c272215e" }, + "nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" }, + "nvim-spectre": { "branch": "master", "commit": "9a28f926d3371b7ef02243cbbb653a0478d06e31" }, + "nvim-surround": { "branch": "main", "commit": "ec2dc7671067e0086cdf29c2f5df2dd909d5f71f" }, + "nvim-treesitter": { "branch": "master", "commit": "4068e1c0966eee10bc8937b54f8cf8f68b76961f" }, + "nvim-treesitter-pairs": { "branch": "master", "commit": "f8c195d4d8464cba6971bf8de2d6a5c8c109b37a" }, + "nvim-treesitter-refactor": { "branch": "master", "commit": "65ad2eca822dfaec2a3603119ec3cc8826a7859e" }, + "nvim-ts-autotag": { "branch": "main", "commit": "323a3e16ed603e2e17b26b1c836d1e86c279f726" }, + "nvim-web-devicons": { "branch": "master", "commit": "c0cfc1738361b5da1cd0a962dd6f774cc444f856" }, + "obsidian.nvim": { "branch": "main", "commit": "e170641143704068233ba1d301e75684b67fc07c" }, + "oil.nvim": { "branch": "master", "commit": "10fbfdd37b6904c0776c5db1a27ab47eecba335e" }, + "plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" }, + "telescope.nvim": { "branch": "master", "commit": "bfcc7d5c6f12209139f175e6123a7b7de6d9c18a" }, + "todo-comments.nvim": { "branch": "main", "commit": "313b04e5b02d29ab9275c9295ff5e2b73921b0eb" }, + "treesj": { "branch": "main", "commit": "6e8bd008bacd5ad001c3953017c1dca20709e915" }, + "trouble.nvim": { "branch": "main", "commit": "4453fea6bb597830fbd58d2c484612f37b97bd8c" }, + "vim-vsnip": { "branch": "master", "commit": "02a8e79295c9733434aab4e0e2b8c4b7cea9f3a9" }, + "which-key.nvim": { "branch": "main", "commit": "af4ded85542d40e190014c732fa051bdbf88be3d" }, + "zen-mode.nvim": { "branch": "main", "commit": "21976479c7a0146b05a42707cf91c86b1e510945" } +} \ No newline at end of file diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua new file mode 100644 index 0000000..44e47a7 --- /dev/null +++ b/.config/nvim/lua/plugins.lua @@ -0,0 +1,21 @@ +return { + -- The colorscheme of choice + { + 'sainnhe/gruvbox-material', + lazy = false, + priority = 1000, + config = function() + vim.opt.background = 'dark' + vim.opt.termguicolors = true + vim.g.gruvbox_material_better_performance = 1 + vim.g.gruvbox_material_enable_italic = 1 + vim.g.gruvbox_material_enable_bold = 1 + vim.cmd.colorscheme('gruvbox-material') + vim.cmd.language('en_US.UTF-8') + end + }, + + -- Libraries, icons and shared usage + { 'nvim-lua/plenary.nvim', lazy = true }, + { 'nvim-tree/nvim-web-devicons', lazy = true }, +} diff --git a/nvim/lua/plugins/autocompletion.lua b/.config/nvim/lua/plugins/autocompletion.lua similarity index 99% rename from nvim/lua/plugins/autocompletion.lua rename to .config/nvim/lua/plugins/autocompletion.lua index 8c36e59..9c79f8e 100644 --- a/nvim/lua/plugins/autocompletion.lua +++ b/.config/nvim/lua/plugins/autocompletion.lua @@ -9,6 +9,7 @@ return { panel = { enabled = false }, }, }, + { 'hrsh7th/nvim-cmp', version = false, dependencies = { diff --git a/nvim/lua/plugins/keymaps.lua b/.config/nvim/lua/plugins/bindings.lua similarity index 100% rename from nvim/lua/plugins/keymaps.lua rename to .config/nvim/lua/plugins/bindings.lua index 4070045..8f75dfe 100644 --- a/nvim/lua/plugins/keymaps.lua +++ b/.config/nvim/lua/plugins/bindings.lua @@ -1,8 +1,8 @@ return { + { 'folke/flash.nvim', config = true }, { 'kylechui/nvim-surround', config = true }, { 'numToStr/Comment.nvim', config = true }, { 'numToStr/Navigator.nvim', config = true }, - { 'folke/flash.nvim', config = true }, { 'folke/which-key.nvim', config = function() diff --git a/.config/nvim/lua/plugins/enrichments.lua b/.config/nvim/lua/plugins/enrichments.lua new file mode 100644 index 0000000..e4d7681 --- /dev/null +++ b/.config/nvim/lua/plugins/enrichments.lua @@ -0,0 +1,50 @@ +return { + { 'lewis6991/gitsigns.nvim', config = true }, + { 'kevinhwang91/nvim-bqf', config = true }, + { 'nvim-pack/nvim-spectre', config = true, }, + { 'folke/trouble.nvim', config = true }, + { 'folke/todo-comments.nvim', config = true }, + { 'norcalli/nvim-colorizer.lua', + opts = { + css = { css = true }, + scss = { css = true }, + json = { css = true}, + javascript = { css = true }, + }, + }, + { 'folke/zen-mode.nvim', + opts = { + window = { + backdrop = 0.95, + width = 120, + height = 0.85, + options = { + signcolumn = 'no', -- disable signcolumn + number = false, -- disable number column + relativenumber = false, -- disable relative numbers + }, + }, + plugins = { + gitsigns = { enabled = true }, + wezterm = { + enabled = true, + font = '+2', + }, + }, + }, + }, + { 'rcarriga/nvim-notify', + config = function() + vim.notify = require('notify') + end + }, + { 'epwalsh/obsidian.nvim', + ft = 'markdown', + opts = { + dir = '~/Notes', + follow_url_func = function(url) + vim.fn.jobstart({ 'open', url }) + end, + } + }, +} diff --git a/nvim/lua/plugins/languages.lua b/.config/nvim/lua/plugins/languages.lua similarity index 97% rename from nvim/lua/plugins/languages.lua rename to .config/nvim/lua/plugins/languages.lua index 82364bf..6bdfe25 100644 --- a/nvim/lua/plugins/languages.lua +++ b/.config/nvim/lua/plugins/languages.lua @@ -22,8 +22,6 @@ return { 'html', 'javascript', 'json', - 'json5', - 'jsonc', 'lua', 'markdown', 'php', @@ -105,7 +103,6 @@ return { build = ":MasonUpdate", }, { 'Wansmer/treesj', - config = true, opts = { use_default_keymaps = false } }, } diff --git a/nvim/lua/plugins/snippets.lua b/.config/nvim/lua/plugins/snippets.lua similarity index 100% rename from nvim/lua/plugins/snippets.lua rename to .config/nvim/lua/plugins/snippets.lua diff --git a/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua similarity index 66% rename from nvim/lua/plugins/ui.lua rename to .config/nvim/lua/plugins/ui.lua index c2b1044..8e1fb4d 100644 --- a/nvim/lua/plugins/ui.lua +++ b/.config/nvim/lua/plugins/ui.lua @@ -1,7 +1,4 @@ return { - { 'nvim-pack/nvim-spectre', config = true, }, - { 'kevinhwang91/nvim-bqf', config = true }, - { 'lewis6991/gitsigns.nvim', config = true }, { 'nvim-telescope/telescope-fzf-native.nvim', build = 'make' }, { 'nvim-telescope/telescope.nvim', version = false, @@ -44,33 +41,7 @@ return { lualine_x = {}, lualine_y = { 'diff', 'diagnostics' }, }, - options = { theme = 'gruvbox' }, - }, - }, - { 'rcarriga/nvim-notify', - config = function() - vim.notify = require('notify') - end - }, - { 'folke/zen-mode.nvim', - opts = { - window = { - backdrop = 0.95, - width = 120, - height = 0.85, - options = { - signcolumn = 'no', -- disable signcolumn - number = false, -- disable number column - relativenumber = false, -- disable relative numbers - }, - }, - plugins = { - gitsigns = { enabled = true }, - wezterm = { - enabled = true, - font = '+2', - }, - }, + options = { theme = 'gruvbox-material' }, }, }, { 'stevearc/oil.nvim', diff --git a/nvim/spell/de.utf-8.spl b/.config/nvim/spell/de.utf-8.spl similarity index 100% rename from nvim/spell/de.utf-8.spl rename to .config/nvim/spell/de.utf-8.spl diff --git a/nvim/spell/en.utf-8.spl b/.config/nvim/spell/en.utf-8.spl similarity index 100% rename from nvim/spell/en.utf-8.spl rename to .config/nvim/spell/en.utf-8.spl diff --git a/starship.toml b/.config/starship.toml similarity index 100% rename from starship.toml rename to .config/starship.toml diff --git a/topgrade.toml b/.config/topgrade.toml similarity index 100% rename from topgrade.toml rename to .config/topgrade.toml diff --git a/editorconfig b/.editorconfig similarity index 80% rename from editorconfig rename to .editorconfig index bd3f5e2..ff2806a 100644 --- a/editorconfig +++ b/.editorconfig @@ -8,7 +8,7 @@ insert_final_newline = true indent_style = space indent_size = 2 -[*.{php,css,scss,js,json,json5,jsx,ts,tsx,html,twig,yml,yaml,svg,lua}] +[*.{php,css,scss,js,json,jsx,ts,tsx,html,twig,yml,yaml,svg,lua}] trim_trailing_whitespace = true [*.{md,markdown,rst,txt,csv,snip,mail}] diff --git a/gitconfig b/.gitconfig similarity index 65% rename from gitconfig rename to .gitconfig index db91ca3..90fcc5f 100644 --- a/gitconfig +++ b/.gitconfig @@ -35,19 +35,24 @@ untracked = cyan [alias] - git = !git + a = add + b = branch + br = branch -a + c = checkout cl = clean -f -d - st = status cm = commit co = checkout cp = cherry-pick - br = branch -a - ps = push - pl = pull - mg = merge - rs = reset HEAD --hard fame = shortlog -sn --all --no-merges + git = !git l = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit + m = merge + mg = merge + pl = pull + ps = push + rs = reset HEAD --hard + s = status + st = status [diff] tool = nvim -d @@ -63,7 +68,7 @@ keepBackup = false [push] - default = current + default = current [pull] rebase = false @@ -76,11 +81,27 @@ [delta] blame-code-style = syntax - blame-format = "{commit:<8} • {author:<18} • {timestamp:<15}" - blame-palette = "#333333" + blame-format = "{author:>18} ({commit:>8}) {timestamp:<13} " + commit-decoration-style = normal box + dark = true + file-added-label = [+] + file-copied-label = [==] + file-modified-label = [*] + file-removed-label = [-] + file-renamed-label = [->] hunk-header-style = omit hyperlinks = false + inline-hint-style = syntax + line-numbers = true + line-numbers-left-format = " {nm:>3} │" + line-numbers-right-format = " {np:>3} │" + merge-conflict-begin-symbol = ⌃ + merge-conflict-end-symbol = ⌄ + merge-conflict-ours-diff-header-decoration-style = '' + merge-conflict-theirs-diff-header-decoration-style = '' + minus-non-emph-style = syntax auto navigate = true + plus-non-emph-style = syntax auto side-by-side = true syntax-theme = gruvbox-dark width = "-4" diff --git a/.gitignore b/.gitignore index ee8361c..f78b124 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,45 @@ -nvim/lazy-lock.json -office/mutt/cache/* -office/mutt/tmp/* -office/vdirsyncer/status/* +# always-ignore extensions +*.diff +*.err +*.orig +*.log +*.rej +*.swo +*.swp +*.vi +*.bak + +# some folders +*~ +.~lock* +.tmp_* +.sass-cache +.revision +.rev +_srcs +log +tmp +node_modules +bower_components + +# OS or editor folders and temporary and other files +Session.vim +.DS_Store +Thumbs.db +.cache +.project +.settings +.tmproj +*.esproj +nbproject +*.komodoproject +.komodotools +NERD_tree* +*.iws +*.ipr +*.iml + +# vcs-folders to ignore +.hg +.svn +.CVS diff --git a/hammerspoon/init.lua b/.hammerspoon/init.lua similarity index 100% rename from hammerspoon/init.lua rename to .hammerspoon/init.lua diff --git a/.mailcap b/.mailcap new file mode 100644 index 0000000..94c3207 --- /dev/null +++ b/.mailcap @@ -0,0 +1,50 @@ +# HTML and text +text/html; w3m -I %{charset} -T text/html; copiousoutput; +text/plain; $EDITOR %s + +# images and other media +audio/aac; ~/Dotfiles/scripts/quicklook.sh %s +audio/mpeg; ~/Dotfiles/scripts/quicklook.sh %s +audio/wav; ~/Dotfiles/scripts/quicklook.sh %s +audio/webm; ~/Dotfiles/scripts/quicklook.sh %s +image/bmp; ~/Dotfiles/scripts/quicklook.sh %s +image/gif; ~/Dotfiles/scripts/quicklook.sh %s +image/jpeg; ~/Dotfiles/scripts/quicklook.sh %s +image/png; ~/Dotfiles/scripts/quicklook.sh %s +image/svg+xml; ~/Dotfiles/scripts/quicklook.sh %s +image/tiff; ~/Dotfiles/scripts/quicklook.sh %s +image/vnd.microsoft.icon; ~/Dotfiles/scripts/quicklook.sh %s +video/mp4; ~/Dotfiles/scripts/quicklook.sh %s +video/mpeg; ~/Dotfiles/scripts/quicklook.sh %s +video/webm; ~/Dotfiles/scripts/quicklook.sh %s +video/x-msvideo; ~/Dotfiles/scripts/quicklook.sh %s + +# fonts +application/vnd.ms-fontobject; ~/Dotfiles/scripts/quicklook.sh %s +font/otf; ~/Dotfiles/scripts/quicklook.sh %s +font/ttf; ~/Dotfiles/scripts/quicklook.sh %s +font/woff2; ~/Dotfiles/scripts/quicklook.sh %s +font/woff; ~/Dotfiles/scripts/quicklook.sh %s + +# documents +application/json; ~/Dotfiles/scripts/quicklook.sh %s +application/msword; ~/Dotfiles/scripts/quicklook.sh %s +application/pdf; ~/Dotfiles/scripts/quicklook.sh %s +application/rtf; ~/Dotfiles/scripts/quicklook.sh %s +application/vnd.ms-excel; ~/Dotfiles/scripts/quicklook.sh %s +application/vnd.ms-powerpoint; ~/Dotfiles/scripts/quicklook.sh %s +application/vnd.oasis.opendocument.presentation; ~/Dotfiles/scripts/quicklook.sh %s +application/vnd.oasis.opendocument.spreadsheet; ~/Dotfiles/scripts/quicklook.sh %s +application/vnd.oasis.opendocument.text; ~/Dotfiles/scripts/quicklook.sh %s +application/vnd.openxmlformats-officedocument.presentationml.presentation; ~/Dotfiles/scripts/quicklook.sh %s +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; ~/Dotfiles/scripts/quicklook.sh %s +application/vnd.openxmlformats-officedocument.wordprocessingml.document; ~/Dotfiles/scripts/quicklook.sh %s +application/xml; ~/Dotfiles/scripts/quicklook.sh %s +text/calendar; ~/Dotfiles/scripts/quicklook.sh %s +text/css; ~/Dotfiles/scripts/quicklook.sh %s +text/csv; ~/Dotfiles/scripts/quicklook.sh %s +text/javascript; ~/Dotfiles/scripts/quicklook.sh %s +text/xml; ~/Dotfiles/scripts/quicklook.sh %s + +# all other Unidentified files +application/octet-stream; ~/Dotfiles/scripts/quicklook.sh %s diff --git a/office/mbsyncrc b/.mbsyncrc similarity index 96% rename from office/mbsyncrc rename to .mbsyncrc index 02ec36f..7d421f4 100644 --- a/office/mbsyncrc +++ b/.mbsyncrc @@ -8,7 +8,7 @@ User s.rademacker@mailbox.org PassCmd "security find-internet-password -s 'imap.mailbox.org' -a 's.rademacker@mailbox.org' -w" SSLType IMAPS SSLVersions TLSv1.2 -CertificateFile ~/dotfiles/office/certificates.crt +CertificateFile ~/Dotfiles/extras/certificates.crt AuthMechs LOGIN # Remote storage diff --git a/office/msmtprc b/.msmtprc similarity index 75% rename from office/msmtprc rename to .msmtprc index cf9bea7..88b78c5 100644 --- a/office/msmtprc +++ b/.msmtprc @@ -7,4 +7,4 @@ user s.rademacker@mailbox.org from s.rademacker@mailbox.org tls on tls_starttls off -tls_trust_file ~/dotfiles/office/certificates.crt +tls_trust_file ~/Dotfiles/extras/certificates.crt diff --git a/.ripgreprc b/.ripgreprc new file mode 100644 index 0000000..9062a93 --- /dev/null +++ b/.ripgreprc @@ -0,0 +1,8 @@ +# Search hidden files / directories (e.g. dotfiles) by default +--hidden + +# Using glob patterns to include/exclude files or folders +--glob=!.git/* + +# Because who cares about case!? +--smart-case diff --git a/.stow-local-ignore b/.stow-local-ignore new file mode 100644 index 0000000..feee08f --- /dev/null +++ b/.stow-local-ignore @@ -0,0 +1,7 @@ +\.git +\.gitmodules +\.luarc.json +README.md +extras +scripts +snippets diff --git a/wezterm.lua b/.wezterm.lua similarity index 93% rename from wezterm.lua rename to .wezterm.lua index decfcfe..cb25a78 100644 --- a/wezterm.lua +++ b/.wezterm.lua @@ -54,32 +54,15 @@ local function newDevelopmentSession(path_and_title) end -- base config -config.color_scheme = 'GruvboxDark' -config.font = wezterm.font('MonaspiceAr Nerd Font') - +config.color_scheme = 'Gruvbox Material (Gogh)' +config.line_height = 1.15 +config.font_size = 14.0 config.font = wezterm.font({ family = 'MonaspiceAr Nerd Font', - weight = 'Regular', harfbuzz_features = { 'calt', 'liga', 'dlig', 'ss01', 'ss02', 'ss03', 'ss04', 'ss05', 'ss06', 'ss07', 'ss08' }, }) -config.font_rules = { - { -- Italic (comments) - intensity = 'Normal', - italic = true, - font = wezterm.font({ - family = "MonaspiceRn Nerd Font", - weight = "ExtraLight", - stretch = "Normal", - style = "Italic", - harfbuzz_features = { 'calt', 'liga', 'dlig', 'ss01', 'ss02', 'ss03', 'ss04', 'ss05', 'ss06', 'ss07', 'ss08' }, - }) - }, -} - config.default_prog = { '/opt/homebrew/bin/zsh' } -config.font_size = 14.0 -config.line_height = 1.1 config.initial_cols = 120 config.initial_rows = 32 config.inactive_pane_hsb = { saturation = 0.5, brightness = 0.9 } diff --git a/.zshrc b/.zshrc new file mode 100644 index 0000000..5970ea5 --- /dev/null +++ b/.zshrc @@ -0,0 +1,175 @@ +# Zinit +if [[ ! -f $HOME/.zinit/bin/zinit.zsh ]]; then + command mkdir -p "$HOME/.zinit" && command chmod g-rwX "$HOME/.zinit" + command git clone https://github.com/zdharma-continuum/zinit "$HOME/.zinit/bin" && \ + print -P "%F{33}▓▒░ %F{34}Installation successful.%f%b" || \ + print -P "%F{160}▓▒░ The clone has failed.%f%b" +fi + +source "$HOME/.zinit/bin/zinit.zsh" +autoload -Uz _zinit +(( ${+_comps} )) && _comps[zinit]=_zinit + +# Plugins +zi load zsh-users/zsh-autosuggestions +zi load zsh-users/zsh-completions +zi load zdharma-continuum/fast-syntax-highlighting +zi load starship/starship +zi snippet PZTM::history +zi snippet PZTM::completion + +# Fixes for unicode +setopt COMBINING_CHARS +setopt NO_HUP # fixes topgrade + +# Shell config +export SHELL=/opt/homebrew/bin/zsh +export TERM=xterm-256color +export CLICOLOR=1 +export COPYFILE_DISABLE=true +export COPY_EXTENDED_ATTRIBUTES_DISABLE=true +export DISABLE_AUTO_TITLE=true +export LANG=en_US.UTF-8 +export LC_ALL=en_US.UTF-8 +export LC_CTYPE=$LANG +export LC_COLLATE=C + +# Shell tools and 3rd party exports/config +export EDITOR="/opt/homebrew/bin/nvim" +export VISUAL="/opt/homebrew/bin/nvim" +export LESS="-F -i -J -M -R -W -x2 -X -z-4" +export PAGER="less -F -i -J -M -R -W -x2 -X -z-4" +export HOMEBREW_CASK_OPTS="--appdir=/Applications" +export HOMEBREW_NO_ENV_HINTS=true +export PYENV_ROOT="$HOME/.pyenv" +export FZF_DEFAULT_COMMAND="rg --files --hidden --follow --glob '!.git'" +export N_PREFIX="$HOME/n"; [[ :$PATH: == *":$N_PREFIX/bin:"* ]] || PATH+=":$N_PREFIX/bin" +export RIPGREP_CONFIG_PATH="$HOME/.ripgreprc" + +# Paths +export XDG_CONFIG_HOME="$HOME/.config" +export MANPATH=/opt/homebrew/share/man:$MANPATH +export PATH=/opt/homebrew/bin:$PATH +export PATH=/opt/homebrew/sbin:$PATH +export PATH=/opt/homebrew/opt/curl/bin:$PATH +export PATH=/.local/bin:$PATH +export PATH=/.composer/vendor/bin:$PATH +export PATH="$PYENV_ROOT/bin:$PATH" + +# Aliases +alias -- -='$EDITOR $(fzf)' +alias ...='cd ../..' +alias ..='cd ..' +alias O='cd ~ && mbsync -a && mu index' +alias g='git' +alias l='nvim "+Oil"' +alias lg='lazygit' +alias m='neomutt' +alias nb='npm run build' +alias np='npm run lint && npm run production' +alias nre='n engine > /dev/null && rm -f package-lock.json && rm -rf node_modules && npm install' +alias ns='npm start' +alias q='exit' +alias sudo='sudo ' +alias to='tiptop --net en0' +alias upall='n lts && topgrade && npm-check -gu && vimup && brew cleanup && brew autoremove' +alias v=$EDITOR +alias vd='$EDITOR -d' +alias ocrpdf='convert *.jpg -auto-orient temp.pdf && ocrmypdf --rotate-pages --optimize 3 --jpeg-quality 70 temp.pdf ocr.pdf' +alias vim=$EDITOR +alias vimup='nvim --headless "+TSUpdateSync" +qa && nvim --headless "+Lazy! sync" +qa && nvim --headless "+MasonUpdate" +qa' +alias yb='yarn build' +alias yp='yarn lint && yarn production' +alias yre='n engine > /dev/null && rm -f yarn.lock && rm -rf node_modules && yarn' +alias ys='yarn start' + +s () { # as in 'show': quicklook file + trap 'exit 0' 2 #traps Ctrl-C (signal 2) + qlmanage -p $1 >& /dev/null +} + +take () { # shortcut for creating and going into dir + mkdir -p $1 + cd $1 +} + +# used in aliases +current_branch () { + ref=$(git symbolic-ref HEAD 2> /dev/null) || \ + ref=$(git rev-parse --short HEAD 2> /dev/null) || return + echo ${ref#refs/heads/} +} + +# fancy vim/shell switch with ctrl-z (see zshrc) +fancy-ctrl-z () { + if [[ $#BUFFER -eq 0 ]]; then + BUFFER="fg" + zle accept-line + else + zle push-input + zle clear-screen + fi +} + +# terminal weather shortcut +wttr () { + if [[ -n "$1" ]] + then + curl "wttr.in/$1?format=v2" + else + curl "wttr.in/Leipzig?format=v2" + fi +} + +# function for easily converting a video for web +webvideo () { + if [ $# -eq 0 ]; then + echo "No arguments supplied, example usage: webvideo FILENAME --resize 1920 --mute" + else + zparseopts -E -D -- -resize:=opt_resize -mute=opt_mute + + file=$(basename -- "$1") + extension="${file##*.}" + filename="${file%.*}" + width="${opt_resize[2]}" + w="${width:-trunc(iw/2)*2}" + h="trunc(ih/2)*2" + + if [[ -n "$width" ]] + then + h="trunc(ow/a/2)*2" + fi + + scale="scale=$w\:$h" + ffmpeg -ss 00:00:02 -i $1 -frames:v 1 -vf $scale $filename.jpg + + if [ -z "${opt_mute}" ]; then + ffmpeg -i $1 -map_metadata -1 -c:a copy -c:v libx264 -crf 26 -preset veryslow -profile:v main -pix_fmt yuv420p -movflags +faststart -vf $scale $filename.h264.mp4 + ffmpeg -i $1 -map_metadata -1 -c:a libopus -b:a 64k -c:v libaom-av1 -crf 50 -b:v 0 -pix_fmt yuv420p -movflags +faststart -cpu-used 8 -vf $scale $filename.av1.webm + else + ffmpeg -i $1 -map_metadata -1 -an -c:v libx264 -crf 26 -preset veryslow -profile:v main -pix_fmt yuv420p -movflags +faststart -vf $scale $filename.h264.mp4 + ffmpeg -i $1 -map_metadata -1 -an -c:v libaom-av1 -crf 50 -b:v 0 -pix_fmt yuv420p -movflags +faststart -cpu-used 8 -vf $scale $filename.av1.webm + fi + fi +} + +pdf () { + convert *.jpg -auto-orient -monochrome temp.pdf + ocrmypdf --rotate-pages --optimize 3 --jpeg-quality 70 temp.pdf document.pdf + rm temp.pdf + rm *.jpg +} + +# easy vim/terminal switch +zle -N fancy-ctrl-z +bindkey '^Z' fancy-ctrl-z + +# other tools init, pyenv + rbenv are sandboxd +[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh +eval "$(starship init zsh)" +eval "$(zoxide init zsh)" +eval "$(rbenv init - --no-rehash)" +eval "$(pyenv init --path --no-rehash)" + +# chat-gpt, hooray +source ~/OPENAI_API_KEY.sh diff --git a/etc/dnsmasq.conf b/etc/dnsmasq.conf deleted file mode 100644 index 9964e8b..0000000 --- a/etc/dnsmasq.conf +++ /dev/null @@ -1,4 +0,0 @@ -#listen-address=127.0.0.1 -#bind-interfaces -address=/.localhost/127.0.0.1 -address=/.dev.localhost/127.0.0.1 diff --git a/etc/hosts b/etc/hosts deleted file mode 100644 index cf6027e..0000000 --- a/etc/hosts +++ /dev/null @@ -1,23 +0,0 @@ -## -# Host Database -# -# localhost is used to configure the loopback interface -# when the system is booting. Do not change this entry. -## -127.0.0.1 localhost -255.255.255.255 broadcasthost -::1 localhost - -# IP remapping -127.0.0.1 youtube.com -127.0.0.1 www.youtube.com -127.0.0.1 zeit.de -127.0.0.1 www.zeit.de -127.0.0.1 reddit.com -127.0.0.1 www.reddit.com -127.0.0.1 imgur.com -127.0.0.1 www.imgur.com -127.0.0.1 bikepacking.com -127.0.0.1 www.bikepacking.com -127.0.0.1 ultraleicht-trekking.com -127.0.0.1 www.ultraleicht-trekking.com diff --git a/etc/httpd/extra/httpd-autoindex.conf b/etc/httpd/extra/httpd-autoindex.conf deleted file mode 100644 index 8ec60f8..0000000 --- a/etc/httpd/extra/httpd-autoindex.conf +++ /dev/null @@ -1,93 +0,0 @@ -# -# Directives controlling the display of server-generated directory listings. -# -# Required modules: mod_authz_core, mod_authz_host, -# mod_autoindex, mod_alias -# -# To see the listing of a directory, the Options directive for the -# directory must include "Indexes", and the directory must not contain -# a file matching those listed in the DirectoryIndex directive. -# - -# -# IndexOptions: Controls the appearance of server-generated directory -# listings. -# -IndexOptions FancyIndexing HTMLTable VersionSort - -# We include the /icons/ alias for FancyIndexed directory listings. If -# you do not use FancyIndexing, you may comment this out. -# -Alias /icons/ "/opt/homebrew/opt/httpd/share/httpd/icons/" - - - Options Indexes MultiViews - AllowOverride None - Require all granted - - -# -# AddIcon* directives tell the server which icon to show for different -# files or filename extensions. These are only displayed for -# FancyIndexed directories. -# -AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip - -AddIconByType (TXT,/icons/text.gif) text/* -AddIconByType (IMG,/icons/image2.gif) image/* -AddIconByType (SND,/icons/sound2.gif) audio/* -AddIconByType (VID,/icons/movie.gif) video/* - -AddIcon /icons/binary.gif .bin .exe -AddIcon /icons/binhex.gif .hqx -AddIcon /icons/tar.gif .tar -AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv -AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip -AddIcon /icons/a.gif .ps .ai .eps -AddIcon /icons/layout.gif .html .shtml .htm .pdf -AddIcon /icons/text.gif .txt -AddIcon /icons/c.gif .c -AddIcon /icons/p.gif .pl .py -AddIcon /icons/f.gif .for -AddIcon /icons/dvi.gif .dvi -AddIcon /icons/uuencoded.gif .uu -AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl -AddIcon /icons/tex.gif .tex -AddIcon /icons/bomb.gif core - -AddIcon /icons/back.gif .. -AddIcon /icons/hand.right.gif README -AddIcon /icons/folder.gif ^^DIRECTORY^^ -AddIcon /icons/blank.gif ^^BLANKICON^^ - -# -# DefaultIcon is which icon to show for files which do not have an icon -# explicitly set. -# -DefaultIcon /icons/unknown.gif - -# -# AddDescription allows you to place a short description after a file in -# server-generated indexes. These are only displayed for FancyIndexed -# directories. -# Format: AddDescription "description" filename -# -#AddDescription "GZIP compressed document" .gz -#AddDescription "tar archive" .tar -#AddDescription "GZIP compressed tar archive" .tgz - -# -# ReadmeName is the name of the README file the server will look for by -# default, and append to directory listings. -# -# HeaderName is the name of a file which should be prepended to -# directory indexes. -ReadmeName README.html -HeaderName HEADER.html - -# -# IndexIgnore is a set of filenames which directory indexing should ignore -# and not include in the listing. Shell-style wildcarding is permitted. -# -IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t - diff --git a/etc/httpd/extra/httpd-dav.conf b/etc/httpd/extra/httpd-dav.conf deleted file mode 100644 index 356bf19..0000000 --- a/etc/httpd/extra/httpd-dav.conf +++ /dev/null @@ -1,50 +0,0 @@ -# -# Distributed authoring and versioning (WebDAV) -# -# Required modules: mod_alias, mod_auth_digest, mod_authn_core, mod_authn_file, -# mod_authz_core, mod_authz_user, mod_dav, mod_dav_fs, -# mod_setenvif - -# The following example gives DAV write access to a directory called -# "uploads" under the ServerRoot directory. -# -# The User/Group specified in httpd.conf needs to have write permissions -# on the directory where the DavLockDB is placed and on any directory where -# "Dav On" is specified. - -DavLockDB "/opt/homebrew/opt/httpd/var/DavLock" - -Alias /uploads "/opt/homebrew/opt/httpd/uploads" - - - Dav On - - AuthType Digest - AuthName DAV-upload - # You can use the htdigest program to create the password database: - # htdigest -c "/opt/homebrew/opt/httpd/user.passwd" DAV-upload admin - AuthUserFile "/opt/homebrew/opt/httpd/user.passwd" - AuthDigestProvider file - - # Allow universal read-access, but writes are restricted - # to the admin user. - - Require method GET POST OPTIONS - Require user admin - - - -# -# The following directives disable redirects on non-GET requests for -# a directory that does not include the trailing slash. This fixes a -# problem with several clients that do not appropriately handle -# redirects for folders with DAV methods. -# -BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully -BrowserMatch "MS FrontPage" redirect-carefully -BrowserMatch "^WebDrive" redirect-carefully -BrowserMatch "^WebDAVFS/1.[01234]" redirect-carefully -BrowserMatch "^gnome-vfs/1.0" redirect-carefully -BrowserMatch "^XML Spy" redirect-carefully -BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully -BrowserMatch " Konqueror/4" redirect-carefully diff --git a/etc/httpd/extra/httpd-default.conf b/etc/httpd/extra/httpd-default.conf deleted file mode 100644 index f1e7bc8..0000000 --- a/etc/httpd/extra/httpd-default.conf +++ /dev/null @@ -1,90 +0,0 @@ -# -# This configuration file reflects default settings for Apache HTTP Server. -# -# You may change these, but chances are that you may not need to. -# - -# -# Timeout: The number of seconds before receives and sends time out. -# -Timeout 300 - -# -# KeepAlive: Whether or not to allow persistent connections (more than -# one request per connection). Set to "Off" to deactivate. -# -KeepAlive On - -# -# MaxKeepAliveRequests: The maximum number of requests to allow -# during a persistent connection. Set to 0 to allow an unlimited amount. -# We recommend you leave this number high, for maximum performance. -# -MaxKeepAliveRequests 100 - -# -# KeepAliveTimeout: Number of seconds to wait for the next request from the -# same client on the same connection. -# -KeepAliveTimeout 5 - -# -# UseCanonicalName: Determines how Apache constructs self-referencing -# URLs and the SERVER_NAME and SERVER_PORT variables. -# When set "Off", Apache will use the Hostname and Port supplied -# by the client. When set "On", Apache will use the value of the -# ServerName directive. -# -UseCanonicalName Off - -# -# AccessFileName: The name of the file to look for in each directory -# for additional configuration directives. See also the AllowOverride -# directive. -# -AccessFileName .htaccess - -# -# ServerTokens -# This directive configures what you return as the Server HTTP response -# Header. The default is 'Full' which sends information about the OS-Type -# and compiled in modules. -# Set to one of: Full | OS | Minor | Minimal | Major | Prod -# where Full conveys the most information, and Prod the least. -# -ServerTokens Full - -# -# Optionally add a line containing the server version and virtual host -# name to server-generated pages (internal error documents, FTP directory -# listings, mod_status and mod_info output etc., but not CGI generated -# documents or custom error documents). -# Set to "EMail" to also include a mailto: link to the ServerAdmin. -# Set to one of: On | Off | EMail -# -ServerSignature Off - -# -# HostnameLookups: Log the names of clients or just their IP addresses -# e.g., www.apache.org (on) or 204.62.129.132 (off). -# The default is off because it'd be overall better for the net if people -# had to knowingly turn this feature on, since enabling it means that -# each client request will result in AT LEAST one lookup request to the -# nameserver. -# -HostnameLookups Off - -# -# Set a timeout for how long the client may take to send the request header -# and body. -# The default for the headers is header=20-40,MinRate=500, which means wait -# for the first byte of headers for 20 seconds. If some data arrives, -# increase the timeout corresponding to a data rate of 500 bytes/s, but not -# above 40 seconds. -# The default for the request body is body=20,MinRate=500, which is the same -# but has no upper limit for the timeout. -# To disable, set to header=0 body=0 -# - - RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500 - diff --git a/etc/httpd/extra/httpd-default.conf.default b/etc/httpd/extra/httpd-default.conf.default deleted file mode 100644 index 7196922..0000000 --- a/etc/httpd/extra/httpd-default.conf.default +++ /dev/null @@ -1,90 +0,0 @@ -# -# This configuration file reflects default settings for Apache HTTP Server. -# -# You may change these, but chances are that you may not need to. -# - -# -# Timeout: The number of seconds before receives and sends time out. -# -Timeout 60 - -# -# KeepAlive: Whether or not to allow persistent connections (more than -# one request per connection). Set to "Off" to deactivate. -# -KeepAlive On - -# -# MaxKeepAliveRequests: The maximum number of requests to allow -# during a persistent connection. Set to 0 to allow an unlimited amount. -# We recommend you leave this number high, for maximum performance. -# -MaxKeepAliveRequests 100 - -# -# KeepAliveTimeout: Number of seconds to wait for the next request from the -# same client on the same connection. -# -KeepAliveTimeout 5 - -# -# UseCanonicalName: Determines how Apache constructs self-referencing -# URLs and the SERVER_NAME and SERVER_PORT variables. -# When set "Off", Apache will use the Hostname and Port supplied -# by the client. When set "On", Apache will use the value of the -# ServerName directive. -# -UseCanonicalName Off - -# -# AccessFileName: The name of the file to look for in each directory -# for additional configuration directives. See also the AllowOverride -# directive. -# -AccessFileName .htaccess - -# -# ServerTokens -# This directive configures what you return as the Server HTTP response -# Header. The default is 'Full' which sends information about the OS-Type -# and compiled in modules. -# Set to one of: Full | OS | Minor | Minimal | Major | Prod -# where Full conveys the most information, and Prod the least. -# -ServerTokens Full - -# -# Optionally add a line containing the server version and virtual host -# name to server-generated pages (internal error documents, FTP directory -# listings, mod_status and mod_info output etc., but not CGI generated -# documents or custom error documents). -# Set to "EMail" to also include a mailto: link to the ServerAdmin. -# Set to one of: On | Off | EMail -# -ServerSignature Off - -# -# HostnameLookups: Log the names of clients or just their IP addresses -# e.g., www.apache.org (on) or 204.62.129.132 (off). -# The default is off because it'd be overall better for the net if people -# had to knowingly turn this feature on, since enabling it means that -# each client request will result in AT LEAST one lookup request to the -# nameserver. -# -HostnameLookups Off - -# -# Set a timeout for how long the client may take to send the request header -# and body. -# The default for the headers is header=20-40,MinRate=500, which means wait -# for the first byte of headers for 20 seconds. If some data arrives, -# increase the timeout corresponding to a data rate of 500 bytes/s, but not -# above 40 seconds. -# The default for the request body is body=20,MinRate=500, which is the same -# but has no upper limit for the timeout. -# To disable, set to header=0 body=0 -# - - RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500 - diff --git a/etc/httpd/extra/httpd-h5bp-server-configs.conf b/etc/httpd/extra/httpd-h5bp-server-configs.conf deleted file mode 100644 index 572f6de..0000000 --- a/etc/httpd/extra/httpd-h5bp-server-configs.conf +++ /dev/null @@ -1,1260 +0,0 @@ -# Apache Server Configs v5.0.0 | MIT License -# https://github.com/h5bp/server-configs-apache - -# (!) Using `.htaccess` files slows down Apache, therefore, if you have -# access to the main server configuration file (which is usually called -# `httpd.conf`), you should add this logic there. -# -# https://httpd.apache.org/docs/current/howto/htaccess.html - -# ###################################################################### -# # CROSS-ORIGIN # -# ###################################################################### - -# ---------------------------------------------------------------------- -# | Cross-origin requests | -# ---------------------------------------------------------------------- - -# Allow cross-origin requests. -# -# https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS -# https://enable-cors.org/ -# https://www.w3.org/TR/cors/ - -# (!) Do not use this without understanding the consequences. -# This will permit access from any other website. -# Instead of using this file, consider using a specific rule such as -# allowing access based on (sub)domain: -# -# Header set Access-Control-Allow-Origin "subdomain.example.com" -# -# (1) When `Access-Control-Allow-Origin` points to a specific rule rather -# than `*`, then `Vary: Origin` should be sent along with the response. - -# -# Header set Access-Control-Allow-Origin "*" - -# # (1) -# # Header append Vary Origin -# - -# ---------------------------------------------------------------------- -# | Cross-origin images | -# ---------------------------------------------------------------------- - -# Send the CORS header for images when browsers request it. -# -# https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image -# https://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html - - - - - SetEnvIf Origin ":" IS_CORS - Header set Access-Control-Allow-Origin "*" env=IS_CORS - - - - -# ---------------------------------------------------------------------- -# | Cross-origin web fonts | -# ---------------------------------------------------------------------- - -# Allow cross-origin access to web fonts. -# -# https://developers.google.com/fonts/docs/troubleshooting - - - - Header set Access-Control-Allow-Origin "*" - - - -# ---------------------------------------------------------------------- -# | Cross-origin resource timing | -# ---------------------------------------------------------------------- - -# Allow cross-origin access to the timing information for all resources. -# -# If a resource isn't served with a `Timing-Allow-Origin` header that would -# allow its timing information to be shared with the document, some of the -# attributes of the `PerformanceResourceTiming` object will be set to zero. -# -# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Timing-Allow-Origin -# https://www.w3.org/TR/resource-timing/ -# https://www.stevesouders.com/blog/2014/08/21/resource-timing-practical-tips/ - -# -# Header set Timing-Allow-Origin: "*" -# - -# ###################################################################### -# # ERRORS # -# ###################################################################### - -# ---------------------------------------------------------------------- -# | Custom error messages/pages | -# ---------------------------------------------------------------------- - -# Customize what Apache returns to the client in case of an error. -# -# https://httpd.apache.org/docs/current/mod/core.html#errordocument - -# ErrorDocument 404 /404.html - -# ---------------------------------------------------------------------- -# | Error prevention | -# ---------------------------------------------------------------------- - -# Disable the pattern matching based on filenames. -# -# This setting prevents Apache from returning a 404 error as the result of a -# rewrite when the directory with the same name does not exist. -# -# https://httpd.apache.org/docs/current/content-negotiation.html#multiviews - -Options -MultiViews - -# ###################################################################### -# # MEDIA TYPES AND CHARACTER ENCODINGS # -# ###################################################################### - -# ---------------------------------------------------------------------- -# | Media types | -# ---------------------------------------------------------------------- - -# Serve resources with the proper media types (f.k.a. MIME types). -# -# https://www.iana.org/assignments/media-types/media-types.xhtml -# https://httpd.apache.org/docs/current/mod/mod_mime.html#addtype - - - - # Data interchange - - AddType application/atom+xml atom - AddType application/json json map topojson - AddType application/ld+json jsonld - AddType application/rss+xml rss - AddType application/geo+json geojson - AddType application/rdf+xml rdf - AddType application/xml xml - - - # JavaScript - - # Servers should use text/javascript for JavaScript resources. - # https://html.spec.whatwg.org/multipage/scripting.html#scriptingLanguages - - AddType text/javascript js mjs - - - # Manifest files - - AddType application/manifest+json webmanifest - AddType application/x-web-app-manifest+json webapp - AddType text/cache-manifest appcache - - - # Media files - - AddType audio/mp4 f4a f4b m4a - AddType audio/ogg oga ogg opus - AddType image/avif avif - AddType image/avif-sequence avifs - AddType image/bmp bmp - AddType image/jxl jxl - AddType image/svg+xml svg svgz - AddType image/webp webp - AddType video/mp4 f4v f4p m4v mp4 - AddType video/ogg ogv - AddType video/webm webm - AddType video/x-flv flv - - # Serving `.ico` image files with a different media type prevents - # Internet Explorer from displaying them as images: - # https://github.com/h5bp/html5-boilerplate/commit/37b5fec090d00f38de64b591bcddcb205aadf8ee - - AddType image/x-icon cur ico - - - # WebAssembly - - AddType application/wasm wasm - - - # Web fonts - - AddType font/woff woff - AddType font/woff2 woff2 - AddType application/vnd.ms-fontobject eot - AddType font/ttf ttf - AddType font/collection ttc - AddType font/otf otf - - - # Other - - AddType application/octet-stream safariextz - AddType application/x-bb-appworld bbaw - AddType application/x-chrome-extension crx - AddType application/x-opera-extension oex - AddType application/x-xpinstall xpi - AddType text/calendar ics - AddType text/markdown markdown md - AddType text/vcard vcard vcf - AddType text/vnd.rim.location.xloc xloc - AddType text/vtt vtt - AddType text/x-component htc - - - -# ---------------------------------------------------------------------- -# | Character encodings | -# ---------------------------------------------------------------------- - -# Serve all resources labeled as `text/html` or `text/plain` with the media type -# `charset` parameter set to `UTF-8`. -# -# https://httpd.apache.org/docs/current/mod/core.html#adddefaultcharset - -AddDefaultCharset utf-8 - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# Serve the following file types with the media type `charset` parameter set to -# `UTF-8`. -# -# https://httpd.apache.org/docs/current/mod/mod_mime.html#addcharset - - - AddCharset utf-8 .appcache \ - .bbaw \ - .css \ - .htc \ - .ics \ - .js \ - .json \ - .manifest \ - .map \ - .markdown \ - .md \ - .mjs \ - .topojson \ - .vtt \ - .vcard \ - .vcf \ - .webmanifest \ - .xloc - - -# ###################################################################### -# # REWRITES # -# ###################################################################### - -# ---------------------------------------------------------------------- -# | Rewrite engine | -# ---------------------------------------------------------------------- - -# (1) Turn on the rewrite engine (this is necessary in order for the -# `RewriteRule` directives to work). -# -# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#RewriteEngine -# -# (2) Enable the `FollowSymLinks` option if it isn't already. -# -# https://httpd.apache.org/docs/current/mod/core.html#options -# -# (3) If your web host doesn't allow the `FollowSymlinks` option, you need to -# comment it out or remove it, and then uncomment the -# `Options +SymLinksIfOwnerMatch` line (4), but be aware of the performance -# impact. -# -# https://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks -# -# (4) Some cloud hosting services will require you set `RewriteBase`. -# -# https://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-modrewrite-not-working-on-my-site -# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase -# -# (5) Depending on how your server is set up, you may also need to use the -# `RewriteOptions` directive to enable some options for the rewrite engine. -# -# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions - - - - # (1) - RewriteEngine On - - # (2) - Options +FollowSymlinks - - # (3) - # Options +SymLinksIfOwnerMatch - - # (4) - # RewriteBase / - - # (5) - # RewriteOptions - - - -# ---------------------------------------------------------------------- -# | Forcing `https://` | -# ---------------------------------------------------------------------- - -# Redirect from the `http://` to the `https://` version of the URL. -# -# https://wiki.apache.org/httpd/RewriteHTTPToHTTPS - -# (1) If you're using cPanel AutoSSL or the Let's Encrypt webroot method it -# will fail to validate the certificate if validation requests are -# redirected to HTTPS. Turn on the condition(s) you need. -# -# https://www.iana.org/assignments/well-known-uris/well-known-uris.xhtml -# https://tools.ietf.org/html/draft-ietf-acme-acme-12 - -# -# RewriteEngine On -# RewriteCond %{HTTPS} !=on -# # (1) -# # RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/ -# # RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[\w-]+$ -# # RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$ -# RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] -# - -# ---------------------------------------------------------------------- -# | Suppressing the `www.` at the beginning of URLs | -# ---------------------------------------------------------------------- - -# Rewrite www.example.com → example.com - -# The same content should never be available under two different URLs, -# especially not with and without `www.` at the beginning. -# This can cause SEO problems (duplicate content), and therefore, you should -# choose one of the alternatives and redirect the other one. -# -# (!) NEVER USE BOTH WWW-RELATED RULES AT THE SAME TIME! - -# (1) Set %{ENV:PROTO} variable, to allow rewrites to redirect with the -# appropriate schema automatically (http or https). -# -# (2) The rule assumes by default that both HTTP and HTTPS environments are -# available for redirection. -# If your SSL certificate could not handle one of the domains used during -# redirection, you should turn the condition on. -# -# https://github.com/h5bp/server-configs-apache/issues/52 - - - - RewriteEngine On - - # (1) - RewriteCond %{HTTPS} =on - RewriteRule ^ - [E=PROTO:https] - RewriteCond %{HTTPS} !=on - RewriteRule ^ - [E=PROTO:http] - - # (2) - # RewriteCond %{HTTPS} !=on - - RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] - RewriteRule ^ %{ENV:PROTO}://%1%{REQUEST_URI} [R=301,L] - - - -# ---------------------------------------------------------------------- -# | Forcing the `www.` at the beginning of URLs | -# ---------------------------------------------------------------------- - -# Rewrite example.com → www.example.com - -# The same content should never be available under two different URLs, -# especially not with and without `www.` at the beginning. -# This can cause SEO problems (duplicate content), and therefore, you should -# choose one of the alternatives and redirect the other one. -# -# (!) NEVER USE BOTH WWW-RELATED RULES AT THE SAME TIME! - -# (1) Set %{ENV:PROTO} variable, to allow rewrites to redirect with the -# appropriate schema automatically (http or https). -# -# (2) The rule assumes by default that both HTTP and HTTPS environments are -# available for redirection. -# If your SSL certificate could not handle one of the domains used during -# redirection, you should turn the condition on. -# -# https://github.com/h5bp/server-configs-apache/issues/52 - -# Be aware that the following might not be a good idea if you use "real" -# subdomains for certain parts of your website. - -# - -# RewriteEngine On - -# # (1) -# RewriteCond %{HTTPS} =on -# RewriteRule ^ - [E=PROTO:https] -# RewriteCond %{HTTPS} !=on -# RewriteRule ^ - [E=PROTO:http] - -# # (2) -# # RewriteCond %{HTTPS} !=on - -# RewriteCond %{HTTP_HOST} !^www\. [NC] -# RewriteCond %{SERVER_ADDR} !=127.0.0.1 -# RewriteCond %{SERVER_ADDR} !=::1 -# RewriteRule ^ %{ENV:PROTO}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] - -# - -# ###################################################################### -# # SECURITY # -# ###################################################################### - -# ---------------------------------------------------------------------- -# | Frame Options | -# ---------------------------------------------------------------------- - -# Protect website against clickjacking. -# -# The example below sends the `X-Frame-Options` response header with the value -# `DENY`, informing browsers not to display the content of the web page in any -# frame. -# -# This might not be the best setting for everyone. You should read about the -# other two possible values the `X-Frame-Options` header field can have: -# `SAMEORIGIN` and `ALLOW-FROM`. -# https://tools.ietf.org/html/rfc7034#section-2.1. -# -# Keep in mind that while you could send the `X-Frame-Options` header for all -# of your website's pages, this has the potential downside that it forbids even -# non-malicious framing of your content. -# -# Nonetheless, you should ensure that you send the `X-Frame-Options` header for -# all pages that allow a user to make a state-changing operation (e.g: pages -# that contain one-click purchase links, checkout or bank-transfer confirmation -# pages, pages that make permanent configuration changes, etc.). -# -# Sending the `X-Frame-Options` header can also protect your website against -# more than just clickjacking attacks. -# https://cure53.de/xfo-clickjacking.pdf. -# -# (!) The `Content-Security-Policy` header has a `frame-ancestors` directive -# which obsoletes this header for supporting browsers. -# -# https://tools.ietf.org/html/rfc7034 -# https://owasp.org/www-project-secure-headers/#x-frame-options -# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options -# https://docs.microsoft.com/archive/blogs/ieinternals/combating-clickjacking-with-x-frame-options - -# -# Header always set X-Frame-Options "DENY" "expr=%{CONTENT_TYPE} =~ m#text/html#i" -# - -# ---------------------------------------------------------------------- -# | Content Security Policy (CSP) | -# ---------------------------------------------------------------------- - -# Mitigate the risk of cross-site scripting and other content-injection -# attacks. -# -# This can be done by setting a Content Security Policy which permits -# trusted sources of content for your website. -# -# There is no policy that fits all websites, you will have to modify the -# `Content-Security-Policy` directives in the example depending on your needs. -# -# The example policy below aims to: -# -# (1) Restrict all fetches by default to the origin of the current website by -# setting the `default-src` directive to `'self'` - which acts as a -# fallback to all "Fetch directives" (https://developer.mozilla.org/en-US/docs/Glossary/Fetch_directive). -# -# This is convenient as you do not have to specify all Fetch directives -# that apply to your site, for example: -# `connect-src 'self'; font-src 'self'; script-src 'self'; style-src 'self'`, etc. -# -# This restriction also means that you must explicitly define from which -# site(s) your website is allowed to load resources from. -# -# (2) The `` element is not allowed on the website. This is to prevent -# attackers from changing the locations of resources loaded from relative -# URLs. -# -# If you want to use the `` element, then `base-uri 'self'` can be -# used instead. -# -# (3) Form submissions are only allowed from the current website by setting: -# `form-action 'self'`. -# -# (4) Prevents all websites (including your own) from embedding your webpages -# within e.g. the `