From bac7cdd09b24c07fd06f88f36fad7e9c9413d862 Mon Sep 17 00:00:00 2001 From: Felix Wittwer Date: Mon, 21 Dec 2020 15:13:39 +0100 Subject: [PATCH] Initial commit --- .gitignore | 6 + .gitmodules | 9 + entropy/.gitconfig | 27 + entropy/.urlview | 1 + entropy/.vimrc | 95 ++ entropy/config.fish | 6 + entropy/dunst/dunstrc | 431 +++++++++ entropy/git-commit-template.txt | 27 + entropy/i3/config | 201 ++++ entropy/i3status-rust/config.toml | 55 ++ entropy/initialize.sh | 96 ++ entropy/kitty/kitty-themes | 1 + entropy/kitty/kitty.conf | 899 ++++++++++++++++++ entropy/kitty/theme.conf | 1 + entropy/mail/.mailcap | 13 + entropy/mail/.notmuch-config | 88 ++ .../mail/neomutt/accounts/tudresden.muttrc | 24 + entropy/mail/neomutt/gpg.rc | 136 +++ entropy/mail/neomutt/neomuttrc | 166 ++++ entropy/mail/neomutt/sidebar.muttrc | 23 + entropy/mail/neomutt/themes/dracula | 1 + entropy/mail/neomutt/themes/powerline | 1 + entropy/mail/template.mbsyncrc | 26 + entropy/mail/template.msmtprc | 20 + entropy/nixos/configuration.nix | 318 +++++++ entropy/nixos/extra/login.jpg | Bin 0 -> 357898 bytes entropy/nixos/hardware-configuration.nix | 31 + entropy/nixos/modules/python.nix | 17 + entropy/nixos/modules/r.nix | 15 + entropy/vpn/TUD.ovpn | 60 ++ tycho/.gitconfig | 26 + tycho/.global_gitignore | 1 + tycho/.vimrc | 94 ++ tycho/.yabairc | 46 + tycho/create_home.sh | 121 +++ tycho/git-commit-template.txt | 27 + tycho/kitty/kitty-themes/.all-contributorsrc | 111 +++ .../.github/ISSUE_TEMPLATE/theme-request.md | 10 + .../.github/PULL_REQUEST_TEMPLATE.md | 9 + .../kitty-themes/.github/kitty-themes.jpg | Bin 0 -> 157126 bytes tycho/kitty/kitty-themes/.tools/README.md | 9 + .../kitty/kitty-themes/.tools/color_table.sh | 26 + tycho/kitty/kitty-themes/.tools/convert.py | 30 + .../kitty-themes/.tools/convert_conf.swift | 57 ++ .../kitty-themes/.tools/extract-vscode.sh | 5 + .../kitty-themes/.tools/generate_conf.sh | 10 + .../.tools/generate_theme_preview.sh | 22 + .../.tools/generate_themes_previews.sh | 32 + tycho/kitty/kitty-themes/.tools/libcapture.sh | 23 + tycho/kitty/kitty-themes/.tools/markdown.sh | 15 + tycho/kitty/kitty-themes/.tools/palette.py | 91 ++ tycho/kitty/kitty-themes/.tools/preview.py | 136 +++ tycho/kitty/kitty-themes/.tools/previews.sh | 24 + tycho/kitty/kitty-themes/.tools/template.conf | 37 + .../kitty-themes/.tools/template.conf.j2 | 91 ++ .../kitty/kitty-themes/.tools/windowid.swift | 20 + tycho/kitty/kitty-themes/CONTRIBUTING.md | 8 + tycho/kitty/kitty-themes/LICENSE.md | 21 + tycho/kitty/kitty-themes/README.md | 465 +++++++++ tycho/kitty/kitty-themes/themes/3024_Day.conf | 21 + .../kitty/kitty-themes/themes/3024_Night.conf | 21 + .../kitty-themes/themes/AdventureTime.conf | 21 + .../kitty/kitty-themes/themes/Afterglow.conf | 21 + .../kitty/kitty-themes/themes/AlienBlood.conf | 21 + tycho/kitty/kitty-themes/themes/Alucard.conf | 21 + .../kitty/kitty-themes/themes/Apprentice.conf | 26 + tycho/kitty/kitty-themes/themes/Argonaut.conf | 21 + tycho/kitty/kitty-themes/themes/Arthur.conf | 21 + .../themes/AtelierSulphurpool.conf | 21 + tycho/kitty/kitty-themes/themes/Atom.conf | 21 + .../kitty-themes/themes/AtomOneLight.conf | 21 + tycho/kitty/kitty-themes/themes/Batman.conf | 21 + .../kitty-themes/themes/Belafonte_Day.conf | 21 + .../kitty-themes/themes/Belafonte_Night.conf | 21 + .../kitty-themes/themes/BirdsOfParadise.conf | 21 + tycho/kitty/kitty-themes/themes/Blazer.conf | 21 + tycho/kitty/kitty-themes/themes/Borland.conf | 21 + .../kitty-themes/themes/Bright_Lights.conf | 21 + .../kitty/kitty-themes/themes/Broadcast.conf | 21 + .../kitty/kitty-themes/themes/Brogrammer.conf | 21 + tycho/kitty/kitty-themes/themes/C64.conf | 21 + tycho/kitty/kitty-themes/themes/CLRS.conf | 21 + tycho/kitty/kitty-themes/themes/Chalk.conf | 21 + .../kitty/kitty-themes/themes/Chalkboard.conf | 21 + tycho/kitty/kitty-themes/themes/Ciapre.conf | 21 + tycho/kitty/kitty-themes/themes/Cobalt2.conf | 21 + .../kitty-themes/themes/Cobalt_Neon.conf | 21 + .../kitty-themes/themes/CrayonPonyFish.conf | 21 + .../kitty-themes/themes/Dark_Pastel.conf | 21 + tycho/kitty/kitty-themes/themes/Darkside.conf | 21 + tycho/kitty/kitty-themes/themes/Desert.conf | 21 + .../kitty-themes/themes/DimmedMonokai.conf | 21 + tycho/kitty/kitty-themes/themes/DotGov.conf | 21 + tycho/kitty/kitty-themes/themes/Dracula.conf | 21 + .../kitty/kitty-themes/themes/Dumbledore.conf | 21 + .../kitty-themes/themes/Duotone_Dark.conf | 21 + tycho/kitty/kitty-themes/themes/ENCOM.conf | 21 + .../kitty/kitty-themes/themes/Earthsong.conf | 21 + .../kitty/kitty-themes/themes/Elemental.conf | 21 + tycho/kitty/kitty-themes/themes/Espresso.conf | 21 + .../kitty-themes/themes/Espresso_Libre.conf | 21 + .../kitty/kitty-themes/themes/Fideloper.conf | 21 + tycho/kitty/kitty-themes/themes/FishTank.conf | 21 + tycho/kitty/kitty-themes/themes/Flat.conf | 21 + tycho/kitty/kitty-themes/themes/Flatland.conf | 21 + .../kitty/kitty-themes/themes/Floraverse.conf | 21 + .../kitty-themes/themes/FrontEndDelight.conf | 21 + .../kitty/kitty-themes/themes/FunForrest.conf | 21 + tycho/kitty/kitty-themes/themes/Galaxy.conf | 21 + tycho/kitty/kitty-themes/themes/Github.conf | 21 + tycho/kitty/kitty-themes/themes/Glacier.conf | 21 + tycho/kitty/kitty-themes/themes/GoaBase.conf | 21 + tycho/kitty/kitty-themes/themes/Grape.conf | 21 + tycho/kitty/kitty-themes/themes/Grass.conf | 21 + tycho/kitty/kitty-themes/themes/Hardcore.conf | 21 + tycho/kitty/kitty-themes/themes/Harper.conf | 21 + tycho/kitty/kitty-themes/themes/Highway.conf | 21 + .../kitty-themes/themes/Hipster_Green.conf | 21 + tycho/kitty/kitty-themes/themes/Homebrew.conf | 21 + tycho/kitty/kitty-themes/themes/Hurtado.conf | 21 + tycho/kitty/kitty-themes/themes/Hybrid.conf | 21 + .../kitty-themes/themes/IC_Green_PPL.conf | 21 + .../kitty-themes/themes/IC_Orange_PPL.conf | 21 + tycho/kitty/kitty-themes/themes/IR_Black.conf | 21 + .../kitty-themes/themes/Jackie_Brown.conf | 21 + .../kitty/kitty-themes/themes/Japanesque.conf | 21 + .../kitty/kitty-themes/themes/Jellybeans.conf | 21 + .../themes/JetBrains_Darcula.conf | 21 + tycho/kitty/kitty-themes/themes/Kibble.conf | 21 + .../themes/Later_This_Evening.conf | 21 + .../kitty/kitty-themes/themes/Lavandula.conf | 21 + .../kitty-themes/themes/LiquidCarbon.conf | 21 + .../themes/LiquidCarbonTransparent.conf | 21 + .../LiquidCarbonTransparentInverse.conf | 21 + tycho/kitty/kitty-themes/themes/Man_Page.conf | 21 + tycho/kitty/kitty-themes/themes/Material.conf | 21 + .../kitty-themes/themes/MaterialDark.conf | 21 + tycho/kitty/kitty-themes/themes/Mathias.conf | 21 + .../kitty/kitty-themes/themes/Medallion.conf | 21 + .../kitty/kitty-themes/themes/Misterioso.conf | 21 + tycho/kitty/kitty-themes/themes/Molokai.conf | 21 + tycho/kitty/kitty-themes/themes/MonaLisa.conf | 21 + tycho/kitty/kitty-themes/themes/Monokai.conf | 41 + .../kitty-themes/themes/Monokai_Classic.conf | 47 + .../kitty-themes/themes/Monokai_Pro.conf | 47 + .../themes/Monokai_Pro_(Filter_Machine).conf | 47 + .../themes/Monokai_Pro_(Filter_Octagon).conf | 47 + .../Monokai_Pro_(Filter_Ristretto).conf | 47 + .../themes/Monokai_Pro_(Filter_Spectrum).conf | 47 + .../kitty-themes/themes/Monokai_Soda.conf | 21 + tycho/kitty/kitty-themes/themes/N0tch2k.conf | 21 + .../kitty/kitty-themes/themes/Neopolitan.conf | 21 + tycho/kitty/kitty-themes/themes/Neutron.conf | 21 + .../kitty-themes/themes/NightLion_v1.conf | 21 + .../kitty-themes/themes/NightLion_v2.conf | 21 + tycho/kitty/kitty-themes/themes/Nova.conf | 21 + tycho/kitty/kitty-themes/themes/Novel.conf | 21 + tycho/kitty/kitty-themes/themes/Obsidian.conf | 21 + tycho/kitty/kitty-themes/themes/Ocean.conf | 21 + .../kitty-themes/themes/OceanicMaterial.conf | 21 + tycho/kitty/kitty-themes/themes/Ollie.conf | 21 + tycho/kitty/kitty-themes/themes/OneDark.conf | 25 + .../kitty-themes/themes/Parasio_Dark.conf | 21 + .../kitty/kitty-themes/themes/PaulMillr.conf | 21 + .../kitty/kitty-themes/themes/PencilDark.conf | 21 + .../kitty-themes/themes/PencilLight.conf | 21 + .../kitty-themes/themes/Piatto_Light.conf | 21 + tycho/kitty/kitty-themes/themes/Pnevma.conf | 21 + tycho/kitty/kitty-themes/themes/Pro.conf | 21 + .../kitty/kitty-themes/themes/Red_Alert.conf | 21 + .../kitty/kitty-themes/themes/Red_Sands.conf | 21 + .../themes/Relaxed_Afterglow.conf | 25 + .../kitty-themes/themes/Renault_Style.conf | 22 + .../themes/Renault_Style_Light.conf | 21 + .../kitty-themes/themes/Rippedcasts.conf | 21 + tycho/kitty/kitty-themes/themes/Royal.conf | 21 + .../kitty/kitty-themes/themes/SeaShells.conf | 21 + .../kitty-themes/themes/Seafoam_Pastel.conf | 21 + tycho/kitty/kitty-themes/themes/Seti.conf | 21 + tycho/kitty/kitty-themes/themes/Shaman.conf | 21 + tycho/kitty/kitty-themes/themes/Slate.conf | 21 + tycho/kitty/kitty-themes/themes/Smyck.conf | 21 + .../kitty/kitty-themes/themes/SoftServer.conf | 21 + .../themes/Solarized_Darcula.conf | 21 + .../kitty-themes/themes/Solarized_Dark.conf | 21 + .../themes/Solarized_Dark_-_Patched.conf | 21 + .../Solarized_Dark_Higher_Contrast.conf | 21 + .../kitty-themes/themes/Solarized_Light.conf | 21 + .../kitty-themes/themes/Source_Code_X.conf | 21 + .../kitty/kitty-themes/themes/SpaceGray.conf | 21 + .../themes/SpaceGray_Eighties.conf | 21 + .../themes/SpaceGray_Eighties_Dull.conf | 21 + .../kitty/kitty-themes/themes/Spacedust.conf | 21 + .../kitty/kitty-themes/themes/Spiderman.conf | 21 + tycho/kitty/kitty-themes/themes/Spring.conf | 21 + tycho/kitty/kitty-themes/themes/Square.conf | 21 + tycho/kitty/kitty-themes/themes/Sundried.conf | 21 + tycho/kitty/kitty-themes/themes/Symfonic.conf | 21 + .../kitty/kitty-themes/themes/Tango_Dark.conf | 21 + .../kitty-themes/themes/Tango_Light.conf | 21 + tycho/kitty/kitty-themes/themes/Teerb.conf | 21 + .../kitty-themes/themes/Thayer_Bright.conf | 21 + tycho/kitty/kitty-themes/themes/The_Hulk.conf | 21 + tycho/kitty/kitty-themes/themes/Tomorrow.conf | 21 + .../kitty-themes/themes/Tomorrow_Night.conf | 21 + .../themes/Tomorrow_Night_Blue.conf | 21 + .../themes/Tomorrow_Night_Bright.conf | 21 + .../themes/Tomorrow_Night_Eighties.conf | 21 + tycho/kitty/kitty-themes/themes/ToyChest.conf | 21 + .../kitty/kitty-themes/themes/Treehouse.conf | 21 + tycho/kitty/kitty-themes/themes/Twilight.conf | 21 + tycho/kitty/kitty-themes/themes/Ubuntu.conf | 21 + tycho/kitty/kitty-themes/themes/Urple.conf | 21 + tycho/kitty/kitty-themes/themes/Vaughn.conf | 21 + .../kitty/kitty-themes/themes/VibrantInk.conf | 21 + tycho/kitty/kitty-themes/themes/WarmNeon.conf | 21 + tycho/kitty/kitty-themes/themes/Wez.conf | 21 + .../kitty/kitty-themes/themes/WildCherry.conf | 21 + tycho/kitty/kitty-themes/themes/Wombat.conf | 21 + tycho/kitty/kitty-themes/themes/Wryan.conf | 21 + tycho/kitty/kitty-themes/themes/Zenburn.conf | 25 + tycho/kitty/kitty-themes/themes/ayu.conf | 21 + .../kitty/kitty-themes/themes/ayu_light.conf | 21 + .../kitty/kitty-themes/themes/ayu_mirage.conf | 21 + .../kitty-themes/themes/gruvbox_dark.conf | 49 + .../kitty-themes/themes/gruvbox_light.conf | 49 + tycho/kitty/kitty-themes/themes/idleToes.conf | 21 + tycho/kitty/kitty-themes/themes/snazzy.conf | 46 + tycho/kitty/kitty-themes/upstream.txt | 1 + tycho/kitty/kitty.conf | 899 ++++++++++++++++++ tycho/kitty/theme.conf | 1 + tycho/terminal/alacritty.yml | 553 +++++++++++ tycho/terminal/config.fish | 69 ++ 233 files changed, 9708 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 entropy/.gitconfig create mode 100644 entropy/.urlview create mode 100644 entropy/.vimrc create mode 100644 entropy/config.fish create mode 100644 entropy/dunst/dunstrc create mode 100644 entropy/git-commit-template.txt create mode 100644 entropy/i3/config create mode 100644 entropy/i3status-rust/config.toml create mode 100755 entropy/initialize.sh create mode 160000 entropy/kitty/kitty-themes create mode 100644 entropy/kitty/kitty.conf create mode 120000 entropy/kitty/theme.conf create mode 100644 entropy/mail/.mailcap create mode 100644 entropy/mail/.notmuch-config create mode 100644 entropy/mail/neomutt/accounts/tudresden.muttrc create mode 100644 entropy/mail/neomutt/gpg.rc create mode 100644 entropy/mail/neomutt/neomuttrc create mode 100644 entropy/mail/neomutt/sidebar.muttrc create mode 160000 entropy/mail/neomutt/themes/dracula create mode 160000 entropy/mail/neomutt/themes/powerline create mode 100644 entropy/mail/template.mbsyncrc create mode 100644 entropy/mail/template.msmtprc create mode 100644 entropy/nixos/configuration.nix create mode 100644 entropy/nixos/extra/login.jpg create mode 100644 entropy/nixos/hardware-configuration.nix create mode 100644 entropy/nixos/modules/python.nix create mode 100644 entropy/nixos/modules/r.nix create mode 100644 entropy/vpn/TUD.ovpn create mode 100644 tycho/.gitconfig create mode 100644 tycho/.global_gitignore create mode 100644 tycho/.vimrc create mode 100755 tycho/.yabairc create mode 100755 tycho/create_home.sh create mode 100644 tycho/git-commit-template.txt create mode 100644 tycho/kitty/kitty-themes/.all-contributorsrc create mode 100644 tycho/kitty/kitty-themes/.github/ISSUE_TEMPLATE/theme-request.md create mode 100644 tycho/kitty/kitty-themes/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 tycho/kitty/kitty-themes/.github/kitty-themes.jpg create mode 100644 tycho/kitty/kitty-themes/.tools/README.md create mode 100755 tycho/kitty/kitty-themes/.tools/color_table.sh create mode 100644 tycho/kitty/kitty-themes/.tools/convert.py create mode 100755 tycho/kitty/kitty-themes/.tools/convert_conf.swift create mode 100755 tycho/kitty/kitty-themes/.tools/extract-vscode.sh create mode 100755 tycho/kitty/kitty-themes/.tools/generate_conf.sh create mode 100755 tycho/kitty/kitty-themes/.tools/generate_theme_preview.sh create mode 100755 tycho/kitty/kitty-themes/.tools/generate_themes_previews.sh create mode 100755 tycho/kitty/kitty-themes/.tools/libcapture.sh create mode 100755 tycho/kitty/kitty-themes/.tools/markdown.sh create mode 100644 tycho/kitty/kitty-themes/.tools/palette.py create mode 100644 tycho/kitty/kitty-themes/.tools/preview.py create mode 100755 tycho/kitty/kitty-themes/.tools/previews.sh create mode 100644 tycho/kitty/kitty-themes/.tools/template.conf create mode 100644 tycho/kitty/kitty-themes/.tools/template.conf.j2 create mode 100755 tycho/kitty/kitty-themes/.tools/windowid.swift create mode 100644 tycho/kitty/kitty-themes/CONTRIBUTING.md create mode 100644 tycho/kitty/kitty-themes/LICENSE.md create mode 100644 tycho/kitty/kitty-themes/README.md create mode 100644 tycho/kitty/kitty-themes/themes/3024_Day.conf create mode 100644 tycho/kitty/kitty-themes/themes/3024_Night.conf create mode 100644 tycho/kitty/kitty-themes/themes/AdventureTime.conf create mode 100644 tycho/kitty/kitty-themes/themes/Afterglow.conf create mode 100644 tycho/kitty/kitty-themes/themes/AlienBlood.conf create mode 100644 tycho/kitty/kitty-themes/themes/Alucard.conf create mode 100644 tycho/kitty/kitty-themes/themes/Apprentice.conf create mode 100644 tycho/kitty/kitty-themes/themes/Argonaut.conf create mode 100644 tycho/kitty/kitty-themes/themes/Arthur.conf create mode 100644 tycho/kitty/kitty-themes/themes/AtelierSulphurpool.conf create mode 100644 tycho/kitty/kitty-themes/themes/Atom.conf create mode 100644 tycho/kitty/kitty-themes/themes/AtomOneLight.conf create mode 100644 tycho/kitty/kitty-themes/themes/Batman.conf create mode 100644 tycho/kitty/kitty-themes/themes/Belafonte_Day.conf create mode 100644 tycho/kitty/kitty-themes/themes/Belafonte_Night.conf create mode 100644 tycho/kitty/kitty-themes/themes/BirdsOfParadise.conf create mode 100644 tycho/kitty/kitty-themes/themes/Blazer.conf create mode 100644 tycho/kitty/kitty-themes/themes/Borland.conf create mode 100644 tycho/kitty/kitty-themes/themes/Bright_Lights.conf create mode 100644 tycho/kitty/kitty-themes/themes/Broadcast.conf create mode 100644 tycho/kitty/kitty-themes/themes/Brogrammer.conf create mode 100644 tycho/kitty/kitty-themes/themes/C64.conf create mode 100644 tycho/kitty/kitty-themes/themes/CLRS.conf create mode 100644 tycho/kitty/kitty-themes/themes/Chalk.conf create mode 100644 tycho/kitty/kitty-themes/themes/Chalkboard.conf create mode 100644 tycho/kitty/kitty-themes/themes/Ciapre.conf create mode 100644 tycho/kitty/kitty-themes/themes/Cobalt2.conf create mode 100644 tycho/kitty/kitty-themes/themes/Cobalt_Neon.conf create mode 100644 tycho/kitty/kitty-themes/themes/CrayonPonyFish.conf create mode 100644 tycho/kitty/kitty-themes/themes/Dark_Pastel.conf create mode 100644 tycho/kitty/kitty-themes/themes/Darkside.conf create mode 100644 tycho/kitty/kitty-themes/themes/Desert.conf create mode 100644 tycho/kitty/kitty-themes/themes/DimmedMonokai.conf create mode 100644 tycho/kitty/kitty-themes/themes/DotGov.conf create mode 100644 tycho/kitty/kitty-themes/themes/Dracula.conf create mode 100644 tycho/kitty/kitty-themes/themes/Dumbledore.conf create mode 100644 tycho/kitty/kitty-themes/themes/Duotone_Dark.conf create mode 100644 tycho/kitty/kitty-themes/themes/ENCOM.conf create mode 100644 tycho/kitty/kitty-themes/themes/Earthsong.conf create mode 100644 tycho/kitty/kitty-themes/themes/Elemental.conf create mode 100644 tycho/kitty/kitty-themes/themes/Espresso.conf create mode 100644 tycho/kitty/kitty-themes/themes/Espresso_Libre.conf create mode 100644 tycho/kitty/kitty-themes/themes/Fideloper.conf create mode 100644 tycho/kitty/kitty-themes/themes/FishTank.conf create mode 100644 tycho/kitty/kitty-themes/themes/Flat.conf create mode 100644 tycho/kitty/kitty-themes/themes/Flatland.conf create mode 100644 tycho/kitty/kitty-themes/themes/Floraverse.conf create mode 100644 tycho/kitty/kitty-themes/themes/FrontEndDelight.conf create mode 100644 tycho/kitty/kitty-themes/themes/FunForrest.conf create mode 100644 tycho/kitty/kitty-themes/themes/Galaxy.conf create mode 100644 tycho/kitty/kitty-themes/themes/Github.conf create mode 100644 tycho/kitty/kitty-themes/themes/Glacier.conf create mode 100644 tycho/kitty/kitty-themes/themes/GoaBase.conf create mode 100644 tycho/kitty/kitty-themes/themes/Grape.conf create mode 100644 tycho/kitty/kitty-themes/themes/Grass.conf create mode 100644 tycho/kitty/kitty-themes/themes/Hardcore.conf create mode 100644 tycho/kitty/kitty-themes/themes/Harper.conf create mode 100644 tycho/kitty/kitty-themes/themes/Highway.conf create mode 100644 tycho/kitty/kitty-themes/themes/Hipster_Green.conf create mode 100644 tycho/kitty/kitty-themes/themes/Homebrew.conf create mode 100644 tycho/kitty/kitty-themes/themes/Hurtado.conf create mode 100644 tycho/kitty/kitty-themes/themes/Hybrid.conf create mode 100644 tycho/kitty/kitty-themes/themes/IC_Green_PPL.conf create mode 100644 tycho/kitty/kitty-themes/themes/IC_Orange_PPL.conf create mode 100644 tycho/kitty/kitty-themes/themes/IR_Black.conf create mode 100644 tycho/kitty/kitty-themes/themes/Jackie_Brown.conf create mode 100644 tycho/kitty/kitty-themes/themes/Japanesque.conf create mode 100644 tycho/kitty/kitty-themes/themes/Jellybeans.conf create mode 100644 tycho/kitty/kitty-themes/themes/JetBrains_Darcula.conf create mode 100644 tycho/kitty/kitty-themes/themes/Kibble.conf create mode 100644 tycho/kitty/kitty-themes/themes/Later_This_Evening.conf create mode 100644 tycho/kitty/kitty-themes/themes/Lavandula.conf create mode 100644 tycho/kitty/kitty-themes/themes/LiquidCarbon.conf create mode 100644 tycho/kitty/kitty-themes/themes/LiquidCarbonTransparent.conf create mode 100644 tycho/kitty/kitty-themes/themes/LiquidCarbonTransparentInverse.conf create mode 100644 tycho/kitty/kitty-themes/themes/Man_Page.conf create mode 100644 tycho/kitty/kitty-themes/themes/Material.conf create mode 100644 tycho/kitty/kitty-themes/themes/MaterialDark.conf create mode 100644 tycho/kitty/kitty-themes/themes/Mathias.conf create mode 100644 tycho/kitty/kitty-themes/themes/Medallion.conf create mode 100644 tycho/kitty/kitty-themes/themes/Misterioso.conf create mode 100644 tycho/kitty/kitty-themes/themes/Molokai.conf create mode 100644 tycho/kitty/kitty-themes/themes/MonaLisa.conf create mode 100644 tycho/kitty/kitty-themes/themes/Monokai.conf create mode 100644 tycho/kitty/kitty-themes/themes/Monokai_Classic.conf create mode 100644 tycho/kitty/kitty-themes/themes/Monokai_Pro.conf create mode 100644 tycho/kitty/kitty-themes/themes/Monokai_Pro_(Filter_Machine).conf create mode 100644 tycho/kitty/kitty-themes/themes/Monokai_Pro_(Filter_Octagon).conf create mode 100644 tycho/kitty/kitty-themes/themes/Monokai_Pro_(Filter_Ristretto).conf create mode 100644 tycho/kitty/kitty-themes/themes/Monokai_Pro_(Filter_Spectrum).conf create mode 100644 tycho/kitty/kitty-themes/themes/Monokai_Soda.conf create mode 100644 tycho/kitty/kitty-themes/themes/N0tch2k.conf create mode 100644 tycho/kitty/kitty-themes/themes/Neopolitan.conf create mode 100644 tycho/kitty/kitty-themes/themes/Neutron.conf create mode 100644 tycho/kitty/kitty-themes/themes/NightLion_v1.conf create mode 100644 tycho/kitty/kitty-themes/themes/NightLion_v2.conf create mode 100644 tycho/kitty/kitty-themes/themes/Nova.conf create mode 100644 tycho/kitty/kitty-themes/themes/Novel.conf create mode 100644 tycho/kitty/kitty-themes/themes/Obsidian.conf create mode 100644 tycho/kitty/kitty-themes/themes/Ocean.conf create mode 100644 tycho/kitty/kitty-themes/themes/OceanicMaterial.conf create mode 100644 tycho/kitty/kitty-themes/themes/Ollie.conf create mode 100644 tycho/kitty/kitty-themes/themes/OneDark.conf create mode 100644 tycho/kitty/kitty-themes/themes/Parasio_Dark.conf create mode 100644 tycho/kitty/kitty-themes/themes/PaulMillr.conf create mode 100644 tycho/kitty/kitty-themes/themes/PencilDark.conf create mode 100644 tycho/kitty/kitty-themes/themes/PencilLight.conf create mode 100644 tycho/kitty/kitty-themes/themes/Piatto_Light.conf create mode 100644 tycho/kitty/kitty-themes/themes/Pnevma.conf create mode 100644 tycho/kitty/kitty-themes/themes/Pro.conf create mode 100644 tycho/kitty/kitty-themes/themes/Red_Alert.conf create mode 100644 tycho/kitty/kitty-themes/themes/Red_Sands.conf create mode 100644 tycho/kitty/kitty-themes/themes/Relaxed_Afterglow.conf create mode 100644 tycho/kitty/kitty-themes/themes/Renault_Style.conf create mode 100644 tycho/kitty/kitty-themes/themes/Renault_Style_Light.conf create mode 100644 tycho/kitty/kitty-themes/themes/Rippedcasts.conf create mode 100644 tycho/kitty/kitty-themes/themes/Royal.conf create mode 100644 tycho/kitty/kitty-themes/themes/SeaShells.conf create mode 100644 tycho/kitty/kitty-themes/themes/Seafoam_Pastel.conf create mode 100644 tycho/kitty/kitty-themes/themes/Seti.conf create mode 100644 tycho/kitty/kitty-themes/themes/Shaman.conf create mode 100644 tycho/kitty/kitty-themes/themes/Slate.conf create mode 100644 tycho/kitty/kitty-themes/themes/Smyck.conf create mode 100644 tycho/kitty/kitty-themes/themes/SoftServer.conf create mode 100644 tycho/kitty/kitty-themes/themes/Solarized_Darcula.conf create mode 100644 tycho/kitty/kitty-themes/themes/Solarized_Dark.conf create mode 100644 tycho/kitty/kitty-themes/themes/Solarized_Dark_-_Patched.conf create mode 100644 tycho/kitty/kitty-themes/themes/Solarized_Dark_Higher_Contrast.conf create mode 100644 tycho/kitty/kitty-themes/themes/Solarized_Light.conf create mode 100644 tycho/kitty/kitty-themes/themes/Source_Code_X.conf create mode 100644 tycho/kitty/kitty-themes/themes/SpaceGray.conf create mode 100644 tycho/kitty/kitty-themes/themes/SpaceGray_Eighties.conf create mode 100644 tycho/kitty/kitty-themes/themes/SpaceGray_Eighties_Dull.conf create mode 100644 tycho/kitty/kitty-themes/themes/Spacedust.conf create mode 100644 tycho/kitty/kitty-themes/themes/Spiderman.conf create mode 100644 tycho/kitty/kitty-themes/themes/Spring.conf create mode 100644 tycho/kitty/kitty-themes/themes/Square.conf create mode 100644 tycho/kitty/kitty-themes/themes/Sundried.conf create mode 100644 tycho/kitty/kitty-themes/themes/Symfonic.conf create mode 100644 tycho/kitty/kitty-themes/themes/Tango_Dark.conf create mode 100644 tycho/kitty/kitty-themes/themes/Tango_Light.conf create mode 100644 tycho/kitty/kitty-themes/themes/Teerb.conf create mode 100644 tycho/kitty/kitty-themes/themes/Thayer_Bright.conf create mode 100644 tycho/kitty/kitty-themes/themes/The_Hulk.conf create mode 100644 tycho/kitty/kitty-themes/themes/Tomorrow.conf create mode 100644 tycho/kitty/kitty-themes/themes/Tomorrow_Night.conf create mode 100644 tycho/kitty/kitty-themes/themes/Tomorrow_Night_Blue.conf create mode 100644 tycho/kitty/kitty-themes/themes/Tomorrow_Night_Bright.conf create mode 100644 tycho/kitty/kitty-themes/themes/Tomorrow_Night_Eighties.conf create mode 100644 tycho/kitty/kitty-themes/themes/ToyChest.conf create mode 100644 tycho/kitty/kitty-themes/themes/Treehouse.conf create mode 100644 tycho/kitty/kitty-themes/themes/Twilight.conf create mode 100644 tycho/kitty/kitty-themes/themes/Ubuntu.conf create mode 100644 tycho/kitty/kitty-themes/themes/Urple.conf create mode 100644 tycho/kitty/kitty-themes/themes/Vaughn.conf create mode 100644 tycho/kitty/kitty-themes/themes/VibrantInk.conf create mode 100644 tycho/kitty/kitty-themes/themes/WarmNeon.conf create mode 100644 tycho/kitty/kitty-themes/themes/Wez.conf create mode 100644 tycho/kitty/kitty-themes/themes/WildCherry.conf create mode 100644 tycho/kitty/kitty-themes/themes/Wombat.conf create mode 100644 tycho/kitty/kitty-themes/themes/Wryan.conf create mode 100644 tycho/kitty/kitty-themes/themes/Zenburn.conf create mode 100644 tycho/kitty/kitty-themes/themes/ayu.conf create mode 100644 tycho/kitty/kitty-themes/themes/ayu_light.conf create mode 100644 tycho/kitty/kitty-themes/themes/ayu_mirage.conf create mode 100644 tycho/kitty/kitty-themes/themes/gruvbox_dark.conf create mode 100644 tycho/kitty/kitty-themes/themes/gruvbox_light.conf create mode 100644 tycho/kitty/kitty-themes/themes/idleToes.conf create mode 100644 tycho/kitty/kitty-themes/themes/snazzy.conf create mode 100644 tycho/kitty/kitty-themes/upstream.txt create mode 100644 tycho/kitty/kitty.conf create mode 120000 tycho/kitty/theme.conf create mode 100644 tycho/terminal/alacritty.yml create mode 100644 tycho/terminal/config.fish diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b4c2316 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +entropy/mail/.mbsyncrc +entropy/mail/.msmtprc +entropy/mail/neomutt/signature.txt +entropy/mail/neomutt/notmuch-hook.sh +entropy/mail/neomutt/whoami.muttrc +entropy/vpn/credentials.txt diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..3a5b571 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,9 @@ +[submodule "entropy/kitty/kitty-themes"] + path = entropy/kitty/kitty-themes + url = git@github.com:dexpota/kitty-themes.git +[submodule "entropy/mail/neomutt/themes/powerline"] + path = entropy/mail/neomutt/themes/powerline + url = git@github.com:sheoak/neomutt-powerline-nerdfonts.git +[submodule "entropy/mail/neomutt/themes/dracula"] + path = entropy/mail/neomutt/themes/dracula + url = https://github.com/dracula/mutt.git diff --git a/entropy/.gitconfig b/entropy/.gitconfig new file mode 100644 index 0000000..0055376 --- /dev/null +++ b/entropy/.gitconfig @@ -0,0 +1,27 @@ +[user] + email = dev@felixwittwer.de + name = Felix Wittwer + signingkey = F8634A1CFF7D61608503A70B24363525EA0E8A99 +[push] + default = simple +[pull] + rebase = true +[commit] + gpgSign = true + template = ~/.gitcommit_template +[core] + pager = delta +[pull] + rebase = true + +[interactive] + diffFilter = delta --color-only + +[delta] + features = side-by-side line-numbers decorations + whitespace-error-style = 22 reverse + +[delta "decorations"] + commit-decoration-style = bold yellow box ul + file-style = bold yellow ul + file-decoration-style = none \ No newline at end of file diff --git a/entropy/.urlview b/entropy/.urlview new file mode 100644 index 0000000..e13370a --- /dev/null +++ b/entropy/.urlview @@ -0,0 +1 @@ +COMMAND xdg-open diff --git a/entropy/.vimrc b/entropy/.vimrc new file mode 100644 index 0000000..d868a63 --- /dev/null +++ b/entropy/.vimrc @@ -0,0 +1,95 @@ +filetype plugin indent on +syntax on + +" enable autocompletion of ale +let g:ale_completion_enabled = 1 +" disable latex linting from ale as i've got my own plugin for that +let g:ale_linters = { 'tex': []} + + +" Initialize plugin system +call plug#begin('~/.vim/plugged') + +" Make sure you use single quotes + +" Shorthand notation; fetches https://github.com/morhetz/gruvbox +Plug 'morhetz/gruvbox' + +" Any valid git URL is allowed +Plug 'https://github.com/scrooloose/nerdcommenter.git' + +" On-demand loading +Plug 'rust-lang/rust.vim', { 'for': 'rust' } + +Plug 'vim-syntastic/syntastic' +Plug 'cespare/vim-toml', { 'for': 'toml' } +Plug 'vim-airline/vim-airline' +Plug 'tpope/vim-fugitive' +Plug 'airblade/vim-gitgutter' +Plug 'keith/swift.vim', { 'for': 'swift' } +Plug 'justinmk/vim-sneak' +Plug 'lervag/vimtex' +Plug 'editorconfig/editorconfig-vim' +Plug 'LnL7/vim-nix' + +" Plugin outside ~/.vim/plugged with post-update hook +Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } + +" ale language server client +Plug 'dense-analysis/ale' + +" Initialize plugin system +call plug#end() + +set laststatus=2 +let g:airline#extensions#tabline#enabled = 1 +let g:airline_powerline_fonts = 1 + +" possible setting as alternative for easymotion +" let g:sneak#label = 1 + +set backspace=indent,eol,start + +" map the leader key to , +let mapleader="," + +" set filetypes +au BufRead,BufNewFile *.ohuac setfiletype rust +au BufRead,BufNewFile *.ohuao setfiletype json + +" Cycling through windows and tabs -- made by Pius :D +" nnoremap j +" nnoremap k +" nnoremap l +" nnoremap h +" nnoremap _ +" nnoremap _ +" nnoremap \| +" nnoremap \| +map :tabp +map :tabn + +" fix auto-completion +set wildmenu " show a completion menu +set wildignorecase +set wildignore=*.o,*~,*.pyc,*.aux,*.bbl,*.blg,*-blx.bib,*.log,*.out,*.run.xml, + \*.toc,*.nav,*.snm " ignore auxiliary files +" set completeopt-=preview + +" tex configuration +let g:tex_flavor='latex' +" Optics +colorscheme gruvbox +set background=dark " Setting dark mode + +set number +set relativenumber +set tabstop=4 +set shiftwidth=4 +set expandtab + +" Search +set hlsearch " Highlight all search results +set smartcase " Enable smart-case search +set ignorecase " Always case-insensitive +set incsearch " Searches for strings incrementally diff --git a/entropy/config.fish b/entropy/config.fish new file mode 100644 index 0000000..4162aec --- /dev/null +++ b/entropy/config.fish @@ -0,0 +1,6 @@ +# use fancier version of ls +alias ls="lsd" +alias l="lsd -la" + +# useful shortcut +alias calculator="python3 -i -c 'from math import *'" diff --git a/entropy/dunst/dunstrc b/entropy/dunst/dunstrc new file mode 100644 index 0000000..833bbea --- /dev/null +++ b/entropy/dunst/dunstrc @@ -0,0 +1,431 @@ +[global] + ### Display ### + + # Which monitor should the notifications be displayed on. + monitor = 0 + + # Display notification on focused monitor. Possible modes are: + # mouse: follow mouse pointer + # keyboard: follow window with keyboard focus + # none: don't follow anything + # + # "keyboard" needs a window manager that exports the + # _NET_ACTIVE_WINDOW property. + # This should be the case for almost all modern window managers. + # + # If this option is set to mouse or keyboard, the monitor option + # will be ignored. + follow = mouse + + # The geometry of the window: + # [{width}]x{height}[+/-{x}+/-{y}] + # The geometry of the message window. + # The height is measured in number of notifications everything else + # in pixels. If the width is omitted but the height is given + # ("-geometry x2"), the message window expands over the whole screen + # (dmenu-like). If width is 0, the window expands to the longest + # message displayed. A positive x is measured from the left, a + # negative from the right side of the screen. Y is measured from + # the top and down respectively. + # The width can be negative. In this case the actual width is the + # screen width minus the width defined in within the geometry option. + geometry = "300x5-30+20" + + # Show how many messages are currently hidden (because of geometry). + indicate_hidden = yes + + # Shrink window if it's smaller than the width. Will be ignored if + # width is 0. + shrink = no + + # The transparency of the window. Range: [0; 100]. + # This option will only work if a compositing window manager is + # present (e.g. xcompmgr, compiz, etc.). + transparency = 0 + + # The height of the entire notification. If the height is smaller + # than the font height and padding combined, it will be raised + # to the font height and padding. + notification_height = 0 + + # Draw a line of "separator_height" pixel height between two + # notifications. + # Set to 0 to disable. + separator_height = 2 + + # Padding between text and separator. + padding = 8 + + # Horizontal padding. + horizontal_padding = 8 + + # Defines width in pixels of frame around the notification window. + # Set to 0 to disable. + frame_width = 3 + + # Defines color of the frame around the notification window. + frame_color = "#aaaaaa" + + # Define a color for the separator. + # possible values are: + # * auto: dunst tries to find a color fitting to the background; + # * foreground: use the same color as the foreground; + # * frame: use the same color as the frame; + # * anything else will be interpreted as a X color. + separator_color = frame + + # Sort messages by urgency. + sort = yes + + # Don't remove messages, if the user is idle (no mouse or keyboard input) + # for longer than idle_threshold seconds. + # Set to 0 to disable. + # A client can set the 'transient' hint to bypass this. See the rules + # section for how to disable this if necessary + idle_threshold = 120 + + ### Text ### + + font = Monospace 8 + + # The spacing between lines. If the height is smaller than the + # font height, it will get raised to the font height. + line_height = 0 + + # Possible values are: + # full: Allow a small subset of html markup in notifications: + # bold + # italic + # strikethrough + # underline + # + # For a complete reference see + # . + # + # strip: This setting is provided for compatibility with some broken + # clients that send markup even though it's not enabled on the + # server. Dunst will try to strip the markup but the parsing is + # simplistic so using this option outside of matching rules for + # specific applications *IS GREATLY DISCOURAGED*. + # + # no: Disable markup parsing, incoming notifications will be treated as + # plain text. Dunst will not advertise that it has the body-markup + # capability if this is set as a global setting. + # + # It's important to note that markup inside the format option will be parsed + # regardless of what this is set to. + markup = full + + # The format of the message. Possible variables are: + # %a appname + # %s summary + # %b body + # %i iconname (including its path) + # %I iconname (without its path) + # %p progress value if set ([ 0%] to [100%]) or nothing + # %n progress value if set without any extra characters + # %% Literal % + # Markup is allowed + format = "%s\n%b" + + # Alignment of message text. + # Possible values are "left", "center" and "right". + alignment = left + + # Vertical alignment of message text and icon. + # Possible values are "top", "center" and "bottom". + vertical_alignment = center + + # Show age of message if message is older than show_age_threshold + # seconds. + # Set to -1 to disable. + show_age_threshold = 60 + + # Split notifications into multiple lines if they don't fit into + # geometry. + word_wrap = yes + + # When word_wrap is set to no, specify where to make an ellipsis in long lines. + # Possible values are "start", "middle" and "end". + ellipsize = middle + + # Ignore newlines '\n' in notifications. + ignore_newline = no + + # Stack together notifications with the same content + stack_duplicates = true + + # Hide the count of stacked notifications with the same content + hide_duplicate_count = false + + # Display indicators for URLs (U) and actions (A). + show_indicators = yes + + ### Icons ### + + # Align icons left/right/off + icon_position = left + + # Scale small icons up to this size, set to 0 to disable. Helpful + # for e.g. small files or high-dpi screens. In case of conflict, + # max_icon_size takes precedence over this. + min_icon_size = 0 + + # Scale larger icons down to this size, set to 0 to disable + max_icon_size = 32 + + # Paths to default icons. + icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ + + ### History ### + + # Should a notification popped up from history be sticky or timeout + # as if it would normally do. + sticky_history = yes + + # Maximum amount of notifications kept in history + history_length = 20 + + ### Misc/Advanced ### + + # dmenu path. + dmenu = /run/current-system/sw/bin/dmenu -p dunst: + + # Browser for opening urls in context menu. + browser = /run/current-system/sw/bin/firefox -new-tab + + # Always run rule-defined scripts, even if the notification is suppressed + always_run_script = true + + # Define the title of the windows spawned by dunst + title = Dunst + + # Define the class of the windows spawned by dunst + class = Dunst + + # Print a notification on startup. + # This is mainly for error detection, since dbus (re-)starts dunst + # automatically after a crash. + startup_notification = false + + # Manage dunst's desire for talking + # Can be one of the following values: + # crit: Critical features. Dunst aborts + # warn: Only non-fatal warnings + # mesg: Important Messages + # info: all unimportant stuff + # debug: all less than unimportant stuff + verbosity = mesg + + # Define the corner radius of the notification window + # in pixel size. If the radius is 0, you have no rounded + # corners. + # The radius will be automatically lowered if it exceeds half of the + # notification height to avoid clipping text and/or icons. + corner_radius = 0 + + # Ignore the dbus closeNotification message. + # Useful to enforce the timeout set by dunst configuration. Without this + # parameter, an application may close the notification sent before the + # user defined timeout. + ignore_dbusclose = false + + ### Legacy + + # Use the Xinerama extension instead of RandR for multi-monitor support. + # This setting is provided for compatibility with older nVidia drivers that + # do not support RandR and using it on systems that support RandR is highly + # discouraged. + # + # By enabling this setting dunst will not be able to detect when a monitor + # is connected or disconnected which might break follow mode if the screen + # layout changes. + force_xinerama = false + + ### mouse + + # Defines list of actions for each mouse event + # Possible values are: + # * none: Don't do anything. + # * do_action: If the notification has exactly one action, or one is marked as default, + # invoke it. If there are multiple and no default, open the context menu. + # * close_current: Close current notification. + # * close_all: Close all notifications. + # These values can be strung together for each mouse event, and + # will be executed in sequence. + mouse_left_click = close_current + mouse_middle_click = do_action, close_current + mouse_right_click = close_all + +# Experimental features that may or may not work correctly. Do not expect them +# to have a consistent behaviour across releases. +[experimental] + # Calculate the dpi to use on a per-monitor basis. + # If this setting is enabled the Xft.dpi value will be ignored and instead + # dunst will attempt to calculate an appropriate dpi value for each monitor + # using the resolution and physical size. This might be useful in setups + # where there are multiple screens with very different dpi values. + per_monitor_dpi = false + +[shortcuts] + + # Shortcuts are specified as [modifier+][modifier+]...key + # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2", + # "mod3" and "mod4" (windows-key). + # Xev might be helpful to find names for keys. + + # Close notification. + close = ctrl+space + + # Close all notifications. + close_all = ctrl+shift+space + + # Redisplay last message(s). + # On the US keyboard layout "grave" is normally above TAB and left + # of "1". Make sure this key actually exists on your keyboard layout, + # e.g. check output of 'xmodmap -pke' + history = ctrl+grave + + # Context menu. + context = ctrl+shift+period + +[urgency_low] + # IMPORTANT: colors have to be defined in quotation marks. + # Otherwise the "#" and following would be interpreted as a comment. + background = "#222222" + foreground = "#888888" + timeout = 10 + # Icon for notifications with low urgency, uncomment to enable + #icon = /path/to/icon + +[urgency_normal] + background = "#285577" + foreground = "#ffffff" + timeout = 10 + # Icon for notifications with normal urgency, uncomment to enable + #icon = /path/to/icon + +[urgency_critical] + background = "#900000" + foreground = "#ffffff" + frame_color = "#ff0000" + timeout = 0 + # Icon for notifications with critical urgency, uncomment to enable + #icon = /path/to/icon + +# Every section that isn't one of the above is interpreted as a rules to +# override settings for certain messages. +# +# Messages can be matched by +# appname (discouraged, see desktop_entry) +# body +# category +# desktop_entry +# icon +# match_transient +# msg_urgency +# stack_tag +# summary +# +# and you can override the +# background +# foreground +# format +# frame_color +# fullscreen +# new_icon +# set_stack_tag +# set_transient +# timeout +# urgency +# +# Shell-like globbing will get expanded. +# +# Instead of the appname filter, it's recommended to use the desktop_entry filter. +# GLib based applications export their desktop-entry name. In comparison to the appname, +# the desktop-entry won't get localized. +# +# SCRIPTING +# You can specify a script that gets run when the rule matches by +# setting the "script" option. +# The script will be called as follows: +# script appname summary body icon urgency +# where urgency can be "LOW", "NORMAL" or "CRITICAL". +# +# NOTE: if you don't want a notification to be displayed, set the format +# to "". +# NOTE: It might be helpful to run dunst -print in a terminal in order +# to find fitting options for rules. + +# Disable the transient hint so that idle_threshold cannot be bypassed from the +# client +#[transient_disable] +# match_transient = yes +# set_transient = no +# +# Make the handling of transient notifications more strict by making them not +# be placed in history. +#[transient_history_ignore] +# match_transient = yes +# history_ignore = yes + +# fullscreen values +# show: show the notifications, regardless if there is a fullscreen window opened +# delay: displays the new notification, if there is no fullscreen window active +# If the notification is already drawn, it won't get undrawn. +# pushback: same as delay, but when switching into fullscreen, the notification will get +# withdrawn from screen again and will get delayed like a new notification +#[fullscreen_delay_everything] +# fullscreen = delay +#[fullscreen_show_critical] +# msg_urgency = critical +# fullscreen = show + +#[espeak] +# summary = "*" +# script = dunst_espeak.sh + +#[script-test] +# summary = "*script*" +# script = dunst_test.sh + +#[ignore] +# # This notification will not be displayed +# summary = "foobar" +# format = "" + +#[history-ignore] +# # This notification will not be saved in history +# summary = "foobar" +# history_ignore = yes + +#[skip-display] +# # This notification will not be displayed, but will be included in the history +# summary = "foobar" +# skip_display = yes + +#[signed_on] +# appname = Pidgin +# summary = "*signed on*" +# urgency = low +# +#[signed_off] +# appname = Pidgin +# summary = *signed off* +# urgency = low +# +#[says] +# appname = Pidgin +# summary = *says* +# urgency = critical +# +#[twitter] +# appname = Pidgin +# summary = *twitter.com* +# urgency = normal +# +#[stack-volumes] +# appname = "some_volume_notifiers" +# set_stack_tag = "volume" +# +# vim: ft=cfg diff --git a/entropy/git-commit-template.txt b/entropy/git-commit-template.txt new file mode 100644 index 0000000..5547f9d --- /dev/null +++ b/entropy/git-commit-template.txt @@ -0,0 +1,27 @@ + + +# 50 Chars ---->| +# 72 Characters ---->| + +# Type can be +# ✨ feat (new feature) +# 🐛 fix (bug fix) +# 📚 docs (changes to documentation) +# 🌹 style (formatting, missing semi colons, etc; no code change) +# 📝 refactor (refactoring production code) +# 🔍 test (adding missing tests, refactoring tests; no production code change) +# 💪 chore (updating grunt tasks etc; no production code change) +# 🚢 ship (bump a version; release) +# -------------------- +# Remember to +# Separate subject from body with a blank line +# Limit the subject line to 50 characters +# Capitalize the subject line +# Do not end the subject line with a period +# Use the imperative mood in the subject line +# Wrap the body at 72 characters +# Use the body to explain what and why vs. how +# Can use multiple lines with "-" for bullet points in body +# -------------------- +# For more information about this template, check out +# https://gist.github.com/adeekshith/cd4c95a064977cdc6c50 diff --git a/entropy/i3/config b/entropy/i3/config new file mode 100644 index 0000000..890740a --- /dev/null +++ b/entropy/i3/config @@ -0,0 +1,201 @@ +# This file has been auto-generated by i3-config-wizard(1). +# It will not be overwritten, so edit it as you like. +# +# Should you change your keyboard layout some time, delete +# this file and re-run i3-config-wizard(1). +# + +# i3 config file (v4) +# +# Please see https://i3wm.org/docs/userguide.html for a complete reference! + +set $mod Mod4 + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +font pango:monospace 8 + +# This font is widely installed, provides lots of unicode glyphs, right-to-left +# text rendering and scalability on retina/hidpi displays (thanks to pango). +#font pango:DejaVu Sans Mono 8 + +# The combination of xss-lock, nm-applet and pactl is a popular choice, so +# they are included here as an example. Modify as you see fit. + +# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the +# screen before suspend. Use loginctl lock-session to lock your screen. +exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork + +# NetworkManager is the most popular way to manage wireless networks on Linux, +# and nm-applet is a desktop environment-independent system tray GUI for it. +exec --no-startup-id nm-applet + +# Use pactl to adjust volume in PulseAudio. +set $refresh_i3status killall -SIGUSR1 i3status +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status +bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# start a terminal +bindsym $mod+Return exec kitty + +# kill focused window +bindsym $mod+Shift+q kill + +# start dmenu (a program launcher) +bindsym $mod+d exec dmenu_run +# There also is the (new) i3-dmenu-desktop which only displays applications +# shipping a .desktop file. It is a wrapper around dmenu, so you need that +# installed. +# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+semicolon move right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# split in horizontal orientation +bindsym $mod+h split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +bindsym $mod+a focus parent + +# focus the child container +#bindsym $mod+d focus child + +# Define names for default workspaces for which we configure key bindings later on. +# We use variables to avoid repeating the names in multiple places. +set $ws1 "1" +set $ws2 "2" +set $ws3 "3" +set $ws4 "4" +set $ws5 "5" +set $ws6 "6" +set $ws7 "7" +set $ws8 "8" +set $ws9 "9" +set $ws10 "10" + +# switch to workspace +bindsym $mod+1 workspace number $ws1 +bindsym $mod+2 workspace number $ws2 +bindsym $mod+3 workspace number $ws3 +bindsym $mod+4 workspace number $ws4 +bindsym $mod+5 workspace number $ws5 +bindsym $mod+6 workspace number $ws6 +bindsym $mod+7 workspace number $ws7 +bindsym $mod+8 workspace number $ws8 +bindsym $mod+9 workspace number $ws9 +bindsym $mod+0 workspace number $ws10 + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace number $ws1 +bindsym $mod+Shift+2 move container to workspace number $ws2 +bindsym $mod+Shift+3 move container to workspace number $ws3 +bindsym $mod+Shift+4 move container to workspace number $ws4 +bindsym $mod+Shift+5 move container to workspace number $ws5 +bindsym $mod+Shift+6 move container to workspace number $ws6 +bindsym $mod+Shift+7 move container to workspace number $ws7 +bindsym $mod+Shift+8 move container to workspace number $ws8 +bindsym $mod+Shift+9 move container to workspace number $ws9 +bindsym $mod+Shift+0 move container to workspace number $ws10 + +# reload the configuration file +bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart +# exit i3 (logs you out of your X session) +bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'" + +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym semicolon resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape or $mod+r + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym $mod+r mode "default" +} + +bindsym $mod+r mode "resize" + +# screenshot shortcut +bindsym --release $mod+c exec scrot -f -s --border #'~/%Y-%m-%d-%H%M%S_$wx$h.png' + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +bar { + status_command i3status-rs + font pango:Fira Code, Font Awesome 5 Free + # font pango:DejaVu Sans Mono, FontAwesome 12 + # position top + colors { + separator #666666 + background #222222 + statusline #dddddd + focused_workspace #0088CC #0088CC #ffffff + active_workspace #333333 #333333 #ffffff + inactive_workspace #333333 #333333 #888888 + urgent_workspace #2f343a #900000 #ffffff + } +} + +# automatically set the background image on startup +exec --no-startup-id feh --bg-fill /home/felix/Pictures/wall.jpg +# start notification server +exec --no-startup-id dunst & diff --git a/entropy/i3status-rust/config.toml b/entropy/i3status-rust/config.toml new file mode 100644 index 0000000..0e16f86 --- /dev/null +++ b/entropy/i3status-rust/config.toml @@ -0,0 +1,55 @@ +theme = "gruvbox-dark" +icons = "awesome5" + +#[[block]] +#block = "notmuch" +#query = "tag:unread" +#threshold_warning = 1 +#threshold_critical = 10 +#name = "A" + +[[block]] +block = "maildir" +interval = 60 +inboxes = ["/home/felix/.mail/tu-dresden/Inbox"] +threshold_warning = 1 +threshold_critical = 10 +display_type = "new" + +[[block]] +block = "disk_space" +path = "/" +alias = "/" +info_type = "available" +unit = "GB" +interval = 20 +warning = 20.0 +alert = 10.0 + +[[block]] +block = "memory" +display_type = "memory" +format_mem = "{Mup}%" +format_swap = "{SUp}%" + +[[block]] +block = "cpu" +interval = 1 + +[[block]] +block = "load" +interval = 1 +format = "{1m}" + +[[block]] +block = "sound" + +[[block]] +block = "battery" +interval = 10 +format = "{percentage}% {time}" + +[[block]] +block = "time" +interval = 60 +format = "%a %d.%m. %R" diff --git a/entropy/initialize.sh b/entropy/initialize.sh new file mode 100755 index 0000000..8211046 --- /dev/null +++ b/entropy/initialize.sh @@ -0,0 +1,96 @@ +#!/usr/bin/env bash + +set -euo pipefail + +printf '\033[33m + + + /$$ + | $$ + /$$$$$$ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ /$$ /$$ + /$$__ $$| $$__ $$|_ $$_/ /$$__ $$ /$$__ $$ /$$__ $$| $$ | $$ +| $$$$$$$$| $$ \ $$ | $$ | $$ \__/| $$ \ $$| $$ \ $$| $$ | $$ +| $$_____/| $$ | $$ | $$ /$$| $$ | $$ | $$| $$ | $$| $$ | $$ +| $$$$$$$| $$ | $$ | $$$$/| $$ | $$$$$$/| $$$$$$$/| $$$$$$$ + \_______/|__/ |__/ \___/ |__/ \______/ | $$____/ \____ $$ + | $$ /$$ | $$ + | $$ | $$$$$$/ + |__/ \______/ + + + + +This script will now install the dotfiles and configurations for `entropy`. + +\033[39m' + +printf '\033[31m[note] Note that you have to manually link the nixos configuration and rebuild the system before running this script. +\033[39m' +echo "[note] Please make sure a GPG private key is installed." +echo "[note] Finally, you should have a working ssh key in place to interact with github and other servers. Note that the existing SSH config will be overwritten." +read -p "Are you ready to go? [y/n] " ready +if [ $ready != "y" ]; then + exit +fi + +# sudo -v + +# general preparations +mkdir -p ~/.config + +# set up pass +printf "\033[33m[info] Linking config files\033[39m" +# this must be run in the home network +git clone felix@decima:~/pass-backup ~/.password-store + +# set up vim +printf "\033[33m[info] Setting up vim\033[39m" +curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim +ln -s $PWD/.vimrc ~/.vimrc +vim -c "PlugInstall" + + +# set up mail +printf "\033[33m[info] Configuring Neomutt - your GPG password may be required.\033[39m" +cd mail +# generate mbsyncrc +sed -e "s/{{PASSWORD}}/$(pass mail/tud | head -1)/" -e "s/{{USER}}/$(pass mail/tud-user)/" template.mbsyncrc > .mbsyncrc +sed -e "s/{{USER}}/$(pass mail/tud-user)/" template.msmtprc > .msmtprc +# link files +cd .. +ln -s $PWD/mail/neomutt/ ~/.config/neomutt +ln -s $PWD/mail/.mailcap ~/.mailcap +ln -s $PWD/mail/.mbsyncrc ~/.mbsyncrc +ln -s $PWD/mail/.msmtprc ~/.msmtprc +ln -s $PWD/mail/.notmuch-config ~/.notmuch-config +mkdir -p ~/.mail/tu-dresden +notmuch new + +# set up openvpn connection +printf "\033[33m[info] Configuring OpenVPN\033[39m" +cd vpn +pass mail/tud-user | head -1 >> credentials.txt +pass mail/tud | head -1 >> credentials.txt +cd .. +ln -s $PWD/vpn ~/.config/vpn + +# link other dotfiles +printf "\033[33m[info] Linking config files\033[39m" +ln -s $PWD/kitty/ ~/.config/kitty +ln -s $PWD/.urlview ~/.urlview +ln -s $PWD/.gitconfig ~/.gitconfig +ln -s $PWD/git-commit-template.txt ~/.gitcommit_template +mkdir -p ~/.config/fish/ +ln -s $PWD/config.fish ~/.config/fish/config.fish +ln -s $PWD/i3 ~/.config/i3 +ln -s $PWD/i3status-rust ~/.config/i3status-rust +ln -s $PWD/dunst ~/.config/dunst + + + +# set default browser, enable redshift etc +printf "\033[33m[info] Setting up some defaults\033[39m" +xdg-settings set default-web-browser firefox.desktop + +mkdir -p ~/.config/systemd/user/default.target.wants +touch ~/.config/systemd/user/default.target.wants/redshift.service diff --git a/entropy/kitty/kitty-themes b/entropy/kitty/kitty-themes new file mode 160000 index 0000000..fca3335 --- /dev/null +++ b/entropy/kitty/kitty-themes @@ -0,0 +1 @@ +Subproject commit fca3335489bdbab4cce150cb440d3559ff5400e2 diff --git a/entropy/kitty/kitty.conf b/entropy/kitty/kitty.conf new file mode 100644 index 0000000..a28e1e0 --- /dev/null +++ b/entropy/kitty/kitty.conf @@ -0,0 +1,899 @@ +# vim:fileencoding=utf-8:ft=conf:foldmethod=marker + +#: Fonts {{{ + +#: kitty has very powerful font management. You can configure +#: individual font faces and even specify special fonts for particular +#: characters. + +# font_family Fira Code +font_family Hack Nerd Font +# bold_font auto +# italic_font auto +# bold_italic_font auto + +#: You can specify different fonts for the bold/italic/bold-italic +#: variants. By default they are derived automatically, by the OSes +#: font system. Setting them manually is useful for font families that +#: have many weight variants like Book, Medium, Thick, etc. For +#: example:: + +#: font_family Operator Mono Book +#: bold_font Operator Mono Medium +#: italic_font Operator Mono Book Italic +#: bold_italic_font Operator Mono Medium Italic + +font_size 16.0 + +#: Font size (in pts) + +# adjust_line_height 0 +# adjust_column_width 0 + +#: Change the size of each character cell kitty renders. You can use +#: either numbers, which are interpreted as pixels or percentages +#: (number followed by %), which are interpreted as percentages of the +#: unmodified values. You can use negative pixels or percentages less +#: than 100% to reduce sizes (but this might cause rendering +#: artifacts). + +# symbol_map U+E0A0-U+E0A2,U+E0B0-U+E0B3 PowerlineSymbols + +#: Map the specified unicode codepoints to a particular font. Useful +#: if you need special rendering for some symbols, such as for +#: Powerline. Avoids the need for patched fonts. Each unicode code +#: point is specified in the form U+. You +#: can specify multiple code points, separated by commas and ranges +#: separated by hyphens. symbol_map itself can be specified multiple +#: times. Syntax is:: + +#: symbol_map codepoints Font Family Name + +# box_drawing_scale 0.001, 1, 1.5, 2 + +#: Change the sizes of the lines used for the box drawing unicode +#: characters These values are in pts. They will be scaled by the +#: monitor DPI to arrive at a pixel value. There must be four values +#: corresponding to thin, normal, thick, and very thick lines. + +#: }}} + +#: Cursor customization {{{ + +# cursor #cccccc + +#: Default cursor color + +# cursor_text_color #111111 + +#: Choose the color of text under the cursor. If you want it rendered +#: with the background color of the cell underneath instead, use the +#: special keyword: background + +# cursor_shape block + +#: The cursor shape can be one of (block, beam, underline) + +cursor_blink_interval 0.5 +cursor_stop_blinking_after 5.0 + +#: The interval (in seconds) at which to blink the cursor. Set to zero +#: to disable blinking. Note that numbers smaller than repaint_delay +#: will be limited to repaint_delay. Stop blinking cursor after the +#: specified number of seconds of keyboard inactivity. Set to zero to +#: never stop blinking. + +#: }}} + +#: Scrollback {{{ + +# scrollback_lines 2000 + +#: Number of lines of history to keep in memory for scrolling back. +#: Memory is allocated on demand. Negative numbers are (effectively) +#: infinite scrollback. Note that using very large scrollback is not +#: recommended a it can slow down resizing of the terminal and also +#: use large amounts of RAM. + +# scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER + +#: Program with which to view scrollback in a new window. The +#: scrollback buffer is passed as STDIN to this program. If you change +#: it, make sure the program you use can handle ANSI escape sequences +#: for colors and text formatting. INPUT_LINE_NUMBER in the command +#: line above will be replaced by an integer representing which line +#: should be at the top of the screen. + +# wheel_scroll_multiplier 5.0 + +#: Modify the amount scrolled by the mouse wheel. Note this is only +#: used for low precision scrolling devices, not for high precision +#: scrolling on platforms such as macOS and Wayland. Use negative +#: numbers to change scroll direction. + +#: }}} + +#: Mouse {{{ + +# url_color #0087BD +# url_style curly + +#: The color and style for highlighting URLs on mouse-over. url_style +#: can be one of: none, single, double, curly + +# open_url_modifiers kitty_mod + +#: The modifier keys to press when clicking with the mouse on URLs to +#: open the URL + +# open_url_with default + +#: The program with which to open URLs that are clicked on. The +#: special value default means to use the operating system's default +#: URL handler. + +# copy_on_select no + +#: Copy to clipboard on select. With this enabled, simply selecting +#: text with the mouse will cause the text to be copied to clipboard. +#: Useful on platforms such as macOS/Wayland that do not have the +#: concept of primary selections. Note that this is a security risk, +#: as all programs, including websites open in your browser can read +#: the contents of the clipboard. + +# rectangle_select_modifiers ctrl+alt + +#: The modifiers to use rectangular selection (i.e. to select text in +#: a rectangular block with the mouse) + +# select_by_word_characters :@-./_~?&=%+# + +#: Characters considered part of a word when double clicking. In +#: addition to these characters any character that is marked as an +#: alpha-numeric character in the unicode database will be matched. + +# click_interval 0.5 + +#: The interval between successive clicks to detect double/triple +#: clicks (in seconds) + +# mouse_hide_wait 3.0 + +#: Hide mouse cursor after the specified number of seconds of the +#: mouse not being used. Set to zero to disable mouse cursor hiding. + +# focus_follows_mouse no + +#: Set the active window to the window under the mouse when moving the +#: mouse around + +#: }}} + +#: Performance tuning {{{ + +# repaint_delay 10 + +#: Delay (in milliseconds) between screen updates. Decreasing it, +#: increases frames-per-second (FPS) at the cost of more CPU usage. +#: The default value yields ~100 FPS which is more than sufficient for +#: most uses. Note that to actually achieve 100 FPS you have to either +#: set sync_to_monitor to no or use a monitor with a high refresh +#: rate. + +# input_delay 3 + +#: Delay (in milliseconds) before input from the program running in +#: the terminal is processed. Note that decreasing it will increase +#: responsiveness, but also increase CPU usage and might cause flicker +#: in full screen programs that redraw the entire screen on each loop, +#: because kitty is so fast that partial screen updates will be drawn. + +# sync_to_monitor yes + +#: Sync screen updates to the refresh rate of the monitor. This +#: prevents tearing (https://en.wikipedia.org/wiki/Screen_tearing) +#: when scrolling. However, it limits the rendering speed to the +#: refresh rate of your monitor. With a very high speed mouse/high +#: keyboard repeat rate, you may notice some slight input latency. If +#: so, set this to no. + +#: }}} + +#: Terminal bell {{{ + +# enable_audio_bell yes + +#: Enable/disable the audio bell. Useful in environments that require +#: silence. + +# visual_bell_duration 0.0 + +#: Visual bell duration. Flash the screen when a bell occurs for the +#: specified number of seconds. Set to zero to disable. + +# window_alert_on_bell yes + +#: Request window attention on bell. Makes the dock icon bounce on +#: macOS or the taskbar flash on linux. + +bell_on_tab yes + +#: Show a bell symbol on the tab if a bell occurs in one of the +#: windows in the tab and the window is not the currently focused +#: window + +#: }}} + +#: Window layout {{{ + +# remember_window_size yes +# initial_window_width 640 +# initial_window_height 400 + +#: If enabled, the window size will be remembered so that new +#: instances of kitty will have the same size as the previous +#: instance. If disabled, the window will initially have size +#: configured by initial_window_width/height, in pixels. You can use a +#: suffix of "c" on the width/height values to have them interpreted +#: as number of cells instead of pixels. + +# enabled_layouts * + +#: The enabled window layouts. A comma separated list of layout names. +#: The special value all means all layouts. The first listed layout +#: will be used as the startup layout. For a list of available +#: layouts, see the +#: https://sw.kovidgoyal.net/kitty/index.html#layouts. + +# window_resize_step_cells 2 +# window_resize_step_lines 2 + +#: The step size (in units of cell width/cell height) to use when +#: resizing windows. The cells value is used for horizontal resizing +#: and the lines value for vertical resizing. + +# window_border_width 1.0 + +#: The width (in pts) of window borders. Will be rounded to the +#: nearest number of pixels based on screen resolution. Note that +#: borders are displayed only when more than one window is visible. +#: They are meant to separate multiple windows. + +# draw_minimal_borders yes + +#: Draw only the minimum borders needed. This means that only the +#: minimum needed borders for inactive windows are drawn. That is only +#: the borders that separate the inactive window from a neighbor. Note +#: that setting a non-zero window margin overrides this and causes all +#: borders to be drawn. + +# window_margin_width 10.0 + +#: The window margin (in pts) (blank area outside the border) + +# single_window_margin_width -1000.0 + +#: The window margin (in pts) to use when only a single window is +#: visible. Negative values will cause the value of +#: window_margin_width to be used instead. + +# window_padding_width 0.0 + +#: The window padding (in pts) (blank area between the text and the +#: window border) + +# active_border_color #00ff00 + +#: The color for the border of the active window + +# inactive_border_color #cccccc + +#: The color for the border of inactive windows + +# bell_border_color #ff5a00 + +#: The color for the border of inactive windows in which a bell has +#: occurred + +# inactive_text_alpha 1.0 + +#: Fade the text in inactive windows by the specified amount (a number +#: between zero and one, with zero being fully faded). + +#: }}} + +#: Tab bar {{{ + +# tab_bar_edge bottom + +#: Which edge to show the tab bar on, top or bottom + +# tab_bar_margin_width 0.0 + +#: The margin to the left and right of the tab bar (in pts) + +# tab_bar_style fade + +#: The tab bar style, can be one of: fade or separator. In the fade +#: style, each tab's edges fade into the background color, in the +#: separator style, tabs are separated by a configurable separator. + +# tab_fade 0.25 0.5 0.75 1 + +#: Control how each tab fades into the background when using fade for +#: the tab_bar_style. Each number is an alpha (between zero and one) +#: that controls how much the corresponding cell fades into the +#: background, with zero being no fade and one being full fade. You +#: can change the number of cells used by adding/removing entries to +#: this list. + +# tab_separator " ┇" + +#: The separator between tabs in the tab bar when using separator as +#: the tab_bar_style. + +# active_tab_foreground #000 +# active_tab_background #eee +# active_tab_font_style bold-italic +# inactive_tab_foreground #444 +# inactive_tab_background #999 +# inactive_tab_font_style normal + +#: Tab bar colors and styles + +#: }}} + +#: Color scheme {{{ + +# foreground #dddddd +background #202020 + +#: The foreground and background colors + +# background_opacity 0.8 +# dynamic_background_opacity no + +#: The opacity of the background. A number between 0 and 1, where 1 is +#: opaque and 0 is fully transparent. This will only work if +#: supported by the OS (for instance, when using a compositor under +#: X11). Note that it only sets the default background color's +#: opacity. This is so that things like the status bar in vim, +#: powerline prompts, etc. still look good. But it means that if you +#: use a color theme with a background color in your editor, it will +#: not be rendered as transparent. Instead you should change the +#: default background color in your kitty config and not use a +#: background color in the editor color scheme. Or use the escape +#: codes to set the terminals default colors in a shell script to +#: launch your editor. Be aware that using a value less than 1.0 is a +#: (possibly significant) performance hit. If you want to dynamically +#: change transparency of windows set dynamic_background_opacity to +#: yes (this is off by default as it has a performance cost) + +# dim_opacity 0.75 + +#: How much to dim text that has the DIM/FAINT attribute set. One +#: means no dimming and zero means fully dimmed (i.e. invisible). + +# selection_foreground #000000 +# selection_background #FFFACD + +#: The foreground and background for text selected with the mouse + + +#: The 16 terminal colors. There are 8 basic colors, each color has a +#: dull and bright version. You can also set the remaining colors from +#: the 256 color table as color16 to color255. + +# color0 #000000 +# color8 #767676 + +#: black + +# color1 #cc0403 +# color9 #f2201f + +#: red + +# color2 #19cb00 +# color10 #23fd00 + +#: green + +# color3 #cecb00 +# color11 #fffd00 + +#: yellow + +# color4 #0d73cc +# color12 #1a8fff + +#: blue + +# color5 #cb1ed1 +# color13 #fd28ff + +#: magenta + +# color6 #0dcdcd +# color14 #14ffff + +#: cyan + +# color7 #dddddd +# color15 #ffffff + +#: white + +#: }}} + +#: Advanced {{{ + +# shell . + +#: The shell program to execute. The default value of . means to use +#: whatever shell is set as the default shell for the current user. +#: Note that on macOS if you change this, you might need to add +#: --login to ensure that the shell starts in interactive mode and +#: reads its startup rc files. + +# editor . + +#: The console editor to use when editing the kitty config file or +#: similar tasks. A value of . means to use the environment variable +#: EDITOR. Note that this environment variable has to be set not just +#: in your shell startup scripts but system-wide, otherwise kitty will +#: not see it. + +# close_on_child_death no + +#: Close the window when the child process (shell) exits. If no (the +#: default), the terminal will remain open when the child exits as +#: long as there are still processes outputting to the terminal (for +#: example disowned or backgrounded processes). If yes, the window +#: will close as soon as the child process exits. Note that setting it +#: to yes means that any background processes still using the terminal +#: can fail silently because their stdout/stderr/stdin no longer work. + +# allow_remote_control no + +#: Allow other programs to control kitty. If you turn this on other +#: programs can control all aspects of kitty, including sending text +#: to kitty windows, opening new windows, closing windows, reading the +#: content of windows, etc. Note that this even works over ssh +#: connections. + +# env + +#: Specify environment variables to set in all child processes. Note +#: that environment variables are expanded recursively, so if you +#: use:: + +#: env MYVAR1=a +#: env MYVAR2=${MYVAR}/${HOME}/b + +#: The value of MYVAR2 will be a//b. + +# startup_session none + +#: Path to a session file to use for all kitty instances. Can be +#: overridden by using the kitty --session command line option for +#: individual instances. See +#: https://sw.kovidgoyal.net/kitty/index.html#sessions in the kitty +#: documentation for details. Note that relative paths are interpreted +#: with respect to the kitty config directory. Environment variables +#: in the path are expanded. + +# clipboard_control write-clipboard write-primary + +#: Allow programs running in kitty to read and write from the +#: clipboard. You can control exactly which actions are allowed. The +#: set of possible actions is: write-clipboard read-clipboard write- +#: primary read-primary The default is to allow writing to the +#: clipboard and primary selection. Note that enabling the read +#: functionality is a security risk as it means that any program, even +#: one running on a remote server via SSH can read your clipboard. + +# term xterm-kitty + +#: The value of the TERM environment variable to set. Changing this +#: can break many terminal programs, only change it if you know what +#: you are doing, not because you read some advice on Stack Overflow +#: to change it. The TERM variable if used by various programs to get +#: information about the capabilities and behavior of the terminal. If +#: you change it, depending on what programs you run, and how +#: different the terminal you are changing it to is, various things +#: from key-presses, to colors, to various advanced features may not +#: work. + +#: }}} + +#: OS specific tweaks {{{ + +# macos_titlebar_color system + +#: Change the color of the kitty window's titlebar on macOS. A value +#: of system means to use the default system color, a value of +#: background means to use the background color of the currently +#: active window and finally you can use an arbitrary color, such as +#: #12af59 or red. WARNING: This option works by using a hack, as +#: there is no proper Cocoa API for it. It sets the background color +#: of the entire window and makes the titlebar transparent. As such it +#: is incompatible with background_opacity. If you want to use both, +#: you are probably better off just hiding the titlebar with +#: macos_hide_titlebar. + +# macos_hide_titlebar no +macos_hide_titlebar yes + +#: Hide the kitty window's title bar on macOS. + +# x11_hide_window_decorations no + +#: Hide the window decorations (title bar and window borders) on X11 +#: and Wayland. Whether this works and exactly what effect it has +#: depends on the window manager, as it is the job of the window +#: manager/compositor to draw window decorations. + +macos_option_as_alt no + +#: Use the option key as an alt key. With this set to no, kitty will +#: use the macOS native Option+Key = unicode character behavior. This +#: will break any Alt+key keyboard shortcuts in your terminal +#: programs, but you can use the macOS unicode input technique. + +# macos_hide_from_tasks no + +#: Hide the kitty window from running tasks (Option+Tab) on macOS. + +# macos_quit_when_last_window_closed no + +#: Have kitty quit when all the top-level windows are closed. By +#: default, kitty will stay running, even with no open windows, as is +#: the expected behavior on macOS. + +# macos_window_resizable yes + +#: Disable this if you want kitty top-level (OS) windows to not be +#: resizable on macOS. + +# macos_thicken_font 0 + +#: Draw an extra border around the font with the given width, to +#: increase legibility at small font sizes. For example, a value of +#: 0.75 will result in rendering that looks similar to sub-pixel +#: antialiasing at common font sizes. + +# macos_traditional_fullscreen no + +#: Use the traditional full-screen transition, that is faster, but +#: less pretty. + +# macos_custom_beam_cursor no + +#: Enable/disable custom mouse cursor for macOS that is easier to see +#: on both light and dark backgrounds. WARNING: this might make your +#: mouse cursor invisible on dual GPU machines. + +#: }}} + +#: Keyboard shortcuts {{{ + +#: For a list of key names, see: GLFW keys +#: . The name to use +#: is the part after the GLFW_KEY_ prefix. For a list of modifier +#: names, see: GLFW mods +#: + +#: On Linux you can also use XKB key names to bind keys that are not +#: supported by GLFW. See XKB keys +#: for a list of key names. The name to use is the part +#: after the XKB_KEY_ prefix. Note that you should only use an XKB key +#: name for keys that are not present in the list of GLFW keys. + +#: Finally, you can use raw system key codes to map keys. To see the +#: system key code for a key, start kitty with the kitty --debug- +#: keyboard option. Then kitty will output some debug text for every +#: key event. In that text look for ``native_code`` the value of that +#: becomes the key name in the shortcut. For example: + +#: .. code-block:: none + +#: on_key_input: glfw key: 65 native_code: 0x61 action: PRESS mods: 0x0 text: 'a' + +#: Here, the key name for the A key is 0x61 and you can use it with:: + +#: map ctrl+0x61 something + +#: to map ctrl+a to something. + +#: You can use the special action no_op to unmap a keyboard shortcut +#: that is assigned in the default configuration. + +#: You can combine multiple actions to be triggered by a single +#: shortcut, using the syntax below:: + +#: map key combine action1 action2 action3 ... + +#: For example:: + +#: map kitty_mod+e combine : new_window : next_layout + +#: this will create a new window and switch to the next available +#: layout + +#: You can use multi-key shortcuts using the syntax shown below:: + +#: map key1>key2>key3 action + +#: For example:: + +#: map ctrl+f>2 set_font_size 20 + +# kitty_mod ctrl+shift + +#: The value of kitty_mod is used as the modifier for all default +#: shortcuts, you can change it in your kitty.conf to change the +#: modifiers for all the default shortcuts. + +# clear_all_shortcuts no + +#: You can have kitty remove all shortcut definition seen up to this +#: point. Useful, for instance, to remove the default shortcuts. + +#: Clipboard {{{ + +# map cmd+c copy_to_clipboard +# map kitty_mod+c copy_to_clipboard +# map cmd+v paste_from_clipboard +# map kitty_mod+v paste_from_clipboard +# map kitty_mod+s paste_from_selection +# map shift+insert paste_from_selection +# map kitty_mod+o pass_selection_to_program + +#: You can also pass the contents of the current selection to any +#: program using pass_selection_to_program. By default, the system's +#: open program is used, but you can specify your own, for example:: + +#: map kitty_mod+o pass_selection_to_program firefox + +#: You can pass the current selection to a terminal program running in +#: a new kitty window, by using the @selection placeholder:: + +#: map kitty_mod+y new_window less @selection + +#: }}} + +#: Scrolling {{{ + +# map kitty_mod+up scroll_line_up +# map kitty_mod+k scroll_line_up +# map kitty_mod+down scroll_line_down +# map kitty_mod+j scroll_line_down +# map kitty_mod+page_up scroll_page_up +# map kitty_mod+page_down scroll_page_down +# map kitty_mod+home scroll_home +# map kitty_mod+end scroll_end +# map kitty_mod+h show_scrollback + +#: You can pipe the contents of the current screen + history buffer as +#: STDIN to an arbitrary program using the ``pipe`` function. For +#: example, the following opens the scrollback buffer in less in an +#: overlay window:: + +#: map f1 pipe @ansi overlay less +G -R + +#: Placeholders available are: @text (which is plain text) and @ansi +#: (which includes text styling escape codes). For only the current +#: screen, use @screen or @ansi_screen. For the secondary screen, use +#: @alternate and @ansi_alternate. The secondary screen is the screen +#: not currently displayed. For example if you run a fullscreen +#: terminal application, the secondary screen will be the screen you +#: return to when quitting the application. You can also use ``none`` +#: for no STDIN input. + +#: To open in a new window, tab or new OS window, use ``window``, +#: ``tab``, or ``os_window`` respectively. You can also use ``none`` +#: in which case the data will be piped into the program without +#: creating any windows, useful if the program is a GUI program that +#: creates its own windows. + +#: }}} + +#: Window management {{{ + +# map kitty_mod+enter new_window + +#: You can open a new window running an arbitrary program, for +#: example:: + +#: map kitty_mod+y new_window mutt + +#: You can open a new window with the current working directory set to +#: the working directory of the current window using:: + +#: map ctrl+alt+enter new_window_with_cwd + +#: You can open a new window that is allowed to control kitty via the +#: kitty remote control facility by prefixing the command line with @. +#: Any programs running in that window will be allowed to control +#: kitty. For example:: + +#: map ctrl+enter new_window @ some_program + +# map cmd+n new_os_window +# map kitty_mod+n new_os_window +# map kitty_mod+w close_window +# map kitty_mod+] next_window +# map kitty_mod+[ previous_window +# map kitty_mod+f move_window_forward +# map kitty_mod+b move_window_backward +# map kitty_mod+` move_window_to_top +# map kitty_mod+r start_resizing_window +# map kitty_mod+1 first_window +# map kitty_mod+2 second_window +# map kitty_mod+3 third_window +# map kitty_mod+4 fourth_window +# map kitty_mod+5 fifth_window +# map kitty_mod+6 sixth_window +# map kitty_mod+7 seventh_window +# map kitty_mod+8 eighth_window +# map kitty_mod+9 ninth_window +# map kitty_mod+0 tenth_window +#: }}} + +#: Tab management {{{ + +# map ctrl+tab next_tab +# map kitty_mod+right next_tab +# map ctrl+shift+tab previous_tab +# map kitty_mod+left previous_tab +# map kitty_mod+t new_tab +# map kitty_mod+q close_tab +# map kitty_mod+. move_tab_forward +# map kitty_mod+, move_tab_backward +# map kitty_mod+alt+t set_tab_title + +#: You can also create shortcuts to go to specific tabs, with 1 being +#: the first tab:: + +#: map ctrl+alt+1 goto_tab 1 +#: map ctrl+alt+2 goto_tab 2 + +#: Just as with new_window above, you can also pass the name of +#: arbitrary commands to run when using new_tab and use +#: new_tab_with_cwd. Finally, if you want the new tab to open next to +#: the current tab rather than at the end of the tabs list, use:: + +#: map ctrl+t new_tab !neighbor [optional cmd to run] +#: }}} + +#: Layout management {{{ + +# map kitty_mod+l next_layout + +#: You can also create shortcuts to switch to specific layouts:: + +#: map ctrl+alt+t goto_layout tall +#: map ctrl+alt+s goto_layout stack + +#: Similarly, to switch back to the previous layout:: + +#: map ctrl+alt+p last_used_layout +#: }}} + +#: Font sizes {{{ + +#: You can change the font size for all top-level kitty windows at a +#: time or only the current one. + +# map kitty_mod+equal change_font_size all +2.0 +# map kitty_mod+minus change_font_size all -2.0 +# map kitty_mod+backspace change_font_size all 0 + +#: To setup shortcuts for specific font sizes:: + +#: map kitty_mod+f6 change_font_size all 10.0 + +#: To setup shortcuts to change only the current window's font size:: + +#: map kitty_mod+f6 change_font_size current 10.0 +#: }}} + +#: Select and act on visible text {{{ + +#: Use the hints kitten to select text and either pass it to an +#: external program or insert it into the terminal or copy it to the +#: clipboard. + +# map kitty_mod+e kitten hints + +#: Open a currently visible URL using the keyboard. The program used +#: to open the URL is specified in open_url_with. + +# map kitty_mod+p>f kitten hints --type path --program - + +#: Select a path/filename and insert it into the terminal. Useful, for +#: instance to run git commands on a filename output from a previous +#: git command. + +# map kitty_mod+p>shift+f kitten hints --type path + +#: Select a path/filename and open it with the default open program. + +# map kitty_mod+p>l kitten hints --type line --program - + +#: Select a line of text and insert it into the terminal. Use for the +#: output of things like: ls -1 + +# map kitty_mod+p>w kitten hints --type word --program - + +#: Select words and insert into terminal. + +# map kitty_mod+p>h kitten hints --type hash --program - + +#: Select something that looks like a hash and insert it into the +#: terminal. Useful with git, which uses sha1 hashes to identify +#: commits + + +#: The hints kitten has many more modes of operation that you can map +#: to different shortcuts. For a full description see kittens/hints. +#: }}} + +#: Miscellaneous {{{ + +# map kitty_mod+f11 toggle_fullscreen +# map kitty_mod+u kitten unicode_input +# map kitty_mod+f2 edit_config_file +# map kitty_mod+escape kitty_shell window + +#: Open the kitty shell in a new window/tab/overlay/os_window to +#: control kitty using commands. + +# map kitty_mod+a>m set_background_opacity +0.1 +# map kitty_mod+a>l set_background_opacity -0.1 +# map kitty_mod+a>1 set_background_opacity 1 +# map kitty_mod+a>d set_background_opacity default +# map kitty_mod+delete clear_terminal reset active + +#: You can create shortcuts to clear/reset the terminal. For example:: + +#: map kitty_mod+f9 clear_terminal reset active +#: map kitty_mod+f10 clear_terminal clear active +#: map kitty_mod+f11 clear_terminal scrollback active + +#: These will reset screen/clear screen/clear screen+scrollback +#: respectively. If you want to operate on all windows instead of just +#: the current one, use all instead of :italic`active`. + + +#: You can tell kitty to send arbitrary (UTF-8) encoded text to the +#: client program when pressing specified shortcut keys. For example:: + +#: map ctrl+alt+a send_text all Special text + +#: This will send "Special text" when you press the ctrl+alt+a key +#: combination. The text to be sent is a python string literal so you +#: can use escapes like \x1b to send control codes or \u21fb to send +#: unicode characters (or you can just input the unicode characters +#: directly as UTF-8 text). The first argument to send_text is the +#: keyboard modes in which to activate the shortcut. The possible +#: values are normal or application or kitty or a comma separated +#: combination of them. The special keyword all means all modes. The +#: modes normal and application refer to the DECCKM cursor key mode +#: for terminals, and kitty refers to the special kitty extended +#: keyboard protocol. + +#: Another example, that outputs a word and then moves the cursor to +#: the start of the line (same as pressing the Home key):: + +#: map ctrl+alt+a send_text normal Word\x1b[H +#: map ctrl+alt+a send_text application Word\x1bOH + +#: }}} + +# }}} + +# include /Users/felix/.config/kitty/theme.conf" +include ~/.config/kitty/kitty-themes/themes/gruvbox_dark.conf diff --git a/entropy/kitty/theme.conf b/entropy/kitty/theme.conf new file mode 120000 index 0000000..af86c61 --- /dev/null +++ b/entropy/kitty/theme.conf @@ -0,0 +1 @@ +./kitty-themes/themes/gruvbox_dark.conf \ No newline at end of file diff --git a/entropy/mail/.mailcap b/entropy/mail/.mailcap new file mode 100644 index 0000000..5be6dd7 --- /dev/null +++ b/entropy/mail/.mailcap @@ -0,0 +1,13 @@ +# Images +image/jpeg; feh %s +image/pjpeg; feh %s +image/png; feh %s +image/gif; firefox %s + +# PDF +application/pdf; zathura %s + +# HTML +# -- always use w3m; it's gay to use firefox for this +# text/html; elinks -force-html %s +text/html; w3m -I %{charset} -T text/html; copiousoutput; diff --git a/entropy/mail/.notmuch-config b/entropy/mail/.notmuch-config new file mode 100644 index 0000000..b22c009 --- /dev/null +++ b/entropy/mail/.notmuch-config @@ -0,0 +1,88 @@ +# .notmuch-config - Configuration file for the notmuch mail system +# +# For more information about notmuch, see https://notmuchmail.org + +# Database configuration +# +# The only value supported here is 'path' which should be the top-level +# directory where your mail currently exists and to where mail will be +# delivered in the future. Files should be individual email messages. +# Notmuch will store its database within a sub-directory of the path +# configured here named ".notmuch". +# +[database] +path=/home/felix/.mail + +# User configuration +# +# Here is where you can let notmuch know how you would like to be +# addressed. Valid settings are +# +# name Your full name. +# primary_email Your primary email address. +# other_email A list (separated by ';') of other email addresses +# at which you receive email. +# +# Notmuch will use the various email addresses configured here when +# formatting replies. It will avoid including your own addresses in the +# recipient list of replies, and will set the From address based on the +# address to which the original email was addressed. +# +[user] +name=Felix Wittwer +primary_email=felix.wittwer1@tu-dresden.de +other_email=felix.wittwer1@mailbox.tu-dresden.de;s6525655@msx.tu-dresden.de; + +# Configuration for "notmuch new" +# +# The following options are supported here: +# +# tags A list (separated by ';') of the tags that will be +# added to all messages incorporated by "notmuch new". +# +# ignore A list (separated by ';') of file and directory names +# that will not be searched for messages by "notmuch new". +# +# NOTE: *Every* file/directory that goes by one of those +# names will be ignored, independent of its depth/location +# in the mail store. +# +[new] +tags=new +ignore=/.mbsyncstate/;/.uidvalidity/ + +# Search configuration +# +# The following option is supported here: +# +# exclude_tags +# A ;-separated list of tags that will be excluded from +# search results by default. Using an excluded tag in a +# query will override that exclusion. +# +[search] +exclude_tags=deleted;spam; + +# Maildir compatibility configuration +# +# The following option is supported here: +# +# synchronize_flags Valid values are true and false. +# +# If true, then the following maildir flags (in message filenames) +# will be synchronized with the corresponding notmuch tags: +# +# Flag Tag +# ---- ------- +# D draft +# F flagged +# P passed +# R replied +# S unread (added when 'S' flag is not present) +# +# The "notmuch new" command will notice flag changes in filenames +# and update tags, while the "notmuch tag" and "notmuch restore" +# commands will notice tag changes and update flags in filenames +# +[maildir] +synchronize_flags=true diff --git a/entropy/mail/neomutt/accounts/tudresden.muttrc b/entropy/mail/neomutt/accounts/tudresden.muttrc new file mode 100644 index 0000000..6691023 --- /dev/null +++ b/entropy/mail/neomutt/accounts/tudresden.muttrc @@ -0,0 +1,24 @@ +# vim: syntax=muttrc textwidth=100 + +# felix.wittwer1@tu-dresden.de + +set from = felix.wittwer1@tu-dresden.de +set folder = "~/.mail/tu-dresden/" +set spoolfile = "~/.mail/tu-dresden/Inbox" +set postponed = =Drafts +set trash = =Trash +set record = =Sent + +# NOTE: disabled for notmuch +# mailboxes "=Inbox" "=Trash" "=Sent" "=Drafts" + +macro index \CS "mbsync tu-dresden" + +set signature = "~/.config/neomutt/signature.txt" + +# folder hooks to avoid long folder paths +# folder-hook =Inbox 'set status_format = "[tu dresden] [inbox]%> %u unread %m total %p postponed"' +# folder-hook =Sent 'set status_format = "[tu dresden] [sent]%> %m total"' +# folder-hook =Drafts 'set status_format = "[tu dresden] [drafts]%> %m total"' +# folder-hook =Trash 'set status_format = "[tu dresden] [trash] %> %m total"' + diff --git a/entropy/mail/neomutt/gpg.rc b/entropy/mail/neomutt/gpg.rc new file mode 100644 index 0000000..6c75fe1 --- /dev/null +++ b/entropy/mail/neomutt/gpg.rc @@ -0,0 +1,136 @@ +# -*-muttrc-*- +# +# Command formats for gpg. +# +# Version notes: +# +# GPG 2.1 introduces the option "--pinentry-mode", which requires +# the "loopback" argument in instances where "--passphrase-fd" is +# used. +# +# Some of the older commented-out versions of the commands use gpg-2comp from: +# http://70t.de/download/gpg-2comp.tar.gz +# +# %p The empty string when no passphrase is needed, +# the string "PGPPASSFD=0" if one is needed. +# +# This is mostly used in conditional % sequences. +# +# %f Most PGP commands operate on a single file or a file +# containing a message. %f expands to this file's name. +# +# %s When verifying signatures, there is another temporary file +# containing the detached signature. %s expands to this +# file's name. +# +# %a In "signing" contexts, this expands to the value of the +# configuration variable $pgp_sign_as, if set, otherwise +# $pgp_default_key. You probably need to +# use this within a conditional % sequence. +# +# %r In many contexts, neomutt passes key IDs to pgp. %r expands to +# a list of key IDs. + +# Section A: Key Management + +# The default key for encryption (used by $pgp_self_encrypt and +# $postpone_encrypt). +# +# It will also be used for signing unless $pgp_sign_as is set to a +# key. +# +# Unless your key does not have encryption capability, uncomment this +# line and replace the keyid with your own. +# +# set pgp_default_key="0x12345678" + +# If you have a separate signing key, or your key _only_ has signing +# capability, uncomment this line and replace the keyid with your +# signing keyid. +# +# set pgp_sign_as="0x87654321" + + +# Section B: Commands + +# Note that we explicitly set the comment armor header since GnuPG, when used +# in some localiaztion environments, generates 8bit data in that header, thereby +# breaking PGP/MIME. + +# decode application/pgp +# +set pgp_decode_command="gpg --status-fd=2 %?p?--pinentry-mode loopback --passphrase-fd 0? --no-verbose --quiet --batch --output - %f" + +# Verify a signature +# +set pgp_verify_command="gpg --status-fd=2 --no-verbose --quiet --batch --output - --verify %s %f" + +# Decrypt an attachment +# +set pgp_decrypt_command="gpg --status-fd=2 %?p?--pinentry-mode loopback --passphrase-fd 0? --no-verbose --quiet --batch --output - --decrypt %f" + +# Create a PGP/MIME signed attachment +# +# set pgp_sign_command="gpg-2comp --comment '' --no-verbose --batch --output - %?p?--passphrase-fd 0? --armor --detach-sign --textmode %?a?-u %a? %f" +# +set pgp_sign_command="gpg %?p?--pinentry-mode loopback --passphrase-fd 0? --no-verbose --batch --quiet --output - --armor --textmode %?a?--local-user %a? --detach-sign %f" + +# Create a application/pgp inline signed message. This style is obsolete but still needed for Hushmail recipients and some MUAs. +# +# set pgp_clearsign_command="gpg-2comp --comment '' --no-verbose --batch --output - %?p?--passphrase-fd 0? --armor --textmode --clearsign %?a?-u %a? %f" +# +set pgp_clearsign_command="gpg %?p?--pinentry-mode loopback --passphrase-fd 0? --no-verbose --batch --quiet --output - --armor --textmode %?a?--local-user %a? --clearsign %f" + +# Create an encrypted attachment (note that some users include the --always-trust option here) +# +# set pgp_encrypt_only_command="pgpewrap gpg-2comp -v --batch --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f" +# +set pgp_encrypt_only_command="pgpewrap gpg --batch --quiet --no-verbose --output - --textmode --armor --encrypt -- --recipient %r -- %f" + +# Create an encrypted and signed attachment (note that some users include the --always-trust option here) +# +# set pgp_encrypt_sign_command="pgpewrap gpg-2comp %?p?--passphrase-fd 0? -v --batch --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f" +# +set pgp_encrypt_sign_command="pgpewrap gpg %?p?--pinentry-mode loopback --passphrase-fd 0? --batch --quiet --no-verbose --textmode --output - %?a?--local-user %a? --armor --sign --encrypt -- --recipient %r -- %f" + +# Import a key into the public key ring +# +set pgp_import_command="gpg --no-verbose --import %f" + +# Export a key from the public key ring +# +set pgp_export_command="gpg --no-verbose --armor --export %r" + +# Verify a key +# +set pgp_verify_key_command="gpg --verbose --batch --fingerprint --check-sigs %r" + +# Read in the public key ring +# +set pgp_list_pubring_command="gpg --no-verbose --batch --quiet --with-colons --with-fingerprint --with-fingerprint --list-keys %r" + +# Read in the secret key ring +# +set pgp_list_secring_command="gpg --no-verbose --batch --quiet --with-colons --with-fingerprint --with-fingerprint --list-secret-keys %r" + +# Fetch keys +# set pgp_getkeys_command="pkspxycwrap %r" + +# pattern for good signature - may need to be adapted to locale! +# OK, here's a version which uses gnupg's message catalog: +# set pgp_good_sign="^gpgv?: Good signature from" +# set pgp_good_sign="`gettext -d gnupg -s 'Good signature from "' | tr -d '"'`" +# +# Output pattern to indicate a valid signature using --status-fd messages +# set pgp_good_sign="^\\[GNUPG:\\] GOODSIG" + +# Output pattern to verify a decryption occurred +# This is now deprecated by pgp_check_gpg_decrypt_status_fd: +# set pgp_decryption_okay="^\\[GNUPG:\\] DECRYPTION_OKAY" +set pgp_check_gpg_decrypt_status_fd + +# set pgp_autosign=yes +set pgp_default_key=0xEA0E8A99 +set pgp_replyencrypt=yes +set pgp_timeout=1800 +set pgp_good_sign="^gpg: Good signature from" diff --git a/entropy/mail/neomutt/neomuttrc b/entropy/mail/neomutt/neomuttrc new file mode 100644 index 0000000..8cb5250 --- /dev/null +++ b/entropy/mail/neomutt/neomuttrc @@ -0,0 +1,166 @@ +# vim: syntax=muttrc textwidth=100 + +## Storage Setup +set header_cache = ~/.cache/neomutt/ +set message_cachedir = ~/.cache/neomutt/ +set tmpdir = ~/.cache/neomutt/ +set virtual_spoolfile + + + +## Notmuch configuration +set nm_default_uri = "notmuch:///home/felix/.mail" +virtual-mailboxes "Combined Inbox" "notmuch://?query=tag:inbox" +virtual-mailboxes "All Unread Messages" "notmuch://?query=tag:unread" +virtual-mailboxes "Archive" "notmuch://?query=tag:archive" +virtual-mailboxes "Sent" "notmuch://?query=tag:sent" + +macro index A "+archive -unread -inbox\\n" "Archive message" +macro index c "?" "Change to vfolder overview" +macro index \\\\ "" "Search mailbox" + +# # open a different virtual folder +#bind index,pager X change-vfolder +# # read entire thread of the current message +# bind index,pager + entire-thread +# # generate virtual folder from query +#bind index,pager \CX vfolder-from-query +# generate virtual folder from query with time window +bind index < vfolder-window-backward +bind index > vfolder-window-forward + + + +## Displaying Options -> How should the UI look? +set index_format = "%Z⌈%D⌋ %-20.20F ⌜%s⌟" # Switch format of index +set date_format = "%d.%m.%y" # use german date format for sanity reasons +set folder_format = '%N %4C %4s bytes %2F %2f' +#set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*" +auto_view text/html +alternative_order text/plain text/enriched text/html + +# uncollapse mail threads as necessary +set uncollapse_jump +set uncollapse_new + +# Sorting options: +set sort_re +set sort = reverse-threads +set sort_aux = last-date-received + + + +## Set of sane defaults for handling and displaying mail +set nomark_old # stop marking my mail as old +set smart_wrap # wrap words instead of cutting them half +set reflow_text # automatically reflow text if the mail allows it +set menu_scroll # scroll only a line instead of a page + +# Mail Displaying: +unset markers # remove + signs on line wrap +set smart_wrap # only wrap full words +set reflow_text # reflow text if the mail allows it +set reflow_wrap = 120 +set wrap = 120 +set pager_index_lines = 5 +set pager_context = 5 +set pager_stop # Jesus Christ. Stop moving on to the next mail! + +# Mail editing: +set include # the next 3 set's are to +set edit_headers # go right to vim and edit through that composition +set autoedit # window, rather than mutt giving me 21 questions +set forward_quote +set forward_format = "Fwd: %s" + + + +## Set mail editor to vim & setup aspell +set editor = 'vim -c "set fo+=aw" -c "set nosmartindent" -c "set nojs" -c "set filetype=mail" -c "normal }"' +set text_flowed = yes +set ispell = 'aspell -e -c' + + + +## h e a d e r s +ignore * +unignore from: to: subject: Cc: +hdr_order From: To: Cc: Date: +set user_agent + + + +## Keep me from sending mails w/o attachments +set abort_noattach = ask-yes +set attach_keyword = "\\<(anhängen|angehängt|anhang|anhänge|hängt an|anhängig|attached|attachments?|anbei)\\>" + + + +## Sidebar +source ~/.config/neomutt/sidebar.muttrc +bind index,pager \CO sidebar-open +bind index,pager \CN sidebar-next +bind index,pager \CP sidebar-prev +bind index,pager B sidebar-toggle-visible + + + +## Theme +source ~/.config/neomutt/themes/powerline/colors/gruvbox-powerline.neomuttrc +source ~/.config/neomutt/themes/powerline/powerline.neomuttrc + + + +## Basic Sending Options +set sendmail = "msmtp" +set use_from = yes +set realname = "Felix Wittwer" +set reverse_name # set the sender mail address to whomever it was originally sent +set envelope_from = yes + + +## Use GPG +source ~/.config/neomutt/gpg.rc +set pgp_use_gpg_agent = yes + +## Set up S/MIME +set crypt_use_gpgme = yes +set crypt_autosmime = yes +set crypt_autosign = yes +# automatically encrypt when possible +set crypt_opportunistic_encrypt = yes +set crypt_replyencrypt = yes +set crypt_replysign = yes +set crypt_replysignencrypted = yes +# set default key and encrypt to self +set smime_default_key = 0x39DDEFF5 +set smime_self_encrypt = yes + + + +## What is SPAM? Baby don't annoy me ~ annoy me, no more! +spam "X-Spam-Status: Yes" "90+/SA" +spam "X-Spam-Flag: YES" "90+/SA" +spam "X-TUD-Spam-Status: Yes" "90+/SA" + + + +## VIM Keybindings +bind pager j next-line +bind pager k previous-line +bind attach,index,pager \CD next-page +bind attach,index,pager \CU previous-page +bind pager g top +bind pager G bottom +bind attach,index g first-entry +bind attach,index G last-entry +bind index,pager X group-reply +bind index,pager S group-chat-reply + + +# configure aliases and mailboxes +source ~/.config/neomutt/whoami.muttrc + +#### Mailbox switching + +source ~/.config/neomutt/accounts/tudresden.muttrc diff --git a/entropy/mail/neomutt/sidebar.muttrc b/entropy/mail/neomutt/sidebar.muttrc new file mode 100644 index 0000000..2abd096 --- /dev/null +++ b/entropy/mail/neomutt/sidebar.muttrc @@ -0,0 +1,23 @@ +set sidebar_visible = no +set sidebar_width = 20 +set sidebar_short_path = yes +set sidebar_delim_chars = '/.' +set sidebar_folder_indent +set sidebar_indent_string = ' ' +# set sidebar_new_mail_only = yes +set sidebar_next_new_wrap = yes +set sidebar_on_right = no +#set sidebar_divider_char = ' ' +set sidebar_format = '%B %?N?(%N)?%* %S' +set sidebar_sort_method = 'path' +set mail_check_stats = yes + +color sidebar_indicator brightcolor02 default +color sidebar_highlight brightcolor223 default +color sidebar_divider default default +color sidebar_flagged color243 default +color sidebar_new color243 default +color sidebar_ordinary color243 default + + +# vim: syntax=neomuttrc diff --git a/entropy/mail/neomutt/themes/dracula b/entropy/mail/neomutt/themes/dracula new file mode 160000 index 0000000..94e340c --- /dev/null +++ b/entropy/mail/neomutt/themes/dracula @@ -0,0 +1 @@ +Subproject commit 94e340c8dd939c4a7f94c9a7a820d2f5205515c2 diff --git a/entropy/mail/neomutt/themes/powerline b/entropy/mail/neomutt/themes/powerline new file mode 160000 index 0000000..dc014df --- /dev/null +++ b/entropy/mail/neomutt/themes/powerline @@ -0,0 +1 @@ +Subproject commit dc014df127693ee48ae019305af0a3a61453a5c9 diff --git a/entropy/mail/template.mbsyncrc b/entropy/mail/template.mbsyncrc new file mode 100644 index 0000000..86a1024 --- /dev/null +++ b/entropy/mail/template.mbsyncrc @@ -0,0 +1,26 @@ +# ---- TU Dresden ---- +IMAPAccount tu-dresden +Host msx.tu-dresden.de +User {{USER}} +#PassCmd "pass mail/tud | head -1" +Pass "{{PASSWORD}}" +SSLType IMAPS +AuthMechs LOGIN +# because exchange apparently can't handle parallel accesses: +PipelineDepth 1 + +IMAPStore tu-dresden-remote +Account tu-dresden + +MaildirStore tu-dresden-local +Subfolders Verbatim +Path ~/.mail/tu-dresden/ +Inbox ~/.mail/tu-dresden/Inbox + +Channel tu-dresden +Master :tu-dresden-remote: +Slave :tu-dresden-local: +Patterns * +Create Both +SyncState * + diff --git a/entropy/mail/template.msmtprc b/entropy/mail/template.msmtprc new file mode 100644 index 0000000..85fc965 --- /dev/null +++ b/entropy/mail/template.msmtprc @@ -0,0 +1,20 @@ +# Set default values for all following accounts. +defaults +auth on +tls on +# tls_trust_file /etc/ssl/certs/ca-certificates.crt +logfile ~/.msmtp.log + +# +# TU Dresden +account tud +host msx.tu-dresden.de +port 587 +auth login +from felix.wittwer1@tu-dresden.de +user {{USER}} +passwordeval "pass mail/tud | head -1" + + +# Set a default account +account default : tud diff --git a/entropy/nixos/configuration.nix b/entropy/nixos/configuration.nix new file mode 100644 index 0000000..a983473 --- /dev/null +++ b/entropy/nixos/configuration.nix @@ -0,0 +1,318 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ config, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + # include and configure R + ./modules/r.nix + # python with modules + ./modules/python.nix + ]; + + # set up LUKS discovery + boot.initrd.luks.devices.cryptlvm.device = "/dev/disk/by-uuid/f382cd01-9048-4b1b-8a73-48e1f61e6c08"; + + # make the screen usable + #hardware.video.hidpi.enable = true; + services.xserver.dpi = 180; + environment.variables = { + GDK_SCALE = "2"; + GDK_DPI_SCALE = "0.5"; + _JAVA_OPTIONS = "-Dsun.java2d.uiScale=2"; + }; + + # Use the systemd-boot EFI boot loader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + # enable powertop for saving power + #powerManagement.powertop.enable = true; + + networking.hostName = "entropy"; # Define your hostname. + networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # Set your time zone. + time.timeZone = "Europe/Berlin"; + + # geoclue2 does not yield a location at home, so I'll make the manual configuration the default + # location.provider = "geoclue2"; + location.provider = "manual"; + # using the location of the cafe ascii should be good enough + location.latitude = 51.0250869; + location.longitude = 13.7210005; + + # The global useDHCP flag is deprecated, therefore explicitly set to false here. + # Per-interface useDHCP will be mandatory in the future, so this generated config + # replicates the default behaviour. + networking.useDHCP = false; + networking.interfaces.enp0s31f6.useDHCP = true; + networking.interfaces.wlp0s20f3.useDHCP = true; + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + console = { + #font = "Lat2-Terminus16"; + font = "${pkgs.terminus_font}/share/consolefonts/ter-u28n.psf.gz"; + keyMap = pkgs.lib.mkForce "uk"; + }; + # use the xkb-config from the X server + console.useXkbConfig = true; + + # Configure X Server + services.xserver.enable = true; + services.xserver.windowManager.i3 = { + enable = true; + package = pkgs.i3-gaps; + extraPackages = with pkgs; [ + dmenu + #(i3status-rust.overrideAttrs ( oldAttrs: { cargoBuildFlags = [ "--features=notmuch" ]; })) + i3status-rust + i3lock-fancy + libnotify + dunst + feh + ]; + # extraSessionCommands = "feh --bg-scale /home/felix/wall.jpg"; + }; + # login window options + services.xserver.displayManager.lightdm = { + background = "/etc/nixos/extra/login.jpg"; + # should be enabled by selecting i3 + # enable = true; + greeters.gtk = { + cursorTheme.name = "Adwaita-dark"; + iconTheme.name = "Adwaita-dark"; + theme.name = "Adwaita-dark"; + }; + }; + + services.xserver.xautolock = { + enable = true; + extraOptions = [ "-detectsleep" ]; + locker = "${pkgs.i3lock-fancy}/bin/i3lock-fancy"; + nowlocker = "${pkgs.i3lock-fancy}/bin/i3lock-fancy"; + time = 10; + }; + # Configure keymap in X11 + services.xserver.layout = "gb"; + services.xserver.xkbOptions = "eurosign:e,ctrl:nocaps,compose:prsc"; + # enable touchpas support + services.xserver.libinput.enable = true; + + # Enable CUPS to print documents. + services.printing.enable = true; + services.printing.drivers = [ + pkgs.gutenprint + pkgs.epson-escpr + ]; + + # set up my printer at home + hardware.printers.ensurePrinters = [ + { + description = "My private printer"; + deviceUri = "https://192.168.178.30:631/ipp/print"; + location = "Home"; + model = "epson-inkjet-printer-escpr/Epson-XP-322_323_325_Series-epson-escpr-en.ppd"; + name = "Home"; + } + ]; + + # setup the printers at work + #hardware.printers.ensurePrinters = [ + #{ + #description = "CC printer"; + #deviceUri = ""; + #location = "BAR/III51"; + #model = "Ricoh-MP_C307_PS.ppd"; + #name = "CC_small"; + #} + #{ + #description = "PD printer (A3)"; + #deviceUri = ""; + #location = "BAR/III71B"; + #model = "Ricoh-MP_C3004_PS.ppd"; + #name = "PD_Chair"; + #} + #]; + + # Enable sound. + sound.enable = true; + hardware.pulseaudio.enable = true; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.felix = { + createHome = true; + isNormalUser = true; + extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. + group = "users"; + home = "/home/felix"; + shell = pkgs.fish; + }; + + # allow user felix to run openconnect without password + security.sudo.extraRules = [ + { + users = [ "felix" ]; + commands = [ + { command = "${pkgs.openconnect}/bin/openconnect"; options = [ "NOPASSWD" ]; } + ]; + } + ]; + + # set up virtualization with virtualbox + virtualisation.virtualbox.host.enable = true; + # I'm gonna keep this disabled for the sake of my sanity + # virtualisation.virtualbox.host.enableExtensionPack = true; + users.extraGroups.vboxusers.members = [ "felix" ]; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + # basic command line tooling + wget + vim + w3m + htop + bat + lsd + ripgrep + sshfs + ncdu + scrot + tldr + unzip + # automatic detection of display changes + autorandr + # password management + pass + pinentry-curses + # mail + isync + msmtp + neomutt urlview + notmuch + # programming languages and compilers + rustup + # python3 + stack + gcc + gnumake + # I heard you like man pages? + man-pages + # git and friends + git + gitAndTools.delta + gitAndTools.gitui + # terminal, browsers, text editing + kitty + vscodium + typora + firefox + # time tracking + watson + # file managers + ranger + xfce.thunar + # document viewers + mupdf + pdfpc + zathura + # LaTeX + texlive.combined.scheme-full + # the eternal pain continues + libreoffice-fresh + # video and media applications + zoom-us + youtube-dl + ffmpeg-full + # messenger + tdesktop + # networking + openconnect + ]; + + # install fonts + fonts.fonts = with pkgs; [ + font-awesome + fira-code + fira-code-symbols + roboto + roboto-mono + roboto-slab + overpass + (nerdfonts.override { + fonts = [ "FiraCode" "DroidSansMono" "Hack" "SourceCodePro" "RobotoMono" ]; + }) + ]; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + programs.fish.enable = true; + programs.vim.defaultEditor = true; + + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + pinentryFlavor = "curses"; + }; + # List services that you want to enable: + + # Enable the OpenSSH daemon. + # services.openssh.enable = true; + + services.udev.packages = [ pkgs.libu2f-host ]; + # for SAMBA file shares + services.gvfs.enable = true; + + # use redshift + services.redshift.enable = true; + + # allow brightness control + services.illum.enable = true; + + # enable OpenVPN for connecting to the TUD network + services.openvpn.servers.tud = { + config = '' config /home/felix/.config/vpn/TUD.ovpn ''; + autoStart = false; #true; + updateResolvConf = true; + }; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # allow unfree licenced packges + nixpkgs.config.allowUnfree = true; + + # tmp workaround for rpy2 + # nixpkgs.config.allowBroken = true; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "20.09"; # Did you read the comment? + +} + diff --git a/entropy/nixos/extra/login.jpg b/entropy/nixos/extra/login.jpg new file mode 100644 index 0000000000000000000000000000000000000000..20e524b0fdea7839a993d112b8d437789e1a0dfb GIT binary patch literal 357898 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