about summary refs log tree commit diff stats
path: root/modules/home.legacy
diff options
context:
space:
mode:
Diffstat (limited to 'modules/home.legacy')
-rw-r--r--modules/home.legacy/conf/alacritty/default.nix30
-rw-r--r--modules/home.legacy/conf/alacritty/toml/base.toml16
-rw-r--r--modules/home.legacy/conf/alacritty/toml/bell.toml7
-rw-r--r--modules/home.legacy/conf/alacritty/toml/colorscheme.toml79
-rw-r--r--modules/home.legacy/conf/alacritty/toml/cursor.toml11
-rw-r--r--modules/home.legacy/conf/alacritty/toml/env.toml3
-rw-r--r--modules/home.legacy/conf/alacritty/toml/font.toml15
-rw-r--r--modules/home.legacy/conf/alacritty/toml/hints.toml25
-rw-r--r--modules/home.legacy/conf/alacritty/toml/keyboard_bindings.toml297
-rw-r--r--modules/home.legacy/conf/alacritty/toml/mouse.toml2
-rw-r--r--modules/home.legacy/conf/alacritty/toml/mouse_bindings.toml3
-rw-r--r--modules/home.legacy/conf/alacritty/toml/scrolling.toml3
-rw-r--r--modules/home.legacy/conf/alacritty/toml/selection.toml3
-rw-r--r--modules/home.legacy/conf/alacritty/toml/window.toml18
-rw-r--r--modules/home.legacy/conf/alacritty/yaml/base.yml17
-rw-r--r--modules/home.legacy/conf/alacritty/yaml/bell.yml42
-rw-r--r--modules/home.legacy/conf/alacritty/yaml/colors.yml147
-rw-r--r--modules/home.legacy/conf/alacritty/yaml/colorscheme.yml31
-rw-r--r--modules/home.legacy/conf/alacritty/yaml/cursor.yml43
-rw-r--r--modules/home.legacy/conf/alacritty/yaml/debug.yml29
-rw-r--r--modules/home.legacy/conf/alacritty/yaml/env.yml11
-rw-r--r--modules/home.legacy/conf/alacritty/yaml/font.yml73
-rw-r--r--modules/home.legacy/conf/alacritty/yaml/hints.yml77
-rw-r--r--modules/home.legacy/conf/alacritty/yaml/key_bindings.yml382
-rw-r--r--modules/home.legacy/conf/alacritty/yaml/mouse.yml11
-rw-r--r--modules/home.legacy/conf/alacritty/yaml/mouse_bindings.yml32
-rw-r--r--modules/home.legacy/conf/alacritty/yaml/scrolling.yml7
-rw-r--r--modules/home.legacy/conf/alacritty/yaml/selection.yml7
-rw-r--r--modules/home.legacy/conf/alacritty/yaml/shell.yml13
-rw-r--r--modules/home.legacy/conf/alacritty/yaml/window.yml89
-rw-r--r--modules/home.legacy/conf/beets/default.nix103
-rw-r--r--modules/home.legacy/conf/beets/plugins.nix67
-rw-r--r--modules/home.legacy/conf/beets/plugins/badfiles/default.nix13
-rw-r--r--modules/home.legacy/conf/beets/plugins/default.nix16
-rw-r--r--modules/home.legacy/conf/beets/plugins/duplicates/default.nix5
-rw-r--r--modules/home.legacy/conf/beets/plugins/fuzzy/default.nix6
-rw-r--r--modules/home.legacy/conf/beets/plugins/ihate/default.nix8
-rw-r--r--modules/home.legacy/conf/beets/plugins/inline/default.nix42
-rw-r--r--modules/home.legacy/conf/beets/plugins/lastgenre/default.nix7
-rw-r--r--modules/home.legacy/conf/beets/plugins/lyrics/default.nix6
-rw-r--r--modules/home.legacy/conf/beets/plugins/mbsubmit/default.nix9
-rw-r--r--modules/home.legacy/conf/beets/plugins/play/default.nix14
-rw-r--r--modules/home.legacy/conf/beets/plugins/replaygain/default.nix24
-rw-r--r--modules/home.legacy/conf/beets/plugins/smartplaylist/default.nix33
-rw-r--r--modules/home.legacy/conf/beets/plugins/xtractor/default.nix95
-rw-r--r--modules/home.legacy/conf/beets/replace_override.yaml10
-rw-r--r--modules/home.legacy/conf/btop/default.nix5
-rw-r--r--modules/home.legacy/conf/dconf/default.nix9
-rw-r--r--modules/home.legacy/conf/default.nix48
-rw-r--r--modules/home.legacy/conf/direnv/default.nix6
-rw-r--r--modules/home.legacy/conf/firefox/config/bookmarks/default.nix31
-rw-r--r--modules/home.legacy/conf/firefox/config/bookmarks/lib.nix49
-rw-r--r--modules/home.legacy/conf/firefox/config/chrome/userChrome.css41
-rw-r--r--modules/home.legacy/conf/firefox/config/extensions/extensions.json50
-rw-r--r--modules/home.legacy/conf/firefox/config/extensions/native_messaging_hosts/default.nix15
-rw-r--r--modules/home.legacy/conf/firefox/config/policies/default.nix146
-rw-r--r--modules/home.legacy/conf/firefox/config/prefs/default.nix21
-rw-r--r--modules/home.legacy/conf/firefox/config/prefs/override.js202
-rw-r--r--modules/home.legacy/conf/firefox/config/search/engines/default.nix84
-rw-r--r--modules/home.legacy/conf/firefox/config/search/engines/logos/arch_linux.svg1
-rw-r--r--modules/home.legacy/conf/firefox/config/search/engines/logos/brave.svg25
-rw-r--r--modules/home.legacy/conf/firefox/config/search/engines/logos/google_scholar.icobin0 -> 3871 bytes
-rw-r--r--modules/home.legacy/conf/firefox/config/search/engines/logos/rust_std.svg47
-rw-r--r--modules/home.legacy/conf/firefox/config/search/engines/logos/rust_tokio.pngbin0 -> 3551 bytes
-rw-r--r--modules/home.legacy/conf/firefox/config/search/engines/logos/wikipedia.svg1
-rw-r--r--modules/home.legacy/conf/firefox/default.nix134
-rw-r--r--modules/home.legacy/conf/firefox/package.nix30
-rw-r--r--modules/home.legacy/conf/firefox/scripts/default.nix29
-rwxr-xr-xmodules/home.legacy/conf/firefox/scripts/extract_cookies.sh77
-rwxr-xr-xmodules/home.legacy/conf/firefox/scripts/unzip_mozlz4.py44
-rwxr-xr-xmodules/home.legacy/conf/firefox/scripts/update_extensions.sh18
-rw-r--r--modules/home.legacy/conf/gammastep/default.nix29
-rw-r--r--modules/home.legacy/conf/git/aliases.nix82
-rw-r--r--modules/home.legacy/conf/git/default.nix96
-rw-r--r--modules/home.legacy/conf/git/git_ignore.git4
-rw-r--r--modules/home.legacy/conf/git/git_template.git66
-rw-r--r--modules/home.legacy/conf/gpg/default.nix67
-rw-r--r--modules/home.legacy/conf/gpg/keys/key_1.asc26
-rw-r--r--modules/home.legacy/conf/gpg/keys/key_2.asc794
-rw-r--r--modules/home.legacy/conf/gtk/default.nix58
-rw-r--r--modules/home.legacy/conf/himalaya/default.nix8
-rw-r--r--modules/home.legacy/conf/hyfetch/default.nix20
-rw-r--r--modules/home.legacy/conf/iamb/config.json9
-rw-r--r--modules/home.legacy/conf/iamb/default.nix3
-rw-r--r--modules/home.legacy/conf/keepassxc/default.nix7
-rw-r--r--modules/home.legacy/conf/keepassxc/keepassxc.ini58
-rw-r--r--modules/home.legacy/conf/latexindent/default.nix8
-rw-r--r--modules/home.legacy/conf/latexindent/indentconfig.yaml2
-rw-r--r--modules/home.legacy/conf/latexindent/mysettings.yaml672
-rw-r--r--modules/home.legacy/conf/less/command.less127
-rw-r--r--modules/home.legacy/conf/less/default.nix18
-rw-r--r--modules/home.legacy/conf/less/env.less2
-rw-r--r--modules/home.legacy/conf/less/line-edit.less29
-rw-r--r--modules/home.legacy/conf/lf/colors184
-rw-r--r--modules/home.legacy/conf/lf/commands/default.nix227
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/archive.sh77
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/broot_jump.sh25
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/chmod.sh24
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/clear_trash.sh8
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/cow_cp.sh105
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/dl_file.sh43
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/dragon.sh20
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/dragon_individual.sh20
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/dragon_stay.sh20
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/execute.sh19
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/follow_link.sh19
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/fzf_jump.sh24
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/go_project_root.sh22
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/mk_dir.sh32
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/mk_file.sh32
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/mk_file_and_edit.sh33
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/mk_ln.sh45
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/mk_scr_default.sh38
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/mk_scr_temp.sh38
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/restore_trash.sh16
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/set_wall_paper.sh19
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/stripspace.sh40
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/trash.sh37
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/unarchive.sh36
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/view_file.sh26
-rw-r--r--modules/home.legacy/conf/lf/default.nix59
-rw-r--r--modules/home.legacy/conf/lf/icons360
-rw-r--r--modules/home.legacy/conf/lf/keybindings/default.nix94
-rw-r--r--modules/home.legacy/conf/mail/accounts/benedikt.nix48
-rw-r--r--modules/home.legacy/conf/mail/accounts/soispha.nix49
-rw-r--r--modules/home.legacy/conf/mail/default.nix15
-rw-r--r--modules/home.legacy/conf/mako/default.nix44
-rw-r--r--modules/home.legacy/conf/mbsync/default.nix17
-rw-r--r--modules/home.legacy/conf/mpd/default.nix50
-rw-r--r--modules/home.legacy/conf/mpd/mpdconf.example418
-rw-r--r--modules/home.legacy/conf/mpv/default.nix10
-rw-r--r--modules/home.legacy/conf/mumble/Mumble.conf67
-rw-r--r--modules/home.legacy/conf/mumble/default.nix3
-rw-r--r--modules/home.legacy/conf/neomutt/default.nix168
-rw-r--r--modules/home.legacy/conf/nix-index/default.nix14
-rw-r--r--modules/home.legacy/conf/npm/.npmrc6
-rw-r--r--modules/home.legacy/conf/npm/default.nix7
-rw-r--r--modules/home.legacy/conf/nvim/autocmds/default.nix124
-rw-r--r--modules/home.legacy/conf/nvim/clipboard/default.nix7
-rw-r--r--modules/home.legacy/conf/nvim/default.nix55
-rw-r--r--modules/home.legacy/conf/nvim/files/default.nix9
-rw-r--r--modules/home.legacy/conf/nvim/files/ftplugin/tex.lua57
-rw-r--r--modules/home.legacy/conf/nvim/mappings/default.nix282
-rw-r--r--modules/home.legacy/conf/nvim/options/default.nix105
-rw-r--r--modules/home.legacy/conf/nvim/plgs/colorscheme/default.nix17
-rw-r--r--modules/home.legacy/conf/nvim/plgs/colorscheme/lua/mk_todos_readable.lua16
-rw-r--r--modules/home.legacy/conf/nvim/plgs/colorscheme/lua/nightfox.lua44
-rw-r--r--modules/home.legacy/conf/nvim/plgs/comment-nvim/default.nix41
-rw-r--r--modules/home.legacy/conf/nvim/plgs/debugprint/default.nix70
-rw-r--r--modules/home.legacy/conf/nvim/plgs/debugprint/lua/debugprint.lua3
-rw-r--r--modules/home.legacy/conf/nvim/plgs/default.nix33
-rw-r--r--modules/home.legacy/conf/nvim/plgs/femaco/default.nix23
-rw-r--r--modules/home.legacy/conf/nvim/plgs/femaco/lua/femaco.lua50
-rw-r--r--modules/home.legacy/conf/nvim/plgs/flatten-nvim/default.nix20
-rw-r--r--modules/home.legacy/conf/nvim/plgs/flatten-nvim/lua/flatten-nvim.lua106
-rw-r--r--modules/home.legacy/conf/nvim/plgs/goto-preview/default.nix47
-rw-r--r--modules/home.legacy/conf/nvim/plgs/goto-preview/lua/goto-preview.lua21
-rw-r--r--modules/home.legacy/conf/nvim/plgs/harpoon/default.nix94
-rw-r--r--modules/home.legacy/conf/nvim/plgs/leap/default.nix59
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lf-nvim/default.nix18
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lf-nvim/lua/lf-nvim.lua43
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lsp-progress-nvim/default.nix50
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lsp-progress-nvim/lua/lsp-progress-nvim.lua150
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lsp/default.nix29
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lsp/keymaps/default.nix70
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lsp/servers/default.nix15
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/bashls.nix5
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/ccls.nix5
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/ltex.nix39
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/lua-ls.nix8
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/nil-ls.nix10
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/openscad.nix17
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/pylyzer.nix12
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/quick-lint-js.nix15
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/ruff-lsp.nix10
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/rust-analyzer.nix17
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/texlab.nix7
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lspkind/default.nix6
-rw-r--r--modules/home.legacy/conf/nvim/plgs/ltex_extra/default.nix9
-rw-r--r--modules/home.legacy/conf/nvim/plgs/ltex_extra/lua/ltex_extra.lua16
-rw-r--r--modules/home.legacy/conf/nvim/plgs/lualine/default.nix121
-rw-r--r--modules/home.legacy/conf/nvim/plgs/luasnip/default.nix20
-rw-r--r--modules/home.legacy/conf/nvim/plgs/luasnip/lua/luasnip.lua7
-rw-r--r--modules/home.legacy/conf/nvim/plgs/luasnip/lua/snippets/all.lua182
-rw-r--r--modules/home.legacy/conf/nvim/plgs/luasnip/lua/snippets/html/html.lua108
-rw-r--r--modules/home.legacy/conf/nvim/plgs/luasnip/lua/snippets/tex/delimiter.lua34
-rw-r--r--modules/home.legacy/conf/nvim/plgs/luasnip/lua/snippets/tex/greek.lua37
-rw-r--r--modules/home.legacy/conf/nvim/plgs/neorg/default.nix57
-rw-r--r--modules/home.legacy/conf/nvim/plgs/nvim-cmp/default.nix54
-rw-r--r--modules/home.legacy/conf/nvim/plgs/nvim-lint/default.nix15
-rw-r--r--modules/home.legacy/conf/nvim/plgs/nvim-lint/lua/nvim-lint.lua20
-rw-r--r--modules/home.legacy/conf/nvim/plgs/raw_plugins/default.nix11
-rw-r--r--modules/home.legacy/conf/nvim/plgs/telescope/default.nix17
-rw-r--r--modules/home.legacy/conf/nvim/plgs/telescope/defaults/default.nix30
-rw-r--r--modules/home.legacy/conf/nvim/plgs/telescope/extensions/bibtex/default.nix17
-rw-r--r--modules/home.legacy/conf/nvim/plgs/telescope/extensions/default.nix9
-rw-r--r--modules/home.legacy/conf/nvim/plgs/telescope/extensions/frecency/default.nix22
-rw-r--r--modules/home.legacy/conf/nvim/plgs/telescope/extensions/fzy-native/default.nix5
-rw-r--r--modules/home.legacy/conf/nvim/plgs/telescope/extensions/rooter/default.nix7
-rw-r--r--modules/home.legacy/conf/nvim/plgs/telescope/extensions/rooter/lua/rooter.lua84
-rw-r--r--modules/home.legacy/conf/nvim/plgs/telescope/extensions/symbols/default.nix52
-rw-r--r--modules/home.legacy/conf/nvim/plgs/telescope/keymaps/default.nix10
-rw-r--r--modules/home.legacy/conf/nvim/plgs/todo-comments/default.nix51
-rw-r--r--modules/home.legacy/conf/nvim/plgs/treesitter/default.nix59
-rw-r--r--modules/home.legacy/conf/nvim/plgs/vim-tex/default.nix69
-rw-r--r--modules/home.legacy/conf/nvim/plgs/which-key/default.nix5
-rw-r--r--modules/home.legacy/conf/prusa_slicer/default.nix3
-rw-r--r--modules/home.legacy/conf/prusa_slicer/prusa_slicer.ini65
-rw-r--r--modules/home.legacy/conf/python/default.nix6
-rw-r--r--modules/home.legacy/conf/python/pythonrc.py33
-rw-r--r--modules/home.legacy/conf/rclone/default.nix7
-rw-r--r--modules/home.legacy/conf/rclone/rclone.conf10
-rw-r--r--modules/home.legacy/conf/rofi/default.nix10
-rw-r--r--modules/home.legacy/conf/rofi/nord-twoLines.rasi101
-rw-r--r--modules/home.legacy/conf/ssh/default.nix16
-rw-r--r--modules/home.legacy/conf/starship/default.nix119
-rw-r--r--modules/home.legacy/conf/swayidle/config5
-rw-r--r--modules/home.legacy/conf/swayidle/default.nix29
-rw-r--r--modules/home.legacy/conf/swaylock/GTDcanonical.pngbin0 -> 34659 bytes
-rw-r--r--modules/home.legacy/conf/swaylock/commands.jpgbin0 -> 629695 bytes
-rw-r--r--modules/home.legacy/conf/swaylock/default.nix10
-rw-r--r--modules/home.legacy/conf/swaylock/gnu.pngbin0 -> 327518 bytes
-rw-r--r--modules/home.legacy/conf/taskwarrior/default.nix125
-rw-r--r--modules/home.legacy/conf/taskwarrior/firefox/default.nix32
-rw-r--r--modules/home.legacy/conf/taskwarrior/hooks/default.nix114
-rwxr-xr-xmodules/home.legacy/conf/taskwarrior/hooks/scripts/on-add_enforce-policies.sh41
-rwxr-xr-xmodules/home.legacy/conf/taskwarrior/hooks/scripts/on-add_sync-git-repo.sh42
-rwxr-xr-xmodules/home.legacy/conf/taskwarrior/hooks/scripts/on-modify_sync-git-repo.sh43
-rwxr-xr-xmodules/home.legacy/conf/taskwarrior/hooks/scripts/on-modify_track-timewarrior.py94
-rwxr-xr-xmodules/home.legacy/conf/taskwarrior/hooks/scripts/on-modify_track-total-active-time.py148
-rw-r--r--modules/home.legacy/conf/taskwarrior/nord.theme100
-rw-r--r--modules/home.legacy/conf/taskwarrior/projects/default.nix119
-rw-r--r--modules/home.legacy/conf/timewarrior/default.nix22
-rw-r--r--modules/home.legacy/conf/timewarrior/nord.theme25
-rw-r--r--modules/home.legacy/conf/tridactyl/config.vim47
-rw-r--r--modules/home.legacy/conf/tridactyl/default.nix3
-rw-r--r--modules/home.legacy/conf/unison/default.nix187
-rw-r--r--modules/home.legacy/conf/xdg/default.nix63
-rwxr-xr-xmodules/home.legacy/conf/xdg/url_handler.sh18
-rw-r--r--modules/home.legacy/conf/xdg/xdg_vars.nix26
-rw-r--r--modules/home.legacy/conf/yambar/config/config.yml243
-rw-r--r--modules/home.legacy/conf/yambar/config/laptop.yml243
-rw-r--r--modules/home.legacy/conf/yambar/default.nix50
-rwxr-xr-xmodules/home.legacy/conf/yambar/scripts/disk.sh21
-rwxr-xr-xmodules/home.legacy/conf/yambar/scripts/mpd_song_name.sh21
-rwxr-xr-xmodules/home.legacy/conf/yambar/scripts/network.sh47
-rwxr-xr-xmodules/home.legacy/conf/yambar/scripts/sound-volume.sh20
-rw-r--r--modules/home.legacy/conf/yt/config.toml2
-rw-r--r--modules/home.legacy/conf/yt/default.nix5
-rw-r--r--modules/home.legacy/conf/yt/input.conf9
-rw-r--r--modules/home.legacy/conf/yt/mpv.conf2
-rw-r--r--modules/home.legacy/conf/ytcc/default.nix11
-rw-r--r--modules/home.legacy/conf/ytcc/ytcc.conf37
-rw-r--r--modules/home.legacy/conf/zsh/config/command_not_found.sh64
-rw-r--r--modules/home.legacy/conf/zsh/config/command_not_found_insult.sh298
-rw-r--r--modules/home.legacy/conf/zsh/config/custom_cursor.zsh42
-rw-r--r--modules/home.legacy/conf/zsh/config/zsh-init.zsh42
-rw-r--r--modules/home.legacy/conf/zsh/default.nix103
-rw-r--r--modules/home.legacy/default.nix60
-rw-r--r--modules/home.legacy/files/default.nix6
-rw-r--r--modules/home.legacy/files/manifest_json/default.nix16
-rw-r--r--modules/home.legacy/files/manifest_json/profile/manifest.json4
-rw-r--r--modules/home.legacy/files/wallpaper/abstract-nord.pngbin0 -> 140219 bytes
-rw-r--r--modules/home.legacy/files/wallpaper/default.nix14
-rw-r--r--modules/home.legacy/impermanence/default.nix29
-rw-r--r--modules/home.legacy/pkgs/default.nix240
-rw-r--r--modules/home.legacy/wms/default.nix7
-rw-r--r--modules/home.legacy/wms/plasma/default.nix5
-rw-r--r--modules/home.legacy/wms/river/default.nix76
-rwxr-xr-xmodules/home.legacy/wms/river/init.sh80
-rw-r--r--modules/home.legacy/wms/river/res/keys.ron58
-rw-r--r--modules/home.legacy/wms/river/res/moonlander.ron64
-rw-r--r--modules/home.legacy/wms/sway/default.nix16
273 files changed, 14472 insertions, 0 deletions
diff --git a/modules/home.legacy/conf/alacritty/default.nix b/modules/home.legacy/conf/alacritty/default.nix
new file mode 100644
index 00000000..c1cf5e44
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/default.nix
@@ -0,0 +1,30 @@
+{lib, ...}: let
+  config_file = ''
+    ${lib.strings.fileContents ./toml/base.toml}
+    ${lib.strings.fileContents ./toml/bell.toml}
+    ${lib.strings.fileContents ./toml/colorscheme.toml}
+    ${lib.strings.fileContents ./toml/cursor.toml}
+    ${lib.strings.fileContents ./toml/env.toml}
+    ${lib.strings.fileContents ./toml/font.toml}
+    ${lib.strings.fileContents ./toml/hints.toml}
+    ${lib.strings.fileContents ./toml/keyboard_bindings.toml}
+    ${lib.strings.fileContents ./toml/mouse.toml}
+    ${lib.strings.fileContents ./toml/mouse_bindings.toml}
+    ${lib.strings.fileContents ./toml/scrolling.toml}
+    ${lib.strings.fileContents ./toml/selection.toml}
+    ${lib.strings.fileContents ./toml/window.toml}
+  '';
+in {
+  home.sessionVariables = {
+    # This is **not** the TERM variable but a special one to signify my favorite terminal.
+    TERMINAL = "alacritty";
+
+    # These two here should be set by alacritty at start-up
+    # TERM = "alacritty";
+    # COLORTERM = "truecolor";
+  };
+  programs.alacritty = {
+    enable = true;
+  };
+  xdg.configFile."alacritty/alacritty.toml".text = config_file;
+}
diff --git a/modules/home.legacy/conf/alacritty/toml/base.toml b/modules/home.legacy/conf/alacritty/toml/base.toml
new file mode 100644
index 00000000..93c9942f
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/toml/base.toml
@@ -0,0 +1,16 @@
+# Configuration for Alacritty, the GPU enhanced terminal emulator.
+
+# If `true`, bold text is drawn using the bright color variants.
+#draw_bold_text_with_bright_colors: true # TODO:
+
+# Live config reload (changes require restart)
+live_config_reload = true
+
+# Startup directory
+#
+# Directory the shell is started in. If this is unset, or `None`, the working
+# directory of the parent process will be used.
+#working_directory: None
+
+# Offer IPC using `alacritty msg` (unix only)
+ipc_socket = true
diff --git a/modules/home.legacy/conf/alacritty/toml/bell.toml b/modules/home.legacy/conf/alacritty/toml/bell.toml
new file mode 100644
index 00000000..912d08e3
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/toml/bell.toml
@@ -0,0 +1,7 @@
+# Bell
+#
+# The bell is rung every time the BEL control character is received.
+[bell]
+# Duration of the visual bell flash in milliseconds. A `duration` of `0` will
+# disable the visual bell animation.
+duration = 0
diff --git a/modules/home.legacy/conf/alacritty/toml/colorscheme.toml b/modules/home.legacy/conf/alacritty/toml/colorscheme.toml
new file mode 100644
index 00000000..f98a5b91
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/toml/colorscheme.toml
@@ -0,0 +1,79 @@
+# Nightfox Alacritty Colors
+## name: carbonfox
+## upstream: https://github.com/edeneast/nightfox.nvim/raw/main/extra/carbonfox/alacritty.toml
+
+[colors.primary]
+background = "#161616"
+foreground = "#f2f4f8"
+dim_foreground = "#b6b8bb"
+bright_foreground = "#f9fbff"
+
+[colors.cursor]
+text = "#f2f4f8"
+cursor = "#b6b8bb"
+
+[colors.vi_mode_cursor]
+text = "#f2f4f8"
+cursor = "#33b1ff"
+
+[colors.search.matches]
+foreground = "#f2f4f8"
+background = "#525253"
+
+[colors.search.focused_match]
+foreground = "#f2f4f8"
+background = "#3ddbd9"
+
+[colors.footer_bar]
+foreground = "#f2f4f8"
+background = "#353535"
+
+[colors.hints.start]
+foreground = "#f2f4f8"
+background = "#3ddbd9"
+
+[colors.hints.end]
+foreground = "#f2f4f8"
+background = "#353535"
+
+[colors.selection]
+text = "#f2f4f8"
+background = "#2a2a2a"
+
+[colors.normal]
+black = "#282828"
+red = "#ee5396"
+green = "#25be6a"
+yellow = "#08bdba"
+blue = "#78a9ff"
+magenta = "#be95ff"
+cyan = "#33b1ff"
+white = "#dfdfe0"
+
+[colors.bright]
+black = "#484848"
+red = "#f16da6"
+green = "#46c880"
+yellow = "#2dc7c4"
+blue = "#8cb6ff"
+magenta = "#c8a5ff"
+cyan = "#52bdff"
+white = "#e4e4e5"
+
+[colors.dim]
+black = "#222222"
+red = "#ca4780"
+green = "#1fa25a"
+yellow = "#07a19e"
+blue = "#6690d9"
+magenta = "#a27fd9"
+cyan = "#2b96d9"
+white = "#bebebe"
+
+[[colors.indexed_colors]]
+index = 16
+color = "#3ddbd9"
+
+[[colors.indexed_colors]]
+index = 17
+color = "#ff7eb6"
diff --git a/modules/home.legacy/conf/alacritty/toml/cursor.toml b/modules/home.legacy/conf/alacritty/toml/cursor.toml
new file mode 100644
index 00000000..d9cb93f4
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/toml/cursor.toml
@@ -0,0 +1,11 @@
+[cursor]
+blink_interval = 750
+blink_timeout = 5
+thickness = 0.15
+unfocused_hollow = true
+vi_mode_style = "None"
+
+# Cursor style
+[cursor.style]
+blinking = "On"
+shape = "Beam"
diff --git a/modules/home.legacy/conf/alacritty/toml/env.toml b/modules/home.legacy/conf/alacritty/toml/env.toml
new file mode 100644
index 00000000..fdd4e5d1
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/toml/env.toml
@@ -0,0 +1,3 @@
+[env]
+TERM = "alacritty"
+COLORTERM = "truecolor"
diff --git a/modules/home.legacy/conf/alacritty/toml/font.toml b/modules/home.legacy/conf/alacritty/toml/font.toml
new file mode 100644
index 00000000..dd18a6fb
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/toml/font.toml
@@ -0,0 +1,15 @@
+[font]
+builtin_box_drawing = true
+size = 12.0
+
+[font.glyph_offset]
+x = -1
+y = -1
+
+[font.normal]
+family = "SauceCodePro Nerd Font Mono"
+style = "Regular"
+
+[font.offset]
+x = -1
+y = -1
diff --git a/modules/home.legacy/conf/alacritty/toml/hints.toml b/modules/home.legacy/conf/alacritty/toml/hints.toml
new file mode 100644
index 00000000..31d91a37
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/toml/hints.toml
@@ -0,0 +1,25 @@
+[hints]
+alphabet = "jfkdls;ahgurieowpq"
+
+[[hints.enabled]]
+command = "xdg-open"                                                                                                                                      # On Linux/BSD
+hyperlinks = true
+post_processing = true
+persist = false
+mouse.enabled = true
+binding = { key = "U", mods = "Control|Shift" }
+regex = "(ipfs:|ipns:|magnet:|mailto:|gemini://|gopher://|https://|http://|news:|file:|git://|ssh:|ftp://)[^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"
+
+
+[[hints.enabled]]
+action = "Paste"
+post_processing = false
+binding = { key = "T", mods = "Control|Shift" }
+regex = '''([^ '"`=:\[\(]*/)([^/: '"`\)\]]*)'''
+
+
+[[hints.enabled]]
+action = "Paste"
+post_processing = false
+binding = { key = "H", mods = "Control|Shift" }
+regex = '([a-z0-9]{7,40})\s'
diff --git a/modules/home.legacy/conf/alacritty/toml/keyboard_bindings.toml b/modules/home.legacy/conf/alacritty/toml/keyboard_bindings.toml
new file mode 100644
index 00000000..8e0b1e13
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/toml/keyboard_bindings.toml
@@ -0,0 +1,297 @@
+[[keyboard.bindings]]
+action = "Paste"
+key = "P"
+mods = "Control"
+
+[[keyboard.bindings]]
+action = "Paste"
+key = "Insert"
+mods = "Shift"
+
+[[keyboard.bindings]]
+chars = "gc"
+key = "Slash"
+mods = "Control"
+
+[[keyboard.bindings]]
+action = "Copy"
+key = "Y"
+mods = "Control"
+
+[[keyboard.bindings]]
+action = "ResetFontSize"
+key = "Key0"
+mods = "Control"
+
+[[keyboard.bindings]]
+action = "IncreaseFontSize"
+key = "Equals"
+mods = "Control"
+
+[[keyboard.bindings]]
+action = "IncreaseFontSize"
+key = "Plus"
+mods = "Control"
+
+[[keyboard.bindings]]
+action = "DecreaseFontSize"
+key = "Minus"
+mods = "Control"
+
+[[keyboard.bindings]]
+action = "ToggleViMode"
+key = "Space"
+mods = "Control"
+
+[[keyboard.bindings]]
+action = "ScrollToBottom"
+key = "Space"
+mode = "Vi"
+mods = "Control"
+
+[[keyboard.bindings]]
+action = "ScrollToBottom"
+key = "I"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "ToggleViMode"
+key = "I"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "ScrollToBottom"
+key = "C"
+mode = "Vi"
+mods = "Control"
+
+[[keyboard.bindings]]
+action = "ToggleViMode"
+key = "C"
+mode = "Vi"
+mods = "Control"
+
+[[keyboard.bindings]]
+action = "ClearSelection"
+key = "Escape"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "ScrollLineUp"
+key = "Y"
+mode = "Vi"
+mods = "Control"
+
+[[keyboard.bindings]]
+action = "ScrollLineDown"
+key = "E"
+mode = "Vi"
+mods = "Control"
+
+[[keyboard.bindings]]
+action = "ScrollToTop"
+key = "G"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "ScrollToBottom"
+key = "G"
+mode = "Vi"
+mods = "Shift"
+
+[[keyboard.bindings]]
+action = "ScrollPageUp"
+key = "B"
+mode = "Vi"
+mods = "Control"
+
+[[keyboard.bindings]]
+action = "ScrollPageDown"
+key = "F"
+mode = "Vi"
+mods = "Control"
+
+[[keyboard.bindings]]
+action = "ScrollHalfPageUp"
+key = "U"
+mode = "Vi"
+mods = "Control"
+
+[[keyboard.bindings]]
+action = "ScrollHalfPageDown"
+key = "D"
+mode = "Vi"
+mods = "Control"
+
+[[keyboard.bindings]]
+action = "Copy"
+key = "Y"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "ClearSelection"
+key = "Y"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "ToggleNormalSelection"
+key = "V"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "ToggleLineSelection"
+key = "V"
+mode = "Vi"
+mods = "Shift"
+
+[[keyboard.bindings]]
+action = "ToggleBlockSelection"
+key = "V"
+mode = "Vi"
+mods = "Control"
+
+[[keyboard.bindings]]
+action = "ToggleSemanticSelection"
+key = "V"
+mode = "Vi"
+mods = "Alt"
+
+[[keyboard.bindings]]
+action = "Open"
+key = "Return"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "Up"
+key = "K"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "Down"
+key = "J"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "Left"
+key = "H"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "Right"
+key = "L"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "Up"
+key = "Up"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "Down"
+key = "Down"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "Left"
+key = "Left"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "Right"
+key = "Right"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "First"
+key = "Key0"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "Last"
+key = "Key4"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "FirstOccupied"
+key = "Key6"
+mode = "Vi"
+mods = "Shift"
+
+[[keyboard.bindings]]
+action = "High"
+key = "H"
+mode = "Vi"
+mods = "Shift"
+
+[[keyboard.bindings]]
+action = "Middle"
+key = "M"
+mode = "Vi"
+mods = "Shift"
+
+[[keyboard.bindings]]
+action = "Low"
+key = "L"
+mode = "Vi"
+mods = "Shift"
+
+[[keyboard.bindings]]
+action = "SemanticLeft"
+key = "B"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "SemanticRight"
+key = "W"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "SemanticRightEnd"
+key = "E"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "WordLeft"
+key = "B"
+mode = "Vi"
+mods = "Shift"
+
+[[keyboard.bindings]]
+action = "WordRight"
+key = "W"
+mode = "Vi"
+mods = "Shift"
+
+[[keyboard.bindings]]
+action = "WordRightEnd"
+key = "E"
+mode = "Vi"
+mods = "Shift"
+
+[[keyboard.bindings]]
+action = "Bracket"
+key = "Key5"
+mode = "Vi"
+mods = "Shift"
+
+[[keyboard.bindings]]
+action = "SearchForward"
+key = "Slash"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "SearchBackward"
+key = "Slash"
+mode = "Vi"
+mods = "Shift"
+
+[[keyboard.bindings]]
+action = "SearchNext"
+key = "N"
+mode = "Vi"
+
+[[keyboard.bindings]]
+action = "SearchPrevious"
+key = "N"
+mode = "Vi"
+mods = "Shift"
diff --git a/modules/home.legacy/conf/alacritty/toml/mouse.toml b/modules/home.legacy/conf/alacritty/toml/mouse.toml
new file mode 100644
index 00000000..eba68edf
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/toml/mouse.toml
@@ -0,0 +1,2 @@
+[mouse]
+hide_when_typing = false
diff --git a/modules/home.legacy/conf/alacritty/toml/mouse_bindings.toml b/modules/home.legacy/conf/alacritty/toml/mouse_bindings.toml
new file mode 100644
index 00000000..1b281748
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/toml/mouse_bindings.toml
@@ -0,0 +1,3 @@
+[[mouse.bindings]]
+action = "Copy"
+mouse = "Middle"
diff --git a/modules/home.legacy/conf/alacritty/toml/scrolling.toml b/modules/home.legacy/conf/alacritty/toml/scrolling.toml
new file mode 100644
index 00000000..ed7c22cf
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/toml/scrolling.toml
@@ -0,0 +1,3 @@
+[scrolling]
+history = 10000
+multiplier = 3
diff --git a/modules/home.legacy/conf/alacritty/toml/selection.toml b/modules/home.legacy/conf/alacritty/toml/selection.toml
new file mode 100644
index 00000000..60ea0495
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/toml/selection.toml
@@ -0,0 +1,3 @@
+[selection]
+save_to_clipboard = false
+semantic_escape_chars = ",│`|:\"' ()[]{}<>\t"
diff --git a/modules/home.legacy/conf/alacritty/toml/window.toml b/modules/home.legacy/conf/alacritty/toml/window.toml
new file mode 100644
index 00000000..123b5b7a
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/toml/window.toml
@@ -0,0 +1,18 @@
+[window]
+decorations = "none"
+decorations_theme_variant = "None"
+dynamic_title = true
+opacity = 0.9
+startup_mode = "Windowed"
+title = "Alacritty"
+[window.class]
+general = "Alacritty"
+instance = "Alacritty"
+
+[window.dimensions]
+columns = 0
+lines = 0
+
+[window.padding]
+x = 5
+y = 5
diff --git a/modules/home.legacy/conf/alacritty/yaml/base.yml b/modules/home.legacy/conf/alacritty/yaml/base.yml
new file mode 100644
index 00000000..0791a60f
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/yaml/base.yml
@@ -0,0 +1,17 @@
+---
+# Configuration for Alacritty, the GPU enhanced terminal emulator.
+
+# If `true`, bold text is drawn using the bright color variants.
+#draw_bold_text_with_bright_colors: true # TODO:
+
+# Live config reload (changes require restart)
+live_config_reload: true
+
+# Startup directory
+#
+# Directory the shell is started in. If this is unset, or `None`, the working
+# directory of the parent process will be used.
+#working_directory: None
+
+# Offer IPC using `alacritty msg` (unix only)
+ipc_socket: true
diff --git a/modules/home.legacy/conf/alacritty/yaml/bell.yml b/modules/home.legacy/conf/alacritty/yaml/bell.yml
new file mode 100644
index 00000000..bd071aeb
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/yaml/bell.yml
@@ -0,0 +1,42 @@
+# Bell
+#
+# The bell is rung every time the BEL control character is received.
+bell:
+  # Visual Bell Animation
+  #
+  # Animation effect for flashing the screen when the visual bell is rung.
+  #
+  # Values for `animation`:
+  #   - Ease
+  #   - EaseOut
+  #   - EaseOutSine
+  #   - EaseOutQuad
+  #   - EaseOutCubic
+  #   - EaseOutQuart
+  #   - EaseOutQuint
+  #   - EaseOutExpo
+  #   - EaseOutCirc
+  #   - Linear
+  #animation: EaseOutExpo
+
+  # Duration of the visual bell flash in milliseconds. A `duration` of `0` will
+  # disable the visual bell animation.
+  duration: 0
+
+  # Visual bell animation color.
+  #color: '#ffffff'
+
+  # Bell Command
+  #
+  # This program is executed whenever the bell is rung.
+  #
+  # When set to `command: None`, no command will be executed.
+  #
+  # Example:
+  #   command:
+  #     program: notify-send
+  #     args: ["Hello, World!"]
+  #
+  # command:
+  #   program: notify-send
+  #   args: ["The bell in alacritty was rung!"]
diff --git a/modules/home.legacy/conf/alacritty/yaml/colors.yml b/modules/home.legacy/conf/alacritty/yaml/colors.yml
new file mode 100644
index 00000000..899c660a
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/yaml/colors.yml
@@ -0,0 +1,147 @@
+# Colors (Tomorrow Night)
+colors:
+  # Default colors
+  primary:
+    background: '#191919'
+    foreground: '#d8dee9'
+
+    # Bright and dim foreground colors
+    #
+    # The dimmed foreground color is calculated automatically if it is not
+    # present. If the bright foreground color is not set, or
+    # `draw_bold_text_with_bright_colors` is `false`, the normal foreground
+    # color will be used.
+    #dim_foreground: '#828482'
+    #bright_foreground: '#eaeaea'
+
+  # Cursor colors
+  #
+  # Colors which should be used to draw the terminal cursor.
+  #
+  # Allowed values are CellForeground/CellBackground, which reference the
+  # affected cell, or hexadecimal colors like #ff00ff.
+  cursor:
+    text: '#191919'
+    cursor: '#d8dee9'
+
+  # Vi mode cursor colors
+  #
+  # Colors for the cursor when the vi mode is active.
+  #
+  # Allowed values are CellForeground/CellBackground, which reference the
+  # affected cell, or hexadecimal colors like #ff00ff.
+  vi_mode_cursor:
+    text: CellBackground
+    cursor: CellForeground
+
+  # Search colors
+  #
+  # Colors used for the search bar and match highlighting.
+  search:
+    # Allowed values are CellForeground/CellBackground, which reference the
+    # affected cell, or hexadecimal colors like #ff00ff.
+    matches:
+      foreground: '#000000'
+      background: '#ffffff'
+    focused_match:
+      foreground: '#ffffff'
+      background: '#000000'
+
+  # Keyboard hints
+  hints:
+    # First character in the hint label
+    #
+    # Allowed values are CellForeground/CellBackground, which reference the
+    # affected cell, or hexadecimal colors like #ff00ff.
+    start:
+      foreground: '#1d1f21'
+      background: '#e9ff5e'
+
+    # All characters after the first one in the hint label
+    #
+    # Allowed values are CellForeground/CellBackground, which reference the
+    # affected cell, or hexadecimal colors like #ff00ff.
+    end:
+      foreground: '#e9ff5e'
+      background: '#1d1f21'
+
+  # Line indicator
+  #
+  # Color used for the indicator displaying the position in history during
+  # search and vi mode.
+  #
+  # By default, these will use the opposing primary color.
+  #line_indicator:
+  #  foreground: None
+  #  background: None
+
+  # Footer bar
+  #
+  # Color used for the footer bar on the bottom, used by search regex input,
+  # hyperlink URI preview, etc.
+  #
+  footer_bar:
+    background: '#c5c8c6'
+    foreground: '#1d1f21'
+
+  # Selection colors
+  #
+  # Colors which should be used to draw the selection area.
+  #
+  # Allowed values are CellForeground/CellBackground, which reference the
+  # affected cell, or hexadecimal colors like #ff00ff.
+  selection:
+    text: '#191919'
+    background: '#d8dee9'
+
+  # Normal colors
+  normal:
+    black: '#191919'
+    red: '#b02626'
+    green: '#40a62f'
+    yellow: '#f2e635'
+    blue: '#314ad0'
+    magenta: '#b30ad0'
+    cyan: '#32d0fc'
+    white: '#acadb1'
+
+  # Bright colors
+  bright:
+    black: '#36393d'
+    red: '#ce2727'
+    green: '#47c930'
+    yellow: '#fff138'
+    blue: '#2e4bea'
+    magenta: '#cc15ed'
+    cyan: '#54d9ff'
+    white: '#dbdbdb'
+
+  # Dim colors
+  #
+  # If the dim colors are not set, they will be calculated automatically based
+  # on the `normal` colors.
+  dim:
+    black: '#676f78'
+    red: '#b55454'
+    green: '#78a670'
+    yellow: '#faf380'
+    blue: '#707fd0'
+    magenta: '#c583d0'
+    cyan: '#8adaf1'
+    white: '#e0e3e7'
+  # Indexed Colors
+  #
+  # The indexed colors include all colors from 16 to 256.
+  # When these are not set, they're filled with sensible defaults.
+  #
+  # Example:
+  #   `- { index: 16, color: '#ff00ff' }`
+  #
+  #indexed_colors: []
+
+  # Transparent cell backgrounds
+  #
+  # Whether or not `window.opacity` applies to all cell backgrounds or only to
+  # the default background. When set to `true` all cells will be transparent
+  # regardless of their background color.
+  #transparent_background_colors: false # TODO:
diff --git a/modules/home.legacy/conf/alacritty/yaml/colorscheme.yml b/modules/home.legacy/conf/alacritty/yaml/colorscheme.yml
new file mode 100644
index 00000000..4e0abfae
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/yaml/colorscheme.yml
@@ -0,0 +1,31 @@
+# Nightfox Alacritty Colors
+# Style: carbonfox
+# Upstream: https://github.com/edeneast/nightfox.nvim/raw/main/extra/carbonfox/nightfox_alacritty.yml
+colors:
+  # Default colors
+  primary:
+    background: '0x161616'
+    foreground: '0xf2f4f8'
+  # Normal colors
+  normal:
+    black:   '0x282828'
+    red:     '0xee5396'
+    green:   '0x25be6a'
+    yellow:  '0x08bdba'
+    blue:    '0x78a9ff'
+    magenta: '0xbe95ff'
+    cyan:    '0x33b1ff'
+    white:   '0xdfdfe0'
+  # Bright colors
+  bright:
+    black:   '0x484848'
+    red:     '0xf16da6'
+    green:   '0x46c880'
+    yellow:  '0x2dc7c4'
+    blue:    '0x8cb6ff'
+    magenta: '0xc8a5ff'
+    cyan:    '0x52bdff'
+    white:   '0xe4e4e5'
+  indexed_colors:
+    - { index: 16, color: '0x3ddbd9' }
+    - { index: 17, color: '0xff7eb6' }
diff --git a/modules/home.legacy/conf/alacritty/yaml/cursor.yml b/modules/home.legacy/conf/alacritty/yaml/cursor.yml
new file mode 100644
index 00000000..ef700ebc
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/yaml/cursor.yml
@@ -0,0 +1,43 @@
+cursor:
+  # Cursor style
+  style:
+    # Cursor shape
+    #
+    # Values for `shape`:
+    #   - ▇ Block
+    #   - _ Underline
+    #   - | Beam
+    shape: Beam
+
+    # Cursor blinking state
+    #
+    # Values for `blinking`:
+    #   - Never: Prevent the cursor from ever blinking
+    #   - Off: Disable blinking by default
+    #   - On: Enable blinking by default
+    #   - Always: Force the cursor to always blink
+    blinking: On
+
+  # Vi mode cursor style
+  #
+  # If the vi mode cursor style is `None` or not specified, it will fall back to
+  # the style of the active value of the normal cursor.
+  #
+  # See `cursor.style` for available options.
+  vi_mode_style: None
+
+  # Cursor blinking interval in milliseconds.
+  blink_interval: 750
+
+  # Time after which cursor stops blinking, in seconds.
+  #
+  # Specifying '0' will disable timeout for blinking.
+  blink_timeout: 5
+
+  # If this is `true`, the cursor will be rendered as a hollow box when the
+  # window is not focused.
+  unfocused_hollow: true
+
+  # Thickness of the cursor relative to the cell width as floating point number
+  # from `0.0` to `1.0`.
+  thickness: 0.15
diff --git a/modules/home.legacy/conf/alacritty/yaml/debug.yml b/modules/home.legacy/conf/alacritty/yaml/debug.yml
new file mode 100644
index 00000000..2c391da2
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/yaml/debug.yml
@@ -0,0 +1,29 @@
+#debug:
+  # Display the time it takes to redraw each frame.
+  #render_timer: false
+
+  # Keep the log file after quitting Alacritty.
+  #persistent_logging: false
+
+  # Log level
+  #
+  # Values for `log_level`:
+  #   - Off
+  #   - Error
+  #   - Warn
+  #   - Info
+  #   - Debug
+  #   - Trace
+  #log_level: Warn
+
+  # Renderer override.
+  #   - glsl3
+  #   - gles2
+  #   - gles2_pure
+  #renderer: None
+
+  # Print all received window events.
+  #print_events: false
+
+  # Highlight window damage information.
+  #highlight_damage: false
diff --git a/modules/home.legacy/conf/alacritty/yaml/env.yml b/modules/home.legacy/conf/alacritty/yaml/env.yml
new file mode 100644
index 00000000..ee7528b7
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/yaml/env.yml
@@ -0,0 +1,11 @@
+# Any items in the `env` entry below will be added as
+# environment variables. Some entries may override variables
+# set by alacritty itself.
+env:
+  # TERM variable
+  #
+  # This value is used to set the `$TERM` environment variable for
+  # each instance of Alacritty. If it is not present, alacritty will
+  # check the local terminfo database and use `alacritty` if it is
+  # available, otherwise `xterm-256color` is used.
+  TERM: alacritty
diff --git a/modules/home.legacy/conf/alacritty/yaml/font.yml b/modules/home.legacy/conf/alacritty/yaml/font.yml
new file mode 100644
index 00000000..a3fd3b1d
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/yaml/font.yml
@@ -0,0 +1,73 @@
+# Font configuration
+font:
+  # Normal (roman) font face
+  normal:
+    # Font family
+    #
+    # Default:
+    #   - (macOS) Menlo
+    #   - (Linux/BSD) monospace
+    #   - (Windows) Consolas
+    # family: Source Code Pro
+    # family: SauceCodePro Nerd Font
+    family: SauceCodePro Nerd Font Mono
+
+    # The `style` can be specified to pick a specific face.
+    style: Regular
+
+  # Bold font face
+  #bold:
+    # Font family
+    #
+    # If the bold family is not specified, it will fall back to the
+    # value specified for the normal font.
+    # family: Source Code Pro
+
+    # The `style` can be specified to pick a specific face.
+    #style: Bold
+
+  # Italic font face
+  #italic:
+    # Font family
+    #
+    # If the italic family is not specified, it will fall back to the
+    # value specified for the normal font.
+    # family: Source Code Pro
+
+    # The `style` can be specified to pick a specific face.
+    #style: Italic
+
+  # Bold italic font face
+  #bold_italic:
+    # Font family
+    #
+    # If the bold italic family is not specified, it will fall back to the
+    # value specified for the normal font.
+    # family: Source Code Pro
+
+    # The `style` can be specified to pick a specific face.
+    #style: Bold Italic
+
+  # Point size
+  size: 12.0
+
+  # Offset is the extra space around each character. `offset.y` can be thought
+  # of as modifying the line spacing, and `offset.x` as modifying the letter
+  # spacing.
+  offset:
+    x: -1
+    y: -1
+
+  # Glyph offset determines the locations of the glyphs within their cells with
+  # the default being at the bottom. Increasing `x` moves the glyph to the
+  # right, increasing `y` moves the glyph upward.
+  glyph_offset:
+    x: -1
+    y: -1
+
+  # Use built-in font for box drawing characters.
+  #
+  # If `true`, Alacritty will use a custom built-in font for box drawing
+  # characters (Unicode points 2500 - 259f).
+  #
+  builtin_box_drawing: true # TODO:
diff --git a/modules/home.legacy/conf/alacritty/yaml/hints.yml b/modules/home.legacy/conf/alacritty/yaml/hints.yml
new file mode 100644
index 00000000..8c35548b
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/yaml/hints.yml
@@ -0,0 +1,77 @@
+# Hints
+#
+# Terminal hints can be used to find text or hyperlink in the visible part of
+# the terminal and pipe it to other applications.
+hints:
+  # Keys used for the hint labels.
+  alphabet: "jfkdls;ahgurieowpq"
+
+  # List with all available hints
+  #
+  # Each hint must have any of `regex` or `hyperlinks` field and either an
+  # `action` or a `command` field. The fields `mouse`, `binding` and
+  # `post_processing` are optional.
+  #
+  # The `hyperlinks` option will cause OSC 8 escape sequence hyperlinks to be
+  # highlighted.
+  #
+  # The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and
+  # `mouse.mods` accept the same values as they do in the `key_bindings` section.
+  #
+  # The `mouse.enabled` field controls if the hint should be underlined while
+  # the mouse with all `mouse.mods` keys held or the vi mode cursor is above it.
+  #
+  # If the `post_processing` field is set to `true`, heuristics will be used to
+  # shorten the match if there are characters likely not to be part of the hint
+  # (e.g. a trailing `.`). This is most useful for URIs and applies only to
+  # `regex` matches.
+  #
+  # Values for `action`:
+  #   - Copy
+  #       Copy the hint's text to the clipboard.
+  #   - Paste
+  #       Paste the hint's text to the terminal or search.
+  #   - Select
+  #       Select the hint's text.
+  #   - MoveViModeCursor
+  #       Move the vi mode cursor to the beginning of the hint.
+  enabled:
+    - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\
+             [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"
+      hyperlinks: true
+      command: xdg-open
+      post_processing: true
+      mouse:
+        enabled: true
+        mods: None
+      binding:
+        key: U
+        mods: Control|Shift
+
+    - regex: "([^ '\"`=:\\[\\(]*/)([^/: '\"`\\)\\]]*)"
+      action: Paste
+      post_procesing: false
+      binding:
+        key: T
+        mods: Control|Shift
+
+    - regex: "([a-z0-9]{7})\\s"
+      action: Paste
+      post_procesing: false
+      binding:
+        key: H
+        mods: Control|Shift
+
+    # multi regex for different purposes:
+    # 2. UUIDs
+    # 3. hex (for example signatures)
+    # 4. IP addresses
+#    - regex: "([[:alnum:]_$%&+=/@-]+)\
+#|([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\
+#|([0-9a-f]{12,128})\
+#|([[:digit:]]{1,3}.[[:digit:]]{1,3}.[[:digit:]]{1,3}.[[:digit:]]{1,3})"
+#      action: Copy
+#      post_processing: false
+#      binding:
+#        key: U
+#        mods: Control|Shift
diff --git a/modules/home.legacy/conf/alacritty/yaml/key_bindings.yml b/modules/home.legacy/conf/alacritty/yaml/key_bindings.yml
new file mode 100644
index 00000000..c8be747e
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/yaml/key_bindings.yml
@@ -0,0 +1,382 @@
+# Key bindings
+#
+# Key bindings are specified as a list of objects. For example, this is the
+# default paste binding:
+#
+# `- { key: V, mods: Control|Shift, action: Paste }`
+#
+# Each key binding will specify a:
+#
+# - `key`: Identifier of the key pressed
+#
+#    - A-Z
+#    - F1-F24
+#    - Key0-Key9
+#
+#    A full list with available key codes can be found here:
+#    https://docs.rs/winit/*/winit/event/enum.VirtualKeyCode.html#variants
+#
+#    Instead of using the name of the keys, the `key` field also supports using
+#    the scancode of the desired key. Scancodes have to be specified as a
+#    decimal number. This command will allow you to display the hex scancodes
+#    for certain keys:
+#
+#       `showkey --scancodes`.
+#
+# Then exactly one of:
+#
+# - `chars`: Send a byte sequence to the running application
+#
+#    The `chars` field writes the specified string to the terminal. This makes
+#    it possible to pass escape sequences. To find escape codes for bindings
+#    like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside
+#    of tmux. Note that applications use terminfo to map escape sequences back
+#    to keys. It is therefore required to update the terminfo when changing an
+#    escape sequence.
+#
+# - `action`: Execute a predefined action
+#
+#   - ToggleViMode
+#   - SearchForward
+#       Start searching toward the right of the search origin.
+#   - SearchBackward
+#       Start searching toward the left of the search origin.
+#   - Copy
+#   - Paste
+#   - IncreaseFontSize
+#   - DecreaseFontSize
+#   - ResetFontSize
+#   - ScrollPageUp
+#   - ScrollPageDown
+#   - ScrollHalfPageUp
+#   - ScrollHalfPageDown
+#   - ScrollLineUp
+#   - ScrollLineDown
+#   - ScrollToTop
+#   - ScrollToBottom
+#   - ClearHistory
+#       Remove the terminal's scrollback history.
+#   - Hide
+#       Hide the Alacritty window.
+#   - Minimize
+#       Minimize the Alacritty window.
+#   - Quit
+#       Quit Alacritty.
+#   - ToggleFullscreen
+#   - ToggleMaximized
+#   - SpawnNewInstance
+#       Spawn a new instance of Alacritty.
+#   - CreateNewWindow
+#       Create a new Alacritty window from the current process.
+#   - ClearLogNotice
+#       Clear Alacritty's UI warning and error notice.
+#   - ClearSelection
+#       Remove the active selection.
+#   - ReceiveChar
+#   - None
+#
+# - Vi mode exclusive actions:
+#
+#   - Open
+#       Perform the action of the first matching hint under the vi mode cursor
+#       with `mouse.enabled` set to `true`.
+#   - ToggleNormalSelection
+#   - ToggleLineSelection
+#   - ToggleBlockSelection
+#   - ToggleSemanticSelection
+#       Toggle semantic selection based on `selection.semantic_escape_chars`.
+#   - CenterAroundViCursor
+#       Center view around vi mode cursor
+#
+# - Vi mode exclusive cursor motion actions:
+#
+#   - Up
+#       One line up.
+#   - Down
+#       One line down.
+#   - Left
+#       One character left.
+#   - Right
+#       One character right.
+#   - First
+#       First column, or beginning of the line when already at the first column.
+#   - Last
+#       Last column, or beginning of the line when already at the last column.
+#   - FirstOccupied
+#       First non-empty cell in this terminal row, or first non-empty cell of
+#       the line when already at the first cell of the row.
+#   - High
+#       Top of the screen.
+#   - Middle
+#       Center of the screen.
+#   - Low
+#       Bottom of the screen.
+#   - SemanticLeft
+#       Start of the previous semantically separated word.
+#   - SemanticRight
+#       Start of the next semantically separated word.
+#   - SemanticLeftEnd
+#       End of the previous semantically separated word.
+#   - SemanticRightEnd
+#       End of the next semantically separated word.
+#   - WordLeft
+#       Start of the previous whitespace separated word.
+#   - WordRight
+#       Start of the next whitespace separated word.
+#   - WordLeftEnd
+#       End of the previous whitespace separated word.
+#   - WordRightEnd
+#       End of the next whitespace separated word.
+#   - Bracket
+#       Character matching the bracket at the cursor's location.
+#   - SearchNext
+#       Beginning of the next match.
+#   - SearchPrevious
+#       Beginning of the previous match.
+#   - SearchStart
+#       Start of the match to the left of the vi mode cursor.
+#   - SearchEnd
+#       End of the match to the right of the vi mode cursor.
+#
+# - Search mode exclusive actions:
+#   - SearchFocusNext
+#       Move the focus to the next search match.
+#   - SearchFocusPrevious
+#       Move the focus to the previous search match.
+#   - SearchConfirm
+#   - SearchCancel
+#   - SearchClear
+#       Reset the search regex.
+#   - SearchDeleteWord
+#       Delete the last word in the search regex.
+#   - SearchHistoryPrevious
+#       Go to the previous regex in the search history.
+#   - SearchHistoryNext
+#       Go to the next regex in the search history.
+#
+# - macOS exclusive actions:
+#   - ToggleSimpleFullscreen
+#       Enter fullscreen without occupying another space.
+#
+# - Linux/BSD exclusive actions:
+#
+#   - CopySelection
+#       Copy from the selection buffer.
+#   - PasteSelection
+#       Paste from the selection buffer.
+#
+# - `command`: Fork and execute a specified command plus arguments
+#
+#    The `command` field must be a map containing a `program` string and an
+#    `args` array of command line parameter strings. For example:
+#       `{ program: "alacritty", args: ["-e", "vttest"] }`
+#
+# And optionally:
+#
+# - `mods`: Key modifiers to filter binding actions
+#
+#    - Command
+#    - Control
+#    - Option
+#    - Super
+#    - Shift
+#    - Alt
+#
+#    Multiple `mods` can be combined using `|` like this:
+#       `mods: Control|Shift`.
+#    Whitespace and capitalization are relevant and must match the example.
+#
+# - `mode`: Indicate a binding for only specific terminal reported modes
+#
+#    This is mainly used to send applications the correct escape sequences
+#    when in different modes.
+#
+#    - AppCursor
+#    - AppKeypad
+#    - Search
+#    - Alt
+#    - Vi
+#
+#    A `~` operator can be used before a mode to apply the binding whenever
+#    the mode is *not* active, e.g. `~Alt`.
+#
+# Bindings are always filled by default, but will be replaced when a new
+# binding with the same triggers is defined. To unset a default binding, it can
+# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for
+# a no-op if you do not wish to receive input characters for that binding.
+#
+# If the same trigger is assigned to multiple actions, all of them are executed
+# in the order they were defined in.
+key_bindings:
+#
+#
+  - { key: P, mods: Control, action: Paste }
+  - { key: Insert, mods: Shift, action: Paste }
+  - { key: Slash, mods: Control, chars: "gc" }
+  - { key: Y, mods: Control, action: Copy }
+  - { key: Key0, mods: Control, action: ResetFontSize }
+  - { key: Equals, mods: Control, action: IncreaseFontSize }
+  - { key: Plus, mods: Control, action: IncreaseFontSize }
+  - { key: Minus, mods: Control, action: DecreaseFontSize }
+
+  # Vi Mode
+  - { key: Space, mods: Control, action: ToggleViMode }
+  - { key: Space, mods: Control, mode: Vi, action: ScrollToBottom }
+  - { key: I, mode: Vi, action: ScrollToBottom }
+  - { key: I, mode: Vi, action: ToggleViMode }
+  - { key: C, mods: Control, mode: Vi, action: ScrollToBottom }
+  - { key: C, mods: Control, mode: Vi, action: ToggleViMode }
+  - { key: Escape, mode: Vi, action: ClearSelection }
+  - { key: Y, mods: Control, mode: Vi, action: ScrollLineUp }
+  - { key: E, mods: Control, mode: Vi, action: ScrollLineDown }
+  - { key: G, mode: Vi, action: ScrollToTop }
+  - { key: G, mods: Shift, mode: Vi, action: ScrollToBottom }
+  - { key: B, mods: Control, mode: Vi, action: ScrollPageUp }
+  - { key: F, mods: Control, mode: Vi, action: ScrollPageDown }
+  - { key: U, mods: Control, mode: Vi, action: ScrollHalfPageUp }
+  - { key: D, mods: Control, mode: Vi, action: ScrollHalfPageDown }
+  - { key: Y, mode: Vi, action: Copy }
+  - { key: Y, mode: Vi, action: ClearSelection }
+  - { key: V, mode: Vi, action: ToggleNormalSelection }
+  - { key: V, mods: Shift, mode: Vi, action: ToggleLineSelection }
+  - { key: V, mods: Control, mode: Vi, action: ToggleBlockSelection }
+  - { key: V, mods: Alt, mode: Vi, action: ToggleSemanticSelection }
+  - { key: Return, mode: Vi, action: Open }
+  - { key: K, mode: Vi, action: Up }
+  - { key: J, mode: Vi, action: Down }
+  - { key: H, mode: Vi, action: Left }
+  - { key: L, mode: Vi, action: Right }
+  - { key: Up, mode: Vi, action: Up }
+  - { key: Down, mode: Vi, action: Down }
+  - { key: Left, mode: Vi, action: Left }
+  - { key: Right, mode: Vi, action: Right }
+  - { key: Key0, mode: Vi, action: First }
+  - { key: Key4, mode: Vi, action: Last }
+  - { key: Key6, mods: Shift, mode: Vi, action: FirstOccupied }
+  - { key: H, mods: Shift, mode: Vi, action: High }
+  - { key: M, mods: Shift, mode: Vi, action: Middle }
+  - { key: L, mods: Shift, mode: Vi, action: Low }
+  - { key: B, mode: Vi, action: SemanticLeft }
+  - { key: W, mode: Vi, action: SemanticRight }
+  - { key: E, mode: Vi, action: SemanticRightEnd }
+  - { key: B, mods: Shift, mode: Vi, action: WordLeft }
+  - { key: W, mods: Shift, mode: Vi, action: WordRight }
+  - { key: E, mods: Shift, mode: Vi, action: WordRightEnd }
+  - { key: Key5, mods: Shift, mode: Vi, action: Bracket }
+  - { key: Slash, mode: Vi, action: SearchForward }
+  - { key: Slash, mods: Shift, mode: Vi, action: SearchBackward }
+  - { key: N, mode: Vi, action: SearchNext }
+  - { key: N, mods: Shift, mode: Vi, action: SearchPrevious }
+#
+#
+#
+  #- { key: Paste,                                       action: Paste          }
+  #- { key: Copy,                                        action: Copy           }
+  #- { key: L,         mods: Control,                    action: ClearLogNotice }
+  #- { key: L,         mods: Control, mode: ~Vi|~Search, chars: "\x0c"          }
+  #- { key: PageUp,    mods: Shift,   mode: ~Alt,        action: ScrollPageUp   }
+  #- { key: PageDown,  mods: Shift,   mode: ~Alt,        action: ScrollPageDown }
+  #- { key: Home,      mods: Shift,   mode: ~Alt,        action: ScrollToTop    }
+  #- { key: End,       mods: Shift,   mode: ~Alt,        action: ScrollToBottom }
+
+  # Vi Mode
+  #- { key: Space,  mods: Shift|Control, mode: ~Search,    action: ToggleViMode            }
+  #- { key: Space,  mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom          }
+  #- { key: Escape,                      mode: Vi|~Search, action: ClearSelection          }
+  #- { key: I,                           mode: Vi|~Search, action: ToggleViMode            }
+  #- { key: I,                           mode: Vi|~Search, action: ScrollToBottom          }
+  #- { key: C,      mods: Control,       mode: Vi|~Search, action: ToggleViMode            }
+  #- { key: Y,      mods: Control,       mode: Vi|~Search, action: ScrollLineUp            }
+  #- { key: E,      mods: Control,       mode: Vi|~Search, action: ScrollLineDown          }
+  #- { key: G,                           mode: Vi|~Search, action: ScrollToTop             }
+  #- { key: G,      mods: Shift,         mode: Vi|~Search, action: ScrollToBottom          }
+  #- { key: B,      mods: Control,       mode: Vi|~Search, action: ScrollPageUp            }
+  #- { key: F,      mods: Control,       mode: Vi|~Search, action: ScrollPageDown          }
+  #- { key: U,      mods: Control,       mode: Vi|~Search, action: ScrollHalfPageUp        }
+  #- { key: D,      mods: Control,       mode: Vi|~Search, action: ScrollHalfPageDown      }
+  #- { key: Y,                           mode: Vi|~Search, action: Copy                    }
+  #- { key: Y,                           mode: Vi|~Search, action: ClearSelection          }
+  #- { key: Copy,                        mode: Vi|~Search, action: ClearSelection          }
+  #- { key: V,                           mode: Vi|~Search, action: ToggleNormalSelection   }
+  #- { key: V,      mods: Shift,         mode: Vi|~Search, action: ToggleLineSelection     }
+  #- { key: V,      mods: Control,       mode: Vi|~Search, action: ToggleBlockSelection    }
+  #- { key: V,      mods: Alt,           mode: Vi|~Search, action: ToggleSemanticSelection }
+  #- { key: Return,                      mode: Vi|~Search, action: Open                    }
+  #- { key: Z,                           mode: Vi|~Search, action: CenterAroundViCursor    }
+  #- { key: K,                           mode: Vi|~Search, action: Up                      }
+  #- { key: J,                           mode: Vi|~Search, action: Down                    }
+  #- { key: H,                           mode: Vi|~Search, action: Left                    }
+  #- { key: L,                           mode: Vi|~Search, action: Right                   }
+  #- { key: Up,                          mode: Vi|~Search, action: Up                      }
+  #- { key: Down,                        mode: Vi|~Search, action: Down                    }
+  #- { key: Left,                        mode: Vi|~Search, action: Left                    }
+  #- { key: Right,                       mode: Vi|~Search, action: Right                   }
+  #- { key: Key0,                        mode: Vi|~Search, action: First                   }
+  #- { key: Key4,   mods: Shift,         mode: Vi|~Search, action: Last                    }
+  #- { key: Key6,   mods: Shift,         mode: Vi|~Search, action: FirstOccupied           }
+  #- { key: H,      mods: Shift,         mode: Vi|~Search, action: High                    }
+  #- { key: M,      mods: Shift,         mode: Vi|~Search, action: Middle                  }
+  #- { key: L,      mods: Shift,         mode: Vi|~Search, action: Low                     }
+  #- { key: B,                           mode: Vi|~Search, action: SemanticLeft            }
+  #- { key: W,                           mode: Vi|~Search, action: SemanticRight           }
+  #- { key: E,                           mode: Vi|~Search, action: SemanticRightEnd        }
+  #- { key: B,      mods: Shift,         mode: Vi|~Search, action: WordLeft                }
+  #- { key: W,      mods: Shift,         mode: Vi|~Search, action: WordRight               }
+  #- { key: E,      mods: Shift,         mode: Vi|~Search, action: WordRightEnd            }
+  #- { key: Key5,   mods: Shift,         mode: Vi|~Search, action: Bracket                 }
+  #- { key: Slash,                       mode: Vi|~Search, action: SearchForward           }
+  #- { key: Slash,  mods: Shift,         mode: Vi|~Search, action: SearchBackward          }
+  #- { key: N,                           mode: Vi|~Search, action: SearchNext              }
+  #- { key: N,      mods: Shift,         mode: Vi|~Search, action: SearchPrevious          }
+
+  # Search Mode
+  #- { key: Return,                mode: Search|Vi,  action: SearchConfirm         }
+  #- { key: Escape,                mode: Search,     action: SearchCancel          }
+  #- { key: C,      mods: Control, mode: Search,     action: SearchCancel          }
+  #- { key: U,      mods: Control, mode: Search,     action: SearchClear           }
+  #- { key: W,      mods: Control, mode: Search,     action: SearchDeleteWord      }
+  #- { key: P,      mods: Control, mode: Search,     action: SearchHistoryPrevious }
+  #- { key: N,      mods: Control, mode: Search,     action: SearchHistoryNext     }
+  #- { key: Up,                    mode: Search,     action: SearchHistoryPrevious }
+  #- { key: Down,                  mode: Search,     action: SearchHistoryNext     }
+  #- { key: Return,                mode: Search|~Vi, action: SearchFocusNext       }
+  #- { key: Return, mods: Shift,   mode: Search|~Vi, action: SearchFocusPrevious   }
+
+  # (Windows, Linux, and BSD only)
+  #- { key: V,              mods: Control|Shift, mode: ~Vi,        action: Paste            }
+  #- { key: C,              mods: Control|Shift,                   action: Copy             }
+  #- { key: F,              mods: Control|Shift, mode: ~Search,    action: SearchForward    }
+  #- { key: B,              mods: Control|Shift, mode: ~Search,    action: SearchBackward   }
+  #- { key: C,              mods: Control|Shift, mode: Vi|~Search, action: ClearSelection   }
+  #- { key: Insert,         mods: Shift,                           action: PasteSelection   }
+  #- { key: Key0,           mods: Control,                         action: ResetFontSize    }
+  #- { key: Equals,         mods: Control,                         action: IncreaseFontSize }
+  #- { key: Plus,           mods: Control,                         action: IncreaseFontSize }
+  #- { key: NumpadAdd,      mods: Control,                         action: IncreaseFontSize }
+  #- { key: Minus,          mods: Control,                         action: DecreaseFontSize }
+  #- { key: NumpadSubtract, mods: Control,                         action: DecreaseFontSize }
+
+  # (Windows only)
+  #- { key: Return,   mods: Alt,           action: ToggleFullscreen }
+
+  # (macOS only)
+  #- { key: K,              mods: Command, mode: ~Vi|~Search, chars: "\x0c"                 }
+  #- { key: K,              mods: Command, mode: ~Vi|~Search, action: ClearHistory          }
+  #- { key: Key0,           mods: Command,                    action: ResetFontSize         }
+  #- { key: Equals,         mods: Command,                    action: IncreaseFontSize      }
+  #- { key: Plus,           mods: Command,                    action: IncreaseFontSize      }
+  #- { key: NumpadAdd,      mods: Command,                    action: IncreaseFontSize      }
+  #- { key: Minus,          mods: Command,                    action: DecreaseFontSize      }
+  #- { key: NumpadSubtract, mods: Command,                    action: DecreaseFontSize      }
+  #- { key: V,              mods: Command,                    action: Paste                 }
+  #- { key: C,              mods: Command,                    action: Copy                  }
+  #- { key: C,              mods: Command, mode: Vi|~Search,  action: ClearSelection        }
+  #- { key: H,              mods: Command,                    action: Hide                  }
+  #- { key: H,              mods: Command|Alt,                action: HideOtherApplications }
+  #- { key: M,              mods: Command,                    action: Minimize              }
+  #- { key: Q,              mods: Command,                    action: Quit                  }
+  #- { key: W,              mods: Command,                    action: Quit                  }
+  #- { key: N,              mods: Command,                    action: CreateNewWindow       }
+  #- { key: F,              mods: Command|Control,            action: ToggleFullscreen      }
+  #- { key: F,              mods: Command, mode: ~Search,     action: SearchForward         }
+  #- { key: B,              mods: Command, mode: ~Search,     action: SearchBackward        }
diff --git a/modules/home.legacy/conf/alacritty/yaml/mouse.yml b/modules/home.legacy/conf/alacritty/yaml/mouse.yml
new file mode 100644
index 00000000..4bdb408b
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/yaml/mouse.yml
@@ -0,0 +1,11 @@
+mouse:
+  # Click settings
+  #
+  # The `double_click` and `triple_click` settings control the time
+  # alacritty should wait for accepting multiple clicks as one double
+  # or triple click.
+  double_click: { threshold: 300 }
+  triple_click: { threshold: 300 }
+
+  # If this is `true`, the cursor is temporarily hidden when typing.
+  hide_when_typing: false
diff --git a/modules/home.legacy/conf/alacritty/yaml/mouse_bindings.yml b/modules/home.legacy/conf/alacritty/yaml/mouse_bindings.yml
new file mode 100644
index 00000000..ab244d21
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/yaml/mouse_bindings.yml
@@ -0,0 +1,32 @@
+# Mouse bindings
+#
+# Mouse bindings are specified as a list of objects, much like the key
+# bindings further below.
+#
+# To trigger mouse bindings when an application running within Alacritty
+# captures the mouse, the `Shift` modifier is automatically added as a
+# requirement.
+#
+# Each mouse binding will specify a:
+#
+# - `mouse`:
+#
+#   - Middle
+#   - Left
+#   - Right
+#   - Numeric identifier such as `5`
+#
+# - `action` (see key bindings for actions not exclusive to mouse mode)
+#
+# - Mouse exclusive actions:
+#
+#   - ExpandSelection
+#       Expand the selection to the current mouse cursor location.
+#
+# And optionally:
+#
+# - `mods` (see key bindings)
+mouse_bindings:
+#  - { mouse: Right,                 action: ExpandSelection }
+#  - { mouse: Right,  mods: Control, action: ExpandSelection }
+   - { mouse: Middle,  action: Copy  }
diff --git a/modules/home.legacy/conf/alacritty/yaml/scrolling.yml b/modules/home.legacy/conf/alacritty/yaml/scrolling.yml
new file mode 100644
index 00000000..50365627
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/yaml/scrolling.yml
@@ -0,0 +1,7 @@
+scrolling:
+  # Maximum number of lines in the scrollback buffer.
+  # Specifying '0' will disable scrolling.
+  history: 10000
+
+  # Scrolling distance multiplier.
+  multiplier: 3
diff --git a/modules/home.legacy/conf/alacritty/yaml/selection.yml b/modules/home.legacy/conf/alacritty/yaml/selection.yml
new file mode 100644
index 00000000..5e5bd544
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/yaml/selection.yml
@@ -0,0 +1,7 @@
+selection:
+  # This string contains all characters that are used as separators for
+  # "semantic words" in Alacritty.
+  semantic_escape_chars: ",│`|:\"' ()[]{}<>\t"
+
+  # When set to `true`, selected text will be copied to the primary clipboard.
+  save_to_clipboard: false
diff --git a/modules/home.legacy/conf/alacritty/yaml/shell.yml b/modules/home.legacy/conf/alacritty/yaml/shell.yml
new file mode 100644
index 00000000..04844dd0
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/yaml/shell.yml
@@ -0,0 +1,13 @@
+# Shell
+#
+# You can set `shell.program` to the path of your favorite shell, e.g.
+# `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the
+# shell.
+#
+# Default:
+#   - (Linux/BSD/macOS) `$SHELL` or the user's login shell, if `$SHELL` is unset
+#   - (Windows) powershell
+#shell:
+#  program: /bin/bash
+#  args:
+#    - --login
diff --git a/modules/home.legacy/conf/alacritty/yaml/window.yml b/modules/home.legacy/conf/alacritty/yaml/window.yml
new file mode 100644
index 00000000..7b89b6ed
--- /dev/null
+++ b/modules/home.legacy/conf/alacritty/yaml/window.yml
@@ -0,0 +1,89 @@
+window:
+  # Window dimensions (changes require restart)
+  #
+  # Number of lines/columns (not pixels) in the terminal. Both lines and columns
+  # must be non-zero for this to take effect. The number of columns must be at
+  # least `2`, while using a value of `0` for columns and lines will fall back
+  # to the window manager's recommended size
+  dimensions:
+    columns: 0
+    lines: 0
+
+  # Window position (changes require restart)
+  #
+  # Specified in number of pixels.
+  # If the position is not set, the window manager will handle the placement.
+  #position:
+  #  x: 0
+  #  y: 0
+
+  # Window padding (changes require restart)
+  #
+  # Blank space added around the window in pixels. This padding is scaled
+  # by DPI and the specified value is always added at both opposing sides.
+  padding:
+    x: 5
+    y: 5
+
+  # Spread additional padding evenly around the terminal content.
+  #dynamic_padding: false
+
+  # Window decorations
+  #
+  # Values for `decorations`:
+  #     - full: Borders and title bar
+  #     - none: Neither borders nor title bar
+  #
+  # Values for `decorations` (macOS only):
+  #     - transparent: Title bar, transparent background and title bar buttons
+  #     - buttonless: Title bar, transparent background and no title bar buttons
+  decorations: none
+
+  # Background opacity
+  #
+  # Window opacity as a floating point number from `0.0` to `1.0`.
+  # The value `0.0` is completely transparent and `1.0` is opaque.
+  opacity: 0.9
+
+  # Startup Mode (changes require restart)
+  #
+  # Values for `startup_mode`:
+  #   - Windowed
+  #   - Maximized
+  #   - Fullscreen
+  #
+  # Values for `startup_mode` (macOS only):
+  #   - SimpleFullscreen
+  startup_mode: Windowed
+
+  # Window title
+  title: Alacritty
+
+  # Allow terminal applications to change Alacritty's window title.
+  dynamic_title: true
+
+  # Window class (Linux/BSD only):
+  class:
+    # Application instance name
+    instance: Alacritty
+    # General application class
+    general: Alacritty
+
+  # Decorations theme variant
+  #
+  # Override the variant of the System theme/GTK theme/Wayland client side
+  # decorations. Commonly supported values are `Dark`, `Light`, and `None` for
+  # auto pick-up. Set this to `None` to use the default theme variant.
+  decorations_theme_variant: None
+
+  # Resize increments
+  #
+  # Prefer resizing window by discrete steps equal to cell dimensions.
+  #resize_increments: false
+
+  # Make `Option` key behave as `Alt` (macOS only):
+  #   - OnlyLeft
+  #   - OnlyRight
+  #   - Both
+  #   - None (default)
+  #option_as_alt: None
diff --git a/modules/home.legacy/conf/beets/default.nix b/modules/home.legacy/conf/beets/default.nix
new file mode 100644
index 00000000..8d6277b7
--- /dev/null
+++ b/modules/home.legacy/conf/beets/default.nix
@@ -0,0 +1,103 @@
+{
+  pkgs,
+  lib,
+  config,
+  ...
+}: let
+  plugins = import ./plugins.nix {};
+in {
+  imports = [
+    ./plugins
+  ];
+
+  programs.beets = {
+    enable = true;
+    package = pkgs.beets.override {
+      pluginOverrides = {
+        xtractor = {
+          enable = true;
+          propagatedBuildInputs = [pkgs.beetsExtraPlugins.xtractor];
+        };
+      };
+    };
+
+    settings = {
+      library = "${config.xdg.dataHome}/beets/library.db";
+      art_filename = "cover";
+      directory = "${config.xdg.userDirs.music}/beets";
+      ui = {
+        color = true;
+      };
+
+      include = [
+        "./replace_override.yaml"
+      ];
+
+      import = {
+        # move, instead of copying or linking the files
+        copy = false;
+        move = true;
+        link = false;
+
+        # Show more detail, when beet needs to ask for something
+        detail = true;
+
+        incremental = false;
+
+        # Write the metadata to the files
+        write = true;
+        log = "${config.xdg.dataHome}/beets/beetslog.txt";
+      };
+
+      paths = let
+        j = lib.strings.concatStringsSep "/";
+      in {
+        default = j ["[Default]" "$genre" "$first_artist" "$album ($albumtype)" "$track $title"];
+        "albumtype:live" = j ["[Live]" "$genre" "$first_artist" "$album ($albumtype)" "$track $title"];
+
+        "albumtype:album" = j ["Music" "$genre" "$first_artist" "$album ($albumtype)" "$track $title"];
+        "albumtype::(Single|EP)" = j ["Music" "$genre" "$first_artist_singleton" "$album ($albumtype)" "$track $title"];
+        "albumtype:compilation" = j ["Complilations" "$genre" "Various Artists" "$album ($albumtype)" "$track $title"];
+        "albumtype:soundtrack" = j ["Soundtracks" "$genre" "$first_artist" "$album" "$track $title"];
+      };
+
+      inherit plugins;
+
+      # Plugin config
+      # scrub = {
+      #   auto = true;
+      # };
+
+      musicbrainz = {
+        # Search for deezer id's and use them in the autotagger
+        # external_ids = {
+        #   deezer = true;
+        # };
+      };
+
+      # Log-on config
+      # TODO: Add this, to upload the generated fingerprints (to help improve their
+      # database) <2024-08-07>
+      # acoustid = {
+      #   apikey = "TODO";
+      # };
+    };
+
+    mpdIntegration = {
+      enableStats = true;
+      enableUpdate = true;
+      host = config.home.sessionVariables.MPD_HOST;
+    };
+  };
+
+  xdg.configFile."beets/replace_override.yaml".source = ./replace_override.yaml;
+
+  # Use the json formatter instead of the YAML one, as the YAML formatter mangles the
+  # longer python inline strings.
+  # YAML is a superset of JSON.
+  xdg.configFile."beets/config.yaml".source =
+    lib.mkForce
+    ((pkgs.formats.json {}).generate
+      "beets-config"
+      config.programs.beets.settings);
+}
diff --git a/modules/home.legacy/conf/beets/plugins.nix b/modules/home.legacy/conf/beets/plugins.nix
new file mode 100644
index 00000000..bea2fefe
--- /dev/null
+++ b/modules/home.legacy/conf/beets/plugins.nix
@@ -0,0 +1,67 @@
+{...}:
+# NOTE: This list is here and not split over the various plugin dirs, as we need a way to
+# specify the order plugins are loaded in. <2024-08-11>
+[
+  # Remove all previous tags before import (this is useful to ensure, that
+  # the metadata in the libary.db is synced with the tags on disk)
+  # # FIXME: I think, that this also removes the deezer id, which is not ideal
+  # <2024-08-07>
+  # "scrub"
+
+  # Help submitting stuff to music brainz
+  "mbsubmit"
+
+  # Extract things from the music file
+  "xtractor"
+
+  # Calculate replay gain
+  "replaygain"
+
+  # Check for bad files
+  "badfiles"
+
+  # Alows to use inline python for parsing tags
+  "inline"
+
+  # Support player integration
+  "play"
+
+  # Show tags on files/queries
+  "info"
+
+  # Create playlist from `play_count`/`skip_count` (gathered by the `mpdstats`
+  # plugin)
+  # Note that this should come _before_ the `mpdupdate` plugin, to ensure that
+  # `mpdupgate` can propagate changed playlist to `mpd`.
+  "smartplaylist"
+
+  # Warn, when importing a matching item
+  "ihate"
+
+  # Allow fuzzy searching
+  "fuzzy"
+
+  # Filter out duplicates
+  "duplicates"
+
+  # Generate fingerprints
+  "chroma"
+
+  # Download album art
+  "fetchart"
+
+  # Fetches tags from `last.fm` and adds them as genres to imported music
+  "lastgenre"
+
+  # Run commands on events
+  "hook"
+
+  # Fetch lyrics
+  "lyrics"
+
+  # Allow beets to understand deezer id's
+  # "deezer"
+
+  "mpdstats" # Transfer MPD stats to beets
+  "mpdupdate" # Update MPD database on import
+]
diff --git a/modules/home.legacy/conf/beets/plugins/badfiles/default.nix b/modules/home.legacy/conf/beets/plugins/badfiles/default.nix
new file mode 100644
index 00000000..33884785
--- /dev/null
+++ b/modules/home.legacy/conf/beets/plugins/badfiles/default.nix
@@ -0,0 +1,13 @@
+{
+  lib,
+  pkgs,
+  ...
+}: {
+  programs.beets.settings.badfiles = {
+    check_on_import = true;
+    commands = {
+      flac = "${lib.getExe' pkgs.flac "flac"} --test --warnings-as-errors --silent";
+      mp3 = "${lib.getExe pkgs.mp3val}";
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/beets/plugins/default.nix b/modules/home.legacy/conf/beets/plugins/default.nix
new file mode 100644
index 00000000..3bea5ea8
--- /dev/null
+++ b/modules/home.legacy/conf/beets/plugins/default.nix
@@ -0,0 +1,16 @@
+{...}: {
+  imports = [
+    ./badfiles
+    ./duplicates
+    ./fuzzy
+    ./ihate
+    ./inline
+    ./lastgenre
+    ./lyrics
+    ./mbsubmit
+    ./play
+    ./replaygain
+    ./smartplaylist
+    ./xtractor
+  ];
+}
diff --git a/modules/home.legacy/conf/beets/plugins/duplicates/default.nix b/modules/home.legacy/conf/beets/plugins/duplicates/default.nix
new file mode 100644
index 00000000..c8a6c108
--- /dev/null
+++ b/modules/home.legacy/conf/beets/plugins/duplicates/default.nix
@@ -0,0 +1,5 @@
+{...}: {
+  programs.beets.settings.duplicates = {
+    keys = ["acoustid_fingerprint"];
+  };
+}
diff --git a/modules/home.legacy/conf/beets/plugins/fuzzy/default.nix b/modules/home.legacy/conf/beets/plugins/fuzzy/default.nix
new file mode 100644
index 00000000..b86b3a20
--- /dev/null
+++ b/modules/home.legacy/conf/beets/plugins/fuzzy/default.nix
@@ -0,0 +1,6 @@
+{...}: {
+  programs.beets.settings.fuzzy = {
+    # The prefix denoting that a search should be run in fuzzy mode
+    prefix = ".";
+  };
+}
diff --git a/modules/home.legacy/conf/beets/plugins/ihate/default.nix b/modules/home.legacy/conf/beets/plugins/ihate/default.nix
new file mode 100644
index 00000000..145f5f8b
--- /dev/null
+++ b/modules/home.legacy/conf/beets/plugins/ihate/default.nix
@@ -0,0 +1,8 @@
+{...}: {
+  programs.beets.settings.ihate = {
+    warn = [
+      "title:commentary"
+      "albumtype:live"
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/beets/plugins/inline/default.nix b/modules/home.legacy/conf/beets/plugins/inline/default.nix
new file mode 100644
index 00000000..0dda8cfc
--- /dev/null
+++ b/modules/home.legacy/conf/beets/plugins/inline/default.nix
@@ -0,0 +1,42 @@
+{...}: {
+  programs.beets.settings = {
+    item_fields = {
+      # Taken from https://github.com/trapd00r/configs/blob/4f3dada5700846cca6c2869e6fa6b3c795b87b67/beets/config.yaml
+      first_artist =
+        /*
+        python
+        */
+        ''
+          # import an album to another artists directory, like:
+          # Tom Jones │1999│ Burning Down the House [Single, CD, FLAC]
+          # to The Cardigans/+singles/Tom Jones & the Cardigans │1999│ Burning Down the House [Single, CD, FLAC]
+          # https://github.com/beetbox/beets/discussions/4012#discussioncomment-1021414
+          # beet import --set myartist='The Cardigans'
+          # we must first check to see if myartist is defined, that is, given on
+          # import time, or we raise an NameError exception.
+          try:
+            myartist
+          except NameError:
+            import re
+            return re.split(',|\\s+(feat(.?|uring)|&|(Vs|Ft).)', albumartist, 1, flags=re.IGNORECASE)[0]
+          else:
+            return myartist
+        '';
+
+      first_artist_singleton =
+        /*
+        python
+        */
+        ''
+          try:
+            myartist
+          except NameError:
+            import re
+            return re.split(',|\\s+(feat(.?|uring)|&|(Vs|Ft).)', artist, 1, flags=re.IGNORECASE)[0]
+          else:
+            return myartist
+        '';
+    };
+    album_fields = {};
+  };
+}
diff --git a/modules/home.legacy/conf/beets/plugins/lastgenre/default.nix b/modules/home.legacy/conf/beets/plugins/lastgenre/default.nix
new file mode 100644
index 00000000..d10ca49f
--- /dev/null
+++ b/modules/home.legacy/conf/beets/plugins/lastgenre/default.nix
@@ -0,0 +1,7 @@
+{...}: {
+  programs.beets.settings.lastgenre = {
+    prefer_specific = false;
+    # Lookup the track, not the album
+    source = "track";
+  };
+}
diff --git a/modules/home.legacy/conf/beets/plugins/lyrics/default.nix b/modules/home.legacy/conf/beets/plugins/lyrics/default.nix
new file mode 100644
index 00000000..80544aea
--- /dev/null
+++ b/modules/home.legacy/conf/beets/plugins/lyrics/default.nix
@@ -0,0 +1,6 @@
+{...}: {
+  programs.beets.settings.lyrics = {
+    # Always fetch lyrics (and update them, if some were found)
+    force = true;
+  };
+}
diff --git a/modules/home.legacy/conf/beets/plugins/mbsubmit/default.nix b/modules/home.legacy/conf/beets/plugins/mbsubmit/default.nix
new file mode 100644
index 00000000..b70f1c63
--- /dev/null
+++ b/modules/home.legacy/conf/beets/plugins/mbsubmit/default.nix
@@ -0,0 +1,9 @@
+{
+  lib,
+  pkgs,
+  ...
+}: {
+  programs.beets.settings.mbsubmit = {
+    picard_path = lib.getExe pkgs.picard;
+  };
+}
diff --git a/modules/home.legacy/conf/beets/plugins/play/default.nix b/modules/home.legacy/conf/beets/plugins/play/default.nix
new file mode 100644
index 00000000..f5bc3c9b
--- /dev/null
+++ b/modules/home.legacy/conf/beets/plugins/play/default.nix
@@ -0,0 +1,14 @@
+{
+  lib,
+  pkgs,
+  config,
+  ...
+}: {
+  programs.beets.settings.play = {
+    command = "${lib.getExe pkgs.mpc-cli} $args add";
+    relative_to = config.services.mpd.musicDirectory;
+
+    # Run the command with the returned paths as arguments
+    raw = true;
+  };
+}
diff --git a/modules/home.legacy/conf/beets/plugins/replaygain/default.nix b/modules/home.legacy/conf/beets/plugins/replaygain/default.nix
new file mode 100644
index 00000000..611f3799
--- /dev/null
+++ b/modules/home.legacy/conf/beets/plugins/replaygain/default.nix
@@ -0,0 +1,24 @@
+{...}: {
+  programs.beets.settings = {
+    replaygain = {
+      auto = true;
+      backend = "ffmpeg";
+
+      r128_targetlevel = 89;
+
+      # Re-calculate the replay gain value even for files, that already have one set.
+      overwrite = true;
+    };
+
+    hook = {
+      hooks = [
+        {
+          # Also generate the replaygain for the album variant (so selecting between
+          # track and album becomes possible)
+          event = "import";
+          command = "echo Remember to run 'beet replaygain --album' to generate the album replaygain values for the imported songs!";
+        }
+      ];
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/beets/plugins/smartplaylist/default.nix b/modules/home.legacy/conf/beets/plugins/smartplaylist/default.nix
new file mode 100644
index 00000000..b55c487c
--- /dev/null
+++ b/modules/home.legacy/conf/beets/plugins/smartplaylist/default.nix
@@ -0,0 +1,33 @@
+{config, ...}: {
+  programs.beets.settings.smartplaylist = {
+    relative_to = config.services.mpd.musicDirectory;
+    playlist_dir = config.services.mpd.playlistDirectory;
+    forward_slash = false;
+
+    # Show the real m3u file paths, when running `--pretend`
+    pretend_paths = true;
+
+    playlists = [
+      {
+        name = "artists-$first_artist.m3u";
+        query = "";
+      }
+      {
+        name = "ratings-good.m3u";
+        query = "rating:0.7..1.0";
+      }
+      {
+        name = "ratings-mediocre.m3u";
+        query = "rating:0.4..0.7";
+      }
+      {
+        name = "ratings-bad.m3u";
+        query = "rating:0.0..0.4";
+      }
+      {
+        name = "not_played.m3u";
+        query = "-play_count: artist:";
+      }
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/beets/plugins/xtractor/default.nix b/modules/home.legacy/conf/beets/plugins/xtractor/default.nix
new file mode 100644
index 00000000..d4582c5f
--- /dev/null
+++ b/modules/home.legacy/conf/beets/plugins/xtractor/default.nix
@@ -0,0 +1,95 @@
+{
+  lib,
+  pkgs,
+  config,
+  ...
+}: {
+  programs.beets.settings = {
+    xtractor = {
+      # This option is not yet implemented, thus requiring the hook
+      auto = true;
+
+      dry-run = false;
+      # Writes the bpm key to the media files
+      write = true;
+      threads = 0;
+      # Also run for files, which already have the required keys
+      force = true;
+      quiet = false;
+      keep_output = true;
+      keep_profiles = true;
+      output_path = "${config.xdg.dataHome}/beets/xtactor";
+      essentia_extractor = "${lib.getExe pkgs.essentia-extractor}";
+      extractor_profile = {
+        highlevel = {
+          svm_models = let
+            m = pkgs.beetsExtraPlugins.xtractor.models;
+          in [
+            "${m}/danceability.history"
+            "${m}/danceability.history.param"
+            "${m}/danceability.history.results.html"
+            "${m}/gender.history"
+            "${m}/gender.history.param"
+            "${m}/gender.history.results.html"
+            "${m}/genre_dortmund.history"
+            "${m}/genre_dortmund.history.param"
+            "${m}/genre_dortmund.history.results.html"
+            "${m}/genre_electronic.history"
+            "${m}/genre_electronic.history.param"
+            "${m}/genre_electronic.history.results.html"
+            "${m}/genre_rosamerica.history"
+            "${m}/genre_rosamerica.history.param"
+            "${m}/genre_rosamerica.history.results.html"
+            "${m}/genre_tzanetakis.history"
+            "${m}/genre_tzanetakis.history.param"
+            "${m}/genre_tzanetakis.history.results.html"
+            "${m}/ismir04_rhythm.history"
+            "${m}/ismir04_rhythm.history.param"
+            "${m}/ismir04_rhythm.history.results.html"
+            "${m}/mood_acoustic.history"
+            "${m}/mood_acoustic.history.param"
+            "${m}/mood_acoustic.history.results.html"
+            "${m}/mood_aggressive.history"
+            "${m}/mood_aggressive.history.param"
+            "${m}/mood_aggressive.history.results.html"
+            "${m}/mood_electronic.history"
+            "${m}/mood_electronic.history.param"
+            "${m}/mood_electronic.history.results.html"
+            "${m}/mood_happy.history"
+            "${m}/mood_happy.history.param"
+            "${m}/mood_happy.history.results.html"
+            "${m}/mood_party.history"
+            "${m}/mood_party.history.param"
+            "${m}/mood_party.history.results.html"
+            "${m}/mood_relaxed.history"
+            "${m}/mood_relaxed.history.param"
+            "${m}/mood_relaxed.history.results.html"
+            "${m}/mood_sad.history"
+            "${m}/mood_sad.history.param"
+            "${m}/mood_sad.history.results.html"
+            "${m}/moods_mirex.history"
+            "${m}/moods_mirex.history.param"
+            "${m}/moods_mirex.history.results.html"
+            "${m}/timbre.history"
+            "${m}/timbre.history.param"
+            "${m}/timbre.history.results.html"
+            "${m}/tonal_atonal.history"
+            "${m}/tonal_atonal.history.param"
+            "${m}/tonal_atonal.history.results.html"
+            "${m}/voice_instrumental.history"
+            "${m}/voice_instrumental.history.param"
+            "${m}/voice_instrumental.history.results.html"
+          ];
+        };
+      };
+    };
+    hook = {
+      hooks = [
+        {
+          event = "import";
+          command = "echo Remember to run 'beet xtractor'!";
+        }
+      ];
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/beets/replace_override.yaml b/modules/home.legacy/conf/beets/replace_override.yaml
new file mode 100644
index 00000000..23d6ea55
--- /dev/null
+++ b/modules/home.legacy/conf/beets/replace_override.yaml
@@ -0,0 +1,10 @@
+---
+replace:
+    '[\\/]': _
+    '^\.': _
+    '[\x00-\x1f]': _
+    '[<>:"\?\*\|]': _
+    '\.$': _
+    '\s+$': ''
+    '^\s+': ''
+    '^-': _
diff --git a/modules/home.legacy/conf/btop/default.nix b/modules/home.legacy/conf/btop/default.nix
new file mode 100644
index 00000000..06b56ea7
--- /dev/null
+++ b/modules/home.legacy/conf/btop/default.nix
@@ -0,0 +1,5 @@
+{config, ...}: {
+  programs.btop = {
+    enable = true;
+  };
+}
diff --git a/modules/home.legacy/conf/dconf/default.nix b/modules/home.legacy/conf/dconf/default.nix
new file mode 100644
index 00000000..dc439e1e
--- /dev/null
+++ b/modules/home.legacy/conf/dconf/default.nix
@@ -0,0 +1,9 @@
+{...}: {
+  # Also see:  https://github.com/gvolpe/dconf2nix
+  dconf.settings = {
+    "org/gnome/desktop/wm/preferences" = {
+      # hide gtk buttons in titelbar
+      button-layout = "";
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/default.nix b/modules/home.legacy/conf/default.nix
new file mode 100644
index 00000000..b6eddec4
--- /dev/null
+++ b/modules/home.legacy/conf/default.nix
@@ -0,0 +1,48 @@
+{...}: {
+  imports = [
+    ./alacritty
+    ./beets
+    ./btop
+    ./dconf
+    ./direnv
+    ./firefox
+    ./gammastep
+    ./git
+    ./gpg
+    ./gtk
+    ./himalaya
+    ./hyfetch
+    ./iamb
+    ./keepassxc
+    ./latexindent
+    ./less
+    ./lf
+    ./mail
+    ./mako
+    ./mbsync
+    ./mpd
+    ./mpv
+    ./mumble
+    ./neomutt
+    ./nix-index
+    ./npm
+    ./nvim
+    ./prusa_slicer
+    ./python
+    ./rclone
+    ./rofi
+    ./ssh
+    ./starship
+    ./swayidle
+    ./swaylock
+    ./taskwarrior
+    ./timewarrior
+    ./tridactyl
+    ./unison
+    ./xdg
+    ./yambar
+    ./yt
+    ./ytcc
+    ./zsh
+  ];
+}
diff --git a/modules/home.legacy/conf/direnv/default.nix b/modules/home.legacy/conf/direnv/default.nix
new file mode 100644
index 00000000..3a7b8add
--- /dev/null
+++ b/modules/home.legacy/conf/direnv/default.nix
@@ -0,0 +1,6 @@
+{...}: {
+  programs.direnv = {
+    enable = true;
+    nix-direnv.enable = true;
+  };
+}
diff --git a/modules/home.legacy/conf/firefox/config/bookmarks/default.nix b/modules/home.legacy/conf/firefox/config/bookmarks/default.nix
new file mode 100644
index 00000000..c612bf4d
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/config/bookmarks/default.nix
@@ -0,0 +1,31 @@
+{
+  lib,
+  pkgs,
+  ...
+}: let
+  bookmarks = [
+    {
+      name = "Feed - Piped";
+      url = "https://piped.video/feed";
+    }
+
+    {
+      name = "DeepL Translate";
+      url = "https://www.deepl.com/translator";
+    }
+
+    {
+      name = "Nix lib";
+      url = "https://teu5us.github.io/nix-lib.html";
+    }
+
+    {
+      name = "Nixpkgs manual";
+      url = "https://ryantm.github.io/nixpkgs/";
+    }
+  ];
+
+  mkBookmarksFile = (import ./lib.nix) {inherit lib pkgs;};
+  bookmarks_file = mkBookmarksFile bookmarks;
+in
+  bookmarks_file
diff --git a/modules/home.legacy/conf/firefox/config/bookmarks/lib.nix b/modules/home.legacy/conf/firefox/config/bookmarks/lib.nix
new file mode 100644
index 00000000..d1d89dd2
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/config/bookmarks/lib.nix
@@ -0,0 +1,49 @@
+{
+  lib,
+  pkgs,
+}: bookmarks: let
+  indent = level:
+    lib.concatStringsSep "" (map (lib.const "  ") (lib.range 1 level));
+
+  bookmarkToHTML = indentLevel: bookmark: ''
+    ${indent indentLevel}<DT><A HREF="${
+      lib.escapeXML bookmark.url
+    }" ADD_DATE="0" LAST_MODIFIED="0">${lib.escapeXML bookmark.name}</A>'';
+
+  directoryToHTML = indentLevel: directory: ''
+    ${indent indentLevel}<DT>${
+      if directory.toolbar
+      then ''<H3 PERSONAL_TOOLBAR_FOLDER="true">Bookmarks Toolbar''
+      else "<H3>${lib.escapeXML directory.name}"
+    }</H3>
+    ${indent indentLevel}<DL><p>
+    ${allItemsToHTML (indentLevel + 1) directory.bookmarks}
+    ${indent indentLevel}</p></DL>'';
+
+  itemToHTMLOrRecurse = indentLevel: item:
+    if item ? "url"
+    then bookmarkToHTML indentLevel item
+    else directoryToHTML indentLevel item;
+
+  allItemsToHTML = indentLevel: bookmarks:
+    lib.concatStringsSep "\n"
+    (map (itemToHTMLOrRecurse indentLevel) bookmarks);
+
+  bookmarkEntries = allItemsToHTML 1 bookmarks;
+in
+  pkgs.writeText "firefox-bookmarks.html" ''
+    <!DOCTYPE NETSCAPE-Bookmark-file-1>
+    <!-- This is an automatically generated file.
+      It will be read and overwritten.
+      DO NOT EDIT! -->
+    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
+    <TITLE>Bookmarks</TITLE>
+    <H1>Bookmarks Menu</H1>
+
+    <DL><p>
+        <DT><H3 ADD_DATE="0" LAST_MODIFIED="0" PERSONAL_TOOLBAR_FOLDER="true">Bookmarks Toolbar</H3>
+        <DL><p>
+        ${bookmarkEntries}
+        </DL><p>
+    </p></DL>
+  ''
diff --git a/modules/home.legacy/conf/firefox/config/chrome/userChrome.css b/modules/home.legacy/conf/firefox/config/chrome/userChrome.css
new file mode 100644
index 00000000..0b3aff77
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/config/chrome/userChrome.css
@@ -0,0 +1,41 @@
+/* thickness of tab when you have too many open tabs */
+.tabbrowser-tab:not([pinned="true"]) {
+  min-width: 10px !important;
+  min-height: 10px !important;
+}
+
+/* tab height
+#TabsToolbar .tabbrowser-tabs {
+min-height: 10px !important;
+}
+*/
+
+/*
+.tabbrowser-tab {min-width: 016px !important;}
+.tabbrowser-tab {clip-width: 016px !important;}
+*/
+
+/* the + button that opens new tabs */
+#TabsToolbar .tabs-newtab-button {
+  margin-left: 10px !important;
+  height: Auto !important;
+}
+
+#main-window[privatebrowsingmode="temporary"] #navigator-toolbox {
+  background-color: #c40944 !important;
+}
+
+/* close button inside a tab */
+.tab-close-button * {
+  width: 10px !important;
+  height: 10px !important;
+}
+
+/* bookmark toolbar */
+#personal-bookmarks .bookmark-item > .toolbarbutton-text {
+  font-size: 10pt !important;
+}
+#personal-bookmarks .bookmark-item > .toolbarbutton-icon {
+  height: 12px !important;
+  width: 12px !important;
+}
diff --git a/modules/home.legacy/conf/firefox/config/extensions/extensions.json b/modules/home.legacy/conf/firefox/config/extensions/extensions.json
new file mode 100644
index 00000000..be05e957
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/config/extensions/extensions.json
@@ -0,0 +1,50 @@
+{
+  "darkreader": {
+    "addonId": "addon@darkreader.org",
+    "default_area": "navbar",
+    "pname": "darkreader",
+    "sha256": "sha256:251c4e7d0a30c0cab006803600e59ab92dcc0c606429740d42677846d4c9ccd6",
+    "url": "https://addons.mozilla.org/firefox/downloads/file/4359254/darkreader-4.9.94.xpi",
+    "version": "4.9.94"
+  },
+  "keepassxc-browser": {
+    "addonId": "keepassxc-browser@keepassxc.org",
+    "default_area": "navbar",
+    "pname": "keepassxc-browser",
+    "sha256": "sha256:a330fa4fc659f04f835802bb0c5df0b9025adced995112cad19d4849a5f1957d",
+    "url": "https://addons.mozilla.org/firefox/downloads/file/4342010/keepassxc_browser-1.9.3.xpi",
+    "version": "1.9.3"
+  },
+  "torproject-snowflake": {
+    "addonId": "{b11bea1f-a888-4332-8d8a-cec2be7d24b9}",
+    "default_area": "navbar",
+    "pname": "torproject-snowflake",
+    "sha256": "sha256:a6b11d5250e6c30c9a0d4b1caaedc446a7fb31bb78088fa14554fdd1e3741cb3",
+    "url": "https://addons.mozilla.org/firefox/downloads/file/4310769/torproject_snowflake-0.8.4.xpi",
+    "version": "0.8.4"
+  },
+  "tridactyl-vim": {
+    "addonId": "tridactyl.vim@cmcaine.co.uk",
+    "default_area": "menupanel",
+    "pname": "tridactyl-vim",
+    "sha256": "sha256:ab63fe1554471c280f234409393172fc58e1bb2ca527f4329d983b028073e19c",
+    "url": "https://addons.mozilla.org/firefox/downloads/file/4261352/tridactyl_vim-1.24.1.xpi",
+    "version": "1.24.1"
+  },
+  "ublock-origin": {
+    "addonId": "uBlock0@raymondhill.net",
+    "default_area": "menupanel",
+    "pname": "ublock-origin",
+    "sha256": "sha256:e2cda9b2a1b0a7f6e5ef0da9f87f28df52f8560587ba2e51a3003121cfb81600",
+    "url": "https://addons.mozilla.org/firefox/downloads/file/4359936/ublock_origin-1.60.0.xpi",
+    "version": "1.60.0"
+  },
+  "vhack-libredirect": {
+    "addonId": "vhack-libredirect@addons.vhack.eu",
+    "default_area": "navbar",
+    "pname": "vhack-libredirect",
+    "sha256": "sha256:2cb6befac6f414e0dd79a11db8905a0d988b98633b74afbe52ffe8006da841f5",
+    "url": "https://addons.mozilla.org/firefox/downloads/file/4351448/vhack_libredirect-2.9.1.xpi",
+    "version": "2.9.1"
+  }
+}
diff --git a/modules/home.legacy/conf/firefox/config/extensions/native_messaging_hosts/default.nix b/modules/home.legacy/conf/firefox/config/extensions/native_messaging_hosts/default.nix
new file mode 100644
index 00000000..9aaa1682
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/config/extensions/native_messaging_hosts/default.nix
@@ -0,0 +1,15 @@
+{pkgs, ...}:
+/*
+++ lib.optional (cfg.enableBrowserpass or false) (lib.getBin browserpass)
+++ lib.optional (cfg.enableBukubrow or false) bukubrow
+++ lib.optional (cfg.enableTridactylNative or false) tridactyl-native
+++ lib.optional (cfg.enableGnomeExtensions or false) gnome-browser-connector
+++ lib.optional (cfg.enableUgetIntegrator or false) uget-integrator
+++ lib.optional (cfg.enablePlasmaBrowserIntegration or false) plasma5Packages.plasma-browser-integration
+++ lib.optional (cfg.enableFXCastBridge or false) fx-cast-bridge
+++ lib.optional (cfg.enableKeePassXC or false) keepassxc
+*/
+with pkgs; [
+  tridactyl-native
+  keepassxc
+]
diff --git a/modules/home.legacy/conf/firefox/config/policies/default.nix b/modules/home.legacy/conf/firefox/config/policies/default.nix
new file mode 100644
index 00000000..02c740f6
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/config/policies/default.nix
@@ -0,0 +1,146 @@
+{
+  config,
+  extensions,
+  ...
+}: let
+  locals = [
+    "en-CA"
+    "de"
+    "sv-SE"
+  ];
+  mkAllowedExtension = extension: {
+    name = extension.addonId;
+    value = {
+      installation_mode = "normal_installed";
+      updates_disabled = true;
+      inherit (extension) default_area;
+      install_url = "file://${builtins.fetchurl {
+        inherit
+          (extension)
+          url
+          sha256
+          ;
+      }}";
+    };
+  };
+  allowedExtensions =
+    builtins.listToAttrs
+    (builtins.map mkAllowedExtension (builtins.attrValues
+        extensions));
+
+  mkBlockedExtension = id: {
+    name = id;
+    value = {
+      install_mode = "blocked";
+    };
+  };
+  blockedExtensions = builtins.listToAttrs (builtins.map mkBlockedExtension [
+    # these are the default search engines
+    "addons-search-detection@mozilla.com"
+    "amazon@search.mozilla.org"
+    "bing@search.mozilla.org"
+    "ddg@search.mozilla.org"
+    "google@search.mozilla.org"
+    "wikipedia@search.mozilla.org"
+  ]);
+
+  language_packs = builtins.listToAttrs (builtins.map
+    (
+      lang: {
+        name = "langpack-${lang}@firefox.mozilla.org";
+        value = {
+          installation_mode = "normal_installed";
+          updates_disabled = true;
+          install_url = "https://releases.mozilla.org/pub/firefox/releases/${config.soispha.firefox.package_version}/linux-x86_64/xpi/${lang}.xpi";
+        };
+      }
+    )
+    locals);
+in {
+  # NOTE: See https://mozilla.github.io/policy-templates for documentation <2023-10-21>
+  policies = {
+    # NixOS manages this already
+    DisableAppUpdate = true;
+
+    DisableFirefoxAccounts = true;
+    DisableFirefoxScreenshots = true;
+
+    # KeepassXC does this for me
+    DisableMasterPasswordCreation = true;
+
+    # I use a self-hosted services for that
+    DisablePocket = true;
+
+    # I don't want to lose my data
+    DisableProfileRefresh = true;
+
+    DisableDeveloperTools = false;
+
+    DisplayBookmarksToolbar = "newtab";
+    DisplayMenuBar = "default-off";
+
+    DNSOverHTTPS = {
+      Enabled = true;
+      Locked = false;
+    };
+    # The concept of a "default browser" does not apply to my NixOS config
+    DontCheckDefaultBrowser = true;
+
+    EnableTrackingProtection = {
+      Value = true;
+      Locked = false;
+      Cryptomining = true;
+      Fingerprinting = true;
+      EmailTracking = true;
+    };
+
+    EncryptedMediaExtensions = {
+      # I want a _free_ config (and I can always just run another browser)
+      Enabled = false;
+      Locked = true;
+    };
+
+    ExtensionSettings =
+      {
+        "*" = {
+          # Blocking the extension install here, also blocks the 'about:debugging' page
+
+          # blocked_install_message = ''
+          #   You can't install a extension manually,
+          #   please specify it in your NixOS configuration
+          # '';
+          installation_mode = "allowed";
+        };
+      }
+      // allowedExtensions
+      // blockedExtensions
+      // language_packs;
+
+    ExtensionUpdate = false;
+
+    # TODO: Add handlers for the default file types <2023-10-21>
+    # Handlers = {
+    # };
+
+    HardwareAcceleration = true;
+
+    # Blocking the extension install here, also blocks the 'about:debugging' page
+    # InstallAddonsPermission = {
+    #   Allowed = [];
+    #   Default = false;
+    # };
+
+    # KeepassXC and such things
+    OfferToSaveLogins = false;
+    PasswordManagerEnabled = false;
+
+    PDFjs = {
+      Enabled = true;
+      # Don't honor documents right to be un-copy-able
+      EnablePermissions = false;
+    };
+
+    SearchBar = "unified";
+    RequestedLocales = locals;
+  };
+}
diff --git a/modules/home.legacy/conf/firefox/config/prefs/default.nix b/modules/home.legacy/conf/firefox/config/prefs/default.nix
new file mode 100644
index 00000000..80c6d274
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/config/prefs/default.nix
@@ -0,0 +1,21 @@
+{
+  pkgs,
+  config,
+  user_js,
+  bookmarks,
+  ...
+}: let
+  user_js_override = pkgs.writeText "user.override.js" (builtins.readFile ./override.js);
+in
+  pkgs.runCommand "user.js" {} ''
+    mkdir $out;
+    cat "${user_js}/user.js" > $out/user.js;
+    cat "${user_js_override}" >> $out/user.js;
+
+    cat << EOF >> $out/user.js;
+    // My bookmarks
+    user_pref("browser.bookmarks.file", "${toString bookmarks}");
+    user_pref("browser.startup.homepage", "file:///home/dt/home.html"); // 0103 // TODO: add this from a flake
+    user_pref("browser.download.dir", "${config.xdg.userDirs.download}");
+    EOF
+  ''
diff --git a/modules/home.legacy/conf/firefox/config/prefs/override.js b/modules/home.legacy/conf/firefox/config/prefs/override.js
new file mode 100644
index 00000000..bf874b33
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/config/prefs/override.js
@@ -0,0 +1,202 @@
+/*
+  0100: STARTUP
+  0200: GEOLOCATION / LANGUAGE / LOCALE
+  0300: QUIETER FOX
+  0400: SAFE BROWSING
+  0600: BLOCK IMPLICIT OUTBOUND
+  0700: DNS / DoH / PROXY / SOCKS / IPv6
+  0800: LOCATION BAR / SEARCH BAR / SUGGESTIONS / HISTORY / FORMS
+  0900: PASSWORDS
+  1000: DISK AVOIDANCE
+  1200: HTTPS (SSL/TLS / OCSP / CERTS / HPKP)
+  1400: FONTS
+  1600: HEADERS / REFERERS
+  1700: CONTAINERS
+  2000: PLUGINS / MEDIA / WEBRTC
+  2400: DOM (DOCUMENT OBJECT MODEL)
+  2600: MISCELLANEOUS
+  2700: ETP (ENHANCED TRACKING PROTECTION)
+  2800: SHUTDOWN & SANITIZING
+  4500: RFP (RESIST FINGERPRINTING)
+  5000: OPTIONAL OPSEC
+  5500: OPTIONAL HARDENING
+  6000: DON'T TOUCH
+  7000: DON'T BOTHER
+  8000: DON'T BOTHER: FINGERPRINTING
+  9000: NON-PROJECT RELATED
+  9999: DEPRECATED / REMOVED / LEGACY / RENAMED
+*/
+
+
+// restore session
+user_pref("browser.startup.page", 3); // 0102
+
+user_pref("browser.newtabpage.enabled", true); // 0104
+
+// disable the geoservice, TODO: don't know if I want this
+//user_pref("geo.provider.use_geoclue", false); // 0202
+
+// TODO: is this something useful?
+user_pref("datareporting.policy.dataSubmissionEnabled", true); // 0330
+
+// enable health reports
+user_pref("datareporting.healthreport.uploadEnabled", true); // 0331
+
+// Do I want to opt-out?
+user_pref("toolkit.telemetry.coverage.opt-out", false); // 0333
+
+// enables studies
+user_pref("app.shield.optoutstudies.enabled", true); // 0340
+
+// I guess that browsing protection is useful
+user_pref("browser.safebrowsing.downloads.remote.enabled", true); // 0403
+
+// TODO: does this (-> set to false) make things slower?
+user_pref("network.prefetch-next", true); // 0601
+
+// enable ipv6 because the rest of the system uses it
+user_pref("network.dns.disableIPv6", false); // 0701
+
+// TRR only
+user_pref("network.trr.mode", 3); // 0710
+
+// I trust my search engine
+user_pref("keyword.enabled", true); // 801
+user_pref("browser.search.suggest.enabled", true); // 0804
+user_pref("browser.urlbar.suggest.searches", true); // 0804
+// TODO: no idea what this does, enabling it
+user_pref("browser.urlbar.showSearchTerms.enabled", true); // 9004
+
+// prefetch urls, if the get auto completed
+user_pref("browser.urlbar.speculativeConnect.enabled", true); // 0805
+
+// Disable autoScrolling (clicking with the mouse wheel)
+user_pref("general.autoScroll", false);
+
+// add new tabs after the current one
+user_pref("browser.tabs.insertAfterCurrent", true);
+
+// TODO: I might want to enable this
+//user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); // 0807
+
+// TODO: enable form and search history?
+//user_pref("browser.formfill.enable", false); // 0810
+
+// disk cache should help performance
+user_pref("browser.cache.disk.enable", true); // 1001
+
+// store extra session data (form content, cookies and POST data) 0: everywhere
+user_pref("browser.sessionstore.privacy_level", 0); // 1003
+
+// Disable unsafe passive content (images) on https sites
+user_pref("security.mixed_content.block_display_content", true); // 1241
+
+// Disable the eme banner
+user_pref("browser.eme.ui.enabled", false); // 2022
+
+// Don't delete my precious temp files
+user_pref("browser.helperApps.deleteTempFileOnExit", false); // 2603
+
+// Download to the download dir
+user_pref("browser.download.useDownloadDir", true); // 2651
+
+// Open the download panel
+user_pref("browser.download.alwaysOpenPanel", true); // 2652
+
+// Block after custom ruleset
+user_pref("browser.contentblocking.category", "custom"); // 2701
+
+// set the custom settings // 7016
+user_pref("network.cookie.cookieBehavior", 1);
+user_pref("network.http.referer.disallowCrossSiteRelaxingDefault", true);
+user_pref("network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation", true);
+user_pref("privacy.partition.network_state.ocsp_cache", true);
+user_pref("privacy.query_stripping.enabled", true);
+user_pref("privacy.trackingprotection.enabled", true);
+user_pref("privacy.trackingprotection.socialtracking.enabled", true);
+user_pref("privacy.trackingprotection.cryptomining.enabled", true);
+user_pref("privacy.trackingprotection.fingerprinting.enabled", true);
+
+
+// I might want to change that, when it hinders session restore
+//user_pref("privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage", false); // 2720
+
+// I like my history very much!
+user_pref("privacy.sanitize.sanitizeOnShutdown", false); // 2810
+
+// The downsides (light theme + potential breakages):
+//user_pref("privacy.resistFingerprinting", true); // 4501
+user_pref("privacy.resistFingerprinting.letterboxing", false); // 4504
+
+// I would like to keep my gl, even in the web
+user_pref("webgl.disabled", false); // 4520
+
+// I like my service workers and am using a service using them.
+user_pref("dom.serviceWorkers.enabled", true); // 7017
+
+// I've got a password manager already
+user_pref("signon.rememberSignons", false); // 5003
+
+// Do not track header
+user_pref("privacy.donottrackheader.enabled", true); // 7015
+
+// Allow my custom css
+user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
+
+// might improve performance TODO:
+user_pref("gfx.webrender.all", true);
+
+// disable updates (pretty pointless with nix)
+user_pref("extensions.update.autoUpdateDefault", false);
+user_pref("extensions.update.enabled", false);
+user_pref("app.update.channel", "default");
+
+user_pref("browser.ctrlTab.recentlyUsedOrder", false);
+
+user_pref("browser.download.useDownloadDir", true);
+user_pref("browser.download.folderList", 2); // TODO:
+user_pref("browser.download.viewableInternally.typeWasRegistered.svg", true);
+user_pref("browser.download.viewableInternally.typeWasRegistered.webp", true);
+user_pref("browser.download.viewableInternally.typeWasRegistered.xml", true);
+
+// TODO: what does this do?
+user_pref("browser.search.widget.inNavBar", true);
+
+user_pref("browser.shell.checkDefaultBrowser", false);
+user_pref("browser.tabs.loadInBackground", true);
+user_pref("browser.urlbar.placeholderName", "Brave");
+
+// Set the tabs and bookmarks
+user_pref("browser.tabs.inTitlebar", 1);
+user_pref("browser.toolbars.bookmarks.visibility", "always");
+user_pref("browser.places.importBookmarksHTML", true);
+
+// Theme
+user_pref("extensions.activeThemeID", "firefox-alpenglow@mozilla.org");
+user_pref("extensions.extensions.activeThemeID", "firefox-alpenglow@mozilla.org");
+
+// highlight all entries when searching
+user_pref("findbar.highlightAll", true);
+
+// Set the default position for the developer toolbox
+user_pref("devtools,toolbox.host", "right");
+user_pref("devtools,toolsidebar-width.inspector", 700);
+
+// Don't bother me with translations
+user_pref("browser.translations.automaticallyPopup", true);
+user_pref("browser.translations.neverTranslateLanguages", "de");
+
+// Put all downloads into the downloads directory
+user_pref("browser.download.start_downloads_in_tmp_dir", false);
+
+// TODO:
+//user_pref("extensions.webcompat.enable_picture_in_picture_overrides", true);
+//user_pref("extensions.webcompat.enable_shims", true);
+//user_pref("extensions.webcompat.perform_injections", true);
+//user_pref("extensions.webcompat.perform_ua_overrides", true);
+
+// onlykey / copied from a yubikey config
+//user_pref("security.webauth.u2f", true);
+//user_pref("security.webauth.webauthn", true);
+//user_pref("security.webauth.webauthn_enable_softtoken", true);
+//user_pref("security.webauth.webauthn_enable_usbtoken", true);
diff --git a/modules/home.legacy/conf/firefox/config/search/engines/default.nix b/modules/home.legacy/conf/firefox/config/search/engines/default.nix
new file mode 100644
index 00000000..a47c77df
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/config/search/engines/default.nix
@@ -0,0 +1,84 @@
+{pkgs, ...}: {
+  # DEFAULT
+  "Brave Search" = {
+    urls = [{template = "https://search.brave.com/search?q={searchTerms}";}];
+    icon = ./logos/brave.svg;
+    definedAliases = ["@bs"];
+  };
+
+  # NIX
+  "Nix Packages" = {
+    urls = [{template = "https://search.nixos.org/packages?type=packages&query={searchTerms}";}];
+    icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
+    definedAliases = ["@np"];
+  };
+
+  "NixOS Options" = {
+    urls = [{template = "https://search.nixos.org/options?type=options&query={searchTerms}";}];
+    icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
+    definedAliases = ["@no"];
+  };
+  "HomeManager Options" = {
+    urls = [{template = "https://home-manager-options.extranix.com/?query={searchTerms}&release=master";}];
+    icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
+    definedAliases = ["@nh"];
+  };
+
+  "Nixpkgs issues" = {
+    urls = [{template = "https://github.com/NixOS/nixpkgs/issues?q=is%3Aissue+is%3Aopen+{searchTerms}";}];
+    icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
+    definedAliases = ["@ni"];
+  };
+  "Nixpkgs pull requests" = {
+    urls = [{template = "https://github.com/NixOS/nixpkgs/pulls?q=is%3Apr+is%3Aopen+{searchTerms}";}];
+    icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
+    definedAliases = ["@nr"];
+  };
+
+  "Nixpkgs pull requests tracker" = {
+    urls = [{template = "https://nixpk.gs/pr-tracker.html?pr={searchTerms}";}];
+    icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
+    definedAliases = ["@nt"];
+  };
+  "NixOS Wiki" = {
+    urls = [{template = "https://wiki.nixos.org/w/index.php?search={searchTerms}";}];
+    icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
+    definedAliases = ["@nw"];
+  };
+
+  # RUST
+  "Rust std" = {
+    urls = [{template = "https://doc.rust-lang.org/std/?search={searchTerms}";}];
+    icon = ./logos/rust_std.svg;
+    definedAliases = ["@rs"];
+  };
+  "Rust tokio" = {
+    urls = [{template = "https://docs.rs/tokio/latest/tokio/index.html?search={searchTerms}";}];
+    icon = ./logos/rust_tokio.png;
+    definedAliases = ["@rt"];
+  };
+
+  # OTHER
+  "Google Scholar" = {
+    urls = [{template = "https://scholar.google.com/scholar?hl=en&q={searchTerms}";}];
+    icon = ./logos/google_scholar.ico;
+    definedAliases = ["@gs"];
+  };
+  "Wikipedia" = {
+    urls = [{template = "https://en.wikipedia.org/wiki/{searchTerms}";}];
+    icon = ./logos/wikipedia.svg;
+    definedAliases = ["@wp"];
+  };
+  "Arch Wiki" = {
+    urls = [{template = "https://wiki.archlinux.org/index.php?search={searchTerms}";}];
+    icon = ./logos/arch_linux.svg;
+    definedAliases = ["@aw"];
+  };
+
+  "Wikipedia (en)".metaData.hidden = true;
+  "DuckDuckGo".metaData.hidden = true;
+  "Bing".metaData.hidden = true;
+  "Google".metaData.hidden = true;
+  "Amazon.de".metaData.hidden = true;
+  "eBay".metaData.hidden = true;
+}
diff --git a/modules/home.legacy/conf/firefox/config/search/engines/logos/arch_linux.svg b/modules/home.legacy/conf/firefox/config/search/engines/logos/arch_linux.svg
new file mode 100644
index 00000000..949b5c5f
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/config/search/engines/logos/arch_linux.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64"><path d="M31.994-.006c-2.85 6.985-4.568 11.554-7.74 18.332 1.945 2.062 4.332 4.462 8.2 7.174-4.168-1.715-7-3.437-9.136-5.224-4.06 8.47-10.42 20.538-23.327 43.73C10.145 58.15 18 54.54 25.338 53.16c-.315-1.354-.494-2.818-.48-4.345l.012-.325c.16-6.5 3.542-11.498 7.547-11.158s7.118 5.886 6.957 12.386a18.36 18.36 0 0 1-.409 3.491c7.25 1.418 15.03 5.02 25.037 10.797l-5.42-10.026c-2.65-2.053-5.413-4.726-11.05-7.62 3.875 1.007 6.65 2.168 8.8 3.467-17.1-31.84-18.486-36.07-24.35-49.833z" fill="#1793d1" fill-rule="evenodd"/></svg>
\ No newline at end of file
diff --git a/modules/home.legacy/conf/firefox/config/search/engines/logos/brave.svg b/modules/home.legacy/conf/firefox/config/search/engines/logos/brave.svg
new file mode 100644
index 00000000..09dd2e42
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/config/search/engines/logos/brave.svg
@@ -0,0 +1,25 @@
+<svg width='100' height='129' xmlns='http://www.w3.org/2000/svg'>
+  <style>
+    @keyframes bounce{to{transform:translateY(5%)}}
+  </style>
+  <defs>
+    <linearGradient x1='0%' y1='50.706%' y2='50.706%' id='a'>
+      <stop stop-color='#F50' offset='0%'/>
+      <stop stop-color='#FF2000' offset='100%'/>
+    </linearGradient>
+    <linearGradient x1='2.148%' y1='50.706%' y2='50.706%' id='b'>
+      <stop stop-color='#FA3F2E' offset='0%'/>
+      <stop stop-color='#FF2000' offset='46.132%'/>
+      <stop stop-color='#FF2000' offset='100%'/>
+    </linearGradient>
+    <linearGradient x1='50%' y1='100%' x2='96.767%' y2='100%' id='c'>
+      <stop stop-color='#FFF' offset='0%'/>
+      <stop stop-color='#F4F4F4' offset='100%'/>
+    </linearGradient>
+  </defs>
+  <g fill='none' fill-rule='evenodd' style='animation:bounce 1s infinite alternate ease-in-out'>
+    <path d='M99.914 37.337l-3.616-9.848 2.512-5.657a1.941 1.941 0 0 0-.391-2.148l-6.835-6.936a11.014 11.014 0 0 0-11.464-2.676l-1.91.665L68.226.014H31.524L21.67 10.876l-1.858-.656a11.04 11.04 0 0 0-11.574 2.7l-6.956 7.067a1.541 1.541 0 0 0-.309 1.711l2.625 5.872L0 37.413l2.329 8.875 10.605 40.45a20.6 20.6 0 0 0 7.949 11.545s12.876 9.11 25.583 17.384c1.117.729 2.286 1.26 3.54 1.241 1.254.017 2.422-.512 3.537-1.244 14.271-9.384 25.562-17.417 25.562-17.417a20.61 20.61 0 0 0 7.936-11.556l10.555-40.467 2.318-8.887z' fill='url(#a)'/>
+    <path d='M31.565.033l-9.73 10.987-.803-.554c-6.463-2.01-9.277-.647-13.447 3.23l-.923.996 5.093-.996c1.407 0 5.342.133 6.167.416 3.473 1.195 4.437 2.593 6.662 4.059l1.069.359 10.385 2.083a4.21 4.21 0 0 0 1.96-.096l4.879-1.602c4.416-1.711 9.227-1.79 14.238 0l4.786 1.622a4.645 4.645 0 0 0 2.272.14l.859-.162 10.493-2.344.17-.422.723-.583c4.463-3.249 8.017-4.822 14.867-4.152h.527l-.315-.424c-5.711-4.543-9.193-3.178-12.401-2.124l-.877.3L68.281.033H31.565z' fill='url(#b)'/>
+    <path d='M53.472 72.856l1.388.576c1.496.62 3.903 1.73 5.346 2.464l4.096 2.085c1.444.733 1.548 2.106.23 3.05l-3.493 2.505a73.241 73.241 0 0 0-4.602 3.644l-4.406 3.853c-1.21 1.059-3.17 1.064-4.356.014a605.63 605.63 0 0 0-4.368-3.823 71.635 71.635 0 0 0-4.614-3.612l-3.481-2.465c-1.324-.937-1.23-2.317.207-3.066l4.118-2.148a80.664 80.664 0 0 1 5.33-2.495l1.388-.579c1.495-.621 2.835-1.131 2.979-1.131h1.258c.142 0 1.484.506 2.98 1.128zm34.992-33.039l-.263.946c-.703.878-2.184 2.563-3.293 3.746L74.713 55.38c-1.11 1.182-1.735 2.665-1.102 4.159l1.375 3.399c.632 1.492.694 3.962.088 5.62a10.013 10.013 0 0 1-3.065 4.315l-1.064.87c-1.255 1.026-3.478 1.296-4.941.598l-4.696-2.234c-1.462-.695-3.643-2.153-4.848-3.24l-4.443-4.005a2.07 2.07 0 0 1-.109-2.968l10.82-7.32c1.342-.908 2.052-2.587 1.29-4.018l-3.847-7.02c-.763-1.432-1.068-3.334-.679-4.228.39-.894 1.948-2.095 3.464-2.67l12.559-4.68c1.514-.575 1.433-1.169-.179-1.32l-8.025-.6c-1.613-.151-2.796.084-4.355.52l-6.074 1.508c-1.56.436-1.89 2.1-1.597 3.695l2.506 13.626c.294 1.596.437 3.202.32 3.571-.118.37-1.506.964-3.086 1.323l-2.077.473c-1.58.359-4.167.375-5.75.038l-2.514-.537c-1.584-.339-2.976-.918-3.094-1.286-.118-.369.024-1.978.317-3.572l2.49-13.629c.292-1.595-.04-3.257-1.6-3.692l-6.076-1.5c-1.56-.436-2.743-.666-4.355-.514l-8.025.606c-1.613.153-1.692.747-.178 1.32l12.567 4.665c1.514.574 3.074 1.774 3.464 2.668.392.892.088 2.794-.672 4.227l-3.84 7.021c-.76 1.433-.048 3.112 1.295 4.018l10.83 7.31a2.07 2.07 0 0 1-.106 2.967l-4.439 4.012c-1.202 1.087-3.382 2.547-4.844 3.246l-4.693 2.24c-1.461.698-3.686.432-4.94-.592L27.72 72.9c-1.392-1.136-2.455-2.626-3.122-4.447-.558-1.524-.5-3.992.13-5.486l1.372-3.4c.63-1.494.003-2.977-1.108-4.158L14.786 44.552c-1.11-1.18-2.593-2.864-3.296-3.74l-.265-.947-.166-.527c-.015-.607.201-2.542.447-3.066.246-.521 1.189-2.049 2.096-3.393l2.184-3.239a91.717 91.717 0 0 1 3.484-4.75l3.201-4.023c1.01-1.268 1.87-2.3 2-2.292.006-.008 1.312.236 2.902.541l4.85.933c1.59.306 3.344.642 3.898.746.554.105 2.267-.218 3.809-.719l3.487-1.131c1.54-.502 3.879-1.162 5.195-1.468l1.219.018 1.22-.02c1.315.305 3.654.962 5.195 1.46l3.49 1.13c1.541.498 3.255.82 3.808.714.555-.105 2.308-.445 3.898-.753l4.848-.937c1.59-.308 2.897-.553 2.99-.545.042-.008.903 1.021 1.914 2.29l3.206 4.019a90.663 90.663 0 0 1 3.49 4.746l2.188 3.235c.909 1.342 2.328 3.786 2.416 4.342.09.556.15 1.507.136 2.114l-.166.527z' fill='url(#c)'/>
+  </g>
+</svg>
diff --git a/modules/home.legacy/conf/firefox/config/search/engines/logos/google_scholar.ico b/modules/home.legacy/conf/firefox/config/search/engines/logos/google_scholar.ico
new file mode 100644
index 00000000..85d0c664
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/config/search/engines/logos/google_scholar.ico
Binary files differdiff --git a/modules/home.legacy/conf/firefox/config/search/engines/logos/rust_std.svg b/modules/home.legacy/conf/firefox/config/search/engines/logos/rust_std.svg
new file mode 100644
index 00000000..0091b5a8
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/config/search/engines/logos/rust_std.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="100%" height="100%" viewBox="0 0 1200 800" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
+    <g id="Layer-1" serif:id="Layer 1">
+        <g transform="matrix(1,0,0,1,597.344,637.02)">
+            <path d="M0,-279.559C-121.238,-279.559 -231.39,-264.983 -312.939,-241.23L-312.939,-38.329C-231.39,-14.575 -121.238,0 0,0C138.76,0 262.987,-19.092 346.431,-49.186L346.431,-230.37C262.987,-260.465 138.76,-279.559 0,-279.559" style="fill:rgb(165,43,0);fill-rule:nonzero;"/>
+        </g>
+        <g transform="matrix(1,0,0,1,1068.75,575.642)">
+            <path d="M0,-53.32L-14.211,-82.761C-14.138,-83.879 -14.08,-84.998 -14.08,-86.121C-14.08,-119.496 -48.786,-150.256 -107.177,-174.883L-107.177,2.643C-79.932,-8.849 -57.829,-21.674 -42.021,-35.482C-46.673,-16.775 -62.585,21.071 -75.271,47.686C-96.121,85.752 -103.671,118.889 -102.703,120.53C-102.086,121.563 -94.973,110.59 -84.484,92.809C-60.074,58.028 -13.82,-8.373 -4.575,-25.287C5.897,-44.461 0,-53.32 0,-53.32" style="fill:rgb(165,43,0);fill-rule:nonzero;"/>
+        </g>
+        <g transform="matrix(1,0,0,1,149.064,591.421)">
+            <path d="M0,-99.954C0,-93.526 1.293,-87.194 3.788,-80.985L-4.723,-65.835C-4.723,-65.835 -11.541,-56.989 0.465,-38.327C11.055,-21.872 64.1,42.54 92.097,76.271C104.123,93.564 112.276,104.216 112.99,103.187C114.114,101.554 105.514,69.087 81.631,32.046C70.487,12.151 57.177,-14.206 49.189,-33.675C71.492,-19.559 100.672,-6.755 135.341,4.265L135.341,-204.17C51.797,-177.622 0,-140.737 0,-99.954" style="fill:rgb(165,43,0);fill-rule:nonzero;"/>
+        </g>
+        <g transform="matrix(-65.8097,-752.207,-752.207,65.8097,621.707,796.312)">
+            <path d="M0.991,-0.034L0.933,0.008C0.933,0.014 0.933,0.02 0.933,0.026L0.99,0.069C0.996,0.073 0.999,0.08 0.998,0.087C0.997,0.094 0.992,0.1 0.986,0.103L0.92,0.133C0.919,0.139 0.918,0.145 0.916,0.15L0.964,0.203C0.968,0.208 0.97,0.216 0.968,0.222C0.965,0.229 0.96,0.234 0.953,0.236L0.882,0.254C0.88,0.259 0.877,0.264 0.875,0.27L0.91,0.33C0.914,0.336 0.914,0.344 0.91,0.35C0.907,0.356 0.9,0.36 0.893,0.361L0.82,0.365C0.817,0.369 0.813,0.374 0.81,0.379L0.832,0.445C0.835,0.452 0.833,0.459 0.828,0.465C0.824,0.47 0.816,0.473 0.809,0.472L0.737,0.462C0.733,0.466 0.729,0.47 0.724,0.474L0.733,0.544C0.734,0.551 0.731,0.558 0.725,0.562C0.719,0.566 0.711,0.568 0.704,0.565L0.636,0.542C0.631,0.546 0.626,0.549 0.621,0.552L0.615,0.621C0.615,0.629 0.61,0.635 0.604,0.638C0.597,0.641 0.589,0.641 0.583,0.638L0.521,0.602C0.52,0.603 0.519,0.603 0.518,0.603L0.406,0.729C0.406,0.729 0.394,0.747 0.359,0.725C0.329,0.705 0.206,0.599 0.141,0.543C0.109,0.52 0.089,0.504 0.09,0.502C0.093,0.499 0.149,0.509 0.217,0.554C0.278,0.588 0.371,0.631 0.38,0.619C0.38,0.619 0.396,0.604 0.406,0.575C0.406,0.575 0.406,0.575 0.406,0.575C0.407,0.576 0.407,0.576 0.406,0.575C0.406,0.575 0.091,0.024 0.305,-0.531C0.311,-0.593 0.275,-0.627 0.275,-0.627C0.266,-0.639 0.178,-0.598 0.12,-0.566C0.055,-0.523 0.002,-0.513 0,-0.516C-0.001,-0.518 0.018,-0.533 0.049,-0.555C0.11,-0.608 0.227,-0.707 0.256,-0.726C0.289,-0.748 0.301,-0.73 0.301,-0.73L0.402,-0.615C0.406,-0.614 0.41,-0.613 0.415,-0.613L0.47,-0.658C0.475,-0.663 0.483,-0.664 0.49,-0.662C0.497,-0.66 0.502,-0.655 0.504,-0.648L0.522,-0.58C0.527,-0.578 0.533,-0.576 0.538,-0.574L0.602,-0.608C0.608,-0.612 0.616,-0.612 0.623,-0.608C0.629,-0.605 0.633,-0.599 0.633,-0.592L0.637,-0.522C0.642,-0.519 0.647,-0.515 0.652,-0.512L0.721,-0.534C0.728,-0.536 0.736,-0.535 0.741,-0.531C0.747,-0.526 0.75,-0.519 0.749,-0.512L0.738,-0.443C0.742,-0.439 0.746,-0.435 0.751,-0.431L0.823,-0.439C0.83,-0.44 0.837,-0.437 0.842,-0.432C0.847,-0.426 0.848,-0.419 0.845,-0.412L0.821,-0.347C0.824,-0.342 0.828,-0.337 0.831,-0.332L0.903,-0.327C0.911,-0.327 0.917,-0.322 0.92,-0.316C0.924,-0.31 0.924,-0.302 0.92,-0.296L0.883,-0.236C0.885,-0.231 0.887,-0.226 0.889,-0.22L0.959,-0.202C0.966,-0.2 0.972,-0.195 0.974,-0.188C0.976,-0.181 0.974,-0.174 0.969,-0.168L0.92,-0.116C0.921,-0.111 0.923,-0.105 0.924,-0.099L0.988,-0.068C0.995,-0.065 0.999,-0.059 1,-0.052C1.001,-0.045 0.997,-0.038 0.991,-0.034ZM0.406,0.575C0.406,0.575 0.406,0.575 0.406,0.575C0.406,0.575 0.406,0.575 0.406,0.575Z" style="fill:url(#_Linear1);fill-rule:nonzero;"/>
+        </g>
+        <g transform="matrix(1,0,0,1,450.328,483.629)">
+            <path d="M0,167.33C-1.664,165.91 -2.536,165.068 -2.536,165.068L140.006,153.391C23.733,0 -69.418,122.193 -79.333,135.855L-79.333,167.33L0,167.33Z" style="fill-rule:nonzero;"/>
+        </g>
+        <g transform="matrix(1,0,0,1,747.12,477.333)">
+            <path d="M0,171.974C1.663,170.554 2.536,169.71 2.536,169.71L-134.448,159.687C-18.12,0 69.421,126.835 79.335,140.497L79.335,171.974L0,171.974Z" style="fill-rule:nonzero;"/>
+        </g>
+        <g transform="matrix(-1.53e-05,-267.211,-267.211,1.53e-05,809.465,764.23)">
+            <path d="M1,-0.586C1,-0.586 0.768,-0.528 0.524,-0.165L0.5,-0.064C0.5,-0.064 1.1,0.265 0.424,0.731C0.424,0.731 0.508,0.586 0.405,0.197C0.405,0.197 0.131,0.376 0.14,0.736C0.14,0.736 -0.275,0.391 0.324,-0.135C0.324,-0.135 0.539,-0.691 1,-0.736L1,-0.586Z" style="fill:url(#_Linear2);fill-rule:nonzero;"/>
+        </g>
+        <g transform="matrix(1,0,0,1,677.392,509.61)">
+            <path d="M0,-92.063C0,-92.063 43.486,-139.678 86.974,-92.063C86.974,-92.063 121.144,-28.571 86.974,3.171C86.974,3.171 31.062,47.615 0,3.171C0,3.171 -37.275,-31.75 0,-92.063" style="fill-rule:nonzero;"/>
+        </g>
+        <g transform="matrix(1,0,0,1,727.738,435.209)">
+            <path d="M0,0.002C0,18.543 -10.93,33.574 -24.408,33.574C-37.885,33.574 -48.814,18.543 -48.814,0.002C-48.814,-18.539 -37.885,-33.572 -24.408,-33.572C-10.93,-33.572 0,-18.539 0,0.002" style="fill:white;fill-rule:nonzero;"/>
+        </g>
+        <g transform="matrix(1,0,0,1,483.3,502.984)">
+            <path d="M0,-98.439C0,-98.439 74.596,-131.467 94.956,-57.748C94.956,-57.748 116.283,28.178 33.697,33.028C33.697,33.028 -71.613,12.745 0,-98.439" style="fill-rule:nonzero;"/>
+        </g>
+        <g transform="matrix(1,0,0,1,520.766,436.428)">
+            <path d="M0,0C0,19.119 -11.27,34.627 -25.173,34.627C-39.071,34.627 -50.344,19.119 -50.344,0C-50.344,-19.124 -39.071,-34.627 -25.173,-34.627C-11.27,-34.627 0,-19.124 0,0" style="fill:white;fill-rule:nonzero;"/>
+        </g>
+        <g transform="matrix(-1.53e-05,-239.021,-239.021,1.53e-05,402.161,775.388)">
+            <path d="M0.367,0.129C-0.364,-0.441 0.223,-0.711 0.223,-0.711C0.259,-0.391 0.472,-0.164 0.472,-0.164C0.521,-0.548 0.525,-0.77 0.525,-0.77C1.203,-0.256 0.589,0.161 0.589,0.161C0.627,0.265 0.772,0.372 0.906,0.451L1,0.77C0.376,0.403 0.367,0.129 0.367,0.129Z" style="fill:url(#_Linear3);fill-rule:nonzero;"/>
+        </g>
+    </g>
+    <defs>
+        <linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,1.38778e-17,-1,0,-0.000650515)"><stop offset="0" style="stop-color:rgb(247,76,0);stop-opacity:1"/><stop offset="0.33" style="stop-color:rgb(247,76,0);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(244,150,0);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,-1,0,1.23438e-06)"><stop offset="0" style="stop-color:rgb(204,58,0);stop-opacity:1"/><stop offset="0.15" style="stop-color:rgb(204,58,0);stop-opacity:1"/><stop offset="0.74" style="stop-color:rgb(247,76,0);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(247,76,0);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear3" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,1.32349e-23,1.32349e-23,-1,0,-9.1568e-07)"><stop offset="0" style="stop-color:rgb(204,58,0);stop-opacity:1"/><stop offset="0.15" style="stop-color:rgb(204,58,0);stop-opacity:1"/><stop offset="0.74" style="stop-color:rgb(247,76,0);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(247,76,0);stop-opacity:1"/></linearGradient>
+    </defs>
+</svg>
diff --git a/modules/home.legacy/conf/firefox/config/search/engines/logos/rust_tokio.png b/modules/home.legacy/conf/firefox/config/search/engines/logos/rust_tokio.png
new file mode 100644
index 00000000..f1de55ff
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/config/search/engines/logos/rust_tokio.png
Binary files differdiff --git a/modules/home.legacy/conf/firefox/config/search/engines/logos/wikipedia.svg b/modules/home.legacy/conf/firefox/config/search/engines/logos/wikipedia.svg
new file mode 100644
index 00000000..dc32f984
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/config/search/engines/logos/wikipedia.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [<!ENTITY st0 "opacity:.22;fill:#231F20;"><!ENTITY st1 "opacity:.34;fill:url(#SVGID_25_);"><!ENTITY st2 "opacity:.19;fill:#231F20;"><!ENTITY st3 "opacity:.18;fill:url(#SVGID_42_);"><!ENTITY st4 "opacity:.73;fill:#FFF;"><!ENTITY st5 "opacity:.35;fill:url(#SVGID_6_);"><!ENTITY st6 "opacity:.53;fill:#FFF;"><!ENTITY st7 "opacity:.43;fill:url(#SVGID_23_);"><!ENTITY st8 "opacity:.25;fill:#231F20;"><!ENTITY st9 "opacity:.53;fill:url(#SVGID_9_);"><!ENTITY st10 "opacity:.88;fill:#231F20;"><!ENTITY st11 "opacity:.31;fill:url(#SVGID_24_);"><!ENTITY st12 "fill:#232323;"><!ENTITY st13 "opacity:.68;fill:url(#SVGID_22_);"><!ENTITY st14 "opacity:.28;fill:#231F20;"><!ENTITY st15 "opacity:.38;fill:url(#SVGID_43_);"><!ENTITY st16 "fill:url(#SVGID_1_);"><!ENTITY st17 "fill:url(#SVGID_2_);"><!ENTITY st18 "fill:url(#SVGID_4_);"><!ENTITY st19 "opacity:.45;fill:url(#SVGID_5_);"><!ENTITY st20 "opacity:.17;fill:#FFF;"><!ENTITY st21 "opacity:.3;fill:#505050;"><!ENTITY st22 "fill:#616161;"><!ENTITY st23 "fill:#FFF;"><!ENTITY st24 "opacity:.2;fill:url(#SVGID_41_);"><!ENTITY st25 "opacity:.69;fill:url(#SVGID_3_);"><!ENTITY st26 "opacity:.45;fill:url(#SVGID_39_);"><!ENTITY st27 "opacity:.96;fill:url(#SVGID_10_);"><!ENTITY st28 "opacity:.3;fill:#FFF;"><!ENTITY st29 "fill:#9FA2A3;"><!ENTITY st30 "opacity:.73;fill:url(#SVGID_8_);"><!ENTITY st31 "fill:#6B6B6B;"><!ENTITY st32 "opacity:.36;fill:#231F20;"><!ENTITY st33 "opacity:.5;fill:url(#SVGID_7_);"><!ENTITY st34 "opacity:.1;fill:#232323;"><!ENTITY st35 "fill:url(#SVGID_11_);"><!ENTITY st36 "fill:url(#SVGID_12_);"><!ENTITY st37 "fill:url(#SVGID_13_);"><!ENTITY st38 "fill:url(#SVGID_14_);"><!ENTITY st39 "fill:url(#SVGID_15_);"><!ENTITY st40 "fill:url(#SVGID_16_);"><!ENTITY st41 "fill:url(#SVGID_17_);"><!ENTITY st42 "fill:url(#SVGID_18_);"><!ENTITY st43 "fill:url(#SVGID_19_);"><!ENTITY st44 "fill:url(#SVGID_20_);"><!ENTITY st45 "fill:url(#SVGID_21_);"><!ENTITY st46 "fill:url(#SVGID_26_);"><!ENTITY st47 "fill:url(#SVGID_27_);"><!ENTITY st48 "fill:url(#SVGID_28_);"><!ENTITY st49 "fill:url(#SVGID_29_);"><!ENTITY st50 "fill:url(#SVGID_30_);"><!ENTITY st51 "fill:url(#SVGID_31_);"><!ENTITY st52 "fill:url(#SVGID_33_);"><!ENTITY st53 "fill:url(#SVGID_34_);"><!ENTITY st54 "fill:url(#SVGID_35_);"><!ENTITY st55 "fill:url(#SVGID_36_);"><!ENTITY st56 "fill:url(#SVGID_37_);"><!ENTITY st57 "fill:url(#SVGID_38_);"><!ENTITY st58 "fill:url(#SVGID_40_);"><!ENTITY st59 "opacity:.1;fill:#231F20;"><!ENTITY st60 "opacity:.5;fill:#141414;"><!ENTITY st61 "opacity:.38;fill:#231F20;"><!ENTITY st62 "opacity:.83;fill:url(#SVGID_32_);">]><svg version="1.1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="103px" height="94px" viewBox="0 0 103 94"><title>Wikipedia logo version 2</title><radialGradient id="SVGID_1_" cx="244.5713" cy="-427.1392" r="68.6868" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#FFF"/><stop offset=".4835" stop-color="#EAEAEB"/><stop offset=".9451" stop-color="#A9ABAE"/><stop offset="1" stop-color="#999B9E"/></radialGradient><path style="&st16;" d="M49.85,17.003c0.014-0.606-0.392-1.27-0.392-1.27l-0.025-0.058c0,0-0.487-0.949-1.301-1.228c-0.815-0.278-1.478,0.342-1.478,0.342s-0.114,0.131-0.428,0.494c-0.313,0.364-0.507,0.666-1.198,0.938c-0.692,0.271-1.379,0.204-1.743,0.033c-0.365-0.172-0.457-0.537-0.457-0.537s-0.229-0.722-0.313-1.049c-0.086-0.331-0.308-1.694-0.308-1.694s-0.492-2.747-0.535-3.304c0,0,1.475-0.126,3.686-0.775c2.3-0.673,3.043-1.206,3.043-1.206s-0.432-0.156-0.484-0.662c-0.051-0.507-0.089-1.19-0.089-1.19s-0.089-0.5,0.483-1.139c0.572-0.64,1.354-0.863,1.763-0.953c0.41-0.089,1.281-0.17,2.092-0.134c0.813,0.038,1.266,0.112,1.594,0.291c0.327,0.178,0.356,0.61,0.356,0.61l-0.009,1.146c0,0-0.035,0.402,0.262,0.529c0,0,0.505,0.305,2.197,0.133c0,0,0.719-0.126,1.845-0.46c1.125-0.335,4.129-1.229,4.554-1.341c0.426-0.111,0.953-0.291,1.645-0.469c0.693-0.179,2.041-0.626,2.309-0.73c0.27-0.104,1.811-0.618,2.928-0.81c1.114-0.195,2.226-0.186,2.813,0.149c0,0,0.357,0.304,0.521,0.662c0.162,0.358,0.476,0.863,0.92,1.088c0.457,0.227,0.754,0.371,1.877,0.273c0,0,0.021-0.096-0.396-0.37c-0.417-0.277-0.991-0.701-0.991-0.701s-0.334-0.245-0.408-0.447c-0.072-0.202-0.043-0.306-0.043-0.306l0.877-1.406c0,0,0-0.172,0.506-0.238c0.506-0.067,1.074-0.134,1.742-0.313c0.67-0.178,0.789-0.312,0.789-0.312l0.578,0.178c0,0,3.547,2.853,4.655,3.583l0.198-0.239c0,0,0.437,0.018,0.828,0.172c0.393,0.154,0.979,0.562,0.979,0.562s1.613,1.31,2.072,2.2l0.222,0.679l-0.102,0.161c0,0,0.919,1.307,2.096,2.602c0,0,1.229,1.664,1.689,2.09c0,0-0.108-0.399-0.203-0.849l0.339-0.226l0.2-0.144l0.617,0.259c3.575,4.811,6.435,10.424,8.144,16.328l-0.121,0.484l0.396,0.501c1.129,4.212,1.729,8.643,1.729,13.211c0,1.122-0.038,2.236-0.109,3.339l-0.304,0.511l0.226,0.555C99.95,72.645,78.057,93.131,51.38,93.131c-18.502,0-34.702-9.854-43.637-24.601l-0.102-0.365l-0.205-0.151c-3.387-5.742-5.682-12.205-6.595-19.104l0.212-0.524l-0.336-0.482c-0.213-1.892-0.322-3.812-0.322-5.758c0-2.985,0.255-5.909,0.748-8.755l0.25-0.562l-0.087-0.328C2.463,26.451,4.689,20.783,7.78,15.7l0.684-0.384l0.081,0.032c0,0,0.233-0.169,0.354-0.217l0.076-0.023c0,0,1.179-1.971,1.625-2.601c0,0,0.542-0.348,0.745-0.407c0,0,0.124-0.016,0.189,0.076c0,0,0.496-0.432,1.699-2.054c0.004-0.005,0.007-0.011,0.012-0.017c0,0-0.114-0.076-0.131-0.174c-0.018-0.097,0.108-0.591,0.173-0.717s0.108-0.156,0.108-0.156s1.722-2.032,3.151-3.238c0,0,0.26-0.202,0.678-0.25c0,0,1.472-0.613,3.264-2.184c0,0,0.051-0.289,0.478-0.858c0.428-0.57,1.456-1.163,2.222-1.337c0.764-0.174,0.896-0.038,0.896-0.038l0.064,0.065l0.515,0.766c0,0,0.565-0.316,1.413-0.604c0.847-0.289,0.979-0.262,0.979-0.262l0.823,1.336l-0.987,2c0,0-0.644,1.421-1.655,2.185c0,0-0.472,0.284-1.12,0.127c-0.648-0.157-1.072,0.333-1.072,0.333l-0.17,0.14c0,0,0.14-0.024,0.346-0.103c0,0,0.158,0.065,0.274,0.223c0.114,0.158,0.913,1.175,0.913,1.175s0.005,0.837-0.415,1.938c-0.419,1.1-1.467,2.891-1.467,2.891s-0.733,1.424-1.075,2.253c-0.342,0.829-0.515,1.765-0.488,2.262c0,0,0.187,0.062,0.707-0.202c0.655-0.332,1.083,0.027,1.083,0.027s0.719,0.53,1.041,0.881c0.262,0.289,0.802,1.765,0.209,3.224c0,0-0.402,1.008-1.377,1.724c0,0-0.216,0.332-1.529,0.174c-0.368-0.043-0.585-0.276-1.372-0.2c-0.785,0.077-1.231,0.815-1.231,0.815l0.013-0.024c-0.692,0.999-1.154,2.458-1.154,2.458l-0.057,0.165c0,0-0.241,0.509-0.292,1.752c-0.053,1.284,0.284,3.109,0.284,3.109s7.876-1.387,9.88-0.055l0.58,0.532c0,0,0.046,0.174-0.031,0.376c-0.08,0.204-0.375,0.673-0.987,1.113c-0.611,0.438-1.222,1.583-0.313,2.304c1.034,0.818,1.691,0.766,3.43,0.468c1.74-0.297,2.898-1.269,2.898-1.269s0.972-0.72,0.783-1.628c-0.188-0.908-1.017-1.189-1.017-1.189s-0.658-0.423-0.141-1.238c0,0,0.141-0.689,2.553-1.316c2.414-0.626,6.812-1.52,10.557-1.989c0,0-2.539-8.223-0.738-9.289c0,0,0.438-0.296,1.224-0.408l0.72-0.037c0.131-0.027,0.343,0.005,0.796,0.045c0.453,0.038,1.001,0.076,1.678-0.441c0.676-0.519,0.697-0.819,0.697-0.819"/><radialGradient id="SVGID_2_" cx="197.6416" cy="-371.8613" r="0" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#FFF"/><stop offset=".4835" stop-color="#EAEAEB"/><stop offset=".9451" stop-color="#A9ABAE"/><stop offset="1" stop-color="#999B9E"/></radialGradient><path style="&st17;" d="M-16.122-14.641"/><linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="456.2744" y1="510.1602" x2="502.7757" y2="582.9122" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#8A8A8A"/><stop offset=".5687" stop-color="#606060"/><stop offset=".5914" stop-color="#FFF"/><stop offset=".6116" stop-color="#585858"/><stop offset="1" stop-color="#303030"/></linearGradient><path style="&st25;" d="M82.447,79.307l0.451,0.168c-0.032,0.061-0.067,0.119-0.101,0.179c-0.864,1.573-0.936,1.927-1.36,2.253c-0.424,0.326-0.58,0.539-1.443,0.695c-0.865,0.156-1.771,1.175-1.771,1.175s-0.875,0.835-0.48,0.866c0.396,0.025,1.177-0.609,1.177-0.609s0.497-0.354,0.625-0.255c0.125,0.099-0.539,0.751-0.539,0.751s-1.161,1.176-2.479,1.982l-0.396,0.213c0,0,1.869-1.392,2.764-2.395c0,0,0.185-0.271-0.185,0.057c-0.369,0.325-1.332,0.821-1.741,0.821c-0.41,0,0.016-0.563,0.016-0.563s0.596-0.768,1.812-1.758c1.22-0.994,2.239-0.922,2.239-0.922s0.227,0.043,0.253-0.271c0.028-0.313,0.312-0.863,0.312-0.863s0.453-1.032,1.674-2.749c1.218-1.714,1.77-2.195,1.77-2.195s1.588-1.629,2.423-3.259c0,0,0.581-1.006-0.364-0.255c-0.951,0.753-2.211,1.7-3.44,2.014c-1.233,0.312-1.349-0.836-1.349-0.836s-0.271-1.884,1.049-3.344c1.188-1.316,2.492-1.273,3.684-1.415c1.188-0.144,2.21-1.571,2.21-1.571s0.82-0.922,1.289-3.797c0.218-1.337,0.067-2.244-0.144-2.818l0.021-0.647l-0.368-0.021c-0.078-0.106-0.135-0.153-0.135-0.153s-0.297-0.299-0.607-0.524c-0.313-0.227-0.692-0.649-1.063-1.457c0,0-1.019-2.11-0.792-5.156c0.227-3.047,2.762-2.762,2.762-2.762s1.475,0.143,1.76-0.298c0.283-0.438,0.553-0.993,0.649-2.223c0.101-1.233-0.396-2.408-0.396-2.408s-0.186-0.609-1.049-0.708c-0.863-0.1-1.051,0.169-1.051,0.169s-0.255,0.072-0.723,1.09c-0.471,1.021-0.75,1.488-1.602,1.702c-0.849,0.211-2.023,0.099-2.549-0.992c-0.515-1.072-1.757-3.693-2.351-5.772l0.084-0.735l-0.325-0.471c-0.063-0.396-0.117-0.846-0.13-1.236c-0.026-0.992-0.312-2.097-0.638-3.2c-0.326-1.106-1.459-2.972-1.672-3.399c-0.324-0.667-0.621-0.949-1.021-0.893c-0.396,0.056-0.339,0.056-0.513,0.056c-0.168,0-0.266,0.212-0.311,0.425c-0.042,0.212-0.375,1.315-1.104,1.812c-0.752,0.51-1.147,0.737-2.438,0.85c0,0-1.487,0.099-2.661-2.097C71,29.36,71.301,27.96,71.398,27.45c0.099-0.51,0.539-1.247,1.229-1.388c0.693-0.141,1.119-0.184,1.119-0.184s1.122-0.01,1.603-0.071c0.551-0.071,0.283-1.006,0.283-1.006s-0.361-2.371-2.348-4.318l-0.096-0.487l-0.756-0.381c-1.881-2.04-4.354-5.354-4.354-5.354s-1.105-1.048-0.17-2.493c0,0,0.438-0.963,1.742-0.792c0.419,0.081,0.457,0.123,0.818,0.199c0.481,0.099,1.008,0.225,1.478-0.398c0,0,0.438-0.792-0.271-1.812s-0.923-1.742-1.785-1.687c0,0-0.397-0.055-0.793,0.384C68.702,8.1,67.682,8.378,67.086,8.44c-0.679,0.071-2.252-0.528-3.156-2.082c-0.513-0.874-0.752-1.35-0.865-1.595l0.231-0.34l0.72,0.08c0.186,0.358,0.549,1.056,0.978,1.812c0.552,0.978,1.048,1.118,1.373,1.261c0.325,0.141,1.049-0.071,1.431-0.283c0.385-0.213,0.766-0.695,1.43-0.738c0.668-0.043,1.629,0.071,2.311,0.793c0.682,0.723,1.531,2.224,1.459,2.932c-0.068,0.708-0.111,1.403-1.035,1.699c-0.921,0.298-1.303,0.043-1.884-0.084c-0.581-0.128-0.864-0.072-1.104,0.211c-0.242,0.284-0.512,0.892-0.412,1.162c0.102,0.27,0.186,0.454,0.75,1.262c0.566,0.806,3.474,4.25,4.031,4.766l-0.152,0.698l0.968,0.176c0.625,0.724,1.358,1.668,1.687,2.263c0.493,0.907,0.752,2.337,0.779,3.002c0.025,0.666-0.299,0.963-0.299,0.963s-0.313,0.524-2.012,0.524c-1.517,0-1.614,0.297-1.614,0.297s-0.47,0.467-0.369,1.615c0.103,1.146,0.616,2.344,1.56,3.37c0.778,0.851,2.252-0.006,2.748-0.295c0.51-0.299,0.822-1.264,0.822-1.264s0.102-1.217,1.432-1.217c1.377,0,1.969,1.318,1.969,1.318s0.963,1.295,1.941,4.121c0.481,1.389,0.566,2.281,0.566,2.281l0.126,1.668l-0.513,0.892l0.732,0.312c0.135,0.541,0.348,1.24,0.686,2.044c0,0,1.008,2.381,1.443,3.286c0.44,0.906,0.896,0.766,1.264,0.808c0,0,0.85,0.113,1.16-0.282c0.313-0.398,0.61-1.092,0.61-1.092s0.663-1.812,2.138-1.657c1.475,0.156,1.84,1.092,2.096,2.168c0.256,1.074,0.313,3.229-0.479,4.545c-0.798,1.318-1.688,1.135-1.688,1.135s-1.813-0.17-2.225,0.213c-0.41,0.382-0.623,0.724-0.681,1.613c-0.058,0.894,0.026,2.336,0.751,4.08c0.631,1.523,1.146,1.361,1.432,1.728c0.284,0.368,1.188,1.204,1.104,3.272c-0.082,2.067-0.791,4.149-1.586,5.439c-0.793,1.288-1.997,2.053-1.997,2.053s-0.338,0.211-1.076,0.311c-0.735,0.102-1.784,0.086-2.534,0.513c-0.75,0.426-0.992,1.501-1.063,1.971c-0.069,0.468-0.112,1.529,0.921,1.413c1.034-0.109,2.577-1.4,2.577-1.4s1.486-1.104,1.685-0.752c0.199,0.354-0.636,1.784-0.636,1.784s-1.035,1.562-1.898,2.523c-0.709,0.791-1.641,1.868-2.431,3.102L82.447,79.307L82.447,79.307z"/><linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="425.2861" y1="502.9512" x2="445.7861" y2="598.6606" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#A8A9AB"/><stop offset="1" stop-color="#636668"/></linearGradient><path style="&st18;" d="M23.441,22.732c-0.007,0.008-0.013,0.018-0.021,0.025C23.428,22.75,23.434,22.74,23.441,22.732z"/><linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="421.0684" y1="504.3701" x2="441.068" y2="597.7433" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#A8A9AB"/><stop offset="1" stop-color="#636668"/></linearGradient><path style="&st19;" d="M38.188,89.707l0.163,0.01c-0.163-0.147-0.37-0.281-0.62-0.414c-0.699-0.371-3.731-2.375-4.669-3.009c-0.936-0.633-2.575-1.7-3.297-1.478c-0.554,0.172-0.475,0.394-0.804,0.556c-0.331,0.157-0.687,0.052-1.504-0.384c-0.818-0.434-1.424-0.725-3.02-2.239c-1.245-1.185,1.595-0.118,1.595-0.118s0.619,0.262,0.343-0.385c-0.277-0.646-1.676-2.333-2.994-3.691c-1.068-1.098-1.674-1.86-2.435-2.97l-0.566-0.661l0.007-0.166c-0.018-0.024-0.035-0.054-0.052-0.078c0,0-1.874-3.377-1.676-4.617c0,0,0.068-0.828,1.241-1.188c0.817-0.251,0.71,0.542,3.112,0.975c0,0,2.07,0.559,2.611-0.945c0.539-1.505-0.567-3.393-0.567-3.393s-1.449-2.656-3.244-2.758c-0.95-0.053-0.692,0.586-2.125,0.926c0,0-1.913,0.184-2.519-0.963c-0.734-1.389-1.04-2.969-1.015-4.022c0.022-1,0.054-1.079,0.119-1.371c0.045-0.206,0.192-0.582,0.254-1.128l-0.134-0.667l0.204-0.501c0.002-0.26-0.004-0.535-0.021-0.83c-0.091-1.66-0.213-4.221-0.437-5.71c-0.223-1.491-0.633-3.798-1.991-3.866c0,0-0.671-0.051-1.634,0.885c-0.884,0.856-1.684-0.708-1.728-1.663c-0.053-1.121,0.131-2.254,0.409-2.795c0.277-0.541,1.042-0.567,1.186-0.555c0.146,0.013,0.555,0.171,1.043,0.474c0.488,0.305,1.16,0.305,1.557-0.092c0.395-0.394,0.947-0.856,1.173-2.598c0.224-1.741,0.224-3.547,0.013-5.71l-0.225-0.484l1.339-0.289c-0.001-0.017-0.021-0.126-0.032-0.193c0-0.002,0-0.003,0-0.005c-0.002-0.017-0.005-0.032-0.007-0.049c-0.001-0.003-0.001-0.005-0.001-0.007c-0.003-0.019-0.007-0.038-0.009-0.057c0-0.001-0.001-0.001-0.001-0.003c-0.003-0.02-0.006-0.042-0.009-0.062c0-0.001,0-0.001,0-0.001c-0.004-0.023-0.007-0.045-0.011-0.068c0-0.004-0.001-0.006-0.001-0.008c-0.002-0.022-0.006-0.045-0.008-0.066c-0.001-0.006-0.001-0.01-0.003-0.017c-0.002-0.023-0.005-0.046-0.009-0.069c-0.001-0.004-0.001-0.007-0.002-0.014c-0.003-0.026-0.007-0.05-0.011-0.076c0-0.002,0-0.004,0-0.005c-0.004-0.024-0.008-0.05-0.011-0.076c-0.001-0.007-0.001-0.01-0.003-0.017c-0.002-0.025-0.006-0.052-0.009-0.08c-0.001-0.005-0.001-0.011-0.002-0.021c-0.005-0.027-0.007-0.053-0.011-0.081c-0.001-0.006-0.002-0.013-0.002-0.019c-0.002-0.029-0.006-0.058-0.01-0.087c0-0.004-0.001-0.008-0.003-0.014c-0.002-0.028-0.005-0.056-0.009-0.082c-0.001-0.006-0.001-0.011-0.002-0.016c-0.002-0.031-0.006-0.06-0.01-0.09c0-0.006-0.001-0.015-0.002-0.021c-0.004-0.03-0.006-0.061-0.011-0.09c0-0.007-0.001-0.015-0.002-0.022c-0.003-0.03-0.006-0.062-0.01-0.093c0-0.006-0.002-0.012-0.002-0.019c-0.003-0.032-0.005-0.063-0.009-0.094c0-0.002,0-0.005,0-0.009c-0.004-0.032-0.005-0.066-0.01-0.1c0-0.005,0-0.012-0.001-0.02c-0.002-0.033-0.005-0.065-0.007-0.098c-0.001-0.007-0.001-0.014-0.001-0.021c-0.004-0.033-0.006-0.067-0.008-0.099c0-0.005,0-0.012-0.001-0.02c-0.002-0.033-0.006-0.069-0.007-0.102c0-0.003,0-0.007-0.001-0.01c-0.002-0.033-0.004-0.066-0.006-0.1c-0.001-0.006-0.001-0.011-0.001-0.017c-0.001-0.032-0.003-0.068-0.005-0.1c0-0.008,0-0.014-0.001-0.021c-0.001-0.031-0.002-0.065-0.003-0.099c-0.001-0.006-0.001-0.013-0.001-0.021c-0.002-0.033-0.003-0.066-0.004-0.1c0-0.005,0-0.009,0-0.014c-0.001-0.032-0.001-0.066-0.002-0.099c0-0.003,0-0.005,0-0.009c0-0.034,0-0.067-0.001-0.101c0-0.005,0-0.013,0-0.017c0-0.033,0-0.067,0-0.098c0-0.005,0.001-0.012,0.001-0.019c0-0.032,0-0.065,0.001-0.095c0-0.005,0-0.009,0-0.015c0.001-0.033,0.001-0.065,0.003-0.099c0.052-1.244,0.292-1.752,0.292-1.752l0.057-0.164c0,0,0.46-1.459,1.154-2.459l-0.013,0.024c0,0,0.446-0.738,1.231-0.814c0.785-0.079,1.004,0.156,1.371,0.2c0.04,0.004,0.078,0.008,0.115,0.013c0.013,0.002,0.025,0.002,0.037,0.004c0.025,0.002,0.051,0.004,0.075,0.006c0.014,0.001,0.027,0.003,0.041,0.003c0.021,0.001,0.043,0.003,0.064,0.004c0.014,0.001,0.028,0.002,0.041,0.003c0.02,0.001,0.04,0.001,0.058,0.003c0.014,0,0.026,0,0.042,0c0.019,0.001,0.036,0.002,0.055,0.002c0.013,0.001,0.026,0.001,0.038,0.002c0.017,0,0.034,0,0.051,0c0.011,0,0.023,0,0.034,0c0.017,0,0.033,0,0.05,0c0.011,0,0.02-0.001,0.032-0.001c0.016-0.001,0.031-0.001,0.046-0.001c0.011-0.001,0.02-0.001,0.03-0.002c0.016,0,0.03-0.002,0.045-0.002c0.009,0,0.019,0,0.026-0.001c0.016-0.001,0.03-0.002,0.044-0.004c0.006,0,0.016-0.001,0.023-0.002c0.015-0.001,0.029-0.001,0.044-0.003c0.006-0.001,0.013-0.002,0.02-0.002c0.016-0.002,0.03-0.004,0.045-0.008c0.004,0,0.008,0,0.013-0.001c0.019-0.002,0.036-0.005,0.052-0.008l0,0c0.035-0.006,0.068-0.014,0.098-0.021c0,0,0,0,0.002-0.002c0.012-0.002,0.026-0.005,0.039-0.01c0.002,0,0.004,0,0.008-0.001c0.009-0.003,0.019-0.006,0.028-0.009c0.004,0,0.007-0.002,0.01-0.003c0.009-0.003,0.019-0.007,0.026-0.009c0.002-0.001,0.005-0.002,0.008-0.003c0.008-0.003,0.015-0.006,0.021-0.009c0.004-0.001,0.006-0.003,0.009-0.003c0.007-0.004,0.014-0.005,0.02-0.009c0.003-0.001,0.006-0.003,0.008-0.004c0.005-0.002,0.012-0.005,0.019-0.007c0.001-0.001,0.003-0.002,0.005-0.004c0.005-0.003,0.01-0.005,0.016-0.007c0.002-0.002,0.003-0.002,0.006-0.004c0.004-0.001,0.008-0.005,0.012-0.007c0.002-0.001,0.004-0.001,0.005-0.003c0.004-0.002,0.008-0.006,0.012-0.008c0.001,0,0.003-0.002,0.004-0.003c0.003-0.003,0.007-0.004,0.011-0.007c0.001-0.001,0.001-0.001,0.002-0.003c0.004-0.001,0.006-0.005,0.008-0.008h0.002c0.003-0.002,0.005-0.005,0.008-0.007l0.001-0.001c0.002-0.002,0.004-0.004,0.006-0.006s0.002-0.002,0.003-0.003c0.001,0,0.002-0.002,0.002-0.002c0.001-0.003,0.001-0.003,0.003-0.005c0.003-0.001,0.003-0.004,0.003-0.004c0.328-0.241,0.593-0.516,0.797-0.775c0.014-0.017,0.026-0.033,0.04-0.05c0.002-0.004,0.005-0.009,0.008-0.012c0.013-0.015,0.026-0.031,0.038-0.048c0.002-0.004,0.006-0.008,0.007-0.011c0.012-0.018,0.025-0.033,0.038-0.05c0.001,0,0.001,0,0.001-0.001c0.039-0.054,0.075-0.109,0.109-0.159c0-0.002,0.002-0.004,0.003-0.007c0.01-0.016,0.02-0.029,0.03-0.044c0.001-0.004,0.005-0.007,0.007-0.011c0.008-0.014,0.017-0.029,0.024-0.042c0.003-0.004,0.005-0.009,0.009-0.013c0.008-0.014,0.017-0.028,0.024-0.042l0.001-0.002c0.017-0.027,0.032-0.055,0.046-0.079c0.002-0.003,0.004-0.008,0.007-0.012c0.005-0.009,0.01-0.021,0.016-0.03c0.003-0.007,0.007-0.014,0.012-0.02c0.004-0.008,0.01-0.017,0.014-0.024c0.002-0.008,0.006-0.017,0.011-0.023c0.004-0.007,0.009-0.016,0.012-0.022c0.004-0.007,0.007-0.014,0.011-0.021c0.002-0.006,0.007-0.011,0.01-0.018c0.066-0.13,0.097-0.207,0.097-0.207c0.594-1.459,0.052-2.935-0.21-3.224c-0.32-0.354-1.041-0.883-1.041-0.883s-0.426-0.357-1.08-0.025c-0.521,0.264-0.711,0.201-0.711,0.201c-0.024-0.498,0.149-1.432,0.491-2.263c0.341-0.829,1.075-2.253,1.075-2.253s1.047-1.792,1.467-2.89c0.418-1.102,0.415-1.94,0.415-1.94s-0.795-1.019-0.91-1.177c-0.115-0.158-0.272-0.223-0.272-0.223c-0.205,0.078-0.345,0.103-0.345,0.103l0.169-0.14c0,0,0.424-0.492,1.073-0.334c0.648,0.158,1.119-0.126,1.119-0.126c1.011-0.764,1.654-2.187,1.654-2.187l0.988-1.997L27.059,1.12c0,0-0.131-0.028-0.979,0.259c0,0-0.773,1.905-1.725,3.087c0,0-0.374,0.552-0.664,0.416c-0.289-0.134-0.629-0.144-0.91-0.085c-0.281,0.06-1.156,0.349-1.948,1.413c-0.79,1.064-0.883,1.863-0.458,2.101c0.425,0.238,1.045-0.076,1.42-0.407c0.375-0.333,0.638-0.485,0.757-0.47c0.118,0.02,0.093,0.315,0.068,0.41c-0.026,0.094-0.154,1.364-1.625,3.913c-0.369,0.64-0.845,1.589-1.069,2.046l0.608,0.447l-0.999,0.503c-0.266,0.758-0.605,1.945-0.471,2.61c0.204,1.011,1.158,1.011,1.158,1.011s0.621,0.027,1.344-0.348c0.722-0.375,0.892,1.242,0.892,1.505c0,0.264-0.007,1.726-1.02,2.442c0,0-0.409,0.313-0.985,0.313c-0.579,0-0.954-0.169-0.954-0.169s-0.984-0.272-1.59,0.083c-0.604,0.358-1.326,1.098-1.897,2.17c-0.569,1.072-1.045,2.986-1.019,4.397c0.02,1.111,0.18,2.162,0.291,2.879l0.667,0.435l-0.543,0.623c0.079,1.136,0.168,3.363,0.155,4.109c-0.018,0.911-0.154,2.84-1.115,3.292c0,0-0.324,0.171-0.868-0.238s-1.132-0.426-1.37-0.435c-0.238-0.007-1.285,0.162-1.692,1.311c-0.408,1.145-0.375,2.688-0.29,3.597c0.086,0.91,0.876,2.458,1.872,2.458c0,0,0.484,0.035,1.055-0.553c0.568-0.586,0.902-0.637,1.156-0.629c0.255,0.009,0.749,0.272,1.072,2.851c0.307,2.442,0.437,4.442,0.414,6.668l0.605,0.392l-0.758,0.768c-0.042,0.199-0.089,0.417-0.142,0.626c-0.169,0.682-0.187,1.364-0.024,2.569c0.161,1.21,0.811,3.72,1.754,4.375c1.252,0.871,2.071,0.856,2.916,0.791c0.842-0.067,1.424-0.712,1.424-0.712s0.331-0.342,0.685-0.237c0.356,0.104,1.346,0.66,2.058,2.084c0.713,1.425,0.871,2.992-0.316,3.272c-1.187,0.272-3.231-0.846-3.231-0.846s-1.161-0.647-2.109,0.064c-0.951,0.713-0.977,1.807-0.502,3.15c0.261,0.738,0.782,1.938,1.513,3.188l0.721,0.302l-0.193,0.551c0.492,0.748,1.055,1.479,1.678,2.105c0,0,2.466,2.729,3.838,4.457c0,0,0.08,0.157-0.158,0.016c-0.238-0.146-1.266-0.621-1.82-0.566c-0.555,0.054-0.45,0.395-0.45,0.395s0.238,1.254,4.01,3.365c0,0,1.359,0.766,2.216,0.766c0,0,0.277,0.039,0.619-0.346c0.346-0.381,0.45-0.341,0.688-0.262c0.237,0.076,0.553,0.249,1.741,1.105c1.188,0.857,3.496,2.176,4.325,2.731c0.83,0.555,0.793,0.657,0.621,1.054c-0.171,0.396,0.593,0.619,0.593,0.619s1.899,0.855,2.928,0.846c1.029-0.016,1.464-0.119,2.097,0.012c0.632,0.133,1.28,0.291,1.345,0.346c0.066,0.053-0.315,0.038-0.315,0.038s-2.362-0.276-2.494-0.21c-0.13,0.066,0.014,0.184,0.99,0.436v0.006c1.245,0.217,2.507,0.387,3.782,0.51c-0.489-0.061-2.52-0.322-3.823-0.713c0,0-0.131-0.078,0.173-0.014c0.303,0.065,2.018,0.225,2.466,0.157c0.448-0.065-0.092-0.274-0.092-0.274s-0.897-0.425-2.889-0.582c0,0-0.803-0.055-1.503,0.014c-0.699,0.066-1.41-0.264-1.41-0.264s-1.028-0.317-0.78-0.646c0.126-0.165,0.137-0.336,0.065-0.502L38.188,89.707L38.188,89.707z"/><linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="444.7598" y1="550.8145" x2="473.8418" y2="550.8145" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#231F20"/><stop offset="1" stop-color="#474747"/></linearGradient><path style="&st5;" d="M62.342,86.16l-0.438,0.646c0.096,0.655-0.104,0.875-0.254,1.119c-0.156,0.26-0.59,0.592-0.375,1.185c0.218,0.59,1.687,0.401,2.535,0.144c0.852-0.26,1.569-0.49,2.134-0.693c0.562-0.198,0.719,0.086,0.719,0.086s0.246,0.175-0.574,0.606c-0.821,0.433-2.336,0.634-3.055,0.72c-0.724,0.086-0.506-0.043-1.586,0.33c-1.082,0.377-0.07,0.707-0.07,0.707c2.435,0.635,4.188,0.115,4.188,0.115l0.332-0.097c0.27-0.077,0.535-0.161,0.803-0.244c-2.021,0.456-3.326,0.149-3.739,0.095c-0.431-0.058-0.778-0.145-0.88-0.361c-0.102-0.215,0.479-0.2,0.479-0.2s1.683-0.188,3.24-0.69c1.557-0.506,1.932-0.98,1.871-1.341c-0.057-0.358-0.848-0.332-1.785-0.028c-0.937,0.305-2.334,0.75-2.662,0.821c-0.334,0.07-0.691,0.06-0.812-0.146c-0.114-0.203-0.216-0.53,0.146-0.905c0.36-0.376,0.402-0.694,0.402-0.694c0.055-0.254,0.057-0.523,0.021-0.8L62.342,86.16l0.545-0.118c-0.298-1.124-1.052-2.218-1.279-2.577c-0.314-0.507-0.836-0.793-2.393-0.535c-1.556,0.26-3.386,1.035-3.386,1.035s-1.888,0.997-3.298,0.812c-1.413-0.188-1.703-1.614-1.688-2.063c0.015-0.447,0.304-0.835,1.039-1.123c0.735-0.289,2.465-0.678,4.985-0.808s3.458-1.771,3.458-1.771c0.33-0.478,0.922-1.543-0.489-2.336c-1.41-0.791-1.441-0.593-2.119-1.107c-0.678-0.52-1.412-1.153-1.701-2.033c-0.025-0.084-0.066-0.197-0.104-0.292l-0.849-0.558l0.41-0.371c-0.34-0.67-0.693-1.271-0.693-1.271s-1.281-1.902-0.246-3.703c1.038-1.803,2.736-2.348,2.736-2.348s1.5-0.332,2.996,0.016c1.418,0.324,2.133-0.219,2.133-0.219s0.865-0.374,1.123-2.102c0.264-1.729-0.014-4.943-2.316-5.578c-2.307-0.633-3.527,0.563-3.527,0.563s-1.24,1.369-1.644,1.57c-0.404,0.201-1.022,0.563-1.022,0.563s-0.867,0.519-1.453,0.648c-0.393,0.086-1.791-1.771-1.933-3.201c-0.133-1.316-0.401-2.388-0.306-5.096l-0.485-0.63l0.537-0.533c0.101-2.999-0.417-5.116-1.188-6.461c-0.807-1.412-2.119-2.161-2.766-2.478c-0.648-0.318-2.147-0.462-3.17-0.086c-1.023,0.374-1.239,0.678-1.613,1.326c-0.376,0.648-0.836,0.605-0.836,0.605s-1.427,0.043-1.888-2.133c-0.646-3.049,0.359-4.035,0.359-4.035s0.318-0.476,1.369-0.619c1.053-0.144,1.73,0.115,2.537,0.315c0.806,0.202,1.41,0.116,2.419-0.374c1.008-0.491,1.442-1.297,1.238-2.739c-0.195-1.393-0.255-1.742-1.483-5.964l-0.875-0.46l0.583-0.579C44.87,23.032,44.8,20.35,44.8,20.35c-0.106-0.977,0.049-1.292,0.598-1.54c0.576-0.259,1.116-0.175,1.934-0.123c0.818,0.053,1.425-0.079,1.847-0.316c0.422-0.237,1.581-0.87,1.504-2.162c-0.08-1.292-1.109-2.824-1.953-3.351c-0.843-0.528-1.953-0.316-2.558,0.131c-0.606,0.45-0.845,1.029-1.214,1.214c-0.369,0.183-0.895,0.605-1.45,0.474c-0.554-0.132-0.581-1.371-0.818-2.77c-0.153-0.907-0.271-1.611-0.338-1.989l-0.678-0.254c0.044,0.557,0.535,3.304,0.535,3.304s0.223,1.364,0.308,1.692c0.086,0.329,0.314,1.05,0.314,1.05s0.092,0.364,0.456,0.535c0.365,0.172,1.052,0.24,1.743-0.032c0.692-0.271,0.886-0.572,1.199-0.938c0.315-0.364,0.429-0.493,0.429-0.493s0.663-0.622,1.478-0.343c0.813,0.278,1.299,1.228,1.299,1.228l0.028,0.06c0,0,0.403,0.661,0.392,1.269v-0.057c0,0-0.022,0.301-0.697,0.818c-0.676,0.519-1.226,0.479-1.678,0.442c-0.454-0.04-0.666-0.072-0.797-0.045l-0.719,0.038C45.178,18.303,44.74,18.6,44.74,18.6c-1.8,1.064,0.736,9.288,0.736,9.288l0,0L45.2,28.501c0,0,0.514,2.052,0.904,3.378c0.388,1.326,0.562,2.637,0.62,2.91c0.058,0.274,0.044,0.762-0.317,1.051c-0.359,0.289-1.239,0.534-1.425,0.562c-0.187,0.029-0.535-0.042-0.996-0.201c-0.462-0.158-0.922-0.187-0.922-0.187s-1.11-0.188-2.291,0.173c-1.182,0.359-2.076,1.569-2.148,3.083c-0.071,1.513-0.057,2.278,0.535,3.617c0.59,1.34,1.657,2.104,2.463,2.118c0.808,0.014,1.469-0.403,1.931-1.051c0.459-0.65,0.59-0.751,0.59-0.751c0.548-0.302,1.944-0.433,2.651-0.172c0.708,0.258,2.007,1.073,2.723,2.679c0.579,1.298,0.76,2.75,0.729,5.363l0.584,0.448l-0.61,0.703c-0.007,0.246-0.016,0.498-0.026,0.761c-0.143,3.876,0.72,5.864,0.72,5.864c0.491,1.065,1.023,1.83,1.745,2.318c0.719,0.489,1.699,0.156,2.018,0c0.315-0.158,1.194-0.563,1.943-1.037c0.749-0.477,0.725-0.679,1.629-1.515c0.907-0.833,2.076-0.604,2.076-0.604s1.107,0.028,1.74,1.313c0.637,1.283,0.509,3.109,0.347,3.773c-0.158,0.662-0.444,1.097-1.063,0.979c-0.621-0.114-1.645-0.217-2.019-0.231c-0.375-0.014-1.433-0.049-2.394,0.203c-0.938,0.244-2.205,0.92-3.414,2.883c-0.938,1.52-0.478,3.013-0.262,3.603c0.17,0.462,0.635,1.104,1.043,1.896l0.756,0.252l-0.35,0.656c0.398,0.963,0.701,1.493,1.305,2.151c0.648,0.705,1.672,1.251,2.881,1.714c1.213,0.462,0.662,1.282,0.662,1.282c-0.69,1.497-2.75,1.557-3.354,1.628c-0.604,0.07-1.872,0.188-3.058,0.447c-1.182,0.261-2.291,0.418-2.954,1.182c-0.661,0.764-0.402,1.557-0.013,2.393c0.388,0.834,1.427,1.28,2.853,1.226c1.426-0.058,2.35-0.476,3.214-0.851s2.362-0.809,2.81-0.937c0.445-0.129,1.051-0.39,1.498,0.26c0.482,0.701,0.994,1.697,1.229,2.45L62.342,86.16L62.342,86.16z"/><path style="&st34;" d="M101.566,51.162c0,0,0.347-3.236,0.457-4.392c0.018-0.173,0.031-0.343,0.045-0.513l-0.098-0.241c-0.459,5.815-0.938,7.727-0.938,7.727s0.013-0.037,0.031-0.101c0.189-0.817,0.357-1.646,0.51-2.48C101.568,51.162,101.566,51.162,101.566,51.162L101.566,51.162z"/><path style="&st34;" d="M91.268,12.579l0.328,0.413l0.279,0.5c1.021,1.648,2.846,4.295,2.846,4.295s0.739,0.958,0.905,0.968c0.164,0.01-0.084-0.741-0.084-0.741s-0.271-0.979,0.517,0.298c0.73,1.19,1.207,2.359,1.317,2.72c0.114,0.361,0.042,0.411,0.042,0.411s-0.146,0.072-0.146,0.33c0,0.505,0.496,1.659,0.496,1.659s1.545,3.926,2.07,5.563c0.526,1.641,1.133,4.368,1.133,4.368s0.187,0.804,0.207,1.174c0.021,0.371-0.063,0.381-0.229,0.186c-0.164-0.196-0.329-0.072-0.329-0.072s-0.175,0.072-0.175,0.773c0,0.7,0.085,2.346,0.217,3.615c0.152,1.505,0.616,2.133,0.616,2.133s0.413,0.618,0.526-0.577c0.096-1.028,0.185-0.228,0.185-0.228c0.196,1.557,0.062,4.544,0.03,4.955c-0.019,0.218-0.032,0.433-0.049,0.64l0.133-0.221c0.201-2.971,0.06-5.359,0.06-5.359s-0.144-1.323-0.3-1.311c-0.155,0.01-0.211,0.701-0.211,0.701s-0.065,0.467-0.156,0.456c-0.088-0.011-0.369,0.022-0.566-1.412c-0.199-1.436-0.156-2.949-0.156-2.949s-0.043-0.155,0.048-0.189c0.09-0.034,0.188,0.1,0.188,0.1s0.133,0.189,0.287,0.033c0.156-0.154,0.19-0.622-0.301-3.08c-0.288-1.454-0.711-2.896-1.006-3.832l-0.294-0.333l-0.058-0.718c0,0-0.311-0.913-1.033-2.737c-0.723-1.824-0.846-2.458-0.846-2.458s-0.045-0.2,0.066-0.234c0.111-0.032,0.091-0.178,0.091-0.178s-0.013-0.245-0.278-0.99c-0.268-0.746-0.426-1.281-1.356-2.86c-0.869-1.468-1.124-1.558-1.124-1.558s-0.426-0.234-0.112,0.591c0.313,0.823-0.075,0.232-0.075,0.232c-0.925-1.177-2.838-4.292-2.838-4.292l-0.537-0.373l-0.508-1.261l-0.015,0.01"/><path style="&st34;" d="M1.547,32.696l-0.183,0.37c-0.472,2.495-0.625,5.135-0.62,5.31c0.01,0.208-0.036,0.211-0.075,0.178c-0.042-0.035,0.03-0.16-0.048-0.16c-0.079,0-0.108,0.211-0.108,0.211L0.512,38.6c-0.021,0.288-0.038,0.574-0.053,0.861l0.016-0.003c0.068-0.098,0.097-0.028,0.097-0.028s-0.029,0.126,0.097,0.056c0.126-0.07,0.21-1.379,0.21-1.379s0.014-2.813,0.836-6.14c0.819-3.327,1.281-4.259,1.281-4.259s0.154-0.418,0.138-0.083C3.12,27.958,3.33,27.986,3.33,27.986c0.375-0.054,0.821-1.125,1.267-2.493c0.445-1.363,0.668-2.589,0.668-2.7c0-0.11-0.055-0.194-0.152-0.138c-0.098,0.056-0.125,0.014-0.125,0.014c-0.014-0.208,0.361-1.127,0.361-1.127c1.253-3.202,3.104-5.694,3.104-5.694l0.09-0.504c-0.164,0.254-0.27,0.419-0.421,0.661c-0.056,0.089-0.042,0.297-0.001,0.32c-0.201,0.191-0.365,0.35-0.476,0.456c-2.707,4.473-3.059,6.556-3.059,6.556c-0.017,0.214,0.004,0.311,0.111,0.306c0.065-0.003,0.251-0.349,0.116,0.354c-0.09,0.468-0.524,1.708-0.693,2.212c-0.171,0.505-0.358,0.85-0.495,0.826C3.49,27.01,3.49,26.801,3.49,26.801s-0.042-0.546-0.398,0.245c-0.356,0.791-0.713,1.859-1.425,4.65c-0.031,0.125-0.063,0.251-0.092,0.38L1.547,32.696L1.547,32.696z"/><path style="&st34;" d="M4.841,62.626c-0.15-0.401-0.264-0.722-0.179-0.581c0.085,0.143,0.198,0.432,0.462,0.725c0.263,0.291,0.442-0.226-0.622-3.104s-1.354-3.04-1.402-3.095c-0.046-0.058-0.215-0.237-0.167,0.167c0.045,0.404,0.018,0.656-0.51-1.146c-0.528-1.806-0.996-4.844-1.025-5.089c-0.027-0.243-0.169-1.778-0.396-3.594c-0.226-1.814-0.246-3.743-0.207-4.28c0.039-0.537-0.066-0.828-0.123-0.837c-0.056-0.008-0.094,0.047-0.131,0.284c-0.038,0.234-0.01,0.395-0.067,0.385c-0.057-0.009-0.076-0.471-0.076-0.471H0.391c0,0.05,0,0.1,0,0.151c0,0.174,0.001,0.345,0.002,0.519l0.039,0.402c0.033,0.597,0.129,0.354,0.135,0.246c0.006-0.109,0.03-0.329,0.03-0.329s0.103-0.884,0.084,0.02c-0.019,0.904,0.236,4.563,0.236,4.563c0.019,0.236,0.041,0.479,0.068,0.729l0.063,0.092l-0.042,0.104c0.265,2.425,0.795,5.086,0.795,5.086c0.507,2.417,1.11,3.846,1.308,4.25c0.198,0.405,0.236,0.085,0.17-0.271c-0.066-0.357,0.546,0.688,0.873,1.674c0.332,0.99,0.556,1.815,0.556,1.815s0.254,0.781,0.142,0.828c-0.113,0.046-0.292-0.293-0.292-0.293s-0.473-0.835-0.274-0.228c0.398,1.231,1.6,3.822,1.6,3.822l1.396,2.471C6.282,65.836,4.982,63.004,4.841,62.626L4.841,62.626z"/><path style="&st34;" d="M7.281,67.639c0.069,0.125,0.136,0.246,0.202,0.359L7.281,67.639z"/><path style="&st34;" d="M20.722,2.874C20.51,3.216,20.48,3.388,20.48,3.388s0.112-0.118,0.183-0.237C20.733,3.033,20.722,2.874,20.722,2.874z"/><path style="&st34;" d="M17.216,5.572c-0.417,0.048-0.677,0.25-0.677,0.25S16.889,5.761,17.216,5.572z"/><path style="&st34;" d="M84.005,4.909c0,0,0.247-0.03,0.347,0.02c0.101,0.049,0.066-0.158,0.066-0.158s-0.287-0.406-0.322-0.556c-0.32-0.089-0.611-0.1-0.611-0.1l-0.028,0.034c-0.01,0.075-0.036,0.188-0.012,0.297C83.441,4.448,83.917,4.811,84.005,4.909L84.005,4.909z"/><path style="&st34;" d="M87.487,7.88l0.095-0.152l-0.223-0.679c-0.004-0.012-0.012-0.022-0.021-0.036c-0.007,0.066-0.049,0.125-0.172,0.115c0,0-0.099-0.03-0.011,0.198C87.219,7.469,87.355,7.699,87.487,7.88L87.487,7.88z"/><path style="&st34;" d="M101.566,51.162c0,0,0.347-3.236,0.457-4.392c0.018-0.173,0.031-0.343,0.045-0.513l-0.098-0.241c-0.459,5.815-0.938,7.727-0.938,7.727s0.013-0.037,0.031-0.101c0.189-0.817,0.357-1.646,0.51-2.48C101.568,51.162,101.566,51.162,101.566,51.162L101.566,51.162z"/><linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="266.4922" y1="-395.2783" x2="295.9644" y2="-485.0349" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset=".0094" stop-color="#FCFCFC"/><stop offset=".0655" stop-color="#EEEEEE"/><stop offset=".1342" stop-color="#E5E5E5"/><stop offset=".2515" stop-color="#E3E3E3"/><stop offset=".3357" stop-color="#8A8A8A"/><stop offset=".4422" stop-color="#B8B8B8"/><stop offset="1" stop-color="#3B3B3B"/></linearGradient><path style="&st33;" d="M79.003,84.528c0,0,0.667-0.653,0.539-0.752c-0.128-0.101-0.623,0.256-0.623,0.256s-0.073,0.062-0.185,0.142l0.393-0.252c0,0-0.038,0.238-0.355,0.555c0,0-0.094,0.094-0.258,0.248c-0.957,0.938-2.386,1.998-2.386,1.998l0.396-0.211C77.844,85.703,79.003,84.528,79.003,84.528z"/><linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="460.4629" y1="512.5557" x2="509.5884" y2="573.3062" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EFF0F0"/><stop offset=".5914" stop-color="#F0F1F2"/><stop offset=".599" stop-color="#787878"/><stop offset=".6456" stop-color="#EEEFF0"/><stop offset="1" stop-color="#D8D9DB"/></linearGradient><path style="&st30;" d="M82.984,39.705l0.51-0.891l-0.127-1.667c0,0-0.085-0.893-0.566-2.28c-0.979-2.828-1.941-4.122-1.941-4.122s-0.592-1.318-1.969-1.318c-1.33,0-1.431,1.219-1.431,1.219s-0.312,0.963-0.821,1.261c-0.5,0.29-1.972,1.146-2.748,0.296c-0.941-1.026-1.461-2.225-1.56-3.372c-0.101-1.146,0.367-1.615,0.367-1.615s0.1-0.296,1.614-0.296c1.703,0,2.014-0.525,2.014-0.525s0.324-0.296,0.297-0.963s-0.284-2.097-0.779-3.001c-0.324-0.596-1.058-1.537-1.684-2.261l-0.967-0.178l0.15-0.699c-0.56-0.514-3.465-3.959-4.031-4.766c-0.564-0.808-0.65-0.993-0.75-1.262c-0.099-0.269,0.17-0.877,0.412-1.161c0.238-0.283,0.521-0.341,1.104-0.212c0.58,0.127,0.961,0.381,1.886,0.084c0.919-0.297,0.962-0.992,1.033-1.699c0.071-0.708-0.78-2.209-1.458-2.932c-0.684-0.721-1.645-0.836-2.311-0.792c-0.664,0.042-1.047,0.523-1.433,0.737c-0.382,0.213-1.103,0.425-1.429,0.284c-0.326-0.142-0.823-0.284-1.375-1.261c-0.43-0.76-0.794-1.459-0.979-1.817L63.299,4.42v0.012c0,0,0.633,1.654,1.633,2.811c0.998,1.157,2.266,0.919,2.266,0.919s0.82-0.089,1.533-0.772c0.711-0.683,1.761-0.148,2.024,0.04c0.269,0.189,0.853,0.911,1.478,2.127c0.621,1.216-0.355,2.058-0.355,2.058s-0.555,0.535-1.691,0.088c-1.14-0.443-1.813,0.259-1.986,0.614c-0.182,0.357-0.508,0.99,0.076,1.73c0.584,0.742,3.178,4.273,4.916,5.945c1.74,1.672,2.314,3.047,2.682,4.342c0.365,1.297,0.079,1.899-0.521,2.018c-0.604,0.118-1.148,0.021-2.086,0.187c-0.94,0.17-1.349,0.367-1.543,1.653c-0.199,1.286,0.562,3.373,1.67,4.361c1.106,0.989,2.334,0.386,2.76,0.228c0.427-0.159,1.352-0.653,1.681-2.027c0.188-0.783,0.851-0.721,0.851-0.721s0.563-0.071,0.854,0.117c0.287,0.19,0.633,0.525,1.402,1.87c0.772,1.346,1.453,3.146,1.724,4.738C82.924,38.35,82.729,38.576,82.984,39.705c0.256,1.128,1.078,3.245,1.466,4.074c0.383,0.832,0.78,1.662,0.989,2.107c0.205,0.445,0.531,0.782,1.443,0.802c0.908,0.02,1.273-0.228,1.541-0.662c0.27-0.435,0.612-1.088,0.713-1.316c0.1-0.228,0.467-0.911,1.146-1.02c0.685-0.108,1.762,0.01,2.106,1.198c0.313,1.071,0.76,2.622-0.158,4.5c-0.65,1.334-1.129,0.859-2.451,0.948c0,0-1.165-0.01-1.781,0.921c-0.611,0.93-0.416,2.61-0.286,3.877s0.988,3.113,1.621,3.563c0.636,0.443,0.86,0.849,1.08,1.256c0.216,0.404,0.534,1.205,0.216,3.313c-0.313,2.106-0.979,3.74-1.867,4.521c-0.024,0.021-0.05,0.043-0.07,0.063c-0.067,0.065-0.141,0.135-0.219,0.201c-0.537,0.521-0.371,0.543-0.889,0.793c-0.594,0.289-0.988,0.207-1.958,0.365c-0.97,0.16-1.583,0.327-2.088,0.821c-0.503,0.495-1.243,1.409-0.979,3.187c0.148,0.986,1.318,0.584,2.229,0.111c-0.274,0.125-0.553,0.221-0.798,0.246c-1.033,0.113-0.991-0.949-0.921-1.415c0.069-0.47,0.313-1.544,1.063-1.97s1.799-0.41,2.533-0.512c0.738-0.101,1.076-0.313,1.076-0.313s1.205-0.766,1.997-2.055c0.793-1.289,1.502-3.371,1.587-5.438c0.084-2.068-0.821-2.902-1.104-3.271c-0.283-0.366-0.799-0.203-1.431-1.729c-0.724-1.74-0.81-3.188-0.751-4.079c0.057-0.892,0.27-1.231,0.682-1.612c0.41-0.383,2.223-0.213,2.223-0.213s0.893,0.185,1.686-1.134c0.793-1.317,0.738-3.471,0.481-4.546c-0.253-1.076-0.623-2.013-2.097-2.168c-1.471-0.152-2.138,1.66-2.138,1.66s-0.297,0.693-0.608,1.092c-0.312,0.395-1.16,0.285-1.16,0.285c-0.37-0.044-0.821,0.099-1.264-0.81c-0.438-0.906-1.442-3.286-1.442-3.286c-0.339-0.809-0.556-1.512-0.688-2.055L82.984,39.705L82.984,39.705z"/><linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="272.8721" y1="-392.8257" x2="302.4699" y2="-482.9646" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="&st9;" d="M82.487,79.313l0.801-0.479c0.788-1.231,1.72-2.31,2.431-3.103c0.863-0.961,1.896-2.522,1.896-2.522s0.835-1.431,0.638-1.784c-0.13-0.23-0.704,0.02-1.687,0.752c-3.674,2.746-3.971,1.246-3.971,1.246c0.422,2.438,4.729-1.633,5.108-1.375c-0.063,0.563-0.457,1.172-1.25,2.25c0,0-0.388,0.555-0.78,0.953c-0.369,0.432-0.578,0.641-0.578,0.641s-0.088,0.09-0.125,0.125c-0.471,0.541-1.024,1.242-1.595,2.018c-0.019,0.021-0.104,0.113-0.125,0.143c-0.295,0.416-0.491,0.73-0.702,1.062c-0.014,0.022-0.064,0.011-0.076,0.034c0-0.002-0.013,0.014-0.025,0.037c-0.245,0.39-0.373,0.713-0.508,0.959c-0.012,0.029-0.021,0.065-0.03,0.095c0,0-0.319,0.665-0.457,1.067c-0.14,0.405-0.12,0.547-0.623,0.625c-0.504,0.078-0.276-0.053-1.021,0.196c0,0-0.403,0.199-0.938,0.571c-0.027,0.021-0.057,0.042-0.082,0.063c-0.736,0.604-1.247,1.119-1.534,1.436c-0.051,0.063-0.099,0.13-0.146,0.195c0,0-0.157,0.168,0.051,0.188c0.206,0.021,0.633-0.01,1.008-0.169l0.088-0.057c-0.186,0.103-0.373,0.174-0.513,0.162c-0.396-0.026,0.479-0.864,0.479-0.864s0.906-1.019,1.771-1.175c0.862-0.156,1.021-0.371,1.444-0.693c0.426-0.327,0.494-0.682,1.359-2.254c0.03-0.059,0.064-0.115,0.098-0.176L82.487,79.313L82.487,79.313z"/><linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="444.6943" y1="510.9561" x2="469.7246" y2="592.0699" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#FFF"/><stop offset=".7473" stop-color="#F9F9F9"/><stop offset="1" stop-color="#D5D7D8"/></linearGradient><path style="&st27;" d="M55.064,72.686l0.408-0.377c-0.34-0.668-0.693-1.269-0.693-1.269s-1.282-1.901-0.245-3.703c1.036-1.803,2.737-2.348,2.737-2.348s1.5-0.332,2.996,0.017c1.418,0.323,2.133-0.22,2.133-0.22s0.865-0.376,1.123-2.104c0.261-1.729-0.014-4.94-2.317-5.576c-2.306-0.633-3.528,0.563-3.528,0.563s-1.242,1.369-1.644,1.57c-0.404,0.2-1.024,0.562-1.024,0.562s-0.865,0.52-1.453,0.648c-0.39,0.087-1.788-1.771-1.931-3.2c-0.133-1.313-0.4-2.385-0.305-5.084c0-0.005,0-0.01,0-0.017l-0.486-0.629l0.537-0.526c0.102-3-0.418-5.119-1.188-6.463c-0.805-1.414-2.118-2.163-2.766-2.479c-0.647-0.317-2.146-0.461-3.169-0.086c-1.022,0.375-1.237,0.677-1.613,1.325c-0.376,0.65-0.835,0.606-0.835,0.606s-1.427,0.044-1.89-2.132c-0.644-3.049,0.36-4.036,0.36-4.036s0.318-0.475,1.369-0.619c1.053-0.144,1.73,0.115,2.536,0.317c0.807,0.2,1.41,0.114,2.42-0.374c1.009-0.49,1.442-1.298,1.24-2.738c-0.196-1.397-0.249-1.727-1.484-5.966l-0.874-0.458l0.582-0.579c-1.182-4.271-1.257-6.961-1.257-6.961c-0.105-0.975,0.049-1.29,0.598-1.537c0.576-0.261,1.117-0.177,1.934-0.125c0.819,0.052,1.425-0.079,1.847-0.316c0.423-0.236,1.583-0.87,1.503-2.163c-0.078-1.292-1.108-2.823-1.951-3.35c-0.844-0.528-1.952-0.317-2.56,0.132c-0.606,0.447-0.843,1.028-1.213,1.212c-0.368,0.185-0.896,0.607-1.45,0.474c-0.554-0.132-0.581-1.372-0.818-2.77c-0.155-0.915-0.276-1.614-0.342-1.989l-0.674-0.254c0.043,0.557,0.535,3.304,0.535,3.304l0.294,1.624c0,0,0,0.007,0,0.02c0.006,0.018,0.009,0.036,0.013,0.05c0.019,0.079,0.049,0.18,0.082,0.289c0.114,0.215,0.37,0.456,0.942,0.502c1.076,0.089,1.772-0.468,2.025-0.709c0.254-0.239,0.86-0.911,0.86-0.911s0.329-0.632,1.253-0.494c0.922,0.14,1.238,0.773,1.403,1.013c0.167,0.242,1.57,1.961,0.672,2.861c-0.039,0.039-0.093,0.089-0.152,0.146c-0.104,0.111-0.245,0.246-0.446,0.399c-0.675,0.517-1.226,0.48-1.678,0.442c-0.453-0.039-0.665-0.07-0.795-0.043l-0.72,0.038c-0.787,0.11-1.224,0.408-1.224,0.408c-1.8,1.065,0.735,9.287,0.735,9.287s0.671,2.029,0.973,2.979c0.301,0.949,0.496,1.625,0.791,3.264c0.295,1.639-0.231,2.092-0.525,2.251c-0.294,0.158-0.984,0.568-1.77,0.604c-0.783,0.034-1.027-0.368-2.371-0.432c-1.345-0.065-2.246,0.345-2.661,0.906c-0.417,0.561-0.913,1.862-0.675,3.4c0.237,1.541,0.504,2.064,1.092,2.748c0.59,0.681,1.165,0.97,1.978,0.696c0.792-0.266,0.764-0.756,1.173-1.164c0.517-0.519,0.855-0.792,2.063-0.821c1.208-0.029,1.979,0.288,2.594,0.784c0.619,0.496,1.934,1.646,2.294,3.356c0.359,1.713,0.424,2.268,0.424,3.676s-0.101,2.978-0.064,4.381c0.036,1.4,0.187,2.841,0.577,3.795c0.386,0.955,0.926,1.755,1.4,2.18c0.475,0.426,0.896,0.438,1.373,0.252c0.475-0.188,1.511-0.771,2.373-1.324c0.861-0.555,0.797-0.99,1.576-1.502c0.875-0.576,1.799-0.605,2.457-0.486c0.661,0.112,1.676,0.631,2.092,1.889C63.059,60.58,63,61.998,63,61.998s0.035,1.186-0.445,1.876c-0.48,0.688-1.272,0.616-1.625,0.545c-0.354-0.071-1.094-0.136-1.094-0.136s-1.451-0.165-2.563,0.094c-1.105,0.258-2.077,1.085-2.73,1.896c-0.652,0.813-0.941,1.57-0.984,2.158c-0.043,0.59,0.027,1.595,0.642,2.572c0.612,0.979,0.712,1.432,1.409,2.827c0.695,1.396,2.15,2.17,2.201,2.206c0.05,0.037,1.388,0.523,1.89,0.949c0.505,0.425,0.555,0.826,0.411,1.208c-0.145,0.381-0.438,1.094-1.604,1.604c-1.166,0.512-2.591,0.523-3.496,0.617c-0.906,0.094-2.651,0.332-3.697,0.834c-1.043,0.503-0.97,1.454-0.97,1.454s-0.028,1.556,1.337,1.983c1.365,0.434,2.64,0,3.201-0.237c0.562-0.238,1.487-0.583,1.487-0.583s1.791-0.631,2.752-0.848c0.965-0.217,1.533-0.323,2.188,0.832c0.652,1.158,1.014,1.886,1.078,2.625c0.064,0.74-0.209,1.148-0.461,1.432c-0.25,0.279-0.217,0.46-0.217,0.46c-0.105,0.873,1.182,0.763,1.182,0.763s0.041-0.004,0.11-0.018c-0.26,0.021-0.499-0.021-0.59-0.178c-0.116-0.202-0.217-0.531,0.146-0.906c0.359-0.374,0.402-0.693,0.402-0.693c0.305-1.439-1.038-3.371-1.354-3.875c-0.315-0.503-0.836-0.791-2.394-0.531c-1.556,0.26-3.386,1.037-3.386,1.037s-1.891,0.995-3.299,0.809c-1.413-0.188-1.701-1.614-1.687-2.063c0.016-0.444,0.304-0.836,1.038-1.122c0.733-0.289,2.464-0.679,4.984-0.809c2.522-0.128,3.458-1.771,3.458-1.771c0.331-0.478,0.923-1.543-0.489-2.338c-1.412-0.789-1.44-0.589-2.116-1.104c-0.68-0.521-1.412-1.153-1.701-2.034c-0.026-0.084-0.07-0.198-0.108-0.291L55.064,72.686L55.064,72.686z"/><linearGradient id="SVGID_11_" gradientUnits="userSpaceOnUse" x1="390.042" y1="485.6797" x2="390.042" y2="485.6797" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#FFF"/><stop offset=".7473" stop-color="#F9F9F9"/><stop offset="1" stop-color="#D5D7D8"/></linearGradient><path style="&st35;" d="M-16.122-14.641"/><linearGradient id="SVGID_12_" gradientUnits="userSpaceOnUse" x1="390.042" y1="485.6797" x2="390.042" y2="485.6797" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#FFF"/><stop offset=".7473" stop-color="#F9F9F9"/><stop offset="1" stop-color="#D5D7D8"/></linearGradient><path style="&st36;" d="M-16.122-14.641"/><path style="&st34;" d="M92.002,13.363c1.021,1.649,2.844,4.295,2.844,4.295s0.256,0.332,0.5,0.605l0.01-0.011c0.011-0.375-0.051-0.571-0.06-0.621l-0.091-0.274c-0.021-0.367,0.438,0.095,0.611,0.288c-0.498-0.754-0.659-0.811-0.659-0.811s-0.423-0.234-0.111,0.59c0.312,0.824-0.075,0.233-0.075,0.233c-0.924-1.177-2.838-4.293-2.838-4.293l-0.553-0.383L92.002,13.363L92.002,13.363z"/><path style="&st34;" d="M101.539,51.352c0.014-0.063,0.023-0.125,0.034-0.188c-0.004,0-0.009,0-0.009,0s0.005-0.03,0.013-0.089C101.563,51.17,101.551,51.262,101.539,51.352L101.539,51.352z"/><path style="&st34;" d="M100.822,35.679c0.088-0.033,0.188,0.1,0.188,0.1s0.135,0.189,0.289,0.033c0.107-0.104,0.155-0.353,0.025-1.257c-0.004,0.229-0.053,0.409-0.137,0.59c-0.139,0.296-0.314,0.02-0.441-0.081c-0.129-0.098-0.168,0.07-0.168,0.07l-0.004,0.162c0,0.7,0.087,2.346,0.217,3.617c0.063,0.605,0.173,1.071,0.287,1.408l0.041,0.076c0.089,0.148,0.188,0.343,0.307,0.255c0.116-0.089,0.274-0.582,0.274-0.582l0.128-0.591c0.191,0.113,0.291,0.529,0.341,0.962c-0.002-0.037-0.004-0.056-0.004-0.056s-0.144-1.324-0.3-1.313c-0.155,0.01-0.21,0.701-0.21,0.701s-0.066,0.468-0.157,0.456c-0.088-0.011-0.365,0.022-0.564-1.412c-0.201-1.436-0.158-2.949-0.158-2.949S100.732,35.713,100.822,35.679L100.822,35.679z"/><path style="&st34;" d="M99.696,28.566l0.298,0.341c0.479,1.494,0.996,3.843,1.092,4.264c-0.027-0.139-0.056-0.286-0.088-0.441c-0.288-1.454-0.711-2.896-1.006-3.832L99.696,28.566l-0.05-0.702c-0.004-0.01-0.006-0.016-0.006-0.016s-0.312-0.913-1.033-2.737c-0.725-1.824-0.848-2.458-0.848-2.458s-0.043-0.2,0.066-0.234c0.109-0.032,0.09-0.178,0.09-0.178s-0.013-0.245-0.277-0.99c-0.182-0.503-0.312-0.911-0.662-1.607c0.281,0.585,0.463,1.052,0.524,1.259l0.028,0.068c0,0,0.099,0.148,0.066,0.552c-0.027,0.403-0.146,0.452-0.146,0.452l0.022,0.14c0.141,0.538,0.418,1.187,0.418,1.187s1.065,2.709,1.748,4.54L99.696,28.566L99.696,28.566z"/><linearGradient id="SVGID_13_" gradientUnits="userSpaceOnUse" x1="274.5342" y1="-396.1577" x2="255.2091" y2="-490.1944" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="&st37;" d="M42.958,91.536c0.938,0.177,1.723,0.358,1.889,0.396C44.514,91.822,43.895,91.653,42.958,91.536z"/><linearGradient id="SVGID_14_" gradientUnits="userSpaceOnUse" x1="422.5586" y1="518.7568" x2="427.2878" y2="578.1768" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset=".2198" stop-color="#989A9C"/><stop offset=".2527" stop-color="#FFF"/></linearGradient><path style="&st38;" d="M20.381,74.92l0.007-0.164l-0.052-0.08c0,0-1.874-3.375-1.676-4.615c0,0,0.069-0.827,1.241-1.187c0.817-0.25,0.71,0.538,3.112,0.976c0,0,2.07,0.557,2.611-0.946c0.539-1.507-0.566-3.394-0.566-3.394s-1.45-2.656-3.244-2.756c-0.95-0.055-0.692,0.583-2.125,0.924c0,0-1.913,0.185-2.519-0.963c-0.733-1.389-1.015-2.968-1.015-4.021c0-1.058,0.045-1.001,0.126-1.405c0.045-0.219,0.186-0.548,0.248-1.09l-0.134-0.675l0.204-0.499c0.002-0.26-0.004-0.535-0.021-0.83c-0.092-1.661-0.211-4.221-0.436-5.711c-0.223-1.491-0.633-3.799-1.991-3.865c0,0-0.671-0.052-1.636,0.885c-0.882,0.856-1.682-0.708-1.726-1.663c-0.052-1.121,0.131-2.255,0.409-2.795c0.277-0.541,1.042-0.566,1.186-0.554c0.146,0.012,0.555,0.17,1.042,0.474c0.489,0.304,1.161,0.304,1.558-0.092c0.395-0.395,0.948-0.856,1.173-2.598c0.225-1.741,0.225-3.547,0.013-5.71l-0.224-0.485l1.339-0.288c-0.001-0.016-0.021-0.125-0.032-0.195c0,0,0-0.001-0.001-0.002c-0.001-0.017-0.004-0.033-0.007-0.052c0-0.002,0-0.004,0-0.005c-0.003-0.019-0.007-0.038-0.009-0.057c-0.001-0.001-0.001-0.001-0.001-0.003c-0.003-0.022-0.006-0.042-0.009-0.062c0-0.001,0-0.001,0-0.001c-0.004-0.022-0.006-0.045-0.011-0.067c0-0.003-0.001-0.006-0.001-0.007c-0.002-0.022-0.006-0.045-0.008-0.068c-0.001-0.005-0.001-0.01-0.003-0.015c-0.002-0.023-0.005-0.047-0.009-0.069c-0.001-0.004-0.002-0.01-0.002-0.014c-0.003-0.026-0.007-0.05-0.012-0.076c0-0.002,0-0.005,0-0.005c-0.004-0.025-0.008-0.05-0.012-0.076c0-0.007-0.001-0.012-0.002-0.018c-0.002-0.024-0.006-0.052-0.009-0.079c-0.001-0.005-0.001-0.011-0.003-0.021c-0.004-0.027-0.006-0.053-0.01-0.081c-0.001-0.007-0.002-0.013-0.003-0.02c-0.003-0.028-0.005-0.057-0.009-0.087c-0.001-0.003-0.001-0.008-0.003-0.013c-0.003-0.028-0.005-0.056-0.009-0.082c-0.001-0.006-0.001-0.011-0.002-0.017c-0.003-0.031-0.006-0.06-0.01-0.091c-0.001-0.007-0.001-0.014-0.002-0.02c-0.004-0.03-0.006-0.062-0.011-0.09c0-0.007-0.001-0.015-0.002-0.022c-0.003-0.031-0.006-0.063-0.01-0.094c-0.001-0.006-0.002-0.011-0.002-0.018c-0.003-0.032-0.005-0.063-0.009-0.094c0-0.003,0-0.005-0.001-0.009c-0.003-0.033-0.004-0.068-0.009-0.1c0-0.005,0-0.013-0.001-0.02c-0.002-0.035-0.005-0.065-0.007-0.099c-0.001-0.008-0.001-0.015-0.002-0.021c-0.003-0.032-0.005-0.066-0.007-0.099c0-0.005-0.001-0.011-0.001-0.02c-0.002-0.033-0.006-0.068-0.007-0.101c0-0.003-0.001-0.008-0.001-0.009c-0.002-0.033-0.004-0.066-0.007-0.1c0-0.006,0-0.012,0-0.017c-0.001-0.032-0.003-0.068-0.005-0.1c0-0.008,0-0.014-0.001-0.022c-0.001-0.033-0.004-0.067-0.005-0.098c0-0.006,0-0.013,0-0.021c-0.002-0.033-0.003-0.066-0.004-0.101c0-0.005,0-0.008,0-0.013c-0.001-0.032-0.002-0.066-0.002-0.099c0-0.003,0-0.005,0-0.009c0-0.034-0.001-0.067-0.001-0.102c0-0.005,0-0.012,0-0.016c0-0.033,0-0.067,0-0.098c0-0.005,0-0.012,0-0.019c0.001-0.032,0.001-0.065,0.001-0.096c0-0.004,0.001-0.009,0.001-0.014c0-0.033,0.001-0.066,0.003-0.1c0.052-1.243,0.291-1.751,0.291-1.751l0.058-0.166c0,0,0.46-1.458,1.152-2.458l-0.011,0.024c0,0,0.446-0.738,1.231-0.816c0.785-0.077,1.003,0.158,1.371,0.202c0.04,0.004,0.078,0.008,0.115,0.013c0.013,0.001,0.025,0.002,0.037,0.004c0.025,0.002,0.051,0.003,0.074,0.006c0.014,0.001,0.028,0.002,0.042,0.003c0.021,0.001,0.043,0.002,0.064,0.004c0.014,0.001,0.028,0.001,0.041,0.002c0.02,0.001,0.04,0.002,0.058,0.002c0.013,0.002,0.026,0.002,0.04,0.002c0.021,0.001,0.037,0.002,0.055,0.002c0.014,0,0.026,0.001,0.039,0.001c0.016,0,0.034,0.001,0.051,0.001c0.011,0,0.023,0,0.034,0c0.017,0,0.032,0,0.05-0.001c0.01,0,0.02,0,0.032-0.001c0.016,0,0.031,0,0.046-0.001c0.011,0,0.02-0.001,0.03-0.001c0.015,0,0.03-0.002,0.045-0.002c0.009,0,0.017-0.001,0.026-0.001c0.015-0.001,0.03-0.003,0.044-0.004c0.006-0.001,0.016-0.002,0.022-0.002c0.016-0.001,0.03-0.002,0.044-0.004c0.007-0.001,0.014-0.001,0.019-0.002c0.016-0.002,0.03-0.004,0.045-0.007c0.006,0,0.009,0,0.014-0.001c0.019-0.002,0.036-0.006,0.052-0.008l0,0c0.035-0.008,0.068-0.014,0.098-0.021c0,0,0-0.002,0.002-0.002c0.012-0.002,0.025-0.005,0.039-0.01c0.002,0,0.004-0.001,0.007-0.001c0.01-0.003,0.02-0.006,0.029-0.009c0.003-0.001,0.007-0.002,0.01-0.004c0.009-0.002,0.018-0.006,0.026-0.008c0.002-0.002,0.005-0.003,0.008-0.003c0.008-0.003,0.015-0.006,0.021-0.009c0.003-0.001,0.006-0.003,0.009-0.004c0.006-0.003,0.014-0.004,0.02-0.009c0.003-0.001,0.006-0.002,0.008-0.003c0.005-0.002,0.012-0.005,0.019-0.007c0.001-0.002,0.003-0.003,0.005-0.004c0.005-0.004,0.01-0.005,0.015-0.008c0.003-0.001,0.004-0.003,0.008-0.003c0.004-0.002,0.008-0.005,0.012-0.008c0,0,0.004,0,0.005-0.002c0.004-0.003,0.008-0.006,0.012-0.008c0.001-0.002,0.002-0.002,0.004-0.003c0.003-0.003,0.007-0.004,0.01-0.008c0.002,0,0.002,0,0.002-0.002c0.003-0.001,0.007-0.005,0.011-0.008c0,0,0.001,0,0.001-0.001c0.004-0.002,0.005-0.004,0.009-0.007h0.001c0.002-0.002,0.004-0.004,0.006-0.007c0.001-0.001,0.002-0.001,0.003-0.002s0.002-0.002,0.002-0.002c0.001-0.003,0.001-0.003,0.003-0.005c0.002-0.002,0.004-0.004,0.004-0.004c0.328-0.241,0.591-0.516,0.797-0.775c0.014-0.017,0.026-0.034,0.04-0.05c0.002-0.004,0.005-0.009,0.008-0.012c0.013-0.016,0.026-0.032,0.038-0.05c0.002-0.003,0.006-0.006,0.007-0.01c0.012-0.018,0.025-0.032,0.038-0.05c0,0,0,0,0.001,0c0.039-0.055,0.075-0.109,0.109-0.159c0-0.003,0.002-0.006,0.003-0.008c0.01-0.015,0.021-0.028,0.03-0.044c0.001-0.003,0.004-0.007,0.007-0.01c0.008-0.016,0.017-0.029,0.024-0.042c0.002-0.004,0.005-0.009,0.009-0.013c0.008-0.014,0.017-0.028,0.023-0.042c0.001-0.001,0.001-0.002,0.002-0.002c0.017-0.028,0.032-0.055,0.046-0.079c0.002-0.003,0.004-0.008,0.006-0.013c0.006-0.01,0.01-0.021,0.017-0.029c0.003-0.007,0.007-0.014,0.012-0.02c0.004-0.008,0.009-0.017,0.014-0.024c0.002-0.008,0.006-0.017,0.01-0.023c0.004-0.007,0.009-0.016,0.012-0.023c0.004-0.006,0.006-0.014,0.011-0.021c0.002-0.006,0.007-0.013,0.01-0.021c0.066-0.128,0.097-0.205,0.097-0.205c0.593-1.459,0.052-2.936-0.21-3.225c-0.32-0.353-1.041-0.882-1.041-0.882s-0.288-0.241-0.751-0.144c0.349-0.049,0.791,0.091,0.966,0.558c0.277,0.734,0.376,1.335,0.212,2.33c0,0-0.26,1.387-1.384,2.233c-1.125,0.848-1.923,0.096-2.885,0.13c-0.962,0.032-1.516,0.701-1.809,1.157c-0.293,0.457-1.417,2.2-1.319,5.067c0.097,2.868,0.291,4.301,0.325,5.558c0.033,1.205,0.178,3.976-0.635,5.278c-0.815,1.303-1.628,0.65-2.2,0.309c-0.571-0.341-1.223-0.245-1.744,0.131c-0.521,0.375-0.833,1.124-0.848,3.324c-0.016,2.364,1.532,2.606,1.532,2.606s0.293,0.146,0.945-0.537c0,0,0.651-0.685,1.253-0.603c0.604,0.082,0.995,0.716,1.255,1.808c0.261,1.092,0.796,5.621,0.717,8.668c-0.034,1.271-0.62,1.286-0.36,3.617c0,0,0.409,3.13,1.401,4.089c0.995,0.962,2.378,0.781,2.706,0.75c0.324-0.032,0.7-0.26,0.7-0.26s0.309-0.197,0.537-0.374c0.23-0.182,0.522-0.428,1.011-0.277c0.489,0.146,1.645,0.896,2.557,2.571c0.915,1.678,0.496,3.317-0.26,3.521c-0.668,0.182-0.848,0.229-1.971-0.05c-1.124-0.274-1.451-0.567-1.957-0.766c-0.504-0.196-1.043-0.263-1.547,0.114c-0.505,0.373-1.345,1.057-0.343,3.32c0.961,2.174,1.692,3.797,3.518,5.623c-0.522-0.607-0.956-1.188-1.427-1.871L20.381,74.92L20.381,74.92z"/><linearGradient id="SVGID_15_" gradientUnits="userSpaceOnUse" x1="237.3721" y1="-388.3604" x2="218.8474" y2="-478.5023" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="&st39;" d="M22.494,7.387l-0.05,0.025C22.45,7.41,22.469,7.401,22.494,7.387z"/><linearGradient id="SVGID_16_" gradientUnits="userSpaceOnUse" x1="259.9063" y1="-479.3379" x2="259.8987" y2="-479.3752" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="&st40;" d="M46.028,92.85c0.13,0.014,0.26,0.026,0.391,0.041c-0.114-0.016-0.31-0.039-0.561-0.074C45.916,92.828,45.972,92.838,46.028,92.85L46.028,92.85z"/><path style="&st29;" d="M24.089,5.489c-0.649,0.36-0.7-0.016-1.141,0.017c-0.439,0.033-1.026,0.212-1.596,1.043c-0.571,0.831-0.586,1.89,0.326,1.417c0,0,0.436-0.428,0.815-0.579c0.081-0.043,0.24-0.126,0.406-0.174l0.144-0.117c0,0,0.424-0.491,1.073-0.333c0.648,0.156,1.119-0.129,1.119-0.129c1.01-0.761,1.655-2.184,1.655-2.184l0.987-1.998l-0.826-1.336c0,0-0.698,1.489-1.383,2.53C24.986,4.692,25.033,4.972,24.089,5.489L24.089,5.489z"/><path style="&st29;" d="M19.871,16.292c0,0-0.424,1.89,1.156,1.597c0,0,0.006-0.002,0.022-0.007c-0.062,0.003-0.089-0.006-0.089-0.006c-0.025-0.497,0.149-1.432,0.49-2.261c0.341-0.83,1.075-2.254,1.075-2.254s1.047-1.791,1.467-2.89c0.42-1.102,0.416-1.939,0.416-1.939s-0.8-1.019-0.915-1.176c-0.115-0.157-0.272-0.223-0.272-0.223c-0.054,0.019-0.103,0.036-0.146,0.051c0.115-0.007,0.221,0.021,0.283,0.114c0.213,0.31-0.39,2.036-0.39,2.036s-0.522,1.238-1.548,3.03C20.393,14.157,19.871,16.292,19.871,16.292L19.871,16.292z"/><linearGradient id="SVGID_17_" gradientUnits="userSpaceOnUse" x1="268.9033" y1="-394.6382" x2="249.4966" y2="-489.0725" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="&st41;" d="M38.185,89.697l0.166,0.02c-0.134-0.119-0.305-0.236-0.497-0.347c0.184,0.113,0.489,0.358,0.312,0.665c-0.245,0.424-0.048,0.457,0.489,0.863c0,0,0.022,0.013,0.061,0.033c-0.156-0.107-0.253-0.234-0.156-0.362c0.125-0.166,0.136-0.334,0.065-0.499L38.185,89.697L38.185,89.697z"/><linearGradient id="SVGID_18_" gradientUnits="userSpaceOnUse" x1="254.4561" y1="-391.5991" x2="235.0337" y2="-486.1104" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="&st42;" d="M24.437,82.749c-1.245-1.185,1.595-0.118,1.595-0.118s0.619,0.262,0.343-0.385c-0.246-0.57-1.373-1.963-2.543-3.219l0.144,0.156c0,0,2.346,2.721,2.183,2.966c-0.164,0.245-1.108-0.325-1.108-0.325s-1.401-0.539-1.206,0.13c0.143,0.491,1.059,1.271,1.536,1.649C25.109,83.372,24.798,83.09,24.437,82.749z"/><linearGradient id="SVGID_19_" gradientUnits="userSpaceOnUse" x1="262.6514" y1="-392.9692" x2="243.1559" y2="-487.8355" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="&st43;" d="M26.977,84.73c0.424,0.256,0.903,0.513,1.365,0.676c0,0,0.831,0.293,1.337-0.114c0.503-0.403,0.503-0.601,1.238-0.243c0,0,1.388,0.696,2.382,1.444c0.98,0.735,3.557,2.336,4.396,2.791c-0.764-0.417-3.712-2.365-4.633-2.99c-0.936-0.633-2.574-1.698-3.297-1.476c-0.554,0.172-0.474,0.396-0.804,0.555c-0.331,0.158-0.688,0.055-1.504-0.383C27.291,84.9,27.134,84.818,26.977,84.73L26.977,84.73z"/><linearGradient id="SVGID_20_" gradientUnits="userSpaceOnUse" x1="271.5479" y1="-390.9575" x2="251.1904" y2="-490.0176" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="&st44;" d="M39.903,91.448c0.37,0.104,0.672,0.06,0.787,0.035c-0.678,0.04-1.35-0.269-1.35-0.269s-0.067-0.021-0.165-0.061C39.413,91.268,39.689,91.385,39.903,91.448z"/><linearGradient id="SVGID_21_" gradientUnits="userSpaceOnUse" x1="274.6582" y1="-395.8442" x2="255.2559" y2="-490.2569" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="&st45;" d="M44.293,92.169c0,0-1.344-0.163-1.939-0.163c0,0-0.037,0.064,0.226,0.158c-0.021-0.021-0.031-0.049,0.189,0c0.304,0.064,2.018,0.225,2.465,0.158c0.448-0.068-0.091-0.278-0.091-0.278s-0.088-0.041-0.267-0.102C44.553,92.201,44.293,92.169,44.293,92.169L44.293,92.169z"/><path style="&st34;" d="M4.662,62.045c0.085,0.143,0.198,0.432,0.462,0.725c0.146,0.16,0.266,0.072,0.162-0.525c-0.253-0.182-0.407-0.318-0.464-0.371c-0.113-0.013-0.263-0.297-0.263-0.297s-0.471-0.835-0.274-0.227c0.398,1.23,1.6,3.821,1.6,3.821l1.396,2.47c-0.999-1.803-2.299-4.633-2.44-5.013C4.691,62.223,4.577,61.904,4.662,62.045L4.662,62.045z"/><path style="&st34;" d="M1.547,32.696l0.032-0.643c0.027-0.122,0.057-0.241,0.087-0.36c0.712-2.789,1.069-3.858,1.425-4.649c0.356-0.792,0.398-0.245,0.398-0.245s0,0.209,0.136,0.234c0.135,0.023,0.324-0.32,0.494-0.826c0.17-0.504,0.604-1.745,0.693-2.212c0.135-0.704-0.051-0.358-0.115-0.354c-0.108,0.005-0.126-0.091-0.113-0.306c0,0,0.382-2.122,3.064-6.563c0.18-0.17,0.321-0.307,0.47-0.449c-0.055-0.052-0.033-0.265,0.001-0.32c0.136-0.214,0.275-0.435,0.422-0.661l-0.09,0.504c0,0-1.85,2.492-3.104,5.694c0,0-0.342,0.835-0.359,1.094c-0.025,0.154-0.104,0.739,0.152,0.582l0.065-0.048c-0.093,0.484-0.295,1.37-0.607,2.325c-0.288,0.878-0.573,1.633-0.841,2.078l-0.002-0.004c-0.08,0.067-0.098-0.016-0.146-0.21c-0.048-0.198-0.113-0.198-0.113-0.198c-0.179,0-0.324,0.202-0.41,0.359c-0.04,0.056-0.089,0.19-0.089,0.19s-0.461,0.934-1.281,4.26c-0.822,3.328-0.836,6.14-0.836,6.14s-0.084,1.309-0.21,1.379c-0.126,0.07-0.097-0.056-0.097-0.056s-0.045-0.052-0.114,0.045c0,0,0.02-0.76,0.044-0.875c0,0,0.041-0.206,0.119-0.206s0.006,0.125,0.048,0.16c0.039,0.032,0.084,0.03,0.075-0.178c-0.005-0.176,0.147-2.816,0.621-5.312L1.547,32.696L1.547,32.696z"/><path style="&st34;" d="M0.392,41.994c0-0.002,0-0.004,0-0.005c0,0,0.018,0.217,0.042,0.356l-0.003,0.01c0.078,0.357,0.187,0.357,0.187,0.357c0.008-0.096,0.087-0.273,0.183-0.458c0.007,0.106,0.007,0.231-0.004,0.375c-0.037,0.537-0.019,2.466,0.209,4.28c0.225,1.815,0.367,3.349,0.394,3.594c0.029,0.245,0.498,3.283,1.025,5.089c0.285,0.967,0.422,1.344,0.483,1.424l0.008,0.049c0,0,0.097,0.184,0.348,0.32c0,0,0.111-0.097,0.112-0.412c0.018,0.031,0.037,0.065,0.057,0.105c-0.083,0.262-0.105,0.426-0.105,0.426l0,0c-0.042-0.043-0.06-0.031-0.046,0.045c0.067,0.357,0.027,0.68-0.169,0.272c-0.198-0.403-0.8-1.832-1.307-4.251c0,0-0.531-2.659-0.795-5.084l0.042-0.105L0.989,48.29c-0.027-0.248-0.048-0.491-0.067-0.729c0,0-0.255-3.657-0.237-4.562c0.019-0.904-0.085-0.02-0.085-0.02s-0.021,0.219-0.028,0.329c-0.008,0.109-0.103,0.352-0.136-0.246C0.459,43.322,0.392,42.261,0.392,41.994L0.392,41.994z"/><path style="&st34;" d="M24.672,1.974l-0.53-0.753l-0.066-0.065c0,0-0.131-0.136-0.896,0.038l-0.11,0.022c0,0,0.38-0.094,0.168,0.191c-0.212,0.285-0.56,0.496-1.172,1.15c-0.612,0.655-0.411,0.803-0.01,0.668c0.401-0.138,1.188-0.499,2.606-1.243L24.672,1.974z"/><path style="&st34;" d="M23.106,1.21c-0.022,0.003-0.036,0.006-0.036,0.006L23.106,1.21z"/><path style="&st34;" d="M23.637,1.811c0.31-0.272,0.429-0.484,0.454-0.641l-0.015-0.014c0,0-0.131-0.136-0.896,0.038l-0.075,0.015c0.09-0.015,0.303-0.032,0.133,0.198c-0.212,0.285-0.56,0.496-1.172,1.151c-0.612,0.656-0.411,0.803-0.01,0.667c0.106-0.038,0.239-0.088,0.4-0.157C22.599,2.755,23.046,2.325,23.637,1.811z"/><path style="&st34;" d="M83.482,4.115l-0.2,0.235c0,0,0.136,0.081,0.208,0.141c0.008,0.005,0.014,0.01,0.021,0.012c-0.043-0.034-0.07-0.056-0.07-0.056c-0.023-0.109,0.004-0.223,0.014-0.297L83.482,4.115c0,0,0.055,0.002,0.143,0.011L83.482,4.115L83.482,4.115z"/><path style="&st6;" d="M62.559,90.319c0,0,1.686-0.187,3.239-0.691c1.558-0.504,1.935-0.981,1.874-1.341c-0.037-0.238-0.396-0.305-0.906-0.238c0.271-0.021,0.514,0.032,0.354,0.332c-0.313,0.582-0.861,0.782-0.861,0.782s-0.267,0.19-0.89,0.371c-0.806,0.245-1.794,0.375-2.335,0.438c-0.691,0.082-0.521-0.033-1.465,0.291c-0.023,0.016-0.047,0.025-0.065,0.043c-0.289,0.237,1.071,0.514,1.071,0.514s1.302,0.361,3.257,0.23l0.067-0.021c0.267-0.078,0.533-0.161,0.8-0.245c-2.021,0.457-3.324,0.149-3.737,0.095c-0.434-0.058-0.777-0.144-0.88-0.359C61.98,90.305,62.559,90.319,62.559,90.319L62.559,90.319z"/><path style="&st34;" d="M63.301,4.417l0.717,0.076c1.429-0.405,2.651-0.776,2.651-0.776s1.265-0.41,1.901-0.636c0.635-0.227,1.09-0.313,1.656-0.41c0.563-0.096,1.309-0.14,1.709-0.131c0.398,0.007,0.528,0.122,0.528,0.122s0.166,0.131,0.245,0.27c0.077,0.138,0.74,1.891,2.975,2.005c2.231,0.112,2.261-1.096,2.063-1.464c-0.226-0.427-0.896-0.863-0.896-0.863s-0.898-0.575-1.09-0.846c-0.192-0.271,0.033-0.358,0.104-0.376c0.066-0.018,2.433-0.497,2.729-0.608l0.021-0.02l-0.563-0.174c0,0-0.119,0.134-0.789,0.312c-0.67,0.179-1.233,0.246-1.742,0.313c-0.504,0.067-0.504,0.239-0.504,0.239l-0.879,1.406c0,0-0.029,0.104,0.043,0.305c0.073,0.202,0.41,0.448,0.41,0.448s0.573,0.424,0.99,0.699c0.418,0.275,0.395,0.373,0.395,0.373c-1.123,0.095-1.418-0.048-1.875-0.276c-0.445-0.223-0.76-0.729-0.922-1.086c-0.162-0.357-0.521-0.663-0.521-0.663c-0.589-0.336-1.696-0.343-2.813-0.15c-1.115,0.194-2.656,0.707-2.923,0.812c-0.271,0.104-1.616,0.551-2.309,0.729c-0.694,0.179-1.224,0.357-1.646,0.47c-0.426,0.11-3.431,1.005-4.557,1.339c-1.124,0.333-1.848,0.461-1.848,0.461c-1.688,0.171-2.193-0.134-2.193-0.134c-0.297-0.125-0.262-0.527-0.262-0.527l0.009-1.147c0,0-0.029-0.433-0.356-0.611c-0.328-0.179-0.779-0.252-1.593-0.29c-0.811-0.038-1.683,0.044-2.093,0.134c-0.408,0.09-1.19,0.313-1.764,0.952c-0.573,0.641-0.481,1.141-0.481,1.141s0.035,0.683,0.088,1.19c0.052,0.504,0.484,0.662,0.484,0.662s-0.744,0.532-3.045,1.206c-2.209,0.648-3.682,0.774-3.682,0.774l0.678,0.254c0,0,5.468-1.015,7.148-2.616c0,0,0.624-0.293,0.02-0.88c-0.606-0.585-0.897-0.761-0.897-0.761s-0.41-0.224,0.019-0.771c0.43-0.547,0.923-0.795,1.352-0.933c0.429-0.138,1.753-0.25,2.925-0.093c0,0,0.491,0.041,0.459,0.408c-0.034,0.366-0.088,0.872-0.077,1.028c0.008,0.158,0.023,0.515,0.398,0.845c0.378,0.332,1.099,0.453,1.099,0.453s1.257,0.228,2.843-0.217c1.584-0.445,3.642-1.14,5.431-1.629L63.301,4.417L63.301,4.417z"/><path style="&st12;" d="M-16.122-14.641"/><path style="&st22;" d="M48.462,6.628c0.31,0.207,0.476,0.221,0.5,0.421c0.055,0.339-0.56,0.64-0.56,0.64l-0.006-0.011c0,0-0.431-0.157-0.484-0.664c-0.052-0.505-0.088-1.19-0.088-1.19s0.001,0.2,0.046,0.26C48.004,6.256,48.087,6.378,48.462,6.628z"/><path style="&st20;" d="M82.447,79.307l0.451,0.17c1.104-0.617,1.496-0.809,1.759-0.963c1.183-0.703,2.592-1.563,2.963-1.855c0,0,0.761-0.518,0.116,0.195s-0.969,1.007-0.969,1.007s-0.625,0.626-0.471,0.782c0,0,0.166,0.246,1.193-0.687c1.023-0.929,2.15-2.258,2.275-2.44c0.127-0.188,0.146-0.293,0.146-0.293s0.107-0.215,0.273-0.393c0.145-0.15,1.377-1.496,1.994-2.121c0,0,0.002,0.001,0.006,0.003c0.273-0.362,0.541-0.729,0.806-1.102c-0.358,0.379-1.724,1.829-2.483,2.684c0,0-0.713,0.763-0.938,1.056s-0.225,0.47-0.225,0.47s-0.117,0.196-0.392,0.519s-1.24,1.186-1.24,1.186s-0.577,0.47-0.754,0.478c-0.179,0.011,0.431-0.538,0.431-0.538s0.588-0.625,0.967-1.123c0.382-0.498,0.137-0.47,0.137-0.47s-0.186-0.049-0.986,0.459c-0.8,0.508-1.367,0.858-1.367,0.858s-1.722,0.986-2.814,1.623c-1.096,0.636-3.6,1.908-5.021,2.492c-1.43,0.588-2.162,0.715-2.035,0.527c0.127-0.186,0.461-0.459,0.461-0.459s0.399-0.4,0.399-0.803c0,0,0.128-0.586-1.604-0.223c-1.729,0.36-3.293,1.213-3.293,1.213s-2.571,1.182-1.965,1.887c0,0,0.117,0.186,0.635,0.352c0.52,0.166-0.92,0.606-0.92,0.606c-1.365,0.448-2.413,0.651-3.74,0.926c-1.963,0.403-3.564,0.761-4.165,0.894c-0.165,0.035-0.253,0.059-0.253,0.059s-1.212,0.292-3.229,1.072c-2.015,0.783-5.972,1.43-5.972,1.43s-2.542,0.293-2.777,0.627c-0.234,0.331,0.177,0.499,0.177,0.499s0.362,0.224,1.671,0.283c0,0,0.451,0,0.471,0.036c0.018,0.039,0.046,0.068-0.235,0.156c-0.286,0.088-0.854,0.314-2.778,0.558c-1.936,0.245-1.896-0.067-1.896-0.067s-0.01-0.076,0.078-0.216c0.087-0.134,0.009-0.369-0.293-0.535c0,0-0.419-0.272-1.829-0.262c-1.408,0.009-4.212,0.017-6.833-0.14c-2.374-0.143-5.59-0.551-6.099-0.664c0,0-0.117-0.029-0.206-0.117c-0.088-0.09-0.646-0.422-1.164-0.733c-0.517-0.313-2.073-0.907-2.073-0.907s-2.011-0.783-1.945-0.521c0.015,0.063,0.13,0.153,0.268,0.246c0.351,0.188,0.704,0.375,1.06,0.56l0.002-0.002c0,0-0.743-0.402-0.538-0.402s0.438,0.109,0.438,0.109s1.213,0.332,1.966,0.686c0.753,0.353,1.407,0.83,1.407,0.83s0.929,0.549,2.319,0.732c1.346,0.182,3.174,0.389,3.777,0.448l0.594-0.272l0.433,0.354c1.106,0.068,2.575,0.146,2.575,0.146s2.976,0.111,4.605-0.019c0.733-0.063,0.507,0.317,0.507,0.317s-0.214,0.354,0.206,0.529c0,0,0.771,0.439,3.343,0.157c2.573-0.286,3.138-0.862,3.138-0.862s0.299-0.275-0.351-0.398c-0.513-0.1-0.513-0.051-1.175-0.117c-0.665-0.067-0.998-0.205-0.557-0.323c0.441-0.114,1.174-0.175,1.174-0.175s2.249-0.313,4.066-0.783c0,0,1.938-0.458,3.861-1.134c0.756-0.265,1.395-0.459,1.887-0.599l0.438-0.644l0.644,0.372c0.065-0.014,0.103-0.021,0.103-0.021s2.306-0.539,3.274-0.703c0.966-0.168,3.154-0.637,4.087-1.086c0.928-0.448,1.396-0.805,1.505-1.075c0.107-0.272-0.393-0.431-0.393-0.431s-0.588-0.138-0.508-0.34c0.075-0.205,0.293-0.382,1.213-0.793c0.918-0.41,2.07-0.859,3.227-1.144c1.154-0.282,0.732,0.194,0.732,0.194s-0.692,0.705-0.783,0.979c-0.086,0.273,0.029,0.285,0.119,0.333c0.088,0.05,0.646,0.028,1.022-0.067c0.383-0.099,3.464-1.271,5.341-2.347c0.049-0.026,0.094-0.054,0.139-0.08L82.447,79.307z"/><linearGradient id="SVGID_22_" gradientUnits="userSpaceOnUse" x1="221.1826" y1="-454.5649" x2="221.373" y2="-454.5649" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#808080"/><stop offset=".0868" stop-color="#7A7A7A"/><stop offset=".36" stop-color="#6B6B6B"/><stop offset=".5192" stop-color="#686868"/><stop offset=".6377" stop-color="#5F5F5F"/><stop offset=".7431" stop-color="#4E4E4E"/><stop offset=".8408" stop-color="#383838"/><stop offset=".9324" stop-color="#1B1B1B"/><stop offset="1" stop-color="#000"/></linearGradient><path style="&st13;" d="M7.432,68.01l0.178,0.131c-0.105-0.099-0.167-0.155-0.167-0.155s-0.008,0.003-0.024,0.003C7.423,67.993,7.429,68.002,7.432,68.01L7.432,68.01z"/><linearGradient id="SVGID_23_" gradientUnits="userSpaceOnUse" x1="221.4043" y1="-449.8027" x2="316.0254" y2="-449.8027" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#808080"/><stop offset=".0868" stop-color="#7A7A7A"/><stop offset=".3817" stop-color="#828282"/><stop offset=".5185" stop-color="#808080"/><stop offset=".5677" stop-color="#797979"/><stop offset=".6027" stop-color="#6E6E6E"/><stop offset=".608" stop-color="#6B6B6B"/><stop offset="1" stop-color="#4E4E4E"/></linearGradient><path style="&st7;" d="M90.412,59.954l-0.371-0.021c-1.807,1.463-2.342,1.938-3.781,2.955c0,0-1.644,1.228-3.44,2.196c-1.804,0.97-3.919,0.853-3.919,0.853s-0.573-0.062-0.295-0.477c0.275-0.415,0.634-1.425,0.771-1.938c0.141-0.516,0.415-1.82-0.633-2.235s-3.018,0.196-3.018,0.196s-4.525,1.205-6.371,3.23c-1.793,1.969-0.286,2.846-0.286,2.846s0.702,0.49,1.386,0.73c0.645,0.229,0.516,0.436,0.354,0.555c0,0-2.021,1.287-4.408,1.974c0,0-3.268,1.001-6.441,1.206c-3.154,0.203-4.495,0.283-4.495,0.283l-0.399,0.379l-0.758-0.252c-1.283,0.154-3.455,0.463-5.596,0.979c-2.622,0.64-5.123,1.147-6.903,2.296c0,0-1.333,0.887-0.566,1.746c0.765,0.862,1.565,1.23,1.565,1.23s0.472,0.207,0.464,0.336c-0.009,0.164-0.015,0.309-0.367,0.512c0,0-1.394,0.814-4.108,0.859c-2.714,0.045-3.911,0.021-4.707-0.695c-0.658-0.591,0.165-1.844,0.165-1.844s0.33-0.612,0-1.453c-0.33-0.84-2.218-0.854-2.218-0.854l-2.615-0.134c-3.095-0.081-7.182-0.427-9.001-0.653c0,0-0.012-0.002-0.033-0.006l-0.006,0.166l-0.721-0.303c-1.139-0.221-3.243-0.668-4.075-1.084c-0.759-0.38-1.167-0.313-1.066-1.102c0.101-0.769-0.753-1.836-0.753-1.836s-1.188-1.287-2.257-2.086c-1.069-0.804-1.523-0.564-1.523-0.564s-0.484,0.258-0.049,1.296c0.436,1.04,0.86,1.403,0.86,1.403s0.208,0.22,0.089,0.279c-0.118,0.06-0.484-0.219-0.789-0.478c-0.253-0.21-1.885-1.742-2.456-2.276l0.105,0.356c0.019,0.028,0.035,0.062,0.052,0.086c0.184,0.291,0.855,1.269,2.155,2.28c1.549,1.213,1.559,0.729,1.559,0.729s0.061-0.399-0.297-0.84c-0.359-0.44-0.934-1.373-0.791-1.715c0.144-0.339,0.309-0.31,0.309-0.31s0.133-0.051,0.596,0.299c0.462,0.351,1.498,1.076,2.011,1.703c0.513,0.623,0.48,1.181,0.48,1.181s-0.102,0.563,0.453,1.17c0.553,0.604,1.733,1.714,5.859,2.351c0.025,0.004,0.034,0.006,0.059,0.01l0.193-0.551l0.573,0.663c3.598,0.521,5.555,0.563,5.555,0.563s4.709,0.162,5.982,0.162c1.272,0,1.035,0.666,1.035,0.666s-0.072,0.359-0.225,0.646c-0.155,0.287-0.524,1.365-0.144,1.939c0,0,0.585,1.427,4.381,1.527c0,0,3.324,0.268,5.643-0.688c2.319-0.954,0.226-2.275,0.226-2.275s-0.794-0.481-1.13-0.739c-0.308-0.234-0.184-0.481-0.121-0.646c0.06-0.162,0.297-0.359,0.563-0.492c0.266-0.134,1.239-0.654,5.365-1.722c4.124-1.069,6.587-1.183,6.587-1.183s0.02-0.002,0.055-0.004l0.338-0.656l0.854,0.556c0.732-0.06,1.681-0.129,2.526-0.171c1.691-0.082,4.341-0.471,5.879-0.807c1.54-0.343,3.869-1.062,5.592-1.951c1.725-0.895,1.809-1.519,1.809-1.519s0.328-0.475-0.392-0.995c-0.719-0.523-1.036-0.382-1.673-1.027c-0.637-0.646,0.557-1.62,0.557-1.62s0.612-0.861,4.021-2.175c3.403-1.313,3.979-0.873,4.153-0.729s0.195,0.615,0.123,0.935c-0.069,0.317-0.494,1.455-0.721,2.053c-0.227,0.594-0.316,1.406,0.605,1.601c0.923,0.194,2.215-0.008,3.428-0.442c2.893-1.033,3.756-2.295,8.534-5.764c0.012-0.008,0.021-0.017,0.03-0.021L90.412,59.954l0.689,0.108c1.978-1.573,3.869-3.571,3.869-3.571s1.258-1.261,1.889-2.356c0.595-1.026,0.027,0.89,0.027,0.89s-0.32,1.516,0.19,2.077c0.405,0.445,1.563-0.795,1.563-0.795s0.688-0.789,0.965-2.061c0.408-1.875,0.185-2.248,0.185-2.248s-0.246-0.389-0.093-0.852c0.154-0.459,1.158-3.047,1.98-4.01l0.502-0.563c0-0.008,0.002-0.02,0.002-0.027l-0.224-0.557l0.304-0.512c0,0-0.279,0.322-1.404,2.177c-1.266,2.087-1.467,3.771-1.467,3.771s-0.119,0.653-0.054,1.034c0.063,0.355,0.188,0.519,0.192,0.622c0.009,0.104-0.073,0.959-0.508,1.773c-0.438,0.814-0.815,1.031-0.815,1.031s-0.756,0.545-0.86,0.157c-0.104-0.39-0.074-0.72-0.035-0.966c0.035-0.248,0.289-1.579,0.252-2.072c-0.035-0.494-0.479-0.098-0.479-0.098s-0.104,0.119-0.298,0.366s-1.288,1.637-1.705,2.125c-0.988,1.157-1.886,1.989-4.292,3.93c-0.007,0.003-0.015,0.011-0.019,0.015L90.412,59.954L90.412,59.954z"/><linearGradient id="SVGID_24_" gradientUnits="userSpaceOnUse" x1="214.5928" y1="-431.356" x2="314.4043" y2="-431.356" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#555555"/><stop offset="1" stop-color="#231F20"/></linearGradient><path style="&st11;" d="M1.193,48.543l0.104,0.975c0.235,0.285,0.577,0.677,1.071,1.187c1.084,1.121,1.427,0.416,1.427,0.416s0.253-0.705-0.054-1.985C3.434,47.85,3.488,47.09,4.066,47.11c0.578,0.019,2.258,0.361,2.782,1.752c0,0,0.217,0.649,0.018,1.479c-0.2,0.834-0.162,1.57-0.018,2.295c0.145,0.725,0.759,1.407,1.464,1.971c0.706,0.562,2.746,1.535,4.734,1.66c1.987,0.127,2.601,0.021,2.601,0.021l0.746-0.767l0.134,0.668c0.812-0.09,2.116-0.229,3.62-0.393c2.528-0.271,4.227-0.544,5.798-0.308c1.573,0.235,2.079,1.462,2.079,1.462s0.108,0.314-0.253,0.544c-0.349,0.224-0.749,0.547-0.948,0.89c-0.199,0.346-0.411,1.068,0.16,2.035c0.572,0.963,2.142,1.592,3.478,1.432c1.335-0.155,3.335-0.67,4.52-0.979c1.287-0.337,2.424-0.971,2.572-1.98c0.147-1.008-1.534-2.295-1.534-2.295s-0.812-0.609-0.91-0.75c-0.1-0.139,0.099-0.197,0.099-0.197s0.949-0.229,1.357-0.414c0.404-0.189,1.522-0.646,3.353-1.219s5.608-1.248,5.608-1.248s2.084-0.332,4.685-0.543l0.622-0.702l0.485,0.625c0.409-0.024,0.825-0.046,1.243-0.063c3.572-0.129,5.344-0.554,7.242-0.979c1.897-0.427,4.568-1.978,4.965-2.276c0.396-0.295,1.229-0.66,1.396-1.957c0.168-1.295-1.364-2.157-1.364-2.157s-1.218-0.644-1.475-0.93c-0.258-0.287-0.02-0.562-0.02-0.562s0.689-1.485,2.896-2.354c2.205-0.872,3.689-1.107,4.618-1.208c0.932-0.099,1.245,0.237,1.374,0.396c0.128,0.157,0.128,0.485,0.021,0.821c-0.102,0.308-0.444,1.038-0.645,1.395c-0.197,0.356-0.523,1.216-0.316,1.622c0.208,0.405,0.843,0.593,1.662,0.445c0.821-0.149,2.988-0.761,4.888-1.553c1.9-0.792,5.073-2.345,5.073-2.345s0.009-0.004,0.022-0.012l0.086-0.729l0.729,0.295c1.02-0.562,2.764-1.58,4.01-2.631c1.871-1.573,3.699-3.225,4.166-3.639c0.465-0.417,0.892-0.752,1.307-0.732c0.414,0.021,0.732,0.317,0.988,1.434c0.258,1.118,0.308,2.038,0.426,2.582c0.117,0.543,0.285,1.175,0.931,1.304c0.646,0.129,1.513-0.434,1.838-0.713c0.33-0.276,0.92-1.176,0.882-2.382c0,0,0.068-1.604-0.761-3.127c0,0-0.351-0.614-0.479-0.782c-0.088-0.118-0.155-0.238-0.01-0.525c0.148-0.286,0.467-0.821,1.062-1.156c0.448-0.256,0.88-0.316,1.128-0.396c0,0,0.275-0.067,0.626-0.261l-0.126-0.412l0.289,0.316c0.404-0.239,0.652,0.045,0.652,0.045l-0.392-0.501l0.119-0.484c0,0-0.304-0.163-0.685-0.088c-0.383,0.078-0.42,0.362-1.014,0.458c-0.593,0.096-1.275,0.306-1.945,1.319c-0.67,1.011,0,2.271,0,2.271s0.359,0.592,0.533,0.896c0.172,0.306,1.066,2.215,0.037,3.608c0,0-0.552,0.643-1.525,0.86c-0.86,0.19-0.642-0.816-0.729-1.355c0,0-0.129-2.281-1.237-3.588c-0.976-1.146-2.746,0.888-3.629,1.566c-0.822,0.629-3.228,3.112-6.684,4.925l-0.51,0.892l-0.324-0.472c-1.658,0.827-5.418,2.656-7.87,3.514c0,0-1.875,0.762-2.64,0.782c0,0-0.17,0.006-0.034-0.179c0.133-0.185,0.276-0.322,0.507-0.737c0.23-0.418,0.646-1.357,0.646-2.327c0-0.969-1.119-1.917-2.68-1.748c-1.561,0.167-3.052,0.6-4.849,1.292c-1.796,0.692-3.343,2.159-3.55,3.375c-0.209,1.216,1.105,1.92,1.105,1.92s1.484,0.751,1.674,1.157c0.188,0.406,0.049,0.783,0.049,0.783s-0.129,0.406-0.783,0.782c-0.649,0.377-2.42,1.287-2.42,1.287s-2.207,1.217-5.562,1.512c0,0-3.058,0.26-4.817,0.348c-0.022,0.002-0.046,0.002-0.069,0.003l-0.541,0.53l-0.587-0.449c-1.64,0.136-3.54,0.359-3.54,0.359s-4.29,0.609-8.219,1.822c-3.336,1.027-3.971,1.594-3.971,1.594s-0.711,0.596-0.118,1.453c0,0,0.341,0.539,1.03,1.08c0.685,0.541,1.237,1.057,1.159,1.317c-0.08,0.265-0.29,0.382-0.29,0.382s-0.961,0.856-4.894,1.518c0,0-2.531,0.488-3.31-0.275c-0.778-0.766-0.435-1.279-0.435-1.279s0.052-0.173,0.62-0.527c0,0,0.951-0.596,0.647-1.727c-0.303-1.135-2.129-2.545-4.101-2.533c0,0-2.303,0.006-8.196,0.762c0,0-0.008,0-0.027,0.005l-0.204,0.501l-0.605-0.393c-0.324,0.039-0.713,0.076-1.114,0.107c-1.012,0.07-2.477-0.057-4.3-0.596c-1.824-0.543-2.963-1.535-3.126-2.133c-0.114-0.412,0.035-0.996,0.035-0.996S7.62,50.2,7.405,49.115c-0.22-1.083-0.582-1.934-1.631-2.567c-1.048-0.632-1.643-0.522-1.643-0.522s-0.939-0.144-0.904,1.446c0.037,1.59,0.235,2.256,0.235,2.256s0.181,0.562-0.108,0.635c-0.288,0.072-0.74-0.361-0.74-0.361s-1.021-0.924-1.619-1.688l0.048,0.066l-0.214,0.525c0,0,0.067,0.115,0.266,0.375L1.193,48.543L1.193,48.543z"/><linearGradient id="SVGID_25_" gradientUnits="userSpaceOnUse" x1="214.8965" y1="-410.8818" x2="306.501" y2="-410.8818" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#A0A0A0"/><stop offset=".0769" stop-color="#656767"/><stop offset="1" stop-color="#717375"/></linearGradient><path style="&st1;" d="M91.075,11.742l0.183,0.846c0,0-0.563,0.313-1.678,0.613c-1.113,0.3-2.188,0.801-2.188,0.801s-0.89,0.289-0.551,1.013c0.338,0.726,0.838,1.076,0.838,1.076s0.711,0.69,0.736,1.213c0.021,0.526-0.199,0.765-0.764,1.076c-0.563,0.313-1.075,0.375-1.075,0.375s-1.338,0.24-2.001-0.387c-0.663-0.626-0.787-1.663-0.787-1.663s-0.05-0.876-1.148-1.251c-1.102-0.375-2.453,0.425-2.453,0.425s-1.063,0.563-2.2,1.3c-1.14,0.738-3.291,1.64-4.642,2.114l-0.152,0.699l-0.758-0.382c-1.422,0.489-3.271,1.109-3.271,1.109S66.652,21.645,65,21.871c-1.648,0.224-2.016-0.014-2.238-0.238c-0.228-0.224,0.039-1.012,0.039-1.012s0.674-1.376,0.348-2.09c-0.324-0.714-2.451-0.9-2.486-0.9c-0.04,0-2.318-0.265-4.451,0.932c-1.895,1.062-2.143,1.642-2.143,1.642s-0.604,0.938,0.113,1.867c0.807,1.051,1.879,1.146,1.879,1.146s1.021,0.079,1.258,0.38c0.24,0.299,0.076,0.626,0.076,0.626s-0.336,0.925-2.228,1.312c0,0-3.181,0.933-9.113,1.776l-0.582,0.579c-3.743,0.47-8.143,1.363-10.555,1.989c-2.412,0.627-2.553,1.317-2.553,1.317c-0.519,0.813,0.141,1.236,0.141,1.236s0.829,0.283,1.017,1.19c0.19,0.91-0.783,1.629-0.783,1.629s-1.159,0.972-2.898,1.269c-1.739,0.297-2.396,0.35-3.429-0.47c-0.91-0.721-0.298-1.863,0.312-2.301c0.612-0.438,0.909-0.91,0.988-1.112c0.079-0.204,0.032-0.377,0.032-0.377l-0.58-0.534c-2.005-1.33-9.883,0.063-9.883,0.063s0,0.002,0,0l-1.341,0.289l-0.673-0.435c0,0-2.291,0.604-4.876,0.589c-2.712-0.014-1.27-2.128-1.27-2.128s0.638-1.118,0.75-1.764c0,0,0.224-1.745-1.42-1.631c-1.645,0.112-1.968,1.546-1.968,1.546s-0.112,0.801-0.089,1.392c0.021,0.594-0.002,1.847-0.742,2.56c-0.737,0.713-1.529,0.495-1.529,0.495s-1.331-0.582-1.595-0.718c-0.274-0.142-0.517-0.151-0.751-0.066c-0.02,0.007-0.039,0.018-0.057,0.029l-0.175,0.75l0.025-0.623c-0.156,0.176-0.271,0.42-0.271,0.42l0.088,0.327l-0.248,0.565c-0.002,0.012-0.005,0.023-0.006,0.035l0.008,0.003c0,0,0.087-0.196,0.222-0.357l0.182-0.369L1.493,32.94c0.055-0.044,0.112-0.07,0.172-0.074c0.281-0.017,0.629,0.158,0.629,0.158s1.135,0.611,1.642,0.716s0.875-0.065,1.205-0.292c0.527-0.365,1.143-1.121,1.4-1.839c0.229-0.646,0.279-2.394,0.279-2.394l0.004,0.014c0,0,0-0.421-0.011-0.518c-0.012-0.098-0.075-0.553,0.204-0.783c0.278-0.234,0.459-0.347,1.144-0.364c0.68-0.017,0.886,0.38,0.886,0.38S9.28,28.269,9.28,28.48c0,0.21-0.068,0.34-0.068,0.34s-0.371,0.626-0.5,0.934c-0.13,0.307-0.636,1.323-0.489,2.177c0.148,0.852,1.479,1.251,1.479,1.251s1.062,0.25,2.575,0.027l3.12-0.503l0.543-0.624l0.218,0.474c0.805-0.147,2.14-0.369,3.583-0.511c2.326-0.228,4.787-0.262,5.821-0.132c0,0,0.484,0.061,0.405,0.234c-0.062,0.136-0.421,0.415-0.421,0.415s-0.135,0.081-0.654,0.667s-0.671,1.155-0.693,1.661c-0.024,0.505,0.516,1.995,2.415,2.394c1.901,0.397,4.077-0.341,4.077-0.341s1.427-0.314,2.786-1.674c1.41-1.411,0.012-3.108,0.012-3.108s-0.22-0.304-0.647-0.442c0,0-0.187-0.05-0.079-0.17c0.108-0.12,0.37-0.647,1.37-0.905c1-0.257,3.977-1.198,11.065-2.135l0.274-0.617l0.874,0.459c2.708-0.373,4.551-0.694,7.827-1.454c0,0,3.04-0.539,3.675-1.651c0.368-0.65,1.032-1.539-0.045-2.434c0,0-0.125-0.161-0.791-0.312c-0.666-0.151-1.179-0.252-1.738-0.653c-0.563-0.403-0.551-0.869-0.551-0.869s-0.047-0.445,0.862-0.958c0,0,0.851-0.623,2.54-1.158c1.691-0.533,3.648-0.296,3.648-0.296s0.82,0.089,0.685,0.643c-0.14,0.555-0.604,1.482-0.622,1.959c-0.021,0.474,0.012,1.027,0.938,1.414c0.931,0.386,2.267,0.266,2.267,0.266s1.386-0.069,3.647-0.801c2.265-0.731,4.594-1.573,4.594-1.573l-0.094-0.483l0.971,0.173c0.591-0.22,1.406-0.539,2.285-0.936c1.801-0.81,2.656-1.488,3.48-1.958c0,0,1.815-1.118,2.887-1.088c0,0,0.25-0.009,0.272,0.32c0.022,0.329,0.104,0.814,0.218,1.096c0.111,0.281,0.734,1.822,2.729,2.048c1.993,0.228,2.846-1.118,2.846-1.118s0.683-1.049-0.493-2.296c0,0-0.961-1.028-0.99-1.107c0,0-0.104-0.155,0.168-0.233c0.269-0.078,3.152-0.884,4.268-1.398c0,0,0.012-0.005,0.036-0.015l-0.271-0.485l0.535,0.365c0.202-0.101,0.449-0.246,0.544-0.395c0.171-0.271-0.054-0.797-0.054-0.797l0.006-0.007c-0.133-0.184-0.266-0.366-0.4-0.546l-0.606-0.256l-0.06,0.033L91.075,11.742"/><path style="&st34;" d="M8.12,16.324l-0.291,0.435c0.134-0.023,0.244-0.056,0.244-0.056s0.404-0.066,1.112,0.12c0.917,0.244,2.067-0.496,2.067-0.496s0.872-0.523,1.274-1.381l0.361-1.005c0,0,0.291-0.972,1.105-1.281c0,0,0.317-0.171,0.831-0.177c0.513-0.005,0.392,0.354,0.392,0.354s-0.056,0.233-0.586,0.912c-0.529,0.677-0.671,1.196-0.671,1.196s-0.318,0.722,0.193,0.957c0,0,0.24,0.141,0.939-0.091c0.7-0.233,3.02-0.843,4.438-1.06l0.993-0.506c-0.313-0.23-0.602-0.444-0.602-0.444c-2.388,0.442-4.168,0.995-4.775,1.226c-0.609,0.23-0.62,0.082-0.62,0.082c-0.211-0.248,0.435-1.022,0.435-1.022s0.655-0.894,0.913-1.715c0.259-0.82-0.892-0.707-0.892-0.707c-0.758,0.121-1.303,0.48-1.93,1.236c-0.486,0.586-0.782,1.389-0.893,1.814c-0.071,0.267-0.193,0.515-0.193,0.515s-0.091,0.165-0.45,0.322c-0.416,0.182-1.228,0.396-1.228,0.396s-0.54,0.045-0.931-0.15c-0.24-0.118-0.901,0.05-0.901,0.05l0.091-0.504l-0.082-0.032l-0.683,0.383c-0.115,0.189-0.228,0.379-0.341,0.569c-0.063,0.146-0.179,0.475,0.044,0.51c0.05,0.008,0.113,0.008,0.164,0.008L8.12,16.324L8.12,16.324z"/><path style="&st34;" d="M13.295,9.19c0,0,0.342-0.271,0.342-0.026c0,0.248-0.333,0.69-0.333,0.69s-0.107,0.134-0.172,0.134C13.068,9.987,13.15,9.516,13.295,9.19L13.295,9.19z"/><path style="&st12;" d="M-16.122-14.641"/><path style="&st34;" d="M10.595,12.501c0,0-0.388,0.46,0,0.52l0.838-0.828c-0.037-0.037-0.054-0.055-0.157-0.112C11.277,12.081,10.752,12.343,10.595,12.501L10.595,12.501z"/><path style="&st28;" d="M77.807,85.745c0,0-1.75,0.806-3.396,1.603c-1.647,0.803-2.25,1.14-2.25,1.14s-0.088,0.049-0.031,0.082c0.056,0.028-0.008,0.063-0.008,0.063c-0.847,0.409-2.703,1.07-2.703,1.07s-0.167,0.057-0.157,0.02c0.006-0.041,0.199-0.105,0.199-0.105s0.381-0.146,0.283-0.217c-0.098-0.072-1.21,0.305-1.21,0.305s-1.949,0.621-2.894,0.887c-0.941,0.269-2.75,0.735-2.75,0.735c-1.201,0.298-3.75,0.798-4.315,0.901c-0.562,0.104-0.417,0.064-0.417,0.064s0.492-0.189-0.411-0.226c-1.146-0.05-2.362,0.112-3.612,0.288c-1.25,0.18-1.178,0.324-1.178,0.324s-0.04,0.154,0.708,0.14c0.752-0.019,0.534,0.046,0.534,0.046c-1.396,0.202-4.2,0.238-4.2,0.238l0.005,0.01c0.456,0.014,0.916,0.018,1.376,0.018c0.608,0,1.218-0.01,1.822-0.031c0.241-0.021,1.483-0.15,1.925-0.244c0.486-0.105-0.093-0.105-0.093-0.105l-0.74-0.023c0,0-0.776-0.026-0.052-0.158c0.729-0.133,1.834-0.192,2.388-0.252c0.83-0.094,0.541,0.105,0.541,0.105l-0.04,0.023c0,0,0.014,0.094,0.528,0.066c0.515-0.024,4.721-0.804,7.069-1.487c2.347-0.688,4.102-1.255,4.102-1.255s0.157-0.055,0.066,0.025c-0.094,0.078-0.463,0.2-0.463,0.2s-0.595,0.3,0.844-0.108c0.066-0.02,0.134-0.039,0.197-0.06c1.234-0.469,2.446-0.983,3.635-1.543c0.029-0.028,0.131-0.146-0.021-0.101c-0.172,0.056,0-0.065,0.187-0.131c0.184-0.066,2.267-1.162,3.363-1.608l0.002,0.003c0.394-0.227,0.781-0.455,1.17-0.691L77.807,85.745L77.807,85.745z"/><linearGradient id="SVGID_26_" gradientUnits="userSpaceOnUse" x1="217.6563" y1="-436.751" x2="217.6563" y2="-436.751" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset=".078" stop-color="#F4F4F4"/><stop offset=".3807" stop-color="#CECECE"/><stop offset=".5396" stop-color="#BFBFBF"/><stop offset=".8357" stop-color="#7C7C7C"/><stop offset=".8996" stop-color="#A8A8A8"/><stop offset=".9093" stop-color="#9A9A9A"/><stop offset=".9327" stop-color="#7D7D7D"/><stop offset=".9558" stop-color="#686868"/><stop offset=".9785" stop-color="#5B5B5B"/><stop offset="1" stop-color="#575757"/></linearGradient><path style="&st46;" d="M3.893,50.249L3.893,50.249L3.893,50.249z"/><linearGradient id="SVGID_27_" gradientUnits="userSpaceOnUse" x1="214.3262" y1="-436.5107" x2="322.8717" y2="-424.4851" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset=".078" stop-color="#F4F4F4"/><stop offset=".3807" stop-color="#CECECE"/><stop offset=".5396" stop-color="#BFBFBF"/><stop offset=".8357" stop-color="#7C7C7C"/><stop offset=".8996" stop-color="#A8A8A8"/><stop offset=".9093" stop-color="#9A9A9A"/><stop offset=".9327" stop-color="#7D7D7D"/><stop offset=".9558" stop-color="#686868"/><stop offset=".9785" stop-color="#5B5B5B"/><stop offset="1" stop-color="#575757"/></linearGradient><path style="&st47;" d="M1.193,48.543l0.107,0.98c0.236,0.285,0.579,0.675,1.067,1.181c1.084,1.121,1.428,0.416,1.428,0.416s0.072-0.201,0.092-0.586c-0.042,0.216-0.209,0.403-0.788-0.056c-0.298-0.237-0.688-0.627-1.076-1.049c-0.326-0.326-0.723-0.742-1.021-1.117l0.048,0.065l-0.213,0.526c0,0,0.069,0.115,0.268,0.376L1.193,48.543L1.193,48.543z"/><linearGradient id="SVGID_28_" gradientUnits="userSpaceOnUse" x1="213.8887" y1="-436.4771" x2="336.8819" y2="-422.851" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset=".078" stop-color="#F4F4F4"/><stop offset=".3807" stop-color="#CECECE"/><stop offset=".5396" stop-color="#BFBFBF"/><stop offset=".8357" stop-color="#7C7C7C"/><stop offset=".8996" stop-color="#A8A8A8"/><stop offset=".9093" stop-color="#9A9A9A"/><stop offset=".9327" stop-color="#7D7D7D"/><stop offset=".9558" stop-color="#686868"/><stop offset=".9785" stop-color="#5B5B5B"/><stop offset="1" stop-color="#575757"/></linearGradient><path style="&st48;" d="M3.741,49.133c-0.006-0.027-0.013-0.054-0.02-0.078c0.012,0.088,0.028,0.179,0.043,0.272c0,0,0.094,0.394,0.12,0.753C3.87,49.813,3.83,49.498,3.741,49.133z"/><linearGradient id="SVGID_29_" gradientUnits="userSpaceOnUse" x1="411.2539" y1="557.002" x2="507.2363" y2="537.6277" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset="1" stop-color="#BFC0C2"/></linearGradient><path style="&st49;" d="M99.696,28.566l0.29,0.316c0.406-0.238,0.654,0.045,0.654,0.045l-0.386-0.494c-0.383,0.082-1.093,0.256-2.233,0.61c0,0-1.353,0.594-1.59,1.532c-0.016,0.332,0.049,0.641,0.116,0.876c0.753,1.429,0.913,1.666,0.913,1.666c0.499,1.091,0.422,1.993,0.25,2.824c-0.188,0.921-1.188,1.668-1.794,1.842c-0.608,0.171-0.953,0-1.14-0.483c-0.188-0.485-0.157-0.845-0.438-2.34c-0.28-1.499-0.653-2.2-1.216-2.372c-0.563-0.173-1.313,0.468-1.749,0.811c-0.438,0.344-2.417,2.152-2.417,2.152s-2.324,2.091-5.743,4.026c-3.417,1.935-7.69,3.418-7.69,3.418s-2.842,1.092-3.525,0.998c-0.688-0.093-0.516-0.718-0.297-1.076c0.219-0.36,0.516-0.937,0.766-1.545c0.313-0.756,0.201-1.654-0.359-1.967c-0.562-0.311-1.248-0.468-3.523,0.094s-3.197,1.076-3.838,1.451c-0.643,0.376-1.576,1.233-1.842,1.716c-0.266,0.484-0.563,0.983,0.126,1.576c0.688,0.594,0.763,0.485,1.56,1.046c0.797,0.562,0.922,0.64,0.969,1.466c0.045,0.827-0.766,1.341-0.766,1.341s-3.123,2.082-6.602,2.777c-2.34,0.469-6.833,0.639-6.833,0.639s-1.327-0.045-5.384,0.547c-4.056,0.594-6.787,1.514-7.738,1.856c-0.952,0.343-2.34,0.81-3.136,1.17c-0.795,0.358-0.375,0.89-0.203,1.015c0.172,0.123,1.185,1.074,1.498,1.354c0.312,0.282,1.466,1.279,0.108,2.108c-1.356,0.826-3.603,1.264-3.603,1.264s-3.121,0.654-4.119,0.234c-1.001-0.422-1.2-0.778-1.452-1.358c-0.313-0.718-0.016-1.263,0.794-1.78c0.77-0.486,0.469-1.199,0.469-1.199c-0.983-1.9-3.058-2.058-4.774-1.936c-2.72,0.198-5.358,0.471-7.425,0.734c-3.059,0.39-4.541-0.063-5.992-0.516c-1.452-0.453-2.997-1.529-3.154-2.498c-0.027-0.097-0.039-0.199-0.042-0.307c-0.078-0.758,0.074-1.146,0.184-1.784c0.108-0.625-0.043-1.532-0.084-1.758c-0.008-0.026-0.016-0.058-0.023-0.085c-0.507-1.304-1.725-1.903-2.668-2.058c-0.953-0.157-0.983,0.857-0.983,0.857s-0.002,0.012-0.006,0.04c0.078-0.208,0.222-0.315,0.444-0.31c0.577,0.02,2.259,0.361,2.781,1.754c0,0,0.218,0.648,0.019,1.479c-0.199,0.832-0.162,1.571-0.019,2.295c0.145,0.725,0.759,1.408,1.465,1.969c0.704,0.562,2.745,1.535,4.734,1.66c1.814,0.117,2.483,0.037,2.587,0.023l0.759-0.768l0.135,0.666c0.81-0.088,2.115-0.229,3.619-0.394c2.529-0.271,4.227-0.541,5.8-0.306c1.572,0.232,2.078,1.463,2.078,1.463s0.107,0.313-0.253,0.542c-0.349,0.226-0.75,0.548-0.947,0.891c-0.2,0.345-0.411,1.066,0.159,2.033c0.572,0.965,2.142,1.595,3.478,1.435c1.336-0.158,3.336-0.672,4.521-0.98c1.286-0.336,2.424-0.969,2.572-1.979c0.148-1.009-1.534-2.297-1.534-2.297s-0.81-0.611-0.909-0.75c-0.1-0.14,0.099-0.197,0.099-0.197s0.95-0.229,1.356-0.416c0.403-0.19,1.523-0.644,3.353-1.217c1.831-0.572,5.609-1.248,5.609-1.248s2.09-0.332,4.694-0.543l0.612-0.705l0.493,0.627c0.406-0.023,0.819-0.045,1.235-0.061c3.572-0.129,5.343-0.555,7.24-0.979c1.897-0.426,4.569-1.979,4.965-2.276c0.396-0.296,1.229-0.662,1.395-1.958c0.17-1.294-1.363-2.157-1.363-2.157s-1.218-0.643-1.476-0.929c-0.256-0.288-0.019-0.562-0.019-0.562s0.689-1.485,2.896-2.355c2.207-0.872,3.69-1.106,4.619-1.207c0.931-0.099,1.247,0.237,1.375,0.395c0.128,0.158,0.128,0.485,0.021,0.821c-0.101,0.308-0.443,1.039-0.644,1.396c-0.199,0.356-0.522,1.216-0.317,1.622c0.211,0.405,0.842,0.592,1.662,0.444c0.822-0.147,2.987-0.761,4.889-1.553c1.897-0.793,5.074-2.344,5.074-2.344s0.01-0.005,0.021-0.013l0.086-0.729l0.729,0.296c1.021-0.562,2.764-1.582,4.01-2.63c1.871-1.574,3.699-3.225,4.166-3.641c0.465-0.415,0.89-0.751,1.305-0.732c0.416,0.021,0.734,0.318,0.99,1.434c0.258,1.119,0.306,2.038,0.426,2.583c0.117,0.542,0.285,1.176,0.929,1.305c0.644,0.128,1.513-0.436,1.841-0.713c0.326-0.277,0.918-1.176,0.879-2.383c0,0,0.068-1.605-0.762-3.127c0,0-0.348-0.614-0.477-0.782c-0.088-0.119-0.155-0.238-0.008-0.523c0.146-0.288,0.465-0.821,1.059-1.157c0.449-0.256,0.881-0.316,1.128-0.396c0,0,0.28-0.069,0.636-0.266L99.696,28.566L99.696,28.566z"/><path style="&st23;" d="M1.547,32.696l-0.05,0.239c0.053-0.041,0.111-0.068,0.17-0.072c0.281-0.018,0.629,0.158,0.629,0.158s1.135,0.61,1.642,0.716c0.507,0.105,0.875-0.065,1.205-0.292c0.25-0.174,0.521-0.434,0.763-0.737c-0.29,0.29-0.725,0.548-1.365,0.595c0,0-0.571-0.049-1.419-0.587c-0.846-0.537-1.327-0.231-1.729,0.105l0,0l-0.249,0.564c-0.001,0.013-0.003,0.023-0.006,0.036l0.009,0.001c0,0,0.087-0.192,0.217-0.352L1.547,32.696L1.547,32.696z"/><path style="&st4;" d="M6.387,31.961c0.059-0.12,0.112-0.238,0.155-0.354c0.05-0.14,0.09-0.334,0.125-0.55c-0.096,0.44-0.223,0.73-0.223,0.73S6.428,31.853,6.387,31.961L6.387,31.961z"/><path style="&st4;" d="M6.807,28.654c-0.038,0.439-0.038,0.987-0.038,1.493l0,0c0.04-0.509,0.052-0.935,0.052-0.935l0.004,0.014c0,0,0-0.421-0.011-0.518C6.811,28.695,6.809,28.677,6.807,28.654z"/><linearGradient id="SVGID_30_" gradientUnits="userSpaceOnUse" x1="413.5137" y1="516.4121" x2="417.999" y2="516.4121" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#E2E3E4"/><stop offset=".5055" stop-color="#FFF"/></linearGradient><path style="&st50;" d="M8.12,16.324l-0.291,0.435c0.087-0.014,0.089-0.007,0.244-0.056c0,0,0.404-0.066,1.112,0.12c0.917,0.244,2.067-0.496,2.067-0.496s0.272-0.164,0.583-0.458c-0.4,0.24-1.385,0.762-2.132,0.585c-0.961-0.229-0.994-0.017-1.336-0.049c-0.292-0.028-0.292-0.11-0.275-0.314c0.002-0.032,0.023-0.054,0.03-0.092c0.05-0.261,0.339-0.689,0.339-0.689l-0.684,0.383c-0.115,0.189-0.227,0.378-0.34,0.569c-0.063,0.146-0.179,0.475,0.044,0.509c0.055,0.009,0.11,0.011,0.163,0.009L8.12,16.324L8.12,16.324z"/><path style="&st23;" d="M17.019,15.036c-1.027,0.278-1.972,0.734-2.494,0.604c-0.438-0.109-0.084-0.76,0.042-0.965c0.069-0.146,0.167-0.292,0.249-0.406c0.31-0.506,0.833-1.351,0.833-1.351s0,0,0-0.002c0.017-0.032,0.033-0.067,0.049-0.102c0.067-0.18,0.12-0.537-0.472-0.597c-0.799-0.082-1.613,0.619-1.613,0.619s-0.547,0.301-0.838,1.417l0.112-0.313c0,0,0.291-0.973,1.105-1.281c0,0,0.317-0.171,0.831-0.177c0.513-0.005,0.392,0.354,0.392,0.354s-0.056,0.233-0.586,0.912c-0.529,0.677-0.671,1.195-0.671,1.195s-0.319,0.723,0.193,0.957c0,0,0.238,0.141,0.939-0.091c0.7-0.233,3.02-0.843,4.438-1.06l0.993-0.506C19.849,14.299,18.012,14.769,17.019,15.036L17.019,15.036z"/><path style="&st23;" d="M-16.122-14.641"/><path style="&st23;" d="M-16.122-14.641"/><path style="&st59;" d="M90.578,74.217c0.006-0.004,0.009-0.008,0.014-0.013C90.587,74.21,90.582,74.213,90.578,74.217z"/><path style="&st59;" d="M90.821,73.951c0.001-0.002,0.002-0.004,0.003-0.004C90.823,73.947,90.822,73.949,90.821,73.951z"/><path style="&st59;" d="M90.738,74.042c0.003-0.004,0.008-0.009,0.011-0.013C90.746,74.033,90.741,74.038,90.738,74.042z"/><path style="&st8;" d="M87.9,76.68l-0.164,0.174c-0.646,0.716-0.969,1.007-0.969,1.007l-0.242,0.269l0,0c-0.002,0.006-0.006,0.012-0.012,0.014c0.008,0.002,0.018,0.004,0.041,0.004c0,0,0.229-0.002,0.588-0.219c-0.072,0.041-0.139,0.068-0.181,0.07c-0.177,0.012,0.431-0.538,0.431-0.538s0.588-0.626,0.967-1.125c0.382-0.497,0.138-0.468,0.138-0.468s-0.087-0.021-0.397,0.125C88.125,76.018,88.268,76.223,87.9,76.68L87.9,76.68z"/><path style="&st59;" d="M90.657,74.133c0.003-0.006,0.007-0.013,0.013-0.017C90.664,74.121,90.662,74.128,90.657,74.133z"/><path style="&st0;" d="M72.945,81.21c0,0,2.215-0.931,3.402-0.79c0,0,0.611,0.059-0.062,0.711c-0.672,0.652-0.892,1.168,0.396,0.752c0,0,0.094-0.033,0.244-0.086c-0.504,0.143-0.734,0.143-0.658,0.033c0.127-0.188,0.461-0.461,0.461-0.461s0.399-0.4,0.399-0.801c0,0,0.128-0.588-1.604-0.225c-1.01,0.209-1.969,0.59-2.588,0.867C72.941,81.211,72.943,81.211,72.945,81.21L72.945,81.21z"/><path style="&st59;" d="M72.234,81.555l-0.004,0.002C72.232,81.557,72.234,81.555,72.234,81.555z"/><path style="&st59;" d="M88.057,76.014c-0.014,0.008-0.026,0.015-0.043,0.021C88.028,76.027,88.043,76.021,88.057,76.014z"/><path style="&st14;" d="M78.305,81.299c1.448-0.521,3.93-1.854,5.023-2.492C82.232,79.442,79.73,80.717,78.305,81.299z"/><path style="&st59;" d="M87.512,76.325c0.026-0.017,0.055-0.032,0.08-0.049C87.566,76.293,87.538,76.309,87.512,76.325z"/><path style="&st59;" d="M91.618,73.084c0.008-0.011,0.019-0.023,0.026-0.029C91.637,73.061,91.626,73.073,91.618,73.084z"/><path style="&st59;" d="M91.434,73.281c0.01-0.012,0.019-0.02,0.023-0.027C91.451,73.264,91.441,73.27,91.434,73.281z"/><path style="&st59;" d="M91.521,73.188c0.01-0.012,0.02-0.022,0.029-0.032C91.539,73.165,91.53,73.178,91.521,73.188z"/><path style="&st59;" d="M90.9,73.863c0.003-0.006,0.007-0.01,0.012-0.016C90.907,73.854,90.903,73.857,90.9,73.863z"/><path style="&st59;" d="M71.246,82.088c-0.014,0.008-0.023,0.018-0.036,0.022C71.221,82.105,71.232,82.096,71.246,82.088z"/><path style="&st59;" d="M91.346,73.375c0.008-0.008,0.014-0.015,0.021-0.021C91.359,73.36,91.354,73.367,91.346,73.375z"/><path style="&st59;" d="M91.077,73.669c0.006-0.006,0.01-0.011,0.013-0.015C91.087,73.659,91.083,73.663,91.077,73.669z"/><path style="&st59;" d="M91.251,73.479c0.007-0.006,0.015-0.012,0.021-0.021C91.266,73.463,91.255,73.473,91.251,73.479z"/><path style="&st59;" d="M90.987,73.768c0.004-0.006,0.01-0.012,0.016-0.021C90.997,73.756,90.991,73.762,90.987,73.768z"/><path style="&st59;" d="M91.161,73.578c0.006-0.006,0.011-0.014,0.017-0.02C91.172,73.564,91.165,73.572,91.161,73.578z"/><path style="&st59;" d="M71.816,81.764c-0.008,0.006-0.02,0.012-0.026,0.017C71.799,81.774,71.809,81.77,71.816,81.764z"/><path style="&st59;" d="M72.044,81.646c-0.006,0.004-0.012,0.006-0.019,0.009C72.032,81.652,72.038,81.649,72.044,81.646z"/><path style="&st59;" d="M71.305,82.055c-0.011,0.008-0.021,0.014-0.031,0.021C71.283,82.067,71.294,82.063,71.305,82.055z"/><path style="&st59;" d="M71.969,81.684c-0.008,0.004-0.015,0.009-0.021,0.014C71.953,81.692,71.961,81.688,71.969,81.684z"/><path style="&st59;" d="M72.109,81.613c-0.004,0.005-0.01,0.006-0.016,0.01C72.102,81.619,72.105,81.617,72.109,81.613z"/><path style="&st59;" d="M72.008,81.665c-0.007,0.004-0.013,0.007-0.021,0.011C71.994,81.672,72.001,81.669,72.008,81.665z"/><path style="&st59;" d="M72.206,81.566c-0.003,0.002-0.005,0.003-0.007,0.004C72.201,81.569,72.203,81.568,72.206,81.566z"/><path style="&st59;" d="M72.148,81.594c-0.008,0.004-0.016,0.01-0.024,0.015C72.135,81.604,72.141,81.598,72.148,81.594z"/><path style="&st59;" d="M71.928,81.707c-0.01,0.003-0.02,0.01-0.027,0.016C71.908,81.715,71.918,81.711,71.928,81.707z"/><path style="&st59;" d="M72.193,81.575c-0.006,0.001-0.01,0.003-0.014,0.004C72.184,81.578,72.189,81.575,72.193,81.575z"/><path style="&st59;" d="M72.172,81.585c-0.004,0.003-0.008,0.005-0.015,0.007C72.164,81.59,72.168,81.585,72.172,81.585z"/><path style="&st59;" d="M72.079,81.631c-0.008,0.002-0.013,0.004-0.019,0.006C72.066,81.635,72.071,81.633,72.079,81.631z"/><path style="&st59;" d="M71.866,81.739c-0.011,0.002-0.021,0.008-0.027,0.013C71.848,81.747,71.857,81.741,71.866,81.739z"/><path style="&st59;" d="M71.555,81.906c-0.018,0.012-0.033,0.02-0.052,0.029C71.521,81.924,71.539,81.918,71.555,81.906z"/><path style="&st59;" d="M72.219,81.561c0,0.002-0.002,0.002-0.002,0.004C72.217,81.563,72.219,81.563,72.219,81.561z"/><path style="&st59;" d="M71.421,81.986c-0.011,0.006-0.022,0.01-0.03,0.02C71.398,81.996,71.41,81.992,71.421,81.986z"/><path style="&st59;" d="M71.363,82.02c-0.012,0.005-0.021,0.013-0.032,0.021C71.342,82.032,71.354,82.024,71.363,82.02z"/><path style="&st59;" d="M71.482,81.948c-0.014,0.006-0.023,0.015-0.036,0.021C71.458,81.963,71.471,81.956,71.482,81.948z"/><path style="&st59;" d="M71.768,81.79c-0.01,0.004-0.018,0.009-0.024,0.017C71.751,81.799,71.758,81.794,71.768,81.79z"/><path style="&st59;" d="M91.708,72.984c0.013-0.014,0.024-0.028,0.04-0.042C91.734,72.956,91.723,72.971,91.708,72.984z"/><path style="&st59;" d="M71.717,81.818c-0.01,0.004-0.019,0.009-0.027,0.015C71.698,81.827,71.707,81.822,71.717,81.818z"/><path style="&st59;" d="M71.665,81.846c-0.011,0.006-0.021,0.014-0.028,0.018C71.645,81.858,71.654,81.852,71.665,81.846z"/><path style="&st59;" d="M71.609,81.875c-0.01,0.008-0.021,0.014-0.03,0.02C71.589,81.889,71.602,81.881,71.609,81.875z"/><path style="&st59;" d="M92.443,72.197c-0.021,0.021-0.037,0.039-0.055,0.061C92.406,72.238,92.423,72.217,92.443,72.197z"/><path style="&st59;" d="M92.359,72.287c-0.021,0.021-0.041,0.044-0.061,0.066C92.318,72.331,92.339,72.309,92.359,72.287z"/><path style="&st59;" d="M92.501,72.135c-0.011,0.015-0.021,0.023-0.028,0.033C92.48,72.157,92.49,72.148,92.501,72.135z"/><path style="&st59;" d="M91.786,72.899c0.022-0.021,0.042-0.042,0.062-0.063C91.828,72.857,91.807,72.878,91.786,72.899z"/><path style="&st59;" d="M92.273,72.379c-0.014,0.016-0.025,0.029-0.041,0.045C92.245,72.409,92.26,72.395,92.273,72.379z"/><path style="&st59;" d="M92.579,72.053c-0.013,0.012-0.021,0.021-0.03,0.032C92.559,72.074,92.569,72.063,92.579,72.053z"/><path style="&st59;" d="M92.762,71.858c-0.002,0-0.002,0-0.002,0.001C92.76,71.858,92.76,71.858,92.762,71.858z"/><path style="&st59;" d="M92.703,71.919c-0.004,0.005-0.01,0.013-0.014,0.017C92.693,71.928,92.699,71.924,92.703,71.919z"/><path style="&st59;" d="M87.938,76.074c-0.017,0.008-0.027,0.016-0.043,0.023C87.907,76.09,87.922,76.082,87.938,76.074z"/><path style="&st59;" d="M92.648,71.98c-0.012,0.011-0.021,0.021-0.029,0.029C92.629,72,92.637,71.991,92.648,71.98z"/><path style="&st59;" d="M87.666,76.229c-0.018,0.013-0.031,0.021-0.051,0.031C87.633,76.25,87.648,76.241,87.666,76.229z"/><path style="&st59;" d="M48.204,91.026c0,0-0.001,0-0.003,0.002C48.203,91.026,48.203,91.026,48.204,91.026z"/><path style="&st59;" d="M48.073,91.03c-0.007,0-0.013,0-0.021,0C48.06,91.03,48.066,91.03,48.073,91.03z"/><path style="&st59;" d="M48.136,91.028c-0.007,0.002-0.013,0.002-0.02,0.002C48.123,91.03,48.129,91.03,48.136,91.028z"/><path style="&st59;" d="M48.005,91.032c-0.003,0-0.007,0-0.012,0C47.998,91.032,48.002,91.032,48.005,91.032z"/><path style="&st59;" d="M47.94,91.035c-0.004,0-0.009,0-0.015,0C47.93,91.035,47.935,91.035,47.94,91.035z"/><path style="&st59;" d="M87.869,76.111c-0.014,0.006-0.021,0.015-0.039,0.021C87.848,76.126,87.857,76.117,87.869,76.111z"/><path style="&st59;" d="M87.807,76.146c-0.014,0.009-0.025,0.018-0.041,0.021C87.779,76.164,87.793,76.155,87.807,76.146z"/><path style="&st59;" d="M87.738,76.186c-0.016,0.011-0.028,0.018-0.044,0.024C87.71,76.203,87.723,76.196,87.738,76.186z"/><path style="&st59;" d="M87.951,76.067c0.02-0.011,0.035-0.021,0.054-0.027C87.986,76.047,87.971,76.057,87.951,76.067z"/><path style="&st59;" d="M87.719,77.52c0,0-0.082,0.064-0.193,0.147C87.592,77.621,87.664,77.566,87.719,77.52z"/><path style="&st59;" d="M92.205,72.452c-0.021,0.022-0.042,0.046-0.064,0.067C92.163,72.498,92.186,72.475,92.205,72.452z"/><path style="&st59;" d="M28.05,87.006c-0.019-0.007-0.037-0.016-0.056-0.021C28.013,86.991,28.031,86.999,28.05,87.006z"/><path style="&st59;" d="M71.051,82.217c-0.013,0.008-0.021,0.017-0.037,0.021C71.027,82.23,71.038,82.223,71.051,82.217z"/><path style="&st59;" d="M45.854,89.871c-0.024,0-0.049-0.004-0.074-0.004C45.806,89.867,45.831,89.871,45.854,89.871z"/><path style="&st59;" d="M27.678,86.883c0.02,0.004,0.039,0.01,0.058,0.019C27.717,86.893,27.696,86.887,27.678,86.883z"/><path style="&st59;" d="M27.555,86.844c0.038,0.012,0.078,0.022,0.119,0.037C27.633,86.869,27.593,86.854,27.555,86.844z"/><path style="&st59;" d="M27.862,86.941c-0.041-0.014-0.082-0.026-0.123-0.04C27.78,86.913,27.82,86.928,27.862,86.941z"/><path style="&st59;" d="M91.88,72.799c0.015-0.016,0.026-0.027,0.04-0.043C91.907,72.771,91.895,72.784,91.88,72.799z"/><path style="&st59;" d="M28.058,87.006c0.04,0.016,0.079,0.026,0.116,0.041C28.137,87.033,28.098,87.021,28.058,87.006z"/><path style="&st59;" d="M91.977,72.695c0.014-0.016,0.026-0.027,0.041-0.044C92.002,72.668,91.989,72.68,91.977,72.695z"/><path style="&st59;" d="M92.057,72.612c0.021-0.022,0.039-0.041,0.061-0.062C92.096,72.571,92.076,72.59,92.057,72.612z"/><path style="&st59;" d="M27.991,86.985c-0.021-0.009-0.041-0.017-0.062-0.022C27.95,86.969,27.97,86.977,27.991,86.985z"/><path style="&st59;" d="M71.133,82.162c0.021-0.013,0.037-0.021,0.055-0.036C71.17,82.139,71.152,82.149,71.133,82.162z"/><path style="&st59;" d="M46.361,89.926c-0.016-0.002-0.035-0.004-0.053-0.008C46.325,89.922,46.345,89.924,46.361,89.926z"/><path style="&st59;" d="M71.122,82.17c-0.019,0.012-0.034,0.021-0.049,0.032C71.088,82.191,71.105,82.18,71.122,82.17z"/><path style="&st59;" d="M46.439,89.939c-0.017-0.002-0.032-0.006-0.049-0.008C46.407,89.934,46.422,89.938,46.439,89.939z"/><path style="&st59;" d="M46.513,89.953c-0.016-0.005-0.031-0.007-0.047-0.011C46.481,89.946,46.497,89.948,46.513,89.953z"/><path style="&st59;" d="M46.096,89.891c-0.031-0.002-0.065-0.006-0.1-0.01C46.031,89.885,46.065,89.889,46.096,89.891z"/><path style="&st59;" d="M46.278,89.913c-0.02-0.002-0.041-0.004-0.061-0.006C46.237,89.909,46.259,89.911,46.278,89.913z"/><path style="&st59;" d="M46.19,89.904c-0.028-0.005-0.054-0.008-0.084-0.012C46.136,89.896,46.163,89.899,46.19,89.904z"/><path style="&st59;" d="M45.971,89.881c-0.025-0.005-0.051-0.006-0.079-0.009C45.92,89.875,45.945,89.877,45.971,89.881z"/><path style="&st59;" d="M27.926,86.961c-0.02-0.004-0.039-0.011-0.058-0.019C27.888,86.953,27.908,86.957,27.926,86.961z"/><path style="&st59;" d="M47.395,90.975c0.001,0.004,0.003,0.004,0.004,0.004C47.398,90.979,47.396,90.979,47.395,90.975z"/><path style="&st59;" d="M47.375,90.969c0.001,0,0.002,0,0.003,0C47.378,90.969,47.376,90.969,47.375,90.969z"/><path style="&st59;" d="M47.418,90.982L47.418,90.982L47.418,90.982z"/><path style="&st59;" d="M47.465,90.996c0.003,0,0.004,0.001,0.006,0.001C47.47,90.997,47.468,90.996,47.465,90.996z"/><path style="&st59;" d="M47.442,90.988c0.001,0,0.002,0.002,0.002,0.002L47.442,90.988z"/><path style="&st59;" d="M47.342,90.955L47.342,90.955L47.342,90.955z"/><path style="&st59;" d="M46.589,89.967c-0.02-0.002-0.036-0.009-0.054-0.013C46.553,89.959,46.57,89.965,46.589,89.967z"/><path style="&st59;" d="M46.764,90.012c-0.011-0.004-0.021-0.008-0.033-0.012C46.742,90.006,46.753,90.008,46.764,90.012z"/><path style="&st59;" d="M49.049,90.953c-0.01,0.001-0.021,0.002-0.032,0.004C49.028,90.955,49.038,90.954,49.049,90.953z"/><path style="&st59;" d="M46.659,89.984c-0.021-0.006-0.039-0.01-0.061-0.014C46.619,89.975,46.639,89.979,46.659,89.984z"/><path style="&st59;" d="M47.767,91.028c0.003,0,0.003,0,0.006,0C47.773,91.028,47.77,91.028,47.767,91.028z"/><path style="&st59;" d="M47.821,91.03c0.003,0,0.007,0,0.013,0C47.828,91.03,47.824,91.03,47.821,91.03z"/><path style="&st59;" d="M45.214,89.855c0.047,0,0.092,0,0.139,0C45.308,89.855,45.261,89.855,45.214,89.855z"/><path style="&st59;" d="M47.716,91.026c0.005,0,0.009,0,0.013,0.002C47.727,91.026,47.722,91.026,47.716,91.026z"/><path style="&st32;" d="M46.772,90.014c0,0,0.158,0.021,0.059,0.338c-0.1,0.313,0.06,0.451,0.475,0.594l0.023,0.006c0,0,0.001,0,0.002,0c-0.079-0.04-0.074-0.08-0.074-0.08s-0.01-0.078,0.078-0.216c0.087-0.136,0.009-0.369-0.293-0.536C47.044,90.118,46.967,90.07,46.772,90.014L46.772,90.014L46.772,90.014z"/><path style="&st59;" d="M47.869,91.032c0.006,0,0.012,0,0.018,0C47.881,91.032,47.875,91.032,47.869,91.032z"/><path style="&st59;" d="M47.495,91.002c0.001,0,0.004,0,0.004,0C47.497,91.002,47.496,91.002,47.495,91.002z"/><path style="&st59;" d="M47.677,91.024c0.004,0,0.007,0,0.01,0C47.684,91.024,47.681,91.024,47.677,91.024z"/><path style="&st59;" d="M47.529,91.006c0.001,0,0.002,0,0.002,0S47.53,91.006,47.529,91.006z"/><path style="&st59;" d="M47.559,91.01c0.002,0.002,0.005,0.002,0.008,0.002C47.566,91.012,47.561,91.01,47.559,91.01z"/><path style="&st59;" d="M47.594,91.016c0.002,0,0.004,0,0.008,0C47.599,91.016,47.596,91.016,47.594,91.016z"/><path style="&st59;" d="M46.711,89.997c-0.011-0.002-0.026-0.007-0.043-0.011C46.685,89.99,46.701,89.995,46.711,89.997z"/><path style="&st59;" d="M28.748,87.256c-0.008-0.003-0.018-0.007-0.025-0.01C28.731,87.25,28.739,87.254,28.748,87.256z"/><path style="&st59;" d="M28.776,87.27c-0.007-0.002-0.016-0.008-0.024-0.012C28.761,87.262,28.769,87.268,28.776,87.27z"/><path style="&st59;" d="M28.681,87.23c-0.008-0.004-0.021-0.006-0.03-0.01C28.66,87.225,28.672,87.227,28.681,87.23z"/><path style="&st59;" d="M45.66,89.862c0.026,0,0.052,0.005,0.074,0.005C45.711,89.865,45.686,89.865,45.66,89.862z"/><path style="&st59;" d="M28.797,87.275c-0.005-0.002-0.013-0.006-0.021-0.008C28.784,87.271,28.792,87.273,28.797,87.275z"/><path style="&st59;" d="M27.38,86.794c0.038,0.011,0.074,0.022,0.112,0.031C27.453,86.816,27.417,86.803,27.38,86.794z"/><path style="&st59;" d="M27.492,86.825c0.021,0.004,0.039,0.011,0.058,0.019C27.53,86.836,27.512,86.829,27.492,86.825z"/><path style="&st59;" d="M28.814,87.284c-0.003-0.002-0.006-0.005-0.012-0.007C28.808,87.279,28.811,87.282,28.814,87.284z"/><path style="&st59;" d="M28.64,87.219c-0.011-0.006-0.021-0.01-0.03-0.014C28.621,87.21,28.629,87.213,28.64,87.219z"/><path style="&st61;" d="M27.687,87.239c-0.014-0.013-0.023-0.022-0.03-0.032c-0.263-0.197-0.343-0.418-0.343-0.418l0.009-0.011c0.017,0.007,0.034,0.011,0.052,0.014c-0.291-0.075-0.5-0.104-0.479-0.018c0.015,0.061,0.131,0.153,0.269,0.245c0.174,0.094,0.346,0.187,0.522,0.279V87.239L27.687,87.239z"/><path style="&st59;" d="M28.716,87.245c-0.009-0.003-0.018-0.006-0.027-0.01C28.699,87.239,28.708,87.242,28.716,87.245z"/><path style="&st59;" d="M28.602,87.202c-0.013-0.004-0.027-0.01-0.042-0.015C28.574,87.192,28.59,87.198,28.602,87.202z"/><path style="&st59;" d="M28.841,87.293c0,0-0.006-0.004-0.022-0.009C28.835,87.29,28.841,87.293,28.841,87.293z"/><path style="&st59;" d="M28.232,87.068c-0.018-0.006-0.031-0.014-0.047-0.018C28.201,87.055,28.215,87.063,28.232,87.068z"/><path style="&st59;" d="M45.534,89.858c0.028,0,0.054,0.002,0.081,0.002C45.587,89.858,45.562,89.858,45.534,89.858z"/><path style="&st59;" d="M45.397,89.855c0.029,0,0.06,0,0.089,0C45.457,89.855,45.427,89.855,45.397,89.855z"/><path style="&st59;" d="M28.348,87.11c-0.034-0.013-0.07-0.025-0.106-0.039C28.278,87.085,28.314,87.098,28.348,87.11z"/><path style="&st59;" d="M28.506,87.168c-0.013-0.005-0.025-0.01-0.037-0.015C28.481,87.158,28.494,87.162,28.506,87.168z"/><path style="&st59;" d="M28.401,87.129c-0.013-0.006-0.028-0.011-0.043-0.015C28.373,87.118,28.388,87.123,28.401,87.129z"/><path style="&st59;" d="M28.557,87.186c-0.013-0.004-0.025-0.012-0.04-0.017C28.531,87.176,28.544,87.182,28.557,87.186z"/><path style="&st59;" d="M28.458,87.15c-0.016-0.008-0.031-0.014-0.047-0.018C28.427,87.137,28.442,87.143,28.458,87.15z"/><path style="&st59;" d="M70.02,84.389c0.004,0,0.006,0,0.006,0C70.023,84.389,70.023,84.389,70.02,84.389z"/><path style="&st59;" d="M70.789,84.087c-0.001,0.003-0.003,0.005-0.004,0.005C70.786,84.09,70.788,84.088,70.789,84.087z"/><path style="&st59;" d="M70.762,84.102c-0.002,0.002-0.004,0.002-0.006,0.004C70.758,84.104,70.76,84.104,70.762,84.102z"/><path style="&st59;" d="M70.732,84.116c-0.002,0.002-0.004,0.003-0.006,0.004C70.729,84.119,70.73,84.118,70.732,84.116z"/><path style="&st59;" d="M70.697,84.133c-0.001,0-0.002,0-0.002,0.002C70.695,84.133,70.696,84.133,70.697,84.133z"/><path style="&st59;" d="M70.417,84.249c0.006-0.001,0.009-0.002,0.011-0.002C70.426,84.247,70.423,84.248,70.417,84.249z"/><path style="&st59;" d="M70.389,84.262h0.002H70.389z"/><path style="&st59;" d="M70.662,84.146L70.662,84.146L70.662,84.146z"/><path style="&st59;" d="M70.316,84.289c0.002-0.002,0.007-0.003,0.009-0.003C70.321,84.286,70.318,84.287,70.316,84.289z"/><path style="&st59;" d="M70.285,84.299c0.003,0,0.005-0.002,0.009-0.004C70.29,84.297,70.288,84.299,70.285,84.299z"/><path style="&st59;" d="M70.354,84.275c0.002-0.002,0.002-0.002,0.002-0.002S70.354,84.273,70.354,84.275z"/><path style="&st59;" d="M48.946,90.965c-0.011,0-0.022,0.004-0.033,0.004C48.924,90.969,48.935,90.965,48.946,90.965z"/><path style="&st59;" d="M70.256,84.311c0.002,0,0.004,0,0.006-0.002C70.26,84.311,70.258,84.311,70.256,84.311z"/><path style="&st59;" d="M70.78,82.41c0.013-0.009,0.026-0.021,0.042-0.032C70.809,82.389,70.793,82.401,70.78,82.41z"/><path style="&st59;" d="M70.956,82.279c0.013-0.008,0.022-0.016,0.033-0.023C70.98,82.264,70.969,82.271,70.956,82.279z"/><path style="&st59;" d="M70.898,82.321c0.012-0.009,0.022-0.017,0.033-0.022C70.923,82.305,70.91,82.313,70.898,82.321z"/><path style="&st2;" d="M70.903,83.794c0.2,0.064,0.106,0.171-0.087,0.278l0.089-0.033c0,0,0.793-0.436,0.458-0.633c-0.338-0.198-1.129-0.275-0.613-0.969l0.02-0.02c-0.442,0.344-0.756,0.727-0.498,1.021C70.27,83.443,70.387,83.629,70.903,83.794z"/><path style="&st59;" d="M70.566,84.191c-0.002,0-0.006,0.002-0.008,0.003C70.561,84.193,70.564,84.191,70.566,84.191z"/><path style="&st59;" d="M70.631,84.163c-0.002,0.001-0.004,0.002-0.006,0.003C70.627,84.165,70.629,84.164,70.631,84.163z"/><path style="&st59;" d="M70.598,84.176c0,0.002-0.004,0.004-0.006,0.004C70.594,84.18,70.598,84.178,70.598,84.176z"/><path style="&st59;" d="M70.493,84.223c-0.003,0-0.003,0-0.007,0.002C70.49,84.223,70.49,84.223,70.493,84.223z"/><path style="&st59;" d="M70.459,84.233c-0.002,0-0.004,0.002-0.008,0.004C70.455,84.235,70.457,84.233,70.459,84.233z"/><path style="&st59;" d="M70.842,82.363c0.012-0.01,0.024-0.018,0.034-0.025C70.866,82.346,70.854,82.354,70.842,82.363z"/><path style="&st59;" d="M48.293,91.024c-0.007,0-0.016,0-0.023,0C48.277,91.024,48.286,91.024,48.293,91.024z"/><path style="&st59;" d="M48.444,91.014c-0.004,0-0.011,0-0.017,0C48.434,91.014,48.44,91.014,48.444,91.014z"/><path style="&st59;" d="M48.369,91.02c-0.009,0-0.017,0-0.027,0C48.352,91.02,48.359,91.02,48.369,91.02z"/><path style="&st8;" d="M50.023,89.904c0,0,0.362,0.225,1.673,0.285c0,0,0.45,0,0.468,0.035c0.016,0.028,0.036,0.056-0.068,0.102l0,0c0.06-0.021,0.793-0.254,0.476-0.391c-0.04-0.019-0.063-0.024-0.074-0.028c-0.006,0-0.013,0-0.019-0.003l0,0c-0.008-0.002-0.016-0.002-0.021-0.004c-0.007,0-0.009-0.001-0.013-0.001c-0.006-0.003-0.014-0.003-0.021-0.005c-0.004,0-0.009,0-0.015-0.002c-0.005,0-0.011-0.002-0.017-0.002c-0.004,0-0.011-0.002-0.017-0.004c-0.005,0-0.012,0-0.015,0c-0.008-0.002-0.014-0.002-0.018-0.004c-0.004,0-0.012,0-0.016-0.002c-0.005,0-0.012,0-0.018,0c-0.002-0.004-0.008-0.004-0.01-0.004c-0.011-0.002-0.015-0.003-0.021-0.003c-0.004,0-0.006-0.001-0.008-0.001c-0.01-0.001-0.021-0.001-0.028-0.002c0,0-0.002,0-0.004-0.002c-0.007,0-0.015,0-0.021,0c-0.005-0.002-0.007-0.002-0.012-0.002s-0.011,0-0.02,0c-0.004,0-0.006,0-0.008,0c-0.008-0.002-0.013-0.002-0.019-0.002c-0.003,0-0.007,0-0.009,0c-0.008,0-0.014-0.002-0.018-0.002c-0.005,0-0.009-0.003-0.012-0.003c-0.006,0-0.014,0-0.021,0c-0.004,0-0.004,0-0.006,0c-0.039-0.004-0.08-0.004-0.128-0.009c-0.002,0-0.004,0-0.004,0c-0.009,0-0.015-0.002-0.022-0.002c-0.002,0-0.007,0-0.011,0c-0.007,0-0.013,0-0.021,0c-0.004-0.002-0.01-0.002-0.014-0.002c-0.006,0-0.013-0.002-0.02-0.002c-0.005,0-0.011,0-0.016-0.002c-0.005,0-0.011,0-0.019,0c-0.01,0-0.02-0.002-0.028-0.004c-0.006,0-0.012,0-0.019,0c-0.008,0-0.018-0.002-0.028-0.002c-0.005,0-0.011-0.002-0.016-0.002c-0.008,0-0.019,0-0.024-0.001c-0.006-0.001-0.013-0.001-0.021-0.001c-0.007-0.002-0.018-0.002-0.026-0.004c-0.005,0-0.013-0.001-0.02-0.001c-0.008-0.001-0.018-0.003-0.026-0.003c-0.007-0.001-0.016-0.001-0.023-0.003c-0.01,0-0.019-0.002-0.027-0.002c-0.007-0.002-0.014-0.002-0.021-0.002c-0.012,0-0.024-0.003-0.035-0.005c-0.007,0-0.014,0-0.02,0c-0.02-0.004-0.037-0.006-0.057-0.006c-0.142-0.019-0.271-0.033-0.378-0.055l-0.187-0.025c0,0-0.47-0.014-0.653-0.316c-0.118-0.197,0.457-0.318,0.457-0.318s0.956-0.193,1.917-0.321c0,0-2.542,0.294-2.777,0.626C49.613,89.737,50.023,89.904,50.023,89.904L50.023,89.904z"/><path style="&st59;" d="M69.986,84.401L69.986,84.401L69.986,84.401z"/><path style="&st59;" d="M69.989,84.399c0.001,0,0.001,0,0.004,0C69.991,84.399,69.99,84.399,69.989,84.399z"/><path style="&st59;" d="M48.839,90.979c-0.007,0-0.015,0.002-0.021,0.002C48.824,90.98,48.831,90.979,48.839,90.979z"/><path style="&st59;" d="M48.727,90.988c-0.009,0-0.017,0.002-0.026,0.002C48.71,90.99,48.718,90.988,48.727,90.988z"/><path style="&st59;" d="M48.637,90.998c-0.009,0-0.019,0.001-0.029,0.003C48.619,90.999,48.628,90.998,48.637,90.998z"/><path style="&st59;" d="M48.55,91.004c-0.009,0-0.018,0.002-0.025,0.004C48.532,91.006,48.54,91.004,48.55,91.004z"/><path style="&st59;" d="M70.139,84.35c0.004,0,0.006-0.002,0.01-0.004C70.145,84.348,70.143,84.35,70.139,84.35z"/><path style="&st59;" d="M70.116,84.359c0.002-0.002,0.004-0.002,0.007-0.002C70.12,84.357,70.118,84.357,70.116,84.359z"/><path style="&st59;" d="M70.193,84.332c0.002,0,0.002-0.002,0.004-0.002C70.195,84.33,70.195,84.332,70.193,84.332z"/><path style="&st59;" d="M70.068,84.374c0.003,0,0.004,0,0.007-0.002C70.072,84.374,70.07,84.374,70.068,84.374z"/><path style="&st59;" d="M70.163,84.342c0.005,0,0.007-0.002,0.011-0.005C70.17,84.34,70.167,84.342,70.163,84.342z"/><path style="&st59;" d="M69.996,84.395c0.002,0,0.002,0,0.004,0C69.998,84.395,69.998,84.395,69.996,84.395z"/><path style="&st59;" d="M70.004,84.395c0.002,0,0.006-0.002,0.008-0.002C70.006,84.395,70.006,84.395,70.004,84.395z"/><path style="&st59;" d="M72.23,81.559c-0.002,0-0.004,0-0.004,0S72.229,81.559,72.23,81.559z"/><path style="&st59;" d="M70.053,84.379c0.002,0,0.002,0,0.004,0C70.053,84.379,70.053,84.379,70.053,84.379z"/><path style="&st59;" d="M70.036,84.385c0.001,0,0.003,0,0.004-0.002C70.039,84.385,70.037,84.385,70.036,84.385z"/><linearGradient id="SVGID_31_" gradientUnits="userSpaceOnUse" x1="414.2451" y1="568.2656" x2="509.0055" y2="545.7273" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset=".9505" stop-color="#B2B4B6"/></linearGradient><path style="&st51;" d="M7.61,68.141c-0.065-0.062-0.112-0.105-0.139-0.131L7.45,68.021L7.61,68.141L7.61,68.141z"/><linearGradient id="SVGID_32_" gradientUnits="userSpaceOnUse" x1="416.6992" y1="578.5645" x2="511.8228" y2="555.9398" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset=".9505" stop-color="#B2B4B6"/></linearGradient><path style="&st62;" d="M90.412,59.954l0.689,0.108c1.976-1.573,3.869-3.571,3.869-3.571s1.258-1.261,1.889-2.356c0.22-0.381,0.281-0.356,0.271-0.177c0.023-0.09,0.103-0.456-0.038-0.714c-0.094-0.176-0.381,0.288-0.83,0.861c0,0-2.013,2.926-5.798,5.816c-3.786,2.891-4.776,3.771-8.083,5.655c0,0-2.309,1.021-3.914,0.669c-1.246-0.271,0-1.547,0.271-2.699c0.271-1.146,0.063-1.58-0.225-1.807c-0.287-0.225-0.91-0.385-2.142-0.109c0,0-4.709,1.264-6.819,3.307c-1.918,1.854,0.478,2.619,1.021,2.875c0,0,0.78,0.338,0.719,0.672c-0.063,0.336-0.496,0.623-0.733,0.783c-0.239,0.16-3.338,1.977-8.324,2.764c-4.039,0.641-3.26,0.255-7.143,0.654c-3.881,0.399-4.952,0.72-8.068,1.453c-3.116,0.734-4.945,1.537-5.352,2.349c-0.336,0.671,0.479,1.103,0.991,1.407c0.511,0.304,1.423,0.781,1.119,1.293c-0.305,0.512-1.631,1.277-4.874,1.391c-3.243,0.114-4.569-0.336-5.16-1.04c-0.548-0.649-0.08-1.323,0.096-1.946c0,0,0.382-0.814,0.16-1.215c-0.224-0.398-0.737-0.494-1.278-0.559c-0.544-0.064-3.245-0.158-5.337-0.271c-2.372-0.127-5.208-0.211-8.611-0.928c0,0-2.237-0.441-3.69-1.262c-0.096-0.055-0.18-0.107-0.25-0.156c-0.11-0.059-0.194-0.122-0.25-0.209c-0.41-0.432-0.047-0.748-0.186-1.168c-0.121-0.359-0.352-0.878-0.896-1.501c-0.176-0.183-0.428-0.437-0.72-0.713c-0.08-0.069-0.165-0.144-0.254-0.214c-1.276-1.037-1.422-1.149-1.964-1.166c-0.542-0.019-0.235,0.895-0.129,1.246c0.041,0.136,0.139,0.328,0.242,0.508c-0.2-0.364-0.336-0.729-0.257-0.915c0.144-0.337,0.309-0.308,0.309-0.308s0.133-0.053,0.595,0.297c0.463,0.35,1.499,1.078,2.012,1.705c0.512,0.625,0.481,1.18,0.481,1.18s-0.103,0.563,0.451,1.17c0.555,0.604,1.733,1.714,5.859,2.349c0.021,0.005,0.041,0.005,0.06,0.009l0.193-0.549l0.568,0.663c0.006,0,0.01,0.001,0.016,0.002c3.592,0.519,5.544,0.563,5.544,0.563s4.709,0.164,5.982,0.164c1.271,0,1.035,0.664,1.035,0.664s-0.072,0.361-0.225,0.647c-0.153,0.288-0.524,1.365-0.144,1.94c0,0,0.585,1.426,4.382,1.527c0,0,3.324,0.267,5.643-0.688c2.317-0.954,0.224-2.277,0.224-2.277s-0.794-0.483-1.129-0.737c-0.308-0.233-0.184-0.48-0.122-0.646c0.061-0.163,0.297-0.355,0.564-0.492c0.265-0.134,1.241-0.652,5.365-1.722c4.124-1.067,6.587-1.183,6.587-1.183s0.021-0.004,0.062-0.006l0.334-0.656l0.845,0.559c0.732-0.061,1.686-0.129,2.537-0.17c1.691-0.083,4.341-0.475,5.879-0.811c1.539-0.342,3.869-1.059,5.591-1.951c1.724-0.891,1.808-1.519,1.808-1.519s0.328-0.472-0.391-0.995c-0.719-0.521-1.037-0.38-1.672-1.024c-0.638-0.646,0.553-1.619,0.553-1.619s0.615-0.865,4.021-2.177c3.408-1.313,3.98-0.873,4.156-0.728c0.175,0.142,0.195,0.613,0.123,0.933c-0.072,0.316-0.494,1.455-0.721,2.055c-0.227,0.592-0.316,1.402,0.604,1.6c0.924,0.193,2.215-0.009,3.427-0.443c2.893-1.033,3.757-2.295,8.535-5.764c0.011-0.01,0.021-0.016,0.029-0.023L90.412,59.954L90.412,59.954z"/><linearGradient id="SVGID_33_" gradientUnits="userSpaceOnUse" x1="415.4736" y1="573.4199" x2="510.5869" y2="550.7977" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset=".9505" stop-color="#B2B4B6"/></linearGradient><path style="&st52;" d="M100.895,47.596c-0.635,1.186-1.164,2.608-1.443,3.5c-0.045,0.213-0.061,0.33-0.061,0.33s-0.119,0.654-0.054,1.036c0.028,0.161,0.069,0.279,0.106,0.375c0.021,0.052,0.039,0.095,0.055,0.134c0.02,0.045,0.031,0.082,0.033,0.111c0.007,0.082-0.044,0.614-0.27,1.23l0,0c0,0,0,0,0,0.002c-0.063,0.176-0.143,0.359-0.24,0.539c-0.024,0.05-0.053,0.095-0.074,0.139c-0.458,0.814-1.098,1.457-1.604,1.532c-0.324,0.049-0.484-0.117-0.557-0.386c0.014,0.369,0.086,0.738,0.289,0.963c0.406,0.441,1.563-0.795,1.563-0.795s0.688-0.789,0.965-2.062c0.406-1.875,0.187-2.248,0.187-2.248s-0.247-0.389-0.093-0.853c0.152-0.461,1.156-3.047,1.979-4.01l0.502-0.562c0-0.009,0.002-0.02,0.002-0.029l-0.211-0.521c-0.129,0.13-0.259,0.284-0.385,0.454C101.405,46.763,101.178,47.129,100.895,47.596L100.895,47.596z"/><linearGradient id="SVGID_34_" gradientUnits="userSpaceOnUse" x1="414.7754" y1="570.4785" x2="509.8697" y2="547.861" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset=".9505" stop-color="#B2B4B6"/></linearGradient><path style="&st53;" d="M10.564,70.807L10.564,70.807c-0.146-0.092-0.315-0.229-0.469-0.356c-0.133-0.112-0.641-0.585-1.18-1.086c-0.212-0.194-0.411-0.382-0.589-0.55c-0.277-0.262-0.524-0.493-0.688-0.646l0.107,0.358c0.017,0.028,0.034,0.06,0.052,0.089c0.183,0.29,0.854,1.264,2.153,2.277c1.549,1.213,1.559,0.729,1.559,0.729s0.062-0.4-0.296-0.84c-0.063-0.076-0.131-0.167-0.202-0.27v0.002C11.011,70.516,12.023,71.998,10.564,70.807z"/><linearGradient id="SVGID_35_" gradientUnits="userSpaceOnUse" x1="414.915" y1="571.0664" x2="510.04" y2="548.4415" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset=".9505" stop-color="#B2B4B6"/></linearGradient><path style="&st54;" d="M10.678,69.98c0.103,0.186,0.219,0.371,0.333,0.533C11,70.501,10.833,70.253,10.678,69.98z"/><linearGradient id="SVGID_36_" gradientUnits="userSpaceOnUse" x1="416.1035" y1="576.0654" x2="511.2286" y2="553.4405" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset=".9505" stop-color="#B2B4B6"/></linearGradient><path style="&st55;" d="M96.887,55.023c0,0,0.227-0.76,0.243-1.066c-0.003,0.014-0.005,0.021-0.005,0.021s-0.513,1.443-0.333,2.16C96.771,55.579,96.887,55.023,96.887,55.023z"/><path style="&st34;" d="M63.301,4.417l0.728,0.072c1.426-0.402,2.643-0.772,2.643-0.772s1.265-0.41,1.901-0.637c0.635-0.226,1.09-0.313,1.654-0.409c0.565-0.096,1.311-0.14,1.709-0.131c0.4,0.007,0.531,0.122,0.531,0.122s0.166,0.131,0.244,0.27c0.077,0.138,0.74,1.891,2.973,2.005c2.233,0.112,2.263-1.096,2.065-1.464c-0.226-0.427-0.896-0.863-0.896-0.863s-0.899-0.575-1.092-0.847c-0.191-0.27,0.034-0.357,0.104-0.375c0.065-0.017,2.435-0.497,2.729-0.609l0.021-0.021l-0.562-0.171c0,0-0.119,0.134-0.789,0.313c-0.67,0.179-1.235,0.246-1.742,0.313c-0.506,0.066-0.506,0.239-0.506,0.239l-0.086,0.136c-0.025,0.075-0.067,0.321,0.375,0.642c0.528,0.387,1.172,0.75,1.438,1.04s0.586,0.783,0.012,1.137C76.48,4.576,76.27,4.64,75.977,4.671c0.002,0.008,0,0.012,0,0.012c-0.248,0.021-0.457,0.03-0.638,0.03c-0.049,0.002-0.102,0.006-0.155,0.009l-0.017-0.013c-0.506-0.024-0.746-0.142-1.067-0.302c-0.442-0.223-0.758-0.73-0.92-1.087s-0.521-0.662-0.521-0.662c-0.588-0.336-1.695-0.343-2.813-0.15c-1.115,0.193-2.656,0.707-2.925,0.812c-0.268,0.104-1.616,0.551-2.307,0.73c-0.693,0.178-1.222,0.357-1.646,0.47c-0.427,0.111-3.432,1.005-4.556,1.339c-1.126,0.334-1.849,0.46-1.849,0.46c-1.688,0.172-2.193-0.134-2.193-0.134c-0.296-0.124-0.261-0.526-0.261-0.526l0.009-1.147c0,0-0.027-0.433-0.357-0.611c-0.328-0.179-0.779-0.252-1.593-0.29c-0.811-0.038-1.683,0.044-2.093,0.134c-0.408,0.09-1.189,0.313-1.764,0.952c-0.572,0.641-0.481,1.139-0.481,1.139s0.004,0.079,0.01,0.201c0.154,0.245,0.416,0.524,0.862,0.739c1.015,0.485-1.137,1.342-1.137,1.342l0,0c-0.479,0.208-1.191,0.478-2.208,0.777c-2.21,0.647-3.684,0.774-3.684,0.774l0.679,0.254c0,0,5.468-1.016,7.148-2.616c0,0,0.625-0.293,0.021-0.88c-0.606-0.585-0.898-0.761-0.898-0.761s-0.41-0.223,0.02-0.772c0.428-0.546,0.922-0.794,1.352-0.933c0.428-0.135,1.754-0.249,2.925-0.093c0,0,0.491,0.042,0.457,0.407c-0.032,0.365-0.087,0.873-0.077,1.028c0.01,0.157,0.025,0.515,0.399,0.845c0.379,0.332,1.098,0.453,1.098,0.453s1.257,0.228,2.845-0.218c1.586-0.444,3.65-1.141,5.438-1.629L63.301,4.417L63.301,4.417z"/><linearGradient id="SVGID_37_" gradientUnits="userSpaceOnUse" x1="412.6152" y1="535.3994" x2="501.5865" y2="514.8846" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#FFF"/><stop offset=".6538" stop-color="#FFF"/><stop offset="1" stop-color="#CBCCCE"/></linearGradient><path style="&st56;" d="M91.596,12.992l0.271,0.486c-0.021,0.01-0.034,0.014-0.034,0.014c-1.114,0.515-3.999,1.32-4.271,1.398c-0.271,0.08-0.166,0.234-0.166,0.234c0.029,0.078,0.988,1.106,0.988,1.106c1.178,1.249,0.494,2.296,0.494,2.296s-0.852,1.347-2.844,1.12c-1.993-0.227-2.618-1.767-2.729-2.049c-0.111-0.282-0.197-0.768-0.22-1.095c-0.022-0.33-0.272-0.32-0.272-0.32c-1.069-0.03-2.887,1.089-2.887,1.089c-0.824,0.47-1.682,1.147-3.479,1.958c-0.879,0.396-1.694,0.716-2.287,0.936l-0.967-0.173l0.091,0.482c-0.042,0.013-0.063,0.021-0.063,0.021s-2.268,0.822-4.529,1.553c-2.268,0.732-3.65,0.8-3.65,0.8s-1.336,0.12-2.266-0.266c-0.93-0.386-0.959-0.94-0.939-1.415c0.021-0.476,0.483-1.404,0.623-1.958c0.139-0.555-0.683-0.644-0.683-0.644s-1.958-0.236-3.65,0.296c-1.69,0.535-2.54,1.159-2.54,1.159c-0.91,0.512-0.863,0.957-0.863,0.957s-0.012,0.467,0.551,0.869s1.072,0.505,1.736,0.654c0.668,0.149,0.791,0.311,0.791,0.311c1.08,0.894,0.416,1.785,0.047,2.434c-0.631,1.113-3.674,1.653-3.674,1.653c-3.276,0.758-5.12,1.08-7.827,1.452l-0.876-0.46l-0.276,0.615c-7.089,0.936-10.065,1.877-11.065,2.135c-1,0.257-1.261,0.784-1.369,0.904c-0.108,0.12,0.079,0.171,0.079,0.171c0.427,0.137,0.647,0.442,0.647,0.442s1.399,1.697-0.012,3.108c-1.359,1.36-2.785,1.674-2.785,1.674s-2.177,0.737-4.077,0.341c-1.899-0.399-2.439-1.889-2.416-2.395c0.024-0.505,0.176-1.075,0.694-1.661c0.517-0.585,0.654-0.667,0.654-0.667s0.358-0.279,0.421-0.415c0.079-0.172-0.404-0.233-0.404-0.233c-1.034-0.13-3.496-0.097-5.822,0.131c-1.439,0.14-2.769,0.374-3.578,0.518l-0.223-0.48l-0.543,0.625l-3.12,0.504c-1.514,0.222-2.576-0.028-2.576-0.028s-1.331-0.397-1.479-1.252c-0.147-0.852,0.359-1.87,0.49-2.177c0.13-0.307,0.5-0.934,0.5-0.934s0.068-0.13,0.068-0.34c0-0.211-0.233-0.536-0.233-0.536s-0.205-0.396-0.886-0.38c-0.682,0.018-0.866,0.131-1.144,0.364c-0.044,0.038-0.079,0.081-0.108,0.127c0.021-0.064,0.045-0.117,0.073-0.158c0.21-0.309,0.65-0.668,1.401-0.7c0.748-0.034,1.041,0.228,1.041,0.228c0.719,0.82,0.115,1.845-0.351,2.76c-0.057,0.095-0.155,0.271-0.229,0.483c-0.032,0.076-0.062,0.153-0.087,0.227c-0.358,1.06,0.292,1.565,0.668,1.661c0.376,0.097,1.141,0.57,4.269-0.031c3.13-0.603,3.587-0.731,3.587-0.731s6.145-1.087,8.96-0.425l0.023,0.004c0,0,1.297,0.367,0.331,1.334c-0.966,0.966-1.729,1.617-1.504,2.377c0.223,0.762,1.267,1.903,3.646,1.603c0,0,0.842-0.113,1.105-0.165c1.733-0.336,2.899-1.268,2.899-1.268s0.972-0.721,0.782-1.631c-0.187-0.908-1.017-1.189-1.017-1.189s-0.659-0.424-0.141-1.237c0,0,0.141-0.69,2.553-1.317c2.412-0.626,6.813-1.518,10.555-1.989c3.49-0.408,9.652-1.575,10.89-2.08c1.235-0.508,1.497-1.4,1.521-1.708c0.024-0.31,0.072-0.83-1.14-1.09c-1.213-0.259-1.758-0.655-1.931-0.79c-0.172-0.138-0.545-0.483-0.545-1.275c0-0.791,1.607-1.745,3.392-2.35c1.78-0.606,3.927-0.34,3.927-0.34c1.948,0.167,0.936,1.963,0.936,1.963c-0.074,0.322-0.946,1.785,0.5,2.169c1.541,0.409,4.175-0.347,5.188-0.669c0.829-0.261,3.141-1.074,4.688-1.62c0.352-0.122,0.66-0.231,0.908-0.318c1.656-0.577,3.019-1.219,3.785-1.681c0.771-0.462,2.144-1.297,2.144-1.297s1.351-0.744,1.799-0.808c0.451-0.064,1.619-0.346,1.771,0.771c0.155,1.115,0.631,1.899,1.4,2.271c0.771,0.371,2.064,0.538,3.246-0.231c1.182-0.771,0.359-1.901,0.359-1.901c-0.021-0.028-0.039-0.057-0.062-0.085c-0.151-0.27-0.369-0.518-0.487-0.646c-0.388-0.47-0.736-0.822-0.736-0.822c-0.295-0.436,0.053-0.692,0.425-0.834c0.373-0.141,2.351-0.758,2.351-0.758c1.155-0.383,1.592-0.551,2.053-0.988c0.445-0.419-0.189-1.34-0.239-1.412l0.004-0.002l0.608,0.256c0.136,0.182,0.27,0.362,0.4,0.547l-0.007,0.005c0,0,0.226,0.527,0.054,0.799c-0.095,0.149-0.343,0.293-0.545,0.395L91.596,12.992L91.596,12.992z"/><linearGradient id="SVGID_38_" gradientUnits="userSpaceOnUse" x1="390.042" y1="485.6797" x2="390.042" y2="485.6797" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#FFF"/><stop offset=".6538" stop-color="#FFF"/><stop offset="1" stop-color="#CBCCCE"/></linearGradient><path style="&st57;" d="M-16.122-14.641"/><path style="&st34;" d="M57.455,92.28c-0.034-0.042-0.042-0.034-0.012-0.063c0.021-0.021,0.086-0.082,0.115-0.137c0,0-1.17-0.063-2.141,0.077c-0.962,0.137-1.933,0.335-1.933,0.335l0.301,0.146c0,0,0.127-0.055,1.047-0.183c0.921-0.128,1.267-0.128,1.267-0.128s0.808-0.063,0.969-0.063c0.162,0,0.061,0.104,0.061,0.104s-0.078,0.136,0.366,0.124c0,0,0.663-0.027,1.313-0.188C58.809,92.309,57.678,92.544,57.455,92.28z"/><path style="&st34;" d="M54.469,92.691c0,0,0.146,0.266-2.923,0.394c0,0,1.788,0.052,3.31-0.198C55.963,92.707,54.469,92.691,54.469,92.691L54.469,92.691z"/><path style="&st34;" d="M13.114,9.856c0,0-0.005,0.096,0.019,0.131c0.024,0.034,0.107,0.112,0.107,0.112s0.328-0.5,0.194-0.438c0,0-0.119,0.187-0.164,0.23c0,0-0.029,0.04-0.088,0.077C13.123,10.006,13.117,9.991,13.114,9.856L13.114,9.856z"/><path style="&st34;" d="M10.595,12.501c0,0-0.388,0.46,0,0.52l0.528-0.527c0,0,0.139-0.234,0.139-0.398C11.263,12.095,10.752,12.343,10.595,12.501L10.595,12.501z"/><path style="&st12;" d="M-16.122-14.641"/><path style="&st31;" d="M21.093,23.707c1.227,0.146,1.499-0.132,1.527-0.172c0.294-0.003,1.475-0.034,2.865-0.207c1.685-0.21,3.564-0.891,3.564-0.891s1.554-0.568,2.096-1.18l0.016-0.002c0,0-0.693-0.6-1.057-1.122c0,0-0.286-0.557,0.027-1.035c0.316-0.479,0.836-1.008,2.344-1.643c1.506-0.636,2.356-0.514,2.356-0.514s0.594-0.006,1.007,0.45c0.415,0.458,0.649,1.006,0.649,1.006s0.029,0.38-0.115,0.63c-0.141,0.251-0.155,0.277-0.155,0.277s0.049,0.017,0.378-0.007c0.329-0.021,1.165-0.142,2.67-0.506c1.508-0.363,3.407-0.972,3.407-0.972s4.9-1.578,5.407-1.714c0.507-0.135,1.357-0.436,1.357-0.436l0.027,0.059c0,0,0.405,0.663,0.392,1.269V16.94c0,0-0.021,0.301-0.698,0.818c-0.674,0.517-1.226,0.479-1.678,0.442c-0.452-0.039-0.665-0.071-0.794-0.045l-0.72,0.04c-0.787,0.111-1.224,0.407-1.224,0.407c-1.804,1.065,0.731,9.287,0.731,9.287c-3.742,0.47-8.143,1.363-10.555,1.989c-2.412,0.627-2.553,1.317-2.553,1.317c-0.519,0.813,0.141,1.236,0.141,1.236s0.829,0.283,1.017,1.19c0.19,0.91-0.783,1.629-0.783,1.629s-1.159,0.97-2.898,1.268c-1.738,0.298-2.396,0.35-3.429-0.47c-0.91-0.721-0.297-1.864,0.312-2.301c0.612-0.438,0.909-0.91,0.988-1.113c0.079-0.203,0.032-0.376,0.032-0.376l-0.58-0.534c-2.005-1.33-9.884,0.063-9.884,0.063c-0.213-1.169-0.362-1.171-0.282-3.117c0.051-1.244,0.291-1.752,0.291-1.752l0.058-0.164c0,0,0.448-1.443,1.141-2.44c0,0,0.602-0.172,1.364-0.349C20.616,23.793,21.093,23.707,21.093,23.707L21.093,23.707z"/><linearGradient id="SVGID_39_" gradientUnits="userSpaceOnUse" x1="231.2324" y1="-407.8711" x2="263.6191" y2="-407.8711" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#696969"/><stop offset=".3702" stop-color="#2E2E2E"/><stop offset=".4554" stop-color="#424242"/><stop offset=".6014" stop-color="#303030"/><stop offset=".6947" stop-color="#4A4A4A"/><stop offset="1" stop-color="#666666"/></linearGradient><path style="&st26;" d="M49.855,16.94c0,0-4.085,1.326-3.891,1.254c0,0-0.39,0.075-0.686,0.161c-0.294,0.086-0.539,0.247-0.539,0.247s-3.288,1.222-6.438,1.848c-3.148,0.627-2.977-0.361-2.708-0.83c0.232-0.409,0.829-1.112-0.188-1.254c-1.019-0.14-1.788,0.251-2.21,0.439c-0.422,0.189-3.162,1.362-1.251,2.254c0,0,1.423,0.642-0.377,1.755c0,0-1.816,1.16-5.355,1.77c0,0-0.565,0.063-1.88,0.111c-1.316,0.046-2.558,0.213-4.12,0.658c-1.378,0.391-1.992,0.579-2.744,1.065l0.194-0.501l0.2-0.462c1.069-0.533,3.719-1.288,5.717-1.378c1.997-0.089,2.908-0.16,4.721-0.624c2.134-0.546,2.702-1.019,2.93-1.163c0.194-0.123,0.771-0.479,0.493-0.633c-0.359-0.199-0.895-0.729-0.895-0.729c-0.217-0.256-0.39-0.373-0.158-1.046c0.356-1.029,2.196-1.644,2.196-1.644s1.028-0.534,2.334-0.514c1.305,0.021,1.287,0.752,1.287,0.752s0.062,0.34-0.268,0.827c0,0-0.503,0.579-0.049,0.656c0.454,0.081,1.622,0.179,5.48-1.028c3.859-1.207,8.085-2.611,8.085-2.611S49.855,16.66,49.855,16.94L49.855,16.94z"/><linearGradient id="SVGID_40_" gradientUnits="userSpaceOnUse" x1="231.623" y1="-407.063" x2="263.4941" y2="-407.063" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#525252"/><stop offset=".1856" stop-color="#333333"/><stop offset=".354" stop-color="#AEAEAE"/><stop offset=".4199" stop-color="#ADADAD"/><stop offset=".4276" stop-color="#9D9D9D"/><stop offset=".4433" stop-color="#818181"/><stop offset=".4611" stop-color="#6A6A6A"/><stop offset=".4814" stop-color="#585858"/><stop offset=".506" stop-color="#4C4C4C"/><stop offset=".539" stop-color="#444444"/><stop offset=".6166" stop-color="#424242"/><stop offset=".6684" stop-color="#454545"/><stop offset="1" stop-color="#BDBDBD"/></linearGradient><path style="&st58;" d="M31.145,21.257c-0.541,0.612-2.096,1.18-2.096,1.18s-1.88,0.68-3.564,0.891c-1.608,0.201-2.777,0.209-2.777,0.209l-0.082-0.002c-0.175,0.145-0.483,0.188-0.728,0.21c-0.244,0.023-0.806-0.039-0.806-0.039s-2.156,0.432-2.603,0.616c0,0-0.253,0.392-0.331,0.539c-0.08,0.146-0.299,0.594-0.299,0.594c1.069-0.534,3.718-1.289,5.717-1.379c1.997-0.089,2.908-0.159,4.721-0.624c2.134-0.546,2.702-1.019,2.929-1.163c0.195-0.123,0.771-0.479,0.493-0.633c-0.358-0.199-0.894-0.729-0.894-0.729c-0.217-0.256-0.391-0.373-0.158-1.046c0.356-1.029,2.196-1.644,2.196-1.644s1.028-0.533,2.333-0.514c1.306,0.021,1.287,0.753,1.287,0.753s0.062,0.34-0.269,0.826c0,0-0.503,0.579-0.049,0.657c0.455,0.08,1.622,0.178,5.48-1.028c3.858-1.208,8.085-2.612,8.085-2.612c-0.098-0.29-0.296-0.652-0.296-0.652s-0.85,0.301-1.358,0.436c-0.506,0.136-5.407,1.714-5.407,1.714s-1.9,0.608-3.407,0.972c-1.506,0.364-2.342,0.485-2.671,0.508c-0.329,0.021-0.378,0.006-0.378,0.006s0.013-0.027,0.156-0.279c0.144-0.248,0.115-0.629,0.115-0.629s-0.235-0.548-0.649-1.006c-0.414-0.457-1.007-0.45-1.007-0.45s-0.849-0.121-2.355,0.514c-1.508,0.636-2.029,1.164-2.346,1.643c-0.312,0.478-0.026,1.035-0.026,1.035c0.365,0.521,1.057,1.122,1.057,1.122"/><linearGradient id="SVGID_41_" gradientUnits="userSpaceOnUse" x1="236.917" y1="-417.333" x2="235.8882" y2="-410.5272" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#969696"/><stop offset="1" stop-color="#000"/></linearGradient><path style="&st24;" d="M21.606,31.241c0,0-0.064-0.328,0.172-0.939c0.234-0.611,0.908-0.595,1.362-0.503c0.455,0.095,0.846,0.298,1.472-0.124c0.627-0.423,0.47-1.583,0.046-2.852c-0.423-1.267-0.328-2.128-0.328-2.128l-0.608-0.649l-0.237,0.696c0.047,1.316,0.657,3.226,0.829,3.759c0.173,0.533,0.297,0.8-0.735,0.517c-1.034-0.282-1.519,0.125-1.519,0.125c-1.332,0.862-1.082,2.161-1.082,2.161L21.606,31.241z"/><path style="&st60;" d="M27.498,36.633c-0.264-1.763-0.917-2.749-0.917-2.749c-0.25,0.188-0.513,0.693-0.513,0.693s0.179,0.208,0.471,1.568c0,0,0.141,0.106,0.438,0.279C27.273,36.597,27.498,36.633,27.498,36.633z"/><path style="&st60;" d="M33.152,32.881c0,0-0.78,0.907-0.378,2.336c0,0,0.454-0.379,0.585-0.68c0,0-0.145-0.458,0.138-1.017C33.5,33.52,33.37,33.1,33.152,32.881L33.152,32.881z"/><linearGradient id="SVGID_42_" gradientUnits="userSpaceOnUse" x1="428.7803" y1="532.0527" x2="429.5303" y2="524.4692" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#333333"/><stop offset=".431" stop-color="#000"/><stop offset="1" stop-color="#2E2E2E"/></linearGradient><path style="&st3;" d="M21.2,31.253c0.017-1.299,0.471-1.492,0.905-1.818c0.436-0.328,1.326-0.024,1.326-0.024s0.678,0.218,1.046-0.1c0.369-0.319-0.017-1.467-0.217-2.123c-0.202-0.653-0.41-1.599-0.445-2.262c-0.025-0.489-0.091-0.707-0.125-0.789l-0.205,0.604c0.047,1.316,0.657,3.226,0.829,3.759c0.173,0.533,0.297,0.8-0.735,0.517c-1.035-0.282-1.519,0.125-1.519,0.125c-1.332,0.862-1.082,2.162-1.082,2.162l0.259-0.027L21.2,31.253L21.2,31.253z"/><path style="&st21;" d="M26.239,34.29c0.045,0.06,0.421,0.597,0.736,2.113l0.005,0.025c0.294,0.17,0.519,0.205,0.519,0.205c-0.264-1.763-0.917-2.749-0.917-2.749C26.46,33.977,26.336,34.143,26.239,34.29L26.239,34.29z"/><path style="&st21;" d="M33.152,32.881c0,0-0.78,0.907-0.378,2.336c0,0,0.125-0.104,0.262-0.248l0.021-0.051c-0.304-1.033,0.283-1.763,0.283-1.763l0.004-0.003C33.291,33.053,33.225,32.957,33.152,32.881z"/><path style="&st10;" d="M17.159,8.189h0.117c-0.16,0.481-0.789,1.141-1.068,1.583c-0.156,0.248-0.252,0.572-0.474,0.751c0.038,0.043-0.003,0.003,0.04,0.04c0.088,0.052,0.813-0.139,0.95-0.236c0.082,0.015,0.076,0.011,0.12,0.039c0.042,0.07-0.481,0.991-0.595,1.109v0.04c0.196-0.023,0.502-0.056,0.634-0.16c0.383-0.299,0.47-0.937,0.75-1.346c-0.013-0.066-0.026-0.132-0.04-0.196c-0.222-0.04-0.681,0.02-0.87,0.157h-0.039c0.091-0.473,0.868-1.346,1.146-1.741c0.454-0.647,0.881-1.269,1.345-1.9c0.243-0.331,0.585-0.622,0.831-0.949c0.276-0.367,0.569-0.85,0.949-1.107V4.194h-0.158c-0.186,0.135-0.675,0.218-0.908,0.354c0.032,0.135,0.019,0.101,0.118,0.158c-0.139,0.386-0.598,0.673-0.832,0.991c-0.371,0.5-0.784,0.968-1.147,1.464c-0.123,0.164-0.205,0.421-0.356,0.553c-0.237,0.208-0.913,0.185-1.185,0.396h-0.08c0.056-0.332,0.907-1.392,1.147-1.622v-0.04c-0.408,0.057-0.724,0.273-0.989,0.473c0.044,0.091,0.037,0.073,0.12,0.12c-0.145,0.238-0.361,0.415-0.515,0.633c-0.197,0.275-0.305,0.602-0.514,0.871c0.014,0.04,0.028,0.077,0.04,0.118C15.948,8.641,17.001,8.307,17.159,8.189L17.159,8.189z M51.936,13.534c0.199,0.066,0.396,0.131,0.596,0.197c0.159,0.002,0.327-0.002,0.432-0.04c-0.009-0.654-0.364-0.913-0.593-1.345c-0.113-0.22-0.175-0.523-0.355-0.673c0.069-0.242,0.727-0.308,0.988-0.396c0.643-0.211,1.371-0.422,2.02-0.633c0.305-0.099,0.664-0.077,0.91-0.236c0.146,0.015,0.22,0.029,0.277,0.118c0.143,0.212,0.26,1.667,0.156,2.097c-0.398,1.663-0.896,2.963-1.938,3.958v0.039c0.385-0.062,0.568-0.436,0.83-0.632c1.051-0.794,1.762-1.972,2.137-3.444c0.221-0.865-0.14-1.713,0.199-2.452h-0.039c-0.074-0.188-1.082-0.553-1.388-0.555c-0.164,0.177-0.399,0.416-0.634,0.515c-0.357,0.152-0.838,0.109-1.146,0.315c-0.287-0.024-0.506-0.57-0.315-0.791c-0.011-0.09-0.009-0.112-0.04-0.158c-0.239-0.191-0.85-0.171-1.268-0.158c-0.133,0.125-0.252,0.15-0.314,0.358h-0.039c-0.021,0.076,0.02,0.05,0.039,0.078c0.025,0.016,0.163-0.007,0.236,0.04c0.449,0.047,0.438,0.566,0.675,0.831c-0.027,0.069-0.011,0.04-0.042,0.08c-0.155,0.123-1.301,0.453-1.543,0.515c-0.185,0.046-0.414-0.068-0.553-0.081c-0.336-0.028-0.633,0.16-0.831,0.277c0.107,0.157,0.434,0.118,0.554,0.276C51.368,12.193,51.556,12.913,51.936,13.534L51.936,13.534z M59.807,12.977c0.187,0.093,0.187,0.332,0.278,0.514c0.185,0.371,0.437,0.82,0.554,1.228v0.316c0.092,0.252,0.396,0.284,0.596,0.435c0.156-0.021,0.214-0.061,0.314-0.118c-0.066-0.753-0.525-1.378-0.791-1.979c-0.08-0.188-0.207-0.452-0.236-0.633c-0.021-0.109,0.063-0.169,0-0.276c-0.051-0.123-0.072-0.085-0.156-0.159c-0.059-0.04-0.031-0.016,0-0.078c0.068-0.144,0.213-0.287,0.275-0.436c0.133-0.313,0.127-0.576,0.396-0.751c-0.04-0.41-0.639-0.457-1.107-0.435c-0.057,0.042-0.156,0.064-0.24,0.077c0.05,0.103,0.082,0.124,0.199,0.157c0.113,1.161-0.699,2.225-1.229,2.928c-0.208,0.279-0.556,0.456-0.75,0.754h-0.04v0.038C58.395,14.473,59.54,13.383,59.807,12.977L59.807,12.977z M12.407,22.83c-0.081,0.017-0.076,0.009-0.117,0.039c-0.288,0.148-0.773,1.426-1.346,1.069c-0.292,0.002-0.319-0.055-0.476-0.16c0.02-0.376,0.659-1.063,0.913-1.226c0.031-0.604,0.187-1.252,0.118-1.819c-0.041-0.014-0.08-0.028-0.118-0.039c-0.14-0.046-0.25,0.168-0.357,0.276c-0.29,0.291-0.648,0.597-0.871,0.949c-0.337-0.003-1.414-0.013-1.623,0.119H8.411c0.099-0.256,0.86-1.096,0.633-1.464c-0.013-0.041-0.025-0.08-0.04-0.12c-0.722,0.002-1.592,1.287-1.82,1.82c-0.115,0.266-0.115,0.573-0.276,0.791v0.04c0.54-0.066,1.082-0.133,1.622-0.199c0.205-0.044,0.487,0.052,0.633-0.039h0.554c0.092-0.118,0.184-0.238,0.277-0.356c0.33-0.349,0.768-0.702,1.028-1.106h0.119v0.551c-0.303,0.273-0.773,0.695-0.91,1.108v0.316c-0.203,0.88,0.223,1.329,0.99,1.267c0.5-0.466,1.324-0.848,1.226-1.779C12.405,22.833,12.444,22.873,12.407,22.83L12.407,22.83z M7.819,22.118H7.58c0.109-0.436,0.537-0.935,1.069-0.95v0.197c-0.185,0.239-0.369,0.475-0.554,0.713C7.982,22.076,7.88,22.076,7.819,22.118z M93.044,22.315c-0.164-0.405-0.294-0.722-0.475-1.068c-0.3-0.574-0.613-1.414-1.464-1.425c-0.211,0.179-0.435,0.322-0.555,0.593c-0.777,1.762,0.819,3.747,1.543,4.71c0.256,0.339,0.557,0.712,0.948,0.908c-0.091,1.376-1.269,1.813-2.53,1.267c-0.899-0.386-1.617-1.237-2.179-1.979c-0.188-0.249-0.481-0.457-0.672-0.713c-0.177-0.239-0.304-0.507-0.515-0.713v-0.039h-0.078c0.107,0.426,0.354,0.815,0.514,1.188c0.669,1.538,1.52,2.614,2.811,3.521c0.608,0.428,1.621,1.104,2.494,0.475C94.412,27.942,93.669,23.851,93.044,22.315L93.044,22.315z M92.928,24.216c-0.104,0.1-0.539-0.419-0.635-0.515c-0.441-0.443-1.329-1.221-0.83-1.979h0.197c0.388,0.403,0.746,0.788,0.99,1.344c0.129,0.299,0.152,0.805,0.313,1.069C92.941,24.205,92.958,24.175,92.928,24.216L92.928,24.216z M66.693,32.128v-0.395c0.179-0.801,0.137-1.765,0.314-2.572c0.241-1.088-0.101-2.148,0.99-2.414c0.021-0.106,0.057-0.148,0-0.238c-0.025-0.067-0.009-0.039-0.04-0.079c-0.043-0.031-0.038-0.024-0.116-0.039c-0.305,0.222-1.131,0.373-1.543,0.474c-0.313,0.076-0.639,0.01-0.871,0.158c-0.039,0.013-0.078,0.027-0.119,0.04c0.014,0.079,0.025,0.159,0.041,0.237c0.451,0.147,0.867-0.031,1.067,0.356c0.13,0.252,0.112,1.157,0.039,1.504c-0.251,1.163-0.146,2.491-0.396,3.64c-0.086,0.397,0.022,1.171-0.157,1.463v0.08c-0.241-0.115-0.397-0.426-0.554-0.633c-0.354-0.467-0.875-0.84-1.229-1.305c-0.213-0.281-0.437-0.617-0.712-0.833c0.037-0.761,0.259-1.56,0.438-2.254c0.131-0.522,0.135-1.005,0.395-1.386c0.148-0.217,0.505-0.355,0.751-0.475c-0.002-0.1-0.004-0.146-0.04-0.198c-0.014-0.04-0.023-0.079-0.037-0.119c-0.543,0.081-1.003,0.341-1.505,0.475c-0.454,0.123-0.911,0.092-1.269,0.276c0.012,0.091,0.01,0.112,0.041,0.158c0.014,0.039,0.024,0.08,0.039,0.118c1.391-0.078,1.18,0.678,0.912,1.742c-0.084,0.326-0.029,0.775-0.199,1.028v0.079h-0.039c-0.285-0.433-0.713-0.852-1.067-1.227c-0.146-0.132-0.291-0.264-0.435-0.395c-0.104-0.137-0.16-0.312-0.278-0.436c0.024-0.437,0.38-0.549,0.713-0.672c-0.015-0.183-0.052-0.206-0.118-0.317c-1.031,0.151-1.927,0.73-3.086,0.791v0.041h-0.04c0.004,0.1,0.004,0.146,0.04,0.197v0.079c0.227,0.039,0.564-0.054,0.831,0.04c0.427,0.15,0.81,0.648,1.067,0.99c0.388,0.513,0.996,0.949,1.384,1.463c0.204,0.274,0.434,0.634,0.713,0.832c-0.038,0.696-0.229,1.428-0.396,2.058c-0.086,0.323-0.035,0.735-0.197,0.988c-0.025,0.069-0.01,0.039-0.041,0.08c-0.377-0.718-1.104-1.265-1.582-1.9c-0.918-1.22-1.938-2.319-2.889-3.521c0-0.167,0.01-0.268,0.08-0.356c0.073-0.229,0.359-0.443,0.633-0.476c0.015-0.12,0.033-0.135-0.039-0.238c-0.016-0.038-0.026-0.077-0.041-0.118c-0.803,0.123-1.521,0.497-2.293,0.714c-0.401,0.112-0.928,0.057-1.229,0.276c-0.04,0.013-0.08,0.026-0.117,0.04c0.021,0.152,0.061,0.176,0.117,0.277c0.314-0.005,0.646-0.092,0.949,0c0.793,0.241,1.361,1.137,1.818,1.742c0.201,0.266,0.513,0.483,0.713,0.751c0.849,1.129,1.808,2.146,2.65,3.285c0.328,0.442,0.771,0.825,1.066,1.304c0.179-0.004,0.216-0.025,0.316-0.079c0.213-0.929,0.332-1.866,0.596-2.81c0.119-0.432,0.269-0.942,0.314-1.424c0.327,0.117,0.592,0.607,0.793,0.871c0.618,0.821,1.491,1.502,2.057,2.373c0.164-0.007,0.182-0.026,0.277-0.078C66.352,34.819,66.521,33.473,66.693,32.128L66.693,32.128z M4.297,38.894c-0.013,2.467-0.142,6.269,1.781,6.806c0.7,0.193,1.087-0.271,1.306-0.595c0.786-1.17,0.565-3.446-0.199-4.43c-0.339,0.034-0.825,0.84-0.988,1.106c-0.082-0.016-0.075-0.011-0.119-0.04c-0.091-0.041-0.085-0.066-0.159-0.118c-0.06-0.933,0.127-1.802,0.159-2.691c1.044,0.102,1.941,0.696,3.007,0.751c-0.001-0.185,0-0.434,0.077-0.552c-0.009-0.092-0.007-0.112-0.04-0.16c-0.145-0.115-0.949-0.306-1.186-0.315v-0.04h-0.04c0.146-1.174-0.186-2.082-0.99-2.414c-0.449-0.08-0.897-0.16-1.346-0.239c-0.229-0.083-0.341-0.266-0.514-0.395c-0.058-0.38-0.133-0.806,0.159-1.029c-0.021-0.142-0.032-0.168-0.119-0.238v-0.039h-0.04c-0.133,0.228-0.245,0.493-0.315,0.792c-0.234,0.983,0.309,1.818,0.909,2.018c0.397,0.065,0.792,0.132,1.188,0.197c0.314,0.122,0.453,0.379,0.671,0.595c-0.009,0.512-0.5,0.568-0.91,0.435c-0.64-0.208-1.321-0.353-1.977-0.592c-0.172-0.064-0.333-0.17-0.555-0.199c-0.027,0.25-0.054,0.501-0.08,0.751c0.554,0.171,1.109,0.343,1.662,0.515c-0.023,1.398-0.574,3.074,0.119,4.153c0.084,0.021,0.143,0.037,0.198,0.08c0.78-0.054,0.943-0.68,1.345-1.108c0.342,0.82,0.086,2.253-0.671,2.453c-0.326,0.224-0.803-0.066-0.989-0.237c-0.648-0.599-0.785-1.511-1.027-2.532c-0.083-0.344,0.033-1.042-0.118-1.307c0.006-0.404,0.092-1.134-0.12-1.344v-0.039L4.297,38.894L4.297,38.894z M99.336,45.543c-0.143-0.666,0.055-1.478-0.08-2.097v-0.633c-0.097-0.453-0.059-1.056-0.156-1.502c-0.189-0.882-0.022-1.926-0.355-2.652c-0.197-0.047-0.393-0.084-0.671-0.08c-0.103,0.104-0.179,0.158-0.159,0.278c0.083,0.359,0.547,0.432,0.673,0.792c0.015,0.172,0.026,0.343,0.04,0.514c0.133,0.561,0.111,1.286,0.236,1.86v0.475c0.063,0.289,0.16,1.036,0.078,1.267c-0.139,0.41-0.584,0.78-0.868,1.068c-0.754,0.755-1.64,1.715-2.97,1.859c-0.025,0.068-0.01,0.039-0.041,0.08c0.022,0.494,0.476,0.396,0.793,0.594c0.08-0.014,0.158-0.028,0.236-0.042c0.122-0.074,0.191-0.242,0.276-0.356c0.2-0.261,0.563-0.399,0.751-0.671h0.04c0.002,1.205,0.028,2.561,0.04,3.718h0.117c0.272-1.172,0.252-2.61,0.238-4.039c0.521-0.486,0.853-1.19,1.385-1.66v-0.078h0.041c0.007,1.251,0.037,2.529,0.037,3.797c0,0.407-0.102,1.378,0,1.544v0.237h0.08c0.106-0.425,0.133-1.023,0.236-1.501v-0.674C99.451,47.107,99.45,46.078,99.336,45.543L99.336,45.543z M28.313,48.073c-0.347-0.144-0.776-0.461-0.989-0.751c-0.637-0.875-1.337-2.948-0.87-4.51c0.379-1.266,1.202-2.127,2.532-2.454c0.673-0.163,1.397,0.062,1.821,0.278c1.208,0.622,1.725,1.506,2.096,2.967c0.48,1.887-0.132,3.619-1.385,4.194c0.078,0.764,0.158,1.529,0.237,2.295c0.444-0.013,0.852-0.105,1.227-0.199c0.629-0.155,1.271-0.176,1.86-0.315c0.431-0.104,1.052-0.015,1.384-0.237c0.079-0.17-0.247-1.35-0.315-1.623c-0.057-0.229-0.009-0.461-0.119-0.633v-0.079c-0.091,0.012-0.185,0.025-0.277,0.039c0.018,1.195-0.834,1.032-1.781,1.267c-0.473,0.119-1.049,0.27-1.581,0.276c0-0.17,0-0.343-0.001-0.514c0.045-0.083,0.739-0.386,0.868-0.476c0.461-0.318,0.931-0.826,1.229-1.304c0.202-0.327,0.366-0.764,0.473-1.149c0.138-0.489,0.154-1.17,0.041-1.662c-0.079-0.338-0.048-0.603-0.158-0.91c-0.427-1.187-1.322-2.054-2.453-2.532c-0.513-0.216-1.093-0.224-1.7-0.356c-0.539-0.116-1.509,0.124-1.901,0.238c-1.905,0.562-3.198,1.48-3.799,3.323c-0.236,0.728-0.163,1.736,0.04,2.414c0.467,1.561,1.773,3.02,3.72,3.047v0.039c0.062,0.088,0.06,0.264,0.118,0.355c-0.024,0.067-0.009,0.039-0.04,0.08c-0.164,0.111-0.404,0.061-0.633,0.117c-0.47,0.118-1.986,0.486-2.334,0.158c-0.222-0.072-0.37-0.363-0.396-0.632c-0.099,0.004-0.146,0.004-0.197,0.039h-0.082c0.146,0.767,0.291,1.53,0.435,2.296h0.041v0.04c1.385-0.239,2.77-0.478,4.154-0.713c-0.198-0.728-0.395-1.451-0.593-2.179C28.873,48.139,28.517,48.159,28.313,48.073L28.313,48.073z M96.014,43.682c0.086,0.218,0.254,0.58,0.435,0.712c0.086,0.063,0.132,0.04,0.198,0.119c1.31,0.113,1.842-2.143,1.308-3.442c-0.095-0.225-0.517-0.885-0.911-0.633h-0.08c0.026-0.069,0.01-0.038,0.04-0.08c-0.001-0.188-0.021-0.25-0.077-0.356c-0.08-0.013-0.156-0.026-0.238-0.038c-0.039,0.031-0.01,0.014-0.078,0.038c0.027,0.24,0.111,0.247,0.119,0.514C96.09,41.099,95.545,42.497,96.014,43.682z M96.446,41.585c0.088-0.213,0.265-0.35,0.396-0.515c0.082-0.015,0.075-0.01,0.117-0.04c0.301-0.001,0.385,0.057,0.555,0.159c0.301,0.711,0.346,1.954-0.156,2.494c-0.077,0.085-0.229,0.116-0.315,0.197C96.214,43.817,96.146,42.305,96.446,41.585L96.446,41.585z M78.092,57.168c-0.445-0.273-0.507-1.675-0.673-2.294c-0.327-1.215-0.483-2.489-0.831-3.72c-0.223-0.788-0.523-1.605-0.435-2.572c0.139-0.138,0.231-0.32,0.396-0.436c0.223-0.154,0.58-0.229,0.752-0.436c0.027-0.051-0.019-0.128-0.041-0.238c-0.459,0.074-0.879,0.35-1.267,0.515c-0.792,0.337-1.567,0.536-2.373,0.87c-0.252,0.104-0.515,0.282-0.833,0.315v0.238c0.027,0.014,0.055,0.025,0.08,0.04c0.042,0.045,1.033-0.392,1.346-0.118c0.356,0.125,0.311,0.59,0.514,0.872c-0.061,0.614-0.672,1.558-0.912,2.097c-0.58,1.326-1.17,2.592-1.816,3.836c-0.248,0.477-0.543,1.334-0.871,1.701v0.039c-0.216-0.296-0.199-1.051-0.314-1.462c-0.353-1.235-0.578-2.591-0.951-3.798c-0.068-0.23-0.305-1.279-0.156-1.503c0.051-0.546,0.822-0.785,1.266-0.95c-0.012-0.092-0.024-0.186-0.039-0.277c-0.701,0.105-1.429,0.479-2.058,0.713c-0.595,0.223-1.14,0.313-1.741,0.516c-0.298,0.102-0.636,0.275-0.986,0.314v0.041h-0.041c0.015,0.112,0.025,0.172,0.078,0.237c0.162,0.107,1.03-0.352,1.386-0.077c0.557,0.19,0.573,1.075,0.752,1.66c0.481,1.579,0.728,3.327,1.187,4.947c0.115,0.404,0.391,1.686,0.119,2.018c-0.148,0.439-0.885,0.615-1.306,0.791c0.014,0.08,0.024,0.159,0.036,0.237c0.609-0.09,1.162-0.373,1.707-0.56c1.063-0.354,2.066-0.65,3.089-1.029c-0.017-0.092-0.027-0.186-0.041-0.275c-0.437,0.116-0.773,0.248-1.386,0.236c-0.08-0.068-0.157-0.133-0.235-0.199c-0.067-0.21-0.134-0.422-0.199-0.632c0.043-0.499,0.683-1.421,0.91-1.86c0.673-1.293,1.262-2.6,1.856-3.955c0.229-0.519,0.754-1.275,0.832-1.857c0.184,0.111,0.133,0.438,0.197,0.672c0.135,0.475,0.211,0.98,0.355,1.503c0.281,1,0.391,2.075,0.673,3.126c0.104,0.387,0.261,1.048,0.08,1.464c-0.179,0.404-0.841,0.673-1.267,0.83c0.017,0.084,0.037,0.183,0.08,0.238c0.004,0.007,0.906-0.288,1.064-0.354c1.104-0.471,2.236-0.959,3.361-1.386c-0.015-0.093-0.024-0.187-0.039-0.274C79.117,57.043,78.477,57.407,78.092,57.168L78.092,57.168z M96.803,60.498c-0.143,0.13-0.354,0.163-0.514,0.277c-0.501,0.359-1.025,0.962-1.385,1.463c-0.288,0.402-0.534,0.843-0.791,1.268c-0.112,0.188-0.137,0.402-0.277,0.553v0.08c0.346-0.059,0.549-0.283,0.792-0.436c0.659-0.408,1.249-0.781,1.858-1.225c0.295-0.217,0.515-0.551,0.83-0.754c0.029-0.473,0.125-0.844-0.077-1.188C97.115,60.512,96.975,60.496,96.803,60.498z M96.329,61.921c-0.239,0.177-0.47,0.423-0.712,0.595c-0.208,0.146-0.458,0.224-0.633,0.396h-0.04c0.13-0.408,0.817-1.107,1.146-1.344c0.17-0.124,0.383-0.157,0.557-0.279h0.156c0.036,0.046,0.034,0.044,0.08,0.08C96.846,61.667,96.523,61.774,96.329,61.921L96.329,61.921z M10.825,63.465c-0.166-0.502-0.278-0.99-0.435-1.465c-0.079-0.246-0.062-0.525-0.199-0.713v-0.118c0.269,0.097,0.679,0.087,0.911,0.238h0.201c-0.045-0.206-0.086-0.552-0.201-0.713c-0.12-0.195-0.886-0.197-1.106-0.354c-0.312-0.244-0.607-0.947-0.832-1.307c-0.56-0.887-1.302-1.832-2.137-2.453c-0.443-0.329-0.751-0.671-1.544-0.673c-0.092,0.065-0.185,0.132-0.276,0.198c-0.178,0.789,0.139,2.248,0.592,2.611v0.078c-0.189-0.051-0.393-0.152-0.514-0.275h-0.04c0.007,0.227,0.051,0.522,0.158,0.672c0.046,0.195,0.362,0.354,0.554,0.396c0.248,1.037,0.592,2.101,0.95,3.05c0.289,0.758,0.436,1.48,0.75,2.213c0.155,0.356,0.522,0.617,0.634,0.99h0.117c-0.089-0.334-0.271-0.646-0.394-0.949c-0.364-0.875-0.653-1.804-0.952-2.688C6.868,61.62,6.734,61.057,6.548,60.5c-0.069-0.21-0.049-0.427-0.158-0.595v-0.039c0.269,0.049,0.43,0.188,0.634,0.276c0.461,0.201,0.903,0.277,1.385,0.476c0.353,0.146,0.796,0.347,1.228,0.396c0.048,0.359,0.253,1.301,0.435,1.545v0.117c-0.602-0.412-0.589-1-1.663-0.91c-0.054,0.063-0.128,0.117-0.197,0.158c-0.098,0.244-0.104,0.646,0,0.909c0.257,0.646,1.072,1.991,1.741,2.179c0.257,0.184,0.634-0.043,0.75-0.24c0.242,0.127,0.293,0.682,0.395,0.951c0.212,0.558,0.522,1.289,1.031,1.543v0.041h0.083c-0.066-0.447-0.318-0.851-0.475-1.229C11.387,65.223,11.113,64.324,10.825,63.465L10.825,63.465z M9.678,60.26C9.26,60.23,8.905,60.067,8.57,59.945c-0.894-0.332-1.703-0.615-2.492-0.991c-0.095-0.358-0.76-1.644-0.396-2.095c0.026-0.04,0.053-0.081,0.079-0.12c0.081-0.019,0.077-0.011,0.119-0.039c1.219,0.146,2.442,1.629,3.046,2.452c0.236,0.32,0.43,0.799,0.752,1.029V60.26L9.678,60.26z M10.311,63.701c-0.12,0.146-0.237,0.291-0.356,0.436c-0.105,0.078-0.223,0.109-0.316,0.198c-0.68-0.021-0.704-0.686-0.989-1.108c0.005-0.389,0.152-0.39,0.315-0.594c0.092-0.007,0.112-0.007,0.158-0.037c0.614,0.004,0.753,0.278,1.109,0.515C10.29,63.344,10.327,63.445,10.311,63.701L10.311,63.701z M33.578,69.794c-0.165-0.271-0.49-0.342-0.713-0.554c-0.069-0.023-0.04-0.007-0.079-0.039c0.51-0.264,1.053-0.555,1.583-0.79c0.142,0.158,0.801,0.792,1.029,0.671c0.04-0.012,0.079-0.023,0.118-0.038c-0.013-0.224-0.025-0.448-0.04-0.673c-0.499-0.498-1.234-0.91-2.059-1.066v0.039h-0.039c0.093,0.273,0.398,0.534,0.636,0.672v0.119c-0.469,0.068-0.885,0.295-1.307,0.437c-0.289,0.093-0.638,0.08-0.873,0.235h-0.117c0.171-0.479,0.737-0.871,1.028-1.267c0.576-0.776,1.033-1.728,1.94-2.176c-0.024-0.365-1.076-1.12-1.464-0.871c-0.097,0.051-0.029-0.021-0.079,0.078c-0.059,0.144,0.137,0.321,0.079,0.554c-0.076,0.305-0.831,1.74-1.029,1.9v0.041c-0.408-0.139-0.718-0.523-1.107-0.713c0.069-0.364,0.375-0.644,0.554-0.91c0.453-0.684,0.816-1.335,1.503-1.782c-0.006-0.526-0.855-1.075-1.425-1.065c0.002,0.242,0.125,0.379,0.08,0.592c-0.14,0.646-0.435,1.297-0.672,1.861c-0.156,0.364-0.226,0.799-0.476,1.065c-0.054,0.03-0.492-0.006-0.594-0.077c-0.149-0.002-0.298,0.005-0.394,0.038v0.079c0.666,0.645,1.387,0.865,2.295,1.268c-0.126,0.655-0.786,1.092-1.108,1.584c-0.166,0-0.3-0.011-0.395-0.08c-0.091,0.017-0.098,0.021-0.158,0.041c0.016,0.582,0.5,1.077,0.987,1.188c0.327-0.366,0.737-0.543,1.228-0.751c0.449,0.468,0.578,1.137,0.751,1.897c0.075,0.332-0.047,0.697,0.04,0.988c0.152,0.514,0.426,0.667,0.672,1.027h0.277c0.174-0.93-0.253-1.832-0.475-2.571C33.71,70.43,33.644,70.111,33.578,69.794L33.578,69.794z M96.09,63.108c-0.238,0.202-0.57,0.296-0.83,0.475c-0.4,0.282-0.758,0.659-1.146,0.95c-0.177,0.134-0.435,0.253-0.556,0.436c-0.199,0.299-0.16,0.806-0.396,1.067v0.157c0.314-0.114,0.464-0.483,0.713-0.672c0.307-0.23,0.563-0.536,0.87-0.754c0.192-0.133,0.411-0.207,0.594-0.355c0.125,0.023,0.115,0.037,0.199,0.081c-0.021,1.005-0.549,1.714-0.871,2.454c-0.093,0.215-0.121,0.551-0.276,0.71c-0.074,0.076-0.229,0.094-0.314,0.157c-0.264,0.291-0.528,0.58-0.794,0.873c-0.25,0.344-0.365,0.803-0.632,1.146c-0.002,0.114-0.002,0.216,0.037,0.276c0.041,0.031,0.11,0.059,0.16,0.08c0.51-0.483,1.004-0.887,1.424-1.465c0.658-0.904,0.986-2.047,1.465-3.125c0.3-0.683,0.734-1.354,0.711-2.334c-0.047-0.045-0.084-0.102-0.117-0.158L96.09,63.108L96.09,63.108z M93.32,69.361V69.4h-0.04c0.069-0.475,0.43-0.606,0.596-0.952h0.079C93.904,68.842,93.605,69.194,93.32,69.361L93.32,69.361z M34.171,69.993c-0.08,0.342,0.76,1.106,1.027,1.308c0.133,0.1,0.312,0.328,0.515,0.235c0.104-0.008,0.136-0.019,0.199-0.04c0.046-0.105,0.115-0.24,0.039-0.354C35.93,70.645,34.64,70.088,34.171,69.993z M37.97,73.037c0.067,0.034,0.122,0.021,0.198-0.039c0.139-0.113,0.063-0.313,0.159-0.475c0.222-0.159,0.615-0.118,0.911-0.199c0.809-0.213,1.753-0.198,2.65-0.396c0.425-0.093,1.128,0.16,1.464-0.037c0.04-0.016,0.081-0.026,0.118-0.043c-0.019-0.517-1.009-0.737-1.545-0.588c-0.237,0.066-0.513,0.213-0.751,0.275c-0.185,0.014-0.37,0.027-0.555,0.038c-0.062-0.644-0.38-1.144-0.395-1.817c0.595-0.013,1.341-0.091,1.739-0.316c-0.008-0.2-0.045-0.2-0.118-0.314c-0.453-0.107-1.23-0.126-1.583,0.116c-0.1-0.004-0.147-0.004-0.197-0.039c-0.221-0.28-0.116-0.851-0.316-1.146v-0.158c0.426-0.092,1.122-0.168,1.345-0.475c0.031-0.041,0.014-0.011,0.039-0.078c-0.036-0.035-0.051-0.068-0.079-0.119c-0.619-0.156-0.887-0.049-1.423,0.158c-0.167-0.535,0.034-0.959-0.514-1.108c0.117-0.203,0.506-0.194,0.751-0.276c0.382-0.126,0.817-0.296,1.148-0.474c0.026-0.068,0.007-0.04,0.04-0.08c-0.022-0.2-0.078-0.193-0.159-0.316c-0.571-0.044-1.027,0.011-1.346,0.316h-0.076c0.047-0.295,0.231-0.718,0.394-0.949c0.112-0.162,0.318-0.14,0.396-0.356h0.04V64.1c-0.081-0.104-0.159-0.211-0.238-0.314c-0.186-0.13-0.454-0.143-0.632-0.279c-0.263-0.004-0.515-0.003-0.672,0.079c0.021,0.152,0.089,0.248,0.119,0.356c0.109,0.408-0.284,1.669-0.436,1.859c-0.123,0.154-1.551,0.672-1.939,0.555c-0.092-0.029-0.36-0.164-0.435-0.239c-0.032-0.039-0.015-0.008-0.04-0.077c0.561-0.527,0.965-1.702,1.741-1.939c0.014-0.064,0.027-0.131,0.041-0.196c-0.194-0.2-1.135-1.188-1.622-0.871c-0.04,0.014-0.079,0.022-0.117,0.038c0,0.338,0.168,0.593,0.078,0.949c-0.182,0.711-0.587,1.556-0.95,2.139c-0.218,0.35-0.693,0.729-0.712,1.229c0.646-0.064,0.802-0.731,1.304-0.912c0.146,0.135,0.29,0.267,0.436,0.396c0.207,0.311,0.168,0.778,0.276,1.186c0.185,0.856,0.371,1.715,0.554,2.571c0.025,0.425,0.052,0.845,0.08,1.269C37.246,72.28,37.561,72.945,37.97,73.037L37.97,73.037z M39.233,70.032c0.031,0.368,0.258,1.407,0.436,1.662c0.001,0.024,0.001,0.054,0.001,0.08c-0.477,0.102-0.973,0.239-1.504,0.237c-0.082-0.564-0.352-1.061-0.355-1.662C38.418,70.338,38.731,70.094,39.233,70.032z M36.939,66.75c0.063-0.107,1.113-0.273,1.228-0.199c0.42,0.195,0.27,0.813,0.514,1.188c-0.083,0.194-1.047,0.487-1.345,0.514C37.283,67.834,37.213,66.977,36.939,66.75L36.939,66.75z M38.76,68.253h0.04c0.076,0.36,0.119,0.978,0.317,1.267c-0.142,0.348-1.016,0.317-1.346,0.516c-0.138-0.083-0.32-1.076-0.316-1.346C37.757,68.662,38.541,68.402,38.76,68.253L38.76,68.253z M31.914,70.506c-0.06,0.135-0.053,0.354-0.117,0.514c-0.342,0.84-0.454,1.015,0.079,1.82c0.237,0,0.269-0.037,0.396-0.119C32.429,72.064,32.454,70.814,31.914,70.506L31.914,70.506z M77.023,70.744c-1.154-0.285-2.125,0.285-3.325,0.199c-0.114-0.121-0.2-0.19-0.275-0.356c-0.835,0.024-1.757,1.886-0.909,2.453c0.453,0.308,1.744,0.129,2.295,0c0.306-0.071,0.783-0.139,1.027,0.038c0.332,0.247,0.273,1.182,0.157,1.703c-0.132,0.975-0.265,1.951-0.396,2.929c-0.117,0.593-0.236,1.185-0.356,1.779c0.606-0.003,1.178-0.623,1.349-1.069c0.1-0.258,0.047-0.502,0.119-0.791c0.209-0.83,0.237-1.82,0.436-2.689c0.127-0.563,0.041-1.1,0.156-1.621c0.086-0.393,0.143-1.696,0.041-2.059C77.281,71.059,77.126,70.901,77.023,70.744z M22.857,82.695c-0.135-0.102-0.229-0.283-0.356-0.395c-0.473-0.42-1.029-0.826-1.543-1.188c-0.426-0.298-1.008-0.476-1.387-0.829c-0.01-0.086,0.123-0.296,0.041-0.516c-0.335-0.896-1.589-1.933-2.374-2.412c-0.363-0.225-0.972-0.328-1.305-0.555c-0.246-0.017-0.374-0.025-0.435,0.155c-0.097,0.218,0.209,0.521,0.315,0.675c0.271,0.381,0.581,0.826,0.95,1.104c0.276,0.209,0.591,0.392,0.83,0.635h0.119c-0.154-0.426-0.609-0.657-0.949-0.909c-0.311-0.229-0.449-0.632-0.712-0.909c0.021-0.125,0.035-0.115,0.08-0.199c1.093,0.009,1.802,1.012,2.294,1.662c0.22,0.291,0.571,0.461,0.594,0.951c-0.116,0-0.216,0-0.276-0.041h-0.119c0.188,0.522,0.824,0.479,1.267,0.754c0.888,0.549,1.603,1.409,2.373,2.094c0.262,0.234,0.719,0.466,0.791,0.873c-0.537-0.028-0.917-0.327-1.261-0.555c-0.614-0.4-1.597-1.1-2.019-1.662c-0.08-0.104-0.106-0.263-0.199-0.355c-0.109-0.111-0.261-0.145-0.355-0.275h-0.158c-0.039,0.41,0.407,0.705,0.671,0.948c0.819,0.75,1.696,1.442,2.73,1.979c0.373,0.191,1.053,0.521,1.465,0.275C23.874,83.434,23.227,82.975,22.857,82.695L22.857,82.695z M47.226,85.307c-2.014-1.379-4.985-2.775-8.427-2.689c-0.167,0.104-0.503,0.021-0.711,0.078c-0.288,0.076-0.464,0.223-0.672,0.355c-0.008,0.971,1.446,1.496,2.255,1.698c0.483,0.123,0.909-0.104,1.188-0.198c0.215-0.82-0.776-0.94-1.227-1.347h-0.081v-0.038c3.036-0.119,5.308,0.729,7.043,2.02c0.433,0.322,0.93,0.783,1.148,1.306c0.081,0.194,0.116,0.515,0,0.674c-0.159,0.44-0.685,0.401-1.188,0.515c-1.162,0.267-2.755-0.391-3.285-0.91c-0.108,0.189,0.049,0.48-0.118,0.674c-0.176,0.478-0.788,0.354-1.346,0.474c-0.917,0.199-2.353-0.271-2.888-0.632c-0.149-0.104-0.257-0.286-0.396-0.396c-0.007-0.103-0.018-0.136-0.041-0.199c0.081-0.073,0.177-0.187,0.237-0.275c1.139-0.085,1.718-0.027,2.376,0.596c-0.017,0.078-0.01,0.073-0.041,0.114c-0.074,0.152-0.245,0.17-0.474,0.161v0.074c0.417,0.004,0.593-0.059,0.83-0.197c0.013-0.079,0.027-0.159,0.04-0.236c-0.136-0.141-0.231-0.328-0.396-0.438c-0.65-0.426-1.991-0.641-2.729-0.156c-0.116,0.561,0.232,0.864,0.554,1.105c0.646,0.488,1.191,0.771,2.098,1.029c0.291,0.082,0.55,0.008,0.871,0.076c0.28,0.064,0.765,0.079,1.068,0c0.504-0.128,1.205-0.658,0.632-1.268v-0.037c0.299,0.109,0.544,0.402,0.831,0.556c0.761,0.397,2.021,0.726,3.167,0.476c0.562-0.125,1.143-0.125,1.303-0.635c0.179-0.277-0.068-0.668-0.156-0.826C48.322,86.151,47.836,85.721,47.226,85.307L47.226,85.307z M39.906,83.485c0.14,0.094,0.22,0.291,0.356,0.396c-0.003,0.1-0.004,0.148-0.04,0.199c-0.257,0.697-1.706,0.182-2.058-0.081c-0.11-0.08-0.153-0.248-0.236-0.354c0.015-0.082,0.01-0.076,0.041-0.116c0.108-0.306,0.417-0.203,0.671-0.354C39.142,83.174,39.596,83.274,39.906,83.485z M76.625,83.881h-0.396c-0.262,0.209-0.692,0.236-0.991,0.396c-0.263,0.141-0.581,0.332-0.829,0.515c-0.207,0.148-0.326,0.418-0.516,0.592c0.004,0.197,0.008,0.229,0.16,0.277c0.039,0.029,0.01,0.018,0.075,0.04c0.042-0.047,0.08-0.063,0.12-0.12c0.033-0.023-0.027-0.104-0.04-0.232c0.384-0.386,0.667-0.598,1.228-0.832c0.144-0.059,0.447-0.233,0.634-0.119h0.079c-0.026,0.391-0.916,1.591-1.188,1.781v0.115c0.729-0.188,1.215-1.643,1.702-2.174c-0.013-0.09-0.01-0.111-0.04-0.157L76.625,83.881L76.625,83.881z M73.459,86.809c-0.234,0.209-0.807,0.229-1.066,0.435h-0.041c0.104-0.149,0.291-0.213,0.396-0.354c0.076-0.104,0.107-0.226,0.197-0.315c-0.018-0.081-0.01-0.075-0.039-0.117v-0.08c-1.155-0.212-3.084,0.784-3.68,1.308c-0.155,0.135-0.248,0.336-0.396,0.477c0.003,0.111,0.016,0.168,0.039,0.236c0.701,0.047,2.016-0.383,2.174-0.949c0.031-0.025,0.012-0.002,0-0.04v-0.079c-0.479-0.027-1.124,0.075-1.422,0.355h-0.039c0.26-0.396,1.223-0.746,1.739-0.91c0.172-0.053,0.55-0.149,0.714-0.039c0.037,0.015,0.077,0.025,0.117,0.039c-0.094,0.396-0.657,0.838-1.029,0.949v0.08c0.607-0.141,1.163-0.416,1.7-0.634c0.368-0.149,0.786-0.188,1.108-0.396c0.229-0.149,1.008-1.207,1.068-1.504C74.086,85.409,74.012,86.313,73.459,86.809L73.459,86.809z M70.333,87.6v0.119c-0.075,0.049-0.129,0.156-0.198,0.196c-0.205,0.12-0.479,0.106-0.674,0.238c-0.09-0.011-0.109-0.009-0.156-0.041h-0.039C69.373,87.775,70.025,87.621,70.333,87.6L70.333,87.6z M53.835,91.317c0.015-0.037,0.025-0.078,0.039-0.117c-0.976-0.04-1.953-0.079-2.927-0.119c-0.123,0.082-0.312,0.035-0.475,0.079c-0.202,0.059-0.426,0.15-0.593,0.239c0.026,0.067,0.008,0.038,0.04,0.077c0.238,0.188,1.624,0.199,1.9,0h0.078v-0.077c-0.419-0.134-1.183,0.2-1.503,0h-0.041v-0.041c1.052-0.073,2.23-0.044,3.325-0.04c-0.105,0.072-0.328,0.051-0.436,0.119c-0.039,0.014-0.078,0.027-0.117,0.039v0.08c0.238,0.037,0.475,0.078,0.711,0.117c0.037,0.041-0.004,0.004,0.039,0.037c-0.35,0.233-1.254,0.139-1.581-0.037v-0.08c-0.178-0.082-0.991,0.084-1.148,0.117c-0.133,0.03-0.27-0.014-0.357,0.039c-0.165,0.01-0.181,0.029-0.276,0.079c0.022,0.128,0.035,0.115,0.08,0.198c0.255,0.06,0.696,0.064,0.987,0.156v-0.039h0.04v-0.039c-0.148-0.057-0.559-0.025-0.713-0.115h-0.079c0.132-0.104,1.425-0.278,1.663-0.119c0.067,0.023,0.039,0.007,0.079,0.039c-0.211,0.038-0.424,0.08-0.634,0.117c0.025,0.066,0.009,0.039,0.04,0.078c0.065,0.045,0.193,0.045,0.316,0.039c-0.04,0.074-0.054,0.109-0.119,0.158c0.013,0.023,0.027,0.051,0.04,0.078c0.561,0,1.031-0.057,1.502-0.156c0.28-0.062,0.624,0.052,0.831-0.08h0.317v-0.078c-0.539-0.002-1.885-0.055-2.215,0.158h-0.117c0.033-0.043-0.004-0.004,0.038-0.041c0.155-0.18,0.471-0.09,0.75-0.156c0.44-0.104,1.168-0.284,1.544,0c0.105,0.064,0.04-0.008,0.039,0.117c0.107-0.002,0.181-0.002,0.236-0.036h0.277v-0.081c-0.359-0.088-0.889-0.251-1.188-0.434C54.057,91.488,54.135,91.344,53.835,91.317L53.835,91.317z M13.635,18.359c-0.088,0.32-0.274,0.593-0.395,0.87c-0.268,0.613-0.507,1.225-0.751,1.822c-0.207,0.496-0.335,1.295-0.633,1.699v0.079c0.416-0.074,0.698-0.493,0.949-0.751c0.617-0.634,1.92-2.22,1.9-3.402c-0.062-0.061-0.119-0.162-0.159-0.237C14.3,18.38,13.982,18.353,13.635,18.359z M13.794,20.022c-0.181,0.298-0.281,0.592-0.476,0.871c-0.178,0.255-0.46,0.452-0.633,0.713h-0.041c0.051-0.302,0.214-0.546,0.319-0.792c0.235-0.561,0.396-1.118,0.671-1.621c0.152,0.003,0.268,0.015,0.356,0.078c0.095,0.052,0.028-0.018,0.079,0.08C14.15,19.548,13.89,19.862,13.794,20.022L13.794,20.022z M84.023,7.875c-0.414-0.416-0.729-0.938-1.147-1.346V6.49c-0.205,0.073-0.899,0.688-1.028,0.871c-0.25-0.095-0.391-0.365-0.594-0.514c-0.676-0.508-1.313-1.167-2.49-1.147c-0.148,0.115-0.367,0.118-0.556,0.197c-0.53,0.23-1.083,0.688-1.305,1.227c-0.249,0.602,0.004,1.491,0.196,1.939c0.392,0.904,1.03,1.667,1.582,2.414c0.457,0.615,0.973,1.252,1.819,1.464c0.956,0.238,1.422-0.884,1.781-1.308c0.37-0.435,1.182-0.539,1.464-1.107c0.104-0.207,0.034-0.615-0.039-0.791c-0.18-0.426-1.066-1.622-1.425-1.859c0.024-0.239,0.135-0.247,0.235-0.396c0.248,0.121,0.338,0.471,0.516,0.673c0.227,0.258,0.546,0.396,0.791,0.632c0.378,0.003,0.604-0.094,0.79-0.277h0.041C84.561,8.243,84.212,8.06,84.023,7.875L84.023,7.875z M81.77,12.148c-0.699,0.165-1.047-0.293-1.424-0.673c-0.938-0.935-1.57-2.093-2.298-3.244c-0.247-0.396-0.885-1.134-0.554-1.702h0.156c0.199,0.299,0.539,0.507,0.754,0.792c0.591,0.784,1.313,1.469,1.898,2.255c0.359,0.485,0.758,0.94,1.106,1.424c0.178,0.249,0.315,0.565,0.556,0.751C81.924,11.931,81.848,12.015,81.77,12.148L81.77,12.148z M82.361,9.339c0.32,0.439,0.755,0.688,0.751,1.463c-0.122,0.116-0.157,0.224-0.356,0.276c-0.039,0.032-0.011,0.015-0.078,0.041c-0.56-0.932-1.367-1.711-2.017-2.573c-0.212-0.282-0.541-0.511-0.752-0.791c-0.362-0.48-0.793-0.864-1.188-1.305c-0.113-0.131-0.168-0.257-0.313-0.357c0.033-0.086,0.031-0.057,0.076-0.118c0.672,0.006,0.994,0.458,1.386,0.753C80.837,7.453,81.648,8.354,82.361,9.339L82.361,9.339z"/><radialGradient id="SVGID_43_" cx="251.8086" cy="-408.3613" r="72.7509" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#000" stop-opacity="0"/><stop offset=".8022" stop-color="#000" stop-opacity=".08"/><stop offset="1" stop-color="#000" stop-opacity=".3882"/></radialGradient><path style="&st15;" d="M49.885,17.037c0.014-0.606-0.392-1.27-0.392-1.27l-0.025-0.058c0,0-0.487-0.949-1.302-1.228c-0.815-0.278-1.478,0.342-1.478,0.342s-0.114,0.131-0.429,0.494c-0.313,0.364-0.507,0.666-1.198,0.938c-0.692,0.271-1.379,0.204-1.743,0.033c-0.364-0.172-0.457-0.537-0.457-0.537s-0.229-0.722-0.313-1.049c-0.086-0.331-0.309-1.694-0.309-1.694s-0.491-2.747-0.534-3.304c0,0,1.475-0.126,3.687-0.775c2.299-0.673,3.043-1.206,3.043-1.206s-0.432-0.156-0.484-0.662c-0.051-0.507-0.089-1.19-0.089-1.19s-0.089-0.5,0.483-1.139c0.571-0.64,1.354-0.863,1.762-0.953c0.41-0.089,1.281-0.17,2.093-0.134c0.812,0.038,1.267,0.112,1.593,0.291c0.328,0.178,0.357,0.61,0.357,0.61l-0.008,1.146c0,0-0.037,0.402,0.261,0.529c0,0,0.505,0.305,2.196,0.133c0,0,0.72-0.126,1.846-0.46c1.125-0.335,4.129-1.229,4.554-1.341c0.425-0.111,0.953-0.291,1.646-0.469c0.691-0.179,2.039-0.626,2.308-0.73c0.271-0.104,1.812-0.618,2.927-0.81c1.115-0.195,2.227-0.186,2.813,0.149c0,0,0.357,0.304,0.521,0.662c0.163,0.358,0.478,0.863,0.923,1.088c0.454,0.227,0.752,0.371,1.875,0.273c0,0,0.022-0.096-0.395-0.37c-0.417-0.277-0.991-0.701-0.991-0.701S74.29,3.4,74.215,3.198c-0.072-0.202-0.043-0.306-0.043-0.306l0.877-1.406c0,0,0-0.172,0.508-0.238c0.506-0.067,1.071-0.134,1.74-0.313c0.67-0.178,0.788-0.312,0.788-0.312l0.58,0.178c0,0,3.546,2.853,4.655,3.583l0.199-0.239c0,0,0.436,0.018,0.826,0.172c0.394,0.154,0.979,0.562,0.979,0.562s1.612,1.31,2.071,2.2l0.223,0.679l-0.102,0.161c0,0,0.918,1.307,2.096,2.602c0,0,1.227,1.664,1.689,2.09c0,0-0.108-0.399-0.201-0.849l0.336-0.226l0.203-0.144l0.617,0.259c3.573,4.811,6.432,10.424,8.141,16.328l-0.12,0.484l0.395,0.501c1.128,4.212,1.728,8.643,1.728,13.211c0,1.122-0.036,2.236-0.107,3.339l-0.304,0.511l0.225,0.555c-2.231,26.1-24.124,46.584-50.801,46.584c-18.502,0-34.702-9.854-43.637-24.6L7.674,68.2l-0.205-0.153c-3.387-5.742-5.682-12.205-6.595-19.103l0.212-0.525L0.75,47.936c-0.213-1.892-0.322-3.812-0.322-5.756c0-2.985,0.255-5.909,0.748-8.755l0.25-0.562l-0.087-0.328c1.157-6.048,3.383-11.716,6.474-16.799l0.684-0.384l0.081,0.032c0,0,0.233-0.169,0.354-0.217l0.076-0.023c0,0,1.179-1.971,1.625-2.601c0,0,0.542-0.348,0.745-0.407c0,0,0.124-0.016,0.189,0.076c0,0,0.496-0.432,1.699-2.054c0.004-0.005,0.007-0.011,0.012-0.017c0,0-0.114-0.076-0.131-0.174c-0.018-0.097,0.108-0.591,0.173-0.717c0.065-0.126,0.108-0.156,0.108-0.156s1.722-2.032,3.151-3.238c0,0,0.26-0.202,0.678-0.25c0,0,1.472-0.613,3.264-2.184c0,0,0.051-0.289,0.478-0.858c0.428-0.57,1.456-1.163,2.222-1.337c0.764-0.174,0.896-0.038,0.896-0.038l0.064,0.065l0.515,0.766c0,0,0.565-0.316,1.413-0.604c0.847-0.289,0.979-0.262,0.979-0.262l0.825,1.336l-0.987,2c0,0-0.644,1.421-1.655,2.185c0,0-0.472,0.284-1.12,0.127c-0.648-0.157-1.072,0.333-1.072,0.333l-0.17,0.14c0,0,0.14-0.024,0.346-0.103c0,0,0.158,0.065,0.274,0.223c0.114,0.158,0.913,1.175,0.913,1.175s0.005,0.837-0.415,1.938c-0.419,1.1-1.467,2.891-1.467,2.891s-0.733,1.424-1.075,2.253c-0.342,0.829-0.515,1.765-0.488,2.262c0,0,0.187,0.062,0.707-0.202c0.655-0.332,1.083,0.027,1.083,0.027s0.719,0.53,1.041,0.881c0.262,0.289,0.802,1.765,0.209,3.224c0,0-0.402,1.008-1.377,1.724c0,0-0.216,0.332-1.529,0.174c-0.368-0.043-0.585-0.276-1.372-0.2c-0.785,0.077-1.231,0.815-1.231,0.815l0.013-0.024c-0.692,0.999-1.154,2.458-1.154,2.458l-0.057,0.165c0,0-0.241,0.509-0.292,1.752c-0.053,1.284,0.284,3.109,0.284,3.109s7.876-1.387,9.88-0.055l0.58,0.532c0,0,0.046,0.174-0.031,0.376c-0.08,0.204-0.375,0.673-0.987,1.113c-0.611,0.438-1.222,1.583-0.313,2.304c1.034,0.818,1.691,0.766,3.43,0.468c1.74-0.297,2.898-1.269,2.898-1.269s0.972-0.72,0.783-1.628c-0.188-0.908-1.017-1.189-1.017-1.189s-0.658-0.423-0.141-1.238c0,0,0.141-0.689,2.553-1.316c2.414-0.626,6.812-1.52,10.556-1.989c0,0-2.539-8.223-0.737-9.289c0,0,0.438-0.296,1.224-0.408l0.721-0.037c0.131-0.027,0.344,0.005,0.796,0.045c0.452,0.038,1.001,0.076,1.678-0.441c0.676-0.519,0.697-0.819,0.697-0.819"/></svg>
\ No newline at end of file
diff --git a/modules/home.legacy/conf/firefox/default.nix b/modules/home.legacy/conf/firefox/default.nix
new file mode 100644
index 00000000..f2ccfc99
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/default.nix
@@ -0,0 +1,134 @@
+{
+  config,
+  pkgs,
+  lib,
+  user_js,
+  ...
+}: let
+  extensions =
+    builtins.fromJSON (builtins.readFile ./config/extensions/extensions.json);
+
+  userChrome = builtins.readFile ./config/chrome/userChrome.css;
+  bookmarks = (import ./config/bookmarks/default.nix) {
+    inherit
+      pkgs
+      lib
+      ;
+  };
+  engines = (import ./config/search/engines) {inherit pkgs;};
+
+  native_messaging_hosts = (import ./config/extensions/native_messaging_hosts/default.nix) {inherit pkgs;};
+
+  policies = (import ./config/policies) {inherit config extensions;};
+
+  search = {
+    default = "Brave Search";
+    privateDefault = "Brave Search";
+    force = true;
+    order = [
+      # DEFAULT
+      "Brave Search"
+
+      # NIX
+      "Nix Packages"
+      "Nix Options"
+      "Nixpkgs issues"
+      "Homemanager Options"
+      "NixOS Wiki"
+      "Nixpkgs Pull Request Tracker"
+
+      # RUST
+      "Rust std"
+      "Rust tokio"
+
+      # OTHER
+      "Google Scholar"
+      "Wikipedia"
+      "Arch Wiki"
+    ];
+
+    inherit engines;
+  };
+
+  prefConfig = builtins.readFile "${
+    (import ./config/prefs) {inherit pkgs lib config bookmarks user_js;}
+  }/user.js";
+
+  # Package {{{
+  package = import ./package.nix {
+    inherit config lib pkgs;
+    extraPolicies = policies;
+    extraNativeMessagingHosts = native_messaging_hosts;
+  };
+  # }}}
+
+  # Profiles {{{
+  profiles = {
+    "default" = {
+      inherit search userChrome;
+      isDefault = true;
+      id = 0;
+      name = "default";
+      extraConfig = prefConfig;
+    };
+  };
+
+  taskwarriorProfiles = import ../taskwarrior/firefox {
+    inherit
+      config
+      lib
+      # options
+      
+      prefConfig
+      search
+      userChrome
+      ;
+    profile_size = builtins.length (builtins.attrNames profiles);
+  };
+  # }}}
+in {
+  options.soispha.firefox = {
+    package = lib.mkOption {
+      type = lib.types.package;
+      default = pkgs.firefox;
+      description = "Firefox package to use.";
+      defaultText = lib.literalExpression "pkgs.firefox";
+      relatedPackages = [
+        "firefox"
+        "firefox-beta-bin"
+        "firefox-bin"
+        "firefox-devedition-bin"
+        "firefox-esr"
+      ];
+    };
+    package_version = lib.mkOption {
+      type = lib.types.str;
+      default = pkgs.firefox.version;
+      description = "Firefox version to use";
+    };
+  };
+
+  config = {
+    soispha.firefox.package = package;
+    soispha.firefox.package_version = pkgs.firefox.version;
+    home.sessionVariables = {
+      # improve touch input & make scrolling smother
+      MOZ_USE_XINPUT2 = "1";
+
+      # improve wayland support
+      MOZ_ENABLE_WAYLAND = 1;
+
+      # tell gtk to use portals
+      GTK_USE_PORTAL = 1;
+
+      BROWSER = "firefox";
+    };
+    programs.firefox = {
+      enable = true;
+      inherit (config.soispha.firefox) package;
+      profiles =
+        profiles
+        // taskwarriorProfiles;
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/firefox/package.nix b/modules/home.legacy/conf/firefox/package.nix
new file mode 100644
index 00000000..f7e4319b
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/package.nix
@@ -0,0 +1,30 @@
+# taken from the NixOS Firefox module: https://github.com/NixOS/nixpkgs/blob/7c9cc5a6e5d38010801741ac830a3f8fd667a7a0/nixos/modules/programs/firefox.nix
+{
+  config,
+  lib,
+  pkgs,
+  # options
+  autoConfig ? "",
+  extraNativeMessagingHosts ? [],
+  wrapperConfig ? {},
+  extraPolicies ? {},
+  base_package ? pkgs.firefox,
+}: let
+  pkg = base_package.override (old: {
+    extraPrefsFiles =
+      (old.extraPrefsFiles or [])
+      ++ [
+        (pkgs.writeText "autoConfig.js" autoConfig)
+      ];
+    nativeMessagingHosts = old.nativeMessagingHosts or [] ++ extraNativeMessagingHosts;
+    cfg = (old.cfg or {}) // wrapperConfig;
+    extraPoliciesFiles =
+      (old.extraPoliciesFiles or [])
+      ++ [
+        (
+          pkgs.writeText "policies.json" (builtins.toJSON extraPolicies)
+        )
+      ];
+  });
+in
+  pkg
diff --git a/modules/home.legacy/conf/firefox/scripts/default.nix b/modules/home.legacy/conf/firefox/scripts/default.nix
new file mode 100644
index 00000000..1127662b
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/scripts/default.nix
@@ -0,0 +1,29 @@
+{
+  pkgs,
+  sysLib,
+  ...
+}: let
+  unzip_mozlz4 = pkgs.stdenv.mkDerivation {
+    name = "unzip_mozlz4";
+    propagatedBuildInputs = [
+      (pkgs.python3.withPackages (pythonPackages:
+        with pythonPackages; [
+          lz4
+        ]))
+    ];
+    dontUnpack = true;
+    installPhase = "install -Dm755 ${./unzip_mozlz4.py} $out/bin/unzip_mozlz4";
+  };
+  extract_cookies = sysLib.writeShellScript {
+    name = "extract_cookies";
+    src = ./extract_cookies.sh;
+    dependencies = with pkgs; [
+      bash
+      sqlite
+      mktemp
+      coreutils
+    ];
+  };
+in {
+  inherit unzip_mozlz4 extract_cookies;
+}
diff --git a/modules/home.legacy/conf/firefox/scripts/extract_cookies.sh b/modules/home.legacy/conf/firefox/scripts/extract_cookies.sh
new file mode 100755
index 00000000..e3d50d43
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/scripts/extract_cookies.sh
@@ -0,0 +1,77 @@
+#!/usr/bin/env bash
+# copied from https://superuser.com/a/1239036
+# extract_cookies.sh:
+#
+# Convert from Firefox's cookies.sqlite format to Netscape cookies,
+# which can then be used by wget and curl. (Why don't wget and curl
+# just use libsqlite if it's installed? Mysteries abound.)
+#
+# Note: This script reads directly from the standard cookie jar file,
+# which means cookies which are kept only in memory ("session cookies")
+# will not be extracted. You will need an extension to do that.
+
+# USAGE:
+#
+# $ extract_cookies.sh > /tmp/cookies.txt
+# or
+# $ extract_cookies.sh ~/.mozilla/firefox/*default*/cookies.sqlite > /tmp/cookies.txt
+
+# USING WITH WGET:
+# $ wget --load-cookies=/tmp/cookies.txt http://example.com
+
+# USING WITH CURL:
+# $ curl --cookie /tmp/cookies.txt http://example.com
+
+# Note: If you do not specify an SQLite filename, this script will
+# intelligently find it for you.
+#
+# A) Usually it will check all profiles under ~/.mozilla/firefox/ and
+# use the cookies.sqlite that was updated most recently.
+#
+# B) If you've redirected stdin (with < or |) , then that will be used.
+
+# HISTORY: I believe this is circa 2010 from:
+# http://slacy.com/blog/2010/02/using-cookies-sqlite-in-wget-or-curl/
+# However, that site is down now.
+
+# Cleaned up by Hackerb9 (2017) to be more robust and require less typing.
+
+cleanup() {
+    rm -f "$TMPFILE"
+    exit 0
+}
+trap cleanup EXIT INT QUIT TERM
+
+if [ "$#" -ge 1 ]; then
+    SQLFILE="$1"
+else
+    SQLFILE="$HOME/.mozilla/firefox/default/cookies.sqlite"
+fi
+
+if ! [ -r "$SQLFILE" ]; then
+    echo "Error. File $SQLFILE is not readable." >&2
+    exit 1
+fi
+
+# We have to copy cookies.sqlite, because FireFox has a lock on it
+TMPFILE=$(mktemp /tmp/cookies.sqlite.XXXXXXXXXX)
+cat "$SQLFILE" >>"$TMPFILE"
+
+# This is the format of the sqlite database:
+# CREATE TABLE moz_cookies (id INTEGER PRIMARY KEY, name TEXT, value TEXT, host TEXT, path TEXT,expiry INTEGER, lastAccessed INTEGER, isSecure INTEGER, isHttpOnly INTEGER);
+
+echo "# Netscape HTTP Cookie File"
+sqlite3 -separator $'\t' "$TMPFILE" <<EOF
+.mode tabs
+.header off
+select host,
+case substr(host,1,1)='.' when 0 then 'FALSE' else 'TRUE' end,
+path,
+case isSecure when 0 then 'FALSE' else 'TRUE' end,
+expiry,
+name,
+value
+from moz_cookies;
+EOF
+
+cleanup
diff --git a/modules/home.legacy/conf/firefox/scripts/unzip_mozlz4.py b/modules/home.legacy/conf/firefox/scripts/unzip_mozlz4.py
new file mode 100755
index 00000000..9a2348bf
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/scripts/unzip_mozlz4.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+# source: https://unix.stackexchange.com/a/497861
+# Command-line tool to decompress mozLz4 files used for example by Firefox to store various kinds of session backup information.
+# Works in both Python 2.7.15 and 3.6.7, as of version 2.1.6 of the LZ4 Python bindings at pypi.org/project/lz4.
+# To use in another script, simply cut and paste the import statement and the mozlz4_to_text() function (lines 8 to 17).
+
+import lz4.block  # pip install lz4 --user
+
+
+def mozlz4_to_text(filepath):
+    # Given the path to a "mozlz4", "jsonlz4", "baklz4" etc. file,
+    # return the uncompressed text.
+    bytestream = open(filepath, "rb")
+    bytestream.read(8)  # skip past the b"mozLz40\0" header
+    valid_bytes = bytestream.read()
+    text = lz4.block.decompress(valid_bytes)
+    return text
+
+
+def main(args):
+    # Given command-line arguments of an input filepath for a ".mozlz4" file
+    # and optionally an output filepath, write the decompressed text to the
+    # output filepath.
+    # Default output filepath is the input filepath minus the last three characters
+    # (e.g. "foo.jsonlz4" becomes "foo.json")
+    filepath_in = args[0]
+    if len(args) < 2:
+        filepath_out = filepath_in[:-3]
+    else:
+        filepath_out = args[1]
+    text = mozlz4_to_text(filepath_in)
+    with open(filepath_out, "wb") as outfile:
+        outfile.write(text)
+    print("Wrote decompressed text to {}".format(filepath_out))
+
+
+if __name__ == "__main__":
+    import sys
+
+    args = sys.argv[1:]
+    if args and args[0] not in ("--help", "-h"):
+        main(args)
+    else:
+        print("Usage: mozlz4.py <mozlz4 file to read> <location to write>")
diff --git a/modules/home.legacy/conf/firefox/scripts/update_extensions.sh b/modules/home.legacy/conf/firefox/scripts/update_extensions.sh
new file mode 100755
index 00000000..86bd843c
--- /dev/null
+++ b/modules/home.legacy/conf/firefox/scripts/update_extensions.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+tmp=$(mktemp)
+cat <<EOF | awk '!/^\s*#/' >"$tmp"
+    darkreader:navbar
+    keepassxc-browser:navbar
+    vhack-libredirect:navbar
+    torproject-snowflake:navbar
+    tridactyl-vim:menupanel
+    ublock-origin:menupanel
+EOF
+
+# The bin is provided in the devshell;
+# The cat execution should be unquoted;
+# shellcheck disable=SC2046
+generate_extensions $(cat "$tmp") >"$(dirname "$0")"/../config/extensions/extensions.json
+
+rm "$tmp"
diff --git a/modules/home.legacy/conf/gammastep/default.nix b/modules/home.legacy/conf/gammastep/default.nix
new file mode 100644
index 00000000..1ae0550b
--- /dev/null
+++ b/modules/home.legacy/conf/gammastep/default.nix
@@ -0,0 +1,29 @@
+{
+  lib,
+  nixosConfig,
+  ...
+}: let
+  temp =
+    if nixosConfig.soispha.laptop.enable
+    then 3000
+    else 1300;
+in {
+  services.gammastep = {
+    enable = true;
+    settings = {
+      general = {
+        temp-day = lib.mkForce temp;
+        temp-night = lib.mkForce temp;
+        gamma = "0.8:0.8:0.8";
+        fade = 0;
+        adjustment-method = "wayland";
+        location-provider = "manual";
+      };
+
+      manual = {
+        lat = 48.1;
+        lon = 11.6;
+      };
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/git/aliases.nix b/modules/home.legacy/conf/git/aliases.nix
new file mode 100644
index 00000000..15bf613d
--- /dev/null
+++ b/modules/home.legacy/conf/git/aliases.nix
@@ -0,0 +1,82 @@
+{
+  lib,
+  config,
+}: {
+  cmr = "commit --file .git/COMMIT_EDITMSG --edit --verbose";
+
+  st = "status";
+  sts = "status --short --branch";
+
+  ds = "diff --staged";
+  di = "diff";
+  rs = "restore --staged";
+
+  ## Logging:
+  ls = "log --max-count=10 --color --format=format:'%C(bold red)%h%C(reset) %C(dim bold blue)%s%C(reset) %C(dim white)[%aN] %C(bold red)<%G?>%C(reset)%C(auto)%d%C(reset)'";
+
+  # https://stackoverflow.com/a/61487052
+  lg = "lg1";
+  lg1 = "lg1-specific --all";
+  lg2 = "lg2-specific --all";
+  lg3 = "lg3-specific --all";
+
+  lg1-specific = "log --graph --abbrev-commit --decorate \
+                      --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold cyan) [%G?]%C(reset)%C(auto)%d%C(reset)'";
+
+  lg2-specific = "log --graph --abbrev-commit --decorate \
+                      --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(auto)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)'";
+
+  lg3-specific = "log --graph --abbrev-commit --decorate \
+                      --format=format:'%C(bold blue)%h%C(reset)\
+                      - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)\
+                      %C(bold cyan)(committed: %cD)%C(reset) %C(auto)%d%C(reset)\
+                      %C(bold red)(signature: %G? by %GS, trust: %GT)%C(reset)%n\
+                      ''          %C(white)%s%C(reset)%n''\
+                      %C(dim white)- %an <%ae> %C(reset) %C(dim white)(committer: %cn <%ce>)%C(reset)\
+                      %C(bold white)- trailers: %(trailers) %C(reset)'";
+
+  # hard reset with commit before (use reflog to recover)
+  #    git wipe [<commit>]
+  wipe = lib.strings.concatStringsSep " " [
+    "!git"
+    "add"
+    "--all"
+    "&&"
+    "git"
+    "commit"
+    "--quiet"
+    "--message='WIPE-SAVEPOINT'"
+    "--no-gpg-sign"
+    "&&"
+    "git reset \${1:-HEAD~} --hard"
+    "&&"
+    "git clean -fd"
+  ];
+
+  branches = lib.strings.concatStringsSep " " [
+    "!git"
+    "for-each-ref"
+    "--sort=-committerdate"
+    "--color=always"
+    "--format='${
+      lib.strings.concatStringsSep "|" [
+        "%(color:blue)%(authordate:relative)"
+        "%(color:red)%(authorname)"
+        "%(color:green)%(color:bold)%(refname:short)"
+      ]
+    }'"
+    "refs/remotes"
+    "|"
+    "column -ts'|' -o '   '"
+  ];
+
+  tags = "tag --list";
+
+  remotes = "remote --verbose";
+
+  day = "!git log --stat --since '1 day ago' --author $(git config user.email)";
+
+  unpush = "push --force-with-lease origin HEAD~1:${config.programs.git.extraConfig.init.defaultBranch}";
+
+  wip = "!git add . && git commit --amend && git push --force-with-lease";
+}
diff --git a/modules/home.legacy/conf/git/default.nix b/modules/home.legacy/conf/git/default.nix
new file mode 100644
index 00000000..6680c598
--- /dev/null
+++ b/modules/home.legacy/conf/git/default.nix
@@ -0,0 +1,96 @@
+{
+  lib,
+  config,
+  ...
+}: let
+  gitIgnoreFile = ./git_ignore.git;
+  gitTemplateFile = ./git_template.git;
+in {
+  programs.git = {
+    enable = true;
+    #package = pkgs.gitAndTools.gitFull; # TODO: for git send-email support
+    aliases = import ./aliases.nix {inherit lib config;};
+    extraConfig = {
+      core = {
+        excludesFile = "${gitIgnoreFile}";
+      };
+      rebase = {
+        autoStash = true;
+        autoSquash = true;
+      };
+      init = {
+        defaultBranch = "prime";
+      };
+      user = {
+        name = "Benedikt Peetz";
+        email = "benedikt.peetz@b-peetz.de";
+        # signingKey = "[is down below]";
+      };
+      help = {
+        autocorrect = 5;
+      };
+      push = {
+        gpgSign = "if-asked";
+      };
+      commit = {
+        template = "${gitTemplateFile}";
+      };
+      diff = {
+        colorMoved = "default";
+        # Usually leads to better results
+        algorithm = "patience";
+        bin = {
+          textconv = "hexdump -v -C";
+        };
+      };
+      # Makes it a bit more readable
+      blame = {
+        coloring = "repeatedLines";
+        markIgnoredLines = true;
+        markUnblamables = true;
+      };
+      merge = {
+        conflictstyle = "zdiff3";
+      };
+      url = {
+        "git@codeberg.org:" = {
+          insteadOf = "@cb:";
+        };
+        "https://codeberg.org/" = {
+          insteadOf = "cb://";
+        };
+
+        "git@github.com:" = {
+          insteadOf = "@gh:";
+        };
+        "https://github.com/" = {
+          insteadOf = "gh://";
+        };
+
+        "git@gitlab.com:" = {
+          insteadOf = "@gl:";
+        };
+        "https://gitlab.com/" = {
+          insteadOf = "gl://";
+        };
+      };
+    };
+    delta = {
+      enable = true;
+      options = {
+        decorations = {
+          commit-decoration-style = "bold yellow box ul";
+          file-decoration-style = "none";
+          file-style = "bold yellow ul";
+        };
+        keep-plus-minus-markers = true;
+        features = "decorations";
+        whitespace-error-style = "22 reverse";
+      };
+    };
+    signing = {
+      key = "8321ED3A8DB999A51F3BF80FF2682914EA42DE26";
+      signByDefault = true;
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/git/git_ignore.git b/modules/home.legacy/conf/git/git_ignore.git
new file mode 100644
index 00000000..8f29815e
--- /dev/null
+++ b/modules/home.legacy/conf/git/git_ignore.git
@@ -0,0 +1,4 @@
+# default nvim Session file name
+Session.vim
+
+# vim: ft=gitignore
diff --git a/modules/home.legacy/conf/git/git_template.git b/modules/home.legacy/conf/git/git_template.git
new file mode 100644
index 00000000..6af39119
--- /dev/null
+++ b/modules/home.legacy/conf/git/git_template.git
@@ -0,0 +1,66 @@
+
+# Title: Summary, imperative, start upper case, don't end with a period
+# If applied, this commit will <your Title>
+
+# Body: Explain *what* and *why* (not *how*).
+
+
+# BREAKING CHANGE: <description>
+# Fixes: #
+# Refs: #
+# Co-authored-by: <name> <email>
+
+
+
+# Convention Commits (https://www.conventionalcommits.org/en/v1.0.0/ or https://github.com/angular/angular/blob/85b4941be137a2fcdc664dc870e408dd72ad7de7/CONTRIBUTING.md#commit):
+#  feat: [Features] -> MINOR version bump
+#      A new feature
+#
+#  fix: [Bug Fixes] -> PATCH version bump
+#      A bug fix
+#
+#  append '!' after the type/scope: [Breaking Change] -> MAJOR version bump
+#      A breaking API change
+#
+#  docs: [Documentation]
+#      Documentation only changes
+#
+#  style: [Styles]
+#      Changes that do not affect the meaning of the code
+#      (white-space, formatting, missing semi-colons, etc)
+#
+#  refactor: [Code Refactoring]
+#      A code change that neither fixes a bug nor adds a feature
+#
+#  perf: [Performance Improvements] -> PATCH version bump
+#      A code change that improves performance
+#
+#  test: [Tests]
+#      Adding missing tests or correcting existing tests
+#
+#  build: [Builds] -> PATCH version bump
+#      Changes that affect the build system or external dependencies
+#      (example scopes: gulp, broccoli, npm)
+#
+#  ci: [Continuous Integrations]
+#      Changes to our CI configuration files and scripts
+#      (example scopes: Travis, Circle, BrowserStack, SauceLabs)
+#
+#  chore: [Chores]
+#      Other changes that don't modify src or test files
+#
+#  reverts: [Reverts]
+#      Reverts a previous commit
+
+# How to Write a Git Commit Message:
+# [https://chris.beams.io/posts/git-commit/] -> https://cbea.ms/git-commit/
+#
+# 1. Separate subject from body with a blank line
+# 2. Limit the subject line to 50 characters
+# 3. Capitalize the subject line
+# 4. Do not end the subject line with a period
+# 5. Use the imperative mood in the subject line
+# 6. Wrap the body at 72 characters
+# 7. Use the body to explain *what* and *why* vs. *how*
+#
+# vim: ft=gitcommit
diff --git a/modules/home.legacy/conf/gpg/default.nix b/modules/home.legacy/conf/gpg/default.nix
new file mode 100644
index 00000000..1acdf628
--- /dev/null
+++ b/modules/home.legacy/conf/gpg/default.nix
@@ -0,0 +1,67 @@
+{
+  config,
+  pkgs,
+  lib,
+  ...
+}: {
+  programs.gpg = {
+    enable = true;
+    homedir = "${config.xdg.dataHome}/gnupg";
+    mutableKeys = true;
+    mutableTrust = true;
+
+    settings = {
+      default-key = "Benedikt Peetz <benedikt.peetz@b-peetz.de>";
+      # TODO: add more
+    };
+
+    publicKeys = [
+      {
+        source = ./keys/key_1.asc;
+        trust = "ultimate";
+      }
+      {
+        source = ./keys/key_2.asc;
+        trust = "full";
+      }
+    ];
+  };
+  services = {
+    gpg-agent = {
+      enable = true;
+      enableZshIntegration = true;
+      enableScDaemon = true; # smartcards and such things
+
+      # Cache the key passwords
+      defaultCacheTtl = 60 * 50;
+      defaultCacheTtlSsh = 60 * 50;
+      maxCacheTtl = 60 * 50;
+      maxCacheTtlSsh = 60 * 50;
+
+      pinentryPackage = pkgs.pinentry-curses;
+      # pinentryPackage = pkgs.pinentry-tty;
+
+      enableSshSupport = true;
+      sshKeys = let
+        removeSpace = str: builtins.replaceStrings [" "] [""] str;
+      in [
+        (removeSpace "8321 ED3A 8DB9 99A5 1F3B  F80F F268 2914 EA42 DE26")
+      ];
+    };
+  };
+
+  programs.zsh.initExtraFirst = lib.mkBefore ''
+    export GPG_TTY=$(tty)
+
+    # Magic copied from the gpg-agent manual
+    unset SSH_AGENT_PID
+    if [ "''${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
+        export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
+    fi
+
+
+    # Ensure that get gpg agent is started (necessary because ssh does not start it
+    # automatically and has it's tty updated)
+    gpg-connect-agent /bye
+  '';
+}
diff --git a/modules/home.legacy/conf/gpg/keys/key_1.asc b/modules/home.legacy/conf/gpg/keys/key_1.asc
new file mode 100644
index 00000000..795f82af
--- /dev/null
+++ b/modules/home.legacy/conf/gpg/keys/key_1.asc
@@ -0,0 +1,26 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Comment: 8321 ED3A 8DB9 99A5 1F3B  F80F F268 2914 EA42 DE26
+Comment: Benedikt Peetz <benedikt.peetz@b-peetz.de>
+
+mDMEZkCPnhYJKwYBBAHaRw8BAQdAA2ve8cO5iCx0Ehd8+9zhXrzzAlpo7DI5ltNM
+vLQIHVK0KkJlbmVkaWt0IFBlZXR6IDxiZW5lZGlrdC5wZWV0ekBiLXBlZXR6LmRl
+PoiZBBMWCgBBFiEEgyHtOo25maUfO/gP8mgpFOpC3iYFAmZAj54CGwEFCRLMAwAF
+CwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQ8mgpFOpC3iYTYwD/UGnlFls7
+ynY52EAiea6Fa+ktXZQKnVjKYO4AYmUdIRMA/iY+fnhm7OgB1SSv0ssjqpeIFSwu
+qTL4lz735Pn+UNEKuDMEZkCP8xYJKwYBBAHaRw8BAQdAk5J9kVCFByKW5Wk8Oobn
+Ydy/sh+05irq/xjQjtDQG8eI9QQYFgoAJhYhBIMh7TqNuZmlHzv4D/JoKRTqQt4m
+BQJmQI/zAhsCBQkDwmcAAIEJEPJoKRTqQt4mdiAEGRYKAB0WIQTeYpC3k+aybU6a
+T722E5vLB86UbQUCZkCP8wAKCRC2E5vLB86UbaN2AQCbINgO9vljxk4T/s4N1+t4
+Zp5skgghUn4vTQXGIs2NugD9HwhSazuUHo3gJFyhAowPCtKlCbdOEmrs4qQFHU9h
+0gPKdgEAtxZorpsQtrQjTHaOH0Ee5Hx+i10iP3npybzieFzvhQcA/R8L0jr8SJ6F
+HP6sEpAAdQ2qp9dqB71KISBtN1JbEagNuDMEZkCQPhYJKwYBBAHaRw8BAQdAwThl
+Vr4ihl/pPdTTwkb3eLpAgAnhqabuaQHM7XglKTOIfgQYFgoAJhYhBIMh7TqNuZml
+Hzv4D/JoKRTqQt4mBQJmQJA+AhsgBQkDwmcAAAoJEPJoKRTqQt4mO88A/2gXjwaq
+A9KN37jKb05zpsvTjOR5J9UOLsWUfye5zl6FAQCArUmXDApaOmB6FRUZqb93xiXQ
+6m5T5OoMcpURC6IyBrg4BGZAkGoSCisGAQQBl1UBBQEBB0BIk7HOtw7Z+BV1Oyst
+bl3PPAVuMtMJUD1CeYOMzA+1PwMBCAeIfgQYFgoAJhYhBIMh7TqNuZmlHzv4D/Jo
+KRTqQt4mBQJmQJBqAhsMBQkDwmcAAAoJEPJoKRTqQt4mg+kBAMTgMMLo/IzGPVhX
+8gSTGpM3fDQchgFfOMyjIDfWN0zDAQDiY6RCXavD7uVfg/949r9TQHo0Vvem63GH
+9Y7Vp2vzCA==
+=IM58
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/modules/home.legacy/conf/gpg/keys/key_2.asc b/modules/home.legacy/conf/gpg/keys/key_2.asc
new file mode 100644
index 00000000..47188da7
--- /dev/null
+++ b/modules/home.legacy/conf/gpg/keys/key_2.asc
@@ -0,0 +1,794 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Comment: 2FEA 7BDB 9171 70A7 B8E7  2001 DF18 78E6 D9C3 B27F
+Comment: Silas <sils@sils.li>
+Comment: Silas <li@envs.net>
+Comment: Silas <s.silas@disroot.org>
+Comment: Silas <silassc@systemli.org>
+
+mQGNBGEeXg8BDADF5M9eh/otTBDnbLqy8kxEHhlLRsv4wF0qCW8fGWlclAFpz5A9
+9t0Klt0AkB2EK/2EKWmm7J2DD9lq7nlvJurWXZWmcDzRWV6VWO4KftvKnasBR7kQ
+3T09ga/jVgLmjGU8qKW2175MLuj+hRNwlc8TiTHrl9b+1hC5dvV6HwIJtvVbpBzj
+ZmFGKBCPdA/8j/keq9kBJTJjb6YED+jAJJAHeZ7XyDeCi46MwTR09wLXIrlZenGO
+wljtu+Ar+SN5droeeMN1edw9y2YnRg4zQ0lOtC7ylbV6a205B2QxSanMpaEZPX0C
+Y48KZqto1Xs1skHrf3PHmRkGDbMil8yhsBlVDZOmKiMjTTEJs4nsM9llJvz0kaiw
+Gu1HgMfuKxgwXZ+7qonQ9Td4Mg20hyfaHC8djwP8IEym5NOfLbkifeUL7owe+5fc
+HCd3I6bnvHAtfQN2YV/VZN1rSXykrd6YjnqDYhxxlhHnObFnFYJD1M2KIBUwlLSG
+BK25hH/eAvBcYq0AEQEAAbQUU2lsYXMgPHNpbHNAc2lscy5saT6JAxgEEwEIAYIC
+GwMFCQlmAYAFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4ACGQEWIQQv6nvbkXFw
+p7jnIAHfGHjm2cOyfwUCZEFu1T4UgAAAAAAQACVwcm9vZkBhcmlhZG5lLmlkaHR0
+cHM6Ly9jb2RlYmVyZy5vcmcvc2lscy9naXRlYV9wcm9vZpkUgAAAAAAQAIBwcm9v
+ZkBhcmlhZG5lLmlkbWF0cml4OnUvQHNpbHM6c2lscy5saT9vcmcua2V5b3hpZGUu
+cj0hZEJmUVp4Q29HVm1TVHVqZml2Om1hdHJpeC5vcmcmb3JnLmtleW94aWRlLmU9
+JGRqVWtvd3Y3bDR5RmNYTGF1eWlCWXNocENodU1rRDgtbUctN1lfVl9TN0EvFIAA
+AAAAEgAUcHJvb2ZAbWV0YWNvZGUuYml6ZG5zOnNpbHMubGk/dHlwZT1UWFQ0FIAA
+AAAAEgAZcHJvb2ZAbWV0YWNvZGUuYml6aHR0cHM6Ly90cm9ldC5jYWZlL0BkYXNs
+aQAKCRDfGHjm2cOyf7ixDAC42r59qDyhO7aN0I775O6DZk2KO9YFNhZ/4wmFoPUV
+eE15OwgrghX5rQWwt2xbQoC5vt1DOKsfRqdybdRo6PI8urm20/QTxmC+0yNE7yfZ
+iEHHgTbdns4DtGpA8nRAdGSKEAGYd8HVMy6ANucVS4aNH04L+294/LSpG2GhMAHK
+drsKWZfy51eyaFeVlZ4+Iskl/KD/vkyOeStzmtzKxlyIC66At9bIaqCGmC7u4ClJ
+oFaOuXUXvvDvski7Nk//eQnlMP/kUfbR02tws7QcZ+DE8PU82maCBfXn1EWgpnMN
+uZ3/91iTiJC70kmer8a/yqe5EFUQuvZrPB49Y0bAvyh7jJpxlMK1Fsq1cI5pa3Al
+RFDDS3VpTP4kt80UbssQK5YKc1WvwTJGp+X/7zUwNbfPr/iA24Lj8KcykKywFmTu
++ucC1eETPphckL8Rbd5wYUAE4+JLID4pUDE/pfTggS1hA9G/IgKBNMdDB/MyJuOP
+J18VXSZk9yBiWEaHruqBu56JAxIEEwEIAXwCGwMFCQlmAYAFCwkIBwICIgIGFQoJ
+CAsCBBYCAwECHgcCF4ACGQEWIQQv6nvbkXFwp7jnIAHfGHjm2cOyfwUCZEFtVjgU
+gAAAAAAQAB9wcm9vZkBhcmlhZG5lLmlkaHR0cHM6Ly9jb2RlYmVyZy5vcmcvc2ls
+cy9wcm9vZpkUgAAAAAAQAIBwcm9vZkBhcmlhZG5lLmlkbWF0cml4OnUvQHNpbHM6
+c2lscy5saT9vcmcua2V5b3hpZGUucj0hZEJmUVp4Q29HVm1TVHVqZml2Om1hdHJp
+eC5vcmcmb3JnLmtleW94aWRlLmU9JGRqVWtvd3Y3bDR5RmNYTGF1eWlCWXNocENo
+dU1rRDgtbUctN1lfVl9TN0EvFIAAAAAAEgAUcHJvb2ZAbWV0YWNvZGUuYml6ZG5z
+OnNpbHMubGk/dHlwZT1UWFQ0FIAAAAAAEgAZcHJvb2ZAbWV0YWNvZGUuYml6aHR0
+cHM6Ly90cm9ldC5jYWZlL0BkYXNsaQAKCRDfGHjm2cOyf1tOC/wIxixV1NRNoYF3
+WMRAF5sloJYD8cM5TeNlkenqkWoGEze+WcswzY1ALfT0GMQpDuWQMI6yYzru8MDn
+1ERMHbqgYhAVSPhQXaMJ8jiJVMq04Yjb2uys7c98vsXjoGy9zv9QaYtIFdocrUJV
+dL5t+j2wQYK74uXnO+/EARLwJoIeQpq8AwwocxCJ/0nu5VllgOIyut92UHpmNBEl
+qestgU/TRAjeT2m/ezyLI3U2Idy+rzP31A0U0RXOZ3cNUDrDYeeQQ0SrWhf9/4ym
+wUczJyQLc5cMHSjZ4K7ib8u+1g/B6pLdiLtKHrxqFduPK8cnSAcKF5UP9CE6E7ab
+5oNMmSqMDl4ZAmxn28jcvyGEei4oPDTZeYMZdxoOrIaoYw0G2BOq1pqms2nJlSVk
+T1aiBW9g6u5b2kbuP9k5YAkB2XLAGWBuz7OXH0ZBmQ4vJaJRD+s3do5USnyVhJGP
+CccaTVs2p12ljwawmKtJzmCcHq8RbV0CW2uBxNShbWchNnZrcbyJAtkEEwEIAUMC
+GwMFCQlmAYAFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4ACGQEWIQQv6nvbkXFw
+p7jnIAHfGHjm2cOyfwUCYs8QWDQUgAAAAAASABlwcm9vZkBtZXRhY29kZS5iaXpo
+dHRwczovL3Ryb2V0LmNhZmUvQGRhc2xpLxSAAAAAABIAFHByb29mQG1ldGFjb2Rl
+LmJpemRuczpzaWxzLmxpP3R5cGU9VFhUmRSAAAAAABAAgHByb29mQGFyaWFkbmUu
+aWRtYXRyaXg6dS9Ac2lsczpzaWxzLmxpP29yZy5rZXlveGlkZS5yPSFkQmZRWnhD
+b0dWbVNUdWpmaXY6bWF0cml4Lm9yZyZvcmcua2V5b3hpZGUuZT0kZGpVa293djds
+NHlGY1hMYXV5aUJZc2hwQ2h1TWtEOC1tRy03WV9WX1M3QQAKCRDfGHjm2cOyfzkw
+DACj77EpB21XUgzceBilA62zIKXNZMhr1aefibe84aZQh8h8ABREtSQSIHAwBXxO
+qlG30bt2fFO0oB8UEIrHG+ahlNfHxbHJZT7xlkuWHRXfV9yHC5vuOUbWLIxJWJzV
+xVN7s4VCBYyrfCcLnNbaRv3BiLE7as7ayC8rLcPSr8QicasAEXSr4k4nEH5BkIUX
+KtvpW1BW0vEUIshFc2QRYS9gaC9KioojLvmM+IFtHdJ9TQMds6n2zSKG5tR1/fB/
+SZ82g3imLt9bAEG2K70w572CgY1P/2ClB/hkR2rO/OazAyIdKmzuL0ZJTdgKoFbB
+A5d7RFCOi8YQhv+26CchNhNhJKcQMhc0ctHrdLEL8x2+dJX8KA1CXQZV6OrVEL2R
+96ETrOpJsToseaRvQoanAOXbx/zoATzhBaRIeotXacOytXXEmOwp9wSKIlrNYkDT
+rboPyelwgSQiLvlLUnqTNnq1YbUtkPT1Ka5NsmjUwvsTRQzfcnR1fTWWEqPWN1iA
+ebqJA3IEEwEIAdwCGwMFCQlmAYAFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AC
+GQEWIQQv6nvbkXFwp7jnIAHfGHjm2cOyfwUCYs8F+ZkUgAAAAAAQAIBwcm9vZkBh
+cmlhZG5lLmlkbWF0cml4OnUvQHNpbHM6c2lscy5saT9vcmcua2V5b3hpZGUucj0h
+ZEJmUVp4Q29HVm1TVHVqZml2Om1hdHJpeC5vcmcmb3JnLmtleW94aWRlLmU9JGRq
+VWtvd3Y3bDR5RmNYTGF1eWlCWXNocENodU1rRDgtbUctN1lfVl9TN0GYFIAAAAAA
+EAB/cHJvb2ZAYXJpYWRuZS5pZG1hdHJpeDp1L0BsaTpmZmYuY2hhdD9vcmcua2V5
+b3hpZGUucj0hZEJmUVp4Q29HVm1TVHVqZml2Om1hdHJpeC5vcmcmb3JnLmtleW94
+aWRlLmU9JGhLOV90RzB1N2FxVXdmSHZ3c0t3ZUNYV1g2bmktX0k5azQxd3hFMmpN
+VDgvFIAAAAAAEgAUcHJvb2ZAbWV0YWNvZGUuYml6ZG5zOnNpbHMubGk/dHlwZT1U
+WFQ0FIAAAAAAEgAZcHJvb2ZAbWV0YWNvZGUuYml6aHR0cHM6Ly90cm9ldC5jYWZl
+L0BkYXNsaQAKCRDfGHjm2cOyfwt2C/wMjQNxEE+M03T4SkI2vRlmTmWWcOZiJHsm
+SkmAgvo05wMc9LUnTEfWdOpsqTfI1Ud972kuL7g9bqWQnMPq3FGYZHpHRP2rsCw5
+yPwTgjENh50sH6w1yclfvardtca7VrkTHiWqmmEzBrjEeMQMkQRLCCmvWB3d1+60
+qdKL+/ucAdLnNeyMpNWqAuZ4f5XIwHutKqQJWJlQ9NZN03OcaS/oaHHn95xXzXba
+rCa7hdwRrAEYpMbYjjjfHhbQLauEhIV5JuatDD6w+vv8NUHBIJ5sXvIak6EHeWEe
+UDBsu+LgRiBXJA9orE4oExdIF5LpJvGjZqEh80HFUd+3sBb/9HzaLLFrr2zSYwWJ
+WGcb+Ho/ZYl4VC9rXpJfz5kyLzWVGqyDcHLIid7G0rDicBErFG2o8ppxXm8+ekRp
+yodwaqHbUp62mhnSoObYJKpVJZoqwQZTVIeGnwAYpcE94e8TjK54DziyZ5ZZ9q2n
+4tf/ZPu3Dt+L+tvPlF1VRMLjCCp2e7KJAtgEEwEIAUICGwMFCQlmAYAFCwkIBwIC
+IgIGFQoJCAsCBBYCAwECHgcCF4ACGQEWIQQv6nvbkXFwp7jnIAHfGHjm2cOyfwUC
+Ys8EiDQUgAAAAAASABlwcm9vZkBtZXRhY29kZS5iaXpodHRwczovL3Ryb2V0LmNh
+ZmUvQGRhc2xpLxSAAAAAABIAFHByb29mQG1ldGFjb2RlLmJpemRuczpzaWxzLmxp
+P3R5cGU9VFhUmBSAAAAAABAAf3Byb29mQGFyaWFkbmUuaWRtYXRyaXg6dS9AbGk6
+ZmZmLmNoYXQ/b3JnLmtleW94aWRlLnI9IWRCZlFaeENvR1ZtU1R1amZpdjptYXRy
+aXgub3JnJm9yZy5rZXlveGlkZS5lPSRoSzlfdEcwdTdhcVV3Zkh2d3NLd2VDWFdY
+Nm5pLV9JOWs0MXd4RTJqTVQ4AAoJEN8YeObZw7J/vAwL/2WvNAlqoRAr6vT/t+gm
+O3AoiUzEBZXLgq5aibdbpZENjPiSfZZWzfkIpOeGQSCoDluHLnVrlcQegCAvUiBS
+qbwN32X77yOggG29hAGZBxBXvJ/rj63m0B0v60Cfcgetlf6cEO6PPdsZD6VaY/cL
+pO6dVHRhD4r53in7XhyzhMhW6PljY2FTFZ2rdZEliQZAD90M2hn+LCXx8rsh3SqZ
+RKT88jhfcBXA20vHgagzzdXyaeo4wbWplroz+3nLz3oQDfLLWnihAhAbIHg9AE/4
+dXFljjCF45SjU+8gHpHkHfwWtwLYucOZ5mr4RUVy8hiPyz/1fLxNKkDOvg42tDAB
+dIwt7CpFxHfn63GjsRRmNyZoIQhoDKX0BCuHF+Qsr5jIHd1o1o9HpjHicdZV+uV6
+RQedsgbfCHJPZKdXSyxI/SF9jDlXCvG2aTzTXk2vQ7PCZKsFjVFJA7U87zmr0ZsJ
+i5axNn+v8JA2hT1xxd0wkVWwg4f3kR4cr6AhK3EFVNTtTIkB2gQTAQgARAIbAwUJ
+CWYBgAULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgBYhBC/qe9uRcXCnuOcgAd8Y
+eObZw7J/BQJizwJUAhkBAAoJEN8YeObZw7J/o7sL/1iaIT4y0FypOhzzUqJzOBP2
+kabeq4iOS99w2wHEiM6xzXoGuRy+lEXZMb94VVUNhJDayTf11OZgAyAJdt9OAyBK
+UsFf1AbVJw0YY+384bjbId/oTqngqKIkBH9bpDIfSX5riXqD5SmhwRuuRPHuO+ZT
+aM3tdDnSjW4brEub3aHsHPNbBM39u0Q9JGPpd4GhXnmK1iYCQU5ZRErgpxqPtAOX
+h9/eIIa5Tv+KbPzwBJ3od27dbuo/Y3OwxfwSuSKieK+xvDHyxzD429tEh+uMP4W/
+2b4GbksC0Z6nNM7FBa2Vq/vKOa6yTGE7bgkudr3tWa5N+x/towX6crgB+5DAByBR
+on967FLER6i4Ok9V1hBnvrjXGLgJeNkoxMxiK3UH0ijY9laHO9fd8v4RoHubHxjV
+YXJNUm6EUvRPXskpNw5X24dQ3muuLpOVX657Z609ar6jEQgXjeuyqUL4TwXorDZs
+4HU1Mj42iFUD9HdIcMqW+/zpKGxEJWFjlg2z1/uX9Ih1BBAWCgAdFiEElgb8dJ/O
+FjYHI9StpelAEMOmQq0FAmTEI7oACgkQpelAEMOmQq2x6AD/WrvWuFlewmBNqoLa
+AMQb3Hk3Ls3GZdYkpNhuTqSZbs0BAOPNAm00QHD1QQeOsZkuExxgPoMDtdW27qD5
+vfVP7xQCtBNTaWxhcyA8bGlAZW52cy5uZXQ+iQMVBBMBCAF/AhsDBQkJZgGABQsJ
+CAcCAiICBhUKCQgLAgQWAgMBAh4HAheAFiEEL+p725FxcKe45yAB3xh45tnDsn8F
+AmRBbtU+FIAAAAAAEAAlcHJvb2ZAYXJpYWRuZS5pZGh0dHBzOi8vY29kZWJlcmcu
+b3JnL3NpbHMvZ2l0ZWFfcHJvb2aZFIAAAAAAEACAcHJvb2ZAYXJpYWRuZS5pZG1h
+dHJpeDp1L0BzaWxzOnNpbHMubGk/b3JnLmtleW94aWRlLnI9IWRCZlFaeENvR1Zt
+U1R1amZpdjptYXRyaXgub3JnJm9yZy5rZXlveGlkZS5lPSRkalVrb3d2N2w0eUZj
+WExhdXlpQllzaHBDaHVNa0Q4LW1HLTdZX1ZfUzdBNBSAAAAAABIAGXByb29mQG1l
+dGFjb2RlLmJpemh0dHBzOi8vdHJvZXQuY2FmZS9AZGFzbGkvFIAAAAAAEgAUcHJv
+b2ZAbWV0YWNvZGUuYml6ZG5zOnNpbHMubGk/dHlwZT1UWFQACgkQ3xh45tnDsn9K
+9AwAlqvwQNhFakWY7i5XmrdzcBj5nHKoxYkCpVEwwEVy/B7LV6h+ZoXadtQzqn3l
+BdoSchkIYcZT4xDV/b00bCD9APpu6+Eom3CcBlcxIthoEe6ZKXEImounCS69wkVA
+8ItZlSlhyxTRSQzgmAI5qApw/Kh+AmpsEK8W2kY2tpV7fR/cXZ5/pNoU907T0U5f
+bpnEgdZFeNUw+RayCELUZnZ1wgl33yADV9WV+nn4N/t1/xEfAFsv5GuNoCrc/BAu
+jyaoVS8ULkmioYyUmFHDAwn/SXAIMOL5LNc/4xMt1CkYkRXiEQW+l2UWrGF5hhIY
+R6ofOeUgxiw+iDM2vA0G65+OUCTRpkrHFl5d777LFiHEWKKlBKM0of1Cr+roXrPi
+uYwDjuC4WYEtcvKG1bimI6MRwoUmjW8yg8E40jidZYOuOVi8HVteg+HeCRW7qmwX
+VR1QI+Fp2eRj0DSeh+wwtaFxMHcTRe10UFkJ244HOihydEqFUfPOvwTzuXtZjO5Z
+CHQPiQMPBBMBCAF5AhsDBQkJZgGABQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheA
+FiEEL+p725FxcKe45yAB3xh45tnDsn8FAmRBbVY4FIAAAAAAEAAfcHJvb2ZAYXJp
+YWRuZS5pZGh0dHBzOi8vY29kZWJlcmcub3JnL3NpbHMvcHJvb2aZFIAAAAAAEACA
+cHJvb2ZAYXJpYWRuZS5pZG1hdHJpeDp1L0BzaWxzOnNpbHMubGk/b3JnLmtleW94
+aWRlLnI9IWRCZlFaeENvR1ZtU1R1amZpdjptYXRyaXgub3JnJm9yZy5rZXlveGlk
+ZS5lPSRkalVrb3d2N2w0eUZjWExhdXlpQllzaHBDaHVNa0Q4LW1HLTdZX1ZfUzdB
+NBSAAAAAABIAGXByb29mQG1ldGFjb2RlLmJpemh0dHBzOi8vdHJvZXQuY2FmZS9A
+ZGFzbGkvFIAAAAAAEgAUcHJvb2ZAbWV0YWNvZGUuYml6ZG5zOnNpbHMubGk/dHlw
+ZT1UWFQACgkQ3xh45tnDsn8fMgwAhHfRuMb9ayKGl0Kb6by648KHe6NOHKLTrLm8
+5w/cIBrW2s42rSZdybeVNA+AnrtBvRD/yQ7idji5FS0nYac4lbZ+oLNCUc9sSvZW
+DgWsXaYs5ujpR1ftYd8A0AytsBvrGczPrclMV5HjuE11kilYXMwNqiOX0hXZ3ewx
+O6d3KAYLIgajVH7SOgnexYs5Up7QO6osrFqRwokCd/Yx2usEap7jDajjeXQTNdwX
+e5RvKmYND3jYv0hood7IvSWeJHhZ5DIRQ9FpOt6PxiBzrEx8YRF1KbtniMTwf8fB
+Dl6eAo89I3WjT8CwQryeQ+9a+15WPQyLddEci1Vj7Etbmk6NfMmaUnm+OOOyeDz1
+0JYxPt4H32GYg/gGDZ7FxKG3gXHeCO2VptiS/VxCw4+EkVt0EYqWk51JGBNkOOL/
+8SMRFNNOah6xKR7hdPLmS69MqNvJGR/R0uJd3B4cF0ynLYFZRTJ2WH6nox0oXihB
+TsZxnPulkr20RdS2yXRfhfiouE2XiQLWBBMBCAFAAhsDBQkJZgGABQsJCAcCAiIC
+BhUKCQgLAgQWAgMBAh4HAheAFiEEL+p725FxcKe45yAB3xh45tnDsn8FAmLPEFwv
+FIAAAAAAEgAUcHJvb2ZAbWV0YWNvZGUuYml6ZG5zOnNpbHMubGk/dHlwZT1UWFQ0
+FIAAAAAAEgAZcHJvb2ZAbWV0YWNvZGUuYml6aHR0cHM6Ly90cm9ldC5jYWZlL0Bk
+YXNsaZkUgAAAAAAQAIBwcm9vZkBhcmlhZG5lLmlkbWF0cml4OnUvQHNpbHM6c2ls
+cy5saT9vcmcua2V5b3hpZGUucj0hZEJmUVp4Q29HVm1TVHVqZml2Om1hdHJpeC5v
+cmcmb3JnLmtleW94aWRlLmU9JGRqVWtvd3Y3bDR5RmNYTGF1eWlCWXNocENodU1r
+RDgtbUctN1lfVl9TN0EACgkQ3xh45tnDsn/wMgwAjNJsV6KyVmL5GtytbvmEPHDH
+s4Z8yS0BZF7wJr2u9QGQxjO/pthpGCnb2PNKUfLcXxXTUO9EZD8x9jV+WqaV8gL8
+h1zW0fWWpWL6hxwloAenmJCwydjjbWnpf5I8IUkJoliarNvy3f2dYwurus/G8Y1P
+YoMHxQBGLojM2XRj97DxuVgTTpbCkTeNyot8PX9BMGcBAdzccExW6NZ07kpgILfx
+hlVUNr/R/kRijf+kxG1WclKtKmzti9xjB8/00NgKUNnIyl9DC6vkZBsudIOCsopa
+cu1c4bpVLtL0HhZfXfAaiHV/GmGpa9Sdv3PlP3N0UGPMNMNAET+6TUMzPYeXT9tC
+0ppHKbIOqOx4qeHQMmXGv5YRTt4+x/HQleVL7vDOOasJu+YcFYaxfX8LVjJstTKh
+bxR1PDHA3Rhvt6zulgHh6OE0seNTuMXzvKwUG2SBbRrmJtzQ7k+C4bKPolidPGfY
+Jd5v/gzlRky4Hyoiqlg3Mu1smZxYqdA8rw1+wjaXiQNvBBMBCAHZAhsDBQkJZgGA
+BQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAFiEEL+p725FxcKe45yAB3xh45tnD
+sn8FAmLPBfmZFIAAAAAAEACAcHJvb2ZAYXJpYWRuZS5pZG1hdHJpeDp1L0BzaWxz
+OnNpbHMubGk/b3JnLmtleW94aWRlLnI9IWRCZlFaeENvR1ZtU1R1amZpdjptYXRy
+aXgub3JnJm9yZy5rZXlveGlkZS5lPSRkalVrb3d2N2w0eUZjWExhdXlpQllzaHBD
+aHVNa0Q4LW1HLTdZX1ZfUzdBNBSAAAAAABIAGXByb29mQG1ldGFjb2RlLmJpemh0
+dHBzOi8vdHJvZXQuY2FmZS9AZGFzbGmYFIAAAAAAEAB/cHJvb2ZAYXJpYWRuZS5p
+ZG1hdHJpeDp1L0BsaTpmZmYuY2hhdD9vcmcua2V5b3hpZGUucj0hZEJmUVp4Q29H
+Vm1TVHVqZml2Om1hdHJpeC5vcmcmb3JnLmtleW94aWRlLmU9JGhLOV90RzB1N2Fx
+VXdmSHZ3c0t3ZUNYV1g2bmktX0k5azQxd3hFMmpNVDgvFIAAAAAAEgAUcHJvb2ZA
+bWV0YWNvZGUuYml6ZG5zOnNpbHMubGk/dHlwZT1UWFQACgkQ3xh45tnDsn9tmAv+
+N2M+eK83AcE4EYbQiAmDlP6PJAzRiryYErTRO64bhq06JXPz7QvIVbsML6kou2hg
+j51E4721EKS2essVlRqYf/5d6IKBjakEbgk3ta8jkc+jSSP7ARAjCWU5Qzjttucq
+6Fs+uaQ8Xwdb9SamL6MmR9TSifVPxFm8n14jj4JUuXlpZWj++TprgDzz9hbq5ijE
+LKYOaenSK8/OR6fzXgAF4+3tRwZRiNzf3Ui+cUtF+gP2b9GH8R7L+7bkMJ2MYkT6
+i7LShScXOt5htTva3lZ1ekFCzNhPOd+ubvDRfnJ+Jqmk9KaK/unb7c9N5vr1Ures
+QFPIk1pIMy3PayWHgzbYmKmjEDpGiBy3ShKVMu9Fwx6uPiD16eHvc8VisuWNlDlI
+lRK23lZKVJ27RdfIh892b5Ywn07J8CC5XSNl7M3cCsnXR6P/8/es9eLAyjip7QIe
+pHW608TIsKtiGBXTamt2lIcrFZ5wCs9HUfhuBopxU5OzxuI4Jq74oG611n63bo0u
+iQLVBBMBCAE/AhsDBQkJZgGABQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAFiEE
+L+p725FxcKe45yAB3xh45tnDsn8FAmLPBBIvFIAAAAAAEgAUcHJvb2ZAbWV0YWNv
+ZGUuYml6ZG5zOnNpbHMubGk/dHlwZT1UWFSYFIAAAAAAEAB/cHJvb2ZAYXJpYWRu
+ZS5pZG1hdHJpeDp1L0BsaTpmZmYuY2hhdD9vcmcua2V5b3hpZGUucj0hZEJmUVp4
+Q29HVm1TVHVqZml2Om1hdHJpeC5vcmcmb3JnLmtleW94aWRlLmU9JGhLOV90RzB1
+N2FxVXdmSHZ3c0t3ZUNYV1g2bmktX0k5azQxd3hFMmpNVDg0FIAAAAAAEgAZcHJv
+b2ZAbWV0YWNvZGUuYml6aHR0cHM6Ly90cm9ldC5jYWZlL0BkYXNsaQAKCRDfGHjm
+2cOyf7KOC/9/5NPmpyBKBr0ZcHP42VIS/88luyWf9qHttfw8dhhKuHIbqff3HwPo
+BMmpWp6WOLtamoAAAUVkrzs2UtFGBs0W8iECOax8Qr5IU3qKSj9IFK5umt2NkTMP
+6IFZ4UDWqZWZaH+2cWRdS/SgUJh3zxGIWJYkp2oV4yQQqKm/ZBRFC+ek2sI1bpoL
+qf1xesOtBsorKFPKaJEG+0uEsogxczukpTq474bocRhFWNhQ7skNKVLcwo3uxmot
+rxXPxj69RbIxhSPsQGYeq3+k/rEkptxng145iY11zalvizXzODVbjvjXWaewq+RT
+n401oW3TchjTq8j+2e+ZcWyQAuFW6HrfpSMdUPDx30LXPhUcN6ba48KXdM5Lxovy
+dGMixs94uPzYAQbGPK6LRRywXvMsEBtf+hihxzldDiuR8STTmtP+6YWsCiUOHu4C
+QcLFXbH+5SBwUH0GRkqj9oZQr8rOsQjVfFnnyt/1v0qO39/46WOMeL265K/Ra6tQ
+O36bn4SUD9OJA1wEEwEIAcYCGwMFCQlmAYAFCwkIBwICIgIGFQoJCAsCBBYCAwEC
+HgcCF4AWIQQv6nvbkXFwp7jnIAHfGHjm2cOyfwUCYs8CzTQUgAAAAAASABlwcm9v
+ZkBtZXRhY29kZS5iaXpodHRwczovL3Ryb2V0LmNhZmUvQGRhc2xpmBSAAAAAABAA
+f3Byb29mQGFyaWFkbmUuaWRtYXRyaXg6dS9AbGk6ZmZmLmNoYXQ/b3JnLmtleW94
+aWRlLnI9IWRCZlFaeENvR1ZtU1R1amZpdjptYXRyaXgub3JnJm9yZy5rZXlveGlk
+ZS5lPSRoSzlfdEcwdTdhcVV3Zkh2d3NLd2VDWFdYNm5pLV9JOWs0MXd4RTJqTVQ4
+LxSAAAAAABIAFHByb29mQG1ldGFjb2RlLmJpemRuczpzaWxzLmxpP3R5cGU9VFhU
+hhSAAAAAABAAbXByb29mQGFyaWFkbmUuaWR4bXBwOnMuc2lsYXNAZGlzcm9vdC5v
+cmc/b21lbW8tc2lkLTQ1MjE0OTk1NT1lZDhlYzA1ZDNiMGZjOTc3YjY3MTIwZDVj
+MTdlMmMyYjNmMDk4NmJlYzc4OGI3MGE4YjhkMzQ2Nzc4YjhkODMzAAoJEN8YeObZ
+w7J/SD4L/iUm43LYEZVG6G0RzfZxpP2L2JwHZCuMQGO364lmV5or0ZtQQERimXF3
+e+xCgqvx3Yb4nL6W0tVi75DFLJOBSnOshFnKXms/ufY065en9hiMBS+BmK6PlrO8
+6iwiefFMvSAlkmDp8KVqhOAB5P/i27C3Vd5uhLqRM1EEoWbgCxlOpaOnwBwNq+V/
+kiSaZ5o2HrDDGh+9ecpkEouel1H1qp+EvEL5BgreSLFG5OWDY0SNA6A4l5adM0u9
+PC/15DdCDRmJWcRUcb1Kqa19tuZezb3oPrVHVI75LhzKlf3eklDpDfrF8kgJGhvs
+hcaeFWifyFu73aloYivM3ZY8uMUz628MPBJ5n1ud1RkORYSbbfDsDqwekAWsBq7i
+WS1oymWMo6F/95DKFeJCzv2GMpZfWBLFvFH8/c7v+7LgboiwoTenlnZdAYaQMFsi
+mXfG4+M/iAI177aPPRuU+1Yc4XKG3UeIUVmZkw8oYzrfNaIGdGeMXiZ/O39Eoasx
+/a0NIxTLBokDowQTAQgCDQIbAwUJCWYBgAULCQgHAgIiAgYVCgkICwIEFgIDAQIe
+BwIXgBYhBC/qe9uRcXCnuOcgAd8YeObZw7J/BQJidalDMRSAAAAAABAAGHByb29m
+QGFyaWFkbmUuaWR4bXBwOnMuc2lsYXNAZGlzcm9vdC5vcmebFIAAAAAAEACCcHJv
+b2ZAYXJpYWRuZS5pZG1hdHJpeDp1L0BzaWxzOmMuc2lscy5saT9vcmcua2V5b3hp
+ZGUucj0hZEJmUVp4Q29HVm1TVHVqZml2Om1hdHJpeC5vcmcmb3JnLmtleW94aWRl
+LmU9JDFMUjhPTzQwYkw2NDA3aWZmMDBKOGc5b2QzWnk0bzMtREFjNk5melREU0Ev
+FIAAAAAAEgAUcHJvb2ZAbWV0YWNvZGUuYml6ZG5zOnNpbHMubGk/dHlwZT1UWFSY
+FIAAAAAAEAB/cHJvb2ZAYXJpYWRuZS5pZG1hdHJpeDp1L0BsaTpmZmYuY2hhdD9v
+cmcua2V5b3hpZGUucj0hZEJmUVp4Q29HVm1TVHVqZml2Om1hdHJpeC5vcmcmb3Jn
+LmtleW94aWRlLmU9JGhLOV90RzB1N2FxVXdmSHZ3c0t3ZUNYV1g2bmktX0k5azQx
+d3hFMmpNVDg0FIAAAAAAEgAZcHJvb2ZAbWV0YWNvZGUuYml6aHR0cHM6Ly90cm9l
+dC5jYWZlL0BkYXNsaQAKCRDfGHjm2cOyf1ZtC/9QQRWfVfBJwVV96P/bxqkQTlNU
+HZNzAJ3NLmY9VmwQ65Y6g6feVMPle+f6QGR1qg/7BfWre6ZgaIcp9wfQKwV8D2a/
+9EzdwLbE+XAy5NTdIaXriqUdE4A2Wj1ga3HqnO11JYOAcZS2I71ieQkYgiQnp1RK
+JZYXuJHXoi//fd6ZbrZxyM9lneKovac1qqb8nFM85E27H4kJ5k7kC9jdDzqeRliH
+Dbz7rubFWYsUrEER7uM8+V/fs+GNWsg/5YoEHIrrtmBjq1LCpu++r/Jtlp3/ik+d
+uRC/Z5Z2nypkrtq91p1gMBUkDqu5cTPywIZV5YNO4jaN+AdEJk1pB4plTJNa70vW
+9mSEHPgomcwjXRrO7jsJAaei1bkKgSY9fC6glvAmlNt4lzlKiOBzPmyxoq6GFv1J
+TGnd8kpkBEi+Xcenu1DmUCHcrq/2sFj9UtnonG71+Euhqmdqbx7jSSuilDyaULSC
+KZFixzL/s+YO0P8O4XbiOTNzdq9bCJwNDxvt8TmJA/gEEwEIAmICGwMFCQlmAYAF
+CwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AWIQQv6nvbkXFwp7jnIAHfGHjm2cOy
+fwUCYnWhUYYUgAAAAAAQAG1wcm9vZkBhcmlhZG5lLmlkeG1wcDpzLnNpbGFzQGRp
+c3Jvb3Qub3JnP29tZW1vLXNpZC00NTIxNDk5NTU9ZWQ4ZWMwNWQzYjBmYzk3N2I2
+NzEyMGQ1YzE3ZTJjMmIzZjA5ODZiZWM3ODhiNzBhOGI4ZDM0Njc3OGI4ZDgzM5sU
+gAAAAAAQAIJwcm9vZkBhcmlhZG5lLmlkbWF0cml4OnUvQHNpbHM6Yy5zaWxzLmxp
+P29yZy5rZXlveGlkZS5yPSFkQmZRWnhDb0dWbVNUdWpmaXY6bWF0cml4Lm9yZyZv
+cmcua2V5b3hpZGUuZT0kMUxSOE9PNDBiTDY0MDdpZmYwMEo4ZzlvZDNaeTRvMy1E
+QWM2TmZ6VERTQS8UgAAAAAASABRwcm9vZkBtZXRhY29kZS5iaXpkbnM6c2lscy5s
+aT90eXBlPVRYVJgUgAAAAAAQAH9wcm9vZkBhcmlhZG5lLmlkbWF0cml4OnUvQGxp
+OmZmZi5jaGF0P29yZy5rZXlveGlkZS5yPSFkQmZRWnhDb0dWbVNUdWpmaXY6bWF0
+cml4Lm9yZyZvcmcua2V5b3hpZGUuZT0kaEs5X3RHMHU3YXFVd2ZIdndzS3dlQ1hX
+WDZuaS1fSTlrNDF3eEUyak1UODQUgAAAAAASABlwcm9vZkBtZXRhY29kZS5iaXpo
+dHRwczovL3Ryb2V0LmNhZmUvQGRhc2xpAAoJEN8YeObZw7J/1wML/AlJqYj6jMvV
+VWF0YYLcL2zzogi7bvpIjKDOPYIKSMI1mKGYvz9M7CagsY/B/7FYX5ZaAwHV65xM
+j9bm7IUwtB7krxUs1MGRnN/lyAMdphyuC6k1RptMmYoAEQwLizg8rbiq0fq97o/P
+UVTWKpVzYart6g3Bfbm+Bya93IW2Wmx6hsKWxKT3Kvcrxb0Kj41aHtrbXe9N028P
+6/ujKzRpq+CaNvIAcArVwMRqIFYLKYMH0aQPjVqhRIW6b3hcZmza+ZmAc5bPcUSH
+zemvnPLKjlQVb0xiozG8EYTLU0z16NX1jwQao7HZyvTZSMj5ExDbqEPYH08apHEz
+JjiyoFHsCvWIWpt2kvE4TG9xdGhgTf6PnEF6RCVsMDK8aQSqDQImDG1XHZImrHDY
+4Dr6Adgk5PRkU8fEQLpJZBTWaH8HGtM+7F+nIFf2M9p28PZGSkIvKJaLDrT+eGoC
+4WA9IByrzvukOEr2dUM0EIuiTeArBDN7AZXkeC4+SAWpxfpNhJxyRYkDcQQTAQgB
+2wIbAwUJCWYBgAULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgBYhBC/qe9uRcXCn
+uOcgAd8YeObZw7J/BQJidX+UNBSAAAAAABIAGXByb29mQG1ldGFjb2RlLmJpemh0
+dHBzOi8vdHJvZXQuY2FmZS9AZGFzbGmYFIAAAAAAEAB/cHJvb2ZAYXJpYWRuZS5p
+ZG1hdHJpeDp1L0BsaTpmZmYuY2hhdD9vcmcua2V5b3hpZGUucj0hZEJmUVp4Q29H
+Vm1TVHVqZml2Om1hdHJpeC5vcmcmb3JnLmtleW94aWRlLmU9JGhLOV90RzB1N2Fx
+VXdmSHZ3c0t3ZUNYV1g2bmktX0k5azQxd3hFMmpNVDgvFIAAAAAAEgAUcHJvb2ZA
+bWV0YWNvZGUuYml6ZG5zOnNpbHMubGk/dHlwZT1UWFSbFIAAAAAAEACCcHJvb2ZA
+YXJpYWRuZS5pZG1hdHJpeDp1L0BzaWxzOmMuc2lscy5saT9vcmcua2V5b3hpZGUu
+cj0hZEJmUVp4Q29HVm1TVHVqZml2Om1hdHJpeC5vcmcmb3JnLmtleW94aWRlLmU9
+JDFMUjhPTzQwYkw2NDA3aWZmMDBKOGc5b2QzWnk0bzMtREFjNk5melREU0EACgkQ
+3xh45tnDsn880AwAmlIzYs0RqDgofVK2qomwiufi/ClVpI/QTIfrUf3L+XznXeC5
+Pj4882XPLd+023pafdf+ih9Q7TIwyBdxuQVZniZb1/WYT0LfYjOtOPImUpeuySUD
+FAOrxSHNTQ7pCT+2sX/Bz5uK3JMMgh2hKHwJdWab+44ragMPo6htxVMhOViIo5Xy
+E/J55TuqrSezDjnQingBZQYBbibHOG6gleGunHVelvtYadNsWjrMBhTvTigueUUn
+HVC59uyyuhLLfdHrK9nKA8l5lYnvod7qNJOYq7mQnOd2l63rm5T9YuS418p2ci+l
+SzHhhugm1PWHlmGqdVtbBNm/v3iSggK7Lzd0Bnrb59lcP0fDRiQBGzUIeM+mxnV8
+Sd+v5RPGnmYJXu0A3YdwvdLJ1YubejYZjMynTMnZmzltHA/g/iKgdWoR7Z3/LjRs
+j2j5mIEpwGlRmsGb4ZEHSWAXJs7ZtjzSrVbYwCZ33pxtrnuRAaHaJCFdVmMIG5mC
+2I/fxzcJPF6OLeV7iQHXBBMBCABBFiEEL+p725FxcKe45yAB3xh45tnDsn8FAmJ1
+bRMCGwMFCQlmAYAFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQ3xh45tnD
+sn9YjgwAnpzuJiD/WqVpx72l8kvuGc50IEZVaLl/DiGHG0P02F8DrNjtDNpn42ZH
+2Oi2vEr9w+WcAZp5uL7PI7x4qN8CVfKxAhFuOhZYL29Fe0mTYW7UDJF/kpU0PRTN
+4hmz3Hi/dTnKwa0+nY57KF/sIpnocrnDXMF44zqohezR80abym8EHMZFomYyWLOo
+wpxz9q3ld/+sjl4zD0uUkECilU1TQD508WO85fpXle2hOGvSWi8bRSlNfjNg9+/7
+PCrV1z8JN5VAAvGviEMpnAsTSPbGmSNJxcNKD3NveYag87/tKBROEd1VWELT9ReM
+/jRzVFbbF+YNPIf3YIabOpGAJl0axffetVyTlzlHjX0jnvtHLi7nwDAJvVQB70wo
+fVTIR+8J9LOwaEMmzS9ghqDT+aeXmrk4Kuet9stpQjGFJSJZ1dD+83Amu1Ip+BRE
+eBv3EMrEz93CMQCYGzOR/XezAda8OlblTWcyyIdGS31CwCHxThz7VHRcBSni4hZZ
+q0Rmceq8iHUEEBYKAB0WIQSWBvx0n84WNgcj1K2l6UAQw6ZCrQUCZMQjvAAKCRCl
+6UAQw6ZCre3AAQCtEovfpCXUjiTypjnzCpke9rHIBnAVODTm93AAZ3BS1wEA98iA
+skdHe9liLwLn9lA1BB3TRqZ6kjWMulKtp7U8zwy0G1NpbGFzIDxzLnNpbGFzQGRp
+c3Jvb3Qub3JnPokDEgQTAQgBfAIbAwUJCWYBgAULCQgHAgYVCgkICwIEFgIDAQIe
+AQIXgBYhBC/qe9uRcXCnuOcgAd8YeObZw7J/BQJkQW7VPhSAAAAAABAAJXByb29m
+QGFyaWFkbmUuaWRodHRwczovL2NvZGViZXJnLm9yZy9zaWxzL2dpdGVhX3Byb29m
+mRSAAAAAABAAgHByb29mQGFyaWFkbmUuaWRtYXRyaXg6dS9Ac2lsczpzaWxzLmxp
+P29yZy5rZXlveGlkZS5yPSFkQmZRWnhDb0dWbVNUdWpmaXY6bWF0cml4Lm9yZyZv
+cmcua2V5b3hpZGUuZT0kZGpVa293djdsNHlGY1hMYXV5aUJZc2hwQ2h1TWtEOC1t
+Ry03WV9WX1M3QS8UgAAAAAASABRwcm9vZkBtZXRhY29kZS5iaXpkbnM6c2lscy5s
+aT90eXBlPVRYVDQUgAAAAAASABlwcm9vZkBtZXRhY29kZS5iaXpodHRwczovL3Ry
+b2V0LmNhZmUvQGRhc2xpAAoJEN8YeObZw7J/AaIL/0TLONGoB6BBR0/ET3Zh11Uo
++3ED8S5MOqdk27GTlah/s03RFnETyKBSHVoyqW/oIAQl88QRrdAzuak3OpZuoxRX
+Ras7mVh8Yv71QnVmvex+MmH0MPfWEP73qKdSMefatKJopVR9g0fhSeWGImmR1E4Q
+37f2ORzx2he/0obcwVtWRPupZhQ5iVsseRTQOPmgt82+LV7/dQPbOGw9oa9fizcG
+7ZtI4hkJn8SSNzRwt3xy/I/rF37RAQbwqxVI+EZ9bkjbssAy3QBRVtp8vJZABrcM
+F7VCtLKrWiofW88LW7KnVgSVUcIZ/omXCOOia/Q5jdVMKEAHxvS5rKz9EgH4b9t+
+94gFa4yp2CUXWlzZldyyOf6OWjYdTMMPLQmmghhsIu91aIK4DM8MEg7fsgDm+X8F
+bRG597KjJRrFCxcrEpqn4RjiWa+une15A6FNjMfs4UAxUyz8xakjog5aoEu8JvDp
+LipXM7/sO7p7zxDZU9dAypgsC2XiUQDqOW5hKwd224kDDAQTAQgBdgIbAwUJCWYB
+gAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBC/qe9uRcXCnuOcgAd8YeObZw7J/
+BQJkQW1WOBSAAAAAABAAH3Byb29mQGFyaWFkbmUuaWRodHRwczovL2NvZGViZXJn
+Lm9yZy9zaWxzL3Byb29mmRSAAAAAABAAgHByb29mQGFyaWFkbmUuaWRtYXRyaXg6
+dS9Ac2lsczpzaWxzLmxpP29yZy5rZXlveGlkZS5yPSFkQmZRWnhDb0dWbVNUdWpm
+aXY6bWF0cml4Lm9yZyZvcmcua2V5b3hpZGUuZT0kZGpVa293djdsNHlGY1hMYXV5
+aUJZc2hwQ2h1TWtEOC1tRy03WV9WX1M3QS8UgAAAAAASABRwcm9vZkBtZXRhY29k
+ZS5iaXpkbnM6c2lscy5saT90eXBlPVRYVDQUgAAAAAASABlwcm9vZkBtZXRhY29k
+ZS5iaXpodHRwczovL3Ryb2V0LmNhZmUvQGRhc2xpAAoJEN8YeObZw7J/dTcL/3Qx
+g/pZ6syoO8y4U34wGExBFQRKknpZURr5DXyethMlKh+x/CVZ/NUZFhlzs37e71fq
+rw0Yexcgro8676x6Tq/LX982MGO95sceeHz3hiiqw93LgZLw4KdcIg3JLL2VwywK
+Ls5JIPxjF/zXa2++QV9euPrvWD6PI0fZIFghVD93S4Qfl9XpJyJ6IEC04OKf7klv
+/8FqFqKuRBPPsLXPH3VckC3VrcsNUPppD3ZUHdpQRn31IOkDWC5t2z0w5kJutSSZ
+1HD/u/04lElPAL1SDBk7bYzwMs+TkJ7oRgZTCwA3e8Ikfzrt032WRO6PAtX4cxeZ
+/OtkuokSmSGhtXF9lo64qCOkwfw0uJIgTFV9k2FIB4WpjdaYs0rCaCpyKSp3Yg6a
+GLq6pRuNbtfaY8kjUAfDOp9+NBgocAojoqd2nK+/wroo81fps5bM3N0V1qNgsTQL
+c3Ar1nK4aPdxBLwHtg99/S3hJA3j/yG+gQXr+3ewH2xcS821QTLXpmd00mP+kIkC
+0wQTAQgBPQIbAwUJCWYBgAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBC/qe9uR
+cXCnuOcgAd8YeObZw7J/BQJizxBbNBSAAAAAABIAGXByb29mQG1ldGFjb2RlLmJp
+emh0dHBzOi8vdHJvZXQuY2FmZS9AZGFzbGkvFIAAAAAAEgAUcHJvb2ZAbWV0YWNv
+ZGUuYml6ZG5zOnNpbHMubGk/dHlwZT1UWFSZFIAAAAAAEACAcHJvb2ZAYXJpYWRu
+ZS5pZG1hdHJpeDp1L0BzaWxzOnNpbHMubGk/b3JnLmtleW94aWRlLnI9IWRCZlFa
+eENvR1ZtU1R1amZpdjptYXRyaXgub3JnJm9yZy5rZXlveGlkZS5lPSRkalVrb3d2
+N2w0eUZjWExhdXlpQllzaHBDaHVNa0Q4LW1HLTdZX1ZfUzdBAAoJEN8YeObZw7J/
+l0MMALLTO4OycZTBEuhm66itGT8Az8xzj1y/A30DUBA1QoQ2vtcaFXeZe/pP/qUq
+wlXmgWgpIUu8vKvY0OzNq0lt/WPGazdYdDFZJARcig+vmVMRPasNqU/pi5QPkpjj
+as9EtwnHrn8Fh+lklw4Cty0FIcCjPVv43y80k9fZt4MyF1cktG0VUO6ASC7ahHW4
+MEQYqB6D9IehQdMLOEDAazVadanSXMAScN0Pnkxvd1FoS/Jubk6lLMMwul3Oihyy
+nZJQtM9GgP1l4p1xpBO3AoK2xPvAaqCKuMIKFY51mK5+/rxU3xsZMyRJQWzy2p+s
+m0RV/libGmG5bGH1S+UTd3BcR747JO4C9QkhXfhAagsA6iz0z2mXNxhaGhuKKv0o
+orLU//ubYfJaMLR2sWRehkuWVlhAMHZ0yF+kFW5Wb/qOAm5tf8ILX2XjbrU03MIY
+v7KMAY++6dB2SYJZTtOBDIjKmCyZisYFwszttb740gL1KsAxM6xsHpIOfUaljZu8
+WSV6hokDbAQTAQgB1gIbAwUJCWYBgAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYh
+BC/qe9uRcXCnuOcgAd8YeObZw7J/BQJizwX5mRSAAAAAABAAgHByb29mQGFyaWFk
+bmUuaWRtYXRyaXg6dS9Ac2lsczpzaWxzLmxpP29yZy5rZXlveGlkZS5yPSFkQmZR
+WnhDb0dWbVNUdWpmaXY6bWF0cml4Lm9yZyZvcmcua2V5b3hpZGUuZT0kZGpVa293
+djdsNHlGY1hMYXV5aUJZc2hwQ2h1TWtEOC1tRy03WV9WX1M3QZgUgAAAAAAQAH9w
+cm9vZkBhcmlhZG5lLmlkbWF0cml4OnUvQGxpOmZmZi5jaGF0P29yZy5rZXlveGlk
+ZS5yPSFkQmZRWnhDb0dWbVNUdWpmaXY6bWF0cml4Lm9yZyZvcmcua2V5b3hpZGUu
+ZT0kaEs5X3RHMHU3YXFVd2ZIdndzS3dlQ1hXWDZuaS1fSTlrNDF3eEUyak1UOC8U
+gAAAAAASABRwcm9vZkBtZXRhY29kZS5iaXpkbnM6c2lscy5saT90eXBlPVRYVDQU
+gAAAAAASABlwcm9vZkBtZXRhY29kZS5iaXpodHRwczovL3Ryb2V0LmNhZmUvQGRh
+c2xpAAoJEN8YeObZw7J/DUEL/ilBrutKMPEdU6QwtayjwfE1nBwhRxK6LNZaNe5t
+EpH1YUS+Kg21gdVFhkSD34UNwpdqE2TdeRe1cLrm18+QDgRzaM+nkQzZmYSTFEa/
+q5IVudDqrdNAimYyJsUBDRVErBOKPDlIrcsZ9FYYwXDsv3fANBhGlMLC1ahQECu6
+bP5Y7Lx+GaAvfywoGAqZkqUmfOAvYvb2pCFQSZxc9TNua6iisyVgiuvNXt/GnrEG
++lLBRlPfG+MdXpYOTkxi9xuszbvAaD6Ec3TKj66fp0tFQrwGtmuGyJcKxv3pcA7T
+Jcv8rtaAAqYQQ8G3U2GPIfche1ty3Q8ECSj9faKw9gqJO3WNpyiryB/2Ig37No+4
+3zzdCrHE0NsHDGwTBDRAx1L8rxWBZtLvTKquQntDmXj+M/xLb8nZ+x9JZcVf+3QE
+o2q7uOaeqcOeJWOTLEdhjR4ETumxPTAvyszgEzwPH5foZBQXUJbXeoIonqm4ywPg
+rsIfyXbsoOIFOqiwph+M7ET684kC0gQTAQgBPAIbAwUJCWYBgAULCQgHAgYVCgkI
+CwIEFgIDAQIeAQIXgBYhBC/qe9uRcXCnuOcgAd8YeObZw7J/BQJizwQSNBSAAAAA
+ABIAGXByb29mQG1ldGFjb2RlLmJpemh0dHBzOi8vdHJvZXQuY2FmZS9AZGFzbGkv
+FIAAAAAAEgAUcHJvb2ZAbWV0YWNvZGUuYml6ZG5zOnNpbHMubGk/dHlwZT1UWFSY
+FIAAAAAAEAB/cHJvb2ZAYXJpYWRuZS5pZG1hdHJpeDp1L0BsaTpmZmYuY2hhdD9v
+cmcua2V5b3hpZGUucj0hZEJmUVp4Q29HVm1TVHVqZml2Om1hdHJpeC5vcmcmb3Jn
+LmtleW94aWRlLmU9JGhLOV90RzB1N2FxVXdmSHZ3c0t3ZUNYV1g2bmktX0k5azQx
+d3hFMmpNVDgACgkQ3xh45tnDsn/oSQv+PhwDVpYgAviMduLMZ8wLMNUYHsGXTwpJ
+olCmnc/aMpB9GBM7FdniI2JiAP1Ln45QjABG0TEOrf+/FkSDVcYEz021VRpq3rPs
+q2y5PpVc2PA0Y7pE6kpNE2hvd8jHJDFVzyukJInNiLXSbWk1aNes0yYACcXLKnrz
+mkBllEaEsVohsfIzQVKWCypZHQbm1WOhTsh87jRWxA0bs7ryK0jPfx4oxOFqB8M2
+LkM84hODNrnoXyoLIMcJpT9gsWuoVVzWhwQzHg26ihXO8IDabIcoszJIZ2z2DBW2
+wTKqFMTMN6ak09OrTbI+g5Xy5rBaCHyCLHstXZt0i5iCNkwQQG3BgYA7m1eIjqKG
+ykWQ42ACq8SJWp8L1eslaJVGrJSClCSgd8rpIqcXZLSqNwdlE6NxtQpn0cUrJihg
+7X+oRbSFzHUno/ktn08P1gn9EE7vogLHMRMD27VOD172NyTu3iivEVnYcpFGfiRV
+k0PGIwna+/DFJNuG7agUJs2Fv9IFgufpiQNZBBMBCAHDAhsDBQkJZgGABQsJCAcC
+BhUKCQgLAgQWAgMBAh4BAheAFiEEL+p725FxcKe45yAB3xh45tnDsn8FAmLPAsqY
+FIAAAAAAEAB/cHJvb2ZAYXJpYWRuZS5pZG1hdHJpeDp1L0BsaTpmZmYuY2hhdD9v
+cmcua2V5b3hpZGUucj0hZEJmUVp4Q29HVm1TVHVqZml2Om1hdHJpeC5vcmcmb3Jn
+LmtleW94aWRlLmU9JGhLOV90RzB1N2FxVXdmSHZ3c0t3ZUNYV1g2bmktX0k5azQx
+d3hFMmpNVDgvFIAAAAAAEgAUcHJvb2ZAbWV0YWNvZGUuYml6ZG5zOnNpbHMubGk/
+dHlwZT1UWFQ0FIAAAAAAEgAZcHJvb2ZAbWV0YWNvZGUuYml6aHR0cHM6Ly90cm9l
+dC5jYWZlL0BkYXNsaYYUgAAAAAAQAG1wcm9vZkBhcmlhZG5lLmlkeG1wcDpzLnNp
+bGFzQGRpc3Jvb3Qub3JnP29tZW1vLXNpZC00NTIxNDk5NTU9ZWQ4ZWMwNWQzYjBm
+Yzk3N2I2NzEyMGQ1YzE3ZTJjMmIzZjA5ODZiZWM3ODhiNzBhOGI4ZDM0Njc3OGI4
+ZDgzMwAKCRDfGHjm2cOyf+tmC/49Gj5whhg6NM7gjkzGrkdG2gFe4CYeGrqxh5sr
+VGo6iFbLug+fVF4N5ThBT/weTyVTCwZ99E+vKGK6JmrizMlgis0kUB/ne7N+Gn15
+THmqXPv5KwiNqUAjRfE0OluYQ6RKe6irvRuJlYqdM82RL/z1BLhvHSUIRFJFeBNn
+QWe92EdpsC4AhxKbIsIqy9KeS9CQkyP3K/FIf9tpxT1ne/xNfY0bMqWGMKouC0zQ
+43FbdBmCt5qNpT+Hfgd2uVu2SZqXTBQlhnqlHiySzOtb2eP+pEMbMB2ms6YBzE7U
+gnGeny8RtpIkkIROIpy+pZObX65SbZLCFwbebqmIRCLDZLxJ6mB63WW3A8Jzvt49
+fvlnd/o9e7h/GB1xgWQP3ko8FIhJ2kBEl6ErotxdQCRvjqPE1qGDmYrt6w+DOZmP
+G3/jd+E1/fUca16zm1HCdn5yDzOrhoeKnJzokSjQtcuMXJ+bLRGwGlj00ZYkEWUE
+sncVNw41PPC92Zh26EogFgGNqFKJA6AEEwEIAgoCGwMFCQlmAYAFCwkIBwIGFQoJ
+CAsCBBYCAwECHgECF4AWIQQv6nvbkXFwp7jnIAHfGHjm2cOyfwUCYnWpQzEUgAAA
+AAAQABhwcm9vZkBhcmlhZG5lLmlkeG1wcDpzLnNpbGFzQGRpc3Jvb3Qub3JnmxSA
+AAAAABAAgnByb29mQGFyaWFkbmUuaWRtYXRyaXg6dS9Ac2lsczpjLnNpbHMubGk/
+b3JnLmtleW94aWRlLnI9IWRCZlFaeENvR1ZtU1R1amZpdjptYXRyaXgub3JnJm9y
+Zy5rZXlveGlkZS5lPSQxTFI4T080MGJMNjQwN2lmZjAwSjhnOW9kM1p5NG8zLURB
+YzZOZnpURFNBNBSAAAAAABIAGXByb29mQG1ldGFjb2RlLmJpemh0dHBzOi8vdHJv
+ZXQuY2FmZS9AZGFzbGkvFIAAAAAAEgAUcHJvb2ZAbWV0YWNvZGUuYml6ZG5zOnNp
+bHMubGk/dHlwZT1UWFSYFIAAAAAAEAB/cHJvb2ZAYXJpYWRuZS5pZG1hdHJpeDp1
+L0BsaTpmZmYuY2hhdD9vcmcua2V5b3hpZGUucj0hZEJmUVp4Q29HVm1TVHVqZml2
+Om1hdHJpeC5vcmcmb3JnLmtleW94aWRlLmU9JGhLOV90RzB1N2FxVXdmSHZ3c0t3
+ZUNYV1g2bmktX0k5azQxd3hFMmpNVDgACgkQ3xh45tnDsn8T/AwAkA2/2uLfZCQE
+jBZWKTJmZXO7XYSsaABcZPZYyjeUkwdRzFqX61cFD2i3R8kZ7UAablHunDYQmkRe
+5S0Enq7GgxEE+qQXFyFJprPpI09gedkigsF4mGrGKooG0Kf19PH2yrZ6klERmmuE
+mqbkeJUxh0iBM4snISbzFbRnUtMWS5hXbiojggqQMen7Ht3YF8Sv/Q/MkGfZBMUR
+XmwVWeDSeTXqPqcB1QloxFeDvFxNYNcq0NdhgUHFTDfSHJT/IF6bIuG+yALqgLAb
+GBvAFf9PcyHw0HhD/wcXjLYPRBFdi80yQhoKC0tdOwFsJLv2zHYf68nKIiKvdTJQ
+6hz8tpy23L/usYR/3zzAk0xsPGubHKiSio2tKU/dgBK8QElt2krhzxI1DtIDBHhk
+FmFV9L4vlhXLmrXt8seubOpecDK97YQ4k5nfB3kGqxARTcbeihIPeibTZznPWPax
+EEoYue0OHh5hIiyTQpnrTVp1Y/Q1F90MdWWxi64UiGYrcYJpCdCciQP1BBMBCAJf
+AhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAFiEEL+p725FxcKe45yAB
+3xh45tnDsn8FAmJ1oT+GFIAAAAAAEABtcHJvb2ZAYXJpYWRuZS5pZHhtcHA6cy5z
+aWxhc0BkaXNyb290Lm9yZz9vbWVtby1zaWQtNDUyMTQ5OTU1PWVkOGVjMDVkM2Iw
+ZmM5NzdiNjcxMjBkNWMxN2UyYzJiM2YwOTg2YmVjNzg4YjcwYThiOGQzNDY3Nzhi
+OGQ4MzObFIAAAAAAEACCcHJvb2ZAYXJpYWRuZS5pZG1hdHJpeDp1L0BzaWxzOmMu
+c2lscy5saT9vcmcua2V5b3hpZGUucj0hZEJmUVp4Q29HVm1TVHVqZml2Om1hdHJp
+eC5vcmcmb3JnLmtleW94aWRlLmU9JDFMUjhPTzQwYkw2NDA3aWZmMDBKOGc5b2Qz
+Wnk0bzMtREFjNk5melREU0E0FIAAAAAAEgAZcHJvb2ZAbWV0YWNvZGUuYml6aHR0
+cHM6Ly90cm9ldC5jYWZlL0BkYXNsaS8UgAAAAAASABRwcm9vZkBtZXRhY29kZS5i
+aXpkbnM6c2lscy5saT90eXBlPVRYVJgUgAAAAAAQAH9wcm9vZkBhcmlhZG5lLmlk
+bWF0cml4OnUvQGxpOmZmZi5jaGF0P29yZy5rZXlveGlkZS5yPSFkQmZRWnhDb0dW
+bVNUdWpmaXY6bWF0cml4Lm9yZyZvcmcua2V5b3hpZGUuZT0kaEs5X3RHMHU3YXFV
+d2ZIdndzS3dlQ1hXWDZuaS1fSTlrNDF3eEUyak1UOAAKCRDfGHjm2cOyf11LC/43
+AUh1YO7yDyoMCoGgqxdcXhZ+nneT+JKw6vCPvJdCjRv45XIDmQaQ7wgiNtl/I5kN
+RtIbFZ24/u6NWfv6oXxE3egTSoy7qTct7Faw8gFSsvy9zshHH/g4sg4qgRU2nFYF
+XiObqvoxU5xq2sdSNR3abqJUJQ0KinHPa59wZkKcvn5F5ZT/+6WjUueTr+jmVVoe
+zOU2jhSvr14J6lsne4WRnLqXco/0VeS0vjMbBRX/MYI0mQ4w/8YyrUTMUMAZQVLQ
+1oO7V34y1a8jBqeEwnSm09JW8N8VLII6rJh3qUVDrWzLB7LQ6NRkXrHjRjjLSLcU
++mKKPaai4DGZjX7ruQ4GT1+zbP9vvmfsFTnfM0HQTd0GSFFQ/XTBiaadKiX2N75v
+ANL1slDWr09vvW5HosE1Tuma9U+SRR6DoVnIIFy7q8uJqQavsSK5sdbhk47W71s4
+IAVTy3u40xawor2cn8N8i6q6mfOJQOqULaRlP6uzVFJn3JEwFHuKHvgIpGf3nd6J
+A24EEwEIAdgCGwMFCQlmAYAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQQv6nvb
+kXFwp7jnIAHfGHjm2cOyfwUCYnVqlJgUgAAAAAAQAH9wcm9vZkBhcmlhZG5lLmlk
+bWF0cml4OnUvQGxpOmZmZi5jaGF0P29yZy5rZXlveGlkZS5yPSFkQmZRWnhDb0dW
+bVNUdWpmaXY6bWF0cml4Lm9yZyZvcmcua2V5b3hpZGUuZT0kaEs5X3RHMHU3YXFV
+d2ZIdndzS3dlQ1hXWDZuaS1fSTlrNDF3eEUyak1UOC8UgAAAAAASABRwcm9vZkBt
+ZXRhY29kZS5iaXpkbnM6c2lscy5saT90eXBlPVRYVDQUgAAAAAASABlwcm9vZkBt
+ZXRhY29kZS5iaXpodHRwczovL3Ryb2V0LmNhZmUvQGRhc2xpmxSAAAAAABAAgnBy
+b29mQGFyaWFkbmUuaWRtYXRyaXg6dS9Ac2lsczpjLnNpbHMubGk/b3JnLmtleW94
+aWRlLnI9IWRCZlFaeENvR1ZtU1R1amZpdjptYXRyaXgub3JnJm9yZy5rZXlveGlk
+ZS5lPSQxTFI4T080MGJMNjQwN2lmZjAwSjhnOW9kM1p5NG8zLURBYzZOZnpURFNB
+AAoJEN8YeObZw7J/Kb8L/Rhva+cHBUgeLWD7iSueBrV49scAVQMWSGF3uVjT9LPz
+hFH9BIiHAO7LXRAffoHoqVdi5YHVMXZ7AK51cg3nvstdfJT49YjIt6dbgrjQsT2J
+kWMbf34kIpc358wD/fWBfXPCHgtxUVMN/TY3Qb7R77u9EyH6CZ7kLtGNRCf0XSyC
+IhkvOCswJamCBk+GfJPx+y2F9KC3VqqEUQUPZiM8vzmKwZRdUlKcXoJIgKz6k+fu
+c9Fw+IBZq8ZFKrGYMcV+i3IxzhUAgpREm0AoE1Qjl1iGyOkJ+g2htpv80EdRMEiX
+UqdDa+5dkcP9wRUaPvFC+RfP8AW9pzbvXj+WXh4k098sjJFMM6bQHCI7LgMS4lhK
+9ltCy1Yf5mh5ZjNxYDk288Lqtw8bXVpwUAXk65BAXceP6wvxmG6r0olZzS8kivPL
+JTUZPXkEi8nEHIUXO9weoi5jIM2QvoeM5mb5cE2YCbwmjwIANZNs4ICdps3dMOhB
+Oo+r+YJ2Sf9xCfkZsCdoqIkC1QQTAQgBPwIbAwUJCWYBgAULCQgHAgYVCgkICwIE
+FgIDAQIeAQIXgBYhBC/qe9uRcXCnuOcgAd8YeObZw7J/BQJht3+AmxSAAAAAABAA
+gnByb29mQGFyaWFkbmUuaWRtYXRyaXg6dS9Ac2lsczpjLnNpbHMubGk/b3JnLmtl
+eW94aWRlLnI9IWRCZlFaeENvR1ZtU1R1amZpdjptYXRyaXgub3JnJm9yZy5rZXlv
+eGlkZS5lPSQxTFI4T080MGJMNjQwN2lmZjAwSjhnOW9kM1p5NG8zLURBYzZOZnpU
+RFNBNBSAAAAAABIAGXByb29mQG1ldGFjb2RlLmJpemh0dHBzOi8vdHJvZXQuY2Fm
+ZS9AZGFzbGkvFIAAAAAAEgAUcHJvb2ZAbWV0YWNvZGUuYml6ZG5zOnNpbHMubGk/
+dHlwZT1UWFQACgkQ3xh45tnDsn9PzAv/WJERGb3uRMKyh5dlhsg6+LttnkjHLcK+
+hQd758VrCirHOTTg9U3Pr/PIPclRfEfk0q5YIcfm6tl5Du0CBYcQkQesZKaLy9KU
+WOq2QCvNy2SqNwcpDtKogap/H82892mFtRO5+Lap7G08cXmSjJNMN83h9w5iGI4g
+ghPZFEr9lGmz4ichUEXqr+VkJ2lIT5hdeBZitoIqB0/547BRec/dApkv/+Hd06sZ
+xynZDXsdQXqNBzpYgdDm25p8kq95CFnht0rBBCfhwG22kSUtI8VMPow/PJVRDRKn
+GLlMhhy+x/LFoGZQHDXXApbv0RB+93vbBccm2FpkKwGpdA4DcgChIsRiDL/ZnAPi
+mPe2exaTKv6UkVFbPbj0s1K/au8msRnr2oLzTkUVWv5OdkBInj4ntNiJCZKBnCdH
+UPwsChLVIz1gcyh0OHIGdUGY9VExcFgYBuEgzVsX/FFb5APlfiPa+OXc7/0g9hDc
+o2jDxcgrCEGhU1U1TyGk1PCwQxCS9SlmiQI5BBMBCACjAhsDBQkJZgGABQsJCAcC
+BhUKCQgLAgQWAgMBAh4BAheAFiEEL+p725FxcKe45yAB3xh45tnDsn8FAmG3fkYv
+FIAAAAAAEgAUcHJvb2ZAbWV0YWNvZGUuYml6ZG5zOnNpbHMubGk/dHlwZT1UWFQ0
+FIAAAAAAEgAZcHJvb2ZAbWV0YWNvZGUuYml6aHR0cHM6Ly90cm9ldC5jYWZlL0Bk
+YXNsaQAKCRDfGHjm2cOyf+eXC/0TmlkUhH996p6/33ybxk1Wx3dL4qtD1IMhGTcj
+bTUfPjbOWRV9mqYONTAA9Kg8cNzhAwwXaEEztCVTFX7/Hqt6fpPc3tTwFFfgQO6C
+cRaMgbUhSHg0gN4MatbY12mWrMJNVScI0XLNXRmP6Ow8G8RzpYl1XdLPYoWbmL7e
+iCk3yO8WiFkpFpDkO/im7AKI3m3XLOwEGn424P4qW6P4LmRC8XV40qIDZzrh2Dxq
+XMui+hVLN41xYkaZcI5Y0LRW227hkqMFypkh3Dpaimz0QosnwtgQlm/+J8zMHDyj
+k2oLYpEJNaGlAGdEbDbQ9piB44ZbB1jHoIsFZSAAydr5uV2ClCN/jLr/YhtWsebr
+yArofcC0gF2caUhr/Vlnh1WRNncn/BVdQ5a06yJ8zqJUz+oXHANVfJU+N11PZRHz
+tmogWXmeALm4H2UIZmBfgorb056TxIhGOP2Rr6yykKLGLVmazAiPkLFiWJjS47H9
+1s4aMZVn7qhaHhFt18JvHezXciaJAtUEEwEIAT8CGwMFCQlmAYAFCwkIBwIGFQoJ
+CAsCBBYCAwECHgECF4AWIQQv6nvbkXFwp7jnIAHfGHjm2cOyfwUCYR6NhTQUgAAA
+AAASABlwcm9vZkBtZXRhY29kZS5iaXpodHRwczovL3Ryb2V0LmNhZmUvQGRhc2xp
+LxSAAAAAABIAFHByb29mQG1ldGFjb2RlLmJpemRuczpzaWxzLmxpP3R5cGU9VFhU
+mxSAAAAAABIAgHByb29mQG1ldGFjb2RlLmJpem1hdHJpeDp1L0BzaWxzOnNpbHMu
+bGk/b3JnLmtleW94aWRlLnI9IWRCZlFaeENvR1ZtU1R1amZpdjptYXRyaXgub3Jn
+Jm9yZy5rZXlveGlkZS5lPSRsSU1YUkUzMXJlaG1iNWc1N2dRYmc4SjNya05aSkw1
+RXNlWjhuUWw1V3BzAAoJEN8YeObZw7J/+GML/0aPvBgFFBXd7LKR/Hyf0WQ1eUUL
+/pkELt/AQRGwOaAEyUnfmKtqTI+qVeD7UNpcDHdjwchBmkfG5W/N8Caavow7jCdu
+0px+BA5WWO7snDW3HOzFKIRgDtajtljX69Z9Wh9aYsO7sYapSMCsmIx7h4SxOxSK
+oh6nZOaN98dzx9PcyjbSneToGyYDb+5nzTiYWiaE8LQAVkdZeFAdSN4UDenVXd2R
+cLozZVQjYwhk+fVDzlcj9HoieEKpSEpUp+dWZJob7H4z9AVLieYwzkfFmApG9XaJ
+wZPx8u06c82q+3ZHXd0HLd/cQFCSL558pmhp8HhnDMrYipRoJ3tX7SqXXrhi3gA9
+1K89I3xhmpiz9dq2B/Qdv8Ml+D9qQNIpBWqns2zWkWharqNmWTxmAsTPY2rEMm0c
+81dWXZ61Lra69A9XXUQg52xRNS1AKF8C0lMehSdBu2a8+HlZHADhCjLRaljxvhUK
+vqTaL7/f5a6fN6D0wvPOXgYP5+u7Jv8NnLfO74kCoAQTAQgBCgIbAwUJCWYBgAUL
+CQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBC/qe9uRcXCnuOcgAd8YeObZw7J/BQJh
+HolFmxSAAAAAABIAgHByb29mQG1ldGFjb2RlLmJpem1hdHJpeDp1L0BzaWxzOnNp
+bHMubGk/b3JnLmtleW94aWRlLnI9IWRCZlFaeENvR1ZtU1R1amZpdjptYXRyaXgu
+b3JnJm9yZy5rZXlveGlkZS5lPSRsSU1YUkUzMXJlaG1iNWc1N2dRYmc4SjNya05a
+Skw1RXNlWjhuUWw1V3BzLxSAAAAAABIAFHByb29mQG1ldGFjb2RlLmJpemRuczpz
+aWxzLmxpP3R5cGU9VFhUAAoJEN8YeObZw7J/+RkL/10AHiebFztglUSi0/2auWZ9
+4SCX/n6sgwtcUD0SOLUEQjkXlhgGQJy3UfS6VCgNl0fkfkf5E29g9tY4rQS0dL1D
+3PNChFsiF6b9XymIqrCz5Kvgt+6RjC1uFTl32yhsmbwL61E3mn9e1nlXZcpv2T2i
+xLeU71kNRQR3+lkvJdbu2Fli750n6AS0iMboeLTzLZHK9Ai0CZqZ84O8lvEBCSNL
+WCg8OoLfsvTs8XiAiBvY+Bagc5AKrM5tLwdrm1eiVNtHOZNZ/EXEfYMQ23uh02Li
+znd+HZMo9URKB9mbtZilBl2O3qorQyhs9lQNwUgrATXxJMUnrXmFy73LLAqT6MX3
+iLPMiA3Da1FHGxVKhcHu0PuWd3vyOqnDUQ7DEg1z8X4NtMOszvMCBH5I+pe7kDQt
+jsiGIDaFl0v0bWOqIfq+d4hDSC3o/cAnNRLnsU5GYhI+YESRb80qBD+UKBvvm2eD
+MXNo1/weVq29g0k7Ozt6y5EAvrTMcQeve1qXcQDe/4kCBAQTAQgAbgIbAwUJCWYB
+gAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBC/qe9uRcXCnuOcgAd8YeObZw7J/
+BQJhHmJSLxSAAAAAABIAFHByb29mQG1ldGFjb2RlLmJpemRuczpzaWxzLmxpP3R5
+cGU9VFhUAAoJEN8YeObZw7J/QVEL/3YUztd5V/JQPHyAezqTD8mEVNu4bkLd1E6U
+kwFb5e5wvcNndKPRhdL8JFtHGo/vnrglkpoY7KqLPKq2z7NCQbsR5YT5iWIlfCi1
+Duwh207l/wxzohlDuYPe00AFnm/B19eFjFLKI7/dixOkfZhNDXgtz6BRiYG4Dpmq
+cnwYR2+xqul0cQ92+6IApVsdNzAyuHXrYyRtVXw1WxG9H3XmzuZl1fNRhpENsc0r
+WAclp5F2KD3ZP58zL6N5stKvKGbfEdoAjoZVSjuFR5K3tYHH6gYAccyxuLgYwRhw
+5HWkQ4dB8Xv5vV2+v2SQgK39NYufgVX1YBM5O2YXFRBoDc0yCP20PQ4XxbtgdcT6
+rMemuYSEWmFarSwlxHsHMreoSbwxVHrfBySwM4rqoXqyfaTHnVLysF6WNjD7h7d7
+e0rXL70aD9BKwvweQKJBhoCGTkwt3IOEhiPawD59m4EcbXji8YCs570mK2uoc4kp
+JjuF1DlS1L1wd/unYaKIinbm34Q+34kB1AQTAQgAPhYhBC/qe9uRcXCnuOcgAd8Y
+eObZw7J/BQJhHl4PAhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ
+EN8YeObZw7J/yzoMAIUUWbESdqwWbIe0e3VviEmrW7kArLRV9AFfVYvnA+OGObOx
+FYcDSY2vH6kQetRLlYV19OLM91N0/Oqh/wwlmpzFrLjXkRG+aNu5IKRh4noythO1
+CH2BUo+n/JeodpVb1x06EYeZQVQ2ASche0hzzw4Zx2P0z+6Mg/IbK/YlUonDvTrI
+Ioptt8InjXiDUo3D9n5Rzgn2zPf2c6gF79IbBZl0fBN+V/La1O+lOdhT3yajb21b
+Hr9SmEdtvs5GT1WSpEpJDtZGf0Y5Kv0UGIrFn5dYJFzcRjHWbuB3bB/STHVVgoAS
+ueLV7xDdqbO6d5DsVtvExiBhWI2LAtQXttzRnHIGajuNP2852ooXqVpUa2hu93RV
+Uf6XlRBg6hHPnhRZYUr2gaAWH0VKDw1m6eK3SToNVD9GQrA+j8cqhr4fjemZaqqH
+U3MIPwUvNTcYtecy9e4AopWmS3nIkJhsdSOIyXIGVHKt2I2qwFTAPOjm1CAy9S4Z
+v8lVNVFDxhsM7LNHboh1BBAWCgAdFiEElgb8dJ/OFjYHI9StpelAEMOmQq0FAmTE
+I7wACgkQpelAEMOmQq3gGAEA0YkCNt4pTGr86xG10Lcz6Ds6y98GjZrWPpHUZL1m
+zxkA/jL5xHj3Z4uzQEzoITj4s0Yh0YzDIpej6J6pC2Tv+SEJtBxTaWxhcyA8c2ls
+YXNzY0BzeXN0ZW1saS5vcmc+iQMSBBMBCAF8AhsDBQkJZgGABQsJCAcCBhUKCQgL
+AgQWAgMBAh4BAheAFiEEL+p725FxcKe45yAB3xh45tnDsn8FAmRBbtU+FIAAAAAA
+EAAlcHJvb2ZAYXJpYWRuZS5pZGh0dHBzOi8vY29kZWJlcmcub3JnL3NpbHMvZ2l0
+ZWFfcHJvb2aZFIAAAAAAEACAcHJvb2ZAYXJpYWRuZS5pZG1hdHJpeDp1L0BzaWxz
+OnNpbHMubGk/b3JnLmtleW94aWRlLnI9IWRCZlFaeENvR1ZtU1R1amZpdjptYXRy
+aXgub3JnJm9yZy5rZXlveGlkZS5lPSRkalVrb3d2N2w0eUZjWExhdXlpQllzaHBD
+aHVNa0Q4LW1HLTdZX1ZfUzdBLxSAAAAAABIAFHByb29mQG1ldGFjb2RlLmJpemRu
+czpzaWxzLmxpP3R5cGU9VFhUNBSAAAAAABIAGXByb29mQG1ldGFjb2RlLmJpemh0
+dHBzOi8vdHJvZXQuY2FmZS9AZGFzbGkACgkQ3xh45tnDsn+x4AwApA8PTLYRemnD
+rNTFfLXUb7kiW7O/Zi93a1hT1g77NoovpZT0Rfd6Jc93579gK354N27W2P7YflRi
+IYxp3ch3WX4NgpxTFvx1HbSa9l+UNvH5TmFJmr3EonDLOtZWpPEPdbq5MJANCAYH
+5jT1l/MXD+VnUtyN9aFqFuZR2XLDh1VPDB98TTlwC9GYe/QHouCw+PhqZXii58S5
+SgHlzGx5SHtdVfWl/POzy3tlOHHzkBiHo4VLbIbiB2T2GRvmpPGOCH+d27qUrIZV
+eF2jfn0opkxW/1Gl8xhyUHS2b8I7/7Zjfp+UareOmR6ccBUaSwCt45b4fnuq/wgJ
+kxD7WoxXkr8rw+H2jQoJTxY1EKUYo4GJBUpjU6VYMGpGWxfZawM/z5hiKav57VuE
+5/FXJR/c/fJjjBTFOHC0Z9VPDlpu+SdfWe7m52/MEHawLWL870emTbcyTsPyVI6b
+bVoNwKEpDcUkTrZUPW7Q973n00s7hMnb2HmkX6t5sfXmHBMkECitiQMMBBMBCAF2
+AhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAFiEEL+p725FxcKe45yAB
+3xh45tnDsn8FAmRBbVY4FIAAAAAAEAAfcHJvb2ZAYXJpYWRuZS5pZGh0dHBzOi8v
+Y29kZWJlcmcub3JnL3NpbHMvcHJvb2aZFIAAAAAAEACAcHJvb2ZAYXJpYWRuZS5p
+ZG1hdHJpeDp1L0BzaWxzOnNpbHMubGk/b3JnLmtleW94aWRlLnI9IWRCZlFaeENv
+R1ZtU1R1amZpdjptYXRyaXgub3JnJm9yZy5rZXlveGlkZS5lPSRkalVrb3d2N2w0
+eUZjWExhdXlpQllzaHBDaHVNa0Q4LW1HLTdZX1ZfUzdBLxSAAAAAABIAFHByb29m
+QG1ldGFjb2RlLmJpemRuczpzaWxzLmxpP3R5cGU9VFhUNBSAAAAAABIAGXByb29m
+QG1ldGFjb2RlLmJpemh0dHBzOi8vdHJvZXQuY2FmZS9AZGFzbGkACgkQ3xh45tnD
+sn/UbAv+ISlXhbvE0MSRdCVz6zG8PwnH2Q0ejFcrwVBroJ+haKq7E+rWNlC+YNra
+jZvVYDvlhQmjNB1UU/xBU7DP4PfCeZj8HNHU897aYfS7qhPyXiTdudHEAsmlnA7O
+/eyBVBXqjWDAIWNy7/RzmTFIEX345H5HT1RmdHHaMSNnvlN5lp2TOB5qLAgD8q2c
+Lq/HgNthePowyS6Tit06BdvoGgCVbBow20Fc10l326/3YuUX7nfJvfPSTr3X1eiH
+XGD3DJNvFUONF35jOCIOLGVs0LgsEtnYiRvoUobXEexTTvj2IZq9+tsGszTPKHJU
+25erDuJBprO5Lb9BV6orBYEDWiiKpcw1ZtD0SKnsprS+9JpBvz64H5qHgA6fOqcf
+WdmubTZHt0JzqqNV/Ye3YMy2bFBuJt+ZWkeIUAEYgLfbv4Cp2z+7OkCeoVBI0ICv
+h9HEmEvc2JWUr+Ir2f/jczewHDqRkpl1beFYsjw4yOTyF9W3mkj1ysWVm+9cy//p
+WiOr0LUdiQLTBBMBCAE9AhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA
+FiEEL+p725FxcKe45yAB3xh45tnDsn8FAmLPEFo0FIAAAAAAEgAZcHJvb2ZAbWV0
+YWNvZGUuYml6aHR0cHM6Ly90cm9ldC5jYWZlL0BkYXNsaS8UgAAAAAASABRwcm9v
+ZkBtZXRhY29kZS5iaXpkbnM6c2lscy5saT90eXBlPVRYVJkUgAAAAAAQAIBwcm9v
+ZkBhcmlhZG5lLmlkbWF0cml4OnUvQHNpbHM6c2lscy5saT9vcmcua2V5b3hpZGUu
+cj0hZEJmUVp4Q29HVm1TVHVqZml2Om1hdHJpeC5vcmcmb3JnLmtleW94aWRlLmU9
+JGRqVWtvd3Y3bDR5RmNYTGF1eWlCWXNocENodU1rRDgtbUctN1lfVl9TN0EACgkQ
+3xh45tnDsn8+rAwAqAwIzZHQYrbu1LlO0xa3+H2mhP54OpKj2c+yaDLFT6rpAjUd
+tEn2Bx1TIhKjePvZiHnXk5QgRcuQ7pgynLCEVcrS3Dy9gpGc3wNFGa5xsCyz9E0D
+/aRw3weSLqTc69y1290JNqEdAWOQ0BY6D16DRw1OjZfGTlaqs8I/FOt6MHNoURlv
+I0ucUkMejdlPWNzjkO8HwCNpu9RQPOyamqAfJCm/M+OFoXx1WtzPQvpioIfw5bBO
+uPI77fXrGSk+ydud0gW5xchi5dLIDnfMEWscYpEP7GEEQvpLZj2UQa4WOpfz1k8+
+PqAbMSCT0S8h2wvJqiepjEwmkN47F9IshV3vc22Pyk4vSlPizoly1YjBnVhhBNX7
+keBZUZFqTAruKGNEJ2uQFqNw1A3WaoFJxapaA1SWdems/TSXNuj43F4pvClxQxZr
+wQwVA8rOISEMFfS8bkcx5vUfEeJvE/JNfiZBEYmH+XfDZRYeMeUQkZY548LHLUgj
+lsqVPexm7qUbfPcKiQNsBBMBCAHWAhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMB
+Ah4BAheAFiEEL+p725FxcKe45yAB3xh45tnDsn8FAmLPBfmZFIAAAAAAEACAcHJv
+b2ZAYXJpYWRuZS5pZG1hdHJpeDp1L0BzaWxzOnNpbHMubGk/b3JnLmtleW94aWRl
+LnI9IWRCZlFaeENvR1ZtU1R1amZpdjptYXRyaXgub3JnJm9yZy5rZXlveGlkZS5l
+PSRkalVrb3d2N2w0eUZjWExhdXlpQllzaHBDaHVNa0Q4LW1HLTdZX1ZfUzdBmBSA
+AAAAABAAf3Byb29mQGFyaWFkbmUuaWRtYXRyaXg6dS9AbGk6ZmZmLmNoYXQ/b3Jn
+LmtleW94aWRlLnI9IWRCZlFaeENvR1ZtU1R1amZpdjptYXRyaXgub3JnJm9yZy5r
+ZXlveGlkZS5lPSRoSzlfdEcwdTdhcVV3Zkh2d3NLd2VDWFdYNm5pLV9JOWs0MXd4
+RTJqTVQ4LxSAAAAAABIAFHByb29mQG1ldGFjb2RlLmJpemRuczpzaWxzLmxpP3R5
+cGU9VFhUNBSAAAAAABIAGXByb29mQG1ldGFjb2RlLmJpemh0dHBzOi8vdHJvZXQu
+Y2FmZS9AZGFzbGkACgkQ3xh45tnDsn9r3Av/R9+c7npoC8Oo8IU++UjzHcfd+Zs+
+YwJc0WU5ZwOW5KCoyAMHmAYXi/ZD/e3atUNwrgZhKMXRNxDIuvdqIq5euBzdTjd7
+wJYKThB44sLVNtE4DWULRAWgAQovpdcSoeg3iZC45LxQlBfgNRBPBCkZs/yF3Zp9
+hrZOSN+krZvanZ0fywJTRKYEUTgejDP3lgXUU8w09Mw5IQ0Xfiy+vGptfziapNGx
+BK9Z2tRNOZln+zwXNP+U5wQ7psGgznMM9eEE4+jzEEsgsxoXcsNmChfm4K1ltCLt
+72mBs6iEqfBIaAidOX4j8g2Idh1bt/qof8jWaBJwFrVaU4/q+Uex7+7CO3bBrkv6
+rHBrta1D12T3s5xYlbxMLf4H/tqvf3K5PwT/6GXknchXjyoTwtd8DTTWtr9PUARW
+/hfjgkx9Epjc+x16u5bM1iU+kmv4HygwMZwMRxpBOjuv3Z7HiamUgsfCYfJUhxIr
+JEpUtLTvsiUPNmm05A6BVnpR7tHhsHbU8r/iiQLSBBMBCAE8AhsDBQkJZgGABQsJ
+CAcCBhUKCQgLAgQWAgMBAh4BAheAFiEEL+p725FxcKe45yAB3xh45tnDsn8FAmLP
+BBE0FIAAAAAAEgAZcHJvb2ZAbWV0YWNvZGUuYml6aHR0cHM6Ly90cm9ldC5jYWZl
+L0BkYXNsaS8UgAAAAAASABRwcm9vZkBtZXRhY29kZS5iaXpkbnM6c2lscy5saT90
+eXBlPVRYVJgUgAAAAAAQAH9wcm9vZkBhcmlhZG5lLmlkbWF0cml4OnUvQGxpOmZm
+Zi5jaGF0P29yZy5rZXlveGlkZS5yPSFkQmZRWnhDb0dWbVNUdWpmaXY6bWF0cml4
+Lm9yZyZvcmcua2V5b3hpZGUuZT0kaEs5X3RHMHU3YXFVd2ZIdndzS3dlQ1hXWDZu
+aS1fSTlrNDF3eEUyak1UOAAKCRDfGHjm2cOyf4WGDACS072ObGtwGJhMZElGcqxE
+b4H0XIbAZHcuCqA5lFNPgeayozXqMUk/SXiYcqb38yMyHyT1BWVGa4LSHoGwvt15
+u4RwU0SgRisWTCZsstB8T5ePVu7HA0xICx4RBdxhyF14T+Dno9/eqMx5VaAL434O
+r1gHwFT96D99hunf0cjHPBpQEGaDAPIXYlqOZ6ExQA4GufFQv9uNSusXpHw/pWrI
+LU/CvbrSLsUckbfXQ5BXzo/vRg92nIWVOcq0T9NL8E/5WuQ4aTowoI+lhC703wP3
+lG9WS6Mb2x+4ubahWLwBXbaBvHytOPJdEqJnsilpFFFJRpcNYrznh6sKXqjKSYxJ
+mXcRsRsx1H8a/Cl7jQeX8pGo3xmNb3GUjLYaaxdekypbowGM+5GAmwB+GhZ0wEzx
+pdYyUaJ5B/nsZrvNzjhujW3oTTrKCH9/p+yg2rsNfzXjnETna7SvQVh9wekP+ieA
+cL5RsEIAfP1QNG0b9dHZJWvXSNH7Du/AG1NI64m56BuJA1kEEwEIAcMCGwMFCQlm
+AYAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQQv6nvbkXFwp7jnIAHfGHjm2cOy
+fwUCYs8CwZgUgAAAAAAQAH9wcm9vZkBhcmlhZG5lLmlkbWF0cml4OnUvQGxpOmZm
+Zi5jaGF0P29yZy5rZXlveGlkZS5yPSFkQmZRWnhDb0dWbVNUdWpmaXY6bWF0cml4
+Lm9yZyZvcmcua2V5b3hpZGUuZT0kaEs5X3RHMHU3YXFVd2ZIdndzS3dlQ1hXWDZu
+aS1fSTlrNDF3eEUyak1UOC8UgAAAAAASABRwcm9vZkBtZXRhY29kZS5iaXpkbnM6
+c2lscy5saT90eXBlPVRYVDQUgAAAAAASABlwcm9vZkBtZXRhY29kZS5iaXpodHRw
+czovL3Ryb2V0LmNhZmUvQGRhc2xphhSAAAAAABAAbXByb29mQGFyaWFkbmUuaWR4
+bXBwOnMuc2lsYXNAZGlzcm9vdC5vcmc/b21lbW8tc2lkLTQ1MjE0OTk1NT1lZDhl
+YzA1ZDNiMGZjOTc3YjY3MTIwZDVjMTdlMmMyYjNmMDk4NmJlYzc4OGI3MGE4Yjhk
+MzQ2Nzc4YjhkODMzAAoJEN8YeObZw7J/G6UL/1H/fk89xpj9oz6aVkvaf6xoedu7
+ofxi2LZx8jaI4P6jVz4J45KBJZ2ULQVRJOYw60QhohfjjscxKXJgB6oYYiXlVtlh
+GmG/DBJ3l0HFS+aZmg89J49qG3xHyghhDX/ABw9mT21cIygd21vAViwcb1dZSYeF
+m3Q8rV+jF5Cm0LvK+7UigXSJbHBUtMQH3ZIQGym+SEP+FCbD9A7KW3SWmZuDUwRa
+ZBTCoenGUD8Bx4tSjns7zMvWkwZdxTiiqMAE/jcvzhmBZIWhGpkEY97ns3mihbEd
+hjv1baUk4h2T9R9ASJMvmUfKEY4JxLvbxebquSOC+etMKZ/8ySuIH2Afvw1JtJdL
+1hIL5czCpbtDlgCaRxHKkfZx0RiEakze6WrRHr2XLh0TSdIKEcIBSt0LTW2uRJqM
+GVsxczzBU/G3qZcCWAjorcqma9N2B26viH4RtRtszEuvJZl0EB78GrDVNud6fyuE
+aewdBSU1LqFb4K64f+xmQn8fvAXjthSXWySzNIkDowQTAQgCDQIbAwUJCWYBgAUL
+CQgHAgYVCgkICwIEFgIDAQIeAQIXgAIZARYhBC/qe9uRcXCnuOcgAd8YeObZw7J/
+BQJidalDMRSAAAAAABAAGHByb29mQGFyaWFkbmUuaWR4bXBwOnMuc2lsYXNAZGlz
+cm9vdC5vcmebFIAAAAAAEACCcHJvb2ZAYXJpYWRuZS5pZG1hdHJpeDp1L0BzaWxz
+OmMuc2lscy5saT9vcmcua2V5b3hpZGUucj0hZEJmUVp4Q29HVm1TVHVqZml2Om1h
+dHJpeC5vcmcmb3JnLmtleW94aWRlLmU9JDFMUjhPTzQwYkw2NDA3aWZmMDBKOGc5
+b2QzWnk0bzMtREFjNk5melREU0E0FIAAAAAAEgAZcHJvb2ZAbWV0YWNvZGUuYml6
+aHR0cHM6Ly90cm9ldC5jYWZlL0BkYXNsaS8UgAAAAAASABRwcm9vZkBtZXRhY29k
+ZS5iaXpkbnM6c2lscy5saT90eXBlPVRYVJgUgAAAAAAQAH9wcm9vZkBhcmlhZG5l
+LmlkbWF0cml4OnUvQGxpOmZmZi5jaGF0P29yZy5rZXlveGlkZS5yPSFkQmZRWnhD
+b0dWbVNUdWpmaXY6bWF0cml4Lm9yZyZvcmcua2V5b3hpZGUuZT0kaEs5X3RHMHU3
+YXFVd2ZIdndzS3dlQ1hXWDZuaS1fSTlrNDF3eEUyak1UOAAKCRDfGHjm2cOyfwq2
+C/9gKXhGmi0Rk//MK72kPuokFn5vuBNcGHZwydU/EcNGOb/AjQkIpTM0Ktx4bp5U
+fRwdpYNeOxchHGi1MFjlagfxj9QdmgByxjUVaMWExdputniIXg1GuDB0plr2pGsI
+TjLM6K4rSnV1nf/fFIAJkmQZ6AICIQ8VQvgVS9VlZ5LqMRA0rRIzyPtdfoh4I+IT
+hFnXbHDp2oXfQhNKTf/MJKV5Rw53AoK8TIEtc5FlxGiDIzj9CoQOyj58/ffiDk4B
+eVRezNXpaoCoDKvo6JatIwiR9ONply/mCGfkI2BtyJOsMiqPbK3GUdrFSEPfF1b8
+2r0DU2Ke/qhJF7Abvyx9g7tP2CuaAmcMUB0DIPAwcUxgIIwPIJj7Q8xPI06bGTAk
+jJYO62rmqQu8klA6JKcnvM5Vk8IHEYjLsJ2DmYObvRVzTjYaHePMi0e1CUgoYUp1
+UUgo4hJA3bYv7lNrQfLCvhI5Mx4rbLJGW78xpCqg1aj8I4LgrnoHlp+oCAKa0xkt
+ds2JA/gEEwEIAmICGwMFCQlmAYAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4ACGQEW
+IQQv6nvbkXFwp7jnIAHfGHjm2cOyfwUCYnWhI4YUgAAAAAAQAG1wcm9vZkBhcmlh
+ZG5lLmlkeG1wcDpzLnNpbGFzQGRpc3Jvb3Qub3JnP29tZW1vLXNpZC00NTIxNDk5
+NTU9ZWQ4ZWMwNWQzYjBmYzk3N2I2NzEyMGQ1YzE3ZTJjMmIzZjA5ODZiZWM3ODhi
+NzBhOGI4ZDM0Njc3OGI4ZDgzM5sUgAAAAAAQAIJwcm9vZkBhcmlhZG5lLmlkbWF0
+cml4OnUvQHNpbHM6Yy5zaWxzLmxpP29yZy5rZXlveGlkZS5yPSFkQmZRWnhDb0dW
+bVNUdWpmaXY6bWF0cml4Lm9yZyZvcmcua2V5b3hpZGUuZT0kMUxSOE9PNDBiTDY0
+MDdpZmYwMEo4ZzlvZDNaeTRvMy1EQWM2TmZ6VERTQTQUgAAAAAASABlwcm9vZkBt
+ZXRhY29kZS5iaXpodHRwczovL3Ryb2V0LmNhZmUvQGRhc2xpLxSAAAAAABIAFHBy
+b29mQG1ldGFjb2RlLmJpemRuczpzaWxzLmxpP3R5cGU9VFhUmBSAAAAAABAAf3By
+b29mQGFyaWFkbmUuaWRtYXRyaXg6dS9AbGk6ZmZmLmNoYXQ/b3JnLmtleW94aWRl
+LnI9IWRCZlFaeENvR1ZtU1R1amZpdjptYXRyaXgub3JnJm9yZy5rZXlveGlkZS5l
+PSRoSzlfdEcwdTdhcVV3Zkh2d3NLd2VDWFdYNm5pLV9JOWs0MXd4RTJqTVQ4AAoJ
+EN8YeObZw7J/D4sL/1ZDzzOzfhQ8qOmUje/9BYqOSevipKK+nv32UIy2aiShJnkN
+2SD0OMN4xLmyxSJ3ynZuPFcE/J6g9Zyyk2O+BT8xTQ+O5CdV5BLUFLsbMc2y8O7r
+8qTnmuZE2FvOyae/M5a4rrCWCKMruijj0Q9PSThYJRd30Y+VSJfck9UkJcELx7vj
+s2GLSxAkyMrOAoLfUuqjQYq+GoniWWQrcCTDV+4Amordk0sajNJvuGTYo/1p6/13
+VvYVRmFJdKtHJFWWtb1q0RlO4aanA3LRpGq7Si/auxoqEcH3t3Jsify6nKTljDU+
+CjFo9aJ9W1S5aHQ+OCYyP8FOacX22c5iODX9BXuJeTXaF/TzUSiuMY1SDpFCwxvP
+9RslRQBKeycoAvzqTmLcvdwWxa1ZXRvUSKUUApmuPZVJmhD/jnkwM4v8vcqekvLH
+N+bPccSRmFGoF+U3unMRsVrP5FUxjOOtn+CyOZR8fjB/1W/eqsZ2tWcMOLTyFZoH
+h4NVPTqYOqsduhOAcokDcQQTAQgB2wIbAwUJCWYBgAULCQgHAgYVCgkICwIEFgID
+AQIeAQIXgAIZARYhBC/qe9uRcXCnuOcgAd8YeObZw7J/BQJidWpdmBSAAAAAABAA
+f3Byb29mQGFyaWFkbmUuaWRtYXRyaXg6dS9AbGk6ZmZmLmNoYXQ/b3JnLmtleW94
+aWRlLnI9IWRCZlFaeENvR1ZtU1R1amZpdjptYXRyaXgub3JnJm9yZy5rZXlveGlk
+ZS5lPSRoSzlfdEcwdTdhcVV3Zkh2d3NLd2VDWFdYNm5pLV9JOWs0MXd4RTJqTVQ4
+LxSAAAAAABIAFHByb29mQG1ldGFjb2RlLmJpemRuczpzaWxzLmxpP3R5cGU9VFhU
+NBSAAAAAABIAGXByb29mQG1ldGFjb2RlLmJpemh0dHBzOi8vdHJvZXQuY2FmZS9A
+ZGFzbGmbFIAAAAAAEACCcHJvb2ZAYXJpYWRuZS5pZG1hdHJpeDp1L0BzaWxzOmMu
+c2lscy5saT9vcmcua2V5b3hpZGUucj0hZEJmUVp4Q29HVm1TVHVqZml2Om1hdHJp
+eC5vcmcmb3JnLmtleW94aWRlLmU9JDFMUjhPTzQwYkw2NDA3aWZmMDBKOGc5b2Qz
+Wnk0bzMtREFjNk5melREU0EACgkQ3xh45tnDsn8prQwAiRVx0WOeemcAhiYRqDeX
+Km1+ms8TpvGqka1i+UuVZ3QY7EDldZ38V9vP93gojgbKYmzpJBWr75EV+UoMMfZs
+pvH/3et+RKItAI15PwoKtCCMUycqiJcmLBMlYPhy1wyp+7zE4ltFFIJ6Z7yDpyUH
+75xolgsySnEFAinTHJ5ruJbbPyu7hBRJxtFGPVZzSeYjU8ikA1hGbdjYQc8AevQP
+ZCyZthiNU7PHRDaRmiP3lJ7325bDx0Emkzaw9zp8vu/JI6EWrws/Ta4hxM9nNWSX
+Xv3vdFLsMDAZ8qFlstCPjCZL09ZfD1d70MuGLbRvc7XMPp4ZIp7CZnRQ1FHf/PVJ
+R+uqNtYUpqeB8Q7U17oYpU98aTgawbF7x02Ym7i2Vb9aPgKB+hU7nrfMevU90hUH
+Mtu7ze7BZlj3otR9B2QT08PqwWP/yUQoQhSwWyxxSRLN/ecedH8fDo5kc6GCMpVi
+/heVT9UoSpVb9H/TLlyR9Z3CuXDvXJCAcTP3WW5t6DsjiQLYBBMBCAFCAhsDBQkJ
+ZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAhkBFiEEL+p725FxcKe45yAB3xh4
+5tnDsn8FAmG3f3KbFIAAAAAAEACCcHJvb2ZAYXJpYWRuZS5pZG1hdHJpeDp1L0Bz
+aWxzOmMuc2lscy5saT9vcmcua2V5b3hpZGUucj0hZEJmUVp4Q29HVm1TVHVqZml2
+Om1hdHJpeC5vcmcmb3JnLmtleW94aWRlLmU9JDFMUjhPTzQwYkw2NDA3aWZmMDBK
+OGc5b2QzWnk0bzMtREFjNk5melREU0E0FIAAAAAAEgAZcHJvb2ZAbWV0YWNvZGUu
+Yml6aHR0cHM6Ly90cm9ldC5jYWZlL0BkYXNsaS8UgAAAAAASABRwcm9vZkBtZXRh
+Y29kZS5iaXpkbnM6c2lscy5saT90eXBlPVRYVAAKCRDfGHjm2cOyf74nDACbLYlO
+Oc4PL/QMfzrNzne9ofkh2vmHV6MCYPKTrCmGP3Bh+Sl92J2YEa3CyqgbwtzAcMQW
+YX1Rttgr8t3IkTYWnGxdgVjEoMvioMQhjOkmcBPEOWhjAFpVUlKHz7vyfl84C5l8
+0OC6m7cwtdEhBZEsHTiT7y+9VscgAuR8Hr/vKmicMkmYrCA8jND9cvE1mVlmE4kb
+isFCBaltyS8t8vldewotQeSvc93pd5Wv+RZF4YMIMnzk/RujPQeWNYAk3bjLcN4Y
+wTlHU5KfL2HoMfv1/QmrNfgWTXYEmRw2dybwaSIRVZpr5OqXolIRW+xsyZPcjfiG
+W/ejuoHLcYps5/kTBD6swERk925GwmTcwTMterA20aEzLTBJ16glPsfs8mlGzJWF
+FiqfhqMxasP4kd6puxmVh4oBow8o1GMQEqYZ7SUDoF6c0zQ2nlXppcPw4e6eYRiG
+15M7wlSnI4N0tEg67eGq+58Oob7cIkBe32GEmEwMHRE9oWMJK8QtjmITxHuJAjwE
+EwEIAKYCGwMFCQlmAYAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4ACGQEWIQQv6nvb
+kXFwp7jnIAHfGHjm2cOyfwUCYbd7AC8UgAAAAAASABRwcm9vZkBtZXRhY29kZS5i
+aXpkbnM6c2lscy5saT90eXBlPVRYVDQUgAAAAAASABlwcm9vZkBtZXRhY29kZS5i
+aXpodHRwczovL3Ryb2V0LmNhZmUvQGRhc2xpAAoJEN8YeObZw7J/YgEL/iG1xKsu
+ZW2apQTlJaYkKbLycjn64kAB3B8sKlQA+yJ53KRXsT3UuAy3OXTEbVL3C9sRZ38H
+1MGMXhJBF2P4p8HLWctjXkmdyPUEDPgl/BmnM+8wrj+yjJHRuGPHXsrrehsXNyoX
+gMEAqacKrNtB3ATXnq3gd7wIZ9BlGzl34HaRzNbAPrImfa3ipG0vwId9zOM6nHlH
++8j9DJuhnY9IR1jvA88Pq96QmbCRDWolwzaLbcOxqaosQxlzw4F8wSUjOQocX6ya
+2JvSO6WjglO/RTRoby7Q/r+7FrBJs3APGNstSZuC+QHS2Dn7cNN/mxg/XjHLGhOX
+SNdFuZYGOk1NTvcVLdBh5nuVYAlNoqbwAD83UCaE7g7lobYgxua7b97hI48FKGLL
+W8ASEQ+syRjLf6/y5U/grCwZnLTF8JtPAx50WwktjzU4so3+rX4j5tW87rO8Od02
+Q2zVVq7jhYw8cWvKY1DAUulRgUdOVpi51ZzDzy/G41qGeKSI4eRILig5sYkC2AQT
+AQgBQgIbAwUJCWYBgAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAIZARYhBC/qe9uR
+cXCnuOcgAd8YeObZw7J/BQJhHpHxmxSAAAAAABIAgHByb29mQG1ldGFjb2RlLmJp
+em1hdHJpeDp1L0BzaWxzOnNpbHMubGk/b3JnLmtleW94aWRlLnI9IWRCZlFaeENv
+R1ZtU1R1amZpdjptYXRyaXgub3JnJm9yZy5rZXlveGlkZS5lPSRsSU1YUkUzMXJl
+aG1iNWc1N2dRYmc4SjNya05aSkw1RXNlWjhuUWw1V3BzNBSAAAAAABIAGXByb29m
+QG1ldGFjb2RlLmJpemh0dHBzOi8vdHJvZXQuY2FmZS9AZGFzbGkvFIAAAAAAEgAU
+cHJvb2ZAbWV0YWNvZGUuYml6ZG5zOnNpbHMubGk/dHlwZT1UWFQACgkQ3xh45tnD
+sn8RvwwAj5KJJJey5gWntcEu3smb74+EyKlCG+80lxR4esKDiDqn/4iK411pjbjy
+C4+WH4fvfqLuaDzmWNURnWi55XRPzN1tIXohrMUmF2NyyrIDVApeT1xbClC0L4Ub
+KXVBYWTcDz7+OvSIgW86sueIRAhKG8VoAtnvjx6vm4mwkzk8S8GOxzCii/iRX7h9
+xXJuwaWZQ+aPvURHxh282BbHPt1DXGHUq9/dvN/XbV1qTo8CG+MNgXQdgpboJpk5
+mSYBTwg7zPwqKi/I+fnKUUfpxUF8ABDrpDikTqAmSOZH/74blRy8rW8a2T9Dq/F+
+x2KpSvqYxvy2bYbH4kQy8G62LuWS7E4xUHyf/PYyxK0BFLZI8jB7pnF8uV3vJhvO
+UOO6VuP/kecgYC4UyYZXakHHyitLYjYgO2p2HHJKbYWMGVcPJo9uub7/TThFiJUb
+eT6S3Uf6vPRKDUB9tAGl+E8Dszccsgz2f/vpK4lkR3zNWQdER3/k3txkHsgA1mAy
+NN/VI0XViQI8BBMBCACmAhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA
+AhkBFiEEL+p725FxcKe45yAB3xh45tnDsn8FAmEekUkvFIAAAAAAEgAUcHJvb2ZA
+bWV0YWNvZGUuYml6ZG5zOnNpbHMubGk/dHlwZT1UWFQ0FIAAAAAAEgAZcHJvb2ZA
+bWV0YWNvZGUuYml6aHR0cHM6Ly90cm9ldC5jYWZlL0BkYXNsaQAKCRDfGHjm2cOy
+f7WvC/0VcA2uaLpOpHkRQEJXY77z95DJrHzNK9kOHJOgOVTs1AOXuJSRnYdQ7/p2
+Du5NSuopD/xaFdE8dkWtahwXB7pPpACQAiGezPEZHeC8XqdmoI0iWvMdeMyq86Dx
+yBNS4g9b+2/y9v9NEvrogp/OGay9s9/nfPoeoIn/TEy7FBlRzz5qw0aiJcFqynuL
+olL/neDhPPYF/sFxAteOJzcztZsAxDQ3qNutGBnxMYXWv+EJSAO7Rwp/XnhEdzLX
+MwKDuWApiVwRHVRhNlpxXN7Kds93tLnP1BapFg042LQbUSbNMwJ2lYg6UsN8+Obw
+0JDtygUMpsjHP62cKnsF5GvKPUba+x2rjlKhGq7On70t7c2zr9KX2T+p4kF+jZpK
+PcijqgzW67JiS7Wl9r18c79Hh1nYv3YBFTGCA54yEow4e3w594xkyqPH9VdbESF9
+S/INYQ7FxHEJihNvTnxRbPYEUVvex8aWKv/K5pJ9h5CiibXK6cGTf5HduvJEjAWA
+Q/YeLK2JAgwEEwEIAHYCGwMFCQlmAYAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AC
+GQEWIQQv6nvbkXFwp7jnIAHfGHjm2cOyfwUCYR6NfDQUgAAAAAASABlwcm9vZkBt
+ZXRhY29kZS5iaXpodHRwczovL3Ryb2V0LmNhZmUvQGRhc2xpAAoJEN8YeObZw7J/
+VmAL/Am5QhixO6JuQb9tZxesVG5e75c+EqWXk9twG4O1q9NKVASTJTt+AhNiTUue
+Uoch7i6DWYocLL9kF5l88RM9R8HIwSu013RwTqXx2vIc/bcPLShZpWZu0hi0fIPj
+dFxIOKfVROzyYw6bZQodcxRCOJXdzY13JT1m3vkEGhD7DlXeClSdi5p+4epka3aa
+dDkdLh+JbaRgRUvzDYBhGAIJmlv9Upbd+le16PaY0Z6RsyksZmB6trD3n0ATwInt
+h9UqLsHutQmQawn8Z8QLd5A9USaftBHP1AiFMpQFDmofG+CPlqTpjxoQO5fEBulU
+BiETSLS+BVSGZ4N3rXSt4wDh0y980m2t6YScHcT2lz6QaIQlv0HxRM0pQODQrBGz
+xP8NZAZb+zDae5QYxDEDW3QHYlojFqzKoCBSBxjeDIVMpUvIySeum7d94Uph4orq
+uxugXl6bbFMtvFeJyzmc9OhfMzJp6MPDdJRDo1G9mR+I0b1F3hk6EivO9xaOaZv+
+itzF9IkB1wQTAQgAQQIbAwUJCWYBgAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYh
+BC/qe9uRcXCnuOcgAd8YeObZw7J/BQJhHopaAhkBAAoJEN8YeObZw7J/4fAMAJ0C
+ew0THGP6WKPIJmnnmVYVHIWqrO2gkZ0DcHAmxN5OW3gZZimkeUiAFUDFhfwkDxCc
+TEJvpZw2FnaF/oQQkRWEvOzHUPscKJ5eISFM8uooZQ+oTJUT1I50zmkOpc2YQ7Dj
+iRCeSR7M7Azyg01FNqctlSC7i28QB6DG6+kVPBSdm81Pi9d8uJnzRU00NL9OVtpp
+IZ5eumiWJjy4DmCmNbxSwGQmTBYgJrfzi9vWZT13LNkTfvIBxso/tq5fKiE2918b
+L3G7ZOV0dH189QMCEHIjdBcRNnkPUA1a8qaq1ZxJGTuJLIstKhmP+R2vCaaZ4N3E
+AVsuonF6IhJ72ia9860A4NtvZBKYjiMNVJLgJVEMcx0M/0OWAxIs3Fx0xcr7dJGC
+kIyvYnAc8HbZFxWLo2hO4RH+HUJhFHxADgEmPhd1k+heyDQyvgWnIo9ii3XdsrL9
+bdCChiu1ngEcErSUYTw1iIfcewZyJB4blg0pkqv0UEU/9dzUcgfnHi9Ym06brIh1
+BBAWCgAdFiEElgb8dJ/OFjYHI9StpelAEMOmQq0FAmTEI70ACgkQpelAEMOmQq0S
+UwD+KPZkmFZuYAYdRXYwK289teJpHdU3wzcteSzTmhAcSC8A/1jUnt5vgtfC07L1
+tv8fZdrStGZmLwfscOZujY2JKwoPuQGNBGEgzDkBDAC5hpKWrCXWmumRxDSLwIL9
+ykIpVd443eVtyuVwwwwkMWRnRr66as0DTJx1q5AuI4zZXy9telr8RUgcbWzhzYIE
+rAI8bnwEbbxE5hfx1iRUUZty9Y7BLVMIXK2dNEvkXT5PyVwqgU7BlBzpjnJ46Al6
+yijguHVehnIbbIPZlg9qBPtxvJMTATi/OAdOw4bHacZEXUMiG+wOeK07b0/99jBg
+oeRWXysIWA/vHNrX6mBKZQk/eJceNgmm8vjtKuA2BDSSl+EVecea9bzMxTTxV5la
+91+t3ANVLoPIxAzzProHFgPco1ducPWsL/G1UnJpR11FlXMM1rOmuBj99MximAPL
+mmqos6iyrsdm623CaLL4W9MJKl8Ei2Qr5+ie+piM3uAq9D+lZbQbBp141lckZAwZ
+5ogHJS3rU+/E2W6SC/EvwCX892/IY1TVYyDT9rGH/aF3R0lUoTcQkzbvmsZ0RKBc
+mjM4mFX+UYe7PcF92MQ9ofyOJpzKPqDR1GL6kK0vMqkAEQEAAYkBvAQYAQoADwWC
+YSDMOQKbIAWJCVZLngAhCRDfGHjm2cOyfxYhBC/qe9uRcXCnuOcgAd8YeObZw7J/
+78gL/2DbT2r6P2Lw/1HQZMrMMR1JWEODHNh1lMp0OIR3ZmlDWw6i9s3xB4XKUTgV
+qWmwt6H597CVlVAw+E7qL92jqigcvMR4EDCuQgkM6hFj5Ah9tTfTJeWUDz/OR4Id
+dj2QlXN4Arz9X95bn+VodZcmidfHClMMPoGG7cM2seXU3RgdoFwD3lXGL82pm4C5
+CVVT9r1LrwLsJvAMbSdtdg/+NEriLV2r1m8YE2dyRhVsClz6q+3mbje/ETrOQ8vZ
+njlA8u2qYYE7QKniBPdBGIIB5s19TX8XCcvnrgisJeesmHhFNL+3ToZq03d76uhY
+4/mUXqdRSlrCQ1O52U7uDEgOiTkuimQsIHt6b6LJ8FVFq3SylbkXyZ5JYAvIGB7V
+gZklIwa2mA/12g9PVeFdL4qhOzzIgqypcT5fWBxbLxYCXvG8JehvSWlcOtP7AhSp
+3AaA8vcnt5AYIhG2YbZELzpobNxGTxD6p4MUW2N2iSlrpxwsAQljqKNEq/s3RH6R
++a8bkLkBjQRhHl4PAQwA81jSMUgbKYUWXE0T5Md0oTFv7Nr8Bxwf6wqO+za8Us5x
+6a9LlteyCLfM6gwLtatd5a5JWIta2THif1JS6Rz8zWspIRsfPHoij72kn/Dt4fFW
+cvnJRR8W6NitjvqMzunduKqZJfa6oWYaeDZDPEBdurDRWQs0Ig4DgkJ1zHt+72LO
+yW2ix3WnKPsSzKX1ygpGDy0HSXcqtGBJcy0dxOqInnKLwQG+o6WGhbpjyxwy4ALb
+dDbLmW5A4ufAONP1fQWzWhr5GGYzImSBL1Ygom+AYfAK3W+ldEC6OxArZ2TTp2Jt
+21VEvdFZ57LeG9j63lPY+49zRg21t+rdngj7tCgRxz1P1nz7pFXx75ms9shqk02/
+7E4PT9dQmQdP/WM5ve6Exjl92bF0gZdqRuCvBKI5dGfhdwBHEJR5QS6Zr5wOTJww
+WLy/ARiDRveSF9JFgQ7qm8v4qP6idgMWZ+BTsF4y08BYXZIXCGKZnfTU2iUM/qzG
+AT9JqzXRjc7hE+aqmQ/pABEBAAGJAbwEGAEIACYWIQQv6nvbkXFwp7jnIAHfGHjm
+2cOyfwUCYR5eDwIbDAUJCWYBgAAKCRDfGHjm2cOyf66EC/0QwdVJkYtsWO94kMNV
+nqXy52+Qe3WcDi/R33RbmCIm01Kf2ljopgHpoZq8kWJq3Fm0Oyoh0Oxt9neUNzmP
+TLOANCK4h7g1ewmmqaaImkt1j4wEeBcYMeC4EAZQFqMxK3gam0HV9c6MDqplmslp
+9R1r7wAb2ZOy1aoOt5m+/iAPy1/G0f5DIo4SMsIZ59N0ferNzqvIesD9gzMTc1AQ
+/5kqeSCjLY5FaUwcZ2gzNvfgyiOrY3B0SrO/jmoovW96m1QG/4MDTjYrNaLUPfNk
+LKvqA3qVesk81Coz4CIzKLs/DWsUY+iZFJtPy+aNDOiXoWMa4x7DhCKzEV81t9nU
+43FLf5vrMmkVW2qHZ7Q1acnMUjQRNjypQPFtsFI3EnPaa4luyVR+KmGWXvnF7y6q
+nLXdnDeAoUITpHciPJSG9mCz0vJ6g0gGV3CewIkTHkFnAlniG3CzsplRd3Zmh4I9
+6G2YrJDj/bKZ1VKPf+4HeLd6jzpH/a1CprrFsd+17YDWgi8=
+=jEmd
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/modules/home.legacy/conf/gtk/default.nix b/modules/home.legacy/conf/gtk/default.nix
new file mode 100644
index 00000000..f5411369
--- /dev/null
+++ b/modules/home.legacy/conf/gtk/default.nix
@@ -0,0 +1,58 @@
+{
+  config,
+  lib,
+  pkgs,
+  stdenv,
+  ...
+}: {
+  gtk = {
+    enable = true;
+    theme = {
+      package = pkgs.nordic;
+      name = "Nordic";
+    };
+    cursorTheme = {
+      package = pkgs.nordzy-cursor-theme;
+      name = "Nordzy-cursors";
+    };
+    iconTheme = {
+      package = pkgs.nordzy-icon-theme;
+      name = "Nordzy-icon";
+    };
+    font = {
+      name = "Noto Sans";
+      size = 10;
+    };
+    gtk2 = {
+      configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
+      #      extraConfig = ''
+      #        gtk-enable-animations=1
+      #        gtk-primary-button-warps-slider=0
+      #        gtk-toolbar-style=3
+      #        gtk-menu-images=1
+      #        gtk-button-images=1
+      #
+      #      '';
+    };
+    gtk3 = {
+      # extraConfig = ''
+      #        gtk-button-images=true
+      #        gtk-decoration-layout=icon:minimize,maximize,close
+      #        gtk-enable-animations=true
+      #        gtk-menu-images=true
+      #        gtk-primary-button-warps-slider=false
+      #        gtk-toolbar-style=3
+      #        #gtk-modules=window-decorations-gtk-module:colorreload-gtk-module
+      #      '';
+      extraCss = "";
+    };
+    gtk4 = {
+      #      extraConfig = ''
+      #        gtk-application-prefer-dark-theme=true
+      #        gtk-decoration-layout=icon:minimize,maximize,close
+      #        gtk-enable-animations=true
+      #        gtk-primary-button-warps-slider=false
+      #      '';
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/himalaya/default.nix b/modules/home.legacy/conf/himalaya/default.nix
new file mode 100644
index 00000000..c072693e
--- /dev/null
+++ b/modules/home.legacy/conf/himalaya/default.nix
@@ -0,0 +1,8 @@
+{...}: {
+  programs.himalaya = {
+    enable = true;
+    settings = {
+      # TODO:
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/hyfetch/default.nix b/modules/home.legacy/conf/hyfetch/default.nix
new file mode 100644
index 00000000..aec21dbc
--- /dev/null
+++ b/modules/home.legacy/conf/hyfetch/default.nix
@@ -0,0 +1,20 @@
+{...}: {
+  programs.hyfetch = {
+    enable = true;
+    settings = {
+      preset = "rainbow";
+      mode = "rgb";
+      light_dark = "dark";
+      lightness = 0.65;
+      color_align = {
+        mode = "horizontal";
+        custom_colors = [];
+        fore_back = null;
+      };
+      backend = "neofetch";
+      distro = null;
+      pride_month_shown = [];
+      pride_month_disable = false;
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/iamb/config.json b/modules/home.legacy/conf/iamb/config.json
new file mode 100644
index 00000000..ca06d543
--- /dev/null
+++ b/modules/home.legacy/conf/iamb/config.json
@@ -0,0 +1,9 @@
+{
+    "profiles": {
+        "soispha": {
+            "user_id": "@soispha:vhack.eu",
+            "url": "https://matrix.vhack.eu"
+        }
+    },
+    "default_profile": "soispha"
+}
diff --git a/modules/home.legacy/conf/iamb/default.nix b/modules/home.legacy/conf/iamb/default.nix
new file mode 100644
index 00000000..2a93472c
--- /dev/null
+++ b/modules/home.legacy/conf/iamb/default.nix
@@ -0,0 +1,3 @@
+{...}: {
+  xdg.configFile."iamb/config.json".source = ./config.json;
+}
diff --git a/modules/home.legacy/conf/keepassxc/default.nix b/modules/home.legacy/conf/keepassxc/default.nix
new file mode 100644
index 00000000..3ac82812
--- /dev/null
+++ b/modules/home.legacy/conf/keepassxc/default.nix
@@ -0,0 +1,7 @@
+{
+  config,
+  pkgs,
+  ...
+}: {
+  xdg.configFile."keepassxc/keepassxc.ini".source = ./keepassxc.ini;
+}
diff --git a/modules/home.legacy/conf/keepassxc/keepassxc.ini b/modules/home.legacy/conf/keepassxc/keepassxc.ini
new file mode 100644
index 00000000..288a194b
--- /dev/null
+++ b/modules/home.legacy/conf/keepassxc/keepassxc.ini
@@ -0,0 +1,58 @@
+[General]
+AutoSaveAfterEveryChange=true
+BackupBeforeSave=true
+BackupFilePathPattern=/home/soispha/.local/share/keepassxc/{DB_FILENAME}.old.kdbx
+ConfigVersion=2
+HideWindowOnCopy=false
+
+[Browser]
+CustomProxyLocation=
+Enabled=true
+
+[FdoSecrets]
+Enabled=true
+
+[GUI]
+AdvancedSettings=true
+ApplicationTheme=dark
+CompactMode=false
+HidePasswords=true
+ShowExpiredEntriesOnDatabaseUnlockOffsetDays=1
+TrayIconAppearance=monochrome-light
+
+[KeeShare]
+Active=""
+Own=""
+QuietSuccess=true
+
+[PasswordGenerator]
+AdditionalChars=
+AdvancedMode=true
+Braces=true
+Dashes=true
+EASCII=true
+ExcludedChars=
+Length=128
+Logograms=true
+LowerCase=true
+Math=true
+Numbers=true
+Punctuation=true
+Quotes=true
+SpecialChars=true
+Type=0
+UpperCase=true
+WordCount=4
+WordSeparator=","
+
+[SSHAgent]
+Enabled=true
+
+[Security]
+HidePasswordPreviewPanel=true
+IconDownloadFallback=true
+LockDatabaseIdle=false
+LockDatabaseIdleSeconds=960
+PasswordEmptyPlaceholder=true
+PasswordsHidden=true
+PasswordsRepeatVisible=true
diff --git a/modules/home.legacy/conf/latexindent/default.nix b/modules/home.legacy/conf/latexindent/default.nix
new file mode 100644
index 00000000..0d776e14
--- /dev/null
+++ b/modules/home.legacy/conf/latexindent/default.nix
@@ -0,0 +1,8 @@
+{
+  config,
+  pkgs,
+  ...
+}: {
+  xdg.configFile."latexindent/indentconfig.yaml".source = ./indentconfig.yaml;
+  xdg.configFile."latexindent/mysettings.yaml".source = ./mysettings.yaml;
+}
diff --git a/modules/home.legacy/conf/latexindent/indentconfig.yaml b/modules/home.legacy/conf/latexindent/indentconfig.yaml
new file mode 100644
index 00000000..d67351f3
--- /dev/null
+++ b/modules/home.legacy/conf/latexindent/indentconfig.yaml
@@ -0,0 +1,2 @@
+paths:
+- /home/dt/.config/latexindent/mysettings.yaml
diff --git a/modules/home.legacy/conf/latexindent/mysettings.yaml b/modules/home.legacy/conf/latexindent/mysettings.yaml
new file mode 100644
index 00000000..9a0f8b2f
--- /dev/null
+++ b/modules/home.legacy/conf/latexindent/mysettings.yaml
@@ -0,0 +1,672 @@
+# defaultSettings.yaml for latexindent.pl, version 3.19.1, 2022-12-04
+#                      a script that aims to
+#                      beautify .tex, .sty, .cls files
+#
+# (or latexindent.exe if you're on Windows)
+#
+#---------------------------------------------------------------------------------------
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# See http://www.gnu.org/licenses/.
+#
+# Chris Hughes, 2017
+#
+# For all communication, please visit: https://github.com/cmhughes/latexindent.pl
+#
+#---------------------------------------------------------------------------------------
+# You should feel encouraged to change anything you like in these settings, but
+# it would probably be better to have your own user settings
+# files somewhere else - remember that this file may be overwritten
+# when you update your tex distribution. Please see the manual linked from:
+#
+#       https://github.com/cmhughes/latexindent.pl
+#
+# for details of how to create and configure your own settings files.
+#
+# Please read the manual (linked from above) first to understand what each switch does.
+#
+#---------------------------------------------------------------------------------------
+
+# latexindent can be called to act on a file without using the file's extension,
+# e.g, simply
+#       latexindent myfile
+# in which case the choice of file extension is chosen
+# according to the choices made in fileExtensionPreference
+# Other file extensions can be added.
+fileExtensionPreference:
+    .tex: 1
+    .sty: 2
+    .cls: 3
+    .bib: 4
+
+# default file extension of backup file (if -w switch is active)
+# for example, if your .tex file is called
+#       myfile.tex
+# and you specify the backupExtension as BACKUP.bak then your
+# backup file will be
+#       myfileBACKUP.bak
+backupExtension: .bak
+
+# only one backup per file:
+#   - if onlyOneBackUp is 0 then, as a safety measure,
+#     the number on the extension increments by 1 each time:
+#
+#           myfile.bak0, myfile.bak1, myfile.bak2
+#   - if you set onlyOnebackUp to 1, then the backup file will
+#     be overwritten each time (not recommended until you trust the script)
+onlyOneBackUp: 0
+
+# some users may want a finite number of backup files,
+# say at most 3; in which case, they can change this maxNumberOfBackUps.
+#
+# If maxNumberOfBackUps is set to 0 (or less) then infinitely
+# many backups are possible, unless onlyOneBackUp is switched on
+maxNumberOfBackUps: 0
+
+# some users may wish to cycle through back up files.
+#
+# for example, with maxNumberOfBackUps: 4, they may
+# wish to delete the oldest back up file, and keep only the most recent.
+#
+#    copy myfile.bak1 to myfile.bak0
+#    copy myfile.bak2 to myfile.bak1
+#    copy myfile.bak3 to myfile.bak2
+#    copy myfile.bak4 to myfile.bak3
+#
+# the back up will be written to myfile.bak4
+cycleThroughBackUps: 0
+
+# preferences for information displayed in the log file
+logFilePreferences:
+    showEveryYamlRead: 1
+    showAmalgamatedSettings: 0
+    showDecorationStartCodeBlockTrace: 0
+    showDecorationFinishCodeBlockTrace: 0
+    endLogFileWith: '--------------'
+    showGitHubInfoFooter: 1
+    Dumper:
+      Terse: 1
+      Indent: 1
+      Useqq: 1
+      Deparse: 1
+      Quotekeys: 0
+      Sortkeys: 1
+      Pair: " => "
+
+#  verbatim environments specified
+#  in this field will not be changed at all!
+verbatimEnvironments:
+    verbatim: 1
+    lstlisting: 1
+    minted: 1
+
+#  verbatim commands such as \verb! body !, \lstinline$something else$
+verbatimCommands:
+    verb: 1
+    lstinline: 1
+
+#  no indent blocks (not necessarily verbatim
+#  environments) which are marked as %\begin{noindent}
+#  or anything else that you detail in the following
+noIndentBlock:
+    noindent: 1
+    cmhtest: 1
+
+# \begin{document} and \end{document} are treated differently
+# by latexindent within filecontents environments
+fileContentsEnvironments:
+    filecontents: 1
+    filecontents*: 1
+
+# indent preamble
+indentPreamble: 1
+
+# assume no preamble in cls, sty, by default
+lookForPreamble:
+    .tex: 1
+    .sty: 0
+    .cls: 0
+    .bib: 0
+
+# some preambles can contain \begin and \end statements
+# that are not in their 'standard environment block', for example,
+# consider the following key = values:
+#    preheadhook={\begin{mdframed}[style=myframedstyle]},
+#    postfoothook=\end{mdframed},
+preambleCommandsBeforeEnvironments: 0
+
+# default value of indentation
+defaultIndent: "    "
+
+# remove trailing whitespace from all lines
+removeTrailingWhitespace:
+    beforeProcessing: 0
+    afterProcessing: 1
+
+# name of code blocks that should have their body aligned at ampersand delimiters
+lookForAlignDelims:
+   tabular:
+      delims: 1
+      alignDoubleBackSlash: 1
+      spacesBeforeDoubleBackSlash: 1
+      multiColumnGrouping: 0
+      alignRowsWithoutMaxDelims: 1
+      spacesBeforeAmpersand: 1
+      spacesAfterAmpersand: 1
+      justification: left
+      alignFinalDoubleBackSlash: 0
+      dontMeasure: 0
+      delimiterRegEx: '(?<!\\)(&)'
+      delimiterJustification: left
+      lookForChildCodeBlocks: 1
+   tabularx:
+      delims: 1
+   longtable: 1
+   tabu: 1
+   array: 1
+   matrix: 1
+   listabla: 1
+   # amsmath
+   align: 1
+   align*: 1
+   alignat: 1
+   alignat*: 1
+   aligned: 1
+   bmatrix: 1
+   Bmatrix: 1
+   cases: 1
+   flalign: 1
+   flalign*: 1
+   pmatrix: 1
+   vmatrix: 1
+   Vmatrix: 1
+   # mathtools
+   cases*: 1
+   dcases: 1
+   dcases*: 1
+   rcases: 1
+   rcases*: 1
+   drcases: 1
+   drcases*: 1
+   # nicematrix
+   NiceTabular: 1
+   NiceMatrix: 1
+   pNiceMatrix: 1
+   bNiceMatrix: 1
+   BNiceMatrix: 1
+   vNiceMatrix: 1
+   VNiceMatrix: 1
+   NiceArray: 1
+   pNiceArrayC: 1
+   bNiceArrayC: 1
+   BNiceArrayC: 1
+   vNiceArrayC: 1
+   VNiceArrayC: 1
+   NiceArrayCwithDelims: 1
+   pNiceArrayRC: 1
+   bNiceArrayRC: 1
+   BNiceArrayRC: 1
+   vNiceArrayRC: 1
+   VNiceArrayRC: 1
+   NiceArrayRCwithDelims: 1
+   # tabularray
+   tblr: 1
+   longtblr: 1
+   talltblr: 1
+
+# if you want the script to look for \item commands
+# and format it, as follows (for example),
+#       \begin{itemize}
+#           \item content here
+#                 next line is indented
+#                 next line is indented
+#           \item another item
+#       \end{itemize}
+# then populate indentAfterItems. See also itemNames
+indentAfterItems:
+    itemize: 1
+    itemize*: 1
+    enumerate: 1
+    enumerate*: 1
+    description: 1
+    description*: 1
+    list: 1
+
+# if you want to use other names for your items (for example, \part)
+# then populate them here; note that you can trick latexindent.pl
+# into indenting all kinds of commands (within environments specified in
+# indentAfterItems) using this technique.
+itemNames:
+    item: 1
+    myitem: 1
+
+# specialBeginEnd is, by default, mathmode focus, although
+# there's no restrictions
+specialBeginEnd:
+    displayMath:
+        begin: '\\\['
+        end: '\\\]'
+        lookForThis: 1
+    inlineMath:
+        begin: '(?<!\$)(?<!\\)\$(?!\$)'
+        end: '(?<!\\)\$(?!\$)'
+        lookForThis: 1
+    displayMathTeX:
+        begin: '\$\$'
+        end: '\$\$'
+        lookForThis: 1
+    specialBeforeCommand: 0
+
+# if you want to add indentation after
+# a heading, such as \part, \chapter, etc
+# then populate it in here - you can add
+# an indent rule to indentRules if you would
+# like something other than defaultIndent
+#
+# you can also change the level if you like,
+# or add your own title command
+indentAfterHeadings:
+    part:
+       indentAfterThisHeading: 0
+       level: 1
+    chapter:
+       indentAfterThisHeading: 0
+       level: 2
+    section:
+       indentAfterThisHeading: 0
+       level: 3
+    subsection:
+       indentAfterThisHeading: 0
+       level: 4
+    subsection*:
+       indentAfterThisHeading: 0
+       level: 4
+    subsubsection:
+       indentAfterThisHeading: 0
+       level: 5
+    paragraph:
+       indentAfterThisHeading: 0
+       level: 6
+    subparagraph:
+       indentAfterThisHeading: 0
+       level: 7
+
+# maximum indentation, off by default
+maximumIndentation: -1
+
+# if you don't want to have additional indentation
+# in a code block, then add it to noAdditionalIndent; note that
+# code blocks in this field will inherit
+# the *current* level of indentation they just won't
+# get any *additional* indentation
+noAdditionalIndent:
+    myexample: 0
+    mydefinition: 0
+    problem: 0
+    exercises: 0
+    mysolution: 0
+    foreach: 0
+    widepage: 0
+    comment: 0
+    document: 0
+    frame: 0
+
+# if you have indent rules for particular code blocks
+# then you can populate them in indentRules; for example, you might just want
+# to use a space " " or maybe a double tab "        "
+indentRules:
+   myenvironment: "        "
+   anotherenvironment: "                "
+   chapter: " "
+   section: " "
+   item: "      "
+   myitem: "        "
+
+# set noAdditionalIndent globally for codeblocks
+noAdditionalIndentGlobal:
+    environments: 0
+    commands: 0
+    optionalArguments: 0
+    mandatoryArguments: 0
+    ifElseFi: 0
+    items: 0
+    keyEqualsValuesBracesBrackets: 0
+    namedGroupingBracesBrackets: 0
+    UnNamedGroupingBracesBrackets: 0
+    specialBeginEnd: 0
+    afterHeading: 0
+    filecontents: 0
+
+# set indentRules globally for codeblocks; these need
+# to be horizontal spaces, if they are to be used
+indentRulesGlobal:
+    environments: 0
+    commands: 0
+    optionalArguments: 0
+    mandatoryArguments: 0
+    ifElseFi: 0
+    items: 0
+    keyEqualsValuesBracesBrackets: 0
+    namedGroupingBracesBrackets: 0
+    UnNamedGroupingBracesBrackets: 0
+    specialBeginEnd: 0
+    afterHeading: 0
+    filecontents: 0
+
+# command code block details
+commandCodeBlocks:
+    roundParenthesesAllowed: 1
+    stringsAllowedBetweenArguments:
+      -
+        amalgamate: 1
+      - 'node'
+      - 'at'
+      - 'to'
+      - 'decoration'
+      - '\+\+'
+      - '\-\-'
+      - '\#\#\d'
+    commandNameSpecial:
+      -
+        amalgamate: 1
+      - '@ifnextchar\['
+
+# change dos line breaks into unix
+dos2unixlinebreaks: 1
+
+# modifyLineBreaks will only be searched if the -m
+# switch is active
+#
+# poly-switch examples:
+#
+#    BeginStartsOnOwnLine:
+#       modify line breaks before a begin statement
+#
+#       when set to -1, e.g
+#               some text some text
+#               \begin{myenvironment}
+#           will be changed to
+#               some text some text \begin{myenvironment}
+#       when set to 0, the switch is ignored
+#       when set to 1, e.g
+#               some text some text \begin{myenvironment}
+#           will be changed to
+#               some text some text
+#               \begin{myenvironment}
+#       when set to 2, e.g
+#               some text some text \begin{myenvironment}
+#           will be changed to
+#               some text some text%
+#               \begin{myenvironment}
+#       when set to 3, e.g
+#               some text some text \begin{myenvironment}
+#           will be changed to
+#               some text some text
+#
+#               \begin{myenvironment}
+#
+#    BodyStartsOnOwnLine:
+#       modify line breaks before the beginning of the body
+#
+#       when set to -1, e.g
+#               \begin{myenv}
+#                   body text body text
+#           will be changed to
+#               \begin{myenv}body text body text
+#       when set to 0, the switch is ignored
+#       when set to 1, e.g
+#               \begin{myenv}body text body text
+#           will be changed to
+#               \begin{myenv}
+#                   body text body text
+#       when set to 2, e.g
+#               \begin{myenv}body text body text
+#           will be changed to
+#               \begin{myenv}%
+#                   body text body text
+#       when set to 3, e.g
+#               \begin{myenv}body text body text
+#           will be changed to
+#               \begin{myenv}
+#
+#                   body text body text
+#
+#    EndStartsOnOwnLine:
+#       modify line breaks before the end statement
+#
+#       when set to -1, e.g
+#               some text some text
+#               \end{myenvironment}
+#           will be changed to
+#               some text some text \end{myenvironment}
+#       when set to 0, the switch is ignored
+#       when set to 1, e.g
+#               some text some text \end{myenvironment}
+#           will be changed to
+#               some text some text
+#               \end{myenvironment}
+#       when set to 2, e.g
+#               some text some text \end{myenvironment}
+#           will be changed to
+#               some text some text%
+#               \end{myenvironment}
+#       when set to 3, e.g
+#               some text some text \end{myenvironment}
+#           will be changed to
+#               some text some text
+#
+#               \end{myenvironment}
+#
+#    EndFinishesWithLineBreak:
+#       modify line breaks after the end statement
+#
+#       when set to -1, e.g
+#               \end{myenvironment}
+#               some text some text
+#           will be changed to
+#                   \end{myenvironment}some text some text
+#       when set to 0, the switch is ignored
+#       when set to 1, e.g
+#               \end{myenvironment}some text some text
+#           will be changed to
+#                   \end{myenvironment}
+#                   some text some text
+#       when set to 2, e.g
+#               \end{myenvironment}some text some text
+#           will be changed to
+#                   \end{myenvironment}%
+#                   some text some text
+#       when set to 3, e.g
+#               \end{myenvironment}some text some text
+#           will be changed to
+#                   \end{myenvironment}
+#
+#                   some text some text
+#
+# you can specify settings on a per-name basis
+modifyLineBreaks:
+    preserveBlankLines: 1
+    condenseMultipleBlankLinesInto: 1
+    oneSentencePerLine:
+        manipulateSentences: 0
+        removeSentenceLineBreaks: 1
+        multipleSpacesToSingle: 1
+        textWrapSentences: 0   # setting to 1 disables main textWrap routine
+        sentenceIndent: ""
+        sentencesFollow:
+            par: 1
+            blankLine: 1
+            fullStop: 1
+            exclamationMark: 1
+            questionMark: 1
+            rightBrace: 1
+            commentOnPreviousLine: 1
+            other: 0
+        sentencesBeginWith:
+            A-Z: 1
+            a-z: 0
+            other: 0
+        sentencesEndWith:
+            basicFullStop: 0
+            betterFullStop: 1
+            exclamationMark: 1
+            questionMark: 1
+            other: 0
+    textWrapOptions:
+        columns: 0
+        multipleSpacesToSingle: 1
+        removeBlockLineBreaks: 1
+        blocksFollow:
+           headings: 1
+           commentOnPreviousLine: 1
+           par: 1
+           blankLine: 1
+           verbatim: 1
+           filecontents: 1
+           other: '\\\]|\\item(?:\h|\[)'      # regex
+        blocksBeginWith:
+           A-Z: 1
+           a-z: 1
+           0-9: 0
+           other: 0                           # regex
+        blocksEndBefore:
+           commentOnOwnLine: 1
+           verbatim: 1
+           filecontents: 1
+           other: '\\begin\{|\\\[|\\end\{'    # regex
+        huge: overflow                        # forbid mid-word line breaks
+        separator: ""
+    # poly-switches below here
+    environments:
+        BeginStartsOnOwnLine: 0
+        BodyStartsOnOwnLine: 0
+        EndStartsOnOwnLine: 0
+        EndFinishesWithLineBreak: 0
+        equation*:
+            BeginStartsOnOwnLine: 0
+            BodyStartsOnOwnLine: 0
+            EndStartsOnOwnLine: 0
+            EndFinishesWithLineBreak: 0
+    ifElseFi:
+        IfStartsOnOwnLine: 0
+        BodyStartsOnOwnLine: 0
+        OrStartsOnOwnLine: 0
+        OrFinishesWithLineBreak: 0
+        ElseStartsOnOwnLine: 0
+        ElseFinishesWithLineBreak: 0
+        FiStartsOnOwnLine: 0
+        FiFinishesWithLineBreak: 0
+        ifnum:
+            IfStartsOnOwnLine: 0
+            BodyStartsOnOwnLine: 0
+            OrStartsOnOwnLine: 0
+            OrFinishesWithLineBreak: 0
+            ElseStartsOnOwnLine: 0
+            ElseFinishesWithLineBreak: 0
+            FiStartsOnOwnLine: 0
+            FiFinishesWithLineBreak: 0
+    commands:
+        CommandStartsOnOwnLine: 0
+        CommandNameFinishesWithLineBreak: 0
+    optionalArguments:
+        LSqBStartsOnOwnLine: 0
+        OptArgBodyStartsOnOwnLine: 0
+        RSqBStartsOnOwnLine: 0
+        RSqBFinishesWithLineBreak: 0
+    mandatoryArguments:
+        LCuBStartsOnOwnLine: 0
+        MandArgBodyStartsOnOwnLine: 0
+        RCuBStartsOnOwnLine: 0
+        RCuBFinishesWithLineBreak: 0
+    keyEqualsValuesBracesBrackets:
+        KeyStartsOnOwnLine: 0
+        EqualsStartsOnOwnLine: 0
+        EqualsFinishesWithLineBreak: 0
+    items:
+        ItemStartsOnOwnLine: 0
+        ItemFinishesWithLineBreak: 0
+    namedGroupingBracesBrackets:
+        NameStartsOnOwnLine: 0
+        NameFinishesWithLineBreak: 0
+    specialBeginEnd:
+        SpecialBeginStartsOnOwnLine: 0
+        SpecialBodyStartsOnOwnLine: 0
+        SpecialEndStartsOnOwnLine: 0
+        SpecialEndFinishesWithLineBreak: 0
+    verbatim:
+        VerbatimBeginStartsOnOwnLine: 0
+        VerbatimEndFinishesWithLineBreak: 0
+
+# replacements, only active when either -r or -rr switches are active
+replacements:
+  -
+    amalgamate: 1
+  -
+    this: 'latexindent.pl'
+    that: 'pl.latexindent'
+    lookForThis: 0
+    when: before
+
+# fineTuning allows you to tweak the internal pattern matching that
+# is central to latexindent.pl
+fineTuning:
+    environments:
+      name: '[a-zA-Z@\*0-9_\\]+'
+    ifElseFi:
+      name: '(?!@?if[a-zA-Z@]*?\{)@?if[a-zA-Z@]*?'
+    commands:
+      name: '[+a-zA-Z@\*0-9_\:]+?'
+    items:
+      canBeFollowedBy: '(?:\[[^]]*?\])|(?:<[^>]*?>)'
+    keyEqualsValuesBracesBrackets:
+      name: '[a-zA-Z@\*0-9_\/.:\#-]+[a-zA-Z@\*0-9_\/.\h\{\}:\#-]*?'
+      follow: '(?:(?<!\\)\{)|,|(?:(?<!\\)\[)'
+    namedGroupingBracesBrackets:
+      name: '[0-9\.a-zA-Z@\*><]+?'
+      follow: '\h|\R|\{|\[|\$|\)|\('
+    UnNamedGroupingBracesBrackets:
+      follow: '\{|\[|,|&|\)|\(|\$'
+    arguments:
+      before: '(?:#\d\h*;?,?\/?)+|\<.*?\>'
+      between: '_|\^|\*'
+    trailingComments:
+      notPreceededBy: '(?<!\\)'
+    modifyLineBreaks:
+      doubleBackSlash: '\\\\(?:\h*\[\h*\d+\h*[a-zA-Z]+\h*\])?'
+      comma: ','
+      betterFullStop: |-
+        (?x)                                # ignore spaces in the below
+        (?:                                 #
+          \.\)                              # .)
+          (?!\h*[a-z])                      # not *followed by* a-z
+        )                                   #
+        |                                   # OR
+        (?:                                 #
+          (?<!                              # not *preceeded by*
+            (?:                             #
+              (?:[eE]\.[gG])                # e.g OR E.g OR e.G OR E.G
+              |                             #
+              (?:[iI]\.[eE])                # i.e OR I.e OR i.E OR I.E
+              |                             #
+              (?:etc)                       # etc
+            )                               #
+          )                                 #
+        )                                   #
+        \.                                  # .
+        (?!                                 # not *followed by*
+          (?:                               #
+            [a-zA-Z0-9-~,]                  #
+            |                               #
+            \),                             # ),
+            |                               #
+            \)\.                            # ).
+          )                                 #
+        )                                   #
diff --git a/modules/home.legacy/conf/less/command.less b/modules/home.legacy/conf/less/command.less
new file mode 100644
index 00000000..95b79b02
--- /dev/null
+++ b/modules/home.legacy/conf/less/command.less
@@ -0,0 +1,127 @@
+#command
+\r         forw-line
+\n         forw-line
+e          forw-line
+t          forw-line
+\kd        forw-line
+ˆE         forw-line
+ˆN         forw-line
+n          back-line
+y          back-line
+ˆY         back-line
+ˆK         back-line
+ˆP         back-line
+T          forw-line-force
+N          back-line-force
+Y          back-line-force
+d          forw-scroll
+ˆD         forw-scroll
+u          back-scroll
+ˆU         back-scroll
+\40        forw-screen
+f          forw-screen
+ˆF         forw-screen
+ˆV         forw-screen
+\kD        forw-screen
+b          back-screen
+ˆB         back-screen
+\ev        back-screen
+\kU        back-screen
+z          forw-window
+w          back-window
+\e\40      forw-screen-force
+F          forw-forever
+\eF        forw-until-hilite
+R          repaint-flush
+r          repaint
+ˆR         repaint
+ˆL         repaint
+\en        undo-hilite
+\eU        clear-search
+g          goto-line
+\kh        goto-line
+<          goto-line
+\e<        goto-line
+p          percent
+%          percent
+\e[        left-scroll
+\e]        right-scroll
+\e(        left-scroll
+\e)        right-scroll
+\kl        left-scroll
+\kr        right-scroll
+\e{        no-scroll
+\e}        end-scroll
+{          forw-bracket {}
+}          back-bracket {}
+(          forw-bracket ()
+)          back-bracket ()
+[          forw-bracket []
+]          back-bracket []
+\eˆF       forw-bracket
+\eˆB       back-bracket
+G          goto-end
+\e>        goto-end
+>          goto-end
+\ke        goto-end
+\eG        goto-end-buffered
+=          status
+ˆG         status
+:f         status
+/          forw-search
+?          back-search
+\e/        forw-search *
+\e?        back-search *
+l          repeat-search
+\el        repeat-search-all
+L          reverse-search
+\eL        reverse-search-all
+&          filter
+m          set-mark
+M          set-mark-bottom
+\em        clear-mark
+'          goto-mark
+ˆXˆX       goto-mark
+E          examine
+:e         examine
+ˆXˆV       examine
+:n         next-file
+:p         prev-file
+j          next-tag
+J          prev-tag
+:x         index-file
+:d         remove-file
+-          toggle-option
+:t         toggle-option t
+s          toggle-option o
+           ## Use a long option name by starting the
+           ## extra string with ONE dash; eg:
+           ##   s toggle-option -log-file\n
+_          display-option
+|          pipe
+v          visual
+!          shell
+#          pshell
++          firstcmd
+H          help
+h          help
+V          version
+0          digit
+1          digit
+2          digit
+3          digit
+4          digit
+5          digit
+6          digit
+7          digit
+8          digit
+9          digit
+q          quit
+Q          quit
+:q         quit
+:Q         quit
+ZZ         quit
+
+# Stop processing (and ignore less' default values)
+# (// FIXME: This stopped working and thus we just comment it out <2024-08-03> )
+# stop
diff --git a/modules/home.legacy/conf/less/default.nix b/modules/home.legacy/conf/less/default.nix
new file mode 100644
index 00000000..9991ebef
--- /dev/null
+++ b/modules/home.legacy/conf/less/default.nix
@@ -0,0 +1,18 @@
+{config, ...}: {
+  home.sessionVariables = {
+    PAGER = "less";
+    MANPAGER = "less --color=d+r --color=u+b";
+
+    # These are added here because adding them in the lesskey file somehow doesn't work.
+    LESSHISTSIZE = 10000;
+    LESSHISTFILE = "${config.xdg.dataHome}/less/history";
+  };
+
+  programs.less = {
+    enable = true;
+    keys =
+      builtins.readFile ./command.less
+      + builtins.readFile ./line-edit.less
+      + builtins.readFile ./env.less;
+  };
+}
diff --git a/modules/home.legacy/conf/less/env.less b/modules/home.legacy/conf/less/env.less
new file mode 100644
index 00000000..30f7645d
--- /dev/null
+++ b/modules/home.legacy/conf/less/env.less
@@ -0,0 +1,2 @@
+#env
+LESS = -R --use-color --incsearch --modelines=2 --save-marks --wordwrap --status-line
diff --git a/modules/home.legacy/conf/less/line-edit.less b/modules/home.legacy/conf/less/line-edit.less
new file mode 100644
index 00000000..a7e889db
--- /dev/null
+++ b/modules/home.legacy/conf/less/line-edit.less
@@ -0,0 +1,29 @@
+#line-edit
+\t           forw-complete
+\17          back-complete
+\e\t         back-complete
+ˆL           expand
+ˆV           literal
+ˆA           literal
+\es          right
+\kr          right
+\eh          left
+\kl          left
+\eb          word-left
+\e\kl        word-left
+\ew          word-right
+\e\kr        word-right
+\ei          insert
+\ex          delete
+\kx          delete
+\eX          word-delete
+\ekx         word-delete
+\e\b         word-backspace
+\e0          home
+\kh          home
+\e$          end
+\ke          end
+\en          up
+\ku          up
+\et          down
+ˆG           abort
diff --git a/modules/home.legacy/conf/lf/colors b/modules/home.legacy/conf/lf/colors
new file mode 100644
index 00000000..1c2853ec
--- /dev/null
+++ b/modules/home.legacy/conf/lf/colors
@@ -0,0 +1,184 @@
+# vim:ft=dircolors
+# (This is not a dircolors file but it helps to highlight colors and comments)
+
+# default values from dircolors
+# (entries with a leading # are not implemented in lf)
+# #no     00              # NORMAL
+# fi      00              # FILE
+# #rs     0               # RESET
+# di      01;34           # DIR
+# ln      01;36           # LINK
+# #mh     00              # MULTIHARDLINK
+# pi      40;33           # FIFO
+# so      01;35           # SOCK
+# #do     01;35           # DOOR
+# bd      40;33;01        # BLK
+# cd      40;33;01        # CHR
+# or      40;31;01        # ORPHAN
+# #mi     00              # MISSING
+# su      37;41           # SETUID
+# sg      30;43           # SETGID
+# #ca     30;41           # CAPABILITY
+# tw      30;42           # STICKY_OTHER_WRITABLE
+# ow      34;42           # OTHER_WRITABLE
+# st      37;44           # STICKY
+# ex      01;32           # EXEC
+
+# default values from lf (with matching order)
+# ln      01;36   # LINK
+# or      31;01   # ORPHAN
+# tw      01;34   # STICKY_OTHER_WRITABLE
+# ow      01;34   # OTHER_WRITABLE
+# st      01;34   # STICKY
+# di      01;34   # DIR
+# pi      33      # FIFO
+# so      01;35   # SOCK
+# bd      33;01   # BLK
+# cd      33;01   # CHR
+# su      01;32   # SETUID
+# sg      01;32   # SETGID
+# ex      01;32   # EXEC
+# fi      00      # FILE
+
+
+# file types (with matching order)
+ln      01;93       # LINK
+or      01;93;106   # ORPHAN
+tw      35          # STICKY_OTHER_WRITABLE
+ow      35          # OTHER_WRITABLE
+st      01;96       # STICKY
+di      01;36       # DIR
+pi      33          # FIFO
+so      01;35       # SOCK
+bd      33;01       # BLK
+cd      33;01       # CHR
+su      01;32       # SETUID
+sg      01;32       # SETGID
+ex      03;01;95    # EXEC
+fi      00          # FILE
+
+# links to hide
+~/.mozilla       01;08;30
+~/.ssh           01;08;30
+~/.zshenv        01;08;30
+
+~/.steampid      01;08;30
+~/.steam         01;08;30
+~/.steampath     01;08;30
+
+# archives or compressed (dircolors defaults)
+*.tar   01;31
+*.tgz   01;31
+*.arc   01;31
+*.arj   01;31
+*.taz   01;31
+*.lha   01;31
+*.lz4   01;31
+*.lzh   01;31
+*.lzma  01;31
+*.tlz   01;31
+*.txz   01;31
+*.tzo   01;31
+*.t7z   01;31
+*.zip   01;31
+*.z     01;31
+*.dz    01;31
+*.gz    01;31
+*.lrz   01;31
+*.lz    01;31
+*.lzo   01;31
+*.xz    01;31
+*.zst   01;31
+*.tzst  01;31
+*.bz2   01;31
+*.bz    01;31
+*.tbz   01;31
+*.tbz2  01;31
+*.tz    01;31
+*.deb   01;31
+*.rpm   01;31
+*.jar   01;31
+*.war   01;31
+*.ear   01;31
+*.sar   01;31
+*.rar   01;31
+*.alz   01;31
+*.ace   01;31
+*.zoo   01;31
+*.cpio  01;31
+*.7z    01;31
+*.rz    01;31
+*.cab   01;31
+*.wim   01;31
+*.swm   01;31
+*.dwm   01;31
+*.esd   01;31
+
+# image formats (dircolors defaults)
+*.jpg   01;35
+*.jpeg  01;35
+*.mjpg  01;35
+*.mjpeg 01;35
+*.gif   01;35
+*.bmp   01;35
+*.pbm   01;35
+*.pgm   01;35
+*.ppm   01;35
+*.tga   01;35
+*.xbm   01;35
+*.xpm   01;35
+*.tif   01;35
+*.tiff  01;35
+*.png   01;35
+*.svg   01;35
+*.svgz  01;35
+*.mng   01;35
+*.pcx   01;35
+*.mov   01;35
+*.mpg   01;35
+*.mpeg  01;35
+*.m2v   01;35
+*.mkv   01;35
+*.webm  01;35
+*.ogm   01;35
+*.mp4   01;35
+*.m4v   01;35
+*.mp4v  01;35
+*.vob   01;35
+*.qt    01;35
+*.nuv   01;35
+*.wmv   01;35
+*.asf   01;35
+*.rm    01;35
+*.rmvb  01;35
+*.flc   01;35
+*.avi   01;35
+*.fli   01;35
+*.flv   01;35
+*.gl    01;35
+*.dl    01;35
+*.xcf   01;35
+*.xwd   01;35
+*.yuv   01;35
+*.cgm   01;35
+*.emf   01;35
+*.ogv   01;35
+*.ogx   01;35
+
+# audio formats (dircolors defaults)
+*.aac   00;36
+*.au    00;36
+*.flac  00;36
+*.m4a   00;36
+*.mid   00;36
+*.midi  00;36
+*.mka   00;36
+*.mp3   00;36
+*.mpc   00;36
+*.ogg   00;36
+*.ra    00;36
+*.wav   00;36
+*.oga   00;36
+*.opus  00;36
+*.spx   00;36
+*.xspf  00;36
diff --git a/modules/home.legacy/conf/lf/commands/default.nix b/modules/home.legacy/conf/lf/commands/default.nix
new file mode 100644
index 00000000..933769ac
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/default.nix
@@ -0,0 +1,227 @@
+{
+  pkgs,
+  sysLib,
+  shell_library,
+  system,
+  ...
+}: let
+  functionCall = {
+    name,
+    dependencies,
+    replacementStrings,
+    ...
+  }:
+    sysLib.writeShellScript {
+      inherit name;
+      src = ./scripts/${name}.sh;
+      keepPath = true;
+      dependencies = dependencies ++ (builtins.attrValues {inherit (pkgs) dash coreutils;});
+      inherit replacementStrings;
+    }
+    + "/bin/${name}";
+
+  shell = {
+    name,
+    dependencies,
+    replacementStrings ? null,
+    ...
+  }: ''
+    ''${{
+      ${functionCall {inherit name dependencies replacementStrings;}}
+    }}
+  ''; # closes the lf tui
+  pipe = {
+    name,
+    dependencies,
+    replacementStrings ? null,
+    ...
+  }: ''
+    %{{
+      ${functionCall {inherit name dependencies replacementStrings;}}
+    }}
+  ''; # runs the command in the ui/term bar
+  async = {
+    name,
+    dependencies,
+    replacementStrings ? null,
+    ...
+  }: ''
+    &{{
+      ${functionCall {inherit name dependencies replacementStrings;}}
+    }}
+  ''; # runs the command in the background
+  wait = {
+    name,
+    dependencies,
+    replacementStrings ? null,
+    ...
+  }: ''
+    !{{
+      ${functionCall {inherit name dependencies replacementStrings;}}
+    }}
+  ''; # adds a prompt after the command has run
+in {
+  archive = shell {
+    name = "archive";
+    dependencies = builtins.attrValues {
+      inherit
+        (pkgs)
+        fzf
+        gnutar
+        xz
+        p7zip
+        zip
+        ;
+    };
+  };
+  broot_jump = shell {
+    name = "broot_jump";
+    dependencies = builtins.attrValues {
+      inherit (pkgs) broot;
+    };
+  };
+  chmod = pipe {
+    name = "chmod";
+    dependencies = [];
+  };
+  clear_trash = shell {
+    name = "clear_trash";
+    dependencies = builtins.attrValues {
+      inherit
+        (pkgs)
+        fzf
+        trashy
+        ;
+    };
+  };
+  dl_file = pipe {
+    name = "dl_file";
+    dependencies = builtins.attrValues {
+      inherit
+        (pkgs)
+        xdragon
+        curl
+        ;
+    };
+  };
+  dragon = pipe {
+    name = "dragon";
+    dependencies = builtins.attrValues {
+      inherit
+        (pkgs)
+        xdragon
+        ;
+    };
+  };
+  dragon_individual = pipe {
+    name = "dragon_individual";
+    dependencies = builtins.attrValues {
+      inherit
+        (pkgs)
+        xdragon
+        ;
+    };
+  };
+  dragon_stay = pipe {
+    name = "dragon_stay";
+    dependencies = builtins.attrValues {
+      inherit
+        (pkgs)
+        xdragon
+        ;
+    };
+  };
+  execute = shell {
+    name = "execute";
+    dependencies = [];
+  };
+  follow_link = pipe {
+    name = "follow_link";
+    dependencies = with pkgs; [lf];
+  };
+  fzf_jump = shell {
+    name = "fzf_jump";
+    dependencies = builtins.attrValues {
+      inherit (pkgs) fzf lf gnused;
+    };
+  };
+  mk_dir = pipe {
+    name = "mk_dir";
+    dependencies = [];
+  };
+  mk_file = shell {
+    name = "mk_file";
+    dependencies = [];
+  };
+  mk_file_and_edit = shell {
+    name = "mk_file_and_edit";
+    dependencies = [];
+  };
+  mk_ln = pipe {
+    name = "mk_ln";
+    dependencies = [];
+  };
+  mk_scr_default = shell {
+    name = "mk_scr_default";
+    dependencies = builtins.attrValues {};
+    replacementStrings = {
+      SHELL_LIBRARY_TEMPLATE = "${shell_library.rawTemplate."${system}"}";
+    };
+  };
+  mk_scr_temp = shell {
+    name = "mk_scr_temp";
+    dependencies = builtins.attrValues {};
+    replacementStrings = {
+      SHELL_LIBRARY_TEMPLATE = "${shell_library.rawTemplate."${system}"}";
+      TO_BE_SHELL_LIBRARY_PATH = "%SHELL_LIBRARY_PATH"; # replacement is not recursive
+    };
+  };
+  view_file = async {
+    name = "view_file";
+    dependencies = builtins.attrValues {inherit (pkgs) file;};
+  };
+  go_project_base_directory = async {
+    name = "go_project_root";
+    dependencies = [];
+  };
+  restore_trash = shell {
+    name = "restore_trash";
+    dependencies = builtins.attrValues {
+      inherit
+        (pkgs)
+        fzf
+        trashy
+        ;
+    };
+  };
+  set_wall_paper = pipe {
+    name = "set_wall_paper";
+    dependencies = [];
+  };
+  stripspace = pipe {
+    name = "stripspace";
+    dependencies = [];
+  };
+  trash = pipe {
+    name = "trash";
+    dependencies = builtins.attrValues {
+      inherit
+        (pkgs)
+        trashy
+        trash-cli
+        findutils
+        ;
+    };
+  };
+  unarchive = pipe {
+    name = "unarchive";
+    dependencies = builtins.attrValues {
+      inherit
+        (pkgs)
+        gnutar
+        unzip
+        p7zip
+        ;
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/lf/commands/scripts/archive.sh b/modules/home.legacy/conf/lf/commands/scripts/archive.sh
new file mode 100755
index 00000000..25f40534
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/archive.sh
@@ -0,0 +1,77 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# Option '-f' disables pathname expansion which can be useful when $f, $fs, and
+# $fx variables contain names with '*' or '?' characters. However, this option
+# is used selectively within individual commands as it can be limiting at
+# times.
+set -f
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+
+archivers="$(tmp echo gzip xz 7z zip)"
+archiver="$(awk '{for (i=1; i<=NF; i++) print $i}' "$archivers" | fzf)"
+
+case "$archiver" in
+"gzip")
+    ext=tar.gz
+    ;;
+"xz")
+    ext=tar.xz
+    ;;
+"7z")
+    ext=7z
+    ;;
+"zip")
+    ext=zip
+    ;;
+esac
+
+prompt "Archive name: "
+name=""
+while [ -z "$name" ] || [ -e "$name" ]; do
+    read -r name_base
+    name="$name_base.$ext"
+    if [ -e "$name" ]; then
+        prompt "Archive already exists, overwrite [y|N]: "
+        read -r ans
+
+        if [ "$ans" = "y" ]; then
+            break
+        else
+            prompt "Archive name: "
+        fi
+    fi
+done
+
+root="$(if [ "$(pwd)" = "/" ]; then pwd; else echo "$(pwd)/"; fi)"
+
+# fx contains all selected file name separated by a newline
+while read -r raw_file; do
+    file="$(echo "$raw_file" | sed "s|$root||")"
+    set -- "$@" "$file"
+done <"$(tmp echo "$fx")"
+
+case "$archiver" in
+"gzip")
+    tar --create --gzip -file="$name" "$@"
+    ;;
+"xz")
+    tar --create --file="$name" "$@"
+    xz --compress -9 --extreme --threads=0 "$name"
+    ;;
+"7z")
+    7z a "$name" "$@"
+    ;;
+"zip")
+    zip --symlinks -9 -r "$name" "$@"
+    ;;
+esac
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/broot_jump.sh b/modules/home.legacy/conf/lf/commands/scripts/broot_jump.sh
new file mode 100755
index 00000000..8f40ba01
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/broot_jump.sh
@@ -0,0 +1,25 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+tmp=$(mktmp)
+res="$(broot --outcmd "$tmp" && sed 's/cd //' "$tmp")"
+
+if [ -f "$res" ]; then
+    cmd="select"
+elif [ -d "$res" ]; then
+    cmd="cd"
+fi
+
+lf -remote "send '$id' '$cmd' '$res'"
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/chmod.sh b/modules/home.legacy/conf/lf/commands/scripts/chmod.sh
new file mode 100755
index 00000000..9859127b
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/chmod.sh
@@ -0,0 +1,24 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+readp "Mode bits: " bits
+# shellcheck disable=SC2269
+bits="$bits"
+
+while read -r file; do
+    chmod "$bits" "$file"
+done <"$(tmp echo "$fx")"
+
+lf -remote 'send reload'
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/clear_trash.sh b/modules/home.legacy/conf/lf/commands/scripts/clear_trash.sh
new file mode 100755
index 00000000..9052bb5f
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/clear_trash.sh
@@ -0,0 +1,8 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# could also use --force, for instand removal
+trash list | fzf --multi | awk '{print $NF}' | xargs trash empty --match=exact
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/cow_cp.sh b/modules/home.legacy/conf/lf/commands/scripts/cow_cp.sh
new file mode 100755
index 00000000..98675b9e
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/cow_cp.sh
@@ -0,0 +1,105 @@
+#!/usr/bin/env bash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+# source: https://github.com/gokcehan/lf/wiki/Tips#use-copy-on-write-when-possible
+#
+# # FIXME: Add this. The hardest part is in checking, if a file can be reflinked, as fuse and bind mount are hard to
+#          backtrack <2023-08-29>
+
+# # This was very helpful for debugging:
+# log_file="$HOME/lf-reflink-log-$(date +'%Y-%m-%d_%H-%M-%S')"
+# [ -f "$log_file" ] || touch "$log_file"
+# exec 1>> $log_file 2>&1
+# set -x
+
+# In theory, this may fail,
+# but I tested it on selection with 10k files - everything worked (bash)
+# FIXME: This will very likely fail on dash, when the file number > 255 <2023-08-29>
+set -- "$(cat ~/.local/share/lf/files)"
+
+mode="$1"
+shift
+
+if [ "$mode" = 'copy' ]; then
+    # Reflink if all items of selection and the destination are on the
+    # same mount point and it is CoW fs.
+    # (to make sure reflink never fails in first place, so we don't have to
+    # clean up)
+
+    src_targets="$(df --output=target -- "$@" | sed '1d' | sort -u)"
+
+    if [ "$(df --output=target -- "$PWD" | tail -n 1)" = \
+        "$(echo "$src_targets" | tail -n 1)" ] &&
+        (("$(echo "$src_targets" | wc -l)" == 1)) &&
+        [[ "$(df --output=fstype -- "$PWD" | tail -n 1)" =~ ^(btrfs|xfs|zfs)$ ]]; then
+
+        echo 'selected copy and cp reflink paste'
+
+        start=$(date '+%s')
+
+        # Handle same names in dst
+        # TODO parallelism, idk - but exit/return/break won't stop the loop from subshell...
+        for i in "$@"; do
+            name="${i##*/}"
+            original="$name"
+
+            count=0
+            while [ -w "$PWD/$name" ]; do
+                count=$((count + 1))
+                name="$original.~$count~"
+            done
+
+            set +e
+            cp_out="$(cp -rn --reflink=always -- "$i" "$PWD/$name" 2>&1)"
+            set -e
+
+            if [ -n "$cp_out" ]; then
+                lf -remote "send $id echoerr $cp_out"
+                exit 0
+            fi
+        done
+
+        finish=$(($(date '+%s') - start))
+        t=''
+        if ((finish > 2)); then
+            t="${finish}s"
+        fi
+
+        # Or just skip a file when names are the same.
+        # (A LOT faster if you e.g. pasting selection of 10k files)
+        # cp -rn --reflink=always -- "$@" .
+
+        lf -remote "send clear"
+
+        green=$'\u001b[32m'
+        reset=$'\u001b[0m'
+        lf -remote "send $id echo ${green}reflinked!${reset} $t"
+    else
+        echo 'selected copy and lf native paste'
+        lf -remote "send $id paste"
+        lf -remote "send clear"
+    fi
+
+elif [ "$mode" = 'move' ]; then
+    echo 'selected move and lf native paste'
+    lf -remote "send $id paste"
+    lf -remote "send clear"
+fi
+
+# # for debug
+# set +x
+
+lf -remote "send load"
+
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/dl_file.sh b/modules/home.legacy/conf/lf/commands/scripts/dl_file.sh
new file mode 100755
index 00000000..c7e3d8b2
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/dl_file.sh
@@ -0,0 +1,43 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+# Provides the ability to download a file by dropping it into a window
+
+url="$(dragon -t -x)"
+
+if [ -n "$url" ]; then
+    prompt "File Name: "
+    name=""
+    while [ -z "$name" ] || [ -e "$name" ]; do
+        read -r name
+        if [ -e "$name" ]; then
+            prompt "File already exists, overwrite [y|N]: "
+            read -r ans
+
+            if [ "$ans" = "y" ]; then
+                break
+            else
+                prompt "File Name: "
+            fi
+        fi
+    done
+
+    # Download the file with curl
+    if [ -n "$name" ]; then
+        curl -o "$name" "$url" || die "curl failed"
+    fi
+else
+    die "URL is null!"
+fi
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/dragon.sh b/modules/home.legacy/conf/lf/commands/scripts/dragon.sh
new file mode 100755
index 00000000..cf3c3176
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/dragon.sh
@@ -0,0 +1,20 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+while read -r file; do
+    set -- "$@" "$file"
+done <"$(tmp echo "$fx")"
+
+dragon -a -x "$@"
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/dragon_individual.sh b/modules/home.legacy/conf/lf/commands/scripts/dragon_individual.sh
new file mode 100755
index 00000000..2465cdfa
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/dragon_individual.sh
@@ -0,0 +1,20 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+while read -r file; do
+    set -- "$@" "$file"
+done <"$(tmp echo "$fx")"
+
+dragon "$@"
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/dragon_stay.sh b/modules/home.legacy/conf/lf/commands/scripts/dragon_stay.sh
new file mode 100755
index 00000000..066b4c75
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/dragon_stay.sh
@@ -0,0 +1,20 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+while read -r file; do
+    set -- "$@" "$file"
+done <"$(tmp echo "$fx")"
+
+dragon -a "$@"
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/execute.sh b/modules/home.legacy/conf/lf/commands/scripts/execute.sh
new file mode 100755
index 00000000..aa97fd7f
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/execute.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+dir="$(realpath "$f")"
+
+"$dir"
+
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/follow_link.sh b/modules/home.legacy/conf/lf/commands/scripts/follow_link.sh
new file mode 100755
index 00000000..80413990
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/follow_link.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+dir="$(realpath "$f")"
+
+lf -remote "send $id cd \"$dir\""
+
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/fzf_jump.sh b/modules/home.legacy/conf/lf/commands/scripts/fzf_jump.sh
new file mode 100755
index 00000000..ad1633fb
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/fzf_jump.sh
@@ -0,0 +1,24 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+res="$(fd . --maxdepth 3 | fzf --header='Jump to location')"
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+if [ -f "$res" ]; then
+    cmd="select"
+elif [ -d "$res" ]; then
+    cmd="cd"
+fi
+
+lf -remote "send $id $cmd \"$res\""
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/go_project_root.sh b/modules/home.legacy/conf/lf/commands/scripts/go_project_root.sh
new file mode 100755
index 00000000..5f7746d3
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/go_project_root.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+flake_base_dir="$(search_flake_base_dir)"
+if [ "$flake_base_dir" ]; then
+    lf -remote "send $id cd $flake_base_dir" || die "Bug: No base dir ($flake_base_dir)"
+else
+    die "Unable to locate base dir"
+fi
+
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/mk_dir.sh b/modules/home.legacy/conf/lf/commands/scripts/mk_dir.sh
new file mode 100755
index 00000000..150f7eed
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/mk_dir.sh
@@ -0,0 +1,32 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+prompt "Directory Name: "
+name=""
+while [ -z "$name" ] || [ -e "$name" ]; do
+    read -r name
+    if [ -e "$name" ]; then
+        prompt "Directory already exists, overwrite [y|N]: "
+        read -r ans
+
+        if [ "$ans" = "y" ]; then
+            break
+        else
+            prompt "Directory Name: "
+        fi
+    fi
+done
+
+mkdir "$name"
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/mk_file.sh b/modules/home.legacy/conf/lf/commands/scripts/mk_file.sh
new file mode 100755
index 00000000..41d5cf1a
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/mk_file.sh
@@ -0,0 +1,32 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+prompt "File name: "
+name=""
+while [ -z "$name" ] || [ -e "$name" ]; do
+    read -r name
+    if [ -e "$name" ]; then
+        prompt "File already exists, overwrite [y|N]: "
+        read -r ans
+
+        if [ "$ans" = "y" ]; then
+            break
+        else
+            prompt "File name: "
+        fi
+    fi
+done
+
+touch "$name"
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/mk_file_and_edit.sh b/modules/home.legacy/conf/lf/commands/scripts/mk_file_and_edit.sh
new file mode 100755
index 00000000..19fc51db
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/mk_file_and_edit.sh
@@ -0,0 +1,33 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+prompt "File name: "
+name=""
+while [ -z "$name" ] || [ -e "$name" ]; do
+    read -r name
+    if [ -e "$name" ]; then
+        prompt "File already exists, overwrite [y|N]: "
+        read -r ans
+
+        if [ "$ans" = "y" ]; then
+            break
+        else
+            prompt "File name: "
+        fi
+    fi
+done
+
+touch "$name"
+"$EDITOR" "$name"
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/mk_ln.sh b/modules/home.legacy/conf/lf/commands/scripts/mk_ln.sh
new file mode 100755
index 00000000..7fab8e22
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/mk_ln.sh
@@ -0,0 +1,45 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+while IFS= read -r i; do
+    set -- "$@" "$i"
+done <"$HOME"/.local/share/lf/files
+
+mode="$1"
+shift
+
+if [ "$#" -eq 0 ]; then
+    msg "no files to link"
+    exit 0
+fi
+
+case "$mode" in
+copy)
+    while [ "$#" -gt 0 ]; do
+        file="$1"
+        ans="$(basename "$file")"
+
+        while [ -e "$ans" ]; do
+            prompt "$ans already exists, new name for link: "
+            read -r ans
+        done
+
+        ln --symbolic --relative "$file" "$(pwd)/$ans"
+        shift
+    done
+    ;;
+esac
+rm ~/.local/share/lf/files
+# lf -remote "send clear"
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/mk_scr_default.sh b/modules/home.legacy/conf/lf/commands/scripts/mk_scr_default.sh
new file mode 100755
index 00000000..47d05080
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/mk_scr_default.sh
@@ -0,0 +1,38 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+prompt "Script name: "
+name=""
+while [ -z "$name" ] || [ -e "$name" ]; do
+    read -r name_base
+    name="$name_base.sh"
+    if [ -e "$name" ]; then
+        prompt "Script already exists, overwrite [y|N]: "
+        read -r ans
+
+        if [ "$ans" = "y" ]; then
+            break
+        else
+            prompt "Script Name: "
+        fi
+    fi
+done
+
+script="$(pwd)"/"$name"
+
+cat "%SHELL_LIBRARY_TEMPLATE" >"$script"
+chmod +x "$script"
+"$VISUAL" "$script"
+
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/mk_scr_temp.sh b/modules/home.legacy/conf/lf/commands/scripts/mk_scr_temp.sh
new file mode 100755
index 00000000..512b5d0b
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/mk_scr_temp.sh
@@ -0,0 +1,38 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+prompt "Script name: "
+name=""
+while [ -z "$name" ] || [ -e "$name" ]; do
+    read -r name
+    if [ -e "$name" ]; then
+        prompt "Script already exists, overwrite [y|N]: "
+        read -r ans
+
+        if [ "$ans" = "y" ]; then
+            break
+        else
+            prompt "Script Name: "
+        fi
+    fi
+done
+
+script="$(pwd)"/"$name"
+
+sed 's|%TO_BE_SHELL_LIBRARY_PATH|%SHELL_LIBRARY_PATH|' "%SHELL_LIBRARY_TEMPLATE" >"$script"
+sed -i 's|dash|sh|' "$script"
+chmod +x "$script"
+"$VISUAL" "$script"
+
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/restore_trash.sh b/modules/home.legacy/conf/lf/commands/scripts/restore_trash.sh
new file mode 100755
index 00000000..b4ef492f
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/restore_trash.sh
@@ -0,0 +1,16 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+trash list | fzf --multi | awk '{print $NF}' | xargs trash restore --match=exact
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/set_wall_paper.sh b/modules/home.legacy/conf/lf/commands/scripts/set_wall_paper.sh
new file mode 100755
index 00000000..2e607d33
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/set_wall_paper.sh
@@ -0,0 +1,19 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+die "No yet implemented" # TODO: do what the 'die' says
+#sed -i "s,export AWMWALLPAPER='.*',export AWMWALLPAPER='${f}'," ${ZDOTDIR}/.zshenv
+#nohub swaybg -i "$f"
+#feh --bg-max --no-fehbg "$f"
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/stripspace.sh b/modules/home.legacy/conf/lf/commands/scripts/stripspace.sh
new file mode 100755
index 00000000..33b1cbcf
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/stripspace.sh
@@ -0,0 +1,40 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+files=$(mktmp)
+echo "$fx" >"$files"
+
+awk_source=$(mktmp)
+cat <<OFT >"$awk_source"
+BEGIN {FS=" "}
+{for (i=1; i != NF + 1; i++)
+    if (i == NF) {
+        parts[i]=tolower(\$i);
+    } else {
+        parts[i]=tolower(\$i"_");
+    }
+}
+END {for (i in parts) printf parts[i]}
+OFT
+
+while read -r file; do
+    dirty_name=$(mktmp)
+    basename "$file" >"$dirty_name"
+    clean_name=$(awk -f "$awk_source" "$dirty_name")
+
+    [ -e "$clean_name" ] && die "file \"$clean_name\" already exists!"
+    mv "$(cat "$dirty_name")" "$clean_name" || die "Move failed"
+    lf -remote 'send reload'
+done <"$files"
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/trash.sh b/modules/home.legacy/conf/lf/commands/scripts/trash.sh
new file mode 100755
index 00000000..f4878c49
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/trash.sh
@@ -0,0 +1,37 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+trash_output=$(mktmp)
+expected_error_output=$(mktmp)
+
+while read -r file; do
+    set -- "$@" "$file"
+done <"$(tmp echo "$fx")"
+
+# TODO: why are we using trashy at all, when trash-cli can do everything?
+#
+# try trashy first, through nix because both trashy and trash-cli provide a trash command, which conflicts
+nix run nixpkgs#trashy -- put "$@" 2>"$trash_output"
+
+# FIXME: Find a way, that does not depend on parsing an error message <2023-08-29>
+cat <<EOF >"$expected_error_output"
+error: Error during a \`trash\` operation: Unknown { description: "Path: '\"/.Trash-1000\"'. Message: Permission denied (os error 13)" }
+EOF
+
+if [ "$(cat "$expected_error_output")" = "$(cat "$trash_output")" ]; then
+    warning "Deleting with trash-cli to the /.Trash folder"
+    # this file could not be trashed because it is on the tempfs volume, trash-cli can do this this
+    trash-put "$@"
+fi
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/unarchive.sh b/modules/home.legacy/conf/lf/commands/scripts/unarchive.sh
new file mode 100755
index 00000000..d4835f6b
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/unarchive.sh
@@ -0,0 +1,36 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+# shellcheck disable=SC2269
+id="$id"
+
+# extract the current file with the right command
+# (xkcd link: https://xkcd.com/1168/)
+set -f
+
+unarchive() {
+    case "$1" in
+    *.tar.bz | *.tar.bz2 | *.tbz | *.tbz2) tar xjvf "$1" ;;
+    *.tar.gz | *.tgz) tar xzvf "$1" ;;
+    *.tar.xz | *.txz) tar xJvf "$1" ;;
+    *.zip) unzip "$1" ;;
+    *.rar)
+        die "rar is a unfree format!"
+        ;;
+    *.7z) 7z x "$1" ;;
+    *) die "Unsupported format" ;;
+    esac
+}
+
+while read -r file; do
+    unarchive "$file"
+done <"$fx"
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/commands/scripts/view_file.sh b/modules/home.legacy/conf/lf/commands/scripts/view_file.sh
new file mode 100755
index 00000000..6258d755
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/view_file.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# shellcheck disable=SC2269
+f="$f"
+# shellcheck disable=SC2269
+fx="$fx"
+# shellcheck disable=SC2269
+fs="$fs"
+
+mime_type="$(file --mime-type --brief --dereference "$f")"
+case "$mime_type" in
+application/pdf)
+    "$READER" "$f"
+    ;;
+image/*)
+    "$IVIEWER" "$f"
+    ;;
+*)
+    die "Mime-Type: '$mime_type' not supported"
+    ;;
+esac
+
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/lf/default.nix b/modules/home.legacy/conf/lf/default.nix
new file mode 100644
index 00000000..7b604ed0
--- /dev/null
+++ b/modules/home.legacy/conf/lf/default.nix
@@ -0,0 +1,59 @@
+{
+  pkgs,
+  sysLib,
+  nixosConfig,
+  shell_library,
+  system,
+  ...
+}: let
+  commands = import ./commands {inherit pkgs sysLib shell_library system;};
+  keybindings = import ./keybindings {inherit nixosConfig;};
+in {
+  xdg.configFile."lf/icons".source = ./icons;
+  xdg.configFile."lf/colors".source = ./colors;
+
+  # TODO: add the systemd tempfile option here
+
+  programs.lf = {
+    enable = true;
+
+    inherit commands keybindings;
+
+    previewer = {
+      keybinding = "i";
+      source = "${pkgs.ctpv}/bin/ctpv";
+    };
+    settings = {
+      # close the server, after the last client exits
+      autoquit = true;
+
+      # disable the cusor in the preview pane
+      cursorpreviewfmt = "";
+
+      # preview for directories
+      # dirpreviews = true;
+
+      # count things in directories
+      dircounts = true;
+
+      drawbox = true;
+
+      # errorfmt = "\\033[1;91m==> ERROR:\\033[0m\\033[1;93m%s\\033[0m";
+      errorfmt = "\\033[1;91m%s\\033[0m";
+      hidden = true; # show hidden files
+      icons = true;
+      ifs = "\\n"; # internal field separator for shell commands
+      #info = "size"; # show the size of a directory
+      shell = "sh";
+      shellopts = "-eu"; # e: exit on error; u: error for unset variables
+    };
+    # TODO: remove auto quit, if it has been added
+    extraConfig = ''
+      &${pkgs.ctpv}/bin/ctpv -s $id
+      cmd on-quit %${pkgs.ctpv}/bin/ctpv -e $id
+      set cleaner ${pkgs.ctpv}/bin/ctpvclear
+
+      source ${nixosConfig.age.secrets.lf_cd_paths.path}
+    '';
+  };
+}
diff --git a/modules/home.legacy/conf/lf/icons b/modules/home.legacy/conf/lf/icons
new file mode 100644
index 00000000..9047fbfb
--- /dev/null
+++ b/modules/home.legacy/conf/lf/icons
@@ -0,0 +1,360 @@
+# vim:ft=conf
+
+# These examples require Nerd Fonts or a compatible font to be used.
+# See https://www.nerdfonts.com for more information.
+
+# default values from lf (with matching order)
+# ln      l       # LINK
+# or      l       # ORPHAN
+# tw      t       # STICKY_OTHER_WRITABLE
+# ow      d       # OTHER_WRITABLE
+# st      t       # STICKY
+# di      d       # DIR
+# pi      p       # FIFO
+# so      s       # SOCK
+# bd      b       # BLK
+# cd      c       # CHR
+# su      u       # SETUID
+# sg      g       # SETGID
+# ex      x       # EXEC
+# fi      -       # FILE
+
+# file types (with matching order)
+ln             # LINK
+or             # ORPHAN
+tw      t       # STICKY_OTHER_WRITABLE
+ow             # OTHER_WRITABLE
+st      t       # STICKY
+di             # DIR
+pi      p       # FIFO
+so      s       # SOCK
+bd      b       # BLK
+cd      c       # CHR
+su      u       # SETUID
+sg      g       # SETGID
+ex             # EXEC
+fi             # FILE
+
+# file extensions (vim-devicons)
+*.styl          
+*.sass          
+*.scss          
+*.htm           
+*.html          
+*.slim          
+*.haml          
+*.ejs           
+*.css           
+*.less          
+*.md            
+*.mdx           
+*.markdown      
+*.rmd           
+*.json          
+*.webmanifest   
+*.js            
+*.mjs           
+*.jsx           
+*.rb            
+*.gemspec       
+*.rake          
+*.php           
+*.py            
+*.pyc           
+*.pyo           
+*.pyd           
+*.coffee        
+*.mustache      
+*.hbs           
+*.conf          
+*.ini           
+*.yml           
+*.yaml          
+*.toml          
+*.bat           
+*.mk            
+*.jpg           
+*.jpeg          
+*.bmp           
+*.png           
+*.webp          
+*.gif           
+*.ico           
+*.twig          
+*.cpp           
+*.c++           
+*.cxx           
+*.cc            
+*.cp            
+*.c             
+*.cs            󰌛
+*.h             
+*.hh            
+*.hpp           
+*.hxx           
+*.hs            
+*.lhs           
+*.nix           
+*.lua           
+*.java          
+*.sh            
+*.fish          
+*.bash          
+*.zsh           
+*.ksh           
+*.csh           
+*.awk           
+*.ps1           
+*.ml            λ
+*.mli           λ
+*.diff          
+*.db            
+*.sql           
+*.sqlite        
+*.dump          
+*.clj           
+*.cljc          
+*.cljs          
+*.edn           
+*.scala         
+*.go            
+*.dart          
+*.xul           
+*.sln           
+*.suo           
+*.pl            
+*.pm            
+*.t             
+*.rss           
+'*.f#'          
+*.fsscript      
+*.fsx           
+*.fs            
+*.fsi           
+*.rs            
+*.rlib          
+*.d             
+*.erl           
+*.hrl           
+*.ex            
+*.exs           
+*.eex           
+*.leex          
+*.heex          
+*.vim           
+*.ai            
+*.psd           
+*.psb           
+*.ts            
+*.tsx           
+*.jl            
+*.pp            
+*.vue           󰡄
+*.elm           
+*.swift         
+*.xcplayground  
+*.tex           󰙩
+*.r             󰟔
+*.rproj         󰗆
+*.sol           󰡪
+*.pem           󰌋
+
+# file names (vim-devicons) (case-insensitive not supported in lf)
+*gruntfile.coffee       
+*gruntfile.js           
+*gruntfile.ls           
+*gulpfile.coffee        
+*gulpfile.js            
+*gulpfile.ls            
+*mix.lock               
+*dropbox                
+*.ds_store              
+*.gitconfig             
+*.gitignore             
+*.gitattributes         
+*.gitlab-ci.yml         
+*.bashrc                
+*.zshrc                 
+*.zshenv                
+*.zprofile              
+*.vimrc                 
+*.gvimrc                
+*_vimrc                 
+*_gvimrc                
+*.bashprofile           
+*favicon.ico            
+*license                
+*node_modules           
+*react.jsx              
+*procfile               
+*dockerfile             
+*docker-compose.yml     
+*rakefile               
+*config.ru              
+*gemfile                
+*makefile               
+*cmakelists.txt         
+*robots.txt             󰚩
+
+# file names (case-sensitive adaptations)
+*Gruntfile.coffee       
+*Gruntfile.js           
+*Gruntfile.ls           
+*Gulpfile.coffee        
+*Gulpfile.js            
+*Gulpfile.ls            
+*Dropbox                
+*.DS_Store              
+*LICENSE                
+*COPYING                
+*COPYING.LESSER         
+*React.jsx              
+*Procfile               
+*Dockerfile             
+*Docker-compose.yml     
+*Rakefile               
+*Gemfile                
+*Makefile               
+*CMakeLists.txt         
+
+# file patterns (vim-devicons) (patterns not supported in lf)
+# .*jquery.*\.js$         
+# .*angular.*\.js$        
+# .*backbone.*\.js$       
+# .*require.*\.js$        
+# .*materialize.*\.js$    
+# .*materialize.*\.css$   
+# .*mootools.*\.js$       
+# .*vimrc.*               
+# Vagrantfile$            
+
+# file patterns (file name adaptations)
+*jquery.min.js          
+*angular.min.js         
+*backbone.min.js        
+*require.min.js         
+*materialize.min.js     
+*materialize.min.css    
+*mootools.min.js        
+*vimrc                  
+Vagrantfile             
+
+# archives or compressed (extensions from dircolors defaults)
+*.tar   
+*.tgz   
+*.arc   
+*.arj   
+*.taz   
+*.lha   
+*.lz4   
+*.lzh   
+*.lzma  
+*.tlz   
+*.txz   
+*.tzo   
+*.t7z   
+*.zip   
+*.z     
+*.dz    
+*.gz    
+*.lrz   
+*.lz    
+*.lzo   
+*.xz    
+*.zst   
+*.tzst  
+*.bz2   
+*.bz    
+*.tbz   
+*.tbz2  
+*.tz    
+*.deb   
+*.rpm   
+*.jar   
+*.war   
+*.ear   
+*.sar   
+*.rar   
+*.alz   
+*.ace   
+*.zoo   
+*.cpio  
+*.7z    
+*.rz    
+*.cab   
+*.wim   
+*.swm   
+*.dwm   
+*.esd   
+
+# image formats (extensions from dircolors defaults)
+*.jpg   
+*.jpeg  
+*.mjpg  
+*.mjpeg 
+*.gif   
+*.bmp   
+*.pbm   
+*.pgm   
+*.ppm   
+*.tga   
+*.xbm   
+*.xpm   
+*.tif   
+*.tiff  
+*.png   
+*.svg   
+*.svgz  
+*.mng   
+*.pcx   
+*.mov   
+*.mpg   
+*.mpeg  
+*.m2v   
+*.mkv   
+*.webm  
+*.ogm   
+*.mp4   
+*.m4v   
+*.mp4v  
+*.vob   
+*.qt    
+*.nuv   
+*.wmv   
+*.asf   
+*.rm    
+*.rmvb  
+*.flc   
+*.avi   
+*.fli   
+*.flv   
+*.gl    
+*.dl    
+*.xcf   
+*.xwd   
+*.yuv   
+*.cgm   
+*.emf   
+*.ogv   
+*.ogx   
+
+# audio formats (extensions from dircolors defaults)
+*.aac   
+*.au    
+*.flac  
+*.m4a   
+*.mid   
+*.midi  
+*.mka   
+*.mp3   
+*.mpc   
+*.ogg   
+*.ra    
+*.wav   
+*.oga   
+*.opus  
+*.spx   
+*.xspf  
+
+# other formats
+*.pdf   
diff --git a/modules/home.legacy/conf/lf/keybindings/default.nix b/modules/home.legacy/conf/lf/keybindings/default.nix
new file mode 100644
index 00000000..b41004dc
--- /dev/null
+++ b/modules/home.legacy/conf/lf/keybindings/default.nix
@@ -0,0 +1,94 @@
+{nixosConfig, ...}: {
+  # Remove some defaults
+  "'\"'" = null;
+  ";" = null;
+  "\"'\"" = null;
+  c = null;
+  d = null;
+  e = null;
+  j = null;
+  k = null;
+  m = null;
+  f = null;
+
+  # Sorting
+  kn = ":set sortby natural; set info";
+  ks = ":set sortby size; set info size";
+  kt = ":set sortby time; set info time";
+  ka = ":set sortby atime; set info atime";
+  kc = ":set sortby ctime; set info ctime";
+  ke = ":set sortby ext; set info";
+
+  # Searching
+  l = "search-next";
+  L = "search-prev";
+
+  # File Openers
+  ee = "\$\$EDITOR \"$f\"";
+  es = "\$ nvim -S \"$f\"";
+  u = "view_file";
+  cc = "\$sudo -e \"$f\"";
+  fe = "execute";
+  fl = "follow_link";
+
+  # Archive Mappings
+  au = "unarchive";
+  aa = "archive";
+
+  # Trash Mappings
+  dd = "trash";
+  jc = "clear_trash";
+  jr = "restore_trash";
+
+  # Dragon Mapping
+  dr = "dragon";
+  ds = "dragon-stay";
+  di = "dragon-individual";
+  #dm = "mvdragon";
+  #dc = "cpdragon";
+  dl = "dlfile";
+
+  cs = "stripspace";
+
+  # Vim keys
+  h = "updir";
+  t = "down";
+  n = "up";
+  s = "open";
+
+  # Basic Functions
+  "." = "set hidden!";
+  DD = "delete";
+  p = "paste";
+  x = "cut";
+  y = "copy";
+  "<enter>" = "open";
+
+  mk = "mk_ln";
+  mf = "mk_file";
+  me = "mk_file_and_edit";
+  md = "mk_dir";
+  ms = "mk_scr_default";
+  mt = "mk_scr_temp";
+
+  ch = "chmod";
+  bg = "set_wall_paper";
+  r = ":rename; cmd-end";
+  H = "go_project_base_directory";
+  R = "reload";
+  C = "clear";
+  U = "unselect";
+
+  # Movement
+  gjr = "cd ~/.local/share/Trash/files";
+  gus = "cd /run/user/${builtins.toString nixosConfig.users.users.soispha.uid}";
+
+  gc = "cd ~/.config";
+  gl = "cd ~/.local";
+  gE = "cd /etc";
+
+  "gU." = "cd /usr";
+  gUs = " cd /usr/share";
+
+  gt = "cd /tmp";
+}
diff --git a/modules/home.legacy/conf/mail/accounts/benedikt.nix b/modules/home.legacy/conf/mail/accounts/benedikt.nix
new file mode 100644
index 00000000..87ede61b
--- /dev/null
+++ b/modules/home.legacy/conf/mail/accounts/benedikt.nix
@@ -0,0 +1,48 @@
+{pkgs}: {
+  address = "benedikt.peetz@b-peetz.de";
+  userName = "benedikt.peetz@b-peetz.de";
+  realName = "Benedikt Peetz";
+  primary = true;
+  passwordCommand = "${pkgs.libsecret}/bin/secret-tool lookup account benedikt.peetz@b-peetz.de";
+  aliases = [
+    "@b-peetz.de"
+  ];
+  folders = {};
+  gpg = {
+    encryptByDefault = true;
+    key = "9A254A935C25B0419EAE495014D2BC012F572AD7";
+    signByDefault = true;
+  };
+  signature = {
+    # TODO:
+  };
+  neomutt = {
+    enable = true;
+  };
+  mbsync = {
+    enable = true;
+    create = "both";
+  };
+  # himalaya = {
+  #   enable = true;
+  #   backend = "imap";
+  #   sender = "smtp";
+  #   settings = {
+  #     # TODO:
+  #   };
+  # };
+  smtp = {
+    host = "server1.vhack.eu";
+    port = 465;
+  };
+  imap = {
+    host = "server1.vhack.eu";
+    port = 993;
+  };
+  jmap = {
+    # TODO:
+  };
+  maildir = {
+    path = "bpeetz";
+  };
+}
diff --git a/modules/home.legacy/conf/mail/accounts/soispha.nix b/modules/home.legacy/conf/mail/accounts/soispha.nix
new file mode 100644
index 00000000..012e84d6
--- /dev/null
+++ b/modules/home.legacy/conf/mail/accounts/soispha.nix
@@ -0,0 +1,49 @@
+{pkgs}: {
+  address = "soispha@vhack.eu";
+  userName = "soispha@vhack.eu";
+  realName = "Soispha";
+  primary = false;
+  passwordCommand = "${pkgs.libsecret}/bin/secret-tool lookup account soispha@vhack.eu";
+  aliases = [
+    "admin@vhack.eu"
+  ];
+  folders = {
+  };
+  gpg = {
+    encryptByDefault = true;
+    key = "9606FC749FCE16360723D4ADA5E94010C3A642AD";
+    signByDefault = true;
+  };
+  signature = {
+    # TODO:
+  };
+  neomutt = {
+    enable = true;
+  };
+  mbsync = {
+    enable = true;
+    create = "both";
+  };
+  # himalaya = {
+  #   enable = true;
+  #   backend = "imap";
+  #   sender = "smtp";
+  #   settings = {
+  #     # TODO:
+  #   };
+  # };
+  smtp = {
+    host = "server1.vhack.eu";
+    port = 465;
+  };
+  imap = {
+    host = "server1.vhack.eu";
+    port = 993;
+  };
+  jmap = {
+    # TODO:
+  };
+  maildir = {
+    path = "soispha";
+  };
+}
diff --git a/modules/home.legacy/conf/mail/default.nix b/modules/home.legacy/conf/mail/default.nix
new file mode 100644
index 00000000..0ecbe40a
--- /dev/null
+++ b/modules/home.legacy/conf/mail/default.nix
@@ -0,0 +1,15 @@
+{
+  config,
+  pkgs,
+  ...
+}: let
+  benedikt = import ./accounts/benedikt.nix {inherit pkgs;};
+  soispha = import ./accounts/soispha.nix {inherit pkgs;};
+
+  accounts = {inherit soispha benedikt;};
+in {
+  accounts.email = {
+    maildirBasePath = "${config.xdg.dataHome}/maildir";
+    inherit accounts;
+  };
+}
diff --git a/modules/home.legacy/conf/mako/default.nix b/modules/home.legacy/conf/mako/default.nix
new file mode 100644
index 00000000..711457f2
--- /dev/null
+++ b/modules/home.legacy/conf/mako/default.nix
@@ -0,0 +1,44 @@
+{
+  config,
+  pkgs,
+  ...
+}: {
+  services.mako = {
+    enable = true;
+    backgroundColor = "#2e3440";
+    borderColor = "#88c0d0";
+    borderRadius = 25;
+    borderSize = 2;
+    defaultTimeout = 5000;
+    font = "Source Code Pro 10";
+    width = 500;
+    height = 500;
+    icons = true;
+    ignoreTimeout = true;
+    layer = "overlay";
+    markup = true; # TODO:
+    maxIconSize = 64;
+    sort = "-time";
+    extraConfig = ''
+      [urgency=low]
+      border-color=#cccccc
+
+      [urgency=normal]
+      border-color=#d08770
+
+      [urgency=high]
+      border-size=3
+      border-color=#bf616a
+      default-timeout=0
+
+      [urgency=critical]
+      border-size=4
+      border-color=#bf616a
+      default-timeout=0
+
+      [category=mpd]
+      default-timeout=2000
+      group-by=category
+    '';
+  };
+}
diff --git a/modules/home.legacy/conf/mbsync/default.nix b/modules/home.legacy/conf/mbsync/default.nix
new file mode 100644
index 00000000..ac9808c9
--- /dev/null
+++ b/modules/home.legacy/conf/mbsync/default.nix
@@ -0,0 +1,17 @@
+{
+  config,
+  lib,
+  ...
+}: {
+  # TODO: I have no clue if both are needed, but it looks neat, right?
+  programs.mbsync = {
+    enable = true;
+  };
+  services.mbsync = {
+    enable = true;
+    # TODO: enable after isync 1.5 drops
+    #configFile = "${config.xdg.configHome}/mbsync/mbsync.conf";
+  };
+  # Disable the timer, and only activate it on neomutt start
+  systemd.user.timers.mbsync = lib.mkForce {};
+}
diff --git a/modules/home.legacy/conf/mpd/default.nix b/modules/home.legacy/conf/mpd/default.nix
new file mode 100644
index 00000000..b30f6995
--- /dev/null
+++ b/modules/home.legacy/conf/mpd/default.nix
@@ -0,0 +1,50 @@
+{
+  config,
+  pkgs,
+  lib,
+  osConfig,
+  ...
+}: let
+  dataDir = "${config.xdg.dataHome}/mpd";
+  playlistDirectory = "${dataDir}/playlists";
+  runtimeDir = "/run/user/${builtins.toString osConfig.users.users.soispha.uid}/mpd";
+in {
+  home.sessionVariables = {
+    MPD_HOST = "/run/user/${builtins.toString osConfig.users.users.soispha.uid}/mpd/socket";
+  };
+
+  systemd.user.services.mpd.Service.ExecStartPre = lib.mkForce ''
+    ${pkgs.coreutils}/bin/mkdir --parents "${dataDir}" "${playlistDirectory}" "${runtimeDir}"
+  '';
+
+  services.mpd = {
+    enable = true;
+    inherit dataDir playlistDirectory;
+    musicDirectory = config.programs.beets.settings.directory;
+    network = {
+      listenAddress = "${runtimeDir}/socket";
+    };
+
+    extraConfig = ''
+      metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc,comment"
+      # Updated by the beets `mpdupdate` plugin
+      auto_update "no"
+
+      audio_output {
+        type "pipewire"
+        name "pipewire"
+      }
+
+      replaygain "track"
+      replaygain_limit "yes"
+
+      #database {
+      #       plugin "simple"
+      #       path "~/.local/share/mpd/db
+      #       cache_directory "~/.local/share/mpd/cache"
+      #}
+
+      filesystem_charset		"UTF-8"
+    '';
+  };
+}
diff --git a/modules/home.legacy/conf/mpd/mpdconf.example b/modules/home.legacy/conf/mpd/mpdconf.example
new file mode 100644
index 00000000..eaa5e641
--- /dev/null
+++ b/modules/home.legacy/conf/mpd/mpdconf.example
@@ -0,0 +1,418 @@
+# An example configuration file for MPD.
+# Read the user manual for documentation: http://www.musicpd.org/doc/user/
+
+
+# Files and directories #######################################################
+#
+# This setting controls the top directory which MPD will search to discover the
+# available audio files and add them to the daemon's online database. This
+# setting defaults to the XDG directory, otherwise the music directory will be
+# be disabled and audio files will only be accepted over ipc socket (using
+# file:// protocol) or streaming files over an accepted protocol.
+#
+#music_directory		"~/music"
+#
+# This setting sets the MPD internal playlist directory. The purpose of this
+# directory is storage for playlists created by MPD. The server will use
+# playlist files not created by the server but only if they are in the MPD
+# format. This setting defaults to playlist saving being disabled.
+#
+#playlist_directory		"~/.mpd/playlists"
+#
+# This setting sets the location of the MPD database. This file is used to
+# load the database at server start up and store the database while the
+# server is not up. This setting defaults to disabled which will allow
+# MPD to accept files over ipc socket (using file:// protocol) or streaming
+# files over an accepted protocol.
+#
+#db_file			"~/.mpd/database"
+
+# These settings are the locations for the daemon log files for the daemon.
+#
+# The special value "syslog" makes MPD use the local syslog daemon. This
+# setting defaults to logging to syslog.
+#
+# If you use systemd, do not configure a log_file.  With systemd, MPD
+# defaults to the systemd journal, which is fine.
+#
+#log_file			"~/.mpd/log"
+
+# This setting sets the location of the file which stores the process ID
+# for use of mpd --kill and some init scripts. This setting is disabled by
+# default and the pid file will not be stored.
+#
+# If you use systemd, do not configure a pid_file.
+#
+#pid_file			"~/.mpd/pid"
+
+# This setting sets the location of the file which contains information about
+# most variables to get MPD back into the same general shape it was in before
+# it was brought down. This setting is disabled by default and the server
+# state will be reset on server start up.
+#
+#state_file			"~/.mpd/state"
+#
+# The location of the sticker database.  This is a database which
+# manages dynamic information attached to songs.
+#
+#sticker_file			"~/.mpd/sticker.sql"
+#
+###############################################################################
+
+
+# General music daemon options ################################################
+#
+# This setting specifies the user that MPD will run as. MPD should never run as
+# root and you may use this setting to make MPD change its user ID after
+# initialization. This setting is disabled by default and MPD is run as the
+# current user.
+#
+#user				"nobody"
+#
+# This setting specifies the group that MPD will run as. If not specified
+# primary group of user specified with "user" setting will be used (if set).
+# This is useful if MPD needs to be a member of group such as "audio" to
+# have permission to use sound card.
+#
+#group				"nogroup"
+#
+# This setting sets the address for the daemon to listen on. Careful attention
+# should be paid if this is assigned to anything other than the default, any.
+# This setting can deny access to control of the daemon. Not effective if
+# systemd socket activation is in use.
+#
+# For network
+#bind_to_address		"any"
+#
+# And for Unix Socket
+#bind_to_address		"~/.mpd/socket"
+#
+# This setting is the TCP port that is desired for the daemon to get assigned
+# to.
+#
+#port				"6600"
+#
+# Suppress all messages below the given threshold.  Use "verbose" for
+# troubleshooting. Available setting arguments are "notice", "info", "verbose",
+# "warning" and "error".
+#
+#log_level			"notice"
+#
+# Setting "restore_paused" to "yes" puts MPD into pause mode instead
+# of starting playback after startup.
+#
+#restore_paused "no"
+#
+# This setting enables MPD to create playlists in a format usable by other
+# music players.
+#
+#save_absolute_paths_in_playlists	"no"
+#
+# This setting defines a list of tag types that will be extracted during the
+# audio file discovery process. The complete list of possible values can be
+# found in the user manual.
+#metadata_to_use	"artist,album,title,track,name,genre,date,composer,performer,disc"
+#
+# This example just enables the "comment" tag without disabling all
+# the other supported tags:
+#metadata_to_use "+comment"
+#
+# This setting enables automatic update of MPD's database when files in
+# music_directory are changed.
+#
+#auto_update	"yes"
+#
+# Limit the depth of the directories being watched, 0 means only watch
+# the music directory itself.  There is no limit by default.
+#
+#auto_update_depth "3"
+#
+###############################################################################
+
+
+# Symbolic link behavior ######################################################
+#
+# If this setting is set to "yes", MPD will discover audio files by following
+# symbolic links outside of the configured music_directory.
+#
+#follow_outside_symlinks	"yes"
+#
+# If this setting is set to "yes", MPD will discover audio files by following
+# symbolic links inside of the configured music_directory.
+#
+#follow_inside_symlinks		"yes"
+#
+###############################################################################
+
+
+# Zeroconf / Avahi Service Discovery ##########################################
+#
+# If this setting is set to "yes", service information will be published with
+# Zeroconf / Avahi.
+#
+#zeroconf_enabled		"yes"
+#
+# The argument to this setting will be the Zeroconf / Avahi unique name for
+# this MPD server on the network. %h will be replaced with the hostname.
+#
+#zeroconf_name			"Music Player @ %h"
+#
+###############################################################################
+
+
+# Permissions #################################################################
+#
+# If this setting is set, MPD will require password authorization. The password
+# setting can be specified multiple times for different password profiles.
+#
+#password                        "password@read,add,control,admin"
+#
+# This setting specifies the permissions a user has who has not yet logged in.
+#
+#default_permissions             "read,add,control,admin"
+#
+###############################################################################
+
+
+# Database #######################################################################
+#
+# An example of a database section instead of the old 'db_file' setting.
+# It enables mounting other storages into the music directory.
+#
+#database {
+#       plugin "simple"
+#       path "~/.local/share/mpd/db
+#       cache_directory "~/.local/share/mpd/cache"
+#}
+#
+# An example of database config for a satellite setup
+#
+#music_directory "nfs://fileserver.local/srv/mp3"
+#database {
+#       plugin "proxy"
+#       host "other.mpd.host"
+#       port "6600"
+#}
+
+# Input #######################################################################
+#
+input {
+        plugin "curl"
+#       proxy "proxy.isp.com:8080"
+#       proxy_user "user"
+#       proxy_password "password"
+}
+
+#
+###############################################################################
+
+# Audio Output ################################################################
+#
+# MPD supports various audio output types, as well as playing through multiple
+# audio outputs at the same time, through multiple audio_output settings
+# blocks. Setting this block is optional, though the server will only attempt
+# autodetection for one sound card.
+#
+# An example of an ALSA output:
+#
+#audio_output {
+#	type		"alsa"
+#	name		"My ALSA Device"
+##	device		"hw:0,0"	# optional
+##	mixer_type      "hardware"	# optional
+##	mixer_device	"default"	# optional
+##	mixer_control	"PCM"		# optional
+##	mixer_index	"0"		# optional
+#}
+#
+# An example of an OSS output:
+#
+#audio_output {
+#	type		"oss"
+#	name		"My OSS Device"
+##	device		"/dev/dsp"	# optional
+##	mixer_type      "hardware"	# optional
+##	mixer_device	"/dev/mixer"	# optional
+##	mixer_control	"PCM"		# optional
+#}
+#
+# An example of a shout output (for streaming to Icecast):
+#
+#audio_output {
+#	type		"shout"
+#	encoder		"vorbis"		# optional
+#	name		"My Shout Stream"
+#	host		"localhost"
+#	port		"8000"
+#	mount		"/mpd.ogg"
+#	password	"hackme"
+#	quality		"5.0"
+#	bitrate		"128"
+#	format		"44100:16:1"
+##	protocol	"icecast2"		# optional
+##	user		"source"		# optional
+##	description	"My Stream Description"	# optional
+##	url		"http://example.com"	# optional
+##	genre		"jazz"			# optional
+##	public		"no"			# optional
+##	timeout		"2"			# optional
+##	mixer_type      "software"		# optional
+#}
+#
+# An example of a recorder output:
+#
+#audio_output {
+#	type		"recorder"
+#	name		"My recorder"
+#	encoder		"vorbis"		# optional, vorbis or lame
+#	path		"/var/lib/mpd/recorder/mpd.ogg"
+##	quality		"5.0"			# do not define if bitrate is defined
+#	bitrate		"128"			# do not define if quality is defined
+#	format		"44100:16:1"
+#}
+#
+# An example of a httpd output (built-in HTTP streaming server):
+#
+#audio_output {
+#	type		"httpd"
+#	name		"My HTTP Stream"
+#	encoder		"vorbis"		# optional, vorbis or lame
+#	port		"8000"
+#	bind_to_address	"0.0.0.0"		# optional, IPv4 or IPv6
+##	quality		"5.0"			# do not define if bitrate is defined
+#	bitrate		"128"			# do not define if quality is defined
+#	format		"44100:16:1"
+#	max_clients	"0"			# optional 0=no limit
+#}
+#
+# An example of a pulseaudio output (streaming to a remote pulseaudio server)
+#
+#audio_output {
+#	type		"pulse"
+#	name		"My Pulse Output"
+##	server		"remote_server"		# optional
+##	sink		"remote_server_sink"	# optional
+##	media_role	"media_role"		#optional
+#}
+#
+# An example of a winmm output (Windows multimedia API).
+#
+#audio_output {
+#	type		"winmm"
+#	name		"My WinMM output"
+##	device		"Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
+#		or
+##	device		"0"		# optional
+##	mixer_type	"hardware"	# optional
+#}
+#
+# An example of a wasapi output (Windows multimedia API).
+#
+#audio_output {
+#	type		"wasapi"
+#	name		"My WASAPI output"
+##	device		"Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
+#		or
+##	device		"0"		# optional
+## Exclusive mode blocks all other audio source, and get best audio quality without resampling.
+##	exclusive	"no"		# optional
+## Enumerate all devices in log.
+##	enumerate	"no"		# optional
+#}
+#
+# An example of an openal output.
+#
+#audio_output {
+#	type		"openal"
+#	name		"My OpenAL output"
+##	device		"Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
+#}
+#
+# An example of an sndio output.
+#
+#audio_output {
+#	type		"sndio"
+#	name		"sndio output"
+#	mixer_type	"hardware"
+#}
+#
+# An example of an OS X output:
+#
+#audio_output {
+#	type		"osx"
+#	name		"My OS X Device"
+##	device		"Built-in Output"	# optional
+##	channel_map      "-1,-1,0,1"	# optional
+#}
+#
+## Example "pipe" output:
+#
+#audio_output {
+#	type		"pipe"
+#	name		"my pipe"
+#	command		"aplay -f cd 2>/dev/null"
+## Or if you're want to use AudioCompress
+#	command		"AudioCompress -m | aplay -f cd 2>/dev/null"
+## Or to send raw PCM stream through PCM:
+#	command		"nc example.org 8765"
+#	format		"44100:16:2"
+#}
+#
+## An example of a null output (for no audio output):
+#
+#audio_output {
+#	type		"null"
+#	name		"My Null Output"
+#	mixer_type      "none"			# optional
+#}
+#
+###############################################################################
+
+
+# Normalization automatic volume adjustments ##################################
+#
+# This setting specifies the type of ReplayGain to use. This setting can have
+# the argument "off", "album", "track" or "auto". "auto" is a special mode that
+# chooses between "track" and "album" depending on the current state of
+# random playback. If random playback is enabled then "track" mode is used.
+# See <https://wiki.hydrogenaud.io/index.php?title=Replaygain> for
+# more details about ReplayGain.
+# This setting is off by default.
+#
+#replaygain			"album"
+#
+# This setting sets the pre-amp used for files that have ReplayGain tags. By
+# default this setting is disabled.
+#
+#replaygain_preamp		"0"
+#
+# This setting sets the pre-amp used for files that do NOT have ReplayGain tags.
+# By default this setting is disabled.
+#
+#replaygain_missing_preamp	"0"
+#
+# This setting enables or disables ReplayGain limiting.
+# MPD calculates actual amplification based on the ReplayGain tags
+# and replaygain_preamp / replaygain_missing_preamp setting.
+# If replaygain_limit is enabled MPD will never amplify audio signal
+# above its original level. If replaygain_limit is disabled such amplification
+# might occur. By default this setting is enabled.
+#
+#replaygain_limit		"yes"
+#
+# This setting enables on-the-fly normalization volume adjustment. This will
+# result in the volume of all playing audio to be adjusted so the output has
+# equal "loudness". This setting is disabled by default.
+#
+#volume_normalization		"no"
+#
+###############################################################################
+
+# Character Encoding ##########################################################
+#
+# If file or directory names do not display correctly for your locale then you
+# may need to modify this setting.
+#
+#filesystem_charset		"UTF-8"
+#
+###############################################################################
diff --git a/modules/home.legacy/conf/mpv/default.nix b/modules/home.legacy/conf/mpv/default.nix
new file mode 100644
index 00000000..6b252a38
--- /dev/null
+++ b/modules/home.legacy/conf/mpv/default.nix
@@ -0,0 +1,10 @@
+{...}: {
+  programs.mpv = {
+    enable = true;
+    bindings = {
+      q = "quit 0";
+      "Ctrl+c" = "quit 1";
+      "Shift+q" = "quit-watch-later 1";
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/mumble/Mumble.conf b/modules/home.legacy/conf/mumble/Mumble.conf
new file mode 100644
index 00000000..2d895f41
--- /dev/null
+++ b/modules/home.legacy/conf/mumble/Mumble.conf
@@ -0,0 +1,67 @@
+[General]
+databaselocation=/home/soispha/.local/share/Mumble/Mumble/mumble.sqlite
+lastupdate=3
+
+[audio]
+headphone=true
+input=PipeWire
+loudness=1549
+output=PipeWire
+quality=72000
+vadmax=@Variant(\0\0\0\x87?Kw\x97)
+vadmin=@Variant(\0\0\0\x87?7\x1e\xd4)
+
+[messages]
+10\log=13
+12\log=13
+14\log=13
+15\log=13
+17\log=13
+18\log=13
+19\log=13
+2\log=13
+20\log=13
+21\log=13
+22\log=13
+23\log=13
+25\log=13
+26\log=13
+27\log=13
+28\log=13
+29\log=13
+30\log=13
+31\log=13
+5\log=13
+6\log=13
+9\log=13
+size=32
+
+[messagesounds]
+size=31
+
+[net]
+certificate="@ByteArray(0\x82\tX\x2\x1\x3\x30\x82\t\xe\x6\t*\x86H\x86\xf7\r\x1\a\x1\xa0\x82\b\xff\x4\x82\b\xfb\x30\x82\b\xf7\x30\x82\x3\xad\x6\t*\x86H\x86\xf7\r\x1\a\x1\xa0\x82\x3\x9e\x4\x82\x3\x9a\x30\x82\x3\x96\x30\x82\x3\x92\x6\v*\x86H\x86\xf7\r\x1\f\n\x1\x3\xa0\x82\x3+0\x82\x3'\x6\n*\x86H\x86\xf7\r\x1\t\x16\x1\xa0\x82\x3\x17\x4\x82\x3\x13\x30\x82\x3\xf\x30\x82\x1\xf7\xa0\x3\x2\x1\x2\x2\x1\x1\x30\r\x6\t*\x86H\x86\xf7\r\x1\x1\x5\x5\0\x30\x16\x31\x14\x30\x12\x6\x3U\x4\x3\f\vMumble User0\x1e\x17\r230710132716Z\x17\r430705132716Z0\x16\x31\x14\x30\x12\x6\x3U\x4\x3\f\vMumble User0\x82\x1\"0\r\x6\t*\x86H\x86\xf7\r\x1\x1\x1\x5\0\x3\x82\x1\xf\0\x30\x82\x1\n\x2\x82\x1\x1\0\xb3\x8c\xd2\xdbM\x90\xa6\xc7}\xf4\x6X\xf9O\x16Q\x12\xc7\x1\xca\x88\x9c\x96o\xd1\x11\xc1\xc3\xd1/\xb6\x9d\xcfn\xcd\x84\xd2\x1d\xcc\xfcO\xf9\xa4\"\xaa'2\x6\xee[\x3\xd3vx\x84`i@P|\xb8\xc5I\xa8\xa2\b\xc8\0\xbd\xf1\xcc\x63\xbe\x99Zj&\xa5t\xc5\bOr\xc1\xaen\xc7\n\xd2\xcc\xa1\x30\xb8\xe0\0\xe8\xc5\xb6\x86g\x14\x30S\x9d\x8b\xfb\xacP\x7f+\x93}3\xe3\xcbPJ\x86\xf7^Z\xda\x87Z\xfez\xec\xc0\xf7\xe9\x80\xbc\xe2\re@\xe7\x92\x84\xe5\x97\f\x8c\n\x3\x1c\xd1\xbb\x32\xce\xfe\xb6\x1d\xefUYz\xf\xd7,5\x4G\x1f\t\xf7\x43\f?wx\x1a\x12\xd4.I\xbd\xe4G\xea\x33\x9d\xb1\xb0\x62\x45\xcd\xe0\x8b\xe4\x31\x1a\x8c\xedLEyC\xf0\x9f\x32}c\xc9X\x19[\xf7\xfb\xfc\x39\xe0\xd5\x30\x87\xd0\x82:\xb5\x87j]\x9d\xf8\x1b\x4\xb2P \x5/\xb2H\xfa\x42I\x1dN\xa9\xb7\x9a\x91*\x83\xe\x45\xcf\xbe\t\xb5\x36)\xf7\x7f\x1\x43\x2\x3\x1\0\x1\xa3h0f0\f\x6\x3U\x1d\x13\x1\x1\xff\x4\x2\x30\0\x30\x13\x6\x3U\x1d%\x4\f0\n\x6\b+\x6\x1\x5\x5\a\x3\x2\x30\x1d\x6\x3U\x1d\xe\x4\x16\x4\x14\xb9\x41\x19t\x16\x18~\xe8\v\xa9\x9b\x86i\x86\xeP%\xd7\n\xc9\x30\"\x6\t`\x86H\x1\x86\xf8\x42\x1\r\x4\x15\x16\x13Generated by Mumble0\r\x6\t*\x86H\x86\xf7\r\x1\x1\x5\x5\0\x3\x82\x1\x1\0\x91+\r'hS\xc2\x12k\x13O\xb2\"\x85\xd6w\x96\x8a\x97\x46\xee\x95Q\x8b\x8b\t\x8a\xfcH\xab\x30\x1dxV\xc9\xf5\x80\x42;'o\xf1\xd1\xf2\xfb\x18\xe2+\x8d\x39 \xc3\xe\x44\xa9\t\xe2i\x8a\xa7?#\xcd]0\xf4\x1d\x4\a\xd6\x87\x62\xe2\xd8\x34\xb6\xcf\x89\xf2\v\xf1\x8b\xc6\xf8\x8f\x94H/\xfa`\x9d\xb5\xac\x66H\xef\xf4\tJ\xfeHg]!\xed\n\xaf\xa8nd@y\xe8>A\x10\xc4>\xc3\xf7\xe3\xffW\x90T\x87\x94[\x7fg0+p\xdd\x3\x8d\xdb\x80\f?\xe9\xf9l5\xac)z+4R\xbc\xf3\xe1\x82\xde\xc3u\xb2\xa1s\xe2\xbb\xdcp<I\xff\x9d\xc6\xa7\xfe\xda{\xe7\xee\xe4\xeb\xc2\xfc\x9d\x1d\x41T\xee\x91\xbe\x9f\x87\x1\x62\xf8\xc3\xa5+\xc8h\xe2\xedz\xd7\x37\xb8\xbb\xf2\x1b%\xef\xfd\xa5\x36\x35Y\xfb\xf9\xa8\x6|\x8ep\xb5\x64\x14L+\f\xad\a5\x5\xf6\xe9\xcb\xf1\xac\x96\xe0lZ^PP0\xc6\xb2\n\xd6ny\xcc\x9aZ\xb1\xc9\x35\x10\x10\x31T0#\x6\t*\x86H\x86\xf7\r\x1\t\x15\x31\x16\x4\x14\x9f\xdc\xf9\x38\xc2\x8a\x1c\xfe\x6}\xf6\x64\x62>L#|\f\x7f\x93\x30-\x6\t*\x86H\x86\xf7\r\x1\t\x14\x31 \x1e\x1e\0M\0u\0m\0\x62\0l\0\x65\0 \0I\0\x64\0\x65\0n\0t\0i\0t\0y0\x82\x5\x42\x6\t*\x86H\x86\xf7\r\x1\a\x1\xa0\x82\x5\x33\x4\x82\x5/0\x82\x5+0\x82\x5'\x6\v*\x86H\x86\xf7\r\x1\f\n\x1\x1\xa0\x82\x4\xc0\x30\x82\x4\xbc\x2\x1\0\x30\r\x6\t*\x86H\x86\xf7\r\x1\x1\x1\x5\0\x4\x82\x4\xa6\x30\x82\x4\xa2\x2\x1\0\x2\x82\x1\x1\0\xb3\x8c\xd2\xdbM\x90\xa6\xc7}\xf4\x6X\xf9O\x16Q\x12\xc7\x1\xca\x88\x9c\x96o\xd1\x11\xc1\xc3\xd1/\xb6\x9d\xcfn\xcd\x84\xd2\x1d\xcc\xfcO\xf9\xa4\"\xaa'2\x6\xee[\x3\xd3vx\x84`i@P|\xb8\xc5I\xa8\xa2\b\xc8\0\xbd\xf1\xcc\x63\xbe\x99Zj&\xa5t\xc5\bOr\xc1\xaen\xc7\n\xd2\xcc\xa1\x30\xb8\xe0\0\xe8\xc5\xb6\x86g\x14\x30S\x9d\x8b\xfb\xacP\x7f+\x93}3\xe3\xcbPJ\x86\xf7^Z\xda\x87Z\xfez\xec\xc0\xf7\xe9\x80\xbc\xe2\re@\xe7\x92\x84\xe5\x97\f\x8c\n\x3\x1c\xd1\xbb\x32\xce\xfe\xb6\x1d\xefUYz\xf\xd7,5\x4G\x1f\t\xf7\x43\f?wx\x1a\x12\xd4.I\xbd\xe4G\xea\x33\x9d\xb1\xb0\x62\x45\xcd\xe0\x8b\xe4\x31\x1a\x8c\xedLEyC\xf0\x9f\x32}c\xc9X\x19[\xf7\xfb\xfc\x39\xe0\xd5\x30\x87\xd0\x82:\xb5\x87j]\x9d\xf8\x1b\x4\xb2P \x5/\xb2H\xfa\x42I\x1dN\xa9\xb7\x9a\x91*\x83\xe\x45\xcf\xbe\t\xb5\x36)\xf7\x7f\x1\x43\x2\x3\x1\0\x1\x2\x82\x1\0\x4\xd6\xf2\x66\v\xe0\xae\xc6(\xccw\x91Ub\xfe\xd8\x7f\x97\x92\xa2Imc\x16\xaf}y\x8a\x14,\xe3\x90\xbc\x63!\xb2\aQ\xdbQ\x1f\xbc\xbc\x62\\\xd0\xc2\xa5\xf2-\xcc\xdc\x19\xd0\xe4\xcc\x8ey\xb7\xd1\xac\xcfP\x8du\x94\xa4\x3u\x1b;\xe5\xa2\x61\x12\xd1R\xaaZ\v\xe7\x8d\xf0\xabl\xce\xba\x99\xbd\x95\xdbpkCJr\xfb\xc5P9\x1e\xf\xb1iI9&\xeb\x62\x8a#\xa7\x17\xcbw\x92\xf9\xf7JZ\xa6;F\xb3\xba\xb1H\x89]uU7\x1e\xd7\xf6U`\x8d\xa1\x1aG7\x11\x31\xbf\xf4\xdb\x32\x63\xbf\x3\xad&h\x82\x9b\xe7\x19/\xf6\r\x8c\x89\xc6\xd0\x1d\0\x87\t|\xc0\xf2\x8f\xbb\x87_8{\xf2\xc7\x8a\x34)\xe3\xf1\xcc(\xf4\xee\xeb($\x5\x84\xaf\x1\xaa\xf7\xff\x9b\x15h\x2y\xb3\x91\xba,Oq\xc9$\x81\x11Zg\xc4I3\v\xeay\f\xf0\x33\xc6p\xea\xc6\x9d\xac\xaa\xedp\xa7!\xcbHf5\xa0i\xbdo@\xb8![\x7f\xea\xad\x6\x31p\x81\x61\x2\x81\x81\0\xdc\x8d}{\xc3\x31\xb6(F\xc5\x36\x9b\xba\x66\xb1\xce\r_\x90\xc6\x1f\x87\x37\x84m\xd1\a8\xc0\v9\xe0\x8bm\xaf\x64\xbe\x81\xa8\xe7\xaf\x19\x43,vj\xaf!9rz\x87\"\xca\xbf\xcf\x16\x88\x46t\xbd\x12\xaa;\xf4x_\x1b\xb3\x90\b\xb6\xf6\xec\x1f\x95\x62\xac\xfa\x1b\xae\xa2\xa7oA\x9bhOW\xa8\x44\\\xadz T\xe3\x43\x46\x99\x98\xb4{*\"\xdb\xd9\xc8\xd2\x15\n4\"\x8d\x96$\x17\xfd^\xf7\x84\x93\x7fw{o\0\xe1\x2\x81\x81\0\xd0hNA\xc3\x9e\x93&iq\x1dQ\xb6\xc6\x1c\x32\xf3\xfc c&Y\xe7|\xbeq2P\xe1\xdb\x97\xf8\x9fI(\x98\x9d\xf1\xfe\xb6\xf\x90\xa5\xebi>\x14\x6\xd8.\xf4\xce\x86\x9d*\x87 \xf9X\x4\xdcZ\xf9g\x3\x98H{\xdf\x66\xde\xd6zr\xecG_\x14t\x1dm%P\xe5\xea\x8e\x6\xa2. \xa1\xd7\xd7W]\xdd\x15\x6\xcf+/\x11\vel\xd3\xe8\xc3/\xbc\x1f\xc3n\xd4\xb8\x62j\xf5\xc0\xc0\x89\xe3z\xb8\x36\xd5\xb2\xa3\x2\x81\x80z`W\xdc\x30\x36\x89(W\xfc]\x8c\x93% K\x80\xc8\"\0\x8c\xc5\xee\\ \xc2\xf7\n\xda$`|\xe3`}\r\x9dW<m1\x8f\x6\xe2\xc8\xe1\xf1\x42\xb2)\x7f+4v\xe3n\xf8\xc5\xac\xb2\x61\xa6\xd5\xa6\x66\xc3\xd3\xa1\xff\x44PQ\x95\x38\xf7]`_2w\xe1\xb2\x86\xcd\b\xce>V\xa8\0\xc9\xcd\xd2\xc4\f\xe4\x8d%k+\x16\xbc.\n\xf7\x44\x9d\xd6\xfc\x1a\x88\x8a\xdd\x11J\xd9\xc4%\xe6g\xd8\xbc.\xe2\x11/J\x81\x2\x81\x80\x63;W\xf\xbf:1,\x98\x6\x31\x4\xa8wz\x13\xd4\xd2\x97\x5>\xcc\x8e\tz\x90\x61y\xdb\xa0\xf8\xa2|\r\x94\x93\xde\x98\xcc\x44\x19\xf3\x30\xdd\x7fu\xfc\x89)\xc4i\xf2\x30l\x83\x44\x66\x31\xf3t\x15\f\b6\xc1\xa2o\xd8\xf3\x8d\x82\xcb\x32\xf0\xa7\x8ap>G\xef~\xf9\xc6\xa4\x42\xe3\xafJ\xe7\x95\xc8\x1a\x2\xc1\xe9\xc2\x8b\xf1{\x11?\xce\xe8\xd3\x39WI<.\xedo^Y\xd6U\x99\x1e\xfe\xb6\xf1\xb6v'\a\xb1\xac\\\xeb\x2\x81\x80@\x19\xc4\x32&\xcb\xc1\xca\x10K\xdf\x45\xf9\xf\x1d\x85\x39\x65\xdc\x33\x45\xbe\xac\x97~;\xe2m-\xd6\x9b\x82\x1\xbd\x90'W\xf5\xf5\xce\x35\xd7\xb4\xcdidTiP\\-vG+`\xb5u\xb7\x14\x44\xe1\xd9\xd3\r\x81\xb0GL\xe1U\xe3\xf0\xaa\xd1\x8f\xc6\"\xa5S\xb6\xbf\x4\x1a\xc4\xe0|\x8d\xa2+y(-\xad\ty\xd5\xe2g\xd3\x8c\xcdl\x96g3\xfe\x80\xb7|b[\xca\xb2\xbf\x61\xf7\x9c\x65\x30\x61\xa0\x35\xf6W\xb4\xcc\xdd\x34\x31T0#\x6\t*\x86H\x86\xf7\r\x1\t\x15\x31\x16\x4\x14\x9f\xdc\xf9\x38\xc2\x8a\x1c\xfe\x6}\xf6\x64\x62>L#|\f\x7f\x93\x30-\x6\t*\x86H\x86\xf7\r\x1\t\x14\x31 \x1e\x1e\0M\0u\0m\0\x62\0l\0\x65\0 \0I\0\x64\0\x65\0n\0t\0i\0t\0y0A010\r\x6\t`\x86H\x1\x65\x3\x4\x2\x1\x5\0\x4 Fm\xb6/lL\x18\x1b!\xfa+x\xb5\xd9?GrR\xb7\xd3\x90\xc1N)L\x9c\xc7')\xe^\xbe\x4\b\x8b\x2\xb2\xb2\x97\b\x8a\xf6\x2\x2\b\0)"
+framesperpacket=1
+
+[overlay]
+blacklist=@Invalid()
+blacklistexclude=@Invalid()
+launchers=@Invalid()
+launchersexclude=@Invalid()
+paths=@Invalid()
+pathsexclude=@Invalid()
+version=1.4.0
+whitelist=@Invalid()
+whitelistexclude=@Invalid()
+
+[shortcuts]
+size=0
+
+[ui]
+HighContrast=true
+connect\geometry="@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\n\0\0\0\0\0\0\0\f=\0\0\x1m\0\0\n\0\0\0\0\0\0\0\f=\0\0\x1m\0\0\0\x1\x2\0\0\0\a\x80\0\0\n\0\0\0\0\0\0\0\f=\0\0\x1m)"
+connect\header=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x2&\0\0\0\x3\x1\x1\0\0\0\0\0\0\x1\0\0\0\x2\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x3\0\0\x1w\0\0\0\x1\0\0\0\x1\0\0\0S\0\0\0\x1\0\0\0\x3\0\0\0\\\0\0\0\x1\0\0\0\x3\0\0\x3\xe8\0\0\0\0\x64)
+geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\n\0\0\0\0\0\0\0\r\xb9\0\0\x3\xfa\0\0\n\0\0\0\0\0\0\0\f\xde\0\0\x1\xb2\0\0\0\x1\x2\0\0\0\a\x80\0\0\n\0\0\0\0\0\0\0\r\xb9\0\0\x3\xfa)
+header=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x2\xb0\0\0\0\x1\x1\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x1\0\0\x2\xb0\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64)
+server=mumble.vhack.eu
+state=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x1\0\0\0\0\0\0\x1\0\0\0\x3\xbd\xfc\x2\0\0\0\x2\xfb\0\0\0\f\0q\0\x64\0w\0L\0o\0g\x1\0\0\0>\0\0\x3\xa0\0\0\0z\0\xff\xff\xff\xfb\0\0\0\xe\0q\0\x64\0w\0\x43\0h\0\x61\0t\x1\0\0\x3\xe2\0\0\0\x19\0\0\0\x19\0\0\0\x19\0\0\x2\xb6\0\0\x3\xbd\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x1\0\0\0\x2\0\0\0\x1\0\0\0\x1a\0q\0t\0I\0\x63\0o\0n\0T\0o\0o\0l\0\x62\0\x61\0r\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
diff --git a/modules/home.legacy/conf/mumble/default.nix b/modules/home.legacy/conf/mumble/default.nix
new file mode 100644
index 00000000..6fa524dc
--- /dev/null
+++ b/modules/home.legacy/conf/mumble/default.nix
@@ -0,0 +1,3 @@
+{...}: {
+  xdg.configFile."Mumble/Mumble.conf".source = ./Mumble.conf;
+}
diff --git a/modules/home.legacy/conf/neomutt/default.nix b/modules/home.legacy/conf/neomutt/default.nix
new file mode 100644
index 00000000..e4fbcb39
--- /dev/null
+++ b/modules/home.legacy/conf/neomutt/default.nix
@@ -0,0 +1,168 @@
+{pkgs, ...}: {
+  programs.neomutt = {
+    enable = true;
+    package = pkgs.writeShellScriptBin "neomutt" ''
+      systemctl --user start mbsync.service;
+      ${pkgs.neomutt}/bin/neomutt;
+    '';
+    vimKeys = false; # see the modified ones below
+    checkStatsInterval = 60;
+    binds = [
+      #------------------------------------------------------------
+      # Vi Key Bindings (taken from their configuration, modified for dvorak)
+      #------------------------------------------------------------
+
+      # Moving around
+      {
+        action = "noop";
+        key = "g";
+        map = ["attach" "browser" "index"];
+      }
+      {
+        action = "first-entry";
+        key = "gg";
+        map = ["attach" "browser" "index"];
+      }
+      {
+        action = "last-entry";
+        key = "G";
+        map = ["attach" "browser" "index"];
+      }
+      {
+        action = "noop";
+        key = "g";
+        map = ["pager"];
+      }
+      {
+        action = "top";
+        key = "gg";
+        map = ["pager"];
+      }
+      {
+        action = "bottom";
+        key = "G";
+        map = ["pager"];
+      }
+      {
+        action = "previous-line";
+        key = "n";
+        map = ["pager"];
+      }
+      {
+        action = "next-line";
+        key = "t";
+        map = ["pager"];
+      }
+
+      # Scrolling
+      {
+        action = "next-page";
+        key = "\\CF";
+        map = ["attach" "browser" "pager" "index"];
+      }
+      {
+        action = "previous-page";
+        key = "\\CB";
+        map = ["attach" "browser" "pager" "index"];
+      }
+      {
+        action = "half-up";
+        key = "\\Cu";
+        map = ["attach" "browser" "pager" "index"];
+      }
+      {
+        action = "half-down";
+        key = "\\Cd";
+        map = ["attach" "browser" "pager" "index"];
+      }
+      {
+        action = "next-line";
+        key = "\\Ce";
+        map = ["browser" "pager"];
+      }
+      {
+        action = "previous-line";
+        key = "\\Cy";
+        map = ["browser" "pager"];
+      }
+      {
+        action = "next-line";
+        key = "\\Ce";
+        map = ["index"];
+      }
+      {
+        action = "previous-line";
+        key = "\\Cy";
+        map = ["index"];
+      }
+
+      {
+        action = "noop";
+        key = "d";
+        map = ["pager" "index"];
+      }
+      {
+        action = "delete-message";
+        key = "dd";
+        map = ["pager" "index"];
+      }
+
+      # Mail & Reply
+      {
+        # Doesn't work currently
+        action = "list-reply";
+        key = "\\Cm";
+        map = ["index"];
+      }
+
+      # Threads
+      {
+        action = "search-opposite";
+        key = "N";
+        map = ["browser" "pager" "index"];
+      }
+      {
+        action = "delete-thread";
+        key = "dT";
+        map = ["pager" "index"];
+      }
+      {
+        action = "delete-subthread";
+        key = "dt";
+        map = ["pager" "index"];
+      }
+      {
+        action = "next-thread";
+        key = "gt";
+        map = ["pager" "index"];
+      }
+      {
+        action = "previous-thread";
+        key = "gT";
+        map = ["pager" "index"];
+      }
+      {
+        action = "collapse-thread";
+        key = "za";
+        map = ["index"];
+      }
+      {
+        # Missing: folddisable/foldenable
+        action = "collapse-all";
+        key = "zA";
+        map = ["index"];
+      }
+
+      {
+        action = "search-next";
+        key = "l";
+        map = ["index"];
+      }
+      {
+        action = "limit";
+        key = "f";
+        map = ["index"];
+      }
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nix-index/default.nix b/modules/home.legacy/conf/nix-index/default.nix
new file mode 100644
index 00000000..eb8132d9
--- /dev/null
+++ b/modules/home.legacy/conf/nix-index/default.nix
@@ -0,0 +1,14 @@
+{...}: {
+  programs.nix-index = {
+    enable = true;
+    symlinkToCacheHome = true;
+
+    # Handled by myself (and the script is overridden)
+    enableBashIntegration = false;
+    enableZshIntegration = false;
+    enableFishIntegration = false;
+  };
+  programs.nix-index-database = {
+    comma.enable = false;
+  };
+}
diff --git a/modules/home.legacy/conf/npm/.npmrc b/modules/home.legacy/conf/npm/.npmrc
new file mode 100644
index 00000000..d0d846bd
--- /dev/null
+++ b/modules/home.legacy/conf/npm/.npmrc
@@ -0,0 +1,6 @@
+scripts-prepend-node-path=true
+node_gyp=
+prefix=${XDG_DATA_HOME}/npm
+cache=${XDG_CACHE_HOME}/npm
+tmp=${XDG_RUNTIME_DIR}/npm
+init-module=${XDG_CONFIG_HOME}/npm/config/npm-init.js
diff --git a/modules/home.legacy/conf/npm/default.nix b/modules/home.legacy/conf/npm/default.nix
new file mode 100644
index 00000000..7b4bb6a1
--- /dev/null
+++ b/modules/home.legacy/conf/npm/default.nix
@@ -0,0 +1,7 @@
+{
+  config,
+  pkgs,
+  ...
+}: {
+  xdg.configFile."npm/.npmrc".source = ./.npmrc;
+}
diff --git a/modules/home.legacy/conf/nvim/autocmds/default.nix b/modules/home.legacy/conf/nvim/autocmds/default.nix
new file mode 100644
index 00000000..a8f00bdc
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/autocmds/default.nix
@@ -0,0 +1,124 @@
+{config, ...}: {
+  programs.nixvim = {
+    autoGroups = {
+      cursor_off = {clear = true;};
+      colorcolumn_toggle = {clear = true;};
+      numbertoggle = {clear = true;};
+      coloroverride = {clear = true;};
+      highlight_on_yank = {clear = true;};
+      create_dir = {clear = true;};
+    };
+    autoCmd = [
+      {
+        # Taken from: https://github.com/jghauser/mkdir.nvim
+        event = ["BufWritePre"];
+        pattern = ["*"];
+        callback = {
+          __raw = ''
+            function()
+              -- Get current filename, get full path (:p) and leave only the head (:h)
+              local dir = vim.fn.expand('<afile>:p:h')
+
+              -- This handles URLs using netrw. See ':help netrw-transparent' for details.
+              if dir:find('%l+://') == 1 then
+                return
+              end
+
+              if vim.fn.isdirectory(dir) == 0 then
+                vim.fn.mkdir(dir, 'p')
+              end
+            end
+          '';
+        };
+        group = "create_dir";
+        desc = "Create the directory of the target file on write";
+      }
+      {
+        event = ["TextYankPost"];
+        pattern = ["*"];
+        callback = {
+          __raw = ''
+            function()
+              vim.highlight.on_yank()
+            end
+          '';
+        };
+        group = "highlight_on_yank";
+        desc = "Highlight the yanked text";
+      }
+      {
+        event = ["BufWritePre"];
+        pattern = ["*"];
+        command = ''
+          ks | if search("\\s\\+$", 'n') != 0 | :%s/\s\+$// | endif | 's
+        '';
+        desc = ''
+          Remove trailing whitespace on safe
+          :%s/\s\+$\| \+\ze\t//g >> For trailing spaces and spaces before tabstops
+        '';
+      }
+
+      {
+        event = ["WinLeave"];
+        pattern = ["*"];
+        command = "set nocursorline"; # TODO: possible also nocursorcolumn
+        group = "cursor_off";
+        desc = "Display cursorline and cursorcolumn ONLY in active window.";
+      }
+      {
+        event = ["WinEnter"];
+        pattern = ["*"];
+        command = "set cursorline"; # TODO: possible also cursorcolumn
+        group = "cursor_off";
+        desc = "Display cursorline and cursorcolumn ONLY in active window.";
+      }
+
+      {
+        event = ["InsertEnter"];
+        pattern = ["*"];
+        command = "set colorcolumn=${config.programs.nixvim.opts.colorcolumn}";
+        group = "colorcolumn_toggle";
+        desc = "Only activate the colorcolumn when focused";
+      }
+      {
+        event = ["BufLeave" "FocusLost" "InsertLeave" "WinLeave"];
+        pattern = ["*"];
+        command = "set colorcolumn=0";
+        group = "colorcolumn_toggle";
+        desc = "Only activate the colorcolumn when focused";
+      }
+
+      {
+        event = ["BufEnter" "FocusGained" "InsertLeave" "WinEnter"];
+        pattern = ["*"];
+        command = "if &nu && mode() != \"i\" | set rnu   | endif";
+        group = "numbertoggle";
+        desc = "Change line numbers, when not focused";
+      }
+      {
+        event = ["BufLeave" "FocusLost" "InsertEnter" "WinLeave"];
+        pattern = ["*"];
+        command = "if &nu | set nornu | endif";
+        group = "numbertoggle";
+        desc = "Change line numbers, when not focused";
+      }
+
+      {
+        # Override LineNr
+        event = ["ColorScheme"];
+        pattern = ["*"];
+        command = "highlight LineNr  ctermfg=DarkGrey guifg=DarkGrey ";
+        group = "coloroverride";
+        desc = "Changes Line number colors";
+      }
+      {
+        # Override CursorLineNr
+        event = ["ColorScheme"];
+        pattern = ["*"];
+        command = "highlight CursorLineNr  ctermfg=White guifg=White ";
+        group = "coloroverride";
+        desc = "Changes Line number colors";
+      }
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/clipboard/default.nix b/modules/home.legacy/conf/nvim/clipboard/default.nix
new file mode 100644
index 00000000..0a686190
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/clipboard/default.nix
@@ -0,0 +1,7 @@
+{...}: {
+  programs.nixvim = {
+    clipboard.providers = {
+      wl-copy.enable = true;
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/default.nix b/modules/home.legacy/conf/nvim/default.nix
new file mode 100644
index 00000000..2da80c22
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/default.nix
@@ -0,0 +1,55 @@
+{pkgs, ...}: {
+  imports = [
+    ./autocmds
+    ./clipboard
+    ./files
+    ./mappings
+    ./options
+    ./plgs
+  ];
+  home.sessionVariables = {
+    EDITOR = "nvim";
+    VISUAL = "nvim";
+    CODEEDITOR = "nvim";
+  };
+  programs.nixvim = {
+    enable = true;
+
+    # source: https://www.patorjk.com/software/taag/#p=display&f=ANSI%20Shadow&t=Neovim
+    extraConfigLuaPre =
+      /*
+       FIXME: Update the merge function to support that: <2023-08-29>
+
+      lib.mkBefore
+      */
+      ''
+        ---------------------------------------------------------------------------
+        --
+        --     ███╗   ██╗███████╗ ██████╗ ██╗   ██╗██╗███╗   ███╗
+        --     ████╗  ██║██╔════╝██╔═══██╗██║   ██║██║████╗ ████║
+        --     ██╔██╗ ██║█████╗  ██║   ██║██║   ██║██║██╔████╔██║
+        --     ██║╚██╗██║██╔══╝  ██║   ██║╚██╗ ██╔╝██║██║╚██╔╝██║
+        --     ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║
+        --     ╚═╝  ╚═══╝╚══════╝ ╚═════╝   ╚═══╝  ╚═╝╚═╝     ╚═╝
+        --
+        ---------------------------------------------------------------------------
+      '';
+
+    extraPackages = with pkgs; [
+      /*
+      These are mostly linters and formatters used for different file types.
+      Including them here is fine, as they are not necessarily sync able to different people.
+      */
+      # nix
+      alejandra
+      statix
+
+      # yaml
+      yamllint
+
+      # shell
+      shellcheck
+      shfmt
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/files/default.nix b/modules/home.legacy/conf/nvim/files/default.nix
new file mode 100644
index 00000000..f935ac7b
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/files/default.nix
@@ -0,0 +1,9 @@
+{lib, ...}: {
+  programs.nixvim = {
+    extraFiles = {
+      "ftplugin/tex.lua".text = ''
+        ${lib.strings.fileContents ./ftplugin/tex.lua}
+      '';
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/files/ftplugin/tex.lua b/modules/home.legacy/conf/nvim/files/ftplugin/tex.lua
new file mode 100644
index 00000000..f3fffa86
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/files/ftplugin/tex.lua
@@ -0,0 +1,57 @@
+-- local used = false;
+-- vim.keymap.set('n', '<leader>t', function()
+--     used = not used;
+--     if used then
+--         require('nvim-treesitter.configs').setup {
+--             highlight = {
+--                 additional_vim_regex_highlighting = { "latex", "markdown" },
+--             },
+--         }
+--     else
+--         require('nvim-treesitter.configs').setup {
+--             highlight = {
+--                 additional_vim_regex_highlighting = { "" },
+--             },
+--         }
+--     end
+-- end
+-- );
+--
+--
+
+-- Set tex specific telescope extension
+require("telescope").setup({
+  extensions = {
+    bibtex = {
+      -- Depth for the *.bib file
+      depth = 1,
+      -- Path to global bibliographies (placed outside of the project)
+      global_files = {},
+      -- Define the search keys to use in the picker
+      search_keys = { "author", "year", "title" },
+      -- Template for the formatted citation
+      citation_format = "{{author}} ({{year}}), {{title}}.",
+      -- Only use initials for the authors first name
+      citation_trim_firstname = true,
+      -- Max number of authors to write in the formatted citation
+      -- following authors will be replaced by "et al."
+      citation_max_auth = 2,
+      -- Wrapping in the preview window is disabled by default
+      wrap = false,
+      -- Custom format for citation label
+      custom_formats = {
+        { id = "tex_autocite", cite_marker = "\\autocite{%s}" },
+      },
+      format = "tex_autocite",
+      -- Use context awareness
+      context = true,
+      -- Fallback to global/directory .bib files if context not found
+      -- This setting has no effect if context = false
+      context_fallback = true,
+    },
+  },
+})
+require("telescope").load_extension("bibtex")
+vim.keymap.set("n", "<leader>ib", function()
+  require("telescope").extensions.bibtex.bibtex()
+end, { noremap = true, silent = true, desc = "list bibtex entries in telescope" })
diff --git a/modules/home.legacy/conf/nvim/mappings/default.nix b/modules/home.legacy/conf/nvim/mappings/default.nix
new file mode 100644
index 00000000..af800d22
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/mappings/default.nix
@@ -0,0 +1,282 @@
+{lib, ...}: {
+  programs.nixvim = {
+    globals = {
+      mapleader = " ";
+      maplocalleader = " ";
+    };
+    keymaps = [
+      {
+        mode = ["n" "i"];
+        key = "<Esc>";
+        action = "<cmd>noh<CR><Esc>";
+        options.desc = "Disable the search highlighting and send Escape";
+      }
+      {
+        key = "hh";
+        mode = ["i"];
+        action.__raw = ''
+          function()
+            local cmp = require('cmp');
+            local luasnip = require('luasnip');
+
+            if cmp.visible() then
+                cmp.select_next_item()
+            elseif luasnip.expand_or_locally_jumpable() then
+                luasnip.expand_or_jump()
+            end
+          end
+        '';
+        options.desc = "completion trigger/ forward in completen menu";
+      }
+      {
+        key = "uu";
+        mode = ["i"];
+        action.__raw = ''
+          function()
+            local cmp = require('cmp');
+            cmp.confirm()
+          end
+        '';
+        options.desc = "confirm the selected item";
+      }
+
+      # FIXME: Add the below keymappings, when alacritty gets support for the kitty
+      # keyboard protocol <2023-08-29>
+      {
+        # "<C-Tab>"
+        key = "ztn";
+        action = "<cmd>tabnext<CR>";
+        options.desc = "cycle to the next tab";
+      }
+      {
+        # "<S-C-Tab>"
+        key = "ztp";
+        action = "<cmd>tabprevious<CR>";
+        options.desc = "cycle to the previous tab";
+      }
+
+      # yank/ cut to the system clipboard
+      {
+        key = "<leader>y";
+        action = "\"+y";
+        options.desc = "yank to the system clipboard";
+      }
+      {
+        key = "<leader>Y";
+        action = "\"+Y";
+        options.desc = "yank until the end of the line to the system clipboard";
+      }
+
+      # Unmap some old keys
+      #{key = "s"; action = "'<Nop>'";}
+      #{key = "t"; action = "'<Nop>'";}
+      {
+        key = "<Up>";
+        action = "<Nop>";
+      }
+      {
+        key = "<Down>";
+        action = "<Nop>";
+      }
+      {
+        key = "<Left>";
+        action = "<Nop>";
+      }
+      {
+        key = "<Right>";
+        action = "<Nop>";
+      }
+
+      # Center the cursor vertically when moving to the next word during a search.
+      {
+        key = "l";
+        action = "nzzzv";
+        options.desc = "Center the cursor vertically when moving to the next word during a search.";
+      }
+      {
+        key = "L";
+        action = "Nzzzv";
+        options.desc = "Center the cursor vertically when moving to the next word during a search.";
+      }
+      # remap the other keys to dvorak
+      {
+        key = "k";
+        action = "t";
+        options.desc = "go the the right on char";
+      }
+      {
+        key = "K";
+        action = "T";
+        options.desc = "go to the left on char";
+      }
+      {
+        key = "j";
+        action = "k";
+        options.desc = "go to the right before the char";
+      }
+      {
+        key = "J";
+        action = "K";
+        options.desc = "go to the left before the char";
+      }
+
+      # Change Vim-keys
+      {
+        key = "h";
+        action = "<left>";
+        options.desc = "go left";
+      }
+      {
+        key = "t";
+        action = "g<down>";
+        options.desc = "go down, with displaylines";
+      }
+      {
+        key = "n";
+        action = "g<up>";
+        options.desc = "go up, with displaylines";
+      }
+      {
+        key = "s";
+        action = "<right>";
+        options.desc = "go right";
+      }
+
+      # Move display lines
+      {
+        key = "0";
+        action = "g0";
+        options.desc = "go to the leftmost character in the screen line";
+      }
+      {
+        key = "$";
+        action = "g$";
+        options.desc = "go to the rightmost character in the screen line";
+      }
+      {
+        mode = ["n"];
+        key = "<Enter>";
+        action = "gf";
+        options.desc = "open file/url under cursor";
+      }
+      {
+        mode = ["n"];
+        key = "<Tab>";
+        action = ":";
+        options.desc = "jump to command line";
+      }
+
+      {
+        mode = ["n"];
+        key = "\\f";
+        action.__raw = "function() require('lf').start() end";
+        options.desc = "open lf in a floating window";
+      }
+
+      # Splits
+      {
+        mode = ["n"];
+        key = "<C-t>";
+        action = "<C-w>p";
+        options.desc = "go to previous split";
+      }
+      {
+        mode = ["n"];
+        key = "<C-n>";
+        action = "<C-w>w";
+        options.desc = "go to next split";
+      }
+      {
+        mode = ["n"];
+        key = "<leader>-";
+        action = "<C-W>s";
+        options.desc = "New horizontal split";
+      }
+      {
+        mode = ["n"];
+        key = "<leader>|";
+        action = "<C-W>v";
+        options.desc = "New vertical split";
+      }
+
+      {
+        mode = ["n"];
+        key = "<leader>p";
+        action = "\"_dP";
+        options.desc = "keep the cut thing in the base register";
+      }
+      {
+        mode = ["n"];
+        key = "<leader>c";
+        action = "\"_c";
+        options.desc = "change without saving to register";
+      }
+
+      {
+        mode = ["n"];
+        key = "<leader>d";
+        action = "\"_d";
+        options.desc = "delete without saving to register";
+      }
+      {
+        key = "dd";
+        mode = ["n"];
+        action.__raw = ''
+          function()
+            if vim.api.nvim_get_current_line():match("^%s*$") then
+              return '"_dd'
+            else
+              return "dd"
+            end
+          end
+        '';
+        options = {
+          desc = "Pipe all blank line deletions to the blackhole register";
+          expr = true;
+          silent = true;
+        };
+      }
+
+      {
+        mode = ["n"];
+        key = "<leader>s";
+        action = ":%s/\\<<C-r><C-w>\\>/<C-r><C-w>/gI<Left><Left><Left>";
+        options.desc = "replace for the word under the cursor";
+      }
+
+      {
+        mode = ["n"];
+        key = "<C-s>";
+        action = "<cmd>mksession! <CR>";
+        options.desc = "overwrite/create a session";
+      }
+
+      {
+        mode = ["n"];
+        key = "<leader>X";
+        action = "!!$SHELL <CR>";
+        options.desc = "Read the current line and execute that line in your $SHELL. The resulting output will replace the curent line that was being executed.";
+      }
+      {
+        mode = ["t"];
+        key = "<Esc><Esc>";
+        action = "<C-\\><C-n>";
+        options.desc = "Exit terminal mode with <Esc><Esc>";
+      }
+
+      # move selected lines in visual mode
+      {
+        mode = ["v"];
+        key = "T";
+        action = ":m '>+1<CR>gv=gv";
+        options.desc = "move selected lines in visual mode down";
+      }
+      {
+        mode = ["v"];
+        key = "N";
+        action = ":m '<-2<CR>gv=gv";
+        options.desc = "move selected lines in visual mode up";
+      }
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/options/default.nix b/modules/home.legacy/conf/nvim/options/default.nix
new file mode 100644
index 00000000..d22bdd8f
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/options/default.nix
@@ -0,0 +1,105 @@
+{nixosConfig, ...}: {
+  programs.nixvim.opts = {
+    autoindent = true; # copy indent from previous line
+    cindent = true; # use c like indenting rules
+    breakindent = true; # continue indent visually
+    showbreak = "↳ "; # downwards arrow with tip rightwards(U+21B3, UTF-8: E2 86 B3)
+    breakindentopt = {
+      shift = 2; # wrapped line's beginning will be shifted by the given number of
+    };
+
+    incsearch = true; # show search results while typing
+    inccommand = "split"; # line preview of :s results
+    ignorecase = true; # ignore case when searching
+    smartcase = true; # if a capital letter is used in search, overwrite ignorecase
+    showmatch = true; # show matching words during a search.
+    hlsearch = true; # highlight when searching
+
+    confirm = true; # confirm to save changes before closing modified buffer
+    colorcolumn = "+1"; # show a +1 before the 'textwidth'
+    completeopt = ["menuone" "noselect"]; # have a better completion experience
+
+    # https://www.compart.com/en/unicode/U+XXXX (unicode character code)
+    # stylua: ignore
+    fillchars = {
+      fold = "·"; # MIDDLE DOT (U+00B7, UTF-8: C2 B7)
+      horiz = "━"; # BOX DRAWINGS HEAVY HORIZONTAL (U+2501, UTF-8: E2 94 81)
+      horizdown = "┳"; # BOX DRAWINGS HEAVY DOWN AND HORIZONTAL (U+2533, UTF-8: E2 94 B3)
+      horizup = "┻"; # BOX DRAWINGS HEAVY UP AND HORIZONTAL (U+253B, UTF-8: E2 94 BB)
+      vert = "┃"; # BOX DRAWINGS HEAVY VERTICAL (U+2503, UTF-8: E2 94 83)
+      vertleft = "┫"; # BOX DRAWINGS HEAVY VERTICAL AND LEFT (U+252B, UTF-8: E2 94 AB)
+      vertright = "┣"; # BOX DRAWINGS HEAVY VERTICAL AND RIGHT (U+2523, UTF-8: E2 94 A3)
+      verthoriz = "╋"; # BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL (U+254B, UTF-8: E2 95 8B)
+    };
+    listchars = builtins.concatStringsSep "," [
+      "nbsp:⦸" #  CIRCLED REVERSE SOLIDUS (U+29B8, UTF-8: E2 A6 B8)
+      "tab:▷┅" #  WHITE RIGHT-POINTING TRIANGLE (U+25B7, UTF-8: E2 96 B7)
+      "extends:»" #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (U+00BB, UTF-8: C2 BB)
+      "precedes:«" #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (U+00AB, UTF-8: C2 AB)
+      "trail:•" #  BULLET (U+2022, UTF-8: E2 80 A2)
+    ];
+
+    #  shell-like autocomplete to unambiguous portions
+    wildmode = builtins.concatStringsSep "," [
+      "longest"
+      "list"
+      "full"
+    ];
+
+    grepformat = "%f:%l:%c:%m"; # the default format for rg in vimgrep mode
+    grepprg = "rg --vimgrep"; # use rg as grep implementation in `:grep`
+
+    hidden = true; # allows you to hide buffers with unsaved changes without being prompted
+
+    laststatus = 3; # use global statusline # TODO:
+
+    list = true; # show whitespace
+
+    mouse = ""; # disables the mouse
+
+    number = true; # line numbers
+    relativenumber = true; # relative line numbers
+
+    # vim.opt.shada:append {'%'}; -- store buffers in the shada file and reopen them if nvim has been started without file name argument
+
+    shell = nixosConfig.users.users.soispha.shell.pname; # try to use default shell for the default user as a shell for ":!"
+
+    spell = true; # activate spell checking
+    spelllang = "en_us,de_de"; # set spell languages
+    spelloptions = "camel"; # CamelCase check if both camel and case are correct words
+
+    syntax = "ON"; # use syntax highlighting and let nvim figure out which
+
+    shiftwidth = 0; # use tabstop setting as shiftwidth
+    tabstop = 4; # use 4 spaces in place of a tab
+    expandtab = true; # expand tabs to spaces
+
+    showtabline = 2; # always show the tabline
+
+    timeoutlen = 500; # wait 500 msec for the next char in an input sequence
+    ttyfast = true; # let vim know that I am using a fast term
+
+    undofile = true; # use a undofile, to save the undos
+    undolevels = 10000; # keep nearly all undo things stored
+
+    virtualedit = "block"; # allow the cursor to move beyond actual character in visual block mode
+
+    textwidth = 90; # automatically hard wrap at 90 columns by default
+
+    foldmethod = "marker"; # use markers to specify folds
+
+    termguicolors = true;
+    cursorline = true;
+    # vim.opt.cursorcolumn = true;
+
+    scrolloff = 999; # try to keep at least 999 lines above and below the cursor (this effectively keeps the screen centered)
+
+    linebreak = true; # break to long lines, but do only break them at [[::space::]]
+
+    showcmd = true; # show partial command, being typed
+    showmode = true; # show the mode (Visual, Insert, Command)
+
+    wildmenu = true; # shell completion
+    wildignore = "*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx"; # ignore binary files
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/colorscheme/default.nix b/modules/home.legacy/conf/nvim/plgs/colorscheme/default.nix
new file mode 100644
index 00000000..11357f77
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/colorscheme/default.nix
@@ -0,0 +1,17 @@
+{
+  pkgs,
+  lib,
+  ...
+}: {
+  programs.nixvim = {
+    # TODO: package nightfox though a module
+    extraConfigLuaPost = ''
+      ${lib.strings.fileContents ./lua/nightfox.lua}
+      ${lib.strings.fileContents ./lua/mk_todos_readable.lua}
+    '';
+    colorscheme = "carbonfox";
+    extraPlugins = [
+      pkgs.vimPlugins.nightfox-nvim
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/colorscheme/lua/mk_todos_readable.lua b/modules/home.legacy/conf/nvim/plgs/colorscheme/lua/mk_todos_readable.lua
new file mode 100644
index 00000000..d02171b5
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/colorscheme/lua/mk_todos_readable.lua
@@ -0,0 +1,16 @@
+local opts = { bg = "NONE", bold = true }
+
+---@param hl_group string: The name of the hl group
+---@param extra_opts table: Extra options to pass to nvim_set_hl
+local set_hl = function(hl_group, extra_opts)
+  local local_opts = vim.deepcopy(opts)
+  for k, v in ipairs(extra_opts) do
+    local_opts[k] = v
+  end
+  vim.api.nvim_set_hl(0, hl_group, local_opts)
+end
+
+set_hl("@text.danger", { fg = "red" })
+set_hl("@text.note", { fg = "blue" })
+set_hl("@text.todo", { fg = "green" })
+set_hl("@text.warning", { fg = "yellow" })
diff --git a/modules/home.legacy/conf/nvim/plgs/colorscheme/lua/nightfox.lua b/modules/home.legacy/conf/nvim/plgs/colorscheme/lua/nightfox.lua
new file mode 100644
index 00000000..4c502153
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/colorscheme/lua/nightfox.lua
@@ -0,0 +1,44 @@
+require("nightfox").setup({
+  options = {
+    -- Compiled file's destination location
+    compile_path = vim.fn.stdpath("cache") .. "/nightfox",
+    compile_file_suffix = "_compiled", -- Compiled file suffix
+    transparent = true, -- Disable setting background
+    terminal_colors = true, -- Set terminal colors (vim.g.terminal_color_*) used in `:terminal`
+    dim_inactive = true, -- Non focused panes set to alternative background
+    module_default = true, -- Default enable value for modules
+    colorblind = {
+      enable = true, -- Enable colorblind support
+      simulate_only = false, -- Only show simulated colorblind colors and not diff shifted
+      severity = {
+        protan = 0.3, -- Severity [0,1] for protan (red)
+        deutan = 0.9, -- Severity [0,1] for deutan (green)
+        tritan = 0, -- Severity [0,1] for tritan (blue)
+      },
+    },
+    styles = { -- Style to be applied to different syntax groups
+      comments = "italic", -- Value is any valid attr-list value `:help attr-list`
+      conditionals = "NONE",
+      constants = "NONE",
+      functions = "bold",
+      keywords = "bold",
+      numbers = "NONE",
+      operators = "NONE",
+      strings = "NONE",
+      types = "NONE",
+      variables = "NONE",
+    },
+    inverse = { -- Inverse highlight for different types
+      match_paren = false,
+      visual = false,
+      search = false,
+    },
+    modules = { -- List of various plugins and additional options
+      diagnostic = { enable = true, background = false },
+      native_lsp = { enable = true, background = false },
+    },
+  },
+  palettes = {},
+  specs = {},
+  groups = {},
+})
diff --git a/modules/home.legacy/conf/nvim/plgs/comment-nvim/default.nix b/modules/home.legacy/conf/nvim/plgs/comment-nvim/default.nix
new file mode 100644
index 00000000..2a73b8db
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/comment-nvim/default.nix
@@ -0,0 +1,41 @@
+{...}: {
+  programs.nixvim = {
+    plugins.comment = {
+      enable = true;
+      settings = {
+        padding = true;
+        sticky = true;
+        mappings = {
+          basic = false;
+          extra = false;
+        };
+      };
+    };
+    keymaps = [
+      {
+        key = "gcc";
+        mode = "v";
+        action = "<Plug>(comment_toggle_linewise_visual)";
+        options.desc = "toggle the current line in a linewise comment";
+      }
+      {
+        key = "gbc";
+        mode = "v";
+        action = "<Plug>(comment_toggle_blockwise_visual)";
+        options.desc = "toggle the current line in a blockwise comment";
+      }
+      {
+        key = "gcc";
+        mode = "n";
+        action = "<Plug>(comment_toggle_linewise_current)";
+        options.desc = "toggle the current line in a linewise comment";
+      }
+      {
+        key = "gbc";
+        mode = "n";
+        action = "<Plug>(comment_toggle_blockwise_current)";
+        options.desc = "toggle the current line in a blockwise comment";
+      }
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/debugprint/default.nix b/modules/home.legacy/conf/nvim/plgs/debugprint/default.nix
new file mode 100644
index 00000000..3c591e9f
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/debugprint/default.nix
@@ -0,0 +1,70 @@
+{
+  pkgs,
+  lib,
+  ...
+}: {
+  programs.nixvim = {
+    # TODO: package debugprint though a module
+    extraConfigLuaPost = ''
+      ${lib.strings.fileContents ./lua/debugprint.lua}
+    '';
+    extraPlugins = [
+      pkgs.vimExtraPlugins.debugprint-nvim
+    ];
+
+    keymaps = [
+      {
+        key = "g?v";
+        mode = ["v" "n"];
+        action.__raw = ''
+          function()
+            return require('debugprint').debugprint({variable = true;});
+          end
+        '';
+        options.expr = true;
+        options.desc = ''
+          'variable' debug line below the current line
+        '';
+      }
+      {
+        key = "g?V";
+        mode = ["v" "n"];
+        action.__raw = ''
+          function()
+            return require('debugprint').debugprint({above = true; variable = true;}) ;
+          end
+        '';
+        options.expr = true;
+        options.desc = ''
+          'variable' debug line above the current line
+        '';
+      }
+      {
+        key = "g?p";
+        mode = "n";
+        action.__raw = ''
+          function()
+            return require('debugprint').debugprint();
+          end
+        '';
+        options.expr = true;
+        options.desc = ''
+          'plain' debug line below the current line
+        '';
+      }
+      {
+        key = "g?P";
+        mode = "n";
+        action.__raw = ''
+          function()
+            return require('debugprint').debugprint({above = true;});
+          end
+        '';
+        options.expr = true;
+        options.desc = ''
+          'plain' debug line above the current line
+        '';
+      }
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/debugprint/lua/debugprint.lua b/modules/home.legacy/conf/nvim/plgs/debugprint/lua/debugprint.lua
new file mode 100644
index 00000000..da7e1735
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/debugprint/lua/debugprint.lua
@@ -0,0 +1,3 @@
+require("debugprint").setup({
+  create_keymaps = false,
+})
diff --git a/modules/home.legacy/conf/nvim/plgs/default.nix b/modules/home.legacy/conf/nvim/plgs/default.nix
new file mode 100644
index 00000000..991bc315
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/default.nix
@@ -0,0 +1,33 @@
+{...}: {
+  imports =
+    [
+      # Plugins not yet packaged in nixpkgs
+      # ./debugprint
+      ./lf-nvim
+      # ./lsp-progress-nvim
+    ]
+    ++ [
+      # Already packaged in nixpkgs
+      ./colorscheme
+      ./comment-nvim
+      ./femaco
+      ./flatten-nvim
+      ./goto-preview
+      ./harpoon
+      ./leap
+      ./lsp
+      ./lspkind
+      ./ltex_extra
+      ./lualine
+      ./luasnip
+      ./neorg
+      ./nvim-cmp
+      ./nvim-lint
+      ./raw_plugins
+      ./telescope
+      ./todo-comments
+      ./treesitter
+      ./vim-tex
+      ./which-key
+    ];
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/femaco/default.nix b/modules/home.legacy/conf/nvim/plgs/femaco/default.nix
new file mode 100644
index 00000000..6c4a7d89
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/femaco/default.nix
@@ -0,0 +1,23 @@
+{
+  pkgs,
+  lib,
+  ...
+}: {
+  programs.nixvim = {
+    # TODO: package femaco through a module
+    extraConfigLuaPost = ''
+      ${lib.strings.fileContents ./lua/femaco.lua}
+    '';
+    extraPlugins = [
+      pkgs.vimPlugins.nvim-FeMaco-lua
+    ];
+    keymaps = [
+      {
+        key = "<leader>cc";
+        mode = "n";
+        action.__raw = "require('femaco.edit').edit_code_block";
+        options.desc = "edit a [c]ode blo[c]k with femaco";
+      }
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/femaco/lua/femaco.lua b/modules/home.legacy/conf/nvim/plgs/femaco/lua/femaco.lua
new file mode 100644
index 00000000..da3be8e1
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/femaco/lua/femaco.lua
@@ -0,0 +1,50 @@
+local clip_val = require("femaco.utils").clip_val
+require("femaco").setup({
+  -- should prepare a new buffer and return the winid
+  -- by default opens a floating window
+  -- provide a different callback to change this behaviour
+  -- @param opts: the return value from float_opts
+  prepare_buffer = function(opts)
+    local buf = vim.api.nvim_create_buf(false, false)
+    return vim.api.nvim_open_win(buf, true, opts)
+  end,
+  -- should return options passed to nvim_open_win
+  -- @param code_block: data about the code-block with the keys
+  --   * range
+  --   * lines
+  --   * lang
+  float_opts = function(code_block)
+    return {
+      relative = "cursor",
+      width = clip_val(5, 120, vim.api.nvim_win_get_width(0) - 10), -- TODO: how to offset sign column etc?
+      height = clip_val(5, #code_block.lines, vim.api.nvim_win_get_height(0) - 6),
+      anchor = "NW",
+      row = 0,
+      col = 0,
+      style = "minimal",
+      border = "rounded",
+      zindex = 1,
+    }
+  end,
+  -- return filetype to use for a given lang
+  -- lang can be nil
+  ft_from_lang = function(lang)
+    return lang
+  end,
+  -- what to do after opening the float
+  post_open_float = function(winnr)
+    vim.wo.signcolumn = "no"
+  end,
+  -- create the path to a temporary file
+  create_tmp_filepath = function(filetype)
+    return os.tmpname()
+  end,
+  -- if a newline should always be used, useful for multiline injections
+  -- which separators needs to be on separate lines such as markdown, neorg etc
+  -- @param base_filetype: The filetype which FeMaco is called from, not the
+  -- filetype of the injected language (this is the current buffer so you can
+  -- get it from vim.bo.filetyp).
+  ensure_newline = function(base_filetype)
+    return false
+  end,
+})
diff --git a/modules/home.legacy/conf/nvim/plgs/flatten-nvim/default.nix b/modules/home.legacy/conf/nvim/plgs/flatten-nvim/default.nix
new file mode 100644
index 00000000..cd6f8bcc
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/flatten-nvim/default.nix
@@ -0,0 +1,20 @@
+{
+  pkgs,
+  lib,
+  ...
+}: {
+  programs.nixvim = {
+    # TODO: package flatten-nvim though a module
+
+    extraConfigLuaPre = ''
+      ${lib.strings.fileContents ./lua/flatten-nvim.lua}
+      if os.getenv("NVIM") ~= nil then
+        -- Avoid loading plugins because the host will take control of the instance anyways
+        return
+      end
+    '';
+    extraPlugins = [
+      pkgs.vimPlugins.flatten-nvim
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/flatten-nvim/lua/flatten-nvim.lua b/modules/home.legacy/conf/nvim/plgs/flatten-nvim/lua/flatten-nvim.lua
new file mode 100644
index 00000000..42ea1eb6
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/flatten-nvim/lua/flatten-nvim.lua
@@ -0,0 +1,106 @@
+---Types:
+--
+-- Passed to callbacks that handle opening files
+---@alias BufInfo { fname: string, bufnr: buffer }
+--
+-- Needed aliases
+---@alias buffer integer: Buffer id
+---@alias window integer: Window id
+--
+-- The first argument is a list of BufInfo tables representing the newly opened files.
+-- The third argument is a single BufInfo table, only provided when a buffer is created from stdin.
+--
+-- IMPORTANT: For `block_for` to work, you need to return a buffer number OR a buffer number and a window number.
+--            The `winnr` return value is not required, `vim.fn.bufwinid(bufnr)` is used if it is not provided.
+--            The `filetype` of this buffer will determine whether block should happen or not.
+--
+---@alias OpenHandler fun(files: BufInfo[], argv: string[], stdin_buf: BufInfo, guest_cwd: string):window, buffer
+--
+require("flatten").setup({
+  callbacks = {
+    ---Called to determine if a nested session should wait for the host to close the file.
+    ---param argv: a list of all the arguments in the nested session
+    ---@type fun(argv: table): boolean
+    should_block = require("flatten").default_should_block,
+
+    ---If this returns true, the nested session will be opened.
+    ---If false, default behavior is used, and
+    ---config.nest_if_no_args is respected.
+    ---@type fun(host: channel):boolean
+    should_nest = require("flatten").default_should_nest,
+
+    ---Called before a nested session is opened.
+    pre_open = function() end,
+
+    ---Called after a nested session is opened.
+    ---@param bufnr buffer
+    ---@param winnr window
+    ---@param filetype string
+    ---@param is_blocking boolean
+    ---@param is_diff boolean
+    post_open = function(bufnr, winnr, filetype, is_blocking, is_diff)
+      -- If the file is a git commit, create one-shot autocmd to delete its buffer on write
+      if filetype == "gitcommit" or filetype == "gitrebase" then
+        vim.api.nvim_create_autocmd("BufWritePost", {
+          buffer = bufnr,
+          once = true,
+          callback = vim.schedule_wrap(function()
+            vim.api.nvim_buf_delete(bufnr, {})
+          end),
+        })
+      end
+    end,
+
+    ---Called when a nested session is done waiting for the host.
+    ---@param filetype string
+    block_end = function(filetype) end,
+  },
+  -- <String, Bool> dictionary of filetypes that should be blocking
+  block_for = {
+    gitcommit = true,
+  },
+  -- Command passthrough
+  allow_cmd_passthrough = true,
+  -- Allow a nested session to open if Neovim is opened without arguments
+  nest_if_no_args = false,
+  -- Window options
+  window = {
+    -- Options:
+    -- current        -> open in current window (default)
+    -- alternate      -> open in alternate window (recommended)
+    -- tab            -> open in new tab
+    -- split          -> open in split
+    -- vsplit         -> open in vsplit
+    -- smart          -> smart open (avoids special buffers)
+    -- OpenHandler    -> allows you to handle file opening yourself (see Types)
+    --
+    -- TODO: Open gitcommit filetypes in the current buffer, everything else in a new tab <2023-08-29>
+    open = "split",
+
+    -- Options:
+    -- vsplit         -> opens files in diff vsplits
+    -- split          -> opens files in diff splits
+    -- tab_vsplit     -> creates a new tabpage, and opens diff vsplits
+    -- tab_split      -> creates a new tabpage, and opens diff splits
+    -- OpenHandler    -> allows you to handle file opening yourself (see Types)
+    diff = "tab_vsplit",
+
+    -- Affects which file gets focused when opening multiple at once
+    -- Options:
+    -- "first"        -> open first file of new files (default)
+    -- "last"         -> open last file of new files
+    focus = "first",
+  },
+  -- Override this function to use a different socket to connect to the host
+  -- On the host side this can return nil or the socket address.
+  -- On the guest side this should return the socket address
+  -- or a non-zero channel id from `sockconnect`
+  -- flatten.nvim will detect if the address refers to this instance of nvim, to determine if this is a host or a guest
+  pipe_path = require("flatten").default_pipe_path,
+  -- The `default_pipe_path` will treat the first nvim instance within a single kitty/wezterm session as the host
+  -- You can configure this behaviour using the following:
+  one_per = {
+    kitty = true, -- Flatten all instance in the current Kitty session
+    wezterm = true, -- Flatten all instance in the current Wezterm session
+  },
+})
diff --git a/modules/home.legacy/conf/nvim/plgs/goto-preview/default.nix b/modules/home.legacy/conf/nvim/plgs/goto-preview/default.nix
new file mode 100644
index 00000000..3de28c68
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/goto-preview/default.nix
@@ -0,0 +1,47 @@
+{
+  pkgs,
+  lib,
+  ...
+}: {
+  programs.nixvim = {
+    # TODO: package goto-preview though a module
+    extraConfigLuaPost = ''
+      ${lib.strings.fileContents ./lua/goto-preview.lua}
+    '';
+    extraPlugins = [
+      pkgs.vimPlugins.goto-preview
+    ];
+    keymaps = [
+      {
+        key = "<space>gd";
+        mode = "n";
+        action.__raw = "require('goto-preview').goto_preview_definition";
+        options.desc = "[G]oto [D]efinition";
+      }
+      {
+        key = "<space>gtd";
+        mode = "n";
+        action.__raw = "require('goto-preview').goto_preview_type_definition";
+        options.desc = "[G]oto the [t]ype [D]efinition";
+      }
+      {
+        key = "<space>gi";
+        mode = "n";
+        action.__raw = "require('goto-preview').goto_preview_implementation";
+        options.desc = "[G]oto [I]mplementations";
+      }
+      {
+        key = "<space>gr";
+        mode = "n";
+        action.__raw = "require('goto-preview').goto_preview_references";
+        options.desc = "[G]o to all [R]eferences of the symbol";
+      }
+      {
+        key = "\\<space>";
+        mode = "n";
+        action.__raw = "require('goto-preview').close_all_win";
+        options.desc = "close all preview windows";
+      }
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/goto-preview/lua/goto-preview.lua b/modules/home.legacy/conf/nvim/plgs/goto-preview/lua/goto-preview.lua
new file mode 100644
index 00000000..9687a5a0
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/goto-preview/lua/goto-preview.lua
@@ -0,0 +1,21 @@
+require("goto-preview").setup({
+  width = 120, -- Width of the floating window
+  height = 15, -- Height of the floating window
+  border = { "↖", "─", "┐", "│", "┘", "─", "└", "│" }, -- Border characters of the floating window
+  default_mappings = false, -- Bind default mappings
+  debug = false, -- Print debug information
+  opacity = nil, -- 0-100 opacity level of the floating window where 100 is fully transparent.
+  resizing_mappings = false, -- Binds arrow keys to resizing the floating window.
+  post_open_hook = nil, -- A function taking two arguments, a buffer and a window to be ran as a hook.
+  post_close_hook = nil, -- A function taking two arguments, a buffer and a window to be ran as a hook.
+  references = { -- Configure the telescope UI for slowing the references cycling window.
+    telescope = {}, -- require("telescope.themes").get_dropdown({ hide_preview = false })
+  },
+  -- These two configs can also be passed down to the goto-preview definition and implementation calls for one off "peak" functionality.
+  focus_on_open = true, -- Focus the floating window when opening it.
+  dismiss_on_move = false, -- Dismiss the floating window when moving the cursor.
+  force_close = true, -- passed into vim.api.nvim_win_close's second argument. See :h nvim_win_close
+  bufhidden = "wipe", -- the bufhidden option to set on the floating window. See :h bufhidden
+  stack_floating_preview_windows = true, -- Whether to nest floating windows
+  preview_window_title = { enable = true, position = "left" }, -- Whether to set the preview window title as the filename
+})
diff --git a/modules/home.legacy/conf/nvim/plgs/harpoon/default.nix b/modules/home.legacy/conf/nvim/plgs/harpoon/default.nix
new file mode 100644
index 00000000..465f24f0
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/harpoon/default.nix
@@ -0,0 +1,94 @@
+{pkgs, ...}: let
+  numbers = ["0" "1" "2" "3" "4" "5" "6" "7" "8" "9"];
+  mkNumberedCommand = {
+    command_template,
+    prefix,
+    number,
+    desc_template,
+  }: {
+    key = "${prefix}${number}";
+    action.__raw = ''
+      function()
+        ${command_template number}
+      end
+    '';
+    options.desc = "${desc_template number}";
+  };
+  mkGotoTerminalCommand = number: let
+    desc_template = number: "Goto terminal number ${number}";
+    command_template = number: ''require("harpoon.term").gotoTerminal(${number})'';
+    prefix = "gt";
+  in
+    mkNumberedCommand {inherit desc_template command_template prefix number;};
+  mkGotoFileCommand = number: let
+    desc_template = number: "Goto Buffer number ${number}";
+    command_template = number: ''require("harpoon.ui").nav_file(${number})'';
+    prefix = "gf";
+  in
+    mkNumberedCommand {inherit desc_template command_template prefix number;};
+
+  gotoTerminalMappings = builtins.map mkGotoTerminalCommand numbers;
+  gotoFileMappings = builtins.map mkGotoFileCommand numbers;
+in {
+  programs.nixvim = {
+    plugins.harpoon = {
+      enable = true;
+      package = pkgs.vimPlugins.harpoon;
+      enableTelescope = true;
+      # menu.width = "vim.api.nvim_win_get_width(0) - 4"; # TODO: integrate that
+      keymaps = {
+        tmuxGotoTerminal = null; # TODO:
+      };
+    };
+    keymaps =
+      [
+        {
+          key = "-";
+          action.__raw = ''
+            function()
+              require("harpoon.ui").nav_next()
+             end
+          '';
+          options.desc = "go to the next marked file";
+        }
+        {
+          key = "_";
+          action.__raw = ''
+            function()
+              require("harpoon.ui").nav_prev()
+             end
+          '';
+          options.desc = "go to the previous marked file";
+        }
+        {
+          key = "<leader><leader>";
+          action.__raw = ''
+            function()
+              require("harpoon.mark").add_file()
+            end
+          '';
+          options.desc = "add a mark to the open file in harpoon.";
+        }
+        {
+          key = "gqc";
+          action.__raw = ''
+            function()
+              require("harpoon.cmd-ui").toggle_quick_menu()
+            end
+          '';
+          options.desc = "toggle the harpoon command quick menu to see all commands.";
+        }
+        {
+          key = "<leader>q";
+          action.__raw = ''
+            function()
+              require("harpoon.ui").toggle_quick_menu()
+            end
+          '';
+          options.desc = "toggle the harpoon normal quick menu to see all marks.";
+        }
+      ]
+      ++ gotoFileMappings
+      ++ gotoTerminalMappings;
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/leap/default.nix b/modules/home.legacy/conf/nvim/plgs/leap/default.nix
new file mode 100644
index 00000000..4e7ae60c
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/leap/default.nix
@@ -0,0 +1,59 @@
+{...}: {
+  programs.nixvim = {
+    plugins.leap = {
+      enable = true;
+      addDefaultMappings = false; # They don't work with dvorak.
+      safeLabels = [
+        "f"
+        "j"
+        "k"
+        "l"
+        "/"
+        "z"
+        "S"
+        "F"
+        "J"
+        "K"
+        "L"
+        "H"
+        "W"
+        "E"
+        "M"
+        "B"
+        "U"
+        "X"
+        "?"
+        "Z"
+      ];
+    };
+    keymaps = [
+      {
+        key = "j";
+        action = "<Plug>(leap-forward-to)";
+        options.desc = "jump forward to";
+      }
+      {
+        key = "J";
+        action = "<Plug>(leap-backward-to)";
+        options.desc = "jump backward to";
+      }
+      {
+        key = "gj";
+        action = "<Plug>(leap-from-window)";
+        options.desc = "jump to enterable windows";
+      }
+      /*
+            {key= "x";
+              mode = "v";
+              action = "<Plug>(leap-forward-till)";
+      options.desc = "leap forward till";
+            }
+            {key= "X";
+              mode = "v";
+              action = "<Plug>(leap-backward-till)";
+      options.desc = "leap backward till";
+            }
+      */
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/lf-nvim/default.nix b/modules/home.legacy/conf/nvim/plgs/lf-nvim/default.nix
new file mode 100644
index 00000000..11ad2807
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lf-nvim/default.nix
@@ -0,0 +1,18 @@
+{
+  pkgs,
+  lib,
+  ...
+}: {
+  programs.nixvim = {
+    # TODO: package lf-nvim though a module
+    # FIXME: change the nvim path, when I change the path with lf
+    extraConfigLuaPost = ''
+      ${lib.strings.fileContents ./lua/lf-nvim.lua}
+    '';
+    extraPlugins = [
+      pkgs.vimExtraPlugins.lf-nvim
+
+      pkgs.vimPlugins.toggleterm-nvim # required by lf-nvim
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/lf-nvim/lua/lf-nvim.lua b/modules/home.legacy/conf/nvim/plgs/lf-nvim/lua/lf-nvim.lua
new file mode 100644
index 00000000..1eadf375
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lf-nvim/lua/lf-nvim.lua
@@ -0,0 +1,43 @@
+local fn = vim.fn
+
+-- Defaults
+require("lf").setup({
+  default_action = "drop", -- default action when `Lf` opens a file
+  -- TODO: what do these mappings do?
+  default_actions = { -- default action keybindings
+    ["<C-t>"] = "tabedit",
+    ["<C-x>"] = "split",
+    ["<C-v>"] = "vsplit",
+    ["<C-o>"] = "tab drop",
+  },
+
+  winblend = 10, -- psuedotransparency level
+  dir = "", -- directory where `lf` starts ('gwd' is git-working-directory, ""/nil is CWD)
+  direction = "float", -- window type: float horizontal vertical
+  border = "rounded", -- border kind: single double shadow curved
+  height = fn.float2nr(fn.round(0.75 * vim.o.lines)), -- height of the *floating* window
+  width = fn.float2nr(fn.round(0.75 * vim.o.columns)), -- width of the *floating* window
+  escape_quit = true, -- map escape to the quit command (so it doesn't go into a meta normal mode)
+  focus_on_open = true, -- focus the current file when opening Lf (experimental)
+  mappings = true, -- whether terminal buffer mapping is enabled
+  tmux = false, -- tmux statusline can be disabled on opening of Lf
+  default_file_manager = true, -- make lf default file manager
+  disable_netrw_warning = true, -- don't display a message when opening a directory with `default_file_manager` as true
+  highlights = { -- highlights passed to toggleterm
+    Normal = { link = "Normal" },
+    NormalFloat = { link = "Normal" },
+    FloatBorder = { guifg = "#cdcbe0", guibg = "#191726" },
+  },
+
+  -- Layout configurations
+  layout_mapping = "<M-u>", -- resize window with this key
+  views = { -- window dimensions to rotate through
+    { width = 0.800, height = 0.800 },
+    { width = 0.600, height = 0.600 },
+    { width = 0.950, height = 0.950 },
+    { width = 0.500, height = 0.500, col = 0, row = 0 },
+    { width = 0.500, height = 0.500, col = 0, row = 0.5 },
+    { width = 0.500, height = 0.500, col = 0.5, row = 0 },
+    { width = 0.500, height = 0.500, col = 0.5, row = 0.5 },
+  },
+})
diff --git a/modules/home.legacy/conf/nvim/plgs/lsp-progress-nvim/default.nix b/modules/home.legacy/conf/nvim/plgs/lsp-progress-nvim/default.nix
new file mode 100644
index 00000000..6602ceb6
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lsp-progress-nvim/default.nix
@@ -0,0 +1,50 @@
+{
+  lib,
+  pkgs,
+  ...
+}: {
+  programs.nixvim = {
+    # TODO: package lsp-progress-nvim though a module
+    extraConfigLuaPost = ''
+      ${lib.strings.fileContents ./lua/lsp-progress-nvim.lua}
+    '';
+    extraPlugins = [
+      pkgs.vimExtraPlugins.lsp-progress-nvim
+    ];
+
+    # Status line setup
+    autoGroups.lsp_refresh.clear = true;
+    autoCmd = [
+      {
+        event = ["User LspProgressStatusUpdated"];
+        pattern = ["*"];
+        callback =
+          /*
+          lua
+          */
+          {
+            __raw = ''
+              require("lualine").refresh
+            '';
+          };
+        group = "lsp_refresh";
+        description = "Refresh the statusbar when the lsp status was updated.";
+      }
+    ];
+    plugins.lualine = let
+      get_lsp_progress = {
+        __raw =
+          /*
+          lua
+          */
+          ''
+            require('lsp-progress').progress
+          '';
+      };
+    in {
+      sections = {
+        lualine_c = [{name = get_lsp_progress;}];
+      };
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/lsp-progress-nvim/lua/lsp-progress-nvim.lua b/modules/home.legacy/conf/nvim/plgs/lsp-progress-nvim/lua/lsp-progress-nvim.lua
new file mode 100644
index 00000000..efb15720
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lsp-progress-nvim/lua/lsp-progress-nvim.lua
@@ -0,0 +1,150 @@
+--- @type table<string, any>
+require("lsp-progress").setup({
+  -- Spinning icons.
+  --
+  --- @type string[]
+  spinner = { "⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷" },
+
+  -- Spinning update time in milliseconds.
+  --
+  --- @type integer
+  spin_update_time = 200,
+
+  -- Last message cached decay time in milliseconds.
+  --
+  -- Message could be really fast(appear and disappear in an
+  -- instant) that user cannot even see it, thus we cache the last message
+  -- for a while for user view.
+  --
+  --- @type integer
+  decay = 700,
+
+  -- User event name.
+  --
+  --- @type string
+  event = "LspProgressStatusUpdated",
+
+  -- Event update time limit in milliseconds.
+  --
+  -- Sometimes progress handler could emit many events in an instant, while
+  -- refreshing statusline cause too heavy synchronized IO, so we limit the
+  -- event rate to reduce this cost.
+  --
+  --- @type integer
+  event_update_time_limit = 100,
+
+  -- Max progress string length, by default -1 is unlimited.
+  --
+  --- @type integer
+  max_size = -1,
+
+  -- Regular internal update time.
+  --
+  -- Emit user event to update the lsp progress status, even there's no new
+  -- message.
+  --
+  --- @type integer
+  regular_internal_update_time = 500,
+
+  -- Disable emitting events on specific mode/filetype.
+  -- User events would interrupt insert mode, thus break which-key like plugins behaviour.
+  -- See:
+  --  * https://github.com/linrongbin16/lsp-progress.nvim/issues/50
+  --  * https://neovim.io/doc/user/builtin.html#mode()
+  --
+  --- @type table[]
+  disable_events_opts = { { mode = "i", filetype = "TelescopePrompt" } },
+
+  -- Format series message.
+  --
+  -- By default it looks like: `formatting isort (100%) - done`.
+  --
+  --- @param title string|nil
+  ---     Message title.
+  --- @param message string|nil
+  ---     Message body.
+  --- @param percentage number|nil
+  ---     Progress in percentage numbers: 0-100.
+  --- @param done boolean
+  ---     Indicate whether this series is the last one in progress.
+  --- @return string|nil messages
+  ---     The returned value will be passed to function `client_format` as
+  ---     one of the `series_messages` array, or ignored if return nil.
+  series_format = function(title, message, percentage, done)
+    local builder = {}
+    local has_title = false
+    local has_message = false
+    if title and title ~= "" then
+      table.insert(builder, title)
+      has_title = true
+    end
+    if message and message ~= "" then
+      table.insert(builder, message)
+      has_message = true
+    end
+    if percentage and (has_title or has_message) then
+      table.insert(builder, string.format("(%.0f%%%%)", percentage))
+    end
+    if done and (has_title or has_message) then
+      table.insert(builder, "- done")
+    end
+    return table.concat(builder, " ")
+  end,
+
+  -- Format client message.
+  --
+  -- By default it looks like:
+  -- `[null-ls] ⣷ formatting isort (100%) - done, formatting black (50%)`.
+  --
+  --- @param client_name string
+  ---     Client name.
+  --- @param spinner string
+  ---     Spinner icon.
+  --- @param series_messages string[]|table[]
+  ---     Messages array.
+  --- @return string|nil messages
+  ---     The returned value will be passed to function `format` as one of the
+  ---     `client_messages` array, or ignored if return nil.
+  client_format = function(client_name, spinner, series_messages)
+    return #series_messages > 0
+        and ("[" .. client_name .. "] " .. spinner .. " " .. table.concat(series_messages, ", "))
+      or nil
+  end,
+
+  -- Format (final) message.
+  --
+  -- By default it looks like:
+  -- ` LSP [null-ls] ⣷ formatting isort (100%) - done, formatting black (50%)`
+  --
+  --- @param client_messages string[]|table[]
+  ---     Client messages array.
+  --- @return nil|string message
+  ---     The returned value will be returned from `progress` API.
+  format = function(client_messages)
+    local sign = " LSP" -- nf-fa-gear \uf013
+    return #client_messages > 0 and (sign .. " " .. table.concat(client_messages, " ")) or sign
+  end,
+
+  -- Enable debug.
+  --
+  --- @type boolean
+  debug = false,
+
+  -- Print log to console(command line).
+  --
+  --- @type boolean
+  console_log = false,
+
+  -- Print log to file.
+  --
+  --- @type boolean
+  file_log = true,
+
+  -- Log file to write, work with `file_log=true`.
+  --
+  -- For Windows: `$env:USERPROFILE\AppData\Local\nvim-data\lsp-progress.log`.
+  -- For *NIX: `~/.local/share/nvim/lsp-progress.log`.
+  --
+  --- @type string
+  file_log_name = "lsp-progress.log",
+})
diff --git a/modules/home.legacy/conf/nvim/plgs/lsp/default.nix b/modules/home.legacy/conf/nvim/plgs/lsp/default.nix
new file mode 100644
index 00000000..b7c1e174
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lsp/default.nix
@@ -0,0 +1,29 @@
+{...}: {
+  imports = [
+    ./keymaps
+    ./servers
+  ];
+  programs.nixvim.plugins.lsp = {
+    enable = true;
+    onAttach =
+      ""
+      #     + ''
+      #        function(client, bufnr)
+      #            -- Enable completion triggered by <c-x><c-o>
+      #            -- vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
+      #        end
+      #      ''
+      ;
+    preConfig = ''
+      vim.diagnostic.config({
+          underline = true,
+          -- virtual_text = true,
+          virtual_text = {
+              source = "always", -- Or "if_many"
+          },
+          update_in_insert = true,
+          severity_sort = true,
+      }, nil);
+    '';
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/lsp/keymaps/default.nix b/modules/home.legacy/conf/nvim/plgs/lsp/keymaps/default.nix
new file mode 100644
index 00000000..b1276639
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lsp/keymaps/default.nix
@@ -0,0 +1,70 @@
+{...}: {
+  programs.nixvim = {
+    plugins.lsp.keymaps = {
+      diagnostic = {
+        "N" = {
+          action = "goto_prev";
+          desc = "go to previous diagnostic message";
+        };
+        "T" = {
+          action = "goto_next";
+          desc = "go to next diagnostic message";
+        };
+        "<space>e" = {
+          action = "open_float";
+          desc = "open float for the symbol";
+        };
+        "<space>gq" = {
+          action = "setloclist";
+          desc = "add buffer diagnostic to the location list (quick-fix)";
+        };
+      };
+      lspBuf = {
+        "<space>gD" = {
+          action = "declaration";
+          desc = "[G]o to [d]eclaration";
+        };
+        "<space>hi" = {
+          action = "hover";
+          desc = "Display [h]over [i]nformation";
+        };
+        "<space>sh" = {
+          action = "signature_help";
+          desc = "Display [s]ignature [h]elp";
+        };
+        "<space>wa" = {
+          action = "add_workspace_folder";
+          desc = "[W]orkspace folder [a]dd";
+        };
+        "<space>wr" = {
+          action = "remove_workspace_folder";
+          desc = "[W]orkspace folder [r]emove";
+        };
+        "<space>rn" = {
+          action = "rename";
+          desc = "[R]e[n]ame the item under the cursor";
+        };
+        "<space>ca" = {
+          action = "code_action";
+          desc = "Open the [c]ode [a]ction menu";
+        };
+      };
+    };
+    keymaps = [
+      {
+        key = "<space>f";
+        action.__raw = "function() vim.lsp.buf.format { async = true } end";
+        options.desc = "[F]ormat the current buffer (asynchronously)";
+      }
+      {
+        key = "<space>wl";
+        action.__raw = ''
+          function()
+            print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
+          end
+        '';
+        options.desc = "[W]orkspace folders [l]ist";
+      }
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/lsp/servers/default.nix b/modules/home.legacy/conf/nvim/plgs/lsp/servers/default.nix
new file mode 100644
index 00000000..605046d4
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lsp/servers/default.nix
@@ -0,0 +1,15 @@
+{...}: {
+  imports = [
+    # ./servers/pylyzer.nix
+    ./servers/bashls.nix
+    ./servers/ccls.nix
+    ./servers/quick-lint-js.nix
+    ./servers/ltex.nix
+    ./servers/lua-ls.nix
+    ./servers/nil-ls.nix
+    ./servers/openscad.nix
+    ./servers/ruff-lsp.nix
+    ./servers/rust-analyzer.nix
+    ./servers/texlab.nix
+  ];
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/bashls.nix b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/bashls.nix
new file mode 100644
index 00000000..0577a335
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/bashls.nix
@@ -0,0 +1,5 @@
+{...}: {
+  programs.nixvim.plugins.lsp.servers = {
+    bashls.enable = true;
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/ccls.nix b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/ccls.nix
new file mode 100644
index 00000000..0698bcce
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/ccls.nix
@@ -0,0 +1,5 @@
+{...}: {
+  programs.nixvim.plugins.lsp.servers = {
+    ccls.enable = true;
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/ltex.nix b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/ltex.nix
new file mode 100644
index 00000000..3224bc41
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/ltex.nix
@@ -0,0 +1,39 @@
+{...}: {
+  programs.nixvim.plugins.lsp.servers = {
+    ltex = let
+      filetypes = [
+        "java"
+        "cpp"
+        "shell"
+        "bash"
+
+        "bibtex"
+        "context"
+        "context.tex"
+        "latex"
+        "tex"
+
+        "markdown"
+        "org"
+        "restructuredtext"
+        "rsweave"
+
+        "git-commit"
+        "gitcommit"
+
+        "mail"
+      ];
+    in {
+      enable = true;
+      inherit filetypes;
+      settings = {
+        enabled = filetypes;
+        completionEnabled = false;
+        language = "en-CA";
+        additionalRules = {
+          enablePickyRules = true;
+        };
+      };
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/lua-ls.nix b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/lua-ls.nix
new file mode 100644
index 00000000..4f20558c
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/lua-ls.nix
@@ -0,0 +1,8 @@
+{...}: {
+  programs.nixvim.plugins.lsp.servers = {
+    lua_ls = {
+      enable = true;
+      settings.telemetry.enable = false;
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/nil-ls.nix b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/nil-ls.nix
new file mode 100644
index 00000000..f0cccbdc
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/nil-ls.nix
@@ -0,0 +1,10 @@
+{...}: {
+  programs.nixvim.plugins.lsp.servers = {
+    nil_ls = {
+      enable = true;
+      settings = {
+        formatting.command = ["alejandra"];
+      };
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/openscad.nix b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/openscad.nix
new file mode 100644
index 00000000..a0221cc4
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/openscad.nix
@@ -0,0 +1,17 @@
+{pkgs, ...}: {
+  programs.nixvim = {
+    extraConfigLuaPost =
+      /*
+      lua
+      */
+      ''
+        require('lspconfig').openscad_lsp.setup{
+          cmd = {"openscad-lsp", "--stdio", "--fmt-style", "WebKit"},
+        }
+      '';
+    extraPackages = with pkgs; [
+      openscad-lsp
+      clang-tools # Need to satisfy `clang-format` (which is used by openscad-lsp)
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/pylyzer.nix b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/pylyzer.nix
new file mode 100644
index 00000000..b1042221
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/pylyzer.nix
@@ -0,0 +1,12 @@
+{pkgs, ...}: {
+  programs.nixvim = {
+    extraConfigLuaPost =
+      /*
+      lua
+      */
+      ''
+        require('lspconfig').pylyzer.setup{}
+      '';
+    extraPackages = with pkgs; [pylyzer];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/quick-lint-js.nix b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/quick-lint-js.nix
new file mode 100644
index 00000000..23c3054a
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/quick-lint-js.nix
@@ -0,0 +1,15 @@
+{pkgs, ...}: {
+  programs.nixvim = {
+    extraConfigLuaPost =
+      /*
+      lua
+      */
+      ''
+        require('lspconfig').quick_lint_js.setup{
+        }
+      '';
+    extraPackages = with pkgs; [
+      quick-lint-js
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/ruff-lsp.nix b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/ruff-lsp.nix
new file mode 100644
index 00000000..6fbdc998
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/ruff-lsp.nix
@@ -0,0 +1,10 @@
+{pkgs, ...}: {
+  programs.nixvim = {
+    plugins.lsp.servers = {
+      ruff_lsp = {
+        enable = true;
+      };
+    };
+    extraPackages = with pkgs; [ruff];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/rust-analyzer.nix b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/rust-analyzer.nix
new file mode 100644
index 00000000..5da61a71
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/rust-analyzer.nix
@@ -0,0 +1,17 @@
+{...}: {
+  programs.nixvim.plugins.lsp.servers = {
+    rust_analyzer = {
+      enable = true;
+      settings = {
+        typing.autoClosingAngleBrackets.enable = true;
+
+        # Check with `cargo clippy` instead of just `cargo check`
+        check.command = "clippy";
+      };
+      # NOTE: These should be provided by the devenv, to support nightly and
+      # such things <2023-11-25>
+      installCargo = false;
+      installRustc = false;
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/texlab.nix b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/texlab.nix
new file mode 100644
index 00000000..59af8d39
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lsp/servers/servers/texlab.nix
@@ -0,0 +1,7 @@
+{...}: {
+  programs.nixvim.plugins.lsp.servers = {
+    texlab = {
+      enable = true;
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/lspkind/default.nix b/modules/home.legacy/conf/nvim/plgs/lspkind/default.nix
new file mode 100644
index 00000000..ed7d411b
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lspkind/default.nix
@@ -0,0 +1,6 @@
+{...}: {
+  programs.nixvim.plugins.lspkind = {
+    enable = true;
+    preset = "default"; # "codicons" is only for a font patched with vscode-codeicons.
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/ltex_extra/default.nix b/modules/home.legacy/conf/nvim/plgs/ltex_extra/default.nix
new file mode 100644
index 00000000..af78c7a5
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/ltex_extra/default.nix
@@ -0,0 +1,9 @@
+{pkgs, ...}: {
+  programs.nixvim = {
+    # TODO: package ltex_extra though a module
+    extraPlugins = [
+      pkgs.vimPlugins.ltex_extra-nvim
+    ];
+    plugins.lsp.servers.ltex.onAttach.function = builtins.readFile ./lua/ltex_extra.lua;
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/ltex_extra/lua/ltex_extra.lua b/modules/home.legacy/conf/nvim/plgs/ltex_extra/lua/ltex_extra.lua
new file mode 100644
index 00000000..d532428a
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/ltex_extra/lua/ltex_extra.lua
@@ -0,0 +1,16 @@
+require("ltex_extra").setup({
+  -- table <string> : languages for witch dictionaries will be loaded, e.g. { "es-AR", "en-US" }
+  -- https://valentjn.github.io/ltex/supported-languages.html#natural-languages
+  load_langs = { "en-CA", "de-DE", "sv-SE" }, -- en-US as default
+  -- boolean : whether to load dictionaries on startup
+  init_check = true,
+  -- string : relative or absolute path to store dictionaries
+  -- e.g. subfolder in the project root or the current working directory: ".ltex"
+  -- e.g. shared files for all projects:  vim.fn.expand("~") .. "/.local/share/ltex"
+  path = vim.fn.expand("~") .. "/.local/state/nvim/ltex", -- project root or current working directory
+  -- string : "none", "trace", "debug", "info", "warn", "error", "fatal"
+  log_level = "warn",
+  -- table : configurations of the ltex language server.
+  -- Only if you are calling the server from ltex_extra
+  server_opts = nil,
+})
diff --git a/modules/home.legacy/conf/nvim/plgs/lualine/default.nix b/modules/home.legacy/conf/nvim/plgs/lualine/default.nix
new file mode 100644
index 00000000..54d20380
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/lualine/default.nix
@@ -0,0 +1,121 @@
+{...}: {
+  programs.nixvim.plugins.lualine = let
+    get_location_of_file = {
+      __raw = ''
+        function()
+            local file_lines = vim.fn.line('$');
+            local file_current_cursor_positon = vim.fn.getcurpos();
+            return file_current_cursor_positon[3] .. ":" .. file_current_cursor_positon[2] .. "/" .. file_lines
+        end
+      '';
+    };
+
+    get_trailing_whitespace = {
+      __raw = ''
+        function()
+            local space = vim.fn.search([[\s\+$]], 'nwc')
+            return space ~= 0 and "TW:" .. space or ""
+        end
+      '';
+    };
+    get_mixed_indent = {
+      __raw =
+        /*
+        lua
+        */
+        ''
+          function()
+              local space_pat = [[\v^ +]]
+              local tab_pat = [[\v^\t+]]
+              local space_indent = vim.fn.search(space_pat, 'nwc')
+              local tab_indent = vim.fn.search(tab_pat, 'nwc')
+              local mixed = (space_indent > 0 and tab_indent > 0)
+              local mixed_same_line
+              if not mixed then
+                  mixed_same_line = vim.fn.search([[\v^(\t+ | +\t)]], 'nwc')
+                  mixed = mixed_same_line > 0
+              end
+              if not mixed then return "" end
+              if mixed_same_line ~= nil and mixed_same_line > 0 then
+                  return 'MI:' .. mixed_same_line
+              end
+              local space_indent_cnt = vim.fn.searchcount({ pattern = space_pat, max_count = 1e3 }).total
+              local tab_indent_cnt = vim.fn.searchcount({ pattern = tab_pat, max_count = 1e3 }).total
+              if space_indent_cnt > tab_indent_cnt then
+                  return 'MI:' .. tab_indent
+              else
+                  return 'MI:' .. space_indent
+              end
+          end
+        '';
+    };
+  in {
+    enable = true;
+
+    settings = {
+      options = {
+        iconsEnabled = true;
+        theme = "nightfox";
+      };
+
+      # TODO: add all installed and supported extensions here
+      extensions = [
+        "toggleterm"
+        #"fugitive" # TODO: maybe add this?
+      ];
+
+      componentSeparators = {
+        left = "";
+        right = "";
+      };
+      sectionSeparators = {
+        left = "";
+        right = "";
+      };
+      disabledFiletypes = {
+        statusline = [];
+        winbar = [];
+      };
+      ignoreFocus = [];
+      alwaysDivideMiddle = true;
+      globalstatus = false;
+      refresh = {
+        statusline = 1000;
+        tabline = 1000;
+        winbar = 1000;
+      };
+      sections = {
+        lualine_a = ["mode"];
+        lualine_b = [
+          {
+            __raw = ''
+              {'FugitiveHead',  icon = ""}
+            '';
+          }
+          "diff"
+          "diagnostics"
+        ];
+        lualine_c = ["filename"];
+        lualine_x = ["searchcount" "filetype"];
+        lualine_y = [
+          "encoding"
+          "fileformat"
+          get_mixed_indent
+          get_trailing_whitespace
+        ];
+        lualine_z = [get_location_of_file];
+      };
+      inactiveSections = {
+        lualine_a = [];
+        lualine_b = [];
+        lualine_c = ["filename"];
+        lualine_x = [get_location_of_file];
+        lualine_y = [];
+        lualine_z = [];
+      };
+      tabline = {};
+      winbar = {};
+      inactiveWinbar = {};
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/luasnip/default.nix b/modules/home.legacy/conf/nvim/plgs/luasnip/default.nix
new file mode 100644
index 00000000..130fafee
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/luasnip/default.nix
@@ -0,0 +1,20 @@
+{
+  lib,
+  pkgs,
+  ...
+}: {
+  programs.nixvim = {
+    plugins.luasnip = {
+      enable = true;
+    };
+    extraConfigLuaPost = ''
+      ${lib.strings.fileContents ./lua/luasnip.lua};
+      require("luasnip.loaders.from_lua").load({paths = "${./lua/snippets}"});
+      require("luasnip.loaders.from_lua").lazy_load({paths = "${./lua/snippets}"});
+    '';
+    extraPlugins = [
+      # needed for the todo-comments snippets
+      pkgs.vimPlugins.comment-nvim
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/luasnip/lua/luasnip.lua b/modules/home.legacy/conf/nvim/plgs/luasnip/lua/luasnip.lua
new file mode 100644
index 00000000..a05fa57f
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/luasnip/lua/luasnip.lua
@@ -0,0 +1,7 @@
+require("luasnip").config.set_config({
+  -- Enable auto triggered snippets
+  enable_autosnippets = true,
+
+  -- Use Tab (or some other key if you prefer) to trigger visual selection
+  store_selection_keys = "<Tab>",
+})
diff --git a/modules/home.legacy/conf/nvim/plgs/luasnip/lua/snippets/all.lua b/modules/home.legacy/conf/nvim/plgs/luasnip/lua/snippets/all.lua
new file mode 100644
index 00000000..c3f75058
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/luasnip/lua/snippets/all.lua
@@ -0,0 +1,182 @@
+local ls = require("luasnip")
+-- auto_pairs  {{{
+local get_visual = function(args, parent)
+  if #parent.snippet.env.SELECT_RAW > 0 then
+    return sn(nil, i(1, parent.snippet.env.SELECT_RAW))
+  else
+    return sn(nil, i(1, ""))
+  end
+end
+local function char_count_same(c1, c2)
+  local line = vim.api.nvim_get_current_line()
+  -- '%'-escape chars to force explicit match (gsub accepts patterns).
+  -- second return value is number of substitutions.
+  local _, ct1 = string.gsub(line, "%" .. c1, "")
+  local _, ct2 = string.gsub(line, "%" .. c2, "")
+  return ct1 == ct2
+end
+
+local function even_count(c, ...)
+  local line = vim.api.nvim_get_current_line()
+  local _, ct = string.gsub(line, c, "")
+  return ct % 2 == 0
+end
+
+-- This makes creation of pair-type snippets easier.
+local function pair(pair_begin, pair_end, file_types, condition_function)
+  -- FIXME(@Soispha): This only works if file_types == nil, otherwise the snippet does not expand.
+  -- It would be nice, if it would support both an empty array (`{}`) and nil <2023-08-27>
+  -- file_types = file_types or {};
+
+  return s(
+    { trig = pair_begin, wordTrig = false, snippetType = "autosnippet" },
+    { t({ pair_begin }), d(1, get_visual), t({ pair_end }) },
+    {
+      condition = function()
+        local filetype_check = true
+        if file_types ~= nil then
+          filetype_check = file_types[vim.bo.filetype] or false
+        end
+        return (not condition_function(pair_begin, pair_end)) and filetype_check
+      end,
+    }
+  )
+end
+
+local auto_pairs = {
+  pair("(", ")", nil, char_count_same),
+  pair("{", "}", nil, char_count_same),
+  pair("[", "]", nil, char_count_same),
+  pair("<", ">", { ["rust"] = true, ["tex"] = true }, char_count_same),
+  pair("'", "'", nil, even_count),
+  pair('"', '"', nil, even_count),
+  pair("`", "`", nil, even_count),
+}
+
+ls.add_snippets("all", auto_pairs, { type = "snippets", key = "auto_pairs" })
+-- }}}
+
+-- todo_comments {{{
+local calculate_comment_string = require("Comment.ft").calculate
+local utils = require("Comment.utils")
+
+--- Get the comment string {beg,end} table
+---@param ctype integer 1 for `line`-comment and 2 for `block`-comment
+---@return table comment_strings {begcstring, endcstring}
+local get_cstring = function(ctype)
+  -- use the `Comments.nvim` API to fetch the comment string for the region (eq. '--%s' or '--[[%s]]' for `lua`)
+  local cstring = calculate_comment_string({ ctype = ctype, range = utils.get_region() }) or vim.bo.commentstring
+  -- as we want only the strings themselves and not strings ready for using `format` we want to split the left and right side
+  local left, right = utils.unwrap_cstr(cstring)
+  -- create a `{left, right}` table for it
+  return { left, right }
+end
+_G.luasnip = {}
+_G.luasnip.vars = {
+  username = "@soispha",
+  email = "soispha@vhack.eu",
+}
+
+--- Options for marks to be used in a TODO comment
+---@return table,table: The first table contains a node for the date, the second for the signature
+local marks = {
+  signature = function()
+    return t("(" .. _G.luasnip.vars.username .. ")"), t("")
+  end,
+  date_signature = function()
+    return t("<" .. os.date("%Y-%m-%d") .. ">"), t("(" .. _G.luasnip.vars.username .. ")")
+  end,
+  date = function()
+    return t("<" .. os.date("%Y-%m-%d") .. ">"), t("")
+  end,
+  empty = function()
+    return t(""), t("")
+  end,
+}
+
+---@param alias string
+---@param opts table
+---@param mark_function function: This function should return two nodes
+---@return table: Returns the comment node
+local todo_snippet_nodes = function(alias, opts, mark_function)
+  local date_node, signature_node = mark_function()
+  -- format them into the actual snippet
+  local comment_node = fmta("<> <><>: <> <> <>", {
+    f(function()
+      return get_cstring(opts.ctype)[1] -- get <comment-string[1]>
+    end),
+    t(alias), -- [name-of-comment]
+    signature_node,
+    i(0), -- {comment-text}
+    date_node,
+    f(function()
+      return get_cstring(opts.ctype)[2] -- get <comment-string[2]>
+    end),
+  })
+  return comment_node
+end
+
+--- Generate a TODO comment snippet with an automatic description and docstring
+---@param context table merged with the generated context table `trig` must be specified
+---@param alias string of aliases for the todo comment (ex.: {FIX, ISSUE, FIXIT, BUG})
+---@param opts table merged with the snippet opts table
+---@param mark_function function: The function used to get the marks
+local todo_snippet = function(context, alias, opts, mark_function)
+  opts = opts or {}
+  context = context or {}
+  if not context.trig then
+    return error("context doesn't include a `trig` key which is mandatory", 2) -- all we need from the context is the trigger
+  end
+  opts.ctype = opts.ctype or 1 -- comment type can be passed in the `opts` table, but if it is not, we have to ensure, it is defined
+  local alias_string = alias -- `choice_node` documentation
+  context.name = context.name or (alias_string .. " comment") -- generate the `name` of the snippet if not defined
+  context.dscr = context.dscr or (alias_string .. " comment with a signature-mark") -- generate the `dscr` if not defined
+  context.docstring = context.docstring or (" {1:" .. alias_string .. "}: {3} <{2:mark}>{0} ") -- generate the `docstring` if not defined
+  local comment_node = todo_snippet_nodes(alias, opts, mark_function)
+  return s(context, comment_node, opts) -- the final todo-snippet constructed from our parameters
+end
+
+---@param context table: The luasnip context
+---@param opts table: The luasnip opts table, needs to have a ctype set
+---@param aliases string: All aliases for a name
+---@param marks table: Possible marks to account in snipped generation
+---@return table: All possible snippets build from the marks
+local process_marks = function(context, aliases, opts, marks)
+  local output = {}
+  for mark_name, mark_function in pairs(marks) do
+    local contex_trig_local = context.trig
+    context.trig = context.trig .. "-" .. mark_name
+    output[#output + 1] = todo_snippet(context, aliases, opts, mark_function)
+    context.trig = contex_trig_local
+  end
+  return output
+end
+
+local todo_snippet_specs = {
+  { { trig = "todo" }, { "TODO" }, { ctype = 1 } },
+  { { trig = "fix" }, { "FIXME", "ISSUE" }, { ctype = 1 } },
+  { { trig = "hack" }, { "HACK" }, { ctype = 1 } },
+  { { trig = "warn" }, { "WARNING" }, { ctype = 1 } },
+  { { trig = "perf" }, { "PERFORMANCE", "OPTIMIZE" }, { ctype = 1 } },
+  { { trig = "note" }, { "NOTE", "INFO" }, { ctype = 1 } },
+
+  -- NOTE: Block commented todo-comments
+  { { trig = "todob" }, { "TODO" }, { ctype = 2 } },
+  { { trig = "fixb" }, { "FIXME", "ISSUE" }, { ctype = 2 } },
+  { { trig = "hackb" }, { "HACK" }, { ctype = 2 } },
+  { { trig = "warnb" }, { "WARNING" }, { ctype = 2 } },
+  { { trig = "perfb" }, { "PERF", "PERFORMANCE", "OPTIM", "OPTIMIZE" }, { ctype = 2 } },
+  { { trig = "noteb" }, { "NOTE", "INFO" }, { ctype = 2 } },
+}
+
+local todo_comment_snippets = {}
+for _, v in ipairs(todo_snippet_specs) do
+  local snippets = process_marks(v[1], v[2][1], v[3], marks)
+  for _, value in pairs(snippets) do
+    table.insert(todo_comment_snippets, value)
+  end
+end
+
+ls.add_snippets("all", todo_comment_snippets, { type = "snippets", key = "todo_comments" })
+
+-- }}}
diff --git a/modules/home.legacy/conf/nvim/plgs/luasnip/lua/snippets/html/html.lua b/modules/home.legacy/conf/nvim/plgs/luasnip/lua/snippets/html/html.lua
new file mode 100644
index 00000000..17e1e7fb
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/luasnip/lua/snippets/html/html.lua
@@ -0,0 +1,108 @@
+local get_visual = function(args, parent)
+  if #parent.snippet.env.SELECT_RAW > 0 then
+    return sn(nil, i(1, parent.snippet.env.SELECT_RAW))
+  else
+    return sn(nil, i(1))
+  end
+end
+
+local line_begin = require("luasnip.extras.expand_conditions").line_begin
+
+return {
+  -- HEADER
+  s(
+    {
+      trig = "h([123456])",
+      regTrig = true,
+      wordTrig = false,
+      snippetType = "autosnippet",
+    },
+    fmt(
+      [[
+          <h{}>{}</h{}>
+        ]],
+      {
+        f(function(_, snip)
+          return snip.captures[1]
+        end),
+        d(1, get_visual),
+        f(function(_, snip)
+          return snip.captures[1]
+        end),
+      }
+    ),
+    { condition = line_begin }
+  ), -- PARAGRAPH
+  s(
+    { trig = "pp", snippetType = "autosnippet" },
+    fmt(
+      [[
+          <p>{}</p>
+        ]],
+      { d(1, get_visual) }
+    ),
+    { condition = line_begin }
+  ), -- UNORDERED LIST
+  s(
+    { trig = "itt", snippetType = "autosnippet" },
+    fmt(
+      [[
+          <ul>
+            <li>{}</li>{}
+          </ul>
+        ]],
+      { i(1), i(0) }
+    ),
+    { condition = line_begin }
+  ), -- LIST ITEM
+  s(
+    { trig = "ii", snippetType = "autosnippet" },
+    fmt(
+      [[
+            <li>{}</li>
+        ]],
+      { d(1, get_visual) }
+    ),
+    { condition = line_begin }
+  ),
+  -- DOCUMENT TEMPLATE
+  s(
+    { trig = "base" },
+    fmt(
+      [[
+        <!doctype HTML>
+        <html lang="en">
+        <head>
+          <meta charset="UTF-8">
+          <title>{}</title>
+        </head>
+        <body>
+          {}
+        </body>
+        </html>
+        ]],
+      { i(1, "FooBar"), i(0) }
+    ),
+    { condition = line_begin }
+  ), -- ANCHOR TAG
+  s(
+    {
+      trig = "([^%l])aa",
+      regTrig = true,
+      wordTrig = false,
+      snippetType = "autosnippet",
+    },
+    fmt(
+      [[
+          {}<a href="{}">{}</a>
+        ]],
+      {
+        f(function(_, snip)
+          return snip.captures[1]
+        end),
+        i(1),
+        d(2, get_visual),
+      }
+    )
+  ),
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/luasnip/lua/snippets/tex/delimiter.lua b/modules/home.legacy/conf/nvim/plgs/luasnip/lua/snippets/tex/delimiter.lua
new file mode 100644
index 00000000..22434aa3
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/luasnip/lua/snippets/tex/delimiter.lua
@@ -0,0 +1,34 @@
+local get_visual = function(args, parent)
+  if #parent.snippet.env.SELECT_RAW > 0 then
+    return sn(nil, i(1, parent.snippet.env.SELECT_RAW))
+  else
+    return sn(nil, i(1, ""))
+  end
+end
+
+local translation_table = { ["("] = ")", ["{"] = "}", ["["] = "]" }
+
+-- Return snippet tables
+return {
+  -- LEFT/RIGHT ALL BRACES
+  s(
+    {
+      trig = "([^%a])l([%(%[%{])",
+      regTrig = true,
+      wordTrig = false,
+      snippetType = "autosnippet",
+    },
+    fmta("<>\\left<><>\\right<>", {
+      f(function(_, snip)
+        return snip.captures[1]
+      end),
+      f(function(_, snip)
+        return snip.captures[2]
+      end),
+      d(1, get_visual),
+      f(function(_, snip)
+        return translation_table[snip.captures[2]]
+      end),
+    })
+  ),
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/luasnip/lua/snippets/tex/greek.lua b/modules/home.legacy/conf/nvim/plgs/luasnip/lua/snippets/tex/greek.lua
new file mode 100644
index 00000000..ebf4f9d7
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/luasnip/lua/snippets/tex/greek.lua
@@ -0,0 +1,37 @@
+-- Return snippet tables
+return {
+  s({ trig = ";a", snippetType = "autosnippet" }, { t("\\alpha") }),
+  s({ trig = ";b", snippetType = "autosnippet" }, { t("\\beta") }),
+  s({ trig = ";g", snippetType = "autosnippet" }, { t("\\gamma") }),
+  s({ trig = ";G", snippetType = "autosnippet" }, { t("\\Gamma") }),
+  s({ trig = ";d", snippetType = "autosnippet" }, { t("\\delta") }),
+  s({ trig = ";D", snippetType = "autosnippet" }, { t("\\Delta") }),
+  s({ trig = ";e", snippetType = "autosnippet" }, { t("\\epsilon") }),
+  s({ trig = ";ve", snippetType = "autosnippet" }, { t("\\varepsilon") }),
+  s({ trig = ";z", snippetType = "autosnippet" }, { t("\\zeta") }),
+  s({ trig = ";h", snippetType = "autosnippet" }, { t("\\eta") }),
+  s({ trig = ";o", snippetType = "autosnippet" }, { t("\\theta") }),
+  s({ trig = ";vo", snippetType = "autosnippet" }, { t("\\vartheta") }),
+  s({ trig = ";O", snippetType = "autosnippet" }, { t("\\Theta") }),
+  s({ trig = ";k", snippetType = "autosnippet" }, { t("\\kappa") }),
+  s({ trig = ";l", snippetType = "autosnippet" }, { t("\\lambda") }),
+  s({ trig = ";L", snippetType = "autosnippet" }, { t("\\Lambda") }),
+  s({ trig = ";m", snippetType = "autosnippet" }, { t("\\mu") }),
+  s({ trig = ";n", snippetType = "autosnippet" }, { t("\\nu") }),
+  s({ trig = ";x", snippetType = "autosnippet" }, { t("\\xi") }),
+  s({ trig = ";X", snippetType = "autosnippet" }, { t("\\Xi") }),
+  s({ trig = ";i", snippetType = "autosnippet" }, { t("\\pi") }),
+  s({ trig = ";I", snippetType = "autosnippet" }, { t("\\Pi") }),
+  s({ trig = ";r", snippetType = "autosnippet" }, { t("\\rho") }),
+  s({ trig = ";s", snippetType = "autosnippet" }, { t("\\sigma") }),
+  s({ trig = ";S", snippetType = "autosnippet" }, { t("\\Sigma") }),
+  s({ trig = ";t", snippetType = "autosnippet" }, { t("\\tau") }),
+  s({ trig = ";f", snippetType = "autosnippet" }, { t("\\phi") }),
+  s({ trig = ";vf", snippetType = "autosnippet" }, { t("\\varphi") }),
+  s({ trig = ";F", snippetType = "autosnippet" }, { t("\\Phi") }),
+  s({ trig = ";c", snippetType = "autosnippet" }, { t("\\chi") }),
+  s({ trig = ";p", snippetType = "autosnippet" }, { t("\\psi") }),
+  s({ trig = ";P", snippetType = "autosnippet" }, { t("\\Psi") }),
+  s({ trig = ";w", snippetType = "autosnippet" }, { t("\\omega") }),
+  s({ trig = ";W", snippetType = "autosnippet" }, { t("\\Omega") }),
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/neorg/default.nix b/modules/home.legacy/conf/nvim/plgs/neorg/default.nix
new file mode 100644
index 00000000..7d61ce09
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/neorg/default.nix
@@ -0,0 +1,57 @@
+{pkgsStable, ...}: {
+  programs.nixvim.plugins.neorg = {
+    package = pkgsStable.vimPlugins.neorg;
+    enable = true;
+    lazyLoading = true;
+
+    modules = {
+      "core.defaults" = {
+        __empty = null;
+      };
+      "core.esupports.metagen".config = {
+        type = "auto";
+      };
+      "core.journal".config = {
+        workspace = "journal";
+      };
+      "core.keybinds".config = {
+        hook = {
+          __raw = ''
+            function(keybinds)
+                -- remap the looking glas to the same key, femaco is also mapped to.
+                keybinds.remap_event("norg", "n", "<space>cc", "core.looking-glass.magnify-code-block")
+
+                keybinds.remap_event("norg", "n", "<C-s>", "core.integrations.telescope.find_linkable")
+                keybinds.remap_event("norg", "i", "<C-i>", "core.integrations.telescope.insert_link")
+            end,
+          '';
+        };
+      };
+      "core.completion".config = {
+        engine = "nvim-cmp";
+      };
+      "core.concealer".config = {
+        __empty = null;
+      };
+      "core.dirman".config = {
+        workspaces = {
+          general = "~/repos/notes/general";
+          journal = "~/repos/notes/journal";
+          projects = "~/repos/notes/projects";
+        };
+      };
+      "core.export".config = {
+        __empty = null;
+      };
+      "core.integrations.telescope".config = {
+        __empty = null;
+      };
+
+      # TODO: Add this when the nvim version in nixpkgs is >= 0.10 <2023-08-29>
+      #
+      # "core.ui.calendar".config = {
+      #   __empty = null;
+      # };
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/nvim-cmp/default.nix b/modules/home.legacy/conf/nvim/plgs/nvim-cmp/default.nix
new file mode 100644
index 00000000..ed0e57c3
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/nvim-cmp/default.nix
@@ -0,0 +1,54 @@
+{config, ...}: {
+  programs.nixvim.plugins.cmp = let
+    neorg_source =
+      if config.programs.nixvim.plugins.neorg.modules."core.completion".config.engine == "nvim-cmp"
+      then [{name = "neorg";}]
+      else [];
+  in {
+    /*
+    TODO: integrate this:
+    ```lua
+      enabled = {
+      function()
+          -- disable completion in comments
+          local context = require 'cmp.config.context'
+          -- keep command mode completion enabled when cursor is in a comment
+          -- te
+          if vim.api.nvim_get_mode().mode == 'c' then
+              return true
+          else
+              return not context.in_treesitter_capture("comment")
+                  and not context.in_syntax_group("Comment")
+          end
+      end
+      },
+    ```
+    */
+    enable = true;
+    autoEnableSources = true;
+    settings = {
+      mapping = {
+        # TODO: add support for desc and which key here
+        "<C-d>" = "cmp.mapping.scroll_docs(-4)"; # desc = "Scroll up by four lines"
+        "<C-f>" = "cmp.mapping.scroll_docs(4)"; # desc = "Scroll down by four lines"
+        "HH" = "cmp.mapping.complete()"; # desc = "Confirm snipped"
+      };
+
+      snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end";
+
+      sources =
+        [
+          {name = "nvim_lsp";}
+          {name = "luasnip";}
+          {name = "path";}
+          {name = "git";} # TODO: I might want to add config to allow all issues/prs <2023-10-16>
+          # {name = "convertionalcommits";} # TODO: Useless without commitlint [https://commitlint.js.org/] <2023-10-16>
+          # {name = "rg";} # TODO: This might really RIP-grep my system <2023-10-16>
+          # {name = "buffer";}
+          # {name = "digraphs";}
+          {name = "calc";}
+        ]
+        ++ neorg_source;
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/nvim-lint/default.nix b/modules/home.legacy/conf/nvim/plgs/nvim-lint/default.nix
new file mode 100644
index 00000000..f5cb9acf
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/nvim-lint/default.nix
@@ -0,0 +1,15 @@
+{
+  pkgs,
+  lib,
+  ...
+}: {
+  programs.nixvim = {
+    # TODO: package nvim-lint though a module
+    extraConfigLuaPost = ''
+      ${lib.strings.fileContents ./lua/nvim-lint.lua}
+    '';
+    extraPlugins = [
+      pkgs.vimPlugins.nvim-lint
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/nvim-lint/lua/nvim-lint.lua b/modules/home.legacy/conf/nvim/plgs/nvim-lint/lua/nvim-lint.lua
new file mode 100644
index 00000000..4ed49f7b
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/nvim-lint/lua/nvim-lint.lua
@@ -0,0 +1,20 @@
+require("lint").linters_by_ft = {
+  -- text
+  markdown = {},
+  -- tex = {'chktex'}, -- maybe add some text linters ?
+
+  -- shell (already covered by the bash language sever)
+  --  sh = { "shellcheck"; };
+  --  bash = { "shellcheck"; };
+  --  zsh = { "shellcheck"; };
+  --  dash = { "shellcheck"; };
+
+  yaml = { "yamllint" },
+  nix = { "nix", "statix" },
+}
+
+vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost" }, {
+  callback = function()
+    require("lint").try_lint()
+  end,
+})
diff --git a/modules/home.legacy/conf/nvim/plgs/raw_plugins/default.nix b/modules/home.legacy/conf/nvim/plgs/raw_plugins/default.nix
new file mode 100644
index 00000000..941cb7cb
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/raw_plugins/default.nix
@@ -0,0 +1,11 @@
+{...}: {
+  programs.nixvim = {
+    # Not all plugins have own modules
+    # You can add missing plugins here
+    # `pkgs.vimExtraPlugins` is added by the overlay you added at the beginning
+    # For a list of available plugins, look here:
+    # https://github.com/jooooscha/nixpkgs-vim-extra-plugins/blob/main/plugins.md
+    extraPlugins = [
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/telescope/default.nix b/modules/home.legacy/conf/nvim/plgs/telescope/default.nix
new file mode 100644
index 00000000..c32e139c
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/telescope/default.nix
@@ -0,0 +1,17 @@
+{...}: {
+  imports = [
+    ./defaults
+    ./keymaps
+    ./extensions
+  ];
+  programs.nixvim.plugins = {
+    telescope = {
+      enable = true;
+    };
+
+    # This is a dependency of telescope
+    web-devicons = {
+      enable = true;
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/telescope/defaults/default.nix b/modules/home.legacy/conf/nvim/plgs/telescope/defaults/default.nix
new file mode 100644
index 00000000..933089ef
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/telescope/defaults/default.nix
@@ -0,0 +1,30 @@
+{...}: {
+  programs.nixvim.plugins.telescope.settings.defaults = {
+    mappings = let
+      insert_and_normal_mappings = {
+        # map actions.which_key to <c-h> (default: <c-/>)
+        # actions.which_key shows the mappings for your picker,
+        # e.g. git_{create, delete, ...}_branch for the git_branches picker
+        "<C-h>" = "which_key";
+      };
+    in {
+      i =
+        insert_and_normal_mappings;
+      n =
+        {
+          "t" = "move_selection_next";
+          "n" = "move_selection_previous";
+          "<Space>" = "toggle_all";
+
+          "<C-d>" = "preview_scrolling_up";
+          "<C-u>" = "preview_scrolling_down";
+          "<Left>" = "preview_scrolling_left";
+          "<Right>" = "preview_scrolling_right";
+
+          "<Esc>" = "close";
+          "q" = "close";
+        }
+        // insert_and_normal_mappings;
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/telescope/extensions/bibtex/default.nix b/modules/home.legacy/conf/nvim/plgs/telescope/extensions/bibtex/default.nix
new file mode 100644
index 00000000..6f3cc2ea
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/telescope/extensions/bibtex/default.nix
@@ -0,0 +1,17 @@
+{pkgs, ...}: {
+  # WARNING: This is only activated in tex files via the ftplugin.
+  programs.nixvim = {
+    extraPlugins = [
+      pkgs.vimExtraPlugins.telescope-bibtex-nvim
+    ];
+    keymaps = [
+      {
+        key = "<space>ib";
+        # This is registered in the ftplugin file, so we set this to null here
+        action = "<Nop>";
+        mode = "n";
+        options.desc = "[i]nsert a [b]atex citation";
+      }
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/telescope/extensions/default.nix b/modules/home.legacy/conf/nvim/plgs/telescope/extensions/default.nix
new file mode 100644
index 00000000..0b1e033a
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/telescope/extensions/default.nix
@@ -0,0 +1,9 @@
+{...}: {
+  imports = [
+    ./bibtex
+    ./frecency
+    ./fzy-native
+    ./rooter
+    ./symbols
+  ];
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/telescope/extensions/frecency/default.nix b/modules/home.legacy/conf/nvim/plgs/telescope/extensions/frecency/default.nix
new file mode 100644
index 00000000..0e007b80
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/telescope/extensions/frecency/default.nix
@@ -0,0 +1,22 @@
+{...}: {
+  programs.nixvim = {
+    keymaps = [
+      {
+        key = "gff";
+        mode = "n";
+        action.__raw = "function() require('telescope').extensions.frecency.frecency() end";
+        options.desc = "activate the frecency file selection";
+      }
+    ];
+    plugins.telescope = {
+      extensions.frecency = {
+        enable = true;
+        settings = {
+          show_scores = true;
+          db_safe_mode = false;
+          default_workspace = "CWD"; # or 'LSP'
+        };
+      };
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/telescope/extensions/fzy-native/default.nix b/modules/home.legacy/conf/nvim/plgs/telescope/extensions/fzy-native/default.nix
new file mode 100644
index 00000000..ce0bdccc
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/telescope/extensions/fzy-native/default.nix
@@ -0,0 +1,5 @@
+{...}: {
+  programs.nixvim.plugins.telescope.extensions.fzy-native = {
+    enable = true;
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/telescope/extensions/rooter/default.nix b/modules/home.legacy/conf/nvim/plgs/telescope/extensions/rooter/default.nix
new file mode 100644
index 00000000..779448cc
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/telescope/extensions/rooter/default.nix
@@ -0,0 +1,7 @@
+{lib, ...}: {
+  programs.nixvim = {
+    extraConfigLuaPost = ''
+      ${lib.strings.fileContents ./lua/rooter.lua}
+    '';
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/telescope/extensions/rooter/lua/rooter.lua b/modules/home.legacy/conf/nvim/plgs/telescope/extensions/rooter/lua/rooter.lua
new file mode 100644
index 00000000..7235c5a3
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/telescope/extensions/rooter/lua/rooter.lua
@@ -0,0 +1,84 @@
+-- Taken from: https://github.com/desdic/telescope-rooter.nvim/blob/69423216c75a5f1f1477bbf8faf6b0dc8af04099/lua/telescope/_extensions/rooter.lua
+local has_telescope, telescope = pcall(require, "telescope")
+if not has_telescope then
+  error("This extension requires telescope.nvim")
+  return
+end
+
+local has_plenary, plenary = pcall(require, "plenary")
+if not has_plenary then
+  error("This extension requires plenary")
+  return
+end
+
+local log = plenary.log.new({ plugin = "telescope_rooter", level = "info" })
+
+-- TODO: expose this function
+local toggle = function(_)
+  vim.g["Telescope#rooter#enabled"] = not vim.g["Telescope#rooter#enabled"]
+  print("Telescope#rooter#enabled=" .. vim.inspect(vim.g["Telescope#rooter#enabled"]))
+end
+
+local config = { patterns = { ".git" }, enable = true, debug = false }
+
+-- default enabled
+vim.g["Telescope#rooter#enabled"] = vim.F.if_nil(config.enable, true)
+
+-- redefine log if debug enabled
+if vim.F.if_nil(config.debug, false) then
+  log = plenary.log.new({ plugin = "telescope_rooter", level = "debug" })
+end
+
+local group = vim.api.nvim_create_augroup("TelescopeRooter", { clear = true })
+
+vim.api.nvim_create_autocmd({ "DirChangedPre" }, {
+  callback = function()
+    if vim.g["Telescope#rooter#enabled"] ~= true then
+      return
+    end
+
+    if vim.g["Telescope#rooter#oldpwd"] == nil then
+      vim.g["Telescope#rooter#oldpwd"] = vim.loop.cwd()
+      log.debug("before " .. vim.inspect(vim.loop.cwd()))
+    end
+  end,
+  group = group,
+})
+
+vim.api.nvim_create_autocmd({ "BufEnter", "BufWinEnter" }, {
+  callback = function()
+    if vim.g["Telescope#rooter#enabled"] ~= true then
+      return
+    end
+
+    vim.schedule(function()
+      if vim.bo.filetype == "TelescopePrompt" then
+        local rootdir = vim.fs.dirname(vim.fs.find(config.patterns, { upward = true })[1])
+        if rootdir ~= nil then
+          vim.api.nvim_set_current_dir(rootdir)
+          log.debug("changing dir to " .. rootdir)
+        end
+      end
+    end)
+  end,
+  group = group,
+})
+
+vim.api.nvim_create_autocmd({ "BufWinLeave" }, {
+  callback = function()
+    if vim.g["Telescope#rooter#enabled"] ~= true then
+      return
+    end
+
+    vim.schedule(function()
+      if vim.bo.filetype ~= "TelescopePrompt" then
+        if vim.g["Telescope#rooter#oldpwd"] ~= nil then
+          log.debug("restoring " .. vim.g["Telescope#rooter#oldpwd"])
+          vim.api.nvim_set_current_dir(vim.g["Telescope#rooter#oldpwd"])
+          vim.g["Telescope#rooter#oldpwd"] = nil
+        end
+      end
+    end)
+  end,
+  group = group,
+})
diff --git a/modules/home.legacy/conf/nvim/plgs/telescope/extensions/symbols/default.nix b/modules/home.legacy/conf/nvim/plgs/telescope/extensions/symbols/default.nix
new file mode 100644
index 00000000..05b4a4f2
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/telescope/extensions/symbols/default.nix
@@ -0,0 +1,52 @@
+{pkgs, ...}: {
+  programs.nixvim = {
+    extraPlugins = [
+      # Source of symbols for telescope symbols
+      pkgs.vimPlugins.telescope-symbols-nvim
+    ];
+    keymaps = [
+      {
+        key = "<space>il";
+        mode = "n";
+        action.__raw = ''
+          function()
+            require('telescope.builtin').symbols{ sources = {
+              'latex'
+            }}
+          end
+        '';
+        options.desc = "[i]nsert a [l]atex symbol";
+      }
+      {
+        key = "<space>ie";
+        mode = "n";
+        action.__raw = ''
+          function()
+            require('telescope.builtin').symbols{ sources = {
+                'emoji',
+            }}
+          end
+        '';
+        options.desc = "[i]nsert a [e]moji";
+      }
+      {
+        key = "<space>is";
+        mode = "n";
+        action.__raw = ''
+          function()
+            require('telescope.builtin').symbols{ sources = {
+                'emoji',
+                'gitmoji',
+                'julia',
+                'kaomoji',
+                'latex',
+                'math',
+                'nerd',
+            }}
+          end
+        '';
+        options.desc = "[i]nsert a [s]ymbol (like emojis)";
+      }
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/telescope/keymaps/default.nix b/modules/home.legacy/conf/nvim/plgs/telescope/keymaps/default.nix
new file mode 100644
index 00000000..e551cc5a
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/telescope/keymaps/default.nix
@@ -0,0 +1,10 @@
+{...}: {
+  programs.nixvim.plugins.telescope.keymaps = {
+    "<space>rg" = {
+      action = "live_grep";
+      options = {
+        desc = "[rg] in a live session";
+      };
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/todo-comments/default.nix b/modules/home.legacy/conf/nvim/plgs/todo-comments/default.nix
new file mode 100644
index 00000000..e33f961b
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/todo-comments/default.nix
@@ -0,0 +1,51 @@
+{...}: {
+  programs.nixvim.plugins.todo-comments = {
+    enable = true;
+    settings = {
+      guiStyle = {
+        fg = "BOLD";
+        bg = "NONE";
+      };
+      highlight = {
+        keyword = "wide_fg";
+      };
+      keywords = {
+        /*
+        # Defaults:
+        FIX = {
+          icon = " "; # Icon used for the sign, and in search results.
+          color = "error"; # Can be a hex color, or a named color.
+          alt = ["FIXME" "BUG" "FIXIT" "ISSUE"]; # A set of other keywords that all map to this FIX keywords.
+        };
+        TODO = {
+          icon = " ";
+          color = "info";
+        };
+        HACK = {
+          icon = " ";
+          color = "warning";
+        };
+        WARN = {
+          icon = " ";
+          color = "warning";
+          alt = ["WARNING" "XXX"];
+        };
+        PERF = {
+          icon = "󰅒 ";
+          alt = ["OPTIM" "PERFORMANCE" "OPTIMIZE"];
+        };
+        NOTE = {
+          icon = "󰍨 ";
+          color = "hint";
+          alt = ["INFO"];
+        };
+        TEST = {
+          icon = "⏲ ";
+          color = "test";
+          alt = ["TESTING" "PASSED" "FAILED"];
+        };
+        */
+      };
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/treesitter/default.nix b/modules/home.legacy/conf/nvim/plgs/treesitter/default.nix
new file mode 100644
index 00000000..b4b20388
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/treesitter/default.nix
@@ -0,0 +1,59 @@
+{
+  config,
+  pkgs,
+  lib,
+  ...
+}: {
+  programs.nixvim = {
+    plugins.treesitter = {
+      enable = true;
+
+      # NOTE: These are required to build grammars, but I already use the nix grammars <2024-07-13>
+      gccPackage = null;
+      nodejsPackage = null;
+      treesitterPackage = null;
+
+      # inject nixvim specific highlighting (eg in extraConfigLua).
+      nixvimInjections = true;
+
+      nixGrammars = true;
+      grammarPackages =
+        config.programs.nixvim.plugins.treesitter.package.passthru.allGrammars
+        ++ [pkgs.tree-sitter-yts];
+
+      settings = {
+        auto_install = false;
+        ensureInstalled = "all";
+        indent.enable = true;
+        disabledLanguages = [];
+
+        highlight = {
+          enable = true;
+          disable = [];
+
+          #  Setting this to true will run `:h syntax` and tree-sitter at the same time.
+          #  Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
+          #  Using this option may slow down your editor; and you may see some duplicate highlights.
+          #  Instead of true it can also be a list of languages
+          additionalVimRegexHighlighting = ["latex"];
+        };
+
+        incrementalSelection = {
+          enable = true;
+          keymaps = {
+            # TODO: include these in the which-key description
+            initSelection = "gnn"; #  set to `false` to disable one of the mappings
+            nodeIncremental = "grn";
+            scopeIncremental = "grc";
+            nodeDecremental = "grm";
+          };
+        };
+      };
+    };
+    extraFiles = {
+      "queries/yts/highlights.scm".text = ''
+        ${lib.strings.fileContents "${pkgs.tree-sitter-yts}/queries/highlights.scm"}
+      '';
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/vim-tex/default.nix b/modules/home.legacy/conf/nvim/plgs/vim-tex/default.nix
new file mode 100644
index 00000000..0b92c429
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/vim-tex/default.nix
@@ -0,0 +1,69 @@
+{...}: {
+  programs.nixvim = {
+    opts.conceallevel = 0;
+
+    plugins.vimtex = {
+      enable = true;
+      settings = {
+        view_method = "zathura";
+        quickfix_mode = -1;
+        view_enabled = -1;
+        tex_conceal = "abdmg";
+        tex_flavor = "latex";
+
+        # Useful if treesitter is the highlighter
+        syntax_enabled = 0;
+        syntax_conceal_disable = 1;
+
+        mappings_disable = {
+          n = [
+            "ts$"
+            "tsD"
+            "tsb"
+            "tsc"
+            "tsd"
+            "tse"
+            "tsf"
+          ];
+          x = [
+            "tsD"
+            "tsd"
+            "tsf"
+          ];
+        };
+
+        toc_config = {
+          name = "TOC";
+          layers = ["content" "todo" "include"];
+          resize = false;
+          split_width = 49;
+          todo_sorted = -1;
+          show_help = false;
+          show_numbers = false;
+          mode = true;
+          layer_keys = {
+            content = "C";
+            label = "L";
+            todo = "j";
+            include = "I";
+          };
+        };
+
+        compiler_latexmk = {
+          build_dir = "build";
+          callback = false;
+          continuous = true;
+          executable = "latexmk";
+          hooks = [];
+          options = [
+            "-verbose"
+            "-file-line-error"
+            "-synctex=0"
+            "-interaction=nonstopmode"
+            "-outdir=build"
+          ];
+        };
+      };
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/nvim/plgs/which-key/default.nix b/modules/home.legacy/conf/nvim/plgs/which-key/default.nix
new file mode 100644
index 00000000..be63f7ac
--- /dev/null
+++ b/modules/home.legacy/conf/nvim/plgs/which-key/default.nix
@@ -0,0 +1,5 @@
+{...}: {
+  programs.nixvim.plugins.which-key = {
+    enable = true;
+  };
+}
diff --git a/modules/home.legacy/conf/prusa_slicer/default.nix b/modules/home.legacy/conf/prusa_slicer/default.nix
new file mode 100644
index 00000000..9529e13d
--- /dev/null
+++ b/modules/home.legacy/conf/prusa_slicer/default.nix
@@ -0,0 +1,3 @@
+{...}: {
+  xdg.configFile."PrusaSlicer/PrusaSlicer.ini".source = ./prusa_slicer.ini;
+}
diff --git a/modules/home.legacy/conf/prusa_slicer/prusa_slicer.ini b/modules/home.legacy/conf/prusa_slicer/prusa_slicer.ini
new file mode 100644
index 00000000..0416a398
--- /dev/null
+++ b/modules/home.legacy/conf/prusa_slicer/prusa_slicer.ini
@@ -0,0 +1,65 @@
+alert_when_supports_needed = 1
+allow_auto_color_change = 1
+allow_ip_resolve = 1
+auto_toolbar_size = 100
+autocenter = 0
+background_processing = 0
+clear_undo_redo_stack_on_new_project = 1
+collapsed_sidebar = 0
+color_mapinulation_panel = 0
+custom_toolbar_size = 100
+default_action_on_close_application = none
+default_action_on_new_project = none
+default_action_on_select_preset = none
+downloader_url_registered = 1
+drop_project_action = 1
+export_sources_full_pathnames = 0
+no_controller = 1
+no_defaults = 1
+no_templates = 0
+non_manifold_edges = 1
+notify_release = all
+order_volumes = 1
+preset_update = 1
+remember_output_path = 1
+remember_output_path_removable = 1
+restore_win_position = 1
+reverse_mouse_wheel_zoom = 0
+seq_top_layer_only = 1
+show_drop_project_dialog = 1
+show_hints = 1
+show_incompatible_presets = 0
+show_splash_screen = 1
+single_instance = 0
+use_binary_gcode_when_supported = 0
+use_custom_toolbar_size = 0
+use_free_camera = 0
+use_inches = 0
+use_perspective_camera = 1
+view_mode = advanced
+wifi_config_dialog_declined = 0
+window_mainframe = 3; 33; 1914; 1044; 1
+
+[filaments]
+Generic PETG @PGIS = 1
+Generic PLA @PGIS = 1
+Generic PLA Silk @PGIS = 1
+Prusa PETG @PGIS = 1
+Prusa PLA @PGIS = 1
+Prusament PETG @PGIS = 1
+Prusament PLA = 1
+Prusament PLA @PGIS = 1
+Prusament PLA @Template = 1
+Prusament PLA Blend @PGIS = 1
+Prusament rPLA @PG = 1
+
+[presets]
+filament = Prusament PLA
+physical_printer =
+print = 0.25mm DRAFT @MINI
+printer = Original Prusa MINI & MINI+
+sla_material =
+sla_print =
+
+[vendor:PrusaResearch]
+model:MINI = 0.4
diff --git a/modules/home.legacy/conf/python/default.nix b/modules/home.legacy/conf/python/default.nix
new file mode 100644
index 00000000..826d466d
--- /dev/null
+++ b/modules/home.legacy/conf/python/default.nix
@@ -0,0 +1,6 @@
+{config, ...}: {
+  xdg.configFile."python/pythonrc".source = ./pythonrc.py;
+  programs.zsh.sessionVariables = {
+    "PYTHONSTARTUP" = "${config.xdg.configHome}/python/pythonrc";
+  };
+}
diff --git a/modules/home.legacy/conf/python/pythonrc.py b/modules/home.legacy/conf/python/pythonrc.py
new file mode 100644
index 00000000..466d9788
--- /dev/null
+++ b/modules/home.legacy/conf/python/pythonrc.py
@@ -0,0 +1,33 @@
+#!/usr/bin/env python3
+
+
+def is_vanilla() -> bool:
+    import sys
+
+    return not hasattr(__builtins__, "__IPYTHON__") and "bpython" not in sys.argv[0]
+
+
+def setup_history():
+    import os
+    import atexit
+    import readline
+    from pathlib import Path
+
+    if state_home := os.environ.get("XDG_DATA_HOME"):
+        state_home = Path(state_home)
+    else:
+        state_home = Path.home() / ".local" / "state"
+
+    history: Path = state_home / "python" / "history"
+
+    if not os.path.exists(history):
+        open(history, "w")
+
+    readline.read_history_file(str(history))
+    atexit.register(readline.write_history_file, str(history))
+
+
+if is_vanilla():
+    setup_history()
+
+# vim: ft=python
diff --git a/modules/home.legacy/conf/rclone/default.nix b/modules/home.legacy/conf/rclone/default.nix
new file mode 100644
index 00000000..bd0c1ac2
--- /dev/null
+++ b/modules/home.legacy/conf/rclone/default.nix
@@ -0,0 +1,7 @@
+{
+  config,
+  pkgs,
+  ...
+}: {
+  xdg.configFile."rclone/rclone.conf".source = ./rclone.conf;
+}
diff --git a/modules/home.legacy/conf/rclone/rclone.conf b/modules/home.legacy/conf/rclone/rclone.conf
new file mode 100644
index 00000000..9e1c4f08
--- /dev/null
+++ b/modules/home.legacy/conf/rclone/rclone.conf
@@ -0,0 +1,10 @@
+[vhack1]
+type = sftp
+host = server1.vhack.eu
+user = soispha
+key_use_agent = true
+known_hosts_file = ~/.local/share/ssh/known_hosts
+shell_type = unix
+md5sum_command = md5sum
+sha1sum_command = sha1sum
+
diff --git a/modules/home.legacy/conf/rofi/default.nix b/modules/home.legacy/conf/rofi/default.nix
new file mode 100644
index 00000000..10363ab5
--- /dev/null
+++ b/modules/home.legacy/conf/rofi/default.nix
@@ -0,0 +1,10 @@
+{pkgs, ...}: {
+  programs.rofi = {
+    enable = true;
+    package = pkgs.rofi-wayland;
+    terminal = "${pkgs.alacritty}/bin/alacritty";
+    # show-icons = true;
+    # location = "center";
+    theme = ./nord-twoLines.rasi;
+  };
+}
diff --git a/modules/home.legacy/conf/rofi/nord-twoLines.rasi b/modules/home.legacy/conf/rofi/nord-twoLines.rasi
new file mode 100644
index 00000000..612b907f
--- /dev/null
+++ b/modules/home.legacy/conf/rofi/nord-twoLines.rasi
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * ROFI TWO LINES THEME USING THE NORD COLOR PALETTE
+ * User                 : LR-Tech
+ * Theme Repo           : https://github.com/lr-tech/rofi-themes-collection
+ * Nord Project Repo    : https://github.com/arcticicestudio/nord
+ *******************************************************************************/
+
+* {
+    font:   "Fira Code 10";
+
+    nord0:     #2e3440;
+    nord1:     #3b4252;
+    nord2:     #434c5e;
+    nord3:     #4c566a;
+
+    nord4:     #d8dee9;
+    nord5:     #e5e9f0;
+    nord6:     #eceff4;
+
+    nord7:     #8fbcbb;
+    nord8:     #88c0d0;
+    nord9:     #81a1c1;
+    nord10:    #5e81ac;
+    nord11:    #bf616a;
+
+    nord12:    #d08770;
+    nord13:    #ebcb8b;
+    nord14:    #a3be8c;
+    nord15:    #b48ead;
+
+    background-color:   transparent;
+    text-color:         @nord4;
+    accent-color:       @nord8;
+
+    margin:     0px;
+    padding:    0px;
+    spacing:    0px;
+}
+
+window {
+    background-color:   @nord0;
+
+    location:   north;
+    width:      100%;
+}
+
+inputbar {
+    padding:    2px 8px;
+    spacing:    8px;
+    children:   [ prompt, entry ];
+}
+
+prompt, entry, element-text, element-icon {
+    vertical-align: 0.5;
+}
+
+prompt {
+    text-color: @accent-color;
+}
+
+listview {
+    lines:      1;
+    columns:    4;
+}
+
+element {
+    padding:    1px 8px;
+    spacing:    4px;
+}
+
+element normal urgent {
+    text-color: @nord13;
+}
+
+element normal active {
+    text-color: @accent-color;
+}
+
+element selected {
+    text-color: @nord0;
+}
+
+element selected normal {
+    background-color:   @accent-color;
+}
+
+element selected urgent {
+    background-color:   @nord13;
+}
+
+element selected active {
+    background-color:   @nord8;
+}
+
+element-icon {
+    size:   0.75em;
+}
+
+element-text {
+    text-color: inherit;
+}
diff --git a/modules/home.legacy/conf/ssh/default.nix b/modules/home.legacy/conf/ssh/default.nix
new file mode 100644
index 00000000..de9b0d90
--- /dev/null
+++ b/modules/home.legacy/conf/ssh/default.nix
@@ -0,0 +1,16 @@
+{config, ...}: {
+  programs.ssh = {
+    enable = true;
+    compression = true;
+    hashKnownHosts = false;
+    serverAliveInterval = 240;
+    userKnownHostsFile = "${config.xdg.dataHome}/ssh/known_hosts";
+
+    matchBlocks = {
+      "codeberg.org" = {
+        # TODO: Remove this once they fix their ipv6 config
+        addressFamily = "inet";
+      };
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/starship/default.nix b/modules/home.legacy/conf/starship/default.nix
new file mode 100644
index 00000000..5db6eb8b
--- /dev/null
+++ b/modules/home.legacy/conf/starship/default.nix
@@ -0,0 +1,119 @@
+{
+  lib,
+  nixosConfig,
+  pkgs,
+  ...
+}: {
+  programs.starship = {
+    enable = true;
+    enableZshIntegration = true;
+    settings = {
+      add_newline = false;
+      format = lib.concatStrings [
+        "$directory"
+        "$username"
+        "$cmd_duration"
+        "$status"
+        "$character"
+      ];
+      right_format = lib.concatStrings (
+        [
+          "$git_metrics"
+          "$git_branch"
+          "$git_status"
+          "$git_commit"
+          "$git_state"
+          "$time"
+        ]
+        ++ lib.optional
+        nixosConfig.soispha.laptop.enable
+        "$battery"
+      );
+      scan_timeout = 20;
+      character = {
+        # success_symbol = "[❯](bold blue)";
+        # a = "⬢";
+        success_symbol = "[](bold blue)";
+        error_symbol = "[](bold red)";
+      };
+      status = {
+        disabled = false;
+        format = "([($common_meaning )($status)( $signal_name)]($style) )";
+      };
+      time = {
+        disabled = false;
+        format = "[\\[$time\\]]($style)";
+      };
+      username = {
+        format = "as [$user]($style) ";
+      };
+      git_branch = {
+        format = "[($symbol$branch(:$remote_branch) )]($style)";
+      };
+      git_status = {
+        disabled = true;
+        format = "([\\[$ahead_behind\\]]($style) )";
+        ahead = "⇡$count";
+        diverged = "⇕⇡$ahead_count⇣$behind_count";
+        behind = "⇣$count";
+      };
+      git_metrics = {
+        disabled = true;
+        ignore_submodules = true;
+      };
+      git_state = {
+        format = "[\($state( $progress_current of $progress_total)\)]($style) ";
+        rebase = "[rebasing](bold magenta)";
+        merge = "[merging](bold yellow)";
+        revert = "[reverting](bold blue)";
+        cherry_pick = "[picking](bold red)";
+        bisect = "[bisecting](bold red)";
+        am = "[applying](bold green)";
+        am_or_rebase = "[applying/rebasing](bold yellow)";
+      };
+      git_commit = {
+        disabled = true;
+        tag_disabled = false;
+        tag_symbol = "v";
+        format = "[(\\[$tag\\] )]($style)";
+      };
+      directory = {
+        truncate_to_repo = true;
+        read_only = " 󰌾";
+        before_repo_root_style = "black bold dimmed";
+      };
+      cmd_duration = {
+        min_time = 2000; # Milliseconds
+        style = "bold white";
+      };
+      custom = {
+        # status_output = {
+        #   format = "$output";
+        #   command = "if test $STARSHIP_CMD_STATUS -ne 0; then echo \"bold red\"; else echo \"bold cyan\"; fi";
+        #   shell = [ "${pkgs.dash}" ];
+        # };
+      };
+      battery = {
+        # '󰁹 '
+        #   '󰂄 '
+        #   '󰂃 '
+        #   '󰁽 '
+        #   '󰂎 '
+        display = [
+          {
+            threshold = 10;
+            style = "bold red";
+          }
+          {
+            threshold = 30;
+            style = "bold blue";
+          }
+          {
+            threshold = 50;
+            style = "bold green";
+          }
+        ];
+      };
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/swayidle/config b/modules/home.legacy/conf/swayidle/config
new file mode 100644
index 00000000..a48f670b
--- /dev/null
+++ b/modules/home.legacy/conf/swayidle/config
@@ -0,0 +1,5 @@
+timeout 180 'swaylock -fF'
+
+timeout 360 'systemctl suspend-then-hibernate'
+
+before-sleep 'swaylock -f'
diff --git a/modules/home.legacy/conf/swayidle/default.nix b/modules/home.legacy/conf/swayidle/default.nix
new file mode 100644
index 00000000..6b8a7d80
--- /dev/null
+++ b/modules/home.legacy/conf/swayidle/default.nix
@@ -0,0 +1,29 @@
+{
+  config,
+  pkgs,
+  ...
+}: {
+  xdg.configFile."swayidle/config".source = ./config;
+
+  #  services.swayidle = {
+  #    enable = true;
+  #    events = [
+  #      {
+  #        event = "before-sleep";
+  #        command = "${pkgs.swaylock}/bin/swaylock -f ";
+  #      }
+  #    ];
+  #    timeouts = [
+  #      {
+  #        timeout = 180;
+  #        command = "${pkgs.swaylock}/bin/swaylock -fFu ";
+  #      }
+  #      {
+  #        timeout = 360;
+  #        # TODO: systemctl is installed?
+  #        command = "systemctl suspend-then-hibernate";
+  #      }
+  #    ];
+  #    # systemdTarget = ""; # TODO: this might be usefull
+  #  };
+}
diff --git a/modules/home.legacy/conf/swaylock/GTDcanonical.png b/modules/home.legacy/conf/swaylock/GTDcanonical.png
new file mode 100644
index 00000000..ef41d79d
--- /dev/null
+++ b/modules/home.legacy/conf/swaylock/GTDcanonical.png
Binary files differdiff --git a/modules/home.legacy/conf/swaylock/commands.jpg b/modules/home.legacy/conf/swaylock/commands.jpg
new file mode 100644
index 00000000..54016503
--- /dev/null
+++ b/modules/home.legacy/conf/swaylock/commands.jpg
Binary files differdiff --git a/modules/home.legacy/conf/swaylock/default.nix b/modules/home.legacy/conf/swaylock/default.nix
new file mode 100644
index 00000000..9e5eabac
--- /dev/null
+++ b/modules/home.legacy/conf/swaylock/default.nix
@@ -0,0 +1,10 @@
+{...}: {
+  programs.swaylock = {
+    enable = true;
+    settings = {
+      image = "${./GTDcanonical.png}";
+      scaling = "center";
+      color = "000000";
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/swaylock/gnu.png b/modules/home.legacy/conf/swaylock/gnu.png
new file mode 100644
index 00000000..d07dee3e
--- /dev/null
+++ b/modules/home.legacy/conf/swaylock/gnu.png
Binary files differdiff --git a/modules/home.legacy/conf/taskwarrior/default.nix b/modules/home.legacy/conf/taskwarrior/default.nix
new file mode 100644
index 00000000..d7aec156
--- /dev/null
+++ b/modules/home.legacy/conf/taskwarrior/default.nix
@@ -0,0 +1,125 @@
+{
+  nixosConfig,
+  lib,
+  config,
+  ...
+}: {
+  imports = [
+    ./hooks
+  ];
+
+  services.taskwarrior-sync = {
+    enable = true;
+  };
+
+  programs.taskwarrior = let
+    projects = import ./projects {};
+
+    mkContext = project:
+      if builtins.hasAttr "subprojects" project
+      then
+        lib.lists.flatten (
+          (builtins.map mkContext (builtins.map (mkProject project) project.subprojects))
+          ++ (mkContext (builtins.removeAttrs project ["subprojects"]))
+        )
+      else [
+        {
+          inherit (project) name;
+          value = let
+            name =
+              if builtins.hasAttr "pname" project
+              then project.pname
+              else project.name;
+          in {
+            read = "project:${name}";
+            write = "project:${name}";
+            rc = {
+              neorg_path =
+                if builtins.hasAttr "neorg_path" project
+                then project.neorg_path
+                else "${project.prefix}/${project.name}/index.norg";
+            };
+          };
+        }
+      ];
+    mkProject = project: subproject: let
+      pname =
+        if builtins.hasAttr "pname" project
+        then project.pname
+        else project.name;
+    in
+      if builtins.isString subproject
+      then {
+        name = "${project.name}_${subproject}";
+        pname = "${pname}.${subproject}";
+        neorg_path =
+          if builtins.hasAttr "neorg_path_prefix" project
+          then "${project.neorg_path_prefix}/${subproject}/index.norg"
+          else "${project.prefix}/${project.name}/${subproject}/index.norg";
+      }
+      else if builtins.isAttrs subproject
+      then let
+        name = builtins.elemAt (builtins.attrNames subproject) 0;
+      in {
+        name = "${project.name}_${name}";
+        pname = "${pname}.${name}";
+        prefix = "${project.prefix}/${project.name}";
+        neorg_path_prefix = "${project.prefix}/${project.name}/${name}";
+        subprojects = builtins.elemAt (builtins.attrValues subproject) 0;
+      }
+      else builtins.throw "Subproject not a string or a attrs: ${subproject}";
+
+    context =
+      builtins.listToAttrs (lib.lists.flatten (builtins.map mkContext projects));
+  in {
+    enable = true;
+    colorTheme = ./nord.theme;
+    extraConfig = ''
+      # This include just contains my taskd user credentials
+      include ${nixosConfig.age.secrets.taskserverCredentials.path}
+    '';
+    config = {
+      news.version = "2.6.0";
+      complete.all.tags = true;
+      list.all = {
+        projects = true;
+        tags = true;
+      };
+      regex = true;
+      weekstart = "Monday";
+      uda = {
+        total_active_time = {
+          type = "duration";
+          label = "Total active time";
+        };
+      };
+      alias = {
+        mod = "modify";
+        n = "execute neorg --task";
+        fstart = "execute neorg fstart";
+      };
+      color = true;
+
+      hooks.location = "${config.xdg.configHome}/task/hooks";
+
+      urgency.uda.priority = {
+        H.coefficient = 6.0;
+        M.coefficient = 0;
+        L.coefficient = -1.8;
+      };
+
+      inherit context;
+
+      taskd = {
+        server = "taskserver.vhack.eu:53589";
+        trust = "strict";
+        ca =
+          nixosConfig.age.secrets.taskserverCA.path;
+        key =
+          nixosConfig.age.secrets.taskserverPrivate.path;
+        certificate =
+          nixosConfig.age.secrets.taskserverPublic.path;
+      };
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/taskwarrior/firefox/default.nix b/modules/home.legacy/conf/taskwarrior/firefox/default.nix
new file mode 100644
index 00000000..fb5daaa8
--- /dev/null
+++ b/modules/home.legacy/conf/taskwarrior/firefox/default.nix
@@ -0,0 +1,32 @@
+{
+  config,
+  lib,
+  # options
+  prefConfig,
+  profile_size,
+  search,
+  userChrome,
+  ...
+}: let
+  inherit (config.soispha.taskwarrior.projects) projects;
+
+  mkFirefoxProfile = {
+    name,
+    id,
+  }: {
+    inherit name;
+    value = {
+      isDefault = false;
+      extraConfig = prefConfig;
+      inherit id name search userChrome;
+    };
+  };
+  projects_id =
+    lib.imap0 (id: project: {
+      name = project;
+      id = id + profile_size;
+    })
+    projects;
+  firefoxProfiles = builtins.listToAttrs (builtins.map mkFirefoxProfile projects_id);
+in
+  firefoxProfiles
diff --git a/modules/home.legacy/conf/taskwarrior/hooks/default.nix b/modules/home.legacy/conf/taskwarrior/hooks/default.nix
new file mode 100644
index 00000000..ef97e1b5
--- /dev/null
+++ b/modules/home.legacy/conf/taskwarrior/hooks/default.nix
@@ -0,0 +1,114 @@
+{
+  sysLib,
+  pkgs,
+  lib,
+  config,
+  ...
+}: let
+  mkProject = project: subproject:
+    if builtins.isString subproject
+    then {
+      name = "${project.name}.${subproject}";
+      prefix = null;
+    }
+    else let
+      name = builtins.elemAt (builtins.attrNames subproject) 0;
+    in {
+      name = "${project.name}.${name}";
+      subprojects = builtins.elemAt (builtins.attrValues subproject) 0;
+      prefix = null;
+    };
+
+  mkProjectName = project:
+    if builtins.hasAttr "subprojects" project
+    then
+      lib.lists.flatten ([project.name]
+        ++ (builtins.map mkProjectName
+          (builtins.map (mkProject project) project.subprojects)))
+    else [project.name];
+  projects = lib.lists.unique (lib.lists.naturalSort (lib.lists.flatten (builtins.map mkProjectName (import ../projects {}))));
+  projects_newline = builtins.concatStringsSep "\n" projects;
+  projects_comma = builtins.concatStringsSep ", " projects;
+  projects_pipe = builtins.concatStringsSep "|" projects;
+
+  enforce_policies = sysLib.writeShellScript {
+    name = "bin";
+    src = ./scripts/on-add_enforce-policies.sh;
+    dependencies = with pkgs; [dash jq taskwarrior gnused gnugrep];
+    replacementStrings = {
+      PROJECTS_NEWLINE = projects_newline;
+      PROJECTS_COMMA = projects_comma;
+    };
+  };
+  track_timewarrior = pkgs.stdenv.mkDerivation {
+    name = "track_timewarrior.taskwarrior-hook";
+    nativeBuildInputs = [
+      pkgs.makeWrapper
+    ];
+    buildInputs = [
+      pkgs.timewarrior
+      pkgs.taskwarrior
+      # TODO: Use a `taskw` package, that actually supports newer python variants <2024-07-13>
+      (pkgs.python311.withPackages (pythonPackages:
+        with pythonPackages; [
+          taskw
+        ]))
+    ];
+    dontUnpack = true;
+    installPhase = ''
+      install -Dm755 ${./scripts/on-modify_track-timewarrior.py} $out/bin/bin
+      wrapProgram $out/bin/bin \
+      --prefix PATH : ${lib.makeBinPath [pkgs.taskwarrior pkgs.timewarrior]}
+    '';
+  };
+  track_total_active_time = pkgs.stdenv.mkDerivation {
+    name = "track_total_active_time.taskwarrior-hook";
+    nativeBuildInputs = [
+      pkgs.makeWrapper
+    ];
+    buildInputs = [
+      pkgs.taskwarrior
+      # TODO: Use a `taskw` package, that actually supports newer python variants <2024-07-13>
+      (pkgs.python311.withPackages (pythonPackages:
+        with pythonPackages; [
+          taskw
+        ]))
+    ];
+    dontUnpack = true;
+    installPhase = ''
+      install -Dm755 ${./scripts/on-modify_track-total-active-time.py} $out/bin/bin
+      wrapProgram $out/bin/bin \
+      --prefix PATH : ${lib.makeBinPath [pkgs.taskwarrior]}
+    '';
+  };
+
+  mkSyncGitRepo = type: {
+    name = "${hookPath}/${type}_sync-git-repo";
+    value = {
+      source = "${sysLib.writeShellScript {
+        name = "bin";
+        src = ./scripts + "/${type}_sync-git-repo.sh";
+        dependencies = with pkgs; [dash taskwarrior git];
+      }}/bin/bin";
+    };
+  };
+  sync_git_repos =
+    builtins.listToAttrs (builtins.map mkSyncGitRepo ["on-add" "on-modify"]);
+  hookPath = config.programs.taskwarrior.config.hooks.location;
+in {
+  options.soispha.taskwarrior.projects = lib.mkOption {
+    type = lib.types.attrs;
+  };
+  config = {
+    soispha.taskwarrior.projects = {
+      inherit projects_newline projects_comma projects projects_pipe;
+    };
+    home.file =
+      {
+        "${hookPath}/on-add_enforce-policies".source = "${enforce_policies}/bin/bin";
+        "${hookPath}/on-modify_track-timewarrior".source = "${track_timewarrior}/bin/bin";
+        "${hookPath}/on-modify_track-total-active-time".source = "${track_total_active_time}/bin/bin";
+      }
+      // sync_git_repos;
+  };
+}
diff --git a/modules/home.legacy/conf/taskwarrior/hooks/scripts/on-add_enforce-policies.sh b/modules/home.legacy/conf/taskwarrior/hooks/scripts/on-add_enforce-policies.sh
new file mode 100755
index 00000000..eaf7f30c
--- /dev/null
+++ b/modules/home.legacy/conf/taskwarrior/hooks/scripts/on-add_enforce-policies.sh
@@ -0,0 +1,41 @@
+#!/usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# override shell lib output to stdout
+eprint() {
+    # shellcheck disable=SC2317
+    print "$@"
+}
+eprintln() {
+    # shellcheck disable=SC2317
+    println "$@"
+}
+
+enable_hook_dbg() {
+    debug_hooks="$(task _get rc.debug.hooks)"
+    [ "$debug_hooks" ] && [ "$debug_hooks" -ge 1 ] && dbg_enable
+}
+
+enforce_project() {
+    project="$(jq '.project' "$(ptmp "$1")")"
+    [ "$project" = "null" ] && die "No project supplied!"
+
+    if grep -q "^$(echo "$project" | sed 's|"\(.*\)"|\1|')\$" "$(ptmp "%PROJECTS_NEWLINE")"; then
+        dbg "project('$project') is a valid part of %PROJECTS_COMMA"
+    else
+        die "The project '$(echo "$project" | sed 's|"||g')' is not registered with the nix config, registered projects: %PROJECTS_COMMA"
+    fi
+}
+
+read -r new_task
+# We don't change the task, thus immediately return the json
+echo "$new_task"
+
+enable_hook_dbg
+enforce_project "$new_task"
+
+exit 0
+
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/taskwarrior/hooks/scripts/on-add_sync-git-repo.sh b/modules/home.legacy/conf/taskwarrior/hooks/scripts/on-add_sync-git-repo.sh
new file mode 100755
index 00000000..dadc96b0
--- /dev/null
+++ b/modules/home.legacy/conf/taskwarrior/hooks/scripts/on-add_sync-git-repo.sh
@@ -0,0 +1,42 @@
+#!/usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# override shell lib output to stdout
+eprint() {
+    # shellcheck disable=SC2317
+    print "$@"
+}
+eprintln() {
+    # shellcheck disable=SC2317
+    println "$@"
+}
+
+enable_hook_dbg() {
+    debug_hooks="$(task _get rc.debug.hooks)"
+    [ "$debug_hooks" ] && [ "$debug_hooks" -ge 1 ] && dbg_enable
+}
+
+update_git_repo() {
+    task_data="$(task _get rc.data.location)"
+    [ "$task_data" ] || die "Taskwarrior should have a location set"
+
+    cd "$task_data" || die "(BUG?): Your data.location path is not accessable"
+
+    [ -d ./.git/ ] || git init
+
+    git add .
+    git commit --message="chore: Update" --no-gpg-sign
+}
+
+read -r new_task
+# We don't change the task, thus immediately return the json
+echo "$new_task"
+
+enable_hook_dbg
+update_git_repo
+
+exit 0
+
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/taskwarrior/hooks/scripts/on-modify_sync-git-repo.sh b/modules/home.legacy/conf/taskwarrior/hooks/scripts/on-modify_sync-git-repo.sh
new file mode 100755
index 00000000..25813e46
--- /dev/null
+++ b/modules/home.legacy/conf/taskwarrior/hooks/scripts/on-modify_sync-git-repo.sh
@@ -0,0 +1,43 @@
+#!/usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# override shell lib output to stdout
+eprint() {
+    # shellcheck disable=SC2317
+    print "$@"
+}
+eprintln() {
+    # shellcheck disable=SC2317
+    println "$@"
+}
+
+enable_hook_dbg() {
+    debug_hooks="$(task _get rc.debug.hooks)"
+    [ "$debug_hooks" ] && [ "$debug_hooks" -ge 1 ] && dbg_enable
+}
+
+update_git_repo() {
+    task_data="$(task _get rc.data.location)"
+    [ "$task_data" ] || die "Taskwarrior should have a location set"
+
+    cd "$task_data" || die "(BUG?): Your data.location path is not accessable"
+
+    [ -d ./.git/ ] || git init
+
+    git add .
+    git commit --message="chore: Update" --no-gpg-sign
+}
+
+read -r _old_task
+read -r new_task
+# We don't change the task, thus immediately return the json
+echo "$new_task"
+
+enable_hook_dbg
+update_git_repo
+
+exit 0
+
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/taskwarrior/hooks/scripts/on-modify_track-timewarrior.py b/modules/home.legacy/conf/taskwarrior/hooks/scripts/on-modify_track-timewarrior.py
new file mode 100755
index 00000000..b482af6a
--- /dev/null
+++ b/modules/home.legacy/conf/taskwarrior/hooks/scripts/on-modify_track-timewarrior.py
@@ -0,0 +1,94 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2016-present Arctic Ice Studio <development@arcticicestudio.com>
+# Copyright (C) 2016-present Sven Greb <development@svengreb.de>
+
+# Project:    igloo
+# Repository: https://github.com/arcticicestudio/igloo
+# License:    MIT
+# References:
+#   https://taskwarrior.org/docs
+#   https://taskwarrior.org/docs/timewarrior
+#   timew(1)
+#   task(1)
+
+"""A Taskwarrior hook to track the time of a active task with Taskwarrior.
+
+This hook will extract all of the following for use as Timewarrior tags:
+
+* UUID
+* Project
+* Tags
+* Description
+* UDAs
+
+Note:
+    This hook requires Python 3 and is only compatible with Taskwarrior version greater or equal to 2.4!
+
+This hook is a fork from the `official on-modify.timewarrior hook`_.
+
+.. _`official on-modify.timewarrior hook`:
+   https://github.com/GothenburgBitFactory/timewarrior/blob/dev/ext/on-modify.timewarrior
+"""
+
+import subprocess
+import sys
+from json import loads, dumps
+from os import system
+from sys import stdin
+from taskw import TaskWarrior
+
+# Make no changes to the task, simply observe.
+old = loads(stdin.readline())
+new = loads(stdin.readline())
+print(dumps(new))
+
+
+w = TaskWarrior(config_filename=sys.argv[4].replace("rc:", ""))
+config = w.load_config(config_filename=sys.argv[4].replace("rc:", ""))
+if "max_active_tasks" in config:
+    MAX_ACTIVE = int(config["max_active_tasks"])
+else:
+    MAX_ACTIVE = 1
+
+
+# Extract attributes for use as tags.
+tags = [new["description"]]
+
+if "project" in new:
+    project = new["project"]
+    tags.append(project)
+    if "." in project:
+        tags.extend([tag for tag in project.split(".")])
+
+if "tags" in new:
+    tags.extend(new["tags"])
+
+combined = " ".join(["'%s'" % tag for tag in tags]).encode("utf-8").strip()
+
+# Task has been started.
+if "start" in new and "start" not in old:
+    # Prevent this task from starting if "task +ACTIVE count" is greater than "MAX_ACTIVE".
+    p = subprocess.Popen(
+        ["task", "+ACTIVE", "status:pending", "count", "rc.verbose:off"],
+        stdout=subprocess.PIPE,
+    )
+    out, err = p.communicate()
+    count = int(out.rstrip())
+    if count >= MAX_ACTIVE:
+        print(
+            "Only %d task(s) can be active at a time. "
+            "See 'max_active_tasks' in .taskrc." % MAX_ACTIVE
+        )
+        sys.exit(1)
+
+    system("timew start " + combined.decode() + " :yes")
+
+# Task has been stopped.
+elif "start" not in new and "start" in old:
+    system("timew stop " + combined.decode() + " :yes")
+
+# Any task that is active, with a non-pending status should not be tracked.
+elif "start" in new and new["status"] != "pending":
+    system("timew stop " + combined.decode() + " :yes")
diff --git a/modules/home.legacy/conf/taskwarrior/hooks/scripts/on-modify_track-total-active-time.py b/modules/home.legacy/conf/taskwarrior/hooks/scripts/on-modify_track-total-active-time.py
new file mode 100755
index 00000000..d5b380d0
--- /dev/null
+++ b/modules/home.legacy/conf/taskwarrior/hooks/scripts/on-modify_track-total-active-time.py
@@ -0,0 +1,148 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2016-present Arctic Ice Studio <development@arcticicestudio.com>
+# Copyright (C) 2016-present Sven Greb <development@svengreb.de>
+
+# Project:    igloo
+# Repository: https://github.com/arcticicestudio/igloo
+# License:    MIT
+# References:
+#   https://taskwarrior.org/docs
+#   task(1)
+
+"""A Taskwarrior hook to track the total active time of a task.
+
+The tracked time is stored in a UDA task duration attribute named ``totalactivetime`` of type ``duration`` holding the total number of seconds the task was
+active. The tracked time can then be included in any report by adding the ``totalactivetime`` column.
+
+By default, this plugin allows to have one task active at a time. This can be changed by setting ``max_active_tasks`` in ``.taskrc`` to a value greater than
+``1``.
+
+Note:
+    This hook requires Python 3 and the `taskw`_ package to be installed which provides the python bindings for Taskwarrior!
+    Also note that this hook is only compatible with Taskwarrior version greater or equal to 2.4!
+
+This hook is a fork from `kostajh/taskwarrior-time-tracking-hook`_
+
+.. _taskw:
+   https://pypi.python.org/pypi/taskw
+.. _kostajh/taskwarrior-time-tracking-hook:
+   https://github.com/kostajh/taskwarrior-time-tracking-hook
+"""
+
+import datetime
+import json
+import re
+import sys
+import subprocess
+from taskw import TaskWarrior
+from typing import TypeVar
+
+TIME_FORMAT = "%Y%m%dT%H%M%SZ"
+UDA_KEY = "total_active_time"
+
+w = TaskWarrior(config_filename=sys.argv[4].replace("rc:", ""))
+config = w.load_config(config_filename=sys.argv[4].replace("rc:", ""))
+if "max_active_tasks" in config:
+    MAX_ACTIVE = int(config["max_active_tasks"])
+else:
+    MAX_ACTIVE = 1
+
+"""Compiled regular expression for the duration as ISO-8601 formatted string."""
+ISO8601DURATION = re.compile("P((\d*)Y)?((\d*)M)?((\d*)D)?T((\d*)H)?((\d*)M)?((\d*)S)?")
+
+"""The duration type either as integer (in seconds), as ISO-8601 formatted string ("PT1H10M31S") or the seconds suffixed with "seconds"."""
+DurationType = TypeVar("DurationType", str, int)
+
+
+def duration_str_to_time_delta(duration_str: DurationType) -> datetime.timedelta:
+    """Converts duration string into a timedelta object.
+
+    :param duration_str: The duration
+    :return: The duration as timedelta object
+    """
+    if duration_str.startswith("P"):
+        match = ISO8601DURATION.match(duration_str)
+        if match:
+            year = match.group(2)
+            month = match.group(4)
+            day = match.group(6)
+            hour = match.group(8)
+            minute = match.group(10)
+            second = match.group(12)
+            value = 0
+            if second:
+                value += int(second)
+            if minute:
+                value += int(minute) * 60
+            if hour:
+                value += int(hour) * 3600
+            if day:
+                value += int(day) * 3600 * 24
+            if month:
+                # Assume a month is 30 days for now.
+                value += int(month) * 3600 * 24 * 30
+            if year:
+                # Assume a year is 365 days for now.
+                value += int(year) * 3600 * 24 * 365
+        else:
+            value = int(duration_str)
+    elif duration_str.endswith("seconds"):
+        value = int(duration_str.rstrip("seconds"))
+    else:
+        value = int(duration_str)
+    return datetime.timedelta(seconds=value)
+
+
+def main():
+    original = json.loads(sys.stdin.readline())
+    modified = json.loads(sys.stdin.readline())
+
+    # An active task has just been started.
+    if "start" in modified and "start" not in original:
+        # Prevent this task from starting if "task +ACTIVE count" is greater than "MAX_ACTIVE".
+        p = subprocess.Popen(
+            ["task", "+ACTIVE", "status:pending", "count", "rc.verbose:off"],
+            stdout=subprocess.PIPE,
+        )
+        out, err = p.communicate()
+        count = int(out.rstrip())
+        if count >= MAX_ACTIVE:
+            print(
+                "Only %d task(s) can be active at a time. "
+                "See 'max_active_tasks' in .taskrc." % MAX_ACTIVE
+            )
+            sys.exit(1)
+
+    # An active task has just been stopped.
+    if "start" in original and "start" not in modified:
+        # Calculate the elapsed time.
+        start = datetime.datetime.strptime(original["start"], TIME_FORMAT)
+        end = datetime.datetime.utcnow()
+
+        if UDA_KEY not in modified:
+            modified[UDA_KEY] = 0
+
+        this_duration = end - start
+        total_duration = this_duration + duration_str_to_time_delta(
+            str(modified[UDA_KEY])
+        )
+        print(
+            "Total Time Tracked: %s (%s in this instance)"
+            % (total_duration, this_duration)
+        )
+        modified[UDA_KEY] = (
+            str(int(total_duration.days * (60 * 60 * 24) + total_duration.seconds))
+            + "seconds"
+        )
+
+    return json.dumps(modified, separators=(",", ":"))
+
+
+def cmdline():
+    sys.stdout.write(main())
+
+
+if __name__ == "__main__":
+    cmdline()
diff --git a/modules/home.legacy/conf/taskwarrior/nord.theme b/modules/home.legacy/conf/taskwarrior/nord.theme
new file mode 100644
index 00000000..2897418f
--- /dev/null
+++ b/modules/home.legacy/conf/taskwarrior/nord.theme
@@ -0,0 +1,100 @@
+# Copyright (C) 2016-present Arctic Ice Studio <development@arcticicestudio.com>
+# Copyright (C) 2016-present Sven Greb <development@svengreb.de>
+
+# Project:    igloo
+# Repository: https://github.com/arcticicestudio/igloo
+# License:    MIT
+# References:
+#   https://taskwarrior.org/docs/themes.html
+#   task-color(5)
+#   taskrc(5)
+
+rule.precedence.color=deleted,completed,active,keyword.,tag.,project.,overdue,scheduled,due.today,due,blocked,blocking,recurring,tagged,uda.
+
+#+---------+
+#+ General +
+#+---------+
+color.label=
+color.label.sort=
+color.alternate=
+color.header=bold blue
+color.footnote=cyan
+color.warning=bold black on yellow
+color.error=bold black on red
+color.debug=magenta
+
+#+-------------+
+#+ Task States +
+#+-------------+
+color.completed=green
+color.deleted=red
+color.active=bold black on cyan
+color.recurring=
+color.scheduled=white on black
+color.until=white on bright black
+color.blocked=yellow on black
+color.blocking=bold yellow on black
+
+#+----------+
+#+ Projects +
+#+----------+
+color.project.none=
+
+#+----------+
+#+ Priority +
+#+----------+
+color.uda.priority.H=bold cyan
+color.uda.priority.M=bold blue
+color.uda.priority.L=color245
+
+#+------+
+#+ Tags +
+#+------+
+color.tag.next=
+color.tag.none=
+color.tagged=
+
+#+-----+
+#+ Due +
+#+-----+
+color.due=blue
+color.due.today=cyan on black
+color.overdue=bold red
+
+#+---------+
+#+ Reports +
+#+---------+
+color.burndown.done=bold black on cyan
+color.burndown.pending=black on bright cyan
+color.burndown.started=black on blue
+
+color.history.add=bold black on blue
+color.history.delete=bright white on bold black
+color.history.done=bold black on cyan
+
+color.summary.background=bright white on black
+color.summary.bar=black on cyan
+
+#+----------+
+#+ Calendar +
+#+----------+
+color.calendar.due=bold black on blue
+color.calendar.due.today=bold black on cyan
+color.calendar.holiday=bold blue on white
+color.calendar.overdue=bold black on red
+color.calendar.today=bold black on cyan
+color.calendar.weekend=bright white on bright black
+color.calendar.weeknumber=bold black
+
+#+-----------------+
+#+ Synchronization +
+#+-----------------+
+color.sync.added=green
+color.sync.changed=yellow
+color.sync.rejected=red
+
+#+------+
+#+ Undo +
+#+------+
+color.undo.after=green
+color.undo.before=red
diff --git a/modules/home.legacy/conf/taskwarrior/projects/default.nix b/modules/home.legacy/conf/taskwarrior/projects/default.nix
new file mode 100644
index 00000000..9b555fef
--- /dev/null
+++ b/modules/home.legacy/conf/taskwarrior/projects/default.nix
@@ -0,0 +1,119 @@
+{}: [
+  {
+    name = "me";
+    prefix = "";
+    subprojects = ["health" "sweden" "bank"];
+  }
+  {
+    name = "timesinks";
+    prefix = "";
+    subprojects = ["youtube" "games" "netflix" "music"];
+  }
+  {
+    name = "input";
+    prefix = "research";
+    subprojects = ["read-things" "dotfiles"];
+  }
+  {
+    name = "aoc";
+    prefix = "programming/advent_of_code";
+  }
+  {
+    name = "camera";
+    prefix = "programming/zig";
+    subprojects = [];
+  }
+  {
+    name = "trinitrix";
+    prefix = "programming/rust";
+    subprojects = ["testing" "documentation"];
+  }
+  {
+    name = "serverphone";
+    prefix = "programming/rust";
+  }
+  {
+    name = "latex";
+    prefix = "programming/latex";
+  }
+  {
+    name = "presentation";
+    prefix = "research";
+  }
+  {
+    name = "possible-projects";
+    prefix = "research";
+  }
+  {
+    name = "school";
+    prefix = "research";
+    subprojects = [
+      "biologie"
+      "chemie"
+      "deutsch"
+      "english"
+      "geographie"
+      "geschichte"
+      "infomatik"
+      "klausuren"
+      "latein"
+      "mathematik"
+      "musik"
+      "philosophie"
+      "physik"
+      "sozialkunde"
+      "sport"
+      {extern = ["bwinf" "dsa"];}
+      {chemie = ["facharbeit"];} # TODO: Remove once the ff tabs are cleared <2024-05-10>
+    ];
+  }
+  {
+    name = "hardware";
+    prefix = "research";
+  }
+  {
+    name = "buy";
+    prefix = "buy";
+    subprojects = ["books" "pc"];
+  }
+  {
+    name = "system";
+    prefix = "config";
+    subprojects = [
+      "youtube"
+      "backup"
+      "bar"
+      "email"
+      "firefox"
+      "gpg"
+      "keyboard"
+      "laptop"
+      "nvim"
+      "rss"
+      "shell"
+      "task"
+      "wm"
+    ];
+  }
+  {
+    name = "server";
+    prefix = "config";
+    subprojects = [
+      "b-peetz"
+      "email"
+      "blog"
+      "nix-sync"
+      "sudo-less"
+      "ci"
+    ];
+  }
+  {
+    name = "3d-printer";
+    prefix = "hardware";
+  }
+  {
+    name = "smartphone";
+    prefix = "hardware";
+    subprojects = ["airplay" "airdrop"];
+  }
+]
diff --git a/modules/home.legacy/conf/timewarrior/default.nix b/modules/home.legacy/conf/timewarrior/default.nix
new file mode 100644
index 00000000..bcb627f5
--- /dev/null
+++ b/modules/home.legacy/conf/timewarrior/default.nix
@@ -0,0 +1,22 @@
+{pkgs, ...}: {
+  home.packages = [
+    pkgs.timewarrior
+  ];
+  xdg.configFile."timewarrior/timewarrior.cfg".text = ''
+    # source: https://github.com/arcticicestudio/igloo
+    #+----+
+    #+ UI +
+    #+----+
+    import ${./nord.theme}
+    color = true
+
+    #+---------+
+    #+ Reports +
+    #+---------+
+    define reports:
+      day:
+        lines = 10
+        month = true
+        week = true
+  '';
+}
diff --git a/modules/home.legacy/conf/timewarrior/nord.theme b/modules/home.legacy/conf/timewarrior/nord.theme
new file mode 100644
index 00000000..da3c387a
--- /dev/null
+++ b/modules/home.legacy/conf/timewarrior/nord.theme
@@ -0,0 +1,25 @@
+# Copyright (C) 2016-present Arctic Ice Studio <development@arcticicestudio.com>
+# Copyright (C) 2016-present Sven Greb <development@svengreb.de>
+
+# Project:    igloo
+# Repository: https://github.com/arcticicestudio/igloo
+# License:    MIT
+# References:
+#   https://taskwarrior.org/docs/timewarrior/themes.html
+#   timew(1)
+
+define theme:
+  description = "An arctic, north-bluish clean and elegant Timewarrior theme."
+  colors:
+    exclusion = "bold black"
+    today = "cyan"
+    holiday = "bold blue on white"
+    label = "bold white on black"
+    ids = "bold black on cyan"
+    debug = "magenta"
+
+  # Rotating color palette for tags.
+  palette:
+    color01 = "bold black on cyan"
+    color02 = "bold black on bright cyan"
+    color03 = "bold black on blue"
diff --git a/modules/home.legacy/conf/tridactyl/config.vim b/modules/home.legacy/conf/tridactyl/config.vim
new file mode 100644
index 00000000..84e290cb
--- /dev/null
+++ b/modules/home.legacy/conf/tridactyl/config.vim
@@ -0,0 +1,47 @@
+" vim: filetype=vim
+
+" This wipes all existing settings. This means that if a setting in this file
+" is removed, then it will return to default. In other words, this file serves
+" as an enforced single point of truth for Tridactyl's configuration.
+sanitize tridactyllocal tridactylsync
+
+" Just use a blank page for new tab. It would be nicer to use the standard
+" Firefox homepage, but Tridactyl doesn't support this yet.
+"TODO: use custome file
+"set newtab file:///home/soispha/new.html
+
+" Set a nice colorscheme
+colorscheme midnight
+
+" Delete temp files after use
+alias editor_rm composite editor | jsb -p tri.native.run(`rm -f '${JS_ARG[0]}'`)
+bind --mode=insert <C-i> editor_rm
+bind --mode=input <C-i> editor_rm
+
+" Use vim in tmux for editor.
+set editorcmd alacritty -e nvim
+
+" Ctrl-F should use the browser's native 'find' functionality.
+unbind <C-f>
+
+" But also support Tridactyl search too.
+bind / fillcmdline find
+bind ? fillcmdline find -?
+bind l findnext 1
+bind L findnext -1
+" Remove search highlighting.
+bind ,<Space> nohlsearch
+" Use sensitive case. Smart case would be nice here, but it doesn't work.
+set findcase smartcase
+
+" Smooth scrolling, yes please. This is still a bit janky in Tridactyl.
+set smoothscroll true
+
+" The default jump of 10 is a bit much.
+bind t scrollline 5
+bind n scrollline -5
+
+" K and J should move between tabs. x should close them.
+bind T tabprev
+bind N tabnext
+bind x tabclose
diff --git a/modules/home.legacy/conf/tridactyl/default.nix b/modules/home.legacy/conf/tridactyl/default.nix
new file mode 100644
index 00000000..23307cfe
--- /dev/null
+++ b/modules/home.legacy/conf/tridactyl/default.nix
@@ -0,0 +1,3 @@
+{...}: {
+  xdg.configFile."tridactyl/tridactylrc".source = ./config.vim;
+}
diff --git a/modules/home.legacy/conf/unison/default.nix b/modules/home.legacy/conf/unison/default.nix
new file mode 100644
index 00000000..ae682235
--- /dev/null
+++ b/modules/home.legacy/conf/unison/default.nix
@@ -0,0 +1,187 @@
+{
+  lib,
+  config,
+  nixosConfig,
+  sysLib,
+  pkgs,
+  ...
+}: let
+  unisonPath = "${config.xdg.dataHome}/unison";
+
+  # These are only used for the script
+  unisonOptions = {
+    sshcmd = "ssh";
+    ui = "text";
+    auto = "true";
+    # This is useless, with hm links
+    links = "false";
+
+    backupdir = "${unisonPath}/backups";
+    backuploc = "central";
+    backupcurr = paths_to_merge;
+    # merge =
+    #   builtins.map (x: ''${x} -> diff3 --text --merge CURRENT1 CURRENTARCH CURRENT2 > NEW'')
+    #   paths_to_merge;
+  };
+
+  paths_to_merge = mkPathName {
+    file_names = ["log" "history" "harpoon.json" "file_frecency.bin" "main.shada"];
+    extensions = ["log"];
+  };
+
+  paths_to_keep = [
+    "~/.local/state/mpv"
+    "~/.local/state/nvim"
+    "~/.local/share"
+    "~/.local/.Trash-1000"
+
+    "~/.mozilla/.Trash-1000"
+    "~/.mozilla/firefox"
+
+    "~/media"
+    "~/school"
+    "~/repos"
+  ];
+  paths_to_ignore = [
+    # already synchronized by the taskserver
+    "~/.local/share/task"
+
+    # Should not be synchronized
+    "~/.local/share/unison"
+
+    # Is just to big to be synchronized (# TODO: Work around that <2024-08-31> )
+    "~/media/music"
+  ];
+
+  hostName = let
+    hn = nixosConfig.networking.hostName;
+  in
+    if hn == "tiamat"
+    then "apzu"
+    else if hn == "apzu"
+    then "tiamat"
+    else builtins.throw "Host (${hn}) not yet covered in the unison host mapping.";
+
+  mkPathName = {
+    file_names,
+    extensions,
+  }:
+    builtins.map (x: ''Name ${x}'') (
+      (builtins.map (x: ''*.${x}'') extensions)
+      ++ file_names
+    );
+
+  unitName = name: builtins.replaceStrings ["/"] ["-"] name;
+
+  mkPath = path:
+    if lib.strings.hasPrefix "~" path
+    then "${builtins.elemAt (builtins.attrNames config.home.persistence)
+      0}${lib.strings.removePrefix "~" path}"
+    else
+      builtins.throw
+      "Every pathname needs to start with a '~'";
+
+  mkPair = pathname: let
+    path = mkPath pathname;
+  in {
+    name = unitName "${pathname}";
+    value = {
+      stateDirectory = unisonPath;
+      roots = [
+        "${path}"
+        "ssh://${config.home.username}@${hostName}.fritz.box/${path}"
+      ];
+    };
+  };
+
+  getIgnoredSingle = path: path_to_ignore: let
+    clean_path_to_ignore = mkPath path_to_ignore;
+    commonPath = builtins.substring 0 (builtins.stringLength path) clean_path_to_ignore;
+  in
+    if commonPath == path
+    then let
+      preFinalPath =
+        builtins.substring (builtins.stringLength commonPath)
+        (builtins.stringLength clean_path_to_ignore)
+        clean_path_to_ignore;
+      finalPath =
+        if lib.strings.hasPrefix "/" preFinalPath
+        then lib.strings.removePrefix "/" preFinalPath
+        else preFinalPath;
+    in "BelowPath ${finalPath}"
+    else null;
+
+  getIgnored = paths_to_ignore: path:
+    serialiseArgs {
+      ignore =
+        builtins.filter (x: x != null) (builtins.map (getIgnoredSingle path) paths_to_ignore);
+    };
+
+  serialiseArg = key: val:
+    if builtins.typeOf val == "string"
+    then lib.strings.escapeShellArg "-${key}=${lib.strings.escape ["="] val}"
+    else if builtins.typeOf val == "list"
+    then lib.strings.concatStringsSep " " (builtins.map (serialiseArg key) val)
+    else builtins.throw "Unsupported type: ${builtins.typeOf val}";
+
+  serialiseArgs = args:
+    lib.strings.concatStringsSep " " (
+      lib.attrsets.mapAttrsToList
+      serialiseArg
+      args
+    );
+
+  esa = a: lib.strings.escapeShellArg a;
+
+  mkScriptLine = pathname: let
+    path =
+      mkPath pathname;
+  in
+    lib.strings.concatStringsSep " " [
+      "unison"
+      "${serialiseArgs unisonOptions}"
+      "$EXTRA_OPTIONS"
+      "${getIgnored paths_to_ignore path}"
+      "${esa path}"
+      (esa "ssh://${config.home.username}@${hostName}.fritz.box/${path}")
+    ];
+
+  script = lib.strings.concatStringsSep "\n" (builtins.map mkScriptLine paths_to_keep);
+
+  pairs = builtins.listToAttrs (builtins.map mkPair paths_to_keep);
+in {
+  home.sessionVariables = {
+    UNISON = unisonPath;
+  };
+  home.packages = [
+    pkgs.unison
+    (sysLib.writeShellScript {
+      name = "unison-sync";
+      src = builtins.toFile "unison-backup" (''
+          #!/usr/bin/env dash
+
+          # shellcheck source=/dev/null
+          SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+          export UNISON=${esa unisonPath};
+
+          if [ "$1" = "links" ]; then
+            shift 1;
+            EXTRA_OPTIONS="-links=true";
+          fi
+          EXTRA_OPTIONS="$EXTRA_OPTIONS $*"
+        ''
+        + script);
+      dependencies = with pkgs; [
+        unison
+        openssh # needed to connect to the other server
+        less # needed to show diffs
+        diffutils # needed to compute diffs
+      ];
+    })
+  ];
+  services.unison = {
+    enable = false;
+    inherit pairs;
+  };
+}
diff --git a/modules/home.legacy/conf/xdg/default.nix b/modules/home.legacy/conf/xdg/default.nix
new file mode 100644
index 00000000..4099720d
--- /dev/null
+++ b/modules/home.legacy/conf/xdg/default.nix
@@ -0,0 +1,63 @@
+{
+  sysLib,
+  pkgs,
+  config,
+  ...
+}: let
+  url_handler = sysLib.writeShellScript {
+    name = "url_handler";
+    src = ./url_handler.sh;
+    keepPath = true;
+    # Naming dependencies for this will be difficult, as it depend on overridden packages.
+    dependencies = with pkgs; [
+      rofi
+      libnotify
+      zathura
+    ];
+    replacementStrings = {
+      ALL_PROJECTS_PIPE = "${config.soispha.taskwarrior.projects.projects_pipe}";
+    };
+  };
+in {
+  imports = [
+    ./xdg_vars.nix
+  ];
+
+  xdg = {
+    mimeApps = {
+      enable = true;
+      defaultApplications = {
+        "application/pdf" = ["url_handler.desktop"];
+        "application/x-pdf" = ["url_handler.desktop"];
+
+        "text/html" = ["url_handler.desktop"];
+        "text/xml" = ["url_handler.desktop"];
+        "x-scheme-handler/http" = ["url_handler.desktop"];
+        "x-scheme-handler/https" = ["url_handler.desktop"];
+        "x-scheme-handler/about" = ["url_handler.desktop"];
+        "x-scheme-handler/unknown" = ["url_handler.desktop"];
+      };
+    };
+    desktopEntries = {
+      url_handler = {
+        name = "url_handler";
+        genericName = "Web Browser";
+        exec = "${url_handler}/bin/url_handler %u";
+        terminal = false;
+        categories = [
+          "Application"
+          "Network"
+          "WebBrowser"
+        ];
+        mimeType = [
+          "text/html"
+          "text/xml"
+          "x-scheme-handler/http"
+          "x-scheme-handler/https"
+          "x-scheme-handler/about"
+          "x-scheme-handler/unknown"
+        ];
+      };
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/xdg/url_handler.sh b/modules/home.legacy/conf/xdg/url_handler.sh
new file mode 100755
index 00000000..95eedffb
--- /dev/null
+++ b/modules/home.legacy/conf/xdg/url_handler.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+project="$(echo "%ALL_PROJECTS_PIPE|nvim|zathura|" | rofi -sep "|" -dmenu)"
+
+if [ "$project" = "nvim" ]; then
+    "$TERMINAL" -e nvim "$1"
+elif [ "$project" = "zathura" ]; then
+    zathura "$1"
+elif [ "$project" ]; then
+    firefox -P "$project" "$1"
+else
+    notify-send "(URL HANDLER) No project selected" && exit 1
+fi
+
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/xdg/xdg_vars.nix b/modules/home.legacy/conf/xdg/xdg_vars.nix
new file mode 100644
index 00000000..3f7d5e00
--- /dev/null
+++ b/modules/home.legacy/conf/xdg/xdg_vars.nix
@@ -0,0 +1,26 @@
+{config, ...}: let
+  inherit (config.xdg) dataHome;
+in {
+  # Variables that only have to be set because special applications fail to set reasonable
+  # defaults (mostly understandable because of backwards-compatibility, but yeah)
+  programs.zsh.sessionVariables = {
+    CARGO_HOME = "${dataHome}/cargo";
+    GRADLE_USER_HOME = "${dataHome}/gradle";
+
+    #_JAVA_OPTIONS = lib.concatStringsSep " " [
+    #        ''-Djava.util.prefs.userRoot="${config.xdg.configHome}/java"''
+    #        ''-Djavafx.cachedir="${config.xdg.cacheHome}/openjfx"''
+    #      ];
+    #GOPATH = "${config.xdg.dataHome}/go";
+    #GTK2_RC_FILES = "${config.xdg.configHome}/gtk-2.0/gtkrc";
+    #RUSTUP_HOME = "${config.xdg.dataHome}/rustup";
+    #NPM_CONFIG_USERCONFIG = "${config.xdg.configHome}/npm/npmrc";
+    #NUGET_PACKAGES = "${config.xdg.cacheHome}/NuGetPackages";
+    #XAUTHORITY = "${config.xdg.stateHome}/Xauthority";
+    #COMPDUMPFILE = "${config.xdg.dataHome}/zsh/.zcompdump}";
+    #IPYTHONDIR = "${config.xdg.configHome}/ipython";
+    #PARALLEL_HOME = "${config.xdg.configHome}/parallel";
+    #STACK_XDG = "1";
+    #WINEPREFIX = "${config.xdg.dataHome}/wine";
+  };
+}
diff --git a/modules/home.legacy/conf/yambar/config/config.yml b/modules/home.legacy/conf/yambar/config/config.yml
new file mode 100644
index 00000000..3d9f0687
--- /dev/null
+++ b/modules/home.legacy/conf/yambar/config/config.yml
@@ -0,0 +1,243 @@
+---
+# Config file for yambar
+# Note that this may be version-dependent, this file is written for v1.8.0
+
+
+# Font anchors
+font-main: &fontmain Source Code Pro:pixelsize=26
+font-aws: &awesome Font Awesome 5 Free:style=solid:pixelsize=23
+
+# Color anchors
+fg-none: &fgnone 00000000
+fg-1: &fg1 c6ceefff
+fg-blue: &fgblue 99d1dbff
+fg-sapphire: &fgsapp 74c7ecdd
+fg-green: &fggreen a6e3a1dd
+fg-peach: &fgpeach fab387dd
+fg-mauve: &fgmauve cba6f7dd
+fg-teal: &fgteal 94e2d5dd
+fg-lavendar: &fglav b4befedd
+fg-focus: &fgfocus e78284ff
+bg-1: &bg1 303446ff
+bg-tag: &bgtag 585b70ff
+bg-tag2: &bgtag2 45475aff
+bg-urgent: &bgurgent e78284ff
+
+# Background blocks
+background-block: &bgcblock {background: {color: *bg1 }}
+background-block-urgent: &bgcurg {background: {color: *bgurgent }}
+
+# Underlines
+underline-focused: &line {underline: { size: 3, color: *fgfocus}}
+underline-urgent: &lineurgent {underline: { size: 3, color: *fgblue}}
+underline-utils: &lineutil {underline: { size: 3, color: *fgpeach}}
+underline-resources: &linemem {underline: { size: 3, color: *fggreen}}
+underline-battery: &linebat {underline: { size: 3, color: *fgsapp}}
+underline-clock: &lineclock {underline: { size: 3, color: *fgteal}}
+underline-weather: &linewea {underline: { size: 3, color: *fglav}}
+underline-title: &linetitle {underline: { size: 3, color: *bgtag}}
+
+# Combined decorations
+combination-utils: &combutil {stack: [ <<: *bgcblock, <<: *lineutil]}
+combination-resources: &combmem {stack: [ <<: *bgcblock, <<: *linemem]}
+combination-battery: &combbat {stack: [ <<: *bgcblock, <<: *linebat]}
+combination-clock: &combclock {stack: [ <<: *bgcblock, <<: *lineclock]}
+combination-weather: &combwea {stack: [ <<: *bgcblock, <<: *linewea]}
+
+
+### Main
+
+bar:
+  location: top
+  height: 45
+  layer: bottom
+  spacing: 0
+  margin: 10
+  border: {margin: 0, top-margin: 10}
+  foreground: *fg1
+  background: *fgnone
+  font: *fontmain
+
+  ### Left, river tags
+  left:
+    - river:
+        anchors:
+          - id: &name { text: "{id}" }
+          - string: &focus { stack: [ {background: {color: *bg1}} ] }
+          - string: &normal { string: { <<: *name, margin: 10 } }
+          - string:
+              &occupied { string: { <<: *name, deco: {background: {color: *bgtag2}}, margin: 10 } }
+          - string: &urgent { string: { <<: *name, deco: {stack: [background: {color: *bgurgent}, <<: *lineurgent]}, margin: 10 } }
+          - string: &focused { string: { <<: *name, deco: {stack: [background: {color: *bgtag}, <<: *line]}, margin: 10 } }
+          - string: &unfocused { string: { <<: *name, deco: {background: {color: *bgtag2}}, margin: 10 } }
+          - base: &river_base
+              default: *normal
+              conditions:
+                state == focused: *focused
+                state == unfocused: *unfocused
+                state == urgent: *urgent
+                state == invisible:
+                  map:
+                    conditions:
+                      occupied: *occupied
+                      ~occupied: *normal
+        content:
+          map:
+            on-click:
+              left: sh -c "riverctl set-focused-tags $((1 << ({id} - 1)))"
+              right: sh -c "riverctl toggle-focused-tags $((1 << ({id} -1)))"
+              middle: sh -c "riverctl toggle-view-tags $((1 << ({id} -1)))"
+            conditions:
+              id == 1: { map: { <<: *river_base } }
+              id == 2: { map: { <<: *river_base } }
+              id == 3: { map: { <<: *river_base } }
+              id == 4: { map: { <<: *river_base } }
+              id == 5: { map: { <<: *river_base } }
+              id == 6: { map: { <<: *river_base } }
+              id == 7: { map: { <<: *river_base } }
+              id == 8: { map: { <<: *river_base } }
+              id == 9: { map: { <<: *river_base } }
+        title:
+          map:
+            default:
+              {
+                string:
+                  {
+                    text: "{title}",
+                    left-margin: 12,
+                    right-margin: 12,
+                    # max: 35,
+                    deco: *linetitle
+                  },
+              }
+            conditions:
+              title == "": { string: { text: "" } }
+
+  ### Center, clock & weather gadget
+  center:
+    - clock:
+        time-format: "%H:%M:%S %Z"
+        date-format: "%d/%m/%y (%a)"
+        foreground: *fgblue
+        content:
+          string:
+            text: " {date} {time} "
+            deco: *combclock
+
+  ### Right, system tray
+  right:
+    #- network:
+    #    name: wlp5s0
+    #    poll-interval: 10
+    #    content:
+    #      map:
+    #        on-click: /bin/sh -c "nmtui"
+    #        conditions:
+    #          ~carrier: {empty: {}}
+    #          carrier:
+    #            string: {text: "  {ssid} ", deco: *combutil}
+    #- network:
+    #    name: enp4s0
+    #    content:
+    #      map:
+    #        on-click: /bin/sh -c "nmtui"
+    #        conditions:
+    #          ~carrier:
+    #            string: {text: "  Eth failed ", deco: *combutil}
+    #          carrier: {empty: {}}
+
+    - script:   # mpd song name
+        path: @mpd_song_name_script@
+        content:
+          map:
+            conditions:
+              playing:
+                string: {text: "{song} ", deco: *combwea}
+              ~playing:
+                string: {text: "", deco: *combwea}
+    - script:   # Sound volume
+        path: @volume_script@
+        content:
+          map:
+            on-click: /bin/sh -c "pavucontrol"
+            conditions:
+              muted:
+                string:
+                  text: " 󰝟 "
+                  deco: *bgcurg
+              ~muted:
+                string: {text: "  {volume}% ", deco: *combutil}
+
+    # - script:   # Grade average
+    #     path: @grade_average_script@
+    #     content:
+    #       string:
+    #         text: "   {grade} "
+    #         deco: *combmem
+
+    #- backlight:
+    #   name: intel_backlight
+    #   content:
+    #     - string: {text: "  {percent}% ", deco: *combutil}
+
+    - script:   # CPU
+        path: @cpu_script@
+        content:
+          string:
+            text: "  {cpu}% "
+            deco: *combmem
+
+    - script:   # Memory info
+        path: @memory_script@
+        content:
+          map:
+            conditions:
+              swapstate:
+                string:
+                  text: "  {memperc}%({swapperc}%) "
+                  deco: *combmem
+              ~swapstate:
+                string:
+                  text: "  {memperc}% "
+                  deco: *combmem
+    - script:   # Disk space
+        path: @disk_script@
+        content:
+          string:
+            text: " 󰋊 {diskspace}({diskperc})"
+            deco: *combmem
+   #- battery:
+   #    name: BAT0
+   #    poll-interval: 30
+   #    content:
+   #      list:
+   #        items:
+   #          - ramp:
+   #              tag: capacity
+   #              items:
+   #                - string:
+   #                    text: "  {capacity}%({estimate}) "
+   #                    deco: *bgcurg
+   #                - string:
+   #                    text: "  {capacity}%({estimate}) "
+   #                    deco: {stack: [ <<: *bgcblock, <<: *linebat]}
+   #                - string:
+   #                    text: "  {capacity}%({estimate}) "
+   #                    deco: {stack: [ <<: *bgcblock, <<: *linebat]}
+   #                - string:
+   #                    text: "  {capacity}%({estimate}) "
+   #                    deco: {stack: [ <<: *bgcblock, <<: *linebat]}
+   #                - string:
+   #                    text: "  {capacity}%({estimate}) "
+   #                    deco: {stack: [ <<: *bgcblock, <<: *linebat]}
+   #- script:   # tray
+   #    path: /home/dt/.config/yambar/scripts/yambar-tray
+   #    content:
+   #      empty: {}
+   #- script:
+   #    path: /home/dt/.config/yambar/scripts/yambar-tray-width
+   #    poll-interval: 10
+   #    content:
+   #      string:
+   #         text: "{padding}"
+   #         deco: *combmem
diff --git a/modules/home.legacy/conf/yambar/config/laptop.yml b/modules/home.legacy/conf/yambar/config/laptop.yml
new file mode 100644
index 00000000..8de2f508
--- /dev/null
+++ b/modules/home.legacy/conf/yambar/config/laptop.yml
@@ -0,0 +1,243 @@
+---
+# Config file for yambar
+# Note that this may be version-dependent, this file is written for v1.8.0
+
+
+# Font anchors
+font-main: &fontmain Source Code Pro:pixelsize=22
+font-aws: &awesome Font Awesome 5 Free:style=solid:pixelsize=20
+
+# Color anchors
+fg-none: &fgnone 00000000
+fg-1: &fg1 c6ceefff
+fg-blue: &fgblue 99d1dbff
+fg-sapphire: &fgsapp 74c7ecdd
+fg-green: &fggreen a6e3a1dd
+fg-peach: &fgpeach fab387dd
+fg-mauve: &fgmauve cba6f7dd
+fg-teal: &fgteal 94e2d5dd
+fg-lavendar: &fglav b4befedd
+fg-focus: &fgfocus e78284ff
+bg-1: &bg1 303446ff
+bg-tag: &bgtag 585b70ff
+bg-tag2: &bgtag2 45475aff
+bg-urgent: &bgurgent e78284ff
+
+# Background blocks
+background-block: &bgcblock {background: {color: *bg1 }}
+background-block-urgent: &bgcurg {background: {color: *bgurgent }}
+
+# Underlines
+underline-focused: &line {underline: { size: 3, color: *fgfocus}}
+underline-urgent: &lineurgent {underline: { size: 3, color: *fgblue}}
+underline-utils: &lineutil {underline: { size: 3, color: *fgpeach}}
+underline-resources: &linemem {underline: { size: 3, color: *fggreen}}
+underline-battery: &linebat {underline: { size: 3, color: *fgsapp}}
+underline-clock: &lineclock {underline: { size: 3, color: *fgteal}}
+underline-weather: &linewea {underline: { size: 3, color: *fglav}}
+underline-title: &linetitle {underline: { size: 3, color: *bgtag}}
+
+# Combined decorations
+combination-utils: &combutil {stack: [ <<: *bgcblock, <<: *lineutil]}
+combination-resources: &combmem {stack: [ <<: *bgcblock, <<: *linemem]}
+combination-battery: &combbat {stack: [ <<: *bgcblock, <<: *linebat]}
+combination-clock: &combclock {stack: [ <<: *bgcblock, <<: *lineclock]}
+combination-weather: &combwea {stack: [ <<: *bgcblock, <<: *linewea]}
+
+
+### Main
+
+bar:
+  location: top
+  height: 25
+  layer: bottom
+  spacing: 0
+  margin: 10
+  border: {margin: 0, top-margin: 5}
+  foreground: *fg1
+  background: *fgnone
+  font: *fontmain
+
+  ### Left, river tags
+  left:
+    - river:
+        anchors:
+          - id: &name { text: "{id}" }
+          - string: &focus { stack: [ {background: {color: *bg1}} ] }
+          - string: &normal { string: { <<: *name, margin: 10 } }
+          - string:
+              &occupied { string: { <<: *name, deco: {background: {color: *bgtag2}}, margin: 10 } }
+          - string: &urgent { string: { <<: *name, deco: {stack: [background: {color: *bgurgent}, <<: *lineurgent]}, margin: 10 } }
+          - string: &focused { string: { <<: *name, deco: {stack: [background: {color: *bgtag}, <<: *line]}, margin: 10 } }
+          - string: &unfocused { string: { <<: *name, deco: {background: {color: *bgtag2}}, margin: 10 } }
+          - base: &river_base
+              default: *normal
+              conditions:
+                state == focused: *focused
+                state == unfocused: *unfocused
+                state == urgent: *urgent
+                state == invisible:
+                  map:
+                    conditions:
+                      occupied: *occupied
+                      ~occupied: *normal
+        content:
+          map:
+            on-click:
+              left: sh -c "riverctl set-focused-tags $((1 << ({id} - 1)))"
+              right: sh -c "riverctl toggle-focused-tags $((1 << ({id} -1)))"
+              middle: sh -c "riverctl toggle-view-tags $((1 << ({id} -1)))"
+            conditions:
+              id == 1: { map: { <<: *river_base } }
+              id == 2: { map: { <<: *river_base } }
+              id == 3: { map: { <<: *river_base } }
+              id == 4: { map: { <<: *river_base } }
+              id == 5: { map: { <<: *river_base } }
+              id == 6: { map: { <<: *river_base } }
+              id == 7: { map: { <<: *river_base } }
+              id == 8: { map: { <<: *river_base } }
+              id == 9: { map: { <<: *river_base } }
+        title:
+          map:
+            default:
+              {
+                string:
+                  {
+                    text: "{title}",
+                    left-margin: 12,
+                    right-margin: 12,
+                    # max: 35,
+                    deco: *linetitle
+                  },
+              }
+            conditions:
+              title == "": { string: { text: "" } }
+
+  ### Center, clock & weather gadget
+  center:
+    - clock:
+        time-format: "%H:%M:%S %Z"
+        date-format: "%d/%m/%y (%a)"
+        foreground: *fgblue
+        content:
+          string:
+            text: " {date} {time} "
+            deco: *combclock
+
+  ### Right, system tray
+  right:
+    #- network:
+    #    name: wlp5s0
+    #    poll-interval: 10
+    #    content:
+    #      map:
+    #        on-click: /bin/sh -c "nmtui"
+    #        conditions:
+    #          ~carrier: {empty: {}}
+    #          carrier:
+    #            string: {text: "  {ssid} ", deco: *combutil}
+    #- network:
+    #    name: enp4s0
+    #    content:
+    #      map:
+    #        on-click: /bin/sh -c "nmtui"
+    #        conditions:
+    #          ~carrier:
+    #            string: {text: "  Eth failed ", deco: *combutil}
+    #          carrier: {empty: {}}
+
+    - script:   # mpd song name
+        path: @mpd_song_name_script@
+        content:
+          map:
+            conditions:
+              playing:
+                string: {text: "{song} ", deco: *combwea}
+              ~playing:
+                string: {text: "", deco: *combwea}
+    - script:   # Sound volume
+        path: @volume_script@
+        content:
+          map:
+            on-click: /bin/sh -c "pavucontrol"
+            conditions:
+              muted:
+                string:
+                  text: " 󰝟 "
+                  deco: *bgcurg
+              ~muted:
+                string: {text: "  {volume}% ", deco: *combutil}
+
+    # - script:   # Grade average
+    #     path: @grade_average_script@
+    #     content:
+    #       string:
+    #         text: "   {grade} "
+    #         deco: *combmem
+
+    - backlight:
+       name: @backlight@
+       content:
+         - string: {text: "  {percent}% ", deco: *combutil}
+
+    - script:   # CPU
+        path: @cpu_script@
+        content:
+          string:
+            text: "  {cpu}% "
+            deco: *combmem
+
+    - script:   # Memory info
+        path: @memory_script@
+        content:
+          map:
+            conditions:
+              swapstate:
+                string:
+                  text: "  {memperc}%({swapperc}%) "
+                  deco: *combmem
+              ~swapstate:
+                string:
+                  text: "  {memperc}% "
+                  deco: *combmem
+    - script:   # Disk space
+        path: @disk_script@
+        content:
+          string:
+            text: " 󰋊 {diskspace}({diskperc})"
+            deco: *combmem
+    - battery:
+        name: BAT0
+        poll-interval: 300
+        content:
+          list:
+            items:
+              - ramp:
+                  tag: capacity
+                  items:
+                    - string:
+                        text: "  {capacity}%({estimate}) "
+                        deco: *bgcurg
+                    - string:
+                        text: "  {capacity}%({estimate}) "
+                        deco: {stack: [ <<: *bgcblock, <<: *linebat]}
+                    - string:
+                        text: "  {capacity}%({estimate}) "
+                        deco: {stack: [ <<: *bgcblock, <<: *linebat]}
+                    - string:
+                        text: "  {capacity}%({estimate}) "
+                        deco: {stack: [ <<: *bgcblock, <<: *linebat]}
+                    - string:
+                        text: "  {capacity}%({estimate}) "
+                        deco: {stack: [ <<: *bgcblock, <<: *linebat]}
+   #- script:   # tray
+   #    path: /home/dt/.config/yambar/scripts/yambar-tray
+   #    content:
+   #      empty: {}
+   #- script:
+   #    path: /home/dt/.config/yambar/scripts/yambar-tray-width
+   #    poll-interval: 10
+   #    content:
+   #      string:
+   #         text: "{padding}"
+   #         deco: *combmem
diff --git a/modules/home.legacy/conf/yambar/default.nix b/modules/home.legacy/conf/yambar/default.nix
new file mode 100644
index 00000000..007e7f25
--- /dev/null
+++ b/modules/home.legacy/conf/yambar/default.nix
@@ -0,0 +1,50 @@
+{
+  nixosConfig,
+  sysLib,
+  pkgs,
+  lib,
+  ...
+}: let
+  makeScript = {
+    name,
+    dependencies,
+    ...
+  }:
+    sysLib.writeShellScript {
+      inherit name;
+      src = ./scripts/${name}.sh;
+      dependencies = dependencies ++ (builtins.attrValues {inherit (pkgs) dash;});
+    }
+    + "/bin/${name}";
+in {
+  xdg.configFile."yambar/config.yml".source = pkgs.substituteAll {
+    src =
+      if nixosConfig.soispha.laptop.enable
+      then ./config/laptop.yml
+      else ./config/config.yml;
+
+    backlight =
+      if nixosConfig.soispha.laptop.enable
+      then nixosConfig.soispha.laptop.backlight
+      else "";
+
+    mpd_song_name_script = makeScript {
+      dependencies = builtins.attrValues {inherit (pkgs) mpc-cli;};
+      name = "mpd_song_name";
+    };
+
+    volume_script = makeScript {
+      dependencies = builtins.attrValues {inherit (pkgs) pulseaudio gawk coreutils;};
+      name = "sound-volume";
+    };
+
+    cpu_script = lib.getExe pkgs.yambar-cpu;
+
+    memory_script = lib.getExe pkgs.yambar-memory;
+
+    disk_script = makeScript {
+      dependencies = builtins.attrValues {inherit (pkgs) gawk btrfs-progs coreutils;};
+      name = "disk";
+    };
+  };
+}
diff --git a/modules/home.legacy/conf/yambar/scripts/disk.sh b/modules/home.legacy/conf/yambar/scripts/disk.sh
new file mode 100755
index 00000000..a5547a74
--- /dev/null
+++ b/modules/home.legacy/conf/yambar/scripts/disk.sh
@@ -0,0 +1,21 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# Main loop
+while true; do
+    # vars
+    used_space=$(btrfs filesystem usage /srv 2>/dev/null | awk '{if ( /Used:/ ) { print $2 } } ' | head -n1)
+    all_space=$(btrfs filesystem usage /srv 2>/dev/null | awk '{if ( /Device size:/ ) { print $3 } } ' | head -n1 | tr -d "GiB")
+
+    # Check space available (4) and percentage used (5)
+    spaceperc=$(echo "$(echo "$used_space" | tr -d "GiB")" "$all_space" | awk '{div=$1/$2;div *= 100; printf"%2d%%\n",div }')
+
+    echo "diskspace|string|$used_space"
+    echo "diskperc|string|$spaceperc"
+    echo ""
+    sleep 1
+done
+
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/yambar/scripts/mpd_song_name.sh b/modules/home.legacy/conf/yambar/scripts/mpd_song_name.sh
new file mode 100755
index 00000000..7d294781
--- /dev/null
+++ b/modules/home.legacy/conf/yambar/scripts/mpd_song_name.sh
@@ -0,0 +1,21 @@
+#!/usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+while true; do
+    state="$(mpc status '%state%')"
+
+    if [ "$state" = "playing" ]; then
+        song="$(mpc --format '[[%artist% - ]%title%]|[%file%]' current)"
+        echo "playing|bool|true"
+        echo "song|string|$song :: $(mpc status "%currenttime%/%totaltime%")"
+    else
+        echo "playing|bool|false"
+    fi
+    echo "" # commit
+
+    sleep 2
+done
+
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/yambar/scripts/network.sh b/modules/home.legacy/conf/yambar/scripts/network.sh
new file mode 100755
index 00000000..adfc93df
--- /dev/null
+++ b/modules/home.legacy/conf/yambar/scripts/network.sh
@@ -0,0 +1,47 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+retest=120
+retest_if_con_fails=10
+backend=nmcli
+
+case "$backend" in
+"nmcli") # Test for connectivity with nmcli
+    while true; do
+        connection_status=$(nmcli networking connectivity)
+        if [ "$connection_status" = "full" ]; then
+            echo "internet|string|Connected"
+            echo ""
+            sleep $retest
+        else
+            echo "internet|string|Disconnected"
+            echo ""
+            sleep $retest_if_con_fails
+        fi
+    done
+    ;;
+"ping") # Test for connectivity with ping
+    ip_address='8.8.8.8'
+    ping_number=3
+
+    while true; do
+
+        ping_result=$(mktmp)
+        ping $ip_address -c $ping_number -q | awk 'BEGIN {FS="/"} END {print $5}' >"$ping_result"
+
+        if [ "$(wc -l <"$ping_result")" -eq 0 ]; then
+            echo "med|string|No connection"
+            echo ""
+            sleep $retest_if_con_fails
+        else
+            echo "med|string|$(cat "$ping_result") ms"
+            echo ""
+            sleep $retest
+        fi
+    done
+    ;;
+esac
+
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/yambar/scripts/sound-volume.sh b/modules/home.legacy/conf/yambar/scripts/sound-volume.sh
new file mode 100755
index 00000000..8a98daf7
--- /dev/null
+++ b/modules/home.legacy/conf/yambar/scripts/sound-volume.sh
@@ -0,0 +1,20 @@
+#! /usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+while true; do
+    volume="$(pactl get-sink-volume 0 | awk 'BEGIN { FS="/" } {gsub("%","",$2); gsub(" ","",$2)} {printf $2}')"
+
+    if [ "$volume" -eq 0 ]; then
+        echo "muted|bool|true"
+    else
+        echo "volume|string|$volume"
+        echo "muted|bool|false"
+    fi
+    echo ""
+
+    sleep 3
+done
+
+# vim: ft=sh
diff --git a/modules/home.legacy/conf/yt/config.toml b/modules/home.legacy/conf/yt/config.toml
new file mode 100644
index 00000000..981481d9
--- /dev/null
+++ b/modules/home.legacy/conf/yt/config.toml
@@ -0,0 +1,2 @@
+[download]
+max_cache_size = "5 GiB"
diff --git a/modules/home.legacy/conf/yt/default.nix b/modules/home.legacy/conf/yt/default.nix
new file mode 100644
index 00000000..507a0db1
--- /dev/null
+++ b/modules/home.legacy/conf/yt/default.nix
@@ -0,0 +1,5 @@
+{...}: {
+  xdg.configFile."yt/mpv.conf".source = ./mpv.conf;
+  xdg.configFile."yt/mpv.input.conf".source = ./input.conf;
+  xdg.configFile."yt/config.toml".source = ./config.toml;
+}
diff --git a/modules/home.legacy/conf/yt/input.conf b/modules/home.legacy/conf/yt/input.conf
new file mode 100644
index 00000000..f374f062
--- /dev/null
+++ b/modules/home.legacy/conf/yt/input.conf
@@ -0,0 +1,9 @@
+Q script-message yt-mark-watch-later
+c script-message yt-comments-external
+C script-message yt-comments-local
+d script-message yt-description
+WHEEL_LEFT playlist-prev
+WHEEL_RIGHT playlist-next
+q script-message yt-mark-done-and-go-next
+r script-message yt-check-new-videos
+P quit
diff --git a/modules/home.legacy/conf/yt/mpv.conf b/modules/home.legacy/conf/yt/mpv.conf
new file mode 100644
index 00000000..b6d2501f
--- /dev/null
+++ b/modules/home.legacy/conf/yt/mpv.conf
@@ -0,0 +1,2 @@
+speed=2.7
+volume=75
diff --git a/modules/home.legacy/conf/ytcc/default.nix b/modules/home.legacy/conf/ytcc/default.nix
new file mode 100644
index 00000000..87300ec1
--- /dev/null
+++ b/modules/home.legacy/conf/ytcc/default.nix
@@ -0,0 +1,11 @@
+{
+  config,
+  pkgs,
+  ...
+}: {
+  xdg.configFile."ytcc/ytcc.conf".source = pkgs.substituteAll {
+    src = ./ytcc.conf;
+    download_dir = "${config.xdg.userDirs.download}/ytcc";
+    xdg_data_home = config.xdg.dataHome;
+  };
+}
diff --git a/modules/home.legacy/conf/ytcc/ytcc.conf b/modules/home.legacy/conf/ytcc/ytcc.conf
new file mode 100644
index 00000000..289843ad
--- /dev/null
+++ b/modules/home.legacy/conf/ytcc/ytcc.conf
@@ -0,0 +1,37 @@
+[ytcc]
+download_dir = @download_dir@
+mpv_flags = --really-quiet --ytdl --ytdl-format=bestvideo[height<=?1080]+bestaudio/best --speed=2.7
+download_subdirs = true
+order_by = playlists:asc, publish_date:desc
+video_attrs = id, title, publish_date, duration, playlists
+playlist_attrs = name, url, tags, reverse
+db_path = @xdg_data_home@/ytcc/ytcc.db
+date_format = %Y-%m-%d
+max_update_fail = 5
+max_update_backlog = 20
+age_limit = 0
+
+[tui]
+alphabet = sdfervghnuiojkl
+default_action = play_video
+
+[theme]
+prompt_download_audio = 2
+prompt_download_video = 4
+prompt_play_audio = 2
+prompt_play_video = 4
+prompt_mark_watched = 1
+table_alternate_background = 245
+plain_label_text = 244
+
+[youtube_dl]
+format = bestvideo[height<=?1080]+bestaudio/best
+output_template = %(title)s.%(ext)s
+ratelimit = 0
+retries = 0
+subtitles = off
+thumbnail = true
+skip_live_stream = true
+merge_output_format = mkv
+max_duration = 0
+restrict_filenames = false
diff --git a/modules/home.legacy/conf/zsh/config/command_not_found.sh b/modules/home.legacy/conf/zsh/config/command_not_found.sh
new file mode 100644
index 00000000..fb21b676
--- /dev/null
+++ b/modules/home.legacy/conf/zsh/config/command_not_found.sh
@@ -0,0 +1,64 @@
+#!/usr/bin/env dash
+
+# This was taken from the
+# `${pkgs.nix-index}/etc/profile.d/command-not-found.sh` file on 2024-02-28
+
+# for bash 4
+# this will be called when a command is entered
+# but not found in the user’s path + environment
+command_not_found_handle() {
+    # taken from http://www.linuxjournal.com/content/bash-command-not-found
+    # - do not run when inside Midnight Commander or within a Pipe
+    if [ -n "${MC_SID-}" ] || ! [ -t 1 ]; then
+        >&2 echo "$1: command not found"
+        return 127
+    fi
+
+    toplevel=nixpkgs # nixpkgs should always be available even in NixOS
+    cmd="$1"
+    attrs=$(nix-locate --minimal --no-group --type x --type s --top-level --whole-name --at-root "/bin/$cmd")
+    len=$(if [ -n "$attrs" ]; then echo "$attrs" | wc -l; else echo 0; fi)
+
+    case "$len" in
+    0)
+        eprintln "$cmd: command not found"
+        ;;
+    1)
+        # If only one package provides this, then we can invoke it
+        # without asking the user.
+
+        # These will not return 127 if they worked correctly.
+
+        >&2 cat <<EOF
+The program '$cmd' is currently not installed. A shell will be opened
+with it.
+EOF
+        if nix build "$toplevel#$attrs" --no-link; then
+            nix shell "$toplevel#$attrs"
+            return $?
+        else
+            >&2 cat <<EOF
+Failed to build: '$toplevel#$attrs'
+$cmd: command not found
+EOF
+        fi
+        ;;
+    *)
+        >&2 cat <<EOF
+The program '$cmd' is currently not installed. It is provided by
+several packages. You can run it once with:
+EOF
+        awk --assign=toplevel="$toplevel" 'BEGIN{counter=0} {printf("%3s)", counter); printf("  nix shell %s#%s\n", toplevel, $1); counter+=1}' "$(ptmp "$attrs")"
+        ;;
+    esac
+
+    return 127 # command not found should always exit with 127
+}
+
+# for zsh...
+# we just pass it to the bash handler above
+# apparently they work identically
+command_not_found_handler() {
+    command_not_found_handle "$@"
+    return $?
+}
diff --git a/modules/home.legacy/conf/zsh/config/command_not_found_insult.sh b/modules/home.legacy/conf/zsh/config/command_not_found_insult.sh
new file mode 100644
index 00000000..5126845a
--- /dev/null
+++ b/modules/home.legacy/conf/zsh/config/command_not_found_insult.sh
@@ -0,0 +1,298 @@
+#! /usr/bin/env bash
+print_message() {
+
+    local messages
+    local message
+
+    ### STANDARD INSULTS ###
+    declare -a _array1=(
+        "(╯°□°)╯︵ ┻━┻"
+        "¯\_(ツ)_/¯"
+        "ACHTUNG! ALLES TURISTEN UND NONTEKNISCHEN LOOKENPEEPERS! DAS KOMPUTERMASCHINE IST NICHT FÜR DER GEFINGERPOKEN UND MITTENGRABEN! ODERWISE IST EASY TO SCHNAPPEN DER SPRINGENWERK, BLOWENFUSEN UND POPPENCORKEN MIT SPITZENSPARKEN. IST NICHT FÜR GEWERKEN BEI DUMMKOPFEN. DER RUBBERNECKEN SIGHTSEEREN KEEPEN DAS COTTONPICKEN HÄNDER IN DAS POCKETS MUSS. ZO RELAXEN UND WATSCHEN DER BLINKENLICHTEN."
+        "And the Darwin Award goes to.... ${USER}!"
+        "Allowing you to survive childbirth was medical malpractice."
+        "Are you always this stupid or are you making a special effort today?!"
+        "Are you even trying?!"
+        "Bad."
+        "Boooo!"
+        "Brains aren't everything. In your case they're nothing."
+        "Commands, random gibberish, who cares!"
+        "Come on! You can do it!"
+        "Don't you have anything better to do?!"
+        "Don't you know anything?"
+        "Dropped on your head as a baby, eh?"
+        "error code: 1D10T"
+        "Even your mom loves you only as a friend."
+        "ERROR_INCOMPETENT_USER"
+        "Fake it till you make it!"
+        "Go outside."
+        "Haha, n00b!"
+        "How many times do I have to flush before you go away?"
+        "I am _seriously_ considering 'rm -rf /'-ing myself..."
+        "I don't know what makes you so stupid, but it really works."
+        "I was going to give you a nasty look, but I see you already have one."
+        "If beauty fades then you have nothing to worry about."
+        "If brains were gasoline you wouldn’t have enough to propel a flea’s motorcycle around a doughnut."
+        "If ignorance is bliss, you must be the happiest person on earth."
+        "If shit was music, you'd be an orchestra."
+        "If what you don't know can't hurt you, you're invulnerable."
+        "Incompetence is also a form of competence"
+        "I’d slap you, but that’d be animal abuse."
+        "I’ve heard of being hit with the ugly stick, but you must have been beaten senseless with it."
+        "Keep trying, someday you'll do something intelligent!"
+        "Let’s play horse. I’ll be the front end. And you be yourself."
+        "Life is good, you should get one."
+        "lol"
+        "lol... plz"
+        "My keyboard is not a touch screen!"
+        "My uptime is longer than your relationships."
+        "Nice try."
+        "n00b alert!"
+        "Pathetic"
+        "Perhaps computers are not for you..."
+        "Perhaps you should leave the command line alone..."
+        "Please step away from the keyboard!"
+        "plz uninstall"
+        "Pro tip: type a valid command!"
+        "Rose are red. Violets are blue. I have five fingers. The middle one's for you."
+        "RTFM!"
+        "Sorry what? I don’t understand idiot language."
+        "The degree of your stupidity is enough to boil water."
+        "The worst one today!"
+        "This is not a search engine."
+        "This is not Windows"
+        "This is why nobody likes you."
+        "This is why you get to see your children only once a month."
+        "Try using your brain the next time!"
+        "Two wrongs don't make a right, take your parents as an example."
+        "Typing incorrect commands, eh?"
+        "u suk"
+        "What if... you type an actual command the next time!"
+        "What if I told you... it is possible to type valid commands."
+        "What is this...? Amateur hour!?"
+        "Why are you so stupid?!"
+        "Why are you doing this to me?!"
+        "Why did the chicken cross the road? To get the hell away from you."
+        "Wow! That was impressively wrong!"
+        "Y u no speak computer???"
+        "You are not as bad as people say, you are much, much worse."
+        "You are not useless since you can still be used as a bad example."
+        "You must have been born on a highway because that's where most accidents happen."
+        "Your application for reduced salary has been sent!"
+        "Your mom had a severe case of diarrhea when you were born."
+        "You're proof that god has a sense of humor."
+        "You’re so dumb your first words were DUH."
+        "You're so fat, people jog around you for exercise."
+        "You’re the reason Santa says ho, ho, ho, on Christmas!"
+    )
+    ### SHAKESPEARE INSULTS ###
+    declare -a array2=(
+        "A most notable coward, an infinite and endless liar, an hourly promise breaker, the owner of no one good quality."
+        "Away, you starvelling, you elf-skin, you dried neat's-tongue, bull's-pizzle, you stock-fish!"
+        "Away, you three-inch fool! "
+        "Come, come, you froward and unable worms!"
+        "Go, prick thy face, and over-red thy fear, Thou lily-liver’d boy."
+        "His wit's as thick as a Tewkesbury mustard."
+        "I am pigeon-liver'd and lack gall."
+        "I am sick when I do look on thee "
+        "I must tell you friendly in your ear, sell when you can, you are not for all markets."
+        "If thou wilt needs marry, marry a fool; for wise men know well enough what monsters you make of them."
+        "I'll beat thee, but I would infect my hands."
+        "I scorn you, scurvy companion. "
+        "Methink'st thou art a general offence and every man should beat thee."
+        "More of your conversation would infect my brain."
+        "My wife's a hobby horse!"
+        "Peace, ye fat guts!"
+        "Poisonous bunch-backed toad! "
+        "The rankest compound of villainous smell that ever offended nostril"
+        "The tartness of his face sours ripe grapes."
+        "There's no more faith in thee than in a stewed prune."
+        "Thine forward voice, now, is to speak well of thine friend; thine backward voice is to utter foul speeches and to detract."
+        "That trunk of humours, that bolting-hutch of beastliness, that swollen parcel of dropsies, that huge bombard of sack, that stuffed cloak-bag of guts, that roasted Manningtree ox with pudding in his belly, that reverend vice, that grey Iniquity, that father ruffian, that vanity in years?"
+        "Thine face is not worth sunburning."
+        "This woman's an easy glove, my lord, she goes off and on at pleasure."
+        "Thou art a boil, a plague sore."
+        "Was the Duke a flesh-monger, a fool and a coward?"
+        "Thou art as fat as butter."
+        "Here is the babe, as loathsome as a toad."
+        "Like the toad; ugly and venomous."
+        "Thou art unfit for any place but hell."
+        "Thou cream faced loon"
+        "Thou clay-brained guts, thou knotty-pated fool, thou whoreson obscene greasy tallow-catch!"
+        "Thou damned and luxurious mountain goat."
+        "Thou elvish-mark'd, abortive, rooting hog!"
+        "Thou leathern-jerkin, crystal-button, knot-pated, agatering, puke-stocking, caddis-garter, smooth-tongue, Spanish pouch!"
+        "Thou lump of foul deformity"
+        "That poisonous bunch-back'd toad!"
+        "Thou sodden-witted lord! Thou hast no more brain than I have in mine elbows "
+        "Thou subtle, perjur'd, false, disloyal man!"
+        "Thou whoreson zed , thou unnecessary letter!"
+        "Thy sin’s not accidental, but a trade."
+        "Thy tongue outvenoms all the worms of Nile."
+        "Would thou wert clean enough to spit upon"
+        "Would thou wouldst burst!"
+        "You poor, base, rascally, cheating lack-linen mate! "
+        "You are as a candle, the better burnt out."
+        "You scullion! You rampallian! You fustilarian! I’ll tickle your catastrophe!"
+        "You starvelling, you eel-skin, you dried neat's-tongue, you bull's-pizzle, you stock-fish-O for breath to utter what is like thee!-you tailor's-yard, you sheath, you bow-case, you vile standing tuck!"
+        "Your brain is as dry as the remainder biscuit after voyage."
+        "Virginity breeds mites, much like a cheese."
+        "Villain, I have done thy mother"
+    )
+    ### MARTIN LUTHER INSULTS ###
+    declare -a array3=(
+        "You live like simple cattle or irrational pigs and, despite the fact that the gospel has returned, have mastered the fine art of misusing all your freedom."
+        "You shameful gluttons and servants of your bellies are better suited to be swineherds and keepers of dogs."
+        "You deserve not only to be given no food to eat, but also to have the dogs set upon you and to be pelted with horse manure."
+        "Oh, what mad senseless fools you are!"
+        "For this you deserve to have God deprive you of his Word and blessing and once again allow preachers of lies to arise who lead you to the devil - and wring sweat and blood out of you besides."
+        "All your holiness is only stench and filth, and it merits nothing but wrath and damnation."
+        "May your grain spoil in the barn, your beer in the cellar, your cattle perish in the stall. Yes, your entire hoard ought to be consumed by rust so that you will never enjoy it."
+        "You relish and delight in the chance to stir up someone else's dirt like pigs that roll in manure and root around in it with their snouts."
+        "Your sin smells to high heaven."
+        "Your words are so foolishly and ignorantly composed that I cannot believe you understand them."
+        "You are the most insane heretics and ingrafters of heretical perversity."
+        "What you say is a blasphemy that has made you worthy of a thousand deaths."
+        "Behold, indeed, this little golden work of a golden teacher! It is a work most worthy of golden letters, and lest there be something about it which is not golden, it must be handed down by golden disciples, namely, by those about whom it is said, 'The idols of the nations are silver and gold. They have eyes, but they see not.'"
+        "You are worthy only to be mocked by the words of error."
+        "It is presumptuous for people who are as ignorant as you are not to take up the work of a herdsman."
+        "What bilgewater of heresies has ever been spoken so heretically as what you have said?"
+        "What do you mean when you say this? Are you dreaming in the throes of a fever or are you laboring under a madness?"
+        "Your astute minds have been completely turned into stinking mushrooms."
+        "You are the prostitute of heretics!"
+        "I am tired of the pestilent voice of your sirens."
+        "You are a bungling magpie, croaking loudly."
+        "You forgot to purge yourself with hellabore while you were preparing to fabricate this lie."
+        "You are more corrupt than any Babylon or Sodom ever was, and, as far as I can see, are characterized by a completely depraved, hopeless, and notorious godlessness."
+        "Your home, once the holiest of all, has become the most licentious den of thieves, the most shameless of all brothels, the kingdom of sin, death, and hell. It is so bad that even Antichrist himself, if he should come, could think of nothing to add to its wickedness."
+        "What devilish unchristian thing would you not undertake?"
+        "You are an extraordinary creature, being neither God nor man. Perhaps you are the devil himself."
+        "Even if the Antichrist appears, what greater evil can he do than what you have done and do daily?"
+        "It may be that you want to build yourself a heaven of your own, like those jugglers build themselves out of linen cloth at the Shrove Tuesday carnival. Is it not disgusting that we have to hear such foolish and childish things from you?"
+        "In our country, fruit grows on trees and from trees, and meditation upon sin grows from contrition. But in your land, trees may grow on fruits, contrition from sins, people walk on their ears, and everything is upside down."
+        "O you wolf in Christendom!"
+        "You know less than does a log on the ground."
+        "I think that all the devils have at once entered into you."
+        "You are worse than all the devils. What you have done, no devil has ever done. Your end is near, you son of perdition and Antichrist! Stop now, you are going to far!"
+        "You are the true, chief, and final Antichrist."
+        "How far will you go, O devilish pride?"
+        "All Christians should be on guard against your antichristian poison."
+        "I think you received these ideas in your pipe dreams."
+        "You are in all you do the very opposite of Christ as befits a true Antichrist."
+        "You are a person of sin and the child of perdition, leading all the world with you to the devil, using your lying and deceitful ways."
+        "You are not a pious fraud, but an infernal, diabolical, antichristian fraud."
+        "You are the Roman Nimrod and a teacher of sin."
+        "It is the old dragon from the abyss of hell who is standing before me!"
+        "You hold fast to human dreams and the doctrines of devils."
+        "If you who are assembled in a council are so frivolous and irresponsible as to waste time and money on unnecessary questions, when it is the business of a council to deal only with the important and necessary matters, we should not only refuse to obey you, but consider you insane or criminals."
+        "Even Lucifer was not guilty of so great a sacrilege in heaven, for he only presumed to be God's equal. God help us!"
+        "You condemned the holy gospel and replaced it with the teaching of the dragon from hell."
+        "Your words are un-Christian, antichristian, and spoken by the inspiration of the evil spirit."
+        "What happened to the house built on sand in Matthew 7 will also happen to you."
+        "Must we believe your nightmares?"
+        "Look how this great heretic speaks brazenly and sacrilegiously."
+        "You run against God with the horns of your pride up in the air and thus plunge into the abyss of hell. Woe unto you, Antichrist!"
+        "You are the devil's most dangerous tool!"
+        "It seems I must have liars and villains for opponents. I am not worthy in the sight of God that a godly and honorable person should discuss these matters with me in a Christian way. This is my greatest lament."
+        "May the Lord Jesus protect me and all devout souls from your contagion and your company!"
+        "This venom - the mere smell of which kills a man!"
+        "You are a Baal-zebub - that is, a man of flies."
+        "You are full of poisonous refuse and insane foolishness."
+        "You are ignorant, stupid, godless blasphemers."
+        "You moderate enforcer and eulogizer of moderation. You are one of those bloody and deceitful people who affect modesty in words and appearance, but who meanwhile breathe out threats and blood."
+        "We leave you to your own devices, for nothing properly suits you except hypocrisy, flattery, and lies."
+        "In lying fashion you ignore what even children know."
+        "The reward of such flattery is what your crass stupidity deserves. Therefore, we shall turn from you, a sevenfold stupid and blasphemous wise person."
+        "People of your sort are hirelings, dumb dogs unable to bark, who see the wolf coming and flee or, rather, join up with the wolf."
+        "You are a wolf and apostle of Satan."
+        "You are the ultimate scourges of the world, the Antichrist together with your sophists and bishops."
+        "You cowardly slave, you corrupt sycophant, with your sickening advice!"
+        "You are idiots and swine."
+        "Every letter of yours breathes Moabitish pride. So much can a single bull inflate a single bubble that you practically make distinguished asses into gods."
+        "You sophistic worms, grasshoppers, locusts, frogs and lice!"
+        'You completely close your mind and do nothing but shout, "Anathema, anathema, anathema!" so that by your own voice you are judged mad.'
+        "Let this generation of vipers prepare itself for unquenchable fire!"
+        "You rush forward as an ass under the pelt of a lion."
+        "In appearance and words you simulate modesty, but you are so swollen with haughtiness, arrogance, pride, malice, villainy, rashness, superciliousness, ignorance, and stupidity that there is nothing to surpass you."
+        "Blind moles!"
+        "We despise your whorish impudence."
+    )
+    ### EDIT THIS LINE IF YOU ONLY WANT TO USE CERTAIN INSULT LISTS ###
+    messages=(
+        # "${array1[@]}" ## normal ones
+        "${array2[@]}" ## Shakespeare
+        "${array3[@]}" ## Luther
+    )
+
+    # If CMD_NOT_FOUND_MSGS array is populated use those messages instead of the defaults
+    [[ -n ${CMD_NOT_FOUND_MSGS} ]] && messages=("${CMD_NOT_FOUND_MSGS[@]}")
+
+    # If CMD_NOT_FOUND_MSGS_APPEND array is populated append those to the existing messages
+    [[ -n ${CMD_NOT_FOUND_MSGS_APPEND} ]] && messages+=("${CMD_NOT_FOUND_MSGS_APPEND[@]}")
+
+    # Seed RANDOM with an integer of some length
+    RANDOM=$(od -vAn -N4 -tu </dev/urandom)
+
+    # Print a randomly selected message, but only about half the time to annoy the user a
+    # little bit less.
+    if [[ $((RANDOM % 2)) -lt 1 ]]; then
+        message=${messages[RANDOM % ${#messages[@]}]}
+        printf "\n  %s%s%s\n\n" "$(tput bold)$(tput setaf 1)" "$message" "$(tput sgr0)" >&2
+    fi
+}
+
+function_exists() {
+    # Zsh returns 0 even on non existing functions with -F so use -f
+    declare -f "$1" >/dev/null
+    return $?
+}
+
+#
+# The idea below is to copy any existing handlers to another function
+# name and insert the message in front of the old handler in the
+# new handler. By default, neither bash or zsh has has a handler function
+# defined, so the default behaviour is replicated.
+#
+# Also, ensure the handler is only copied once. If we do not ensure this
+# the handler would add itself recursively if this file happens to be
+# sourced multiple times in the same shell, resulting in a neverending
+# stream of messages.
+#
+
+#
+# Zsh
+#
+if function_exists command_not_found_handler; then
+    if ! function_exists orig_command_not_found_handler; then
+        eval "orig_$(declare -f command_not_found_handler)"
+    fi
+else
+    orig_command_not_found_handler() {
+        printf "zsh: command not found: %s\n" "$1" >&2
+        return 127
+    }
+fi
+
+command_not_found_handler() {
+    print_message
+    orig_command_not_found_handler "$@"
+}
+
+#
+# Bash
+#
+if function_exists command_not_found_handle; then
+    if ! function_exists orig_command_not_found_handle; then
+        eval "orig_$(declare -f command_not_found_handle)"
+    fi
+else
+    orig_command_not_found_handle() {
+        printf "%s: %s: command not found\n" "$0" "$1" >&2
+        return 127
+    }
+fi
+
+command_not_found_handle() {
+    print_message
+    orig_command_not_found_handle "$@"
+}
diff --git a/modules/home.legacy/conf/zsh/config/custom_cursor.zsh b/modules/home.legacy/conf/zsh/config/custom_cursor.zsh
new file mode 100644
index 00000000..37390c1c
--- /dev/null
+++ b/modules/home.legacy/conf/zsh/config/custom_cursor.zsh
@@ -0,0 +1,42 @@
+#!/usr/bin/env zsh
+
+# Change cursor shape for different vi modes.
+function zle-keymap-select {
+  if [[ ${KEYMAP} == vicmd ]] ||
+     [[ $1 = 'block' ]]; then
+    echo -ne '\e[1 q'
+  elif [[ ${KEYMAP} == main ]] ||
+       [[ ${KEYMAP} == viins ]] ||
+       [[ ${KEYMAP} = '' ]] ||
+       [[ $1 = 'beam' ]]; then
+    echo -ne '\e[5 q'
+  fi
+}
+zle -N zle-keymap-select
+
+# ci", ci', ci`, di", etc
+autoload -U select-quoted
+zle -N select-quoted
+for m in visual viopp; do
+  for c in {a,i}{\',\",\`}; do
+    bindkey -M "$m" "$c" select-quoted
+  done
+done
+
+# ci{, ci(, ci<, di{, etc
+autoload -U select-bracketed
+zle -N select-bracketed
+for m in visual viopp; do
+  for c in {a,i}${(s..)^:-'()[]{}<>bB'}; do
+    bindkey -M $m $c select-bracketed
+  done
+done
+
+zle-line-init() {
+    zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
+    echo -ne "\e[5 q"
+}
+zle -N zle-line-init
+
+echo -ne '\e[5 q' # Use beam shape cursor on startup.
+precmd() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt.
diff --git a/modules/home.legacy/conf/zsh/config/zsh-init.zsh b/modules/home.legacy/conf/zsh/config/zsh-init.zsh
new file mode 100644
index 00000000..cd8d34a9
--- /dev/null
+++ b/modules/home.legacy/conf/zsh/config/zsh-init.zsh
@@ -0,0 +1,42 @@
+#!/usr/bin/env zsh
+# If not running interactively, don't do anything
+[[ $- != *i* ]] && return
+
+# Flex on the ubuntu users
+#[ "$NVIM" ] || hyfetch
+[ "$NVIM" ] || task next
+#loginctl show-session $XDG_SESSION_ID
+
+## Enable colors and change prompt:
+#autoload -Uz colors && colors
+#autoload -Uz compinit && compinit -u
+## Edit line in vim buffer ctrl-v
+autoload -Uz edit-command-line
+zle -N edit-command-line
+## Enter vim buffer from normal mode
+#autoload -Uz edit-command-line && zle -N edit-command-line
+bindkey "^V" edit-command-line
+
+## zstyles
+#zstyle ':completion:*' menu select
+## Auto complete with case insensitivity
+#zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
+
+#zmodload zsh/complist
+#fpath+=/home/dt/.config/zsh/comp
+#compinit
+#_comp_options+=(globdots)		# Include hidden files.
+#
+## Source configs
+#source "${ZDOTDIR}/ali.sh"
+#source "${ZDOTDIR}/prompt.sh"
+#source "${ZDOTDIR}/hotkeys.sh"
+#source "./${path_custom_cursor}"
+#source ~/.local/lib/shell/lib
+#
+## Load zsh-syntax-highlighting
+#source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
+## Suggest aliases for commands
+#source /usr/share/zsh/plugins/zsh-you-should-use/you-should-use.plugin.zsh
+#
+##eval "$(lua ~/scripts/z.lua --init zsh enhanced)"
diff --git a/modules/home.legacy/conf/zsh/default.nix b/modules/home.legacy/conf/zsh/default.nix
new file mode 100644
index 00000000..f5c65081
--- /dev/null
+++ b/modules/home.legacy/conf/zsh/default.nix
@@ -0,0 +1,103 @@
+{
+  config,
+  pkgs,
+  lib,
+  shell_library,
+  system,
+  ...
+}: {
+  # TODO: ADD THIS ADDON
+  # next one only works if your alias is only a command, e.g. if you `alias='cat some_file.txt &2> /dev/null'`, running `cat some_file.txt` won't trigger it.
+  # TODO: find something better for this use case
+  # zsh-you-should-use # ZSH plugin that reminds you to use existing aliases for commands you just typed
+  home.sessionPath = [];
+  programs.zsh = {
+    enable = true;
+    autosuggestion.enable = true;
+    enableCompletion = true;
+    syntaxHighlighting.enable = true;
+
+    autocd = true;
+
+    dotDir = ".config/zsh";
+
+    history = {
+      extended = true;
+      ignoreDups = false;
+      expireDuplicatesFirst = false;
+      ignoreSpace = false; # TODO: I might change that
+
+      path = "${config.xdg.dataHome}/zsh/history";
+      save = 9000000; # number of lines to save
+      size = 9000000; # number of lines to keep
+      share = false; # share between sessions
+    };
+    historySubstringSearch = {
+      enable = true;
+      searchDownKey = "^[[B"; # DOWN Arrow key
+      searchUpKey = "^[[A"; # UP Arrow key
+    };
+
+    loginExtra =
+      ""
+      + lib.concatStringsSep "\nsetopt " [
+        "setopt AUTO_CD" # This is needed as first item
+        "AUTO_PUSHD"
+        "CHASE_DOTS"
+
+        "ALWAYS_TO_END"
+
+        "EXTENDED_HISTORY"
+        "HIST_ALLOW_CLOBBER"
+        "HIST_VERIFY"
+        "HIST_FCNTL_LOCK"
+        "APPEND_HISTORY"
+
+        "DVORAK"
+        "CORRECT"
+
+        "PROMPT_SUBST"
+        "TRANSIENT_RPROMPT" # maybe?
+
+        "COMBINING_CHARS"
+        "VI"
+      ];
+
+    initExtraFirst =
+      builtins.readFile ./config/zsh-init.zsh
+      + ''
+        SHELL_LIBRARY_VERSION="2.1.2" source ${shell_library.rawLib.${system}}
+        # This next line buffers the first line of the following item:
+
+      ''
+      # NOTE: This must be before the insult, as we otherwise override the previous handler <2024-02-28>
+      + builtins.readFile ./config/command_not_found.sh
+      + builtins.readFile ./config/command_not_found_insult.sh
+      + builtins.readFile ./config/custom_cursor.zsh
+      + builtins.readFile "${pkgs.fzf}/share/fzf/key-bindings.zsh";
+
+    shellAliases = {
+      ll = ". ll";
+      lm = ". lm";
+
+      hisea = "history 0 | grep";
+    };
+    sessionVariables = {
+      IVIEWER = "imv";
+      READER = "zathura";
+
+      LIBVIRT_DEFAULT_URI = "qemu:///system";
+
+      BEMENU_SCALE = "1.5";
+      BEMENU_BACKEND = "wayland";
+      BEMENU_OPTS = "--fn 'Source Code Pro 10' -c -l 30 -B 1 -W 0.9 --hf #ffffff";
+
+      # Export Wayland env Vars {{{
+      QT_QPA_PLATFORM = "wayland";
+      QT_QPA_PLATFORMTHEME = "qt5ct"; # needs qt5ct
+      CLUTTER_BACKEND = "wayland";
+      SDL_VIDEODRIVER = "wayland"; # might brake some things
+      # }}}
+    };
+  };
+}
diff --git a/modules/home.legacy/default.nix b/modules/home.legacy/default.nix
new file mode 100644
index 00000000..574ed66a
--- /dev/null
+++ b/modules/home.legacy/default.nix
@@ -0,0 +1,60 @@
+{
+  impermanence,
+  nixVim,
+  nix-index-database,
+  ...
+}: let
+  username = "soispha";
+  homeDirectory = "/home/${username}";
+
+  # xdg
+  configHome = "${homeDirectory}/.config";
+  dataHome = "${homeDirectory}/.local/share";
+  stateHome = "${homeDirectory}/.local/state";
+  cacheHome = "${homeDirectory}/.cache";
+  binHome = "${homeDirectory}/.local/bin";
+  # TODO: add XDG_RUNTIME_DIR
+in {
+  imports = [
+    ./conf
+    ./files
+    ./impermanence
+    ./pkgs
+    ./wms
+
+    impermanence.nixosModules.home-manager.impermanence
+    nixVim.homeManagerModules.nixvim
+    nix-index-database.hmModules.nix-index
+  ];
+
+  # I don't know what this does, but I've seen it a lot online, so it should be good, right?
+  programs.home-manager.enable = true;
+
+  home = {
+    inherit username homeDirectory;
+    stateVersion = "23.05";
+    enableNixpkgsReleaseCheck = true;
+  };
+  xdg = {
+    enable = true;
+    inherit configHome dataHome stateHome cacheHome; #binHome; # TODO: add binHome, when the standard is extended
+
+    /*
+    TODO: add this
+    desktopEntries = {};
+    */
+
+    userDirs = {
+      enable = true;
+      createDirectories = true;
+      desktop = null;
+      documents = "${homeDirectory}/school/general";
+      download = "${homeDirectory}/media/downloads";
+      music = "${homeDirectory}/media/music";
+      pictures = "${homeDirectory}/media/pictures";
+      videos = "${homeDirectory}/media/videos";
+      templates = "${homeDirectory}/media/templates";
+      publicShare = "${homeDirectory}/media/public";
+    };
+  };
+}
diff --git a/modules/home.legacy/files/default.nix b/modules/home.legacy/files/default.nix
new file mode 100644
index 00000000..16fe9afe
--- /dev/null
+++ b/modules/home.legacy/files/default.nix
@@ -0,0 +1,6 @@
+{...}: {
+  imports = [
+    ./wallpaper
+    ./manifest_json
+  ];
+}
diff --git a/modules/home.legacy/files/manifest_json/default.nix b/modules/home.legacy/files/manifest_json/default.nix
new file mode 100644
index 00000000..af8d85d2
--- /dev/null
+++ b/modules/home.legacy/files/manifest_json/default.nix
@@ -0,0 +1,16 @@
+{
+  config,
+  lib,
+  ...
+}: {
+  home = {
+    activation = {
+      addManifestJson =
+        lib.hm.dag.entryAfter ["writeBoundary"]
+        ''
+          [ -L "${config.xdg.stateHome}/nix/profiles/profile" ] && $DRY_RUN_CMD rm $VERBOSE_ARG "${config.xdg.stateHome}/nix/profiles/profile"
+          $DRY_RUN_CMD ln -s $DRY_RUN_CMD "${./profile}" "${config.xdg.stateHome}/nix/profiles/profile"
+        '';
+    };
+  };
+}
diff --git a/modules/home.legacy/files/manifest_json/profile/manifest.json b/modules/home.legacy/files/manifest_json/profile/manifest.json
new file mode 100644
index 00000000..bd74d935
--- /dev/null
+++ b/modules/home.legacy/files/manifest_json/profile/manifest.json
@@ -0,0 +1,4 @@
+{
+    "elements": [],
+    "version": 2
+}
diff --git a/modules/home.legacy/files/wallpaper/abstract-nord.png b/modules/home.legacy/files/wallpaper/abstract-nord.png
new file mode 100644
index 00000000..5ef498bf
--- /dev/null
+++ b/modules/home.legacy/files/wallpaper/abstract-nord.png
Binary files differdiff --git a/modules/home.legacy/files/wallpaper/default.nix b/modules/home.legacy/files/wallpaper/default.nix
new file mode 100644
index 00000000..119df225
--- /dev/null
+++ b/modules/home.legacy/files/wallpaper/default.nix
@@ -0,0 +1,14 @@
+{config, ...}: {
+  home = {
+    sessionVariables = {
+      WALLPAPER = "${config.home.homeDirectory}/media/pictures/wallpaper";
+    };
+
+    file = {
+      wallpaper = {
+        source = ./abstract-nord.png;
+        target = "media/pictures/wallpaper";
+      };
+    };
+  };
+}
diff --git a/modules/home.legacy/impermanence/default.nix b/modules/home.legacy/impermanence/default.nix
new file mode 100644
index 00000000..dcb60f3b
--- /dev/null
+++ b/modules/home.legacy/impermanence/default.nix
@@ -0,0 +1,29 @@
+{
+  lib,
+  nixosConfig,
+  ...
+}: {
+  config = lib.mkIf nixosConfig.soispha.impermanence.enable {
+    home.persistence."/srv/home/soispha" = {
+      allowOther = true;
+      directories = [
+        ".local/share"
+
+        ".local/state/nvim"
+        ".local/state/mpv"
+        ".local/state/wireplumber"
+
+        ".config/Signal"
+        ".config/Element"
+        ".config/iamb/profiles"
+
+        ".cache"
+        ".mozilla"
+
+        "media"
+        "repos"
+        "school"
+      ];
+    };
+  };
+}
diff --git a/modules/home.legacy/pkgs/default.nix b/modules/home.legacy/pkgs/default.nix
new file mode 100644
index 00000000..ad77c5fb
--- /dev/null
+++ b/modules/home.legacy/pkgs/default.nix
@@ -0,0 +1,240 @@
+{
+  pkgs,
+  lib,
+  config,
+  nixosConfig,
+  ...
+}:
+with pkgs; let
+  onlyShare = drv:
+    runCommand "${drv.name}-only-share" {} ''
+      mkdir -p $out
+      ln -s ${drv}/share $out/share
+    '';
+  mpc-cli-man = onlyShare mpc-cli;
+
+  Gui = {
+    Terminals = [
+      # foot # wayland native terminal
+      alacritty # default terminal
+    ];
+    Browsers = [
+      #ungoogled-chromium # web browser (only for web programming)
+      #brave
+    ];
+
+    ImageManipulation = [
+      #krita # new, and better (KDE)
+      #gimp # conservative, and old (GNOME)
+    ];
+
+    Social = [
+      mumble # voice chat software (client)
+      # lutris # multiple game store clients
+
+      # nheko # best matrix client (as of today)
+      # element-desktop  # nheko didn't work
+      signal-desktop # to avoid encryption problems with signal-bridge
+    ];
+
+    Misc = [
+      #kalzium # Periodic Table of Elements (`element` is [sort of] better)
+      keepassxc # password manager
+      #onlykey # OnlyKey Chrome Desktop App
+      anki-bin # spaced repetition
+    ];
+  };
+
+  TuiCli = {
+    EyeCandy = [
+      #banner # Print large banners to ASCII terminals
+      cmatrix # A curses-based scrolling 'Matrix'-like screen
+      hyfetch # Neofetch with LGBTQ pride flags.
+    ];
+
+    Social = [
+      iamb # best tui matrix client (as of today)
+    ];
+
+    Pdfs = [
+      con2pdf # Scanner implementation
+    ];
+
+    Misc = [
+      android-file-transfer # Android MTP client with minimalistic UI
+      #xdg-ninja # A shell script which checks your $HOME for unwanted files and directories.
+      xdg-utils # open urls and such things
+      yokadi # Command line oriented, sqlite powered, todo list
+      killall # kill a application by name
+      snap-sync-forked # A btrfs based backup solution
+      bc # Smart calculator
+      aumo # Automatic mount
+      nato # Encodes a string in the standardized spelling alphabet
+      virsh-del # Delete a libvirt virtual machine (not really used anymore).
+      jq # Json parser
+    ];
+
+    Task = {
+      StartStop = [
+        hibernate # Hibernate wrapper that automatically stops all active task
+        lock # Same as `hibernate`, but for locking
+      ];
+
+      Firefox = [
+        # `neorg` handles the integration between Firefox profiles and task
+        # contexts
+        (neorg.override
+          {
+            defaultNeorgProjectDir = config.programs.nixvim.plugins.neorg.modules."core.dirman".config.workspaces.projects;
+            allProjectsNewline = config.soispha.taskwarrior.projects.projects_newline;
+            allProjectsComma = config.soispha.taskwarrior.projects.projects_comma;
+            allProjectsPipe = config.soispha.taskwarrior.projects.projects_pipe;
+            allWorkspaces = config.programs.nixvim.plugins.neorg.modules."core.dirman".config.workspaces;
+            xdgConfigHome = config.xdg.configHome;
+            xdgDataHome = config.xdg.dataHome;
+          })
+      ];
+    };
+
+    WM = {
+      river = [river]; # A dynamic tiling wayland compositor
+
+      CLITools = [
+        lswt # List Wayland toplevels.
+        wl-clipboard # Command-line copy/paste utilities.
+        swaylock # My current lockscreen implementation.
+      ];
+
+      Media = [
+        wf-recorder # Screen recorder.
+        libnotify # a command to send a notification.
+        screenshot_persistent # Creates a persisting screenshot.
+        screenshot_temporary # Takes a screenshot and stores it in the clipboard.
+      ];
+    };
+
+    Media = {
+      View = [
+        imv # Image viewer
+        zathura # PDF viewer
+      ];
+
+      YouTube = [
+        yti # Wrapper around `yt-dlp`.
+        yt # A command line YouTube client
+      ];
+
+      Listen = [
+        spodi # Wrapper around `spotdl`.
+        ncmpc # mpd player client
+        mpc-cli-man # a cli mpd client (added via a wrapper script)
+        mpc # Wrapper around `mpc` that allows the usage of `mpc-{rm,lyrics,searchadd}` without the `-`
+        # Removes the currently playing song from the disk and storage
+        (mpc-beetrm.override {
+          beets = config.programs.beets.package;
+        })
+        # Works like normal `mpc searchadd` but uses the `beets` query syntax
+        (mpc-searchadd.override {
+          beets = config.programs.beets.package;
+        })
+        # Displays the lyrics of the currently playing song
+        (mpc-lyrics.override {
+          mpd_music_dir = config.services.mpd.musicDirectory;
+        })
+        sort_song # Sorts songs in the current directory.
+      ];
+    };
+
+    Hardware = {
+      Storage = [
+        #compsize # Calculate compression ratio of a set of files on Btrfs
+        # TODO: smartmontools # Control and monitor S.M.A.R.T. enabled ATA and SCSI Hard Drives
+      ];
+
+      Battery = [
+        battery # Check the battery level
+      ];
+
+      # TODO: Also support setting the brightness with multiple backlights <2024-05-24>
+      Backlight =
+        lib.optional nixosConfig.soispha.laptop.enable
+        (
+          # Set the brightness level
+          brightness.override
+          {
+            backlightName = nixosConfig.soispha.laptop.backlight;
+          }
+        );
+
+      Input = [
+        #piper # GTK application to configure gaming mice
+      ];
+    };
+
+    SystemUpdate = [
+      fupdate # Generic update tool.
+      update-sys # System update tool (meant to slot into `fupdate`).
+    ];
+
+    FileListers = [
+      tree # A directory listing program displaying a depth indented list of files
+      fd # Simple, fast and user-friendly alternative to find
+      ripgrep # A search tool that combines the usability of ag with the raw speed of grep
+      fzf # used to quickly move around with its keybindings
+      file # Show information about a file
+      ll # Wrapper around `lf` to automatically change the path
+      lm # Wrapper around `ll` to automatically cd to the last accessed path
+      show # Wrapper around `less` to show a file (similar to the `cat <FILE>` pattern).
+    ];
+
+    Editors = [
+      ed # A POSIX-compliant line-oriented text editor
+      #sed # GNU stream editor
+      vim # The original ex/vi text editor (this is `vim` and not `vi`, as `vi` is unfree)
+      #neovim # Fork of Vim aiming to improve user experience, plugins, and GUIs
+    ];
+
+    Programming = {
+      GeneralTools = [
+        stamp # Add a license header to a file
+        git # the fast distributed version control system
+        git-absorb # git commit --fixup, but automatic
+        git-edit-index # Allows you to edit the indexed version of a file
+        git-cm # A wrapper that re-adds the last commit's subject
+        git-cleanup # An automatic merged branch deleter
+        glow # Command-line markdown renderer
+      ];
+    };
+  };
+  # TODO: unmaintained, find sth else:
+  # handlr # Powerful alternative to xdg-utils written in Rust
+  mapFun = x:
+    if builtins.isAttrs x
+    then
+      if lib.isDerivation x
+      then [x]
+      else builtins.attrValues x
+    else [x];
+in {
+  home.packages =
+    []
+    ++ (with builtins;
+      concatLists
+      (concatLists [
+        (concatMap mapFun
+          (concatMap mapFun
+            (concatMap mapFun
+              (concatMap mapFun
+                (concatMap mapFun
+                  (concatMap mapFun
+                    (attrValues Gui)))))))
+
+        (concatMap mapFun
+          (concatMap mapFun
+            (concatMap mapFun
+              (concatMap mapFun
+                (concatMap mapFun
+                  (concatMap mapFun
+                    (attrValues TuiCli)))))))
+      ]));
+}
diff --git a/modules/home.legacy/wms/default.nix b/modules/home.legacy/wms/default.nix
new file mode 100644
index 00000000..610ea2f4
--- /dev/null
+++ b/modules/home.legacy/wms/default.nix
@@ -0,0 +1,7 @@
+{config, ...}: {
+  imports = [
+    # ./sway
+    ./river
+    # ./plasma
+  ];
+}
diff --git a/modules/home.legacy/wms/plasma/default.nix b/modules/home.legacy/wms/plasma/default.nix
new file mode 100644
index 00000000..f68ee272
--- /dev/null
+++ b/modules/home.legacy/wms/plasma/default.nix
@@ -0,0 +1,5 @@
+{config, ...}: {
+  services.xserver.enable = true;
+  services.xserver.displayManager.sddm.enable = true;
+  services.xserver.desktopManager.plasma5.enable = true;
+}
diff --git a/modules/home.legacy/wms/river/default.nix b/modules/home.legacy/wms/river/default.nix
new file mode 100644
index 00000000..36a9ca74
--- /dev/null
+++ b/modules/home.legacy/wms/river/default.nix
@@ -0,0 +1,76 @@
+{
+  pkgs,
+  sysLib,
+  river_init_lesser,
+  nixosConfig,
+  system,
+  ...
+}: let
+  inherit (nixosConfig.networking) hostName;
+  mappings =
+    if hostName == "tiamat"
+    then ''
+      err_fail riverctl keyboard-layout 'us-modified'
+      err_fail river_init_lesser ~/.config/river/res/moonlander.ron
+    ''
+    else if hostName == "lahmu" || hostName == "apzu" || hostName == "mammun" || hostName == "isimud"
+    then ''
+      err_fail riverctl keyboard-layout 'dvorak-modified'
+      err_fail river_init_lesser ~/.config/river/res/keys.ron
+    ''
+    else builtins.throw "Host not covered in river mappings";
+  screen_setup =
+    if hostName == "lahmu"
+    then ''
+      err_fail wlr-randr --output Virtual-1 --mode 1920x1080
+    ''
+    else if hostName == "tiamat"
+    then ''
+      err_fail wlr-randr --output DP-2 --pos 2560,0
+      err_fail wlr-randr --output DP-1 --scale 1.5 --pos 0,0
+      err_fail gammastep &
+    ''
+    else if hostName == "apzu" || hostName == "mammun" || hostName == "isimud"
+    then ''
+      err_fail gammastep &
+    ''
+    else builtins.throw "Host not covered in river screen setup";
+  env_vars = "XDG_CURRENT_DESKTOP=river DESKTOP_SESSION=river";
+  init_scr = pkgs.substituteAll {
+    src = ./init.sh;
+    inherit mappings screen_setup env_vars;
+  };
+in {
+  home.sessionVariables = {
+    WM = "river";
+    XDG_CURRENT_DESKTOP = "river";
+    DESKTOP_SESSION = "river";
+  };
+
+  xdg.configFile."river/init".source =
+    sysLib.writeShellScript {
+      name = "river_init";
+      src = init_scr;
+      keepPath = true;
+      dependencies = builtins.attrValues {
+        river_init_lesser = river_init_lesser.packages.${system}.default;
+        inherit
+          (pkgs)
+          dash
+          river
+          glib # gnome lib
+          gammastep
+          wlr-randr
+          yambar
+          mako
+          swaybg
+          swayidle
+          swaylock
+          alacritty
+          ;
+      };
+    }
+    + /bin/river_init;
+
+  xdg.configFile."river/res".source = ./res;
+}
diff --git a/modules/home.legacy/wms/river/init.sh b/modules/home.legacy/wms/river/init.sh
new file mode 100755
index 00000000..06a2e2f4
--- /dev/null
+++ b/modules/home.legacy/wms/river/init.sh
@@ -0,0 +1,80 @@
+#!/usr/bin/env bash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+err_fail() {
+    if ! "$@"; then
+        warning "\"$*\" failed!\n" >>~/river_log
+        # msg "Executing the safe init!"
+        # exec ~/.config/river/res/safe_init.sh
+    fi
+}
+err_fail rm ~/river_log
+exec 1>>"$HOME"/river_log
+exec 2>>"$HOME"/river_log
+
+#trap err_fail ERR
+
+#Setup of environment variables {{{
+err_fail riverctl spawn "exec dbus-update-activation-environment --systemd SEATD_SOCK DISPLAY WAYLAND_DISPLAY DESKTOP_SESSION=river XDG_CURRENT_DESKTOP=river"
+export @env_vars@
+#}}}
+
+# Setup of mappings {{{
+@mappings@
+# }}}
+
+# Setup of Rules {{{
+err_fail riverctl rule-add -app-id float -title '*' float
+err_fail riverctl rule-add -app-id mpv -title '*' float
+err_fail riverctl rule-add -app-id ModernGL -title '*' float
+err_fail riverctl rule-add -app-id '*' -title 'Manim Slides' float
+err_fail riverctl rule-add -app-id '*' -title 'floating please' float
+
+err_fail riverctl rule-add -app-id '*' -title '*' ssd
+err_fail riverctl rule-add -app-id firefox -title '*' csd # This remove the focus border around Firefox (which is useful because the Firefox is nearly always in its own tag.)
+# }}}
+
+# Set riverctl settings {{{
+# background
+err_fail riverctl background-color 0x002b36
+err_fail riverctl border-color-focused 0x93a1a1
+err_fail riverctl border-color-unfocused 0x586e75
+
+# keyboard repeat rate
+err_fail riverctl set-repeat 50 300
+
+# Cursor
+err_fail riverctl focus-follows-cursor normal
+#riverctl hide-cursor timeout 2000
+err_fail riverctl hide-cursor when-typing enabled
+err_fail riverctl set-cursor-warp on-output-change
+err_fail riverctl xcursor-theme Nordzy-cursors 24
+
+err_fail riverctl input pointer-1133-49970-Logitech_Gaming_Mouse_G502 pointer-accel 0
+err_fail riverctl input pointer-1133-49970-Logitech_Gaming_Mouse_G502 accel-profile none
+
+err_fail riverctl input pointer-12951-6505-ZSA_Technology_Labs_Moonlander_Mark_I pointer-accel 0
+err_fail riverctl input pointer-12951-6505-ZSA_Technology_Labs_Moonlander_Mark_I accel-profile none
+# }}}
+
+# Setup of general apps {{{
+@screen_setup@
+
+err_fail yambar &
+
+err_fail mako &
+err_fail swaybg -i "$WALLPAPER" &
+err_fail swayidle &
+err_fail alacritty &
+# }}}
+
+# Setup of layout [acts as exec!] {{{
+err_fail riverctl default-layout rivertile
+@env_vars@ rivertile -main-ratio 0.5 -view-padding 1 -outer-padding 0
+
+#riverctl default-layout luatile
+#river-luatile
+# }}}
+# vim: ft=sh
diff --git a/modules/home.legacy/wms/river/res/keys.ron b/modules/home.legacy/wms/river/res/keys.ron
new file mode 100644
index 00000000..a2bc0fa1
--- /dev/null
+++ b/modules/home.legacy/wms/river/res/keys.ron
@@ -0,0 +1,58 @@
+#![enable(implicit_some)]
+RiverctlCommandArray(
+    commands: [
+    // Focus change
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "T",                       mods: "Super",          command: "focus-view",          command_args: "next",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "N",                       mods: "Super",          command: "focus-view",          command_args: "previous",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "T",                       mods: "Super+Control",  command: "focus-output",        command_args: "next",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "N",                       mods: "Super+Control",  command: "focus-output",        command_args: "previous",),
+
+    // Standard program
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "Return",                  mods: "Super",          command: "spawn",               command_args: "alacritty",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "q",                       mods: "Super+Shift",    command: "exit",                command_args: None,),
+
+    // Screenshot
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "Print",                   mods: "None",           command: "spawn",               command_args: "screenshot_persistent",),
+
+    // Audio
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "XF86AudioRaiseVolume",    mods: "None",           command: "spawn",               command_args: "pactl set-sink-volume 1 +5%",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal", "locked"], key: "XF86AudioLowerVolume",    mods: "None",           command: "spawn",               command_args: "pactl set-sink-volume 1 -5%",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal", "locked"], key: "XF86AudioMute",           mods: "None",           command: "spawn",               command_args: "mpc toggle",),
+
+    // Launcher
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "R",                       mods: "Super",          command: "spawn",               command_args: "rofi -show combi -modes combi -combi-modes 'window,drun,run' -show-icons",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "F1",                      mods: "Super",          command: "spawn",               command_args: "neorg dmenu",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "F2",                      mods: "Super",          command: "spawn",               command_args: "keepassxc",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "F3",                      mods: "Super",          command: "spawn",               command_args: "signal-desktop",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "F4",                      mods: "Super",          command: "spawn",               command_args: "steam",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "L",                       mods: "Super",          command: "spawn",               command_args: "lock",),
+
+    // Client
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "f",                       mods: "Super",          command: "toggle-fullscreen",   command_args: None,),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "c",                       mods: "Super+Shift",    command: "close",               command_args: None,),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "space",                   mods: "Super+Control",  command: "toggle-float",        command_args: None,),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "Return",                  mods: "Super+Control",  command: "zoom",                command_args: None,),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "o",                       mods: "Super",          command: "send-to-output",      command_args: "next",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "T",                       mods: "Super+Shift",    command: "swap",                command_args: "next",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "N",                       mods: "Super+Shift",    command: "swap",                command_args: "previous",),
+
+    // Toggle all tags
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "0",                       mods: "Super",          command: "set-focused-tags",    command_args: "4294967295"),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "0",                       mods: "Super+Shift",    command: "set-view-tags",       command_args: "4294967295"),
+
+    // Mouse
+    RiverctlCommand( map_mode: MapMouse,    mode: ["normal"],           key: "BTN_LEFT",                mods: "Super",          command: "move-view",           command_args: None,),
+    RiverctlCommand( map_mode: MapMouse,    mode: ["normal"],           key: "BTN_RIGHT",               mods: "Super",          command: "resize-view",         command_args: None,),
+
+    ],
+    // Set these mappings for the tags 0-8 with key [1-9]
+    tags_number: 9,
+    tag_commands: [
+    RiverctlTagCommand( map_mode: Map, mode: ["normal"], mods: "Super",                 command: "set-focused-tags",),
+    RiverctlTagCommand( map_mode: Map, mode: ["normal"], mods: "Super+Shift",           command: "set-view-tags",),
+    RiverctlTagCommand( map_mode: Map, mode: ["normal"], mods: "Super+Control",         command: "toggle-focused-tags",),
+    RiverctlTagCommand( map_mode: Map, mode: ["normal"], mods: "Super+Shift+Control",   command: "toggle-view-tags",),
+    ],
+)
+
+// vim: nolinebreak nowrap textwidth=0
diff --git a/modules/home.legacy/wms/river/res/moonlander.ron b/modules/home.legacy/wms/river/res/moonlander.ron
new file mode 100644
index 00000000..77ffa5c4
--- /dev/null
+++ b/modules/home.legacy/wms/river/res/moonlander.ron
@@ -0,0 +1,64 @@
+#![enable(implicit_some)]
+RiverctlCommandArray(
+    // TODO: add toggle-focus mapping
+    commands: [
+    // Movement
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "A", mods: "Alt+Control+Super+Shift", command: "exit",                 command_args: None,),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "B", mods: "Alt+Control+Super+Shift", command: "close",                command_args: None,),
+
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "C", mods: "Alt+Control+Super+Shift", command: "focus-view",           command_args: "previous",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "D", mods: "Alt+Control+Super+Shift", command: "focus-view",           command_args: "next",),
+
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "E", mods: "Alt+Control+Super+Shift", command: "swap",                 command_args: "previous",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "F", mods: "Alt+Control+Super+Shift", command: "swap",                 command_args: "next",),
+
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "G", mods: "Alt+Control+Super+Shift", command: "zoom",                 command_args: None,),
+
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "H", mods: "Alt+Control+Super+Shift", command: "toggle-fullscreen",    command_args: None,),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "I", mods: "Alt+Control+Super+Shift", command: "toggle-float",         command_args: None,),
+
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "J", mods: "Alt+Control+Super+Shift", command: "send-to-output",       command_args: "next",),
+
+
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "K", mods: "Alt+Control+Super+Shift", command: "spawn",                command_args: "alacritty",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "L", mods: "Alt+Control+Super+Shift", command: "spawn",                command_args: "screenshot_persistent",),
+
+    // Audio
+    // RiverctlCommand( map_mode: Map,         mode: ["normal", "locked"], key: "M", mods: "Alt+Control+Super+Shift", command: "spawn",                command_args: "video-pause toggle",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal", "locked"], key: "N", mods: "Alt+Control+Super+Shift", command: "spawn",                command_args: "mpc toggle",),
+
+    // Launcher
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "O", mods: "Alt+Control+Super+Shift", command: "spawn",                command_args: "rofi -show combi -modes combi -combi-modes 'window,drun,run' -show-icons",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "P", mods: "Alt+Control+Super+Shift", command: "spawn",                command_args: "neorg dmenu",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "Q", mods: "Alt+Control+Super+Shift", command: "spawn",                command_args: "keepassxc",),
+    // RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "R", mods: "Alt+Control+Super+Shift", command: "spawn",                command_args: "nheko",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "S", mods: "Alt+Control+Super+Shift", command: "spawn",                command_args: "signal-desktop",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "T", mods: "Alt+Control+Super+Shift", command: "spawn",                command_args: "lock",),
+
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "U", mods: "Alt+Control+Super+Shift", command: "focus-output",         command_args: "next",),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "V", mods: "Alt+Control+Super+Shift", command: "focus-previous-tags",  command_args: None,),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "W", mods: "Alt+Control+Super+Shift", command: "send-to-previous-tags",command_args: None,),
+    //RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "X", mods: "Alt+Control+Super+Shift", command: "spawn",               command_args: "bemenu-run",),
+    //RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "Y", mods: "Alt+Control+Super+Shift", command: "spawn",               command_args: "bemenu-run",),
+    //RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "Z", mods: "Alt+Control+Super+Shift", command: "spawn",               command_args: "bemenu-run",),
+
+
+    // Toggle all tags
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "0", mods: "Alt+Control+Super+Shift", command: "set-focused-tags",    command_args: "4294967295"),
+    RiverctlCommand( map_mode: Map,         mode: ["normal"],           key: "0", mods: "Alt+Control+Shift",       command: "set-view-tags",       command_args: "4294967295"),
+
+    // Mouse
+    RiverctlCommand( map_mode: MapMouse,    mode: ["normal"],           key: "BTN_LEFT",                mods: "Super",          command: "move-view",           command_args: None,),
+    RiverctlCommand( map_mode: MapMouse,    mode: ["normal"],           key: "BTN_RIGHT",               mods: "Super",          command: "resize-view",         command_args: None,),
+    ],
+
+    // Set these mappings for the tags 0-8 with key [1-9]
+    tags_number: 9,
+    tag_commands: [
+        RiverctlTagCommand( map_mode: Map, mode: ["normal"], mods: "Alt+Control+Super+Shift", command: "set-focused-tags",),
+        RiverctlTagCommand( map_mode: Map, mode: ["normal"], mods: "Alt+Control+Shift",       command: "set-view-tags",),
+        // TODO: RiverctlTagCommand( map_mode: Map, mode: ["normal"], mods: "Super+Control",         command: "toggle-focused-tags",),
+        // TODO: RiverctlTagCommand( map_mode: Map, mode: ["normal"], mods: "Super+Shift+Control",   command: "toggle-view-tags",),
+    ],
+)
+// vim: nolinebreak nowrap textwidth=0
diff --git a/modules/home.legacy/wms/sway/default.nix b/modules/home.legacy/wms/sway/default.nix
new file mode 100644
index 00000000..bb3ddb49
--- /dev/null
+++ b/modules/home.legacy/wms/sway/default.nix
@@ -0,0 +1,16 @@
+# also requires:
+# security.polkit.enable = true;
+{lib, ...}: {
+  wayland.windowManager.sway = {
+    enable = true;
+    config = {
+      modifier = "Mod4";
+      # Use kitty as default terminal
+      terminal = "kitty";
+      startup = [
+        # Launch Firefox on start
+        {command = "firefox";}
+      ];
+    };
+  };
+}